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
Artikel ini pertama kali diterbitkan di luar biasamark.org pada tanggal 2 April 2022.