shell | 命令实用汇集

脚本解析头:

#!/bin/sh

检测进程列表中存在的特定进程名的个数:

Proc_NUM=`ps aux | grep 'proc_name' | grep -v grep |wc -l`
# echo $Proc_NUM
# 条件状态1:少于1
if [ "${Proc_NUM}" -lt "1" ];then
# Do your task here, like restart it.
# Add task here...

# 条件状态2:大于1
elif [ "${Proc_NUM}" -gt "1" ];then
# Do your task here, like kill it in force or reboot.
# Add task here...

fi

循环执行任务,条件状态下可使用 sleep 实现定时效果:

while true
#循环运行
do
#Do your task here, example check the net status...
ping -c 3 www.baidu.com > /dev/null
#-c 3 是指ping执行3次后结束。
#-w 3 是指ping执行3秒后结束。
#$?是用来获取函数返回值或者上一个命令的退出状态。

if [ $? -eq 0 ];then
#条件状态1,任务执行成功, like: the net is ok.
#Do the task in the status1.
#Add your task here..

#任务执行完成后可通过 sleep 命令实现定时的效果。
else
#条件状态2:任务执行失败,like: the net is not ok.
#Do the task in the status1.
#Add your task here..

#任务执行完成后可通过 sleep 命令实现定时的效果。
fi
done

各种服务检测及配置:

#Start the ftp if it was colsed.
ps -fe|grep vsftpd|grep -v grep
if [ $? -ne 0 ] ; then
/mnt/platform/sbin/vsftpd /etc/vsftpd.conf
fi

#Open the wifi hotspot.
ifconfig wlan0 192.168.9.1	#Set route IP.
hostapd -B /etc/hostapd/hostapd.conf	#Configure the client IP range.
udhcpd /etc/udhcpd/udhcpd_wlan0.conf &	#Automatic distribute IP.

获取网络时间并同步系统时间1(待实测):

wget -q http://time.tianqi.com/beijing
 
time_ch=$(cat ./beijing |grep “当地时间” |awk -F ">" '{print $5}' |awk -F "<" '{print $1}' )
year=$(echo $time_ch |awk -F "年" '{print $1}' )
month=$(echo $time_ch |awk -F "年" '{print $2}' |awk -F "月" '{print $1}' )
day=$(echo $time_ch |awk -F "月" '{print $2}'|awk -F "日" '{print $1}')
time_now=$(echo $time_ch |awk '{print $3}')
time_a=$(echo "$year-$month-$day $time_now")

date -s "$time_a"

rm ./beijing

获取网络时间并同步本地时间2(实测有效):

ntpdate ntp.ntsc.ac.cn [n_hour] &
说明:[n_hour]根据不同的时区进行配置,国内常用的是 0 或 8,需要根据实际情况确定。
其中 ntpdate 需要根据实际的平台下载源码进行编译。
同步阿里时间服务器:ntpdate -u ntp.aliyun.com
上一篇:第六章、SQL语言学习(条件查询测试题)


下一篇:【CVPR2021】Contrastive Learning for Compact Single Image Dehazing