Önyüklemeden sonra bir komutu nasıl çalıştırabilirim?


27

echo 1 > /proc/sys/kernel/sysrqSysrq anahtarlarını etkinleştirmek için her önyüklemede basit kabuk komutunu çalıştırmak istiyorum . Açılışta bu yapılmalı ve bunu yapmak için bir senaryo nereye yazmalıyım?


Tüm Linux dağıtımları zaten zamanı ayarlıyor. Belki anakarttaki RTC'nizin pili zayıf olabilir?
Bazı programcı adam

@ JoachimPileborg aslında anakartımda RTC yok :) RTC'siz gömülü bir sistem kartı.


2
Farklı olmak için yalvarıyorum, @davidgo. Alıntı yaptığınız referanslar biraz eski: crontab çalışırken, /etc/rc.local, systemdArch Linux gibi dağıtımlarla ilgili değil . Onlara atıfta bulunarak, vahşi bir kaz kovalamacasına Demetri'yi gönderiyor olabiliriz. Bazı güncelleme, zaman zaman yapılması gerekiyor.
MariusMatutiae,

Yanıtlar:


37

Dağıtımlara bağlı.

Eğer Debian kaynaklı dağıtımlar kullanıyorsanız, /etc/rc.local ve crontab olmak üzere en az iki uygun yer vardır. Crontab'ı root olarak çağırabilirsin,

   crontab -e

ve sonra bu satırı ekleyin

   @reboot /home/my_name/bin/my_command

my_commandyürütülebilir bir dosya ( chmod 755 my_command) nerede .

Alternatif olarak, böyle bir çizgi koyabilirsiniz

   /home/my_name/bin/my_command

/etc/rc.local içinde ve bu en son çalıştırılacak. Her durumda, pls sizin değil, kök ortamını kullandığınızı unutmayın. Ayrıca bu sebepten mutlak yollar kullanmak en iyisidir.

Eğer bir iseniz systemd dağıtıma artık mevcut değil ikincisi (/etc/rc.local) iken (Arch Linux Fedora 19, ...) İlk seçenek (crontab), hala geçerlidir. Bu durumda, çalıştırılacak bir servisi nasıl başlatacağınızı öğrenmelisiniz systemctl, ancak bu, basit sorunuzla ilgili pazarlık yaptığınızdan daha fazla olabilir.


1
Bunu Fedora için onaylayabilir misiniz? Araştırmam, eğer varsa ve çalıştırılabilir ise rc.local'ın hala çalışacağını söylüyor, ancak varsayılan olarak ayarlanmadı. Eğer rc.local çalışmazsa, rahatsız edici sonuçları algıladım! (Bunun için sadece Fedora 18 - forums.fedoraforum.org/showthread.php?t=291889 için referanslar bulabildim )
davidgo

Haklısın, Fedora 19'da, gerçekten istiyorsan, hala alabilirsin. Ancak artık paketlenmiyor, docs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/… bullet 3.2.4. Ayrıca, Arch Linux'ta tamamen yok, bu yüzden bunun hakkında bir uyarı eklemenin güvenli olduğunu düşündüm.
MariusMatutiae,

2
belki bu benim için bilinmeyen bir takma addır ancak @bootmevcut değil, sadece @reboot debianhelp.co.uk/crontab.htm
Zarathustra

19

Sisteminizde crononu destekleyen bir sürümü çalışıyorsa (özellikle Vixie cron), @rebootbir cron işinde kullanabilirsiniz.

Bu, desteklediği 8 özel dizgiden biridir.

crontab(5)Man sayfasından alıntı (Ubuntu 12.04 sistemimden):

İlk beş alanın yerine, sekiz özel dizgiden biri görünebilir:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

Unutmayın ki başlangıç, @rebootsöz konusu olduğunda, cron (8) arka plan programı başlangıcının zamanıdır . Özellikle, bazı sistem servetlerinin veya diğer tesislerin devreye girmesinden önce olabilir. Bu, makinenin önyükleme sırası dizisinden kaynaklanmaktadır.

Bu, açılışta bir şeyi çalıştırmanın tek yolu olmaktan çok uzak , ancak bir alternatif.


2
Bu cevap asıl sorudan bir yıldan daha uzun bir süre önce nasıl yazılabilir ?
MariusMatutiae


Vixie cron gerektirdiğini belirtmek için +1.
Javier Arias

10

Hemen hemen tüm Linux değişkenleri (uzun, çok uzun bir süre önce), başlangıçta çalışan bir /etc/rc.local dosyasına sahiptir - sadece komutu ekleyebilirsiniz.

Dedi ki, bunu yapmana bile gerek yok. "Doğru" yöntem, kernel.sysrq = 1 satırını /etc/sysctl.conf içine değiştirmek / eklemek olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.