Así que ejecuté el comando find / .bash_profile
para ver si existía en algún lugar de mi Mac antes de crear uno. La búsqueda de todo el equipo, obviamente, toma un minuto, así que quería ejecutarlo en segundo plano (algo que no había intentado hacer antes), así que agregué un &
hasta el final, como tal: find / .bash_profile &
Sin embargo, en lugar de ejecutarlo en segundo plano y dejarme hacer otras cosas, ¡esto hizo que el proceso fuera ininterrumpible! Continuó corriendo en primer plano pero Ctrl + do Ya no tuvo ningún efecto; solo se podía detener cerrando la instancia del terminal por completo.
¿Que me estoy perdiendo aqui?
find
En lugar de Spotlight?kill -l
). Alternativamente, traerlo de vuelta al primer plano confg
ofg %jobnumber
(verjobs
) y luego Control-C o Control-Z it.locate
instalación y luego usarlocate .bash_profile
. Si intenta ese comando ahora, le dirá cómo habilitarlo permanentemente.Respuestas:
De hecho, se está ejecutando en segundo plano y puede hacer otras cosas, pero cada vez que produce algo, lo hace a su terminal actual.
Sugerencia:
find / -name .bash_profile >my_result.txt 2>/dev/null &
Esto guarda la salida en un archivo y descarta todos los errores (como el error de permiso denegado). Puede verificar el estado mirando en el archivo de salida
tail my_result.txt
o escribiendojobs
.Si necesitas matar el trabajo, escribe
kill %1
donde 1 es el número de trabajo enjobs
.fuente
fg
control-c
). +1 por mencionar también stderr.2>
? No estoy seguro de cómo se llama, así que no estoy seguro de cómo buscarlo en Google.2
es stderr, abreviatura de error estándar.2>/dev/null
significa que los errores son redirigidos a/dev/null
0>
lo haría aunque ... aparentemente redirige stdin .... que pensé que tenía que usar<
¿Estás seguro de que el proceso estaba en primer plano? Solo porque estaba escribiendo la salida en el terminal no significa que estuviera en primer plano.
Si tiene un comando que produce salida y desea ejecutarlo en segundo plano, debieras redirigir La salida, como:
Es normal que el proceso de fondo sea inmune a las interrupciones ( Ctrl + do ) para que pueda interrumpir su trabajo de primer plano sin interferir con los trabajos de fondo. (Tenga en cuenta, por cierto, que recibió el comando incorrecto.)
fuente
Te has topado con una de mis mascotas con
find
. Intenta usar el-print
opción como talTambién es posible que se encuentre con un problema al no escaparse o citar el punto en el nombre del archivo.
find
admite la sintaxis RegEx para que el punto en el nombre del archivo pueda ser mal interpretado. Cualquiera de los ejemplos a continuación debe abordar estoo
Las comillas simples son más flexibles porque no tienes que escapar cada controla los caracteres y puedes encerrarlos más fácilmente como @ o /
fuente
.
) no es un personaje especial en este contexto.find … -name
no trata su argumento como un RegEx completo (ver-regex
) y por eso no se trata.
como especial Incluso si lo hiciera (por ejemplo, si nosotros fueron hablando sobre-regex
), no importaría citar la cadena o escapar del personaje; necesitarías escapar del personaje y Cita la cadena. Y que estas diciendo@
y/
?-print
explícitamente hace una diferencia? Es la acción por defecto ("expresión").