如何从systemctl执行i3命令?

时间:2019-02-28 09:41:07

标签: linux bash inotify systemctl i3

我正在尝试使用i3运行inotify命令。就我而言,inotify是使用systemctl开始的。

systemctl脚本:

[Unit]
Description=Inode event watcher

[Service]
User=root
Type=forking
ExecStart=/usr/local/services/inotify/start.sh

[Install]
WantedBy=default.target

/usr/local/services/inotify/start.sh:

I3_CURRENT_WORKSPACE='/etc/i3/script/swiping-workspace/current'
I3_UPDATE_WORKSPACE="/etc/i3/script/swiping-workspace/update.sh"
inotify $I3_WORKSPACE_TRIGGER $I3_WORKSPACE_UPDATE &

注意:我的目标是在磁盘上更改update.sh文件时执行current

/etc/i3/script/swiping-workspace/update.sh:

sudo -u $user i3 workspace $(cat $I3_CURRENT_WORKSPACE)

其中$user是已安装i3的用户。我正在以root用户身份运行此命令。我也尝试了这些开关,但无济于事:SCREEN=':0' -E -H

问题:

触发inotify事件时,将发生错误。这是我收到的日志消息(使用journalctl):

<date> start.sh[1427]: /etc/i3/script/swiping-workspace/ MODIFY current
<date> sudo[6698]:     root : TTY=unknown ; PWD=/ ; USER=$user ; COMMAND=/usr/bin/i3 workspace "6"
<date> sudo[6698]: pam_unix(sudo:session): session opened for user $user by (uid=0)
<date> start.sh[1427]: <date> - Additional arguments passed. Sending them as a command to i3.
<date> start.sh[1427]: <date> - ERROR: Could not get i3 IPC socket path
<date> sudo[6698]: pam_unix(sudo:session): session closed for user $user

我不明白为什么i3无法收到systemctl发送的命令。

如果我自己(在唯一的终端中)而不是使用systemctl来启动inotify命令,则整个设置实际上可以正常工作。

有人有线索吗?

0 个答案:

没有答案