nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向 输入报错信息保留

这篇具有很好参考价值的文章主要介绍了nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向 输入报错信息保留。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

后台运行命令:nohup nohup命令:nohup是不挂断的意思( no hang up)。如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令忽略所有挂(SIGHUP)信号,可以在你退出帐户/关闭终端之后继续运行相应的进程。 该命令的一般格式为:

nohup yourcommand &

# yourcommand:启动对象命令。可以跟该命令需要的各种参数。
# &是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出. nohup与&结合起来,可以实现不挂断的后台运行。

实现屏幕输出记录到日志文件

nohup yourcommand 2>&1 &

# 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
# 2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到日志文件中。


如果希望将日志输出到别的文件中,可以增加一个文件路径参数。如下:

nohup yourcommand >myout.log 2>&1 &

其中myout.log是保存输出的文件名称;

这是一条在Linux/Unix系统下的命令,用于在后台运行一个命令并将输出重定向到一个文件中。下面对每个部分进行解释:

nohup: 这是一个命令,意为"no hang up",用于让命令在后台一直运行,即使用户退出登录或终端关闭。
yourcommand: 这是你要在后台运行的命令。

2>&1: 这个部分是将标准错误输出重定向到标准输出,也就是将命令的错误信息也输出到文件中。
&: 这个符号是将整个命令放入后台运行,以便你可以在终端中继续输入其他命令,而不用等待该命令执行完毕。

综合起来,这条命令的作用是在后台运行一个命令,并将命令的输出(包括标准输出和标准错误输出)重定向到一个文件中,同时不会受到用户退出登录或终端关闭的影响。

你可以在命令行中使用重定向符号>2>来将命令的输出(包括标准输出和标准错误输出)重定向到不同的文件中。例如,你可以使用以下命令来将标准输出和标准错误输出分别重定向到不同的文件中:

yourcommand > stdout.log 2> stderr.log

上述命令会将yourcommand命令的标准输出重定向到stdout.log文件中,将标准错误输出重定向到stderr.log文件中。

如果你想要将标准输出和标准错误输出合并到一个文件中,可以使用&>重定向符号,例如:

yourcommand &> output.log

上述命令会将yourcommand命令的标准输出和标准错误输出合并到output.log文件中。

你也可以自定义输出文件的名称和路径,只需在重定向符号后面跟上文件名或文件路径即可。例如:

yourcommand > /path/to/stdout.log 2> /path/to/stderr.log

上述命令会将yourcommand命令的标准输出重定向到/path/to/stdout.log文件中,将标准错误输出重定向到/path/to/stderr.log文件中


实时监测日志输出内容命令:tail

tail 命令是nohup命令的好搭档。配合-f参数,可以实时监视向日志文件增加的信息。

tail -f myout.log

tail -f 等同于–follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

tail -F 等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

tailf 等同于tail -f -n 10,与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电。

监测程序是否在正常运行中:ps     或者    ps -ux ps命令也可以和nohup命令配合使用,用于显示当前进程 (process) 的状态。可以监视后台程序是否在正常运行中或者已经挂掉。

ps -ef|grep yourcommand
# -ef 参数显示所有命令,连带启动时的命令行参数

欢迎关注微信:生信小博士

如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

nohup ./test > myout.txt 2>&1 &

&

这种方法很简单,就是在命令之后加个“&”符号就可以了,如下:

./test &

这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:

./test >> out.txt 2>&1 &

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静了。

但是这样做要注意,如果Test程序需要从标准输入接收数据,它就会在那死等,不会再往下运行。所以需要从标准输入接收数据,那这种方法最好不要使用。

那现在程序在后台运行了,我们怎么找到它呢?很简单,有两种方法:

1. jobs命令

jobs命令可以查看当前有多少在后台运行。

jobs -l

此命令可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

2. ps命令

ps aux | grep test

nohup命令

在命令的末尾加个&符号后,程序可以在后台运行,但是一旦当前终端关闭(即退出当前帐户),该程序就会停止运行。那假如说我们想要退出当前终端,但又想让程序在后台运行,该如何处理呢?

实际上,这种需求在现实中很常见,比如想远程到服务器编译程序,但网络不稳定,一旦掉线就编译就中止,就需要重新开始编译,很浪费时间。

在这种情况下,我们就可以使用nohup命令。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

nohup ./test &

如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

nohup ./test > myout.txt 2>&1 &

这样一来,多管齐下,既使用了nohup命令,也使用了&符号,同时把标准输出/错误重定向到指定目录下。

使用了nohup之后,很多人就这样不管了,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。文章来源地址https://www.toymoban.com/news/detail-453059.html

到了这里,关于nohup 输出到指定文件 Linux nohup 实现命令后台运行并输出或记录到指定日志文件 设置日志结果文件名称 重定向到某个文件 标准误 标准错误输出定向 输入报错信息保留的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux命令:重复多次后台运行且不保存输出,查看命令对应的进程数量

    要在后台重复运行 Linux 命令并查看对应的进程数量,你可以使用循环结构和后台运行符号 `` 结合起来。以下是一个示例: ```bash for i in {1..3}; do     your_command /dev/null 21 done ``` 命令 `your_command /dev/null 21 ` 的含义如下: 1. `` 符号表示重定向输出。在这个命令中,`your_command` 的标

    2024年02月22日
    浏览(32)
  • linux 中的 nohup 命令(设置后台进程): nohup: ignoring input and appending output to ‘nohup.out’

    Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 在程序结尾来让程序自动运行。 比如我们要运行weblogic在后台: ./startWebLogic.sh 但是加入我们很多程序并不象weblogic一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 结尾。 但是如果终端关

    2024年02月04日
    浏览(30)
  • linux 后台运行程序命令

    这篇文章记录了两种linux程序后台运行的方式,两种方式略有区别,各位根据需求使用。 通过 cmd 命令后加 完成程序启动并在后台运行。 可通过重定向的方式把日志打印到指定文件中如cmd cmd.out 21 需要注意的是 当终端断开时,任务就会停止 默认情况下,该命令的所有输出都

    2024年02月16日
    浏览(33)
  • Linux输出内容到指定文件

    区别: 是把输出转向到指定的文件。注意:如文件已存在的话会重新写入,文件原内容不会保留。 是把输出附加到文件的后面,文件原内容会保留下来。 例子: 命令作用: 在输出信息的同时把信息记录到文件中。 例子: 命令作用: 将终端上所有内容记录到文件中 例子:

    2024年02月10日
    浏览(31)
  • Linux:Nohup命令详解

    这是最简单的方式,也是 linux 新手们很容易搞混淆的一个经典问题: 请回答以上命令的异同…… 具体不一一解释了。直接说答案,想要维持一个长期后台运行的 logstash,你需要同时在命令前面加 nohup,后面加 。 nohup 不挂断的运行,注意并没有后台运行的功能就是指,用n

    2024年02月11日
    浏览(47)
  • Linux nohup 命令详解

    nohup是Linux/Unix系统中非常有用的命令之一。它允许您在后台运行命令或脚本,并且在退出终端会话后仍然保持运行。这对于长时间运行的任务或进程非常有用,特别是当您需要离开终端但希望任务继续运行时。 nohup命令语法 nohup命令的基本语法如下: 您只需将要在后台运行的

    2024年02月14日
    浏览(32)
  • Linux nohup命令详解

    我们自己笔记本或台式机的显卡往往不能支持我们进行深度学习实验或大模型训练,因此我们往往使用SSH连接服务器然后去运行代码。 有的时候我们跑的程序需要跑几个小时甚至几天,这样我们就需要一直开着电脑挂着SSH;偶尔也会遇上网络断开,程序半途中止的情况。 所

    2024年03月12日
    浏览(28)
  • Linux中安装和使用nohup命令

    nohup 英文全称 no hang up(不挂起) 当我们把项目部署到服务器上时,只有一直保持linux终端的连接才能够运行项目,当我们把连接软件Xshell或者Finalshell连接工具关掉时,项目也就停止运行。只要用了nohup命令,我们的项目就能够一直运行了,此时就实现了我们需求。 例如:

    2023年04月25日
    浏览(23)
  • Linux shell 命令中nohup 、&、重定向的使用

    一、nohup 和 使用方法 1.1、 nohup (不挂断) nohup 是 no hung up 的缩写,意思是不挂断 。 使用 Xshell 等Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去连接,终端断开,脚本运行一半就意外结束了。这种时候,就可以用 nohup 指令来运行指令,即

    2024年02月22日
    浏览(30)
  • 关于jar包的命令:运行jar包时指定端口、直接修改jar包里的配置文件

    如下:指定端口为8081,不管jar包里面之前是指定了什么端口号,最终访问服务时还是以8081这个端口进行访问 vim进入jar包后,会有类似如下的的内容 在定位到具体某行(文件名)后,该文件会有提示,直接回车进入编辑模式,即可编辑了

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包