Linux nohup命令:后台命令脱离终端运行

在前面章节中,我们一直在说进程可以放到后台运行,这里的后台,其实指的是当前登陆终端的后台。这种情况下,当我们以远程管理服务器的方式,在远程终端执行后台命令,如果在命令尚未执行完毕时就退出登陆,那么这个后台命令还会继续执行吗?

 

当然不会,此命令的执行会被中断。这就引出一个问题,如果我们确实需要在远程终端执行某些后台命令,该如何执行呢?有以下 3 种方法:

  1. 把需要在后台执行的命令加入 /etc/rc.local 文件,让系统在启动时执行这个后台程序。这种方法的问题是,服务器是不能随便重启的,如果有临时后台任务,就不能执行了。
  2. 使用系统定时任务,让系统在指定的时间执行某个后台命令。这样放入后台的命令与终端无关,是不依赖登录终端的。
  3. 使用 nohup 命令。

本节重点讲解 nohup 命令的用法。nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行。此命令的基本格式如下:

[root@localhost ~]# nohup [命令] &

注意,这里的‘&’表示此命令会在终端后台工作;反之,如果没有‘&’,则表示此命令会在终端前台工作。

例如:

[root@localhost ~]# nohup find / -print > /root/file.log &
[3] 2349
#使用find命令,打印/下的所有文件。放入后台执行
[root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out"
[root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out"
#有提示信息

接下来的操作要迅速,已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击否则 find 命令就会执行结束。然后我们可以退出登录,重新登录之后,执行“ps aux”命令,会发现 find 命令还在运行。

如果 find 命令执行太快,我们就可以写一个循环脚本,然后使用 nohup 命令执行。例如:

[root@localhost ~]# vi for.sh
#!/bin/bash
for ((i=0;i<=1000;i=i+1))
#循环1000次
do
echo 11 >> /root/for.log
#在for.log文件中写入11
sleep 10s
#每次循环睡眠10秒
done
[root@localhost ~]# chmod 755 for.sh
[root@localhost ~]# nohup /root/for.sh &
[1] 2478
[root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out"
#执行脚本

接下来退出登录,重新登录之后,这个脚本仍然可以通过“ps aux”命令看到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: nohup是一个Linux命令,用于在后台运行命令,即使用户退出或终端关闭,该命令也会继续运行nohup命令通常与&符号一起使用,以便将命令放入后台运行nohup命令的语法如下: nohup command [arg...] [> output.file] [&] 其中,command是要运行命令,arg是命令的参数,output.file是输出文件的名称,&符号表示将命令放入后台运行nohup命令通常用于长时间运行命令,例如备份、编译、下载等。 ### 回答2: nohup是一种在Linux后台运行命令的方式,通常用于在关闭终端时仍然能够保持程序运行。在Linux中,所有的命令运行时都会使用终端窗口,如果关闭窗口或者退出终端,那么命令也会随之退出。但是,通过使用nohup命令,可以将一个命令或脚本的输出重定向到指定的文件,因此不会因为关闭终端而终止运行。 使用nohup命令非常简单,只需要在命令或脚本前加上nohup,并在后面指定输出文件即可: nohup command > output.txt & 其中,command是要执行的命令或脚本,output.txt是要输出的文件,&符号表示使命令后台运行。此时,关闭终端也不会终止命令运行。 另外,如果想要杀死一个后台运行的进程,可以使用kill命令。可以通过ps命令查找进程的PID号,然后使用kill命令停止进程。例如: ps -ef | grep "command" 该命令将显示所有包含"command"关键字的进程。找到要停止的进程的PID号,然后使用kill命令停止进程: kill PID 此外,nohup命令还可以将进程的stdout/stderr输出到/dev/null(空设备节点),这样将不会生成任何输出文件。 nohup command > /dev/null 2>&1 & 以上命令将标准输出和错误输出重定向到空设备节点,不会产生输出文件,同时保持命令后台运行。 ### 回答3: nohupLinux中的一个命令,它用于在后台运行进程时,保证该进程不受终端断开的影响,从而使进程一直运行下去。其全称为“No Hang-Up”,意思是“不挂断”,通常用在需要长时间运行命令上,比如用来进行数据分析、数据处理、文件备份等任务。nohup命令的格式为: nohup command [arg] & 其中,command表示要执行的命令,[arg]表示命令的参数,&表示将该命令放入后台执行。 nohup命令的使用方法如下: (1)使用nohup命令后,命令的输出会被重定向到一个文件nohup.out中,因此可以不必担心在退出终端后进程被关闭,还可以通过查看nohup.out文件来了解进程的运行状态。 (2)nohup命令可以与&符号结合使用,以使进程在后台运行。在使用nohup命令时,可以将待运行命令括在一对引号之间,例如: nohup 'command arg1 arg2' & (3)如果要结束一个在后台运行nohup进程,可以使用kill命令,例如: kill -9 进程号 其中,进程号可以通过ps命令来查找。 需要注意的是,nohup命令并不能保证命令一定执行成功,它只是确保在命令执行过程中我们不必担心因为关闭终端而导致命令被中断。因此,在使用nohup命令时,需要对命令的执行结果进行监测,并在必要时采取相应措施。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值