#!/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 时,脚本正常运行。
有什么建议么?
答案1
根据我的观察,进程列表匹配命令将终止grep
执行模式匹配的进程并阻止进一步执行。一个快速的破解方法是从搜索结果中删除 grep 本身:
ps -ef|grep sym | grep -v grep| awk '{ print $2 }'|sudo xargs kill -9;
更好的方法是阅读pgrep
/pkill
并使用它们。:)