bash前后台切换

时间:2024-04-07 17:47:14

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.csdn.net/ye1142262478/article/details/50628694

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

bash前后台切换

[[email protected] ~]# 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}


[[email protected] ~]# 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.csdn.net/u012317833/article/details/39249395

示例:

 /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(切不可强制关闭窗口来退出用户!!!)可行