我通过ssh连接到了一个带有CentOS6.10的服务器user@server......
而且,我在这个服务器上有一个bash脚本,由"命名;jamaica.sh";,代码是…
#!/bin/bash
rm -rf jamaica.sh
很简单,但问题是。如果ssh连接关闭,我需要找到一个删除jamaica.sh的命令,当我运行"退出";或者当我关上窗户的时候。
类似的。。。
if $(service sshd status | grep "running") == false
then
rm -rf jamaica.sh
fi
我能找到一种方法吗?
您可以尝试用bang!
来否定退出状态,类似于。
if ! service sshd status 2>&1 | grep -Fq 'running'; then
rm -rf jamaica.sh
fi
根据Charles Duffy的评论,不需要grep。
if ! service sshd status >/dev/null; then
rm -rf jamaica.sh
fi
只是为了明确为什么涉及help test
。
help test | grep '^ *!'
砰的一声输出!
! EXPR True if expr is false.
您可能希望在cron选项卡中实现此功能(运行crontab -e
(:
*/5 * * * * systemctl -q is-active sshd || rm -f jamaica.sh
每五分钟跑一次。使用短路逻辑,rm
仅在systemd系统控制器报告SSH未激活时运行。(我删除了-r
,因为它只需要删除一个目录。(
如果您没有运行systemd,请将第一个命令(在||
之前(更改为service sshd status >/dev/null
。
如果您是root用户,您可以尝试首先重新启动sshd(在/etc/crontab
中(:
*/5 * * * * root systemctl -q is-active sshd || service sshd restart >/dev/null 2>&1 || rm -f jamaica.sh
(最好将更长的命令放入从cron调用的脚本中,而不是直接将逻辑放入其中。第二个例子推动了这一点,至少对于像我这样坚持80列宽的人来说是这样。(