bash前后台切换

本文介绍了Linux中如何管理后台进程,包括使用ctrl+z、fg、bg、jobs及&符号将命令切换至前后台执行。还详细讲解了nohup命令用于在用户退出后继续执行程序,并提到了nohup.out文件记录输出。此外,文章通过示例阐述了如何避免因窗口强制关闭导致进程结束。

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

ctrl+z fg bg jobs

bash挂了,bash下的子进程也会挂掉,哪个bash下的sshd只能在对应的bash下面查到

命令后台命令执行是挂在bash下的

进程启动之后,按任意键进入输入状态,输入exit正常退出用户,再关闭Xshell(切不可强制关闭窗口来退出用户!!!)可行

示例:

 /bin/sh /epm/Oracle/Middleware/Oracle_ODI1/oracledi/agent/bin/agent.sh -NAME=OracleDIAgent -PORT=8002

cd /epm/Oracle/Middleware/Oracle_ODI1/oracledi/agent/bin

sh agent.sh -NAME=OracleDIAgent -PORT=8002 

但是这样没有在后台启动;因此sh那一行代码需要修改:
前边加上nohup  后边加上&

nohup sh agent.sh -NAME=OracleDIAgent -PORT=8002 &

然后,进程启动之后,按任意键进入输入状态,输入exit正常退出用户,再关闭Xshell(切不可强制关闭窗口来退出用户!!!)可行

版权声明:本文为博主原创文章,转载记得加上我的地址即可~~ https://blog.youkuaiyun.com/ye1142262478/article/details/50628694

nohup 会在当前目录成一个nohup.out文件记录输出


[root@localhost ~]# pstree -a

systemd --switched-root --system --deserialize 21
  ├─NetworkManager --no-daemon
  │   ├─dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
  │   └─2*[{NetworkManager}]
  ├─auditd -n
  │   └─{auditd}
  ├─crond -n
  ├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  │   └─{dbus-daemon}
  ├─firewalld -Es /usr/sbin/firewalld --nofork --nopid
  │   └─{firewalld}
  ├─irqbalance --foreground
  ├─login     
  │   └─bash
  ├─lvmetad -f
  ├─master -w
  │   ├─pickup -l -t unix -u
  │   └─qmgr -l -t unix -u
  ├─polkitd --no-debug
  │   └─5*[{polkitd}]
  ├─rsyslogd -n
  │   └─2*[{rsyslogd}]
  ├─sshd
  │   ├─sshd 
  │   │   └─bash
  │   ├─sshd 
  │   │   └─bash
  │   │       └─sh touchfile.sh
  │   ├─sshd 
  │   │   └─bash
  │   ├─sshd 
  │   │   └─bash
  │   │       └─touchfile.sh ./touchfile.sh
  │   │           └─sleep 1

  │   └─sshd 
  │       └─bash
  │           └─pstree -a
  ├─systemd-journal
  ├─systemd-logind
  ├─systemd-udevd
  ├─tuned -Es /usr/sbin/tuned -l -P
  │   └─4*[{tuned}]
  └─vmtoolsd

      └─{vmtoolsd}


[root@localhost ~]# pstree -a
systemd --switched-root --system --deserialize 21
  ├─NetworkManager --no-daemon
  │   ├─dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...
  │   └─2*[{NetworkManager}]
  ├─auditd -n
  │   └─{auditd}
  ├─crond -n
  ├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  │   └─{dbus-daemon}
  ├─firewalld -Es /usr/sbin/firewalld --nofork --nopid
  │   └─{firewalld}
  ├─irqbalance --foreground
  ├─login     
  │   └─bash
  ├─lvmetad -f
  ├─master -w
  │   ├─pickup -l -t unix -u
  │   └─qmgr -l -t unix -u
  ├─polkitd --no-debug
  │   └─5*[{polkitd}]
  ├─rsyslogd -n
  │   └─2*[{rsyslogd}]
  ├─sshd
  │   ├─sshd 
  │   │   └─bash
  │   ├─sshd 
  │   │   └─bash
  │   │       └─sh touchfile.sh
  │   ├─sshd 
  │   │   └─bash
  │   ├─sshd 
  │   │   └─bash
  │   │       └─pstree -a

  │   └─sshd 
  │       └─bash
  ├─systemd-journal
  ├─systemd-logind
  ├─systemd-udevd
  ├─tuned -Es /usr/sbin/tuned -l -P
  │   └─4*[{tuned}]
  └─vmtoolsd
      └─{vmtoolsd}


Linux下的fg和bg命令是进程的前后台调度命令,即将指定号码(非进程号)的命令进程放到前台或后台运行。比如一个需要长时间运行的命令,我们就希望把它放入后台,这样就不会阻塞当前的操作;而一些服务型的命令进程我们则希望能把它们长期运行于后台。

进程前后台操作用到以下命令或按键:

Ctrl+C

终止并退出前台命令的执行,回到SHELL

Ctrl+Z

暂停前台命令的执行,将该进程放入后台,回到SHELL

jobs

查看当前在后台执行的命令,可查看命令进程号码

&

运行命令时,在命令末尾加上&可让命令在后台执行

fg N

将命令进程号码为N的命令进程放到前台执行,同%N

bg N

将命令进程号码为N的命令进程放到后台执行

fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的

一、& 最经常被用到

这个用在一个命令的最后,可以把这个命令放到后台执行

二、ctrl + z

可以将一个正在前台执行的命令放到后台,并且暂停

三、jobs

查看当前有多少在后台运行的命令

四、fg

将后台中的命令调至前台继续运行

如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

五、bg

将一个在后台暂停的命令,变成继续执行

如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

出处:https://blog.youkuaiyun.com/u012317833/article/details/39249395

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值