2

想请教各位 v2 shell 脚本比较精通的,被这个问题卡住了.

 2 years ago
source link: https://www.v2ex.com/t/847275
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Linux

想请教各位 v2 shell 脚本比较精通的,被这个问题卡住了.

  freaks · 2 小时 59 分钟前 via iPhone · 703 次点击
自己写了个检测宽带公网出口 ip 变化的脚本,并通过企微的群聊机器人通知,想放到后台一直运行,但都是运行了:
nohup sh scriptName.sh > /dev/null 2>&1 & 后 使用 ps - ef | grep scriptName.sh 后显示了一次,在此运行命令就看不到运行了。我用 bash -x script Name.sh 可以运行成功,也可以发起通知,但就是放不到后台执行,不知道哪里出问题了,还请各位大神不吝赐教,小弟在此谢过了. 搜了好多文章也没找到问题原因,要😭了.
7 条回复    2022-04-16 09:48:58 +08:00

Tink

Tink      2 小时 52 分钟前 via Android

你这个脚本里面实现了一直循环?如果没有的话要用 cron

DCCooper

DCCooper      2 小时 50 分钟前 via iPhone

脚本退出了

liangkang1436

liangkang1436      2 小时 31 分钟前 via Android

@DCCooper 你要不做成服务算了,启动,停止都方便些

plko345

plko345      2 小时 27 分钟前 via Android

那你把结果重定向到文本里呀,可能脚本不健壮,某次失败退出了,你全都指向 null ,有问题也发现不了

zhouzm

zhouzm      2 小时 23 分钟前

# check-gateway.sh
#! /bin/bash

[[ ! -z "$1" ]] && host=$1 || host=192.168.1.1

c=0
last=0
# while [[ $c -lt 100 ]]; do
while true; do
ping -q -c 1 -W 1 $host >/dev/null
current=$?
if [[ $current == 0 ]]; then
if [[ $last != 0 || $c -eq 0 ]]; then
last=$current
echo $( date +%Y-%m-%d\|%H:%M:%S ) :$host online >> /run/check-gateway.log
fi
else
if [[ $last == 0 ]]; then
last=$current
echo $( date +%Y-%m-%d\|%H:%M:%S ) :$host offline >> /run/check-gateway.log
fi
fi
c=$(( $c + 1 ))
sleep 1
done
exit 0

nohup check-gateway.sh $IP >/dev/null 2>&1 &

ch2

ch2      2 小时 22 分钟前 via iPhone

有两个选择:
1. 用 crontab 做成定时任务,每分钟检测一次,每次只跑完就退
2.用 systemctl 做成服务,常驻后台

lcy630409

lcy630409      1 小时 52 分钟前

这个最简单的就是 crontab 了,定时执行即可

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK