GNU/Linux >> Belajar Linux >  >> Ubuntu

Tetap Menjalankan Program Python Bahkan Setelah Keluar dari Sesi Ssh?

Pertanyaan ini sudah memiliki jawaban di sini :Bagaimana agar proses tetap berjalan setelah sesi ssh berakhir?

(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:

  1. Gunakan emulator terminal sebagai tmux dan screen :

    • 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.

  2. 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 & atau nohup COMMAND >/dev/null 2>&1 & jika Anda ingin menangguhkan file info yang dibuat oleh nohup . Contoh penggunaan dasarnya disediakan di sini dan di sini. Juga di sini ditunjukkan cara menggunakannya melalui perintah ssh.

    • disown – mirip dengan nohup 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 penggunaan setsid "COMMAND" . Lebih banyak contoh di sini.

  3. 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
  4. Gunakan pengelola jadwal sebagai at dan crontab :

    • at – menjalankan perintah di lain waktu; at dan batch 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.

  5. Buat layanan sistem dan mulai, lihat:

    • Bagaimana cara menjalankan satu perintah saat startup menggunakan systemd?
    • Bagaimana menjalankan skrip saat memulai?
Terkait:Apakah kebijakan apt-cache memerlukan sudo?
Ubuntu
  1. 5 Cara untuk Menjaga Sesi dan Proses SSH Jarak Jauh Berjalan Setelah Terputus

  2. 4 Cara Agar Perintah Tetap Berjalan Setelah Anda Keluar Dari Sesi SSH

  3. Ssh – Biarkan Proses Tetap Berjalan Setelah Sesi Ssh Terputus?

  1. Bagaimana Menemukan Id Proses (pid) Dari Program Terminal yang Berjalan?

  2. Pertahankan sesi SSH tetap hidup

  3. Cegah tugas linux yang sedang berjalan dimatikan setelah keluar dari SSH

  1. Tetap Jalankan Server Ubuntu di Laptop Dengan Tutup Tertutup?

  2. Berhenti melihat output dari program tertentu setelah menggunakan perintah watch?

  3. Lanjutkan perintah yang berjalan di sesi SSH yang dijatuhkan