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 进程号  
[[email protected] ~]# kill -9 1578
[[email protected] ~]# ps -ef |grep vsftpd
root      1708  1615  0 15:55 pts/2    00:00:00 grep vsftpd
系统开机时运行脚本写入开机启动配置文件中即可

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

时间: 2024-10-07 23:30:30

shell脚本后台运行操作的相关文章

crontab 调用shell 脚本不运行

最近用crontab 调用一个shell 脚本,并且shell脚本里面调用一个python脚本 其实就是嫌弃python 写一个判断麻烦,就用shell 写了一个if判断 为真的情况下 运行这个python脚本. 但是部署以后 直接sh test.sh 脚本运行没有问题,但是放到crontab中死活就是不运行 在此记录下原因 原因一:shell脚本中调用了一个命令  ip addr |egrep  这种情况下,ip这个名声是在/sbin下,但是crontab 调用的环境变量目录是 /bin  所

DBA_命令nohup使用将耗时时间过长的脚本执行转入后台(案例)(时间较长的脚本后台运行防止Session断掉)

2014-08-08 BaoXinjian 一.摘要 nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号. 在注销后使用 nohup 命令运行后台中的程序. 要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部. 1. 重定向日志文件 如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中.如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohu

python脚本后台运行

问题描述: 环境: CentOS6.4 一个用python写的监控脚本test1.py,用while True方式一直运行,在ssh远程(使用putty终端)时通过以下命令启动脚本: python test1.py & 现在脚本正常运行,通过ps能看到进程号,此时直接关闭ssh终端(不是用exit命令,是直接通过putty的关闭按钮执行的), 再次登录后发现进程已经退出了. 通过后台启动的方式该问题已经解决,这里总结下,也方便我以后查阅. linux 下后台运行 通过fork实现 linux环境

screen工具(虚拟终端)、nohup命令(让脚本后台运行)

screen工具 虚拟终端有时候我们要执行一个命令或脚本,需要几小时甚至几天,但是不能中断,有时想查看当前输出信息的时候:可以将它丢到后台运行,但是后台运行却无法显示或输出相关信息出来:我们可以使用一个虚拟终端工具screen来实现,虚拟一个终端直接在上面运行脚本或命令,隐藏到后台运行,但随时可以调出查看当前进度与信息: 安装包 yum install -y screen 新建一个screen终端 screen 在终端运行脚本或命令后 切换回正常模式 ctrl+a+d 查看screen的id s

使用Shell脚本编译运行C++源码 输入输出重定向

在写C++控制台程序的时,如果使用Xcode或者Visual Studio之类的IDE,需要创建许多工程,会造成很多不便.有时,采用Vim或者Sublime text等编辑器编写简单的控制台程序能节省许多时间.但是,在编译时,就必使用命令行编译运行.这时,一个事先编写好的shell脚本能大大缩短调试时间. 把下面的代码复制并保存为xxx.sh文件,输入要编译的文件名(不包括后缀)和编译选项(可选),即可运行(Linux或者MacOS系统). 1 ##/bin/bash 2 echo "-----

利用shell脚本交互式运行jar任务

如题,废话不多说,直接上代码: #!/bin/bash APP_PATH=/root/bigdata/neural_networks/width_control_model/predict/upload_parameter APP_NAME=upload_parameter.jar ARGS0=/root/bigdata/neural_networks/data/430/sczpp/result/201910161057 ARGS1=/root/bigdata/neural_networks/d

shell脚本等的操作

1.命令替换:`` 反向单引号,也称重音符.键盘上和~键在一起的那个键呦,千万不要敲成单引号. A. 使用了``后,shell首先替换输出中``括起来的date命令,然后执行整个输出命令. B.命令替换还可以用于在变量中存储命令输出,如下: 变量ctr将包含当前目录中名字以.txt结尾的文件的计数. 2.expr 大部分shell不支持数字变量,所有变量会被作为字符串.如var=25,变量var中包含的是字符2和字符5组成的字符串,而不是数字25. Expr命令用来评估算术表达式,命令的输出发送

linux脚本后台运行

1 后台执行 2.同一个session环境下,查看当前命令的执行情况 退出控制台,重新putty上去,看目前执行情况(ps可以看到,jobs不可以看到) 如果想杀后台shell进程. 找到pid ,kill. 例如上图执行: kill -9 17326 杀掉进程. ----------------------------------- 验证方式:通过 tail -f nohup.out既可确认效果

python ,shell 脚本 执行同样操作,花费时间效率对比

废话不说,直接上图(第一个是python写的脚本,第二个和第三个是shell): 文件是一份nginx的log文件,总共583万行,然后是统计各个ip出现次数,各个脚本的执行时间如上所示. 测试环境是:centos 6.5,四核cpu,8g内存. 下面是python脚本 结果是:单核情况下,awk 自增运算最快,python脚本次之,awk和sort等命令的组合最次,猜测awk 是c/c++写的,python解释执行,awk | sort |uniq 的组合,估计哪衔接不好,效率最差. pyth