Pertanyaan Bagaimana menjalankan program sebagai layanan (diam)?


Saya memiliki server berbasis python yang saya mulai dari terminal. Instance tertentu dari terminal ini kemudian memberikan kontrol ke program, dan program menggunakannya sebagai semacam jendela penebangan, hingga tertutup. Apakah ini normal, atau haruskah saya mencoba memulai program dengan cara lain yang hanya akan ditampilkan sebagai proses aktif? Jika saya menutup terminal dari mana saya memulai program, program akan mati dengannya.

Terima kasih


19
2017-09-22 12:08


asal


PHP disebutkan dalam jawaban ini tetapi berlaku juga untuk Python: askubuntu.com/questions/26555/running-php-cli-server/…


Jawaban:


Bahkan bash lama menggunakan & untuk mengirim proses ke latar belakang, tetapi ada beberapa cara lain juga .. tetapi dasar dua adalah ini:

1.)$~ your_command > outputfile_for_stdout &
        # runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
        # & goes at the end of row      


2.)$~ your_command > outputfile_for_stdout 
        # this will run your program normally
        # press  Ctrl + Z then program will pause
   $~ bg
        # now your program is running in background
   $~ fg
        # now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
   $~ screen
   $~ run_all_your_commands
       # Ctrl + A + D will then detach this screen
   $~ screen -r will reattach it

Beberapa perintah berguna lainnya:

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window

7
2017-09-23 17:42



Hmmm, saya menggunakan perintah 'atas' untuk melihat proses sampai sekarang - U2ros


Ubah ke daemon (layanan)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh


24
2017-09-22 12:29





$ servicename &

Menggunakan & menyebabkan program berjalan di latar belakang, bukan memblokir shell hingga program berakhir.


5
2017-09-22 15:25



Tidak, tidak. Misalnya. dixon@dixon-vaio:~$ nautilus & [1] 11835. Ini mengembalikan id proses dan Anda akan meminta shell baru. Periksa juga ini: http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and. - dixoncx
Saya berdiri terkoreksi. Penghapusan suara dihapus. - Scott Severance


Anda juga bisa menggunakan:

start-stop-daemon -SbCv -x your_command

disini adalah skrip init.d untuk memulai dan menghentikan program di latar belakang.


1
2018-06-12 21:57





Dari terminal Anda juga bisa menjalankan screen atau ikuti perintah Anda dengan &. Cara mudah untuk menjalankan proses berkelanjutan.


0
2018-02-09 01:55



hanya menggunakan & untuk latar belakang proses dalam hal ini adalah sedikit, menurut saya. OP menyatakan bahwa servernya log ke stdout jadi, dengan & terminalnya akan penuh dengan output. Juga sejak OP menyebutkan menutup terminal, OP tidak akan dapat mem-foreground proses lagi dan semua log-output akan hilang. Lebih baik, setidaknya, untuk mengarahkan ulang ke file log atau tetap dengan screen setup - tetapi kemudian tolong jelaskan dasar-dasar screenke OP (lepaskan / lampirkan / dll) - Robert Riedl