Memulai ulang aplikasi xorg
Jika skrip yang ingin Anda mulai memerlukan sesi xorg maka Anda dapat mencoba mengikuti spec autostart freedesktop yang mungkin atau mungkin tidak berfungsi tergantung pada lingkungan desktop yang Anda gunakan.
Atau, Anda dapat menargetkan lingkungan desktop spesifik Anda seperti yang dijelaskan di https://wiki.archlinux.org/index.php/autostarting .
Menjalankan skrip sebagai layanan systemd
Jika skrip Anda cocok dengan deskripsi daemon atau 'layanan', dan sistem Anda menjalankan systemd yang merupakan kasus untuk raspbian dan linuces paling modern, maka Anda dapat mengonfigurasi skrip Anda untuk dijalankan sebagai layanan systemd - ini memberikan kontrol granular atas siklus hidup dan lingkungan eksekusi, serta prasyarat untuk memulai kembali skrip, seperti jaringan yang sedang berjalan dan berjalan. Dimungkinkan juga untuk mengkonfigurasi restart layanan jika terjadi kegagalan ( Restart=always
, dan penundaan antara restart misalnya RestartSec=10
).
Untuk penggunaan seluruh sistem, buat file unit sistemd Anda di bawah /etc/systemd/system
, misalnya dengan vim /etc/systemd/system/autossh.service
:
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
Lihat juga:
Sekarang kami siap untuk menguji layanan:
systemctl start autossh
Memeriksa status layanan:
systemctl status autossh
Menghentikan layanan:
systemctl stop autossh
Setelah Anda memverifikasi bahwa layanan berfungsi seperti yang diharapkan, aktifkan dengan:
systemctl enable autossh
CATATAN: Untuk tujuan keamanan systemd
akan menjalankan skrip dalam lingkungan terbatas, mirip dengan bagaimana crontab
skrip dijalankan, oleh karena itu jangan membuat asumsi tentang variabel sistem yang sudah ada sebelumnya. Gunakan Environment
kunci jika skrip Anda membutuhkan variabel tertentu untuk didefinisikan. Menambahkan set -x
di bagian atas skrip bash Anda dan kemudian menjalankannya systemctl status my_service
dapat membantu mengidentifikasi mengapa skrip Anda gagal. Sebagai patokan, selalu gunakan jalur absolut untuk semuanya termasuk echo
dan cat
, atau jelaskan $ PATH Anda.
.xinitrc
atau Anda.xsession
.