Bagaimana saya bisa menjalankan skrip shell di latar belakang?
Bagaimana saya bisa menjalankan skrip shell di latar belakang?
Jawaban:
Bergantung pada apa yang Anda inginkan, tambahkan saja & ke akhir perintah
script.sh &
command &
Jika Anda menjalankannya di terminal, dan Anda ingin kemudian menutup terminal, gunakan nohup atau disown
tidak
nohup script.sh &
memungkiri
script &
disown
Jika itu bukan yang Anda cari, harap lebih spesifik dalam pertanyaan Anda.
htop
untuk melihat penggunaan CPU, tetapi masalahnya adalah skrip pertama mulai membuat output ke konsol dan sepertinya mencegah tindakan lain (jalankan skrip kedua, jalankan htop
).
Anda cukup mengganti layar dan menjalankan skrip pada layar ke-2 itu. Ketika skrip dimulai pada tanggal 2, kembali ke tanggal 1 dan lakukan apa pun yang Anda inginkan. Layar ke-2 akan di latar belakang sebagai "jendela terminal" tambahan. dan itu tidak akan berhenti memproses bahkan ketika Anda menutup koneksi ssh Anda saat beeing di layar 1.
screen --help
Use: screen [-opts] [cmd [args]]
or: screen -r [host.tty]
Options:
-4 Resolve hostnames only to IPv4 addresses.
-6 Resolve hostnames only to IPv6 addresses.
-a Force all capabilities into each window's termcap.
-A -[r|R] Adapt all windows to the new display width & height.
-c file Read configuration file instead of '.screenrc'.
-d (-r) Detach the elsewhere running screen (and reattach here).
-dmS name Start as daemon: Screen session in detached mode.
-D (-r) Detach and logout remote (and reattach here).
-D -RR Do whatever is needed to get a screen session.
-e xy Change command characters.
-f Flow control on, -fn = off, -fa = auto.
-h lines Set the size of the scrollback history buffer.
-i Interrupt output sooner when flow control is on.
-l Login mode on (update /var/run/utmp), -ln = off.
-ls [match] or -list. Do nothing, just list our SockDir [on possible matches].
-L Turn on output logging.
-m ignore $STY variable, do create a new screen session.
-O Choose optimal output rather than exact vt100 emulation.
-p window Preselect the named window if it exists.
-q Quiet startup. Exits with non-zero return code if unsuccessful.
-r [session] Reattach to a detached screen process.
-R Reattach if possible, otherwise start a new session.
-s shell Shell to execute rather than $SHELL.
-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title Set title. (window's name).
-T term Use term as $TERM for windows, rather than "screen".
-U Tell screen to use UTF-8 encoding.
-v Print "Screen version 4.01.00devel (GNU) 2-May-06".
-wipe [match] Do nothing, just clean up SockDir [on possible matches].
-x Attach to a not detached screen. (Multi display mode).
-X Execute <cmd> as a screen command in the specified session.
ctrl+ a, cakan membuat "jendela" baru di sesi layar aktif Anda. Anda dapat beralih di antara beberapa jendela (seperti ditunjukkan Ansgar) dengan ctrl+ a, nuntuk jendela berikutnya, dan ctrl+ a, puntuk jendela sebelumnya.
ctrl+ a, "akan memberi Anda daftar semua jendela terbuka Anda.
Lebih lanjut: https://superuser.com/questions/476709/quickly-switching-between-virtual-sessions-screen
Jika Anda ingin skrip tetap ada setelah menutup terminal, opsi lain adalah menggunakan setsid
:
setsid script.sh
Untuk informasi lebih lanjut tentang perbedaan antara nohup
, disown
, &
dan setsid
: Perbedaan antara nohup, memungkiri dan &