我编写了一个脚本文件来检查磁盘上的可用空间。如果使用的空间高于阈值,我希望重新启动该服务器上的应用程序。
以下是我编写的代码。
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=60
echo $CURRENT
if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
echo "inside"
sudo ./script2.sh stop
sudo ./script2.sh start
fi
script2.sh
将start|stop
作为参数。
直接从终端执行的命令sudo ./script2.sh stop
和sudo ./script2.sh start
可以正确执行。
第一个命令sudo ./script2.sh stop
未执行。我猜是因为stop
是linux中的一个关键字,因此导致了这个问题。
第二个命令sudo ./script2.sh start
执行(但由于第一个脚本没有执行,因此提供“地址已在使用中”错误。)
我知道我可能不得不将参数值从start改为其他东西,但有没有解决方案将stop
作为参数传递给脚本?
答案 0 :(得分:1)
尝试使用root权限实例化shell并在其中运行脚本:
#!/bin/bash
CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=60
echo $CURRENT
if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
echo "inside"
sudo bash -c './script2.sh stop'
sudo bash -c './script2.sh start'
fi
这也可以在一行中完成..类似于sudo bash -c './script2.sh stop; ./script2.sh start'.
另请注意,您没有在第一行指定shell,使用像#!/ bin / bash这样的shebang或者您使用的任何shell