shell脚本后台运行操作

最近帮同学写一个简单脚本= =(别喷我~~),状况频出,后台运行方式和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 进程号  
[root@xiangchen ~]# kill -9 1578
[root@xiangchen ~]# ps -ef |grep vsftpd
root      1708  1615  0 15:55 pts/2    00:00:00 grep vsftpd
系统开机时运行脚本写入开机启动配置文件中即可


记录每天想到的,坚持下去吧= =

你可能感兴趣的:(shell,脚本,后台)