Saya menulis dua skrip shell a.sh
dan b.sh
. Dalam a.sh
dan b.sh
saya memiliki loop for tak terbatas dan mereka mencetak beberapa output ke terminal. Saya ingin menulis skrip lain yang memanggil keduanya a.sh
dan b.sh
tetapi saya ingin pengguna segera mendapatkan kembali kendali atas terminal, alih-alih menjalankan skrip tanpa batas dan saya ingin menyembunyikan keluaran di terminal.
linux
scripting
sh
background-process
Behnam Safari
sumber
sumber
nohup /path/to/your/script.sh parameter1 > & 1 &
Jika ada yang tahu cara yang lebih baik./dev/null 2>&1
jika Anda menggunakannohup
karena sudah menambahkan semua aliran STDOUT dan STDERR ke file nohup.out secara otomatis. Gunakan saja:nohup /path/to/your/command &
-bash: syntax error near unexpected token '&'
Alihkan output ke file seperti ini:
Ini akan mengarahkan stdout dan stderr ke file yang sama. Jika Anda ingin mengalihkan stdout dan stderr ke dua file berbeda, gunakan ini:
Anda dapat menggunakan
/dev/null
sebagai salah satu atau kedua file jika Anda tidak peduli dengan stdout dan / atau stderr.Lihat halaman manual bash untuk detail tentang pengalihan.
sumber
Maaf, ini agak terlambat tetapi menemukan solusi ideal untuk perintah somple di mana Anda tidak menginginkan output standar atau kesalahan apa pun (kredit saat jatuh tempo: http://felixmilea.com/2014/12/running-bash-commands-background -tepat / )
Ini mengalihkan keluaran ke nol dan menjaga layar tetap bersih:
sumber
Jika mereka berada di direktori yang sama dengan skrip Anda yang berisi:
Pada
&
akhirnya inilah yang membuat skrip Anda berjalan di latar belakang.Bagian
> /dev/null 2>&1
ini tidak perlu - ini mengalihkan aliran stdout dan stderr sehingga Anda tidak perlu melihatnya di terminal, yang mungkin ingin Anda lakukan untuk skrip yang berisik dengan banyak keluaran.sumber
Jalankan di subkulit untuk menghapus notifikasi dan menutup STDOUT dan STDERR:
sumber
[1] + 54765 done <emacs>
terima kasihJika Anda ingin menjalankan script kickstart di linux Anda harus menjalankannya seperti di bawah ini.
sumber
sumber
-x
dilakukan?Contoh ini berfungsi dengan baik:
nohup sh prog.sh proglog.log 2> & 1 &
Untuk loop Anda bisa menggunakan seperti ini:
untuk saya di {1..10}; lakukan sh prog.sh; tidur 1; selesai prog.log 2> & 1 &
Ia bekerja di latar belakang dan tidak menunjukkan keluaran apa pun.
sumber