Tự động khởi động ứng dụng xorg
Nếu tập lệnh bạn muốn bắt đầu yêu cầu phiên xorg thì bạn có thể thử làm theo thông số tự động khởi động freedesktop có thể hoạt động hoặc có thể không hoạt động tùy thuộc vào môi trường máy tính để bàn bạn đang sử dụng.
Ngoài ra, bạn có thể nhắm mục tiêu môi trường máy tính để bàn cụ thể của mình như được mô tả tại https://wiki.archlinux.org/index.php/autostarting .
Chạy một kịch bản như một dịch vụ systemd
Nếu tập lệnh của bạn phù hợp với mô tả của trình nền hoặc 'dịch vụ' và hệ thống của bạn đang chạy systemd , đó là trường hợp cho các dòng chữ raspbian và hiện đại nhất, thì bạn có thể định cấu hình tập lệnh của mình để chạy như một dịch vụ systemd - điều này cung cấp khả năng kiểm soát chi tiết môi trường vòng đời và thực thi, cũng như các điều kiện tiên quyết để (bắt đầu lại) tập lệnh, chẳng hạn như mạng đang hoạt động. Cũng có thể định cấu hình khởi động lại dịch vụ trong trường hợp thất bại ( Restart=always
và trì hoãn giữa các lần khởi động lại, vd RestartSec=10
).
Để sử dụng trên toàn hệ thống, hãy tạo tệp đơn vị systemd của bạn bên dưới /etc/systemd/system
, ví dụ 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
Xem thêm:
Bây giờ chúng tôi đã sẵn sàng để thử nghiệm dịch vụ:
systemctl start autossh
Kiểm tra trạng thái của dịch vụ:
systemctl status autossh
Dừng dịch vụ:
systemctl stop autossh
Khi bạn xác minh rằng dịch vụ hoạt động như mong đợi, hãy kích hoạt nó với:
systemctl enable autossh
LƯU Ý: Vì mục đích bảo mật systemd
sẽ chạy tập lệnh trong môi trường bị hạn chế, tương tự như cách crontab
tập lệnh được chạy, do đó, không đưa ra bất kỳ giả định nào về các biến hệ thống tồn tại trước đó. Sử dụng các Environment
khóa nếu tập lệnh của bạn cần các biến cụ thể được xác định. Thêm set -x
vào đầu tập lệnh bash của bạn và sau đó chạy systemctl status my_service
có thể giúp xác định lý do tại sao tập lệnh của bạn bị lỗi. Như một quy tắc của sự tê liệt, luôn luôn sử dụng các đường dẫn tuyệt đối cho mọi thứ bao gồm echo
và cat
, hoặc xác định rõ ràng $ PATH của bạn.
.xinitrc
hoặc.xsession
tệp của mình.