(14 jawaban)
Tutup 3 tahun yang lalu.
Saya skrip python bernama scrape.py
. Seperti namanya, ini adalah perayap web dan saya ingin itu terus berjalan di mesin Linux saya bahkan setelah saya keluar dan mengakhiri sesi ssh. Saya banyak membaca di sekitar sini dan ada banyak saran untuk menggunakan nohup python scrape.py &
. Ini bekerja dengan baik tetapi eksekusi skrip berhenti segera setelah saya keluar. Saya juga menjelajahi supervisor
aplikasi tetapi saya tidak memiliki izin root sehingga gagal juga. Bisakah Anda menyarankan saya cara untuk menyelesaikan masalah ini? Terima kasih.
Jawaban Terbaik
Ada beberapa pendekatan (alat dan perintah) yang dapat Anda gunakan untuk tujuan serupa:
-
Gunakan emulator terminal sebagai
tmux
danscreen
:-
tmux
– terminal multiplexer:memungkinkan sejumlah terminal dibuat, diakses, dan dikendalikan dari satu layar.tmux
mungkin terlepas dari layar dan terus berjalan di latar belakang, lalu disambungkan kembali. Contoh penggunaan dasarnya disediakan di sini dan di sini. -
screen
– Manajer layar dengan emulasi terminal VT100/ANSI. Ini adalah window manager layar penuh yang menggandakan terminal fisik antara beberapa proses (biasanya shell interaktif)… Program terus berjalan ketika jendela mereka saat ini tidak terlihat dan bahkan ketika seluruh sesi layar terlepas dari terminal pengguna. Contoh penggunaan disediakan di sini.
-
-
Gunakan perintah terpisah yang dijalankan di latar belakang (baca juga):
-
nohup
– jalankan perintah yang kebal terhadap hangup, dengan output ke non-tty; Jalankan COMMAND, abaikan sinyal hangup. Sintaks umum untuk mendorong perintah ke latar belakang dan melepaskannya dari sesi shell saat ini:nohup COMMAND &
ataunohup COMMAND >/dev/null 2>&1 &
jika Anda ingin menangguhkan file info yang dibuat olehnohup
. Contoh penggunaan dasarnya disediakan di sini dan di sini. Juga di sini ditunjukkan cara menggunakannya melalui perintah ssh. -
disown
– mirip dengannohup
tapi itu adalah shell (zsh, ksh, bash) builtin; digunakan untuk menghapus pekerjaan dari tabel pekerjaan, atau untuk menandai pekerjaan sehingga sinyal SIGHUP tidak dikirim kepada mereka jika shell induk menerimanya (misalnya jika pengguna logout). Contoh penggunaan disediakan di sini. -
setsid
– membuat sesi dan menetapkan ID grup proses. Contoh penggunaansetsid "COMMAND"
. Lebih banyak contoh di sini.
-
-
Gunakan
huponexit
Opsi Bash:$ ./script.py > output.txt & [1] 7461 $ shopt -s huponexit $ exit
Referensi:
- Cara Menggunakan Kontrol Pekerjaan Bash untuk Mengelola Proses Latar Depan dan Latar Belakang di DigitalOcean
-
Gunakan pengelola jadwal sebagai
at
dancrontab
:-
at
– menjalankan perintah di lain waktu;at
danbatch
membaca perintah dari input standar atau file tertentu yang akan dieksekusi di lain waktu, menggunakan/bin/sh
. Contoh penggunaan:echo "COMMAND" | at now + 1 minute
. Lebih banyak contoh di sini. -
crontab
– menjadwalkan pekerjaan latar belakang berkala; itu terkenal untuk tujuan lain, tetapi Anda dapat menentukan saat waktu tertentu ketika perintah Anda akan dieksekusi hanya sekali. Kalkulator crontab yang bagus disediakan di sini.
-
-
Buat layanan sistem dan mulai, lihat:
- Bagaimana cara menjalankan satu perintah saat startup menggunakan systemd?
- Bagaimana menjalankan skrip saat memulai?