Bir komut dosyasının girişte değil önyüklemede çalıştırılması


11

Makine önyüklendiğinde, ancak oturum açmadan önce belirli bir komut dosyasını nasıl çalıştırabilirim (tercihen süper kullanıcı olarak değil). Önyüklemede çalışan son şey olabilir. Çoğunlukla hiçbir kullanıcı oturum açmasa bile komut dosyasının çalışmasını istiyorum.


1
@bruce şuna bir göz atın -> askubuntu.com/questions/9382/…
hhlp

1
Sonradan başlatma veya cron veya muhtemelen bir sürü başka yöntem kullanabilirsiniz. Bilmesi gereken önemli bir nokta nasıl da erken o olabilir çalıştırın. Örneğin, monte edilmesi için belirli bir dosya sistemine ihtiyacı var mı, X'in çalışması mı gerekiyor, DBus'a mı ihtiyacı var, ağa mı ihtiyacı var - yoksa genel olarak daha fazla: mevcut olması için herhangi bir kaynağa ihtiyacı var mı?
JanC

@JanC: Evet, aslında (X hariç) istediğiniz her şeye ihtiyacı var, bu yüzden çalıştırılacak en son şey olmasını istiyorum. Daha önce çalıştırmak için de hiçbir neden yok.
Malabarba

@hhlp: Harika, teşekkürler. Ancak bu yöntemi kullanırsam komut dosyası ne kadar erken çalışır? Yukarıda bahsettiğim gibi, (girişten önce) son şeylerden biri ise en iyisidir.
Malabarba

Bir terminal sunucusunda oturum açmak istemiyorsanız ve / veya $ HOME ağ bağlantınız yoksa, giriş ağ bağlantısı gerektirmez ... ;-)
JanC

Yanıtlar:


8

Kullanmanızı tavsiye ederim cron. Özel zaman değeri @rebootkullanıcı olarak her yeniden başlatmada işinizi doğuracaktır. Örneğin, çalıştırın crontab -eve kullanın:

@reboot /home/yourself/bin/some_script_to_run

Özel saat biçimleri hakkında daha fazla bilgi için bkz. man 5 crontab


Teşekkürler, yeterince kolay görünüyor. Bu hangi kullanıcının cronjob doğru oluşturduğu güvenmez? Girişlerden bağımsız olarak önyüklemenin sonunda çalışır mı?
Malabarba

Kesinlikle cronjob'ı kimin oluşturduğuna bağlıdır - bu kullanıcı olarak çalışacaktır. Ancak giriş yapmalarına bağlı değildir.
Kees Cook

Bunun cron arka plan programı başlatıldığında betiği çalıştırdığını unutmayın, böylece ihtiyacınız olabilecek diğer sistem henüz hazır değildir.
PhoneixS

4

Bir olasılık Upstart'ı kullanmaktır. Bu, komut dosyanızı ne zaman bağımlılıklar açısından çalıştırmak istediğinizi belirtmenize olanak tanır, örneğin “dosya sistemleri monte edildiğinde ve ağ arayüzü eth0çalışırken ve çalışıyorken”. Bunun /etc/init/bruce_script.confgibi bir şey içeren bir dosya oluşturun (dosyayı kök olarak oluşturmanız gerekir):

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

Consult sonradan görme özellikle daha fazla bilgi için belgelerine init(5)el sayfasını bu yapılandırma dosyasında koymak ne bir listesi için.


Kullanılabilecek yeni başlangıç ​​olaylarının bir listesi var mı?
Sunside

@ Markus: bildiğimden değil. Standart olayların bölüm 7'de manuel bir sayfası vardır dpkg -L upstart |grep /man7/ve varolan komut dosyalarında tetikleyici olarak kullanılan ve tetikleyici olarak kullanılan olaylara bakabilirsiniz /etc/init.
Gilles 'SO- kötü olmayı bırak'
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.