Come posso impedire a nohup di creare il file ~ / nohup.out?


16

Uso il comando $ nohup ...per avviare un'applicazione in background in modo da poter successivamente chiudere la finestra del terminale.

Al momento dell'esecuzione crea il file ~/nohup.out.

Esempio:

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

Come posso impedire la nohupcreazione nohup.out?


2
Potresti anche considerare byobu. :)
Andrea Lazzarotto,

Grazie, @AndreaLazzarotto! Mi puoi fare un esempio su come usarlo?
Orschiro,

2
Bene, ti suggerisco di dare un'occhiata al video qui: byobu.co Fondamentalmente, per quello che vuoi fare corri byobu, avvia quello che vuoi, quindi premi F6e il gioco è fatto. Puoi tornare indietro correndo di byobunuovo.
Andrea Lazzarotto,

Eccellente! Potresti voler aggiungere questo come risposta ufficiale?
Orschiro,

Tecnicamente, il mio suggerimento non risponde affatto alla tua domanda, è solo un'alternativa. : D
Andrea Lazzarotto

Risposte:


20

Puoi reindirizzare l'output ovunque desideri, ad esempio:

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

il reindirizzamento impedisce il file di output predefinito nohup.out creazione del . /dev/nullè l'oblio, quindi se non si desidera affatto i dati, inviarli lì.

In bash è possibile abbreviare >/dev/null 2>&1a&>/dev/null

Ad esempio, per i programmi che utilizzo spesso creo un alias (e lo aggiungo al mio .bashrc)

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

Ora tutto ciò che devo scrivere è show_state


2
@orschiro: dopo qualche anno non sarà criptico e te lo ricorderai;) ti suggerisco di attenermi a esso, perché lo aliasing via significa che non acquisirai quell'esperienza e sapendo come gli operatori di reindirizzamento BASH agiscono dall'alto della tua testa è un'abilità cruciale.
Corse di leggerezza con Monica il

Non sarebbe meglio come funzione? Qualcosa del genere show_state () { /bin/bash -c "$@" &>/dev/null }? (Attenzione: scarsa sintassi e probabilmente non funzionerà! È solo un esempio!). Un pignolo: perché show_statequando butti via l'output di nohup?
Ismael Miguel,

Non so che cosa fa lo script @IsmaelMiguel, ma presumo che sia un indicatore con un'icona a forma di barra, non stampare "state" (qualunque cosa sia) su stdout. Certo, una funzione potrebbe essere più divertente di un alias ^. ^
Zanna,

Oh ho capito! Spiacenti, non ho visto il nome del .pyfile. E sì, una funzione è più divertente. Ho questa funzione scritto male su un desktop Debian: shutup() { source "$@" >/dev/null 2>&1 & }. E funziona Forse potresti suggerire qualcosa di simile, ma molto meglio?
Ismael Miguel,

Non ho mai saputo che &>funzionasse (e secondo me sembra uno sfondo più un reindirizzamento stdout). L'ho sempre imparato come >&. È standard?
Casuale 832
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.