¿Cómo puedo evitar que nohup cree el archivo ~ / nohup.out?

16

Uso el comando $ nohup ...para iniciar una aplicación en segundo plano para poder cerrar la ventana del terminal después.

Tras la ejecución, crea el archivo ~/nohup.out.

Ejemplo:

orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'

¿Cómo puedo evitar nohupcrear nohup.out?

orschiro
fuente
2
También podrías considerarlo byobu. :)
Andrea Lazzarotto
¡Gracias, @AndreaLazzarotto! ¿Me puede dar un ejemplo de cómo usarlo?
orschiro
2
Bueno, le sugiero que eche un vistazo al video aquí: byobu.co Básicamente, para lo que desea hacer, simplemente ejecute byobu, comience lo que quiera, luego presione F6y listo. Puede volver a ejecutarlo byobunuevamente.
Andrea Lazzarotto
¡Excelente! ¿Es posible que desee agregar esto como respuesta oficial?
orschiro
Técnicamente, mi sugerencia no responde a su pregunta en absoluto, es solo una alternativa. : D
Andrea Lazzarotto

Respuestas:

20

Puede redirigir la salida a cualquier lugar que desee, por ejemplo:

nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1

la redirección evita que nohup.outse cree el archivo de salida predeterminado . /dev/nulles olvido, así que si no quieres los datos, envíalos allí.

En bash puedes abreviar >/dev/null 2>&1a&>/dev/null

Para los programas que uso con frecuencia, hago un alias (y lo agrego a mi .bashrc) por ejemplo

alias show_state='nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1'

Ahora todo lo que tengo que escribir es show_state

Zanna
fuente
2
@orschiro: Después de unos años, no será críptico y lo recordarás;) sugiero que te quedes, porque aliasarlo significa que no ganarás esa experiencia, y sabiendo cómo los operadores de redireccionamiento BASH funcionan desde arriba de tu cabeza es una habilidad crucial.
Lightness compite con Mónica el
¿No sería mejor esto como una función? Algo como show_state () { /bin/bash -c "$@" &>/dev/null }? (Advertencia: sintaxis pobre y probablemente no funcionará. ¡Es solo un ejemplo!). Un punto crítico: ¿por qué show_statecuando estás tirando la salida de nohup?
Ismael Miguel
No sé qué hace el script @IsmaelMiguel, pero supongo que es un indicador con un icono de bandeja, no para imprimir "estado" (lo que sea) para stdout. Claro, una función puede ser más divertida que un alias ^. ^
Zanna
¡Oh lo tengo! Lo sentimos, no vi el nombre del .pyarchivo. Y sí, una función es más divertida. Tengo esta función mal escrito en un escritorio de Debian: shutup() { source "$@" >/dev/null 2>&1 & }. Y funciona. Tal vez podrías sugerir algo similar, pero mucho mejor.
Ismael Miguel
Nunca supe que &>funcionó (y en mi opinión, parece un fondo más una redirección estándar). Siempre lo aprendí como >&. ¿Es estándar?
Random832