【问题标题】:when linux system calls scripts some commands don't work ( cron / if-up.d )当 linux 系统调用脚本时,某些命令不起作用( cron / if-up.d )
【发布时间】:2013-01-12 19:06:24
【问题描述】:

您好,我正在尝试运行一个调用 xclip 的脚本,以便在我连接到 Internet 时准备好粘贴字符串。

我有一个脚本 /etc/network/if-up.d/script 会在连接时执行(我让他在文件中成功发布日期)但是 xclip 指令似乎不起作用,没有什么要粘贴的。如果我通过在控制台中键入 /etc/network/if-up.d/script 手动调用此脚本,它会完美运行。

如果我尝试发送 zenity 消息,连接时它也不会出现。如果我手动操作,它会再次出现。

然后我有一个调用 matlab(控制台模式)的期望脚本,如果我手动执行它,它可以工作,但如果我从 cron 调用它,它会在调用脚本时冻结。

这让我发疯了,因为当系统自动调用它们时,似乎只有脚本中的某些命令可以执行。

我尝试使用 nohup 指令 & 调用指令,但仍然失败

【问题讨论】:

  • 您的 cron 脚本没有在您的登录用户的上下文中运行;您的 cron 脚本(由 cron 执行时)无法查看您的桌面会话等。我认为您不能从 cron 将 X 应用程序启动到您的桌面,因为它不知道您的环境。

标签: linux cron zenity xclip


【解决方案1】:

这是按设计工作的,您四处搜索会看到解决此问题的复杂方法,或者您可以使用我在此处描述的 xmessage:Using Zenity in a root incron job to display message to currently logged in user

简单的选项 1:xmessage(在脚本中)

MSSG="/tmp/mssg-file-${RANDOM}" 
echo -e " MESSAGE \n ==========\n Done with task, YEY. " > ${MSSG}
xmessage -center -file ${MSSG} -display :0.0 
[[ -s ${MSSG} ]] && rm -f ${MSSG}

简单的选项 2:设置显示(然后应该可以工作)

    export DISPLAY=:0 && /usr/bin/somedirectory/somecommand

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2014-10-12
      • 2021-12-10
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多