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.



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.


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.


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.


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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.