Linux Shell nohup命令用法(内含代码演示)
发布网友
发布时间:2024-09-27 03:40
我来回答
共1个回答
热心网友
时间:2024-10-18 14:38
在Unix/Linux环境中,若需要使程序在后台持续运行,我们通常会在程序末尾添加 & 符号。例如,要后台运行mysql,可以使用:/usr/local/mysql/bin/mysqld_safe –user=mysql &。然而,并非所有程序都如mysqld一样易于处理。这时,nohup命令就派上用场了。接下来,我们将介绍nohup命令的用法。
nohup /root/start.sh &
在shell中执行后,会看到以下提示:
[~]$ appending output to nohup.out
程序的标准输出会自动重定向到当前目录下的nohup.out文件,起到日志记录的作用。
但有时在这一步会遇到问题。当关闭终端后,进程会自动关闭。查看nohup.out文件可以看到,在关闭终端的瞬间,服务也自动关闭了。
咨询红旗Linux工程师后,他对此也表示困惑。在他的终端上执行后,启动的进程在关闭终端后依然运行。
在第二次演示时,我注意到我和他操作终端时的一个细节不同:他在nohup命令成功后,还需要按键盘任意键回到shell输入命令窗口,然后输入exit退出终端;而我每次在nohup执行成功后,直接点击关闭程序按钮关闭终端。因此,这时会断开该命令所对应的session,导致nohup对应的进程被通知一起shutdown。
这个细节有人和我一样没注意到,所以在这里记录下来。
附:nohup命令参考
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
nohup命令及其输出文件
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。
该命令的一般形式为:nohup command &
使用nohup命令提交作业
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs 查看任务。
使用 fg %n 关闭。
另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。
今天在linux上部署wdt程序,在SSH客户端执行./start-dishi.sh,启动成功,在关闭SSH客户端后,运行的程序也同时终止了。怎样才能保证在退出SSH客户端后程序能一直执行呢?通过网上查找资料,发现需要使用nohup命令。完美解决方案:nohup ./start-dishi.sh >output 2>&1 & 现对上面的命令进行下解释
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
操作系统中有三个常用的流:
一般当我们用 > console.txt,实际是 1>console.txt的省略用法;< console.txt ,实际是 0 < console.txt的省略用法。
下面步入正题:
nohup ./start-dishi.sh >output 2>&1 &
解释:
还等什么小编推荐自己的linuxC/C++语言交流群:【 1106675687】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!前100名进群领取,额外赠送一份价值199的C/C++、linux资料包含(视频教程、电子书、实战项目及代码)
Linux Shell nohup命令用法(内含代码演示)
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.o...
Load Port、SMIF
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
linux nohup命令
1、nohup命令简介:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 ( 表示”and”的符号)到命令的尾部。无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录...
用xshell远程连接linux服务器,sh命令启动一个服务后,如果关掉xshell,这 ...
语法:nohup Command [ Arg … ] [ & ]nohup放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进程也继续保持运行状态,一般配合&符号一起使用。如nohup command &。
linux后台执行命令:&和nohup的用法,确实很实用
nohup:使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出...
nohup不输出nohup.out日志信息
使用nohup运行程序:文件描述符 当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用:所以我们平时在执行shell命令中,都默认是从键盘获得输入,并且将结果输出到控制台上。但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向。比如我们将1指向文件,那么标准的...
linux命令后台运行
一、Shell支持作用控制,有以下命令:1.command让进程在后台运行2.jobs_l查看后台运行的进程3.fg%n让后台运行的进程n到前台来4.bg%n让进程n到后台去;PS:“n”为jobs查看到的进程编号。二、执行命令切换至后台在Linux终端运行命令的时候,在命令末尾加上符号,就可以让程序在后台运行root@Ubuntu$。/...
CentOS如何运行与控制后台进程?
1.nohup 顾名思义,nohup的用途就是让提交的命令忽略所有的hangup信号。使用方法:nohup COMMAND [ARG]...2.setsid 在一个新的会话中运行命令,从而可以避开当前终端发出的HUP信号。使用方法:setsid COMMAND [ARG]...3.可以结合()产生一个新的子shell并在这个子shell中将任务放置到后台运行,从而不...
linux中nohup和&有什么区别
shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。17.SIGCHLD 子进程结束时, 父进程会收到这个信号。如果父进程没有处理这个信号,也没有等待(wait)子进程,子进程虽然终止,但是还会在内核进程表中占有表项,这时的子进程称为僵尸进程。这种情况我们应该避免(父进程或者忽略SIGCHILD...
linux命令里面的nohup命令和 & 是一个意思吗?不挂断是什么意思?_百度...
1. nohupnohup 无疑是我们首先想到的办法。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号。让我们先来看一下 nohup 的帮助信息:NOHUP(1) User Commands NOHUP(1)NAMEnohup - run a command immune to hangups, with output to a non-ttySYNOPSISnohup COMMAND [ARG]...nohup OPTIONDESCRIPTIONRun...
能否在linux shell中挂起一个程序,退出终端后,重新登录再让程序恢复运...
不行,退出终端还能执行,只能nohup,就是不挂起的意思( no hang up)ctrl+Z、bg、fg、jobs这些退出终端后,进程就没了~想了个办法:先输入screen,在里面该干嘛干嘛,挂起进程,然后Ctrl+a d,退出当前Screen,exit退出终端 重新登录,screen -r,哈哈,我胡汉三又回来了~~~,bg fg都行 ,一点儿...