Xorg mulai otomatis
Terlepas dari skrip startup tingkat sistem, lingkungan desktop Anda mungkin memiliki caranya sendiri untuk menjalankan program. Folder .config/autostart
ini seharusnya menjadi cara netral untuk mendefinisikan entri autorun di desktop. /etc/xdg/autostart
adalah untuk konfigurasi seluruh sistem. Rincian tentang spesifikasi di http://developer.gnome.org/autostart-spec/ .
Untuk entri autostart LXDE juga dapat diatur ~/.config/lxsession/LXDE/autostart
.
Ini sedikit berbeda jika Anda perlu menjalankan skrip Anda setelah jaringan aktif dan berjalan. Dalam hal ini Anda harus memeriksa skrip post-connect khusus yang dapat ditentukan untuk manajer jaringan Anda. Kedua NetworkManager dan Wicd memiliki cara mereka sendiri menentukan entri autorun pasca-connect. Jika jaringan dikonfigurasi melalui ifupdown
, maka skrip post-up dapat ditempatkan di /etc/network/if-up.d/
folder. Tetapi pendekatan yang lebih baik untuk menjalankan skrip post-connect mungkin systemd (untuk sistem yang mendukungnya, yang merupakan mayoritas dari distro modern).
Mulai otomatis sebagai layanan systemd
Jika hal yang ingin Anda autostart bukan aplikasi grafis yang memerlukan desktop maka yang terbaik adalah menghindari menggunakan fasilitas autostart yang disediakan oleh xorg atau oleh lingkungan desktop Anda saat ini.
systemd
telah menjadi mana-mana di banyak distro modern, dan ia menawarkan banyak kontrol dan fleksibilitas dalam hal bagaimana layanan Anda dimulai dan bagaimana mereka dijalankan.
Saya akan merangkum beberapa manfaat ( systemd dapat melakukan lebih banyak ):
- Jalankan sebagai root atau sebagai pengguna spesifik: mis
User=myuser
- Mulai ulang layanan yang gagal dengan batas waktu yang dapat dikonfigurasi:
Restart=on-failure|on-watchdog|on-abnormal|always
- Mengatur jenis layanan:
Type=simple|forking|oneshot|notify|dbus
- Tetapkan prakondisi dan dependensi startup, yaitu Anda dapat mengatur layanan Anda untuk memulai setelah jaringan menyala (
Wants=network-online.target
di [Unit]
bagian).
Contoh layanan yang memulai daemon telegram-cli. Tempatkan dalam /etc/systemd/system/tg.service
.
[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli
User=jicu
[Install]
WantedBy=multi-user.target
Sekarang Anda dapat mengaktifkan layanan untuk memulai kembali secara otomatis:
sudo systemctl enable tg
Mulai layanan:
sudo systemctl start tg
Hentikan layanan:
sudo systemctl stop tg
Periksa status:
systemctl status tg
Nonaktifkan layanan:
sudo systemctl disable tg
Untuk menghemat Anda mengetik tambahan, Anda dapat menambahkan di ~/.bashrc
baris alias sc='sudo systemctl $*'
Anda maka Anda akan dapat mempersingkat perintah di atas untuk misalnya sc start tg
.
CATATAN: Jika Anda telah menggunakan cron
maka sadar bahwa entri crontab dijalankan dalam lingkungan terbatas - hal yang sama berlaku untuk systemd
: selalu menggunakan jalur absolut, dan tidak membuat asumsi variabel apa pun yang didefinisikan. Secara eksplisit mengatur variabel apa pun yang bergantung pada skrip Anda. systemd
tidak akan menggunakan pengguna Anda .bashrc
dan $PATH
.
Info lebih lanjut: