我有一个 Bash 脚本可用于我的平板电脑。有:
#!/bin/bash
xinput set-prop "XP-PEN G430S Pen Pen (0)" --type=float "Coordinate Transformation Matrix" 1.155756, 0.000000, 0.000000, 0.000000, 1.529, 0.000000, 0.000000, 0.000000, 1.000000
我确实这样做了,crontab -e
并添加了一行这样的@reboot ~/tablet.sh
服务正在运行,但它没有启动 bash 脚本。
答案1
尝试指定一个DISPLAY
变量:
#!/bin/bash
sleep 30
export DISPLAY=:0
xinput set-prop "XP-PEN G430S Pen Pen (0)" --type=float "Coordinate Transformation Matrix" 1.155756, 0.000000, 0.000000, 0.000000, 1.529, 0.000000, 0.000000, 0.000000, 1.000000
echo "xinput command execution for $DISPLAY" | logger
用来$ echo $DISPLAY
查明您的情况。
重启后你可以检查你的命令是否已被执行:
$ journalctl -b | grep xinput | grep execution
如果 cron 过早运行你的脚本,你可以在命令sleep 30
之前添加xinput
等待 20 秒,此时你的桌面环境可能已经加载完毕或者创建下一个 systemd 服务:
创建新的 systemd
tabletd.service
:sudo vim.tiny /lib/systemd/system/tabletd.service sudo ln -s /lib/systemd/system/tabletd.service /etc/systemd/system/
粘贴其旁边的内容:
[Unit] Description=Start tablet service After=multi-user.target [Service] Type=simple User=<youruser> ExecStart=/home/<youruser>/scripts/tablet.sh RestartSec=10s Restart=on-failure [Install] WantedBy=multi-user.target
启用并启动新创建的服务:
sudo systemctl enable tabletd && sudo systemctl start tabletd