GNU/Linux >> Belajar Linux >  >> Linux

Jalankan skrip bash sebagai daemon

Anda dapat membuka /etc/init.d/ - Anda akan melihat templat daemon bernama kerangka.

Anda dapat menduplikatnya lalu memasukkan skrip Anda di bawah fungsi mulai.


Daemon hanyalah program yang berjalan sebagai proses latar belakang, bukan berada di bawah kendali langsung pengguna interaktif...

[Kode bash di bawah ini untuk sistem Debian - Ubuntu, distro Linux Mint, dan sebagainya]

Cara sederhana:

Cara sederhananya adalah dengan mengedit file /etc/rc.local Anda dan kemudian jalankan skrip Anda dari sana (yaitu setiap kali Anda mem-boot sistem):

sudo nano /etc/rc.local

Tambahkan berikut ini dan simpan:

#For a BASH script
/bin/sh TheNameOfYourScript.sh > /dev/null &

Cara yang lebih baik untuk melakukannya adalah dengan membuat Daemon melalui Pemula:

sudo nano /etc/init/TheNameOfYourDaemon.conf

tambahkan berikut ini:

description "My Daemon Job"
author "Your Name"
start on runlevel [2345]    

pre-start script
  echo "[`date`] My Daemon Starting" >> /var/log/TheNameOfYourDaemonJobLog.log
end script

exec /bin/sh TheNameOfYourScript.sh > /dev/null &

Simpan ini.

Konfirmasikan bahwa tampilannya oke:

init-checkconf /etc/init/TheNameOfYourDaemon.conf

Sekarang reboot mesin:

sudo reboot

Sekarang ketika Anda mem-boot sistem Anda, Anda dapat melihat file log yang menyatakan bahwa Daemon Anda sedang berjalan:

cat  /var/log/TheNameOfYourDaemonJobLog.log

• Sekarang Anda dapat memulai/menghentikan/memulai ulang/mendapatkan status Daemon Anda melalui:

mulai ulang:ini akan berhenti, lalu memulai layanan

sudo service TheNameOfYourDaemonrestart restart

mulai:ini akan memulai layanan, jika tidak berjalan

sudo service TheNameOfYourDaemonstart start

stop:ini akan menghentikan layanan, jika sedang berjalan

sudo service TheNameOfYourDaemonstop stop

status:ini akan menampilkan status layanan

sudo service TheNameOfYourDaemonstatus status

Untuk menjalankannya sebagai daemon lengkap dari shell, Anda harus menggunakan setsid dan mengarahkan outputnya. Anda dapat mengalihkan keluaran ke file log, atau ke /dev/null untuk membuangnya. Dengan asumsi skrip Anda bernama myscript.sh, gunakan perintah berikut:

setsid myscript.sh >/dev/null 2>&1 < /dev/null &

Ini akan sepenuhnya melepaskan proses dari shell Anda saat ini (stdin, stdout dan stderr). Jika Anda ingin menyimpan keluaran dalam file log, ganti /dev/null pertama dengan /path/to/logfile Anda.

Anda harus mengarahkan ulang output, jika tidak, output tidak akan berjalan sebagai daemon yang sebenarnya (itu akan bergantung pada shell Anda untuk membaca dan menulis output).


Linux
  1. Bagaimana Cara Men-debug Skrip Bash?

  2. Skrip Init.d Tidak Dijalankan Saat Boot?

  3. Cara membuat skrip Python berjalan seperti layanan atau daemon di Linux

  1. Jalankan skrip php sebagai proses daemon

  2. Bagaimana cara membuat skrip Python dijalankan sebagai layanan?

  3. Izin ditolak dengan bash.sh untuk menjalankan cron

  1. Bagaimana cara menjalankan skrip bash berulang kali setiap N detik?

  2. Jalankan bagian dari skrip bash sebagai pengguna yang berbeda

  3. Bagaimana cara menjalankan skrip bash melalui jalur absolut?