我创建了一个文件/root/startup.sh
(我在 Ubuntu 上,使用 Gnome 3.22.3 并具有 root 访问权限),其中包含以下内容:
#!/bin/bash
DISPLAY=":0"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SHELL="/bin/bash"
$(/usr/bin/xinput list > /root/Desktop/output.txt)
我已经将此行放入crontab -e
文件中:
* * * * * /bin/bash /root/startup.sh
但是过了一分钟,文件output.txt
创建完毕,我打开它时,它是空的,里面没有任何内容。
为什么?
答案1
根据我的经验,您还需要设置 XAUTHORITY 变量。
export XAUTHORITY=/home/<user>/.Xauthority
由于您通过 cron 以 root 身份启动脚本,因此 root 用户可能没有 .Xauthority 文件。但由于您在 cron 会话中是 root,因此您可以使用普通用户的那个。
答案2
网上有很多文章,关于这个问题有很多问题和答案,但没有一个通知我这个愚蠢的错误:
export DISPLAY=":0"
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export SHELL="/bin/bash"
应该使用此代码来代替我的问题中的 3 行代码。
我应该export
在它们之前添加。
而且它有效。