운영 체제: debian9.
touch /home/test/test.log
/etc/profile에 간단한 write-date 함수가 있습니다.
write-date(){
date >> /home/test/test.log
}
다시 시작하거나 종료할 때 실행되는 서비스를 만듭니다.
vim /etc/systemd/system/test.service
[Unit]
Description=Run command at shutdown
Before=shutdown.target reboot.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/bash /home/test/test.sh
[Install]
WantedBy=multi-user.target
/home/test/test.sh의 간단한 기능 쓰기 날짜.
vim /home/test/test.sh
write-date
테스트 서비스를 활성화합니다.
sudo systemctl enable test.service
컴퓨터를 다시 시작하고 test.service 로그를 확인했습니다.
sudo journalctl -u test
-- Logs begin at Thu 2018-02-01 00:03:59 HKT, end at Thu 2018-02-01 00:15:54 HKT. --
Feb 01 00:04:04 test systemd[1]: Starting Run command at shutdown...
Feb 01 00:04:05 test bash[438]: /home/test/test.sh: line 3: write-date: command not found
Feb 01 00:04:11 test systemd[1]: test.service: Main process exited, code=exited, status=127/n/a
Feb 01 00:04:11 test systemd[1]: Failed to start Run command at shutdown.
Feb 01 00:04:11 test systemd[1]: test.service: Unit entered failed state.
Feb 01 00:04:11 test systemd[1]: test.service: Failed with result 'exit-code'.
/etc/profile의 명령을 찾는 방법은 무엇입니까?
cat -vet /home/test/test.sh
$
$
write-date$
$
$
답변1
소스가 필요하다는 것을 서비스에 명시적으로 알려야 할 수도 있습니다 /etc/profile
.
[Unit]
Description=Run command at shutdown
Before=shutdown.target reboot.target
[Service]
EnvironmentFile=-/etc/profile
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/bash /home/test/test.sh
[Install]
WantedBy=multi-user.target
이 줄에 주목하세요 EnvironmentFile
.