Buradaki önceki yanıtların hepsi mükemmelliği gerektirse de, görevler yapılır yapılmaz makinenizi de kapatabilirsiniz.
bash
komut dosyaları trap
ped olabilir , yani bazı sinyaller yakalanabilir ve gerektiğinde bazı görevler yürütülebilir. EXIT
sıkışabilecek sinyallerden biridir.
Şunları yapabilirsiniz:
- Otomatik kabuk komut dosyalarınız
trap
için bir set EXIT
, yani otomatik görevlerinizin sonlandırılması
- Bir ayarlama
trap
şunlara ait .bashrc
EXIT
sen Gücü, makinenin kapalı oturumu zaman, yani.
Görevleriniz geçici inceleme ve manuel yargılama gerektirmiyorsa, 1. seçenek ideal bir durum olacaktır.
Seçenek # 2, kapatmadan terminalden çıkmayı unutacağınız durumları kapsar. Yine de bir uyarı var; aynı makineye açık birden fazla terminaliniz varsa ve bunlardan birinden çıkarsanız, yine de makineyi tamamen kapatır. (Bundan kaçınmak için senaryo yazılabilir, ancak çözümü zorlaştırmayacağım.)
cleanup(){
# Do some tasks before terminating
echo oh la la, cleaning is so nice
echo "See you later, world"
sudo poweroff & # finally shutdown
}
trap cleanup EXIT
Bu, .bashrc
# 2 seçeneğinin sonunda, betiğinizin üstünde # 1 seçeneği için bir yerde olabilir.
Neden poweroff
betiğin sonunda kullanılmıyor ?
set -eo pipefail
Senaryolarımın üstünde kullanmayı tercih ederim . Herhangi bir hata olursa, sessizce başarısız olmaz; daha fazla komut çalıştırmayı durduracaktır. trap
bir EXIT
sinyal komut hatalar nedeniyle zamanından önce sona erer durumları kapsamalıdır.
Ancak görevleriniz için bu, makinenin tamamlanmadan önce kapanacağı anlamına da gelebilir.
Ben bash
komut dosyası hata ayıklama kolaylaştırmak için kullandığım basit bir şablon var ; belki bazı yararları olabilir. Lütfen bu özete bakın .
at
(bir defalık yürütme).