Putty atau LAIN - Tetap jalankan perintah bahkan setelah keluar Putty [duplikat]

13

Saya punya beberapa perintah yang harus saya jalankan. Perintah-perintah ini perlu terus dijalankan bahkan setelah saya keluar dari antarmuka saya. Ketika saya memiliki akses ke GUI Linux, saya menjalankan sesuatu seperti:

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

Bantuan apa pun akan sangat dihargai.

pengguna3331952
sumber
Apakah ada alasan mengapa Anda tidak menjalankan layanan ini sebagai daemon?
SevenSidedDie
Apakah perintah yang dimaksudkan adalah layanan yang harus berjalan pada waktu hampir 100% "selamanya", atau tugas pemrosesan yang berjalan lama yang diharapkan selesai setelah beberapa waktu? Semua jawaban akan "berfungsi" untuk kedua kasus, tetapi rekomendasi yang tepat akan berbeda.
Peteris
Distribusi spesifik Linux apa yang Anda gunakan? Saya menemukan bahwa menjalankan set -m;membuatnya sehingga skrip saya terus berjalan setelah saya keluar di CentOS dan RHEL.
ArtOfWarfare

Jawaban:

33

Mencoba

nohup Background_ScriptX &

nohup memastikan bahwa suatu proses tidak berakhir ketika terminal ditutup. Simbol & mendorong proses ke latar belakang.

Semoga ini bermanfaat.

Eamonn Travers
sumber
nohup pasti berhasil
Pitto
Senang bisa membantu.
Eamonn Travers
15
layar memiliki satu keuntungan jelas daripada nohup : nohup tidak memungkinkan Anda untuk kembali ke perintah yang sedang berjalan (mis. pagi berikutnya untuk membaca stdout-nya, lalu memilih untuk membunuhnya, dll). Layar memungkinkan Anda untuk melakukan hal itu.
Andreas F
1
nohup mengirimkan output ke file yang dapat diproses.
Brian Knoblauch
Bagi mereka yang baru nohup, pada dasarnya "tidak ada hangup" - dengan nohup, HUPsinyal hangup ( ) diabaikan.
Dan7119
20

Jika Anda ingin membaca output di kemudian hari, Anda dapat menggunakan screen:

screen -d -m my_command

Ini memberi Anda terminal terpisah yang dapat Anda sambungkan nanti ( screen -r) untuk membaca stdout / stderr output.

Menandai
sumber
2
+1. Untuk satu, jika Anda menutup terminal Anda (misalnya dempul) dan kemudian Anda membukanya lagi dan pasang kembali ke layar ( screen -r) Anda juga akan memiliki semua output yang dihasilkan program Anda dan Anda akan "terjawab". Plus, layar dapat melakukan banyak hal menakjubkan, seperti layar terbelah, dll! :)
Alberto Santini
6

Pilihan lain jika nohupperintah tidak tersedia adalah dengan menggunakan perintah disown .

Pertama, Anda dapat melihat tugas latar belakang Anda dengan menjalankan jobsdi terminal. Anda bisa mendapatkan nomor pekerjaan dari sana.

Sekarang jalankan saja disown %[job number]dan proses akan terlepas dari terminal saat ini dan tetap hidup ketika Anda logout.

Catatan: Pastikan Anda mengajukan pertanyaan yang benar. Jika Anda menjalankan layanan aktual saat mengisyaratkan pada sampel Anda, Anda mungkin ingin melihat cara membuat daemon di OS pilihan Anda. Ini untuk memastikan bahwa proses masih berjalan setelah reboot dan membuatnya lebih konsisten dengan layanan lain.

Semoga ini membantu.

pengguna391035
sumber
3

Karena screentelah disebutkan: ada multiplexer terminal lain di luar sana. Saya tmuxsangat suka , lihat misalnya pertanyaan pengguna super ini , tmux vs layar untuk perbandingan.

1k5
sumber
0

Anda juga dapat mencoba: setsid Setsid juga berfungsi untuk program latar belakang dan memungkinkannya untuk tetap berjalan setelah sesi terminal / ssh terputus.

Gunakan seperti ini:

setsid program-to-background

Manpage: http://man7.org/linux/man-pages/man2/setsid.2.html

nulldev
sumber