Ubuntu Server 17.10'da başlangıçta bir komut dosyasını nasıl çalıştırabilirim?


13

Bir Ubuntu Server 17.10 makinesinde başlangıçta bir komut dosyasını nasıl çalıştırabilirim? Sanırım yöntem 17.10'da değiştirildi.

Yanıtlar:


14

Komut dosyasını uygun bir zaman çizelgesiyle uygun kullanıcı crontablosuna (yani crontab ) koyun @reboot.

Bir kullanıcı crontablosunu ile düzenleyebilir crontab -e.

/path/to/script.shBaşlangıçta çalışacak bir örnek :

@reboot /path/to/script.sh

Kök olarak çalıştırmanız gerekiyorsa kullanmayın @reboot sudo /path/to/script.sh; Kökün crontab'ını düzenlemek için
kullanın sudo crontab -eu root.

Ayrıca bakınız: crontab (1), cron (8), crontab (8)


2

Ubuntu 15.04 ve ileri sürümleri varsayılan olarak systemdbaşlangıç ​​hizmetlerini ve yordamlarını otomatikleştiren bir program olan bir çeşit kullanır . Sadece biraz çaba ile kendi başınıza yapabilir ve başlangıç ​​hizmetleri listesine ekleyebilirsiniz.

Temel Sistem Hizmeti

Bu, .servicepython gui sunucumu başlatmak için kullanılabilecek bir barebones dosyasıdır (bir kabuk betiği olabilirdi, önemli değil):

[Unit]
Description=Python GUI Server

[Service]
ExecStart=/home/pi/software/GUI_POE.py &

[Install]
WantedBy=multi-user.target

DescriptionOpsiyon hizmeti olduğunu ve ne yaptığını açıklanan herhangi bir dizedir.

ExecStartSeçenek yürütülecek komutu belirtir. Burada, yürütülebilir bir python betiğine yol veriyorum &ve arka planda çalıştırmak için jetonu kullanıyorum .

WantedByNe hedefine dayalı seçeneğin belirtir öncelik, bu hizmeti kullanmak istiyor. Hizmetinizin çok belirli bir zamanda çalışması için ihtiyacınız yoksa, yalnızca olarak ayarlayın multi-user.target.

Temel Prosedür

  1. Başlangıçta çalıştırmak istediğiniz komut dosyasını nanoveya istediğiniz bir düzenleyiciyi kullanarak yazın. Dosyanın en üstüne uygun basmayı eklediğinizden emin olun ( #!/bin/bashbash komut dosyaları için) ve ona yürütülebilir izinler verin chmod.

  2. Hizmetinizi my_service.service adlı bir dosyaya yazın ve ardından uygun dizine kopyalayın cp my_service.service /lib/systemd/system/.

  3. Senin hizmetini başlatın: sudo systemctl start my_service.service. Bu, hizmetinize çalıştırılmasını söylediğiniz komut dosyalarını başlatır. Başlat yerine "durdur" ile aynı komut onu kapatır.

  4. Başlangıç sürecine hizmetinizi ekleyin: sudo systemctl enable my_service.service. Kaldırmak için, aynı komutta "enable" yerine "enable" olarak değiştirin.

Ve bu kadar! Komut dosyanızın sistemd hizmetlerinde varsayılan olarak otomatik olarak kök izinleriyle çalıştırılacağını unutmayın.

Basit Örneğim (Tam)

Referans için, burada Dash kullanarak basit bir Python GUI Sunucusu başlatan basit bir systemd hizmeti var:

[Unit]
Description=Python GUI Server
After=network-online.target

[Service]
Type=simple
WorkingDirectory=/home/pi/software
ExecStart=/home/pi/software/GUI_POE.py &
Restart=always
RestartSec=15s
KillMode=process
TimeoutSec=infinity
User=pi
Group=pi

[Install]
WantedBy=multi-user.target

Bu örnek hizmet bir Python3 komut dosyası kullanır, ancak formül bir kabuk komut dosyası için tam olarak aynıdır.

Daha fazla okuma DigitalOcean tarafından bu mükemmel öğretici bulunabilir ve bu AskUbuntu konu systemd öğrenmeme yardımcı mükemmel bir cevap ile. Bu yardımcı olur umarım!


2
Bu soruya sistematik bir bakış açısı getirdiğiniz için teşekkür ederiz! ExecStart satırında arka plana zorlamaya gerek olmadığına dikkat çekerim.
Jeff Schaller
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.