最近帮同学写一个简单脚本= =(别喷我~~),状况频出,后台运行方式和ctrl+Z概念没有理解清楚搞出了大笑话,一下晾出脚本和解决过程:
#!/bin/bash while :;do a=`date +%Y/%m%d%T` java=`ps aux |grep vsftpd |awk ‘NR==1{print $3}‘` echo "时间$a,CPU使用率$java" >> xiangchen/1.txt sleep 10 done
当时直接使用Ctrl+Z以为是直接后台运行,后来了解到只是挂起前台任务,挂起并没有后台运行,呵呵- -
后来百度了一下找到解决方法是把运行中的任务Ctrl+Z暂停挂起:
# sh vsftpd.sh &
# [1] 1159
# jobs -l
# [1]+ 1159 Running ./vsftpd.sh & //查看在后台运行
# $ disown -h %1
# $ ps -ef | grep vsftpd
# root 1492 1143 0 15:42 pts/0 00:00:00 /bin/bash ./vsftpd.sh
# root 1531 1143 0 15:43 pts/0 00:00:00 grep vsftpd
这里我们可以让程序末尾+&挂起,然后使用disown -h %程序序号来让其后台运行,不受当前shell退出影响。还有一种方法,和这个效果相同:
# (./vsftpd.sh &)
# [1]+ Killed ./vsftpd.sh
# ps -ef |grep vsftpd
# root 1578 1 0 15:50 ? 00:00:00 /bin/bash ./vsftpd.sh
# root 1699 1615 0 15:52 pts/2 00:00:00 grep vsftpd
结束脚本进程:kill -9 进程号
[[email protected] ~]# kill -9 1578
[[email protected] ~]# ps -ef |grep vsftpd
root 1708 1615 0 15:55 pts/2 00:00:00 grep vsftpd
系统开机时运行脚本写入开机启动配置文件中即可
记录每天想到的,坚持下去吧= =