七、Shell脚本高级编程实战第七部
2024-10-08 19:49:45
一、写网络服务的系统启动脚本
利用case语句开发类似系统启动rsync服务的脚本
代码:
#!/bin/sah
. /etc/init.d/functions
pidfile="/var/run/rsyncd.pid"
start_rsync(){
if [ -f "$pidfile" ]
then
echo "rsync is running"
else
rsync --daemon
action "rsync is started" /bin/true
fi
}
stop_rsync(){
if [ -f "$pidfile" -a -n "$pidfile" ]
then
kill -USR2 `cat $pidfile`
rm -f ${pidfile}
action "rsync is stopped" /bin/true
else
action "rsync have already been rstopped" /bin/false
fi
}
. /etc/init.d/functions
pidfile="/var/run/rsyncd.pid"
start_rsync(){
if [ -f "$pidfile" ]
then
echo "rsync is running"
else
rsync --daemon
action "rsync is started" /bin/true
fi
}
stop_rsync(){
if [ -f "$pidfile" -a -n "$pidfile" ]
then
kill -USR2 `cat $pidfile`
rm -f ${pidfile}
action "rsync is stopped" /bin/true
else
action "rsync have already been rstopped" /bin/false
fi
}
case "$1" in
start)
start_rsync
RETVAL=$?
;;
stop)
stop_rsync
RETVAL=$?
;;
restart)
stop_rsync
sleep 10
start_rsync
RETVAL=$?
;;
*)
echo "USAGE: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
start)
start_rsync
RETVAL=$?
;;
stop)
stop_rsync
RETVAL=$?
;;
restart)
stop_rsync
sleep 10
start_rsync
RETVAL=$?
;;
*)
echo "USAGE: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
测试:
二、进程管理的命令
fg 放到前台执行
bg 放到后台执行,ctrl+z表示暂停当前会话
jobs 当前后台执行的任务
strace 跟踪一个进程的系统调用,top 显示进程
三、while循环,1加到100之和
#!/bin/sh
i=1
sum=0
while [ $i -le 100 ]
do
let sum=sum+i;
let i=i+1
done
echo "$sum"
1.let效果是小于(())
2.首项+末项的和乘以项数/2,如果计算1000万,这种算法效率更高,所以算法很重要,用上面的方法就是有问题的
四、whle循环,打印10,9,8,7.。。。1
#!/bin/sh
i=10
while ((i>0))
do
echo $i
((i--))
sleep 1
done
五、计算apache一天的日志access_xxx.log中所有行的日志各个元素的访问字节数总和。
#!/bin/sh
sum=0
i=0
while read line
do
i=$(echo $line|awk '{print $(10)}')
if expr $i + 0 &>/dev/null
then
((sum=sum+i))
fi
done < /server/scripts/access.log
sum=0
i=0
while read line
do
i=$(echo $line|awk '{print $(10)}')
if expr $i + 0 &>/dev/null
then
((sum=sum+i))
fi
done < /server/scripts/access.log
echo $sum
while小结:while擅长1分钟以内的循环处理
六、打印5,4,3,2,1用for循环
#!/bin/sh
for n in 5 4 3 2 1
do
echo $n
sleep 1
done
七、用for设置开机自启动:crond rsyslog network sshd network nfs rpcbind mysqld
#!/bin/sh
for name in `chkconfig --list|grep 3:on|awk '{print $1}'`
do
chkconfig $name off
done
for name in `chkconfig --list|grep 3:on|awk '{print $1}'`
do
chkconfig $name off
done
for name in crond rsyslog network sshd network nfs rpcbind mysqld
do
chkconfig $name on
done
do
chkconfig $name on
done
最新文章
- 常用快捷键: From Eclipse to Android Studio
- Webpack 入门指南 - 1.安装
- shadow Dom(shadowRoot) 访问
- python序列化模块json和pickle
- 左倾堆(三)之 Java的实现
- C# 创建WebServices及调用方法
- AnyWhere
- 04737_C++程序设计_第7章_类模板与向量
- 数学之路(3)-机器学习(3)-机器学习算法-SVM[7]
- RCP开发中错误:java.lang.RuntimeException: WARNING: Prevented recursive attempt to activate part...
- Silverlight 雷达图和一种特殊泡泡画法
- linux小白成长之路2————yum安装火狐浏览器
- JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理
- 关于Win10下IE11只能以管理员身份运行的处理方式
- Java面向对象(Eclipse高级、类与接口作为参数返回值)
- Python3 turtle安装和使用教程
- Trove系列(六)——Trove的安全组功能和Trove的卷数据快照功能介绍
- Cocos2d-x3.0触摸
- sourcetree的安装及使用
- [置顶] CSS语言精粹