首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个鱼脚本不从发射器上运行?

为什么这个鱼脚本不从发射器上运行?
EN

Unix & Linux用户
提问于 2016-04-09 08:15:54
回答 1查看 214关注 0票数 2

我编写了以下脚本,用于启动守护进程并显示Zenity窗口,然后在关闭窗口时停止守护进程:

代码语言:javascript
运行
复制
#!/usr/bin/fish

if not ps aux | grep [s]erviio > /dev/null
    set -x JAVA "/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"

    ~/Programs/serviio/bin/serviio.sh &

    zenity --info --text="Serviio is running.\nClick OK to stop." --title="Serviio"

    ~/Programs/serviio/bin/serviio.sh -stop
end

如果我从终端运行脚本,它就能正常工作。它还工作在bash终端,这似乎表明,她的工作,如预期。

但是,如果我创建一个启动程序来指向脚本并尝试运行它,则不会发生任何事情。Serviio没有启动(我可以从ps aux中确认这一点),也没有显示Zenity窗口。

我试着找出这个脚本是什么导致了一个问题,但没有取得任何成功。

  • 如果删除Serviio是否正在运行的测试,脚本就能工作。
  • 如果保留检查,但让脚本在Zenity窗口中显示$JAVA的内容,而不是启动Serviio,它就能工作。

换句话说,我无法识别脚本中阻止它运行的任何单个元素。

有什么问题吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2016-04-11 18:44:09

通过将ps命令的输出重定向到一个文件,我找到了原因。如果我从启动程序中运行脚本,grep就会找到脚本本身(它的名称中包含"serviio“),因此它不会在" If”中执行代码。

我通过使grep寻找更具体的内容来修正它。

主要原因似乎是,如果脚本直接从终端运行,它不会显示为进程,但如果它是从启动程序运行的,则解释器(在本例中为fish)将以脚本作为参数出现。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/275306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档