Cron 运行不佳

Cron 运行不佳

我有一个 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
    

相关内容