Ini jawaban yang benar. Tanpa nohup, proses yang dimulai masih dianggap sebagai "anak" dari proses terminal dan dengan demikian diakhiri jika terminal ditutup.
Izzy
3
cmd & disownberfungsi juga, karena &diperlakukan seperti ;pemisah perintah. Perintah disown menghapus koneksi antara sesi bash shell dan perintah di latar belakang.
lornix
2
zsh memiliki singkatan untuk ini: cmd &|.
Thor
Agar ini berfungsi, saya harus mengubah preferensi di Terminal.app. Di bawah Profil, pilih profil aktif Anda, lalu Shell> Ketika shell keluar> Tutup jika shell keluar dengan bersih
antoine
6
Menggunakan screen:
screen -S <session name> -d -m <your command>
setelah itu Anda dapat keluar dari terminal, Anda juga dapat menghubungkan kembali dengan:
Jika Anda ingin menjalankan perintah atau file spesifik setiap detik di latar belakang setelah keluar dari terminal, Anda dapat mencoba hal kecil yang mudah ini;
"nohup" sudah dicakup oleh jawaban yang diterima. Dan saya cukup yakin penanya menyebutkan cron karena mereka menggunakannya untuk mengatakan "Jalankan perintah ini beberapa detik di masa depan", bukan untuk menjalankannya secara berkala.
David Richerby
1
Jawaban saya tidak memperburuk keadaan. Jangan melihat titik suara bawah. Neural sudah cukup.
dalam hal ini, ketika terminal ditutup, demikian juga proses dimulai oleh /home/your/script.sh- karena tidak terlepas dari "induknya", tetapi hanya "latar belakang". Gunakan nohupuntuk melepaskannya nyata.
Izzy
Buruk saya, saya tidak tahu tentang itu, tetapi ketika saya menguji pada Debian saya, perintah terus mengeksekusi setelah menutup shell yang meluncurkannya: /
Flinth
1
Saya tidak yakin di mana tepatnya proses latar belakang dilampirkan dan kapan. Tetapi jika Anda misalnya masuk ke mesin jarak jauh, itu pasti dihentikan segera setelah Anda logout (kecuali jika itu daemonized sendiri). Jadi untuk 100% yakin, Anda lebih suka menggunakan nohup- yang juga mencatat semua (sekarang tidak terlihat) output ke file yang disebut nohup.outterletak di direktori tempat Anda memulai perintah.
Izzy
Oke, terima kasih atas penjelasan Anda ^^
Flinth
Jawaban ini mungkin berfungsi baik bila dikombinasikan dengan jobsperintah. Cukup sering saya ingin dapat kembali ke proses shell setelah melatarbelakanginya.
Jawaban:
Untuk menghindari penyebaran sinyal keluar ke proses anak dari terminal dan shell, jalankan perintah dengan
nohup
, yaitu:sumber
cmd & disown
berfungsi juga, karena&
diperlakukan seperti;
pemisah perintah. Perintah disown menghapus koneksi antara sesi bash shell dan perintah di latar belakang.cmd &|
.Menggunakan
screen
:setelah itu Anda dapat keluar dari terminal, Anda juga dapat menghubungkan kembali dengan:
Info lebih lanjut: referensi
sumber
Jika Anda ingin menjalankan perintah atau file spesifik setiap detik di latar belakang setelah keluar dari terminal, Anda dapat mencoba hal kecil yang mudah ini;
Itu akan menjalankan scipt.sh setiap 5 detik.
sumber
Letakkan karakter "&" di bawah perintah Anda.
misalnya:
sumber
/home/your/script.sh
- karena tidak terlepas dari "induknya", tetapi hanya "latar belakang". Gunakannohup
untuk melepaskannya nyata.nohup
- yang juga mencatat semua (sekarang tidak terlihat) output ke file yang disebutnohup.out
terletak di direktori tempat Anda memulai perintah.jobs
perintah. Cukup sering saya ingin dapat kembali ke proses shell setelah melatarbelakanginya.