Saya memiliki skrip Python bgservice.py
dan saya ingin skrip ini berjalan sepanjang waktu, karena ini adalah bagian dari layanan web yang saya buat. Bagaimana saya bisa membuatnya terus berjalan bahkan setelah saya keluar dari SSH?
110
nohup: ignoring in put and appending output to
nohup.out'` dan ketika saya menekan enter, proses keluar dengan status 1. Apa yang terjadi?somecommand &
, pid like akan dicetak[1] 12345
. jika tidak, Anda dapat menggunakan$!
.Jika Anda sudah memulai proses, dan tidak ingin mematikannya dan memulai ulang di bawah nohup, Anda dapat mengirimkannya ke latar belakang, lalu menyangkal.
Ctrl+Z
(menangguhkan proses)bg
(mulai ulang proses di latar belakangdisown %1
(dengan asumsi ini adalah pekerjaan # 1, gunakanjobs
untuk menentukan)sumber
Anda juga dapat menggunakan layar GNU yang harus dimiliki oleh hampir semua sistem Linux / Unix.
Jika Anda menggunakan Ubuntu / Debian, byobu varian yang disempurnakan juga cukup bagus.
sumber
Anda dapat mempertimbangkan untuk mengubah skrip python Anda menjadi daemon python yang benar, seperti yang dijelaskan di sini .
python-daemon adalah alat yang bagus yang dapat digunakan untuk menjalankan skrip python sebagai proses daemon latar belakang daripada skrip yang berjalan selamanya. Anda perlu sedikit memodifikasi kode yang ada tetapi sederhana dan sederhana.
Jika Anda menghadapi masalah dengan python-daemon, ada pengawas utilitas lain yang akan melakukan hal yang sama untuk Anda, tetapi dalam hal ini Anda tidak perlu menulis kode apa pun (atau memodifikasi yang ada) karena ini adalah solusi di luar kotak untuk daemonisasi proses.
sumber
Anda tidak dapat membatalkannya, tetapi saya lebih suka layar .
sumber
Berikut adalah solusi sederhana di dalam python menggunakan dekorator:
Anda tentu saja dapat mengganti konten
bgservice.py
file Anda di tempatmy_func
.sumber
The zsh shell memiliki opsi untuk membuat semua proses latar belakang berjalan dengan nohup.
Di
~/.zshrc
tambahkan baris:Kemudian Anda hanya perlu menjalankan proses seperti ini:,
python bgservice.py &
dan Anda tidak perlu lagi menggunakan perintah nohup.Saya tahu tidak banyak orang yang menggunakan zsh, tetapi ini adalah shell yang sangat keren yang akan saya rekomendasikan.
sumber
Jika yang Anda butuhkan adalah bahwa proses tersebut harus berjalan selamanya tidak peduli apakah Anda masuk atau tidak, pertimbangkan untuk menjalankan proses sebagai daemon.
supervisord adalah solusi luar biasa yang dapat digunakan untuk membuat daemon proses apa pun. Ini memiliki utilitas pengontrol lain
supervisorctl
yang dapat digunakan untuk memantau proses yang sedang dijalankan oleh supervisor.Anda tidak perlu menulis kode tambahan atau mengubah skrip yang ada agar ini berfungsi. Selain itu, dokumentasi verbose membuat proses ini lebih sederhana.
Setelah menggaruk-garuk kepala selama berjam-jam di sekitar python-daemon, supervisor adalah solusi yang bekerja untuk saya dalam beberapa menit.
Semoga ini bisa membantu seseorang yang mencoba membuat python-daemon berfungsi
sumber
Anda juga bisa menggunakan Yapdi :
Penggunaan dasar:
sumber
Coba ini:
Anda dapat menjalankan perintah di atas di layar dan keluar dari layar.
Sekarang Anda dapat mengikuti log skrip python Anda dengan:
tail -f <your log file>.log
Untuk mematikan skrip Anda, Anda dapat menggunakan perintah ps -aux dan kill .
sumber