nohup命令输出日志_Linux命令之nohup/setsid/&

本文介绍了在Linux环境中,如何使用nohup、setsid及后台运行符号(&)来确保长时间运行的任务不受网络断开或终端关闭的影响。通过这些方法可以让进程忽略HUP信号,或在新的会话中运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nohup vs Setsid vs &

我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。解决方法:

  • 让进程忽略HUP(hangup)信号
  • 让进程运行在新的会话里,从而成为不属于此终端的子进程

Nohup: no-hangup 就是让提交的命令忽略hangup信号

NAME
       nohup - run a command immune to hangups, with output to a non-tty
SYNOPSIS
       nohup COMMAND [ARG]...
       nohup OPTION
DESCRIPTION
       Run COMMAND, ignoring hangup signals.

nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename2>&1"来更改缺省的重定向文件名。

nohup 实例:

c85043d09322d0aca1f13c10603b00b7.png
nohup 实例

setsid: setsid函数将创建新的会话,并使得调用setsid函数的进程成为新会话的领头进程。调用setsid函数的进程是新创建会话中的惟一的进程组,进程组ID为调用进程的进程号。

NAME
       setsid - run a program in a new session
SYNOPSIS
       setsid program [arg...]
DESCRIPTION
       setsid runs a program in a new session.

e330b481b11f3569977f361280b9daab.png
setsid 实例

注意上面的实例中我们的进程ID(PID)为43471 , 其父进程(PPID)为1 (也就是init进程ID),并不是当前终端的进程ID。

& : 可在结尾加上“&”来将命令同时放入后台运行。

b24bd8d467996e42812923f5c9f15690.png
& 使用实例

以上进程仍然能够收到HUP信号.我们知道,将一个或多个命名包含在“( )”中就能让这些命令在子 shell 中运行中,我们将&放入( )内:

17039891b47082aed9bf8bb249961e7a.png
( )与&结合实例

可见加上( )之后这些进程就会在新的会话中运行。

Linux查询CPU信息

lscpu

基本概念:

物理CPU数 - 主板上实际插入的CPU数量,可以数不重复的physical id 有几个(physical id)

CPU核数 - 单块CPU上面能处理数据的芯片组的数量,如双核、四核等(CPU cores)

逻辑CPU数 - 一般情况下,逻辑CPU数=物理CPU个数每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(简单来说,它可使处理器中的1颗内核如2颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑CPU=物理CPU个数每颗核数*2)

它们之间的关系 - 总核数 = 物理CPU个数 * 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数

查看物理CPU的个数:

$ cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

查看逻辑CPU个数:

cat /proc/cpuinfo |grep "processor"|wc -l

查看CPU核数:

cat /proc/cpuinfo |grep "cores"|uniq

查看CPU型号信息

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

截取指定行之间的日志到新的文件中

sed -n '开始行数,结束行数p' 待截取的文件 >> 保存的新文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值