Jawaban:
Letakkan skrip di cron
tabel pengguna yang sesuai (yaitu crontab ) dengan jadwal @reboot
.
Seorang pengguna dapat mengedit cron
tabelnya dengan crontab -e
.
Contoh yang akan berjalan /path/to/script.sh
saat startup:
@reboot /path/to/script.sh
Jika Anda perlu menjalankannya sebagai root, jangan gunakan @reboot sudo /path/to/script.sh
;
gunakan sudo crontab -eu root
untuk mengedit crontab root.
Lihat juga: crontab (1), cron (8), crontab (8)
Ubuntu 15.04 dan maju secara default menggunakan sesuatu yang disebut systemd
, yang merupakan program (semacam) yang mengotomatiskan layanan dan prosedur startup. Anda dapat membuatnya sendiri dan menambahkannya ke daftar layanan startup hanya dengan sedikit usaha.
Layanan Systemd Dasar
Ini adalah .service
file barebones yang dapat digunakan untuk meluncurkan server python gui saya (bisa jadi skrip shell, tidak masalah):
[Unit]
Description=Python GUI Server
[Service]
ExecStart=/home/pi/software/GUI_POE.py &
[Install]
WantedBy=multi-user.target
The Description
pilihan adalah string yang menggambarkan apa layanan ini atau tidak.
The ExecStart
pilihan menentukan perintah untuk mengeksekusi. Di sini, saya memberikan path ke skrip python yang dapat dieksekusi dan menggunakan &
token untuk menjalankannya di latar belakang.
The WantedBy
pilihan menspesifikasikan diutamakan, berdasarkan apa target yang ingin menggunakan layanan ini. Jika Anda tidak membutuhkan layanan Anda untuk dijalankan pada waktu yang sangat spesifik, maka setel ke multi-user.target
.
Prosedur Dasar
Tulis skrip yang ingin Anda jalankan saat startup menggunakan nano
atau editor pilihan Anda. Pastikan Anda menyertakan shebang yang tepat di bagian paling atas file ( #!/bin/bash
untuk skrip bash), dan berikan izin yang dapat dieksekusi dengannya chmod
.
Cukup tulis layanan Anda dalam file bernama my_service.service, lalu salin ke directoy yang tepat dengannya cp my_service.service /lib/systemd/system/
.
Mulai layanan Anda: sudo systemctl start my_service.service
. Ini meluncurkan skrip apa pun yang Anda minta layanan Anda jalankan. Perintah yang sama dengan "stop" bukannya start akan mematikannya.
Menambahkan layanan Anda untuk proses start-up: sudo systemctl enable my_service.service
. Untuk menghapusnya, cukup ganti "aktifkan" dengan "nonaktifkan" pada perintah yang sama.
Dan itu dia! Perlu diingat bahwa skrip Anda akan secara otomatis dijalankan dengan izin root, karena itu default di layanan systemd.
Contoh Sederhana Saya (Penuh)
Untuk referensi, inilah layanan systemd sederhana yang saya miliki yang meluncurkan Server GUI Python sederhana menggunakan Dash:
[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
Layanan contoh ini menggunakan skrip Python3 tetapi rumusnya sama persis dengan skrip shell.
Bacaan lebih lanjut dapat ditemukan di tutorial yang sangat baik dari DigitalOcean ini, dan utas AskUbuntu ini dengan jawaban yang sangat bagus yang membantu saya mempelajari systemd. Semoga ini membantu!