我是靠谱客的博主 紧张山水,最近开发中收集的这篇文章主要介绍Linux:如何在后台运行一个程序?setsidnohup&Ctrl + Zscreen,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我写了一个程序 xcutsvr,希望在后台运行,以便我退出登录时还能再服务器继续运行。

setsid

运行如下命令:

$ setsid xcutsvr

之后退出登录,程序仍在运行。重新登录进去,用 pstree -p 看一下:

在这里插入图片描述
我觉得这是最方便的一种方法。

命令说明

setsid命令子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用setsid来实现。

命令行或脚本中可以通过使用命令setsid来运行程序实现。setsid帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。

语法格式

setsid [参数]

常用参数:

参数说明
-c将控制终端设置为当前控制终端
-f总是 fork
-w等待程序退出,并使用相同的返回

参考实例

[root@linux265 ~]# setsid ping www.linuxprobe.com [root@linux265 ~]# ps -ef |grep www.linuxprobe.com root 31094 1 0 07:28 ? 00:00:00 ping www.linuxprobe.com root 31102 29217 0 07:29 pts/4 00:00:00 grep www.linuxprobe.com

与该功能相关的Linux命令

命令说明
popd从shell目录堆栈中删除记录
wait等待指令
script记录终端交互会话过程
mkinitrd建立ramdisk映像文件
xlsatoms列出原子成分
hash显示与清除命令运行时查询的哈希表
whatis查询命令执行功能
shopt设置控制shell行为变量的开关
break结束for while或until循环
command调用并执行指定的命令

nohup

命令如下:

$ nohup xcutsvr

运行后,当前终端无法继续操作了。关闭后,重新登入,用 pstree -p 查看,结果与 setsid 相同。区别是在 xcutsvr 所在文件夹生成了一个文件 nohup.out,据说这个文件用来保存 xcutsvr 原来的屏幕输出。但是我观察了一下,这个文件大小始终为 0 字节。

命令说明

nohup命令的全称为“no hang up”,该命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

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

语法格式

nohup [参数]

常用参数

参数说明
–help在线帮助
–version显示版本信息

参考实例

使用nohup命令在后台运行程序:

[root@linux265 ~]# nohup bash linux265.sh &

指定输出文件, 输出被重定向到linux265.com文件中:

[root@linux265 ~]# nohup command > linux265.com 2>&1 

与该功能相关的Linux命令:

命令说明
ldconfig动态链接库管理命令
sesearch查看SElinux策略
postconf显示main.cf配置参数的值
printenv显示指定的环境变量的值
at一次性定时计划任务
init切换系统运行级别
ip6tablesIPv6的防火墙命令
lastlog显示用户最近一次登录信息
lilo安装核心载入
iotop监视磁盘I/O状态

&

还可以在程序名后加 & 实现后台运行。

$ xcutsvr &

我试了一下,效果不好,因为进程在后台处于停止运行状态。

Ctrl + Z

如果程序已经在前台运行了,可以用 Ctrl+Z 键推到后台暂停运行。然后用 fg 命令调到前台继续运行。也即可用 bg 命令。

我试了半天,解决不了我的问题,放到后台程序就暂停了,没法用。放在这里做个备忘吧。

screen

据说这个命令可以模拟出多个终端。这个与我希望的不一样。我是希望退出登录后程序还能运行,这里我就不多说了。

最后

以上就是紧张山水为你收集整理的Linux:如何在后台运行一个程序?setsidnohup&Ctrl + Zscreen的全部内容,希望文章能够帮你解决Linux:如何在后台运行一个程序?setsidnohup&Ctrl + Zscreen所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部