我正在尝试制作一个 systemd 单元,运行一个脚本,不断检查两个 txt 文件之间的差异,并将差异写入第三个文件:
[Unit]
Description=something
[Service]
Type=simple
Restart=always
ExecStart=/home/myuser/test.sh
[Install]
WantedBy=graphical.target
测试.sh:
#!/bin/bash
log=/home/myuser/test.txt
log2=/home/myuser/test2.txt
while true
do
lshw -short > $log
if ! diff "${log}" "${log2}"; then
date >> alert.txt
diff "${log}" "${log2}" >> alert.txt
fi
done
该脚本运行良好并且服务日志告诉我服务正在运行,但是它从未写入“alert.txt”文件。
有什么解决办法吗?
答案1
通过 SystemD 脚本执行脚本时,您需要使用脚本的完全限定路径。这样,它就知道将文件数据存储在磁盘上的哪个位置。
因此,不要alert.txt
给它一个完整的路径,例如/home/user/alert.txt
或/tmp/alert.txt
或类似的。