前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux进阶命令-nohup&screen

Linux进阶命令-nohup&screen

作者头像
运维小路
发布2024-11-01 19:39:35
940
发布2024-11-01 19:39:35
举报
文章被收录于专栏:运维小路

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解:

Linux进阶命令-echo&date&alias

Linux进阶命令-top

Linux进阶命令-ps&kill

Linux进阶命令-sort&wc

Linux进阶命令-sed&split

Linux进阶命令-awk&uniq

Linux进阶命令-逻辑或&逻辑与

Linux进阶命令-重定向

Linux进阶命令-scp

Linux进阶命令-rsync

Linux进阶命令-rsync-daemon

Linux进阶命令-nohup&screen(本章节)

Linux进阶命令-lsof

Linux进阶命令-小结

由于部分程序是需要在前台启动,如果ssh连接中断或者使用ctrl+c就会以业务中断,这样就导致我们的应用的程序无法持续运行,今天我们就来介绍2个命令,均可以达到该目的。

nohup

nohup 是一个在 Unix 和 Linux 系统中使用的命令,用于在后台运行程序,并使得程序在用户注销或终端关闭时仍然继续运行。nohup 是 "no hang up" 的缩写,表示在用户退出终端后程序不受影响。

基本用法

代码语言:javascript
复制
nohup command [arguments] &

1.command 是你希望在后台运行的命令。

2.[arguments] 是该命令的参数(可选)。

3.&; 符号表示将命令放到后台执行。

详细示例

1.运行命令并在后台继续运行

代码语言:javascript
复制
nohup python my_script.py &

这个命令会启动 my_script.py 脚本,并且即使你关闭终端或者注销,脚本仍然会在后台继续运行。

2.重定向输出

默认情况下,nohup 会将命令的标准输出(stdout)和标准错误输出(stderr)重定向到当前目录一个名为 nohup.out 的文件中,如果长期使用则需要关注这个文件的大小。如果你希望将输出重定向到其他文件,可以这样做:

代码语言:javascript
复制
nohup command [arguments] > output.log 2>&1 &
nohup command [arguments] &> output.log &
#两种写法都可以达到同样的目的

这两种写法就是我们在前面讲过的Linux进阶命令-重定向里面介绍过的。

3.查看后台运行的任务

要查看后台运行的任务,可以使用 jobs 命令,或者 ps 命令来查找特定的进程:

代码语言:javascript
复制
jobs
#或者
ps aux | grep command

4.结束后台任务

要终止后台运行的任务,可以使用 kill 命令。首先找到任务的进程 ID(PID),然后用 kill 发送终止信号:

代码语言:javascript
复制
ps aux | grep command
kill PID

如果需要强制终止,可以使用 kill -9 PID。

screen

screen 是一个终端多路复用器,允许你在一个终端窗口中创建、管理和切换多个虚拟终端会话。它非常有用,当你需要长时间运行任务,或者希望在不同会话之间切换时。这个命令在最小化系统安装里面没有的,如果需要安装则可以使用下面的命令。

代码语言:javascript
复制
yum -y install screen

基本用法

1.启动 screen会话

代码语言:javascript
复制
screen
#这个创建一个新的会议,但是如果有多个则可能无法区分。
screen -S test_screen
#带上名字创建则更容易识别。

2.查看screen会话

代码语言:javascript
复制
[root@localhost ~]# screen -ls
There are screens on:
  16164.test_screen  (Attached)
  16113.pts-0.localhost  (Attached)
2 Sockets in /var/run/screen/S-root.

3.临时退出screen会话(可再次进入)

代码语言:javascript
复制
Ctrl+a+d
#这里只是退出会话,里面的执行的业务或者命令还在运行
#你还可以进来

4.永久退出screen会话(不可再进入)

代码语言:javascript
复制
Ctrl+d
#或者
exit
#无法在进入刚才创建的screen

5.进入临时退出的screen会话

代码语言:javascript
复制
screen -r session_id
#这里的id前面的数字编号
#所以创建的时候带上名字,否则多个id,你不知道那个是你想要进入的。

总结

  1. 无论是nohup还是screen都可以实现你关闭ssh连接以后,你让它运行的运行的业务它还是持续使用。
  2. nohup需要关注的就是它产生的日志文件,避免打满磁盘,尤其你你在根分区里面运行的nohup命令。
  3. nohup可能更适合需要持续长期运行的程序,screen则可能更适合短时间需要保持它不会因为意外关闭而导致中断的程序。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档