Artikel ini membahas cara menjalankan perintah di latar belakang dengan nohup.

Masalah

Bayangkan Anda membuat skrip yang menjalankan redis-server lalu redis-cli:

redis-server
redis-cli

redis-cli tidak pernah dimulai sejak redis-server berjalan selamanya.

Larutan

Salah satu solusinya adalah menjalankan redis-server di latar belakang dengan &:

redis-server &

Namun, untuk menjalankan redis-server tanpa terputus, gunakan nohup:

nohup redis-server &

Output dari redis-server disimpan ke nohup.out:

cat nohup.out

Untuk meneruskan argumen redis.conf ke redis-server:

nohup redis-server redis.conf &

Untuk membungkam keluaran nohup di baris perintah:

nohup redis-server redis.conf >/dev/null 2>&1 &

Sekarang Anda dapat menjalankan redis-server dan redis-cli dalam skrip yang sama:

nohup redis-server &
redis-cli

Tapi satu masalahnya adalah redis-server tidak pernah mati.

Jadi, simpan pid:

nohup redis-server &
echo $! > /tmp/redis-server.pid

Dan bunuh sebelum dijalankan (jika ada):

kill $(cat /tmp/redis-server.pid)

Naskah

Contoh skrip yang berfungsi:

Demo

Replikasi:



Artikel ini pertama kali diterbitkan di luar biasamark.org pada tanggal 2 April 2022.