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(切不可强制关闭窗口来退出用户!!!)可行
nohup 会在当前目录成一个nohup.out文件记录输出
[[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(切不可强制关闭窗口来退出用户!!!)可行