Buradaki önceki yanıtların hepsi mükemmelliği gerektirse de, görevler yapılır yapılmaz makinenizi de kapatabilirsiniz.
bashkomut dosyaları trapped olabilir , yani bazı sinyaller yakalanabilir ve gerektiğinde bazı görevler yürütülebilir. EXITsıkışabilecek sinyallerden biridir.
Şunları yapabilirsiniz:
- Otomatik kabuk komut dosyalarınız
trapiçin bir set EXIT, yani otomatik görevlerinizin sonlandırılması
- Bir ayarlama
trapşunlara ait .bashrc EXITsen 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 poweroffbetiğin sonunda kullanılmıyor ?
set -eo pipefailSenaryoları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. trapbir EXITsinyal 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 bashkomut 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).