【问题标题】:Cannot start a script无法启动脚本
【发布时间】:2013-02-14 05:49:18
【问题描述】:
#!/bin/bash
value=$(<man.txt)
echo "$value"

if [ "$value" == "true" ]; then
    echo "startedif_manthan"
      ps -ef|grep sym |awk '{ print $2 }'|sudo  xargs kill -9;
      sleep 30;
    sudo sh /var/www/symmetric-ds-3.1.6/bin/sym --port 8082 --server;
fi

你好,我有这个脚本杀死一个进程并在一段时间内重新启动脚本。
它正常杀死脚本但重新启动脚本(sudo sh /var/www/symmetric-ds-3.1.6/ bin/sym --port 8082 --server) 运行不正常。

当我手动运行脚本时也会出现问题。
我不知道它是否是 shell 脚本.
但是当我尝试手动转到脚本位置并执行此命令时 ./sym --port 8082 --server 脚本运行正常。

有什么建议吗?

【问题讨论】:

  • 执行shell脚本时得到的错误信息是什么?

标签: linux shell unix


【解决方案1】:

既然你说当你cd到脚本目录时它工作正常,那么在脚本中这样做:

#!/bin/bash
value=$(<man.txt)
echo "$value"

if [ "$value" == "true" ]
then
    echo "startedif_manthan"
    ps -ef|grep sym |awk '{ print $2 }'|sudo  xargs kill -9
    sleep 30
    (cd /var/www/symmetric-ds-3.1.6/bin; sudo sh ./sym --port 8082 --server)
fi

【讨论】:

  • 我试过了。它正在杀死进程,它没有运行括号中的脚本。
  • 我明白了,因为脚本本身正在匹配模式以杀死它正在杀死自己
  • 它可能会杀死grep sym...在匹配太多进程时要非常小心。我使用的一个技巧是grep '[s]ym';方括号表示它不会匹配自身,但会匹配sym 进程。但我仍然担心sym 出现在其他进程中。
猜你喜欢
  • 2016-02-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多