Sesuatu seperti Cron?
Perhatikan @reboot
entri
Ini adalah pendekatan yang paling fleksibel, dan yang paling mirip dengan "Tugas Terjadwal" Windows (sebenarnya lebih baik).
Mulai otomatis Xorg
Terlepas dari skrip startup tingkat sistem, lingkungan desktop Anda mungkin memiliki caranya sendiri untuk menjalankan program secara otomatis. Folder .config/autostart
seharusnya menjadi cara desktop-netral untuk mendefinisikan entri autorun. /etc/xdg/autostart
adalah untuk konfigurasi seluruh sistem. Detail tentang spesifikasi di http://developer.gnome.org/autostart-spec/.
Untuk entri autostart LXDE juga bisa diatur di ~/.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 pasca-koneksi khusus yang dapat ditentukan untuk manajer jaringan Anda. Keduanya NetworkManager dan wicd memiliki cara mereka sendiri untuk menentukan entri autorun pasca-koneksi. Jika jaringan dikonfigurasi melalui ifupdown
, lalu skrip post-up dapat ditempatkan di /etc/network/if-up.d/
map. Namun pendekatan yang lebih baik untuk menjalankan skrip pascakoneksi mungkin adalah sistemd (untuk sistem yang mendukungnya, yang merupakan mayoritas distro modern).
Mulai otomatis sebagai layanan sistem
Jika hal yang ingin Anda mulai otomatis bukanlah aplikasi grafis yang memerlukan desktop, sebaiknya hindari penggunaan fasilitas mulai otomatis apa pun yang disediakan oleh xorg atau oleh lingkungan desktop Anda saat ini.
systemd
telah ada di mana-mana di banyak distro modern, dan menawarkan banyak kontrol dan fleksibilitas dalam hal bagaimana layanan Anda dimulai dan dijalankan.
Saya akan meringkas beberapa manfaat (systemd dapat melakukan lebih banyak ):
- Jalankan sebagai root atau sebagai pengguna tertentu:mis.
User=myuser
- Mulai ulang layanan jika gagal dengan waktu tunggu yang dapat dikonfigurasi:
Restart=on-failure|on-watchdog|on-abnormal|always
- Menyetel jenis layanan:
Type=simple|forking|oneshot|notify|dbus
- Menetapkan prasyarat dan dependensi startup, yaitu Anda dapat menyetel layanan untuk dimulai setelah jaringan aktif (
Wants=network-online.target
di[Unit]
bagian).
Contoh layanan yang memulai daemon telegram-cli. Tempatkan di /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 mulai otomatis:
sudo systemctl enable tg
Mulai layanan:
sudo systemctl start tg
Hentikan layanan:
sudo systemctl stop tg
Periksa statusnya:
systemctl status tg
Nonaktifkan layanan:
sudo systemctl disable tg
Untuk menghemat pengetikan tambahan, Anda dapat menambahkan ~/.bashrc
baris alias sc='sudo systemctl $*'
maka Anda dapat mempersingkat perintah di atas menjadi mis. sc start tg
.
Info lebih lanjut:
- Memahami systemd
- layanan sistemd
- unit systemd
Ya itu mungkin untuk menjalankan program saat startup di Linux dengan menentukan path ke executable di rc.local
yang berada di /etc
atau /etc/rc.d
direktori, misalnya:
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/path/to/executable
Catatan:jangan lupa untuk menetapkan hak yang dapat dieksekusi seperti yang dijelaskan dalam dokumentasi file, yaitu Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.