Algunas aplicaciones solo permiten una instancia en ejecución (como eclipse, si desea utilizar el mismo espacio de trabajo). Entonces, si inicio sesión desde otra ubicación, tengo que cerrar / cerrar la aplicación que estaba abierta cuando previamente inicié sesión desde otra ubicación.
Siempre uso el comando kill para matar el proceso en ejecución. Pero, si elimina un proceso, es posible que no guarde algunos estados que son útiles para su uso futuro. Sin embargo, si lo "cierra" correctamente haciendo clic en el botón Cerrar, por ejemplo, guardará los estados correctamente.
¿Hay alguna manera de "cerrar" correctamente una aplicación desde la línea de comandos? Sé que esto puede variar de una aplicación a otra, así que seamos un poco más genéricos: ¿cómo enviar una señal a otra aplicación en ejecución, y esta señal funciona como si hiciéramos clic en el botón "cerrar" en la barra superior?
fuente
Respuestas:
Por defecto, el comando kill enviará
SIGTERM
(señal de terminación) al proceso en ejecución. A diferenciaSIGKILL
, que matará por la fuerza el proceso sin posibilidad de responder, laSIGTERM
señal puede ser interceptada por el proceso, lo que le permite terminar con gracia. Sea o no que en realidad no terminaba correctamente depende por completo sobre el proceso en sí; puede matarse fácilmente o ignorar la señal por completo.Puede asegurarse de que está enviando en
SIGTERM
lugar de alguna otra señal haciéndola explícita en la línea de comando de esta manera:fuente
kill
comando intenta un apagado elegante. Si la aplicación no se cierra limpiamente en ese caso, está rota. (Y la gran mayoría de las aplicaciones no están rotas.)kill -s TERM <firefox-pid>
, no se cerrará correctamente, y cuando lo vuelva a iniciar, me preguntará si quiero recuperar la sesión bloqueada. : suspiro:Tenga en cuenta que cuando se usa en
pkill
lugar dekill
, para especificar TERM la sintaxis es:pkill
es como matar, pero puede usar el nombre del proceso en lugar de la identificación.man pkill
fuente