$HOME
chỉ vào thư mục chính của người dùng đang chạy tập lệnh. Các dịch vụ Systemd được bắt đầu với root nên có khả năng nó sẽ cố gắng /root/theFolder/run.sh
. Sử dụng đường dẫn tuyệt đối trong các tập tin dịch vụ.
Bạn cũng có bộ forking
tùy chọn. Điều này là cần thiết cho chương trình nền tảng chính nó, kịch bản của bạn làm điều này? Hầu hết không và nếu không phải của bạn, bạn nên xóa tùy chọn này hoặc systemd sẽ đợi tập lệnh của bạn kết thúc để yêu cầu nó như đã bắt đầu.
Ngoài ra các tệp dịch vụ hệ thống trỏ đến các tập lệnh trong thư mục chính của bạn không được khuyến khích và có thể là vấn đề bảo mật. Vì chúng được chạy dưới quyền root nên bất kỳ ai có thể sửa đổi chúng đều có khả năng truy cập root vào máy tính của bạn. Tốt hơn hết là sao chép tập lệnh vào /usr/local/bin
và đảm bảo nó được sở hữu và chỉ có thể ghi bằng root để ngăn chặn điều này. Nó cũng là một ý tưởng tốt để chạy tập lệnh như một người dùng không có quyền sử dụng User=
và Group=
các tùy chọn trong tệp dịch vụ.
Nếu bạn muốn chạy nó với tư cách là người dùng của mình, tốt hơn là đặt tệp dịch vụ vào ~/.config/systemd/user/
và bắt đầu / kích hoạt nó với systemctl --user enable yourservice && systemctl --user start yourservice
(lưu ý, chạy khi người dùng của bạn không root). Xem điều này để biết thêm về các tập tin dịch vụ người dùng.
systemctl daemon-reload
sau khi tạo tập tin đơn vị của bạn?