Komut dosyalarını ve komutları çalıştırmanın en iyi yoluAskıya alınmadan önce Linux'ta askıya alın ve devam ettirin (veya devam ettikten sonra) systemd init sistemini kullanmaktır. Bu, init sisteminin doğrudan çekirdek ve güç sistemleriyle etkileşime girmesinden kaynaklanmaktadır. Bu araçla çalışmayı öğrenmek, herhangi bir kullanıcının Linux işletim sistemi üzerinde çok fazla kontrol sahibi olmasını sağlar,
Lütfen init ile uğraştığını anlayınPC’nizdeki sistem, ne yaptığınızı bilmiyorsanız tehlikeli olabilir. Herhangi bir aksilikten kaçınmak için bu kılavuzdaki talimatları mümkün olduğunca yakından takip ettiğinizden emin olun.
Her modern Linux dağıtımı desteklememektedir.systemd init sistemi. Bazıları başlangıç veya tamamen başka bir şey kullanır. Bu eğiticide, en yaygın başlangıç sistemi olduğu için sisteme odaklanacağız. Bu görevi bu makalede anlattığımız şeyi yapmayan bir şeyde yerine getirmek istiyorsanız, talimatlar için işletim sisteminizin el kitabına bakmayı düşünün.
Not: Debian kullanıcıları tüm örneklerini değiştirmelidir. usr / lib / systemd / sistem uyku ile / Lib / systemd / sistem uyku /
Askıya Almadan Önce Komut Çalıştırmak

Askıya almadan önce bir komut dosyasını çalıştırmak için, herhangi bir bash komut dosyasını / Usr / lib / systemd / sistem uyku / dizin. Senaryoların kendisi her şeyi yapabilir, ancak uyulması gereken belirli bir sözdizimi var. Bir terminal penceresi açarak başlayın. Sudo -s kullanarak bir kök kabuğu kazanın.
Ardından, sistem uykusu dizininin içindeki nano metin editörünü açın:
nano /usr/lib/systemd/system-sleep/pre-suspend.sh
Shebang'ı betiğin başına ekleyin. Bunun eklenmesi kritiktir ve onsuz tercüman kodu ve komutları doğru bir şekilde okuyamaz.
#!/bin/bash/
Senaryonun bir sonraki kısmı “if” dir. Bu, güç kontrol sistemine “eğer” sistemin askıya alınmak üzere çökmek üzereyken, bir şeyler olması gerektiğini söyleyecektir. Aşağıdaki kodu yapıştırın:
if [ "${1}" == "pre" ]; then sh /path/to/script/to/run.sh
Değişiklik sh /path/to/script/to/run.sh Betikte, sistem askıya alınmadan hemen önce Linux PC'nizde (veya sunucunuzda) çalıştırmak istediğiniz herhangi bir şeye bakın. Doğrudan “if” den sonra hattın olması gerekmediğini unutmayın. sh /path/to/script/to/run.sh. Bunu çeşitli komutları çalıştırmak için de kullanabilirsiniz. Bash bunu bir komut olarak tanıdığı sürece çalışacaktır.
“Askıya alınmadan önce” komut dosyasının son kısmı “else if” kısmını eklemektir. Komut dosyasının bu yönünün değiştirilmesine gerek yoktur, çünkü bu örnekte, bir şeyler yapmaktan endişe duyuyoruz önce sistem kapanır ve uyandığında değil.
elif [ "${1}" == "post" ]; then # nothing goes here fi
Dosyaya her şey eklendiğinde, tuşuna basın. Ctrl + O nano'yu kurtarmak için.
Devam Ettikten Sonra Komut Çalıştırma

Özgeçmiş sonra bir komut çalıştırmak gibi çalışıraskıya alınmadan önce bir şeyi çalıştırmak. Tek gerçek fark, betiğin “if” bölümünden sonra bir komut eklemek yerine, kodun en önemli bölümünü “elif” satırından sonra meydana getirmenizdir.
Özgeçmiş sonrası bir komut dosyası yapmak için önce shebang'ı ilk satır olarak ekleyin.
#!bin/bash
Bir sonraki satıra, betiğin “if” kısmını ekleyin.
if [ "${1}" == "pre" ]; then # nothing goes here
Bash betiğine yapıştırılan bu kod biti ile aşağı inip "else if" bölümüne yapıştırın.
elif [ "${1}" == "post" ]; then sh /path/to/script/to/run.sh fi
Bir kez daha, "elif" satırının altına herhangi bir şey yazmak sorun değil. Normal bir komut işlemi olduğu sürece systemd ve bash onu çalıştıracaktır.
Başlatma ve Devam Etme Komutlarını Çalıştırma

İki karşıt komut çalıştırmak isterseniz; biraskıya alınmadan önce ve biri devam ettirildiğinde, bu mümkündür. Bu sadece betiği özelleştirmek ve hem ‘if” satırının hem de “elseif” satırının altına satır eklemek demektir.
Her zamanki gibi, tercüman için senaryoyu shebang'a göndererek başlayın.
#!/bin/bash
Ardından, kodun if bölümünü yapıştırın.
if [ "${1}" == "pre" ]; then # replace with command
İf altında, sistem kapanmadan hemen önce çalıştırmak istediğiniz komutu ne şekilde "# ile komutla" değiştirin. Ardından “elif” bölümüne gidin ve aynısını yapın.
elif [ "${1}" == "post" ]; then # replace with command fi
Dosyayı Ctrl + O ile kaydedin,
İzinleri Güncelleme Ve Komut Dosyasını Kullanma
Gerekli komutların tümü komut dosyasının içindedir, ancak çalıştırılmadan önce izinleri güncellemeniz gerekir. Bir uçbirim açın ve aşağıdakileri kullanarak kök kazanın: su veya sudo -s. O zaman yapın:
chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh
Artık, askıya aldığınızda veya devam ettirdiğinizde, komut dosyasının içindeki özel komutlar çalışmalıdır.
Not: systemd system-uyku hakkında sorularınız mı var? Kılavuzunu kontrol et adam systemd-suspend.service.
Yorumlar