Bash脚本检查进程是否正在运行
问题描述:
我正在尝试编写一个在我的ssh服务器上被淹没的脚本,但我很难检查一个进程是否始终运行。它总是认为洪水正在运行。我有一个拒绝所有iptable设置,并且不知道如何使它工作,除非我每次运行它时都设置这些规则。Bash脚本检查进程是否正在运行
#!/bin/bash
#starts deluged and deluge console
echo "Start or Close Deluge?"
read startcls
if [[ $startcls == "S" || $startcls == "s" ]]; then
if [ -z "$(pgrep deluged)" ]; then
echo "Deluge Daemon already running. Close it?"
read input
if [[ $input == "y" || $input == "Y" ]]; then
pkill deluged
iptables -D OUTPUT -p tcp --dport 57714 -j ACCEPT
iptables -P INPUT DROP
echo "Deluged process terminated"
fi
else
iptables -A OUTPUT -p tcp --dport 57714 -j ACCEPT
iptables -P INPUT ACCEPT
deluged
echo "Deluge Daemon started"
deluge-console
fi
else
pkill deluged
iptables -D OUTPUT -p tcp --dport 57714 -j ACCEPT
iptables -P INPUT DROP
echo "Deluged process terminated"
fi
答
可能是您的脚本名称中含有“淹没”一词。将其更改为类似Deluge_check.sh(带有大写字母“D”)
'[-z“$(pgrep deluged)”]'将在没有'流氓'进程正在运行时返回true。还有什么关于这不是专门工作?那么关于iptables的问题到底是什么? – 2014-09-23 00:11:48
woops我切换它。谢谢。我有我的iptables设置为删除所有连接传入和传出,除非它们与我的SSH守护进程相关。因为这个,我不能使用洪水,我不确定它需要什么端口才能工作。我宁愿在使用洪水时不接受所有输入,只打开必要的端口。我知道我需要使用端口57714来使用cli界面,但是我应该打开什么端口来实际下载种子。 – Painguy 2014-09-23 00:14:43
你应该能够设置一个洪水范围,以便为我想象的连接打开哪些端口。我知道其他客户可以做到这一点。 – 2014-09-23 00:19:27