概述
我写了一个程序 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 | 切换系统运行级别 |
ip6tables | IPv6的防火墙命令 |
lastlog | 显示用户最近一次登录信息 |
lilo | 安装核心载入 |
iotop | 监视磁盘I/O状态 |
&
还可以在程序名后加 & 实现后台运行。
$ xcutsvr &
我试了一下,效果不好,因为进程在后台处于停止运行状态。
Ctrl + Z
如果程序已经在前台运行了,可以用 Ctrl+Z 键推到后台暂停运行。然后用 fg 命令调到前台继续运行。也即可用 bg 命令。
我试了半天,解决不了我的问题,放到后台程序就暂停了,没法用。放在这里做个备忘吧。
screen
据说这个命令可以模拟出多个终端。这个与我希望的不一样。我是希望退出登录后程序还能运行,这里我就不多说了。
最后
以上就是紧张山水为你收集整理的Linux:如何在后台运行一个程序?setsidnohup&Ctrl + Zscreen的全部内容,希望文章能够帮你解决Linux:如何在后台运行一个程序?setsidnohup&Ctrl + Zscreen所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复