centos后台运行程序(nohup+screen)

作者&投稿:仲长莎 (若有异议请与网页底部的电邮联系)
~

linux系统经常需要程序在后台运行,程序不随着会话的关闭或用户的退出而关闭。

有两种常用的后台运行程序的方式: nohup 和 screen 。

当前操作系统环境: centos7

(1)后台不挂起执行xxx.sh。标准输出、错误输出,输出到xxx.out文件

此种情况,程序会再后台执行, 退出用户 或关闭客户终端,不影响程序运行。如想关闭程序,可通过 kill 命令关闭。

(2)后台不挂起执行xxx.sh。标准输出、错误输出,均不输出

(1)输入输出重定向

linux环境下以下数字代表不同的含义:

默认情况下,标准输出、标准错误, 均会输出到控制台 。

默认所有的输出都是“标准输出”,除非将输出重定向到“标准错误”,才会出现“标准错误”输出

如 echo 'error msg' > &2 ,代表将输出结果 error msg 由 标准输出 重定向输出到 标准错误 中。

输出执行结果时,默认重定向的是标准输出的信息,如下,执行结果是一样的:

为什么错误输出到标准输出,写作 2>&1, 而不是写作 2>1 ?

因为: 2>1 表示将“标准错误”输出到文件 1 中,这里的 1 代表的是文件“1”,而不是标准输出。需写成 &1 ,表示为标准输出。

(2)&(后台执行)

命令 末尾 的 & 代表程序后台执行,执行完成后,仍然会将输出结果输出到指定的输出目标。

如只是简单在执行命令后加上&,程序每次执行输出, 仍然会将程序输出到控制台 (并不是全部执行完后才输出)。如下:

(3)nohup(不挂起)

使程序运行时不挂起, 不向 tty 输出信息。nohup 只是不将程序输出到前台,并不是完全在后台运行脱离当天会话,如果关闭会话,当前程序仍然会关闭。

常结合末尾的 & 一起使用。

如命令末尾不加上 & ,则当前会话窗口会等待运行的程序运行完毕,才可执行其他命令,如下:

上述命令,为执行test.sh(脚本见 9 测试脚本 ),并将 标准输出 重定向到 out.log 文件,标准错误重定向到 error.log 文件。

生成的日志文件如下:

screen(窗口管理器)可以创建后台会话窗口。退出当前会话后,后台会话窗口仍而在运行,可以随意切换到后台窗口中。

以下命令查看官方文档:

[root@w001 zhang]# screen -help
Use: screen [-opts] [cmd [args]]
or: screen -r [host.tty]

Options:
-4 Resolve hostnames only to IPv4 addresses.解析主机名为IPv4地址。
-6 Resolve hostnames only to IPv6 addresses.解析主机名到IPv6地址。
-a Force all capabilities into each window's termcap.强制所有功能进入每个窗口的termcap。
-A -[r|R] Adapt all windows to the new display width & height.使所有窗口适应新的显示宽度和高度。
-c file Read configuration file instead of '.screenrc'.文件读取配置文件,而不是'.screenrc'。
-d (-r) Detach the elsewhere running screen (and reattach here).断开其他正在运行的屏幕(并在此重新连接)。
-dmS name Start as daemon: Screen session in detached mode.名称启动作为守护进程:屏幕会话在分离模式。
-D (-r) Detach and logout remote (and reattach here).断开和注销远程(并在此重新连接)。
-D -RR Do whatever is needed to get a screen session.执行获取屏幕会话所需的所有操作。
-e xy Change command characters.修改命令字符
-f Flow control on, -fn = off, -fa = auto.流量控制on, -fn = off, -fa = auto。
-h lines Set the size of the scrollback history buffer.设置滚动历史缓冲区的大小。
-i Interrupt output sooner when flow control is on.当流控制打开时,中断输出的速度更快。
-l Login mode on (update /var/run/utmp), -ln = off.登录模式on (update /var/run/utmp), -ln = off。
-ls [match] or -list Do nothing, just list our SockDir [on possible matches].什么都不做,只是列出我们的SockDir[可能的匹配]。
-L Turn on output logging.打开输出日志记录。
-m ignore STY变量,创建一个新的屏幕会话。
-O Choose optimal output rather than exact vt100 emulation.选择最优输出,而不是精确的vt100仿真。
-p window Preselect the named window if it exists.窗口预选命名窗口,如果它存在。
-q Quiet startup. Exits with non-zero return code if unsuccessful.安静的启动。如果不成功,则使用非零返回码退出。
-Q Commands will send the response to the stdout of the querying process.命令将响应发送到查询过程的stdout。
-r [session] Reattach to a detached screen process.重新连接到一个分离的屏幕进程。
-R Reattach if possible, otherwise start a new session.如果可能,重新连接,否则启动一个新会话。
-s shell Shell to execute rather than shell。
-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>. 将此会话命名为。sockname而不是<pid>.<tty>.<host>。
-t title Set title. (window's name).标题设置标题。(窗口的名字)。
-T term Use term as term用于windows,而不是“screen”。
-U Tell screen to use UTF-8 encoding.告诉screen使用UTF-8编码。
-v Print "Screen version 4.01.00devel (GNU) 2-May-06".打印"屏幕版本4.01.00devel (GNU) 2-May-06"。
-wipe [match] Do nothing, just clean up SockDir [on possible matches].什么都不做,只是清理SockDir[可能的匹配]。
-x Attach to a not detached screen. (Multi display mode).连接到未分离的屏幕。(多显示模式)。
-X Execute <cmd> as a screen command in the specified session.在指定会话中执行作为屏幕命令。



daemonlinux
答:linuxfunction函数daemon的作用?linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。include intdaemon(intnochdir,intnoclose);1.daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2.当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3.当noclose为...

centos7安装网易云闪退
答:这种情况需要开发者进行解决。2、缓存垃圾过多平时在使用软件的过程中,会产生一些垃圾文件,如果长时间不清理会导致手机越来越卡,也会出现闪退状况。找到有问题的应用程序,清除数据或者缓存。(注:清除数据,会清除掉应用的个人设置、账户信息等。)3、手机后台运行程序过多很多机友经常没有真正退出一个...

8 Docker容器命令
答:运行与启动</ 要启动一个交互式容器,使用 docker run -it 命令,如示例所示:[root@docker1 ~]# docker run -it 831691599b88如果希望在后台运行容器并自动退出,可以使用 -d 参数,如下:[root@docker1 ~]# docker run -d centos给容器起个新名字,便于管理和识别,使用 --name 选项:[root...

docker命令教程
答:例2:在 container 中启动一个长久运行的进程,不断向stdin输出 hello world 。模拟一个后台运行的服务 docker常用参数:-d 后台运行容器,并返回容器ID;-c 后面跟待完成的命令 [root@xuegod63 ~]# docker run -d centos:latest /bin/sh -c while true;do echo hello world; sleep 1; done ...

linux系统有哪些快捷键
答:CentOS 6.4 中可以通过系统->首选项->键盘快捷键来设置快捷键,如图所示。例如可将运行终端的快捷键设为Ctrl+Alt+T。Ctrl + u 删除光标之前到行首的字符 Ctrl + k 删除光标之前到行尾的字符 Ctrl + c 取消当前行输入的命令,相当于Ctrl + Break Ctrl + a 光标移动到行首(ahead...

centos下查找目录下的所有文件中是否包含指定字符串
答:awk脚本:所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。awk脚本是由各种操作和模式组成。模式部分决定动作语句何时触发及触发事件。(BEGIN,END)动作对数据进行处理,放在{}内指明(print)(2)分隔符、域和记录awk执行时,其浏览域标记为$1,$2,...$n...

centos7卡在启动界面
答:如果你启动程序一直卡在启动页面,说明这程序已经启动异常,你要升级程序。

安装CentOS时鼠标异常
答:1.拔出鼠标再插上,有些时候USB供电不足,会有这种情况。2.是系统安装了什么软件在后台运行占用了较高的CPU或IO,导致机器没有响应,也可能是机器中毒。响应的方法是少运行程序或杀掉并卸载异常进程!3.启动和运行时占用内存较多引起的。可以用优化大师、清理助手等进行系统垃圾清理,对不经常用的软件...

docker常用命令
答:docker run -d [镜像名] 例如: docker run -d centos 但是有问题, docker ps 查询不到运行的容器 原因:docker容器用后台运行,就必须要有一个前台进程,docker发现没有应用,所以就自动停止 docker logs -tf --tail 10 [容器id]t的意思是时间戳,f保留日志打印窗口,tail持续打印,10打印最后10...

linuxdaemon命令linuxdaemon
答:dockerrun指定的命令如果不是那些一直挂起的命令(比如运行top,不断echo),就是会自动退出的。-d命令是设置detach为true,根据官方的文档,意思是让这个命令在后台运行,但并不是一直运行(我们在一个正常的LinuxTerminal中运行/bin/bash,运行完了也就完了,不会一直挂着等待响应的,所以确实没办法用daemon方式来跑/bin/...