Linux系统不停止服务,清空nohup.out文件

Linux系统不停止服务,清空nohup.out文件,第1张

用途:LINUX命令用法,不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

例子: nohup /startWeblogicsh & 意思是即使退出ssh界面,命令仍然在后台执行,并且打印过程日志到nohupout,当然也可以将nohupout的输出转向到其他文件,高级应用请参考扩展阅读。

如上文所述出现了超大号的文件简直是令人讨厌的事情,而且nohupout会一直一直自己增长下去,如果你的服务器硬盘不给力的话,很容易把应用也挂掉(硬盘没空间 ,啥都玩不转),但是又不能一味的直接删。因为直接删除,可能会造成应用无法打印后续的错误日志,该问题常见于weblogic服务器,jboss服务器等这些大型中间件,这个在生产环境上要尤为注意。

可以使用以下两种方法实现: 不停止WEB服务就可以清空nohupout的命令 。

不用担心网上所说的性能问题,通常2/3 个G的文件都是1-2秒执行完毕

以下是定义日志打印级别,除了高于级别2的告警信息记录到log文件外,其余直接不记录

可以用来指定需要重定向的标准输入或输出。例如,将某个程序的错误信息输出到log文件中:/program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

在linux *** 作系统中从后台一直运行某个程序的方法,就是使用nohup命令了。

Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。

比如要运行mysql在后台:

复制代码

代码如下:

/usr/local/mysql/bin/mysqld_safe

–user=mysql &

但是加入很多程序并不象mysqld一样做成守护进程,可能程序只是普通程序而已,一般这种程序使用 &

结尾,但是如果终端关闭,那么程序也会被关闭。

为了能够后台运行,可以使用nohup这个命令,比如有个testphp需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:

复制代码

代码如下:

nohup /root/testphp &

在shell中回车后提示:

[~]$ appending output to nohupout

原程序的的标准输出被自动改向到当前目录下的nohupout文件,起到了log的作用。

但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,查看nohupout可

以看到在关闭终端瞬间服务自动关闭。

咨询红旗Linux工程师后,他也不得其解,在我的终端上执行后,他启动的进程竟然在关闭终端后依然运行。在第二遍给我演示时,我才发现我和他 *** 作终端时的一个细节不同:他是在当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。这个细节有人和我一样没注意到,所以在这儿记录一下了。

附:nohup命令参考

nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup

命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohupout 文件中。如果当前目录的 nohupout

文件不可写,输出重定向到 $HOME/nohupout 文件中。如果没有文件能创建或打开以用于追加,那么 Command

参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

退出状态:该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。

127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

nohup命令及其输出文件

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思(

no hang up)。

该命令的一般形式为:

复制代码

代码如下:

nohup command &

使用nohup命令提交作业

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohupout的文件中,除非另外指定了输出文件:

复制代码

代码如下:

nohup command > myoutfile 2>&1

&

在上面的例子中,输出被重定向到myoutfile文件中。

使用 jobs 查看任务。

使用 fg

%jobnumber 是将任务拿到前台执行,拿到前台后如果要关闭这个任务按Ctrl+c组合键即可,但如果要暂停这个任务可以按Ctrl+z组合键这时就会将任务置于暂停状态。

[root@wangdm ~ 22:51 #81]# jobs

[2]+ Stopped dd

if=/dev/zero of=/dev/null bs=8k count=100000000

[3]- Stopped

dd if=/dev/zero of=/dev/null bs=8k count=100000000

如果想要暂停的任务继续在后执行可以使用 bg %jobnumber这样暂停后的任务继续在后台运行状态会变为running

在Linux远程运行JAR包时,是不能关掉窗口程序的,否则程序也会终止。其中nohup

表示后台运行,关闭窗口后也也继续执行,&意思是终端连接的时候后台运行,终端断了进程也会停。

具体解决方法是使用nohup命令,在窗口程序的前面加上nohup,程序的后面加上&,这样程序就会一直执行直到结束,而不会因为关闭窗口程序而停了。

例子,比如:nohup

php

spiderphp

&回车,然后提示一堆东西,再次回车,回到shell界面。这就可以了。

还有一个问题:程序在执行中会输出一些信息,如果后台执行的话,这些信息是不是没法看了?(比如:程序执行出错终端,想看看报错信息之类的)。使用了nohup命令后,会在当前目录下生成一个nohupout的日志文件,记录的就是命令的输出。

进程组(process group):

      一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。

会话期(session):

      一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

1 挂断信号(SIGHUP)默认的动作是终止程序。

2 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。

3 如果会话期首进程终止,则该信号发送到该会话期前台进程组。

4 一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。

5 因此当网络断开或终端窗口关闭后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。

      如果我们可以忽略SIGHUP信号,关掉窗口应该就不会影响程序的运行了。nohup命令可以达到这个目的,如果程序的标准输出/标准错误是终端,nohup默认将其重定向到nohupout文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号,还需要使用标记&把它放在后台运行。

用xshell远程连接linux服务器,用nohup命令来执行,才能不让服务停掉。

如:nohup testsh &

nohup 命令

用途:不挂断地运行命令。

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohupout 文件中。如果当前目录的 nohupout 文件不可写,输出重定向到 $HOME/nohupout 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

使用远程连接 *** 作都是在主机上的,指令发送到主机后 主机作为执行方不是xshell 作为执行方,不存在你说的情况,你只要发送安装命令的那一刻除非手动强制终止不然是无法取消的。

fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令

一、&

加在一个命令的最后,可以把这个命令放到后台执行,如

watch -n 10 sh testsh & #每10s在后台执行一次testsh脚本

二、ctrl + z

前台进程的挂起。可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行。

后台进程的挂起:

在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;

在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;

当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;

三、jobs

查看当前有多少在后台运行的命令

jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;

注意:jobs只能查看当前xshell连接服务器窗口创建的任务。如果你并没有用nohup启动后台任务,那么就没有显示。一般地,如果后台是springboot,jar包,那么command名称为java。如果前端是nodejs打包,那么就是npm。

四、fg

将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber将选中的命令调出。%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(是命令编号,不是进程号pid)

五、bg

将一个在后台暂停的命令,变成在后台继续执行,终端还能继续接受命令。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(是命令编号,不是进程号pid)

理解概念:当前任务

如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]” 的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务

六、kill

后台进程的终止:

法子1:通过jobs命令查看job号(假设为num),然后执行kill %num

法子2:通过ps命令查看job的进程号(PID,假设为pid),然后执行kill -9 pid

前台进程的终止:Ctrl+c

七、nohup

如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

ps -aux | grep “testsh” #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分

八、kill的其他作用

kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。

SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。

以上就是关于Linux系统不停止服务,清空nohup.out文件全部的内容,包括:Linux系统不停止服务,清空nohup.out文件、linux怎么查询nohup的进程、linux远程运行jar包 关闭窗口后程序就停了,怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9664031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存