Saya mencoba menggunakan skrip shell untuk memulai perintah. Saya tidak peduli jika / kapan / bagaimana / mengapa itu selesai. Saya ingin prosesnya dimulai dan dijalankan, tetapi saya ingin segera dapat kembali ke cangkang saya ...
100
nohup
,&
dandisown
, klik di sini untuk menggulir ke jawaban keempat .Jawaban:
Anda bisa menjalankan skrip di latar belakang:
Perhatikan bahwa ini berbeda dengan memasukkan bagian
&
dalam skrip Anda, yang mungkin tidak akan melakukan apa yang Anda inginkan.sumber
&
ada di dalam skrip dan Anda tidak memilikiwait
, perintah latar belakang akan dimatikan saat skrip keluar.myscript
memodifikasi lingkungan terminal, mis. ini adalah perintah inisialisasi terminal yang tidak diperlukan segera dan dapat ditunda, apakah masih akan mengubah lingkungan terminal?Semua orang lupa
disown
. Jadi inilah ringkasannya:&
menempatkan pekerjaan di latar belakang.disown
menghapus proses dari kontrol pekerjaan shell, tetapi tetap membiarkannya terhubung ke terminal.SIGHUP
(Jika shell menerimaSIGHUP
, ia juga mengirimkan aSIGHUP
ke proses, yang biasanya menyebabkan proses dihentikan).nohup
memutus proses dari terminal, mengalihkan output kenohup.out
dan melindunginya dariSIGHUP
.SIGHUP
.&
(sebagai pekerjaan latar belakang).sumber
disown
di Debian atau OS X. Saya pikir itu adalah sebuah program, tapi sepertinya saya salah. Apa itu?tidak menutup saat Anda menutup terminal. keluaran secara default pergi ke nohup.out
Anda dapat menggabungkan ini dengan latar belakang,
dan singkirkan hasilnya,
Anda juga bisa
disown
mendapatkan perintah. ketikcmd
,Ctrl-Z
,bg
,disown
sumber
tail nohup.out
, ini akan menampilkan 10 baris terakhir dari keluaran perintah. Saya menggunakan ini untuk pekerjaan cadangan rsync untuk melihat file apa itu saat ini.jobs
.Sebagai alternatif, setelah Anda menjalankan program, Anda dapat menekan Ctrl-Z yang menghentikan program Anda dan kemudian mengetik
yang menempatkan program yang terakhir Anda hentikan di latar belakang. (Berguna jika Anda memulai sesuatu tanpa '&' dan masih menginginkannya di backgroung tanpa memulai ulang)
sumber
screen -m -d $command$
memulai perintah dalam sesi terpisah. Anda dapat menggunakanscreen -r
untuk melampirkan ke sesi yang dimulai. Ini adalah alat yang luar biasa, sangat berguna juga untuk sesi jarak jauh. Baca lebih lanjut diman screen
.sumber