linux环境下运行程序常用的nohup和&的区别
2023-09-11 14:16:59 时间
前言
复杂问题简单记,先了解一下概念,对于一般的小程序而言这两种启动方法应该用不上,如果程序瞬间的就结束了,是否挂起与是否后台也就没有了意义,所以标题中提到的方式常用来启动需要一直运行的程序,比如游戏服务器。
假如我们直接通过命令行./game_server
运行一个简单的游戏服务器,那么会发现这个运行程序霸占了整个命令窗口,此时,我们无法再运行其他的程序,所有的输入都变成了game_server的输入,而命令终端此时也只能输出game_server程序的输出信息了。
接着再来了解两个信号,针对于霸占了命令终端的game_server我们可以采用以下方式将其终止掉,使用Ctrl+C
组合键,实际上是给程序发送了SIGINT
信号,可以以直接关掉命令终端,这个进程也会死掉,实际上是给程序发送了SIGHUP
信号,而标题中的所说的两种方式就是针对于这两种信号的。
两种方式的区别
-
nohup
nohup
是no hang up
的缩写,就是不挂断的意思,忽略SIGHUP
信号,在关闭命令终端后程序依旧运行 -
&
&
是只后台运行,即忽略SIGINT
信号,也就是按Ctrl+C
不会终止程序,但是关闭命令行终端程序终止
总结
所以要想程序忽略SIGINT
和SIGHUP
两种信号需要两种表示方法一同使用,总结如下
命令 | 忽略信号 | 按Ctrl+C结果 | 关闭终端 | 标准输入 | 输出 |
---|---|---|---|---|---|
./game | 无 | 程序终止 | 程序终止 | 只能给game输入 | 终端输出 |
nohup ./game | SIGHUP | 程序终止 | 依旧运行 | 输入被忽略 | 输出到nohup.out文件 |
./game & | SIGINT | 依旧运行 | 程序终止 | 输入正常,终端可用 | 无输出 |
nohup ./game & | SIGINT、SIGHUP | 依旧运行 | 依旧运行 | 输入正常,终端可用 | 输出到nohup.out文件 |
相关文章
- 在Linux里设置环境变量的方法(export PATH)
- 【Linux】在linux上java工具jps jstat jinfo等命令找不到怎么办
- 查看Linux版本信息
- Linux iptables配置错误导致ORA-12535 & ORA-12170
- linux find 10天内改动过的文件
- linux中mail函数不能发送邮件
- Linux常见问题合集
- Linux - Troubleshooting
- linux(fedora 32):安装node/vue的运行环境(node v14.15.0)
- linux下载中心
- 【Linux基础】linux updatedb命令
- Linux四剑客详解——awk
- Linux nohup &使用 后台命令脱离终端运行
- linux chkconfig 和 systemctl 区别 & 对比
- linux vi 中按了ctrl+s后没法退出
- Linux 0.11-你的键盘是什么时候生效的?-14
- linux - 解压tgz 文件指令
- Linux命令
- Linux下通过md5sum生成MD5文件&校验MD5
- L70.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nc和ssh
- L63.linux命令每日一练 -- 第九章 Linux进程管理命令 -- runlevel、init和service
- L56.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- swapoff和sync
- linux内核radeon gpu源码解析2 —— 什么是drm
- Linux系统之静态路由配置
- Linux的时区修改方法
- Linux下CMake简明教程(五)正规一点的组织结构
- 02 从头开始atac项目 ubuntu20 install r4.2 Linux系统环境配置 服务器版本的rstudio r install in linux /ubuntu/centos
- Linux五个最牛视频编辑软件
- 64:权限提升-Linux定时任务&环境变量&数据库
- Linux nohup实现后台运行程序及查看(nohup与&)
- 安卓通过Linux Deploy安装linux系统