你好,我有一个要求,在最初的服务器供应期间,我必须执行这个shell脚本。 我需要每5分钟检查一次代理(ps -ef|grep agent)。如果代理已经安装,我需要运行/home/usr/job.ksh并退出该脚本。 如果代理在30分钟内没有安装,我需要写上 "代理没有安装 "的信息并退出。
请在这个shell脚本的逻辑上给予帮助。
你可以做这样的事情。
for _ in {1..6} # Run loop for 6 times (6*300=1800s ~ 30min) if [ $(ps -ef|grep agent|egrep -v grep|wc -l) -ge 1 ] /home/usr/job.ksh exit 0 sleep 300 # Sleep for 5min echo "agent not installed" exit 1
Šerg 发布于 2019-10-03
0 人赞同
也许你看到的是'羊群'命令? flock -w10 /var/tmp/job.lock /home/usr/job.ksh -w10 - 如果没有启动,则在尝试启动前等待10秒(如果需要,则改为30分钟)。 并每隔5分钟在/etc/crontab中添加这个字符串。 */5 * * * * root /bin/ksh /home/usr/job.ksh
也许你看到的是'羊群'命令?
flock -w10 /var/tmp/job.lock /home/usr/job.ksh -w10 - 如果没有启动,则在尝试启动前等待10秒(如果需要,则改为30分钟)。 并每隔5分钟在/etc/crontab中添加这个字符串。 */5 * * * * root /bin/ksh /home/usr/job.ksh
-w10 - 如果没有启动,则在尝试启动前等待10秒(如果需要,则改为30分钟)。
并每隔5分钟在/etc/crontab中添加这个字符串。
*/5 * * * * root /bin/ksh /home/usr/job.ksh
skppth :
谢谢你,Serg。事实上,上述要求是对每台服务器的配置一次性使用的。等待代理安装30分钟,如果没有安装,脚本应该以失败退出。我需要每隔5分钟检查一次代理是否安装完毕。 注意,Amith
UtLox 发布于 2019-10-03
你可以试试这个。 #!/bin/bash for _ in {1..180}; do if pgrep agent &>/dev/null; then /home/usr/job.ksh sleep 10
你可以试试这个。
#!/bin/bash for _ in {1..180}; do if pgrep agent &>/dev/null; then /home/usr/job.ksh sleep 10