执行shell脚本系统()返回256是什么意思呢?(Executing shell script w

2019-10-21 20:16发布

我写了一个shell脚本来软重启HAProxy的(反向代理)。 从shell工作执行脚本。 但我想一个守护进程来执行脚本。 这是行不通的。 system()返回256.我不知道是什么这可能意味着。

#!/bin/sh
# save previous state
mv /home/haproxy/haproxy.cfg /home/haproxy/haproxy.cfg.old
mv /var/run/haproxy.pid /var/run/haproxy.pid.old

cp /tmp/haproxy.cfg.new /home/haproxy/haproxy.cfg
kill -TTOU $(cat /var/run/haproxy.pid.old)
if haproxy -p /var/run/haproxy.pid -f /home/haproxy/haproxy.cfg; then
  kill -USR1 $(cat /var/run/haproxy.pid.old)
  rm -f /var/run/haproxy.pid.old
  exit 1
else
  kill -TTIN $(cat /var/run/haproxy.pid.old)
  rm -f /var/run/haproxy.pid
  mv /var/run/haproxy.pid.old /var/run/haproxy.pid
  mv /home/haproxy/haproxy.cfg /home/haproxy/haproxy.cfg.err
  mv /home/haproxy/haproxy.cfg.old /home/haproxy/haproxy.cfg
  exit 0
fi

HAProxy的与用户HAProxy的执行。 我的守护进程有它自己的用户了。 无论使用sudo运行。

任何提示?

Answer 1:

根据这个和那个 ,Perl的system()返回乘以256的出口值那么它实际上退出1 。 看来这种情况用C太 。



Answer 2:

除非系统返回-1它的返回值是相同的格式,从等待家人系统调用(2人等待)的状态值。 有宏来帮你解释这个状况:

man 3 wait

列出这些宏,他们告诉你什么。



Answer 3:

256的代码可能意味着系统命令无法找到二进制运行它。 请记住,它可能不会被调用bash和它可能没有路径的设置。 全路径的二进制文件再试试!



Answer 4:

我有当包含调用脚本`在守护杀”命令同样的问题。 该守护程序必须已经关闭了标准输出,标准错误...使用类似系统(“scrips.sh>的/ dev / null的”)应该工作。



文章来源: Executing shell script with system() returns 256. What does that mean?