您的位置首页百科问答

Linux nohup后台运行程序

Linux nohup后台运行程序

的有关信息介绍如下:

Linux nohup后台运行程序

Linux nohup后台运行程序

需求:

存储已满,需要删除过时数据

条件:

数据比较大,删除需要很长时间,直接执行删除命令肯定不行,因为窗口一旦关闭,命令就死掉;那么就让它运行也不行,因为这台电脑可能有其他维护公司也会用此电脑,这也不安全。所以需要后台运行该程序

步骤思路:

1:查看需要删除的数据

2:编辑删除脚本

3:后台执行脚本(有多个脚本,每个窗口最好只执行一个)

4:查看运行的后台进程

5:fg %n将后台脚本调到前台执行

6:验证是否在后台执行

7:终止后台运行的删除脚本

查看需要删除的数据

[root@NAS dj]# df -h

文件系统 容量 已用 可用 已用% 挂载点

/dev/sda3 192G 5.6G 177G 4% /

/dev/sda1 190M 12M 169M 7% /boot

tmpfs 3.9G 0 3.9G 0% /dev/shm

/dev/sdb1 9.0T 7.0T 1.6T 82% /var/www/html/dj

/dev/sdb2 11T 9.9T 113G 99% /var/www/html/djbk

需要删除的数据:

/var/www/html/dj/2012

/var/www/html/djbk/2013

编辑删除脚本

[root@NAS script]# cat rm_2012.sh

#!/bin/bash

rm -rf /var/www/html/dj/2012

[root@NAS script]# cat rm_2013.sh

#!/bin/bash

rm -rf /var/www/html/djbk/2013

注意:编辑完脚本后需要赋予脚本执行权限

后台执行脚本(有多个脚本,每个窗口最好只执行一个)

[root@NAS script]# nohup ./rm_2012.sh &

[root@NAS script]# nohup ./rm_2013.sh &

注意:执行脚本的时候,两个脚本不要在同一个窗口执行,

如果在同一个窗口执行,下个执行命令需要等待前面一个执行完成才能执行,

这种效率不是我们要的

查看运行的后台进程

jobs 只能查看当前窗口的后台进程,如果关闭了后台执行脚本的窗口,该命令失效,这个时候就只能用到下面的命令查看

ps -ef 可以查看主机所有运行的进程 ps -ef | grep 过滤条件

fg %n将后台脚本调到前台执行

fg %n 将当前后台运行程序调到前台执行

如果执行完后台脚本命令,当前窗口没有关闭,可以执行jobs查看当前窗口运行的后台进程的进程号,再通过fg %n,将此后台进程调到前台执行,如果不想执行该脚本,直接ctl +c 关闭该窗口

验证是否在后台执行

关闭该连接工具后在打开查看,这时候jobs已经不能使用,只能通过以下方式查看后台执行的脚本是否正在执行

[root@NAS script]# ps -ef | grep rm

root 2331 89 0 Nov02 ? 00:00:00 [ib_inform]

root 23792 1 0 09:53 ? 00:00:00 /bin/bash ./rm_2012.sh

root 23793 23792 0 09:53 ? 00:00:23 rm -rf /var/www/html/dj/2012

root 23797 1 0 09:55 ? 00:00:00 /bin/bash ./rm_2013.sh

root 23798 23797 0 09:55 ? 00:00:23 rm -rf /var/www/html/djbk/2013

root 23998 23889 0 10:36 pts/1 00:00:00 grep rm

终止后台运行的删除脚本

删除命令:kill -9 进程号

注意:删除的时候不能删除查找查找命令,否则会照成关机