标签:control hup 之间 技术 内存管理 mst 操作系统 ons dev
内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能
进程相关:进程的创建(fork-exec)-->进程优先级(pri(0-139),nice)-->进程内存(Page frame)-->IPC(Inter Process Communication)-->进程类型(daemon,用户进程)-->进程状态-->进程分类(CPU-Bound,IO-Bound)
进程查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup,lsof,fuser
程序 (program):
通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;
进程 (process):
程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。
我们知道我们登录linux系统都是执行的/bin/bash,然后系统依据UID/GID (/etc/passwd) 给我们分配一个PID,然后由进程衍生出来的其他进程在一般状态下,也会沿用这个进程的相关权限的!这也是为什么linux能够为每个用户创建一个独立的环境的原因。在你登录系统的那一刻,就决定了你的操作权限。
fork-and-exec:linux系统中进程都会藉由父进程以复制 (fork) 的方式产生一个一模一样的子进程, 然后被复制出来的子进程再以 exec 的方式来执行实际要进行的程序,最终就成为一个子进程的存在。
ps:第一个 bash 的 PID 与第二个 bash 的 PPID 都是2197啊, 因为第二个bash 是来自于第一个所产生的嘛!
当我们登录到linux系统时,就意味着我们接下来的每个工作都是目前 bash 的子进程,亦即彼此之间是有相关性的。 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的bash !
什么情况下使用job control:
管理方法:
示例:
#!/bin/bash /bin/sleep 500s /bin/echo "I have slept 500 seconds." ...... [root@node1 test]# chmod a+x sleep500s.sh [root@node1 test]# nohup ./sleep500s.sh & [1] 2733 [root@node1 test]# nohup: ignoring input and appending output to `nohup.out‘ [root@node1 test]# exit logout
退出当前tty后,再进行登录,通过pstree查看 (./sleep500s.sh &)
[root@node1 ~]# pstree init─┬─abrtd ├─acpid ├─atd ├─auditd───{auditd} ├─console-kit-dae───63*[{console-kit-da}] ├─crond ├─dbus-daemon ├─hald─┬─hald-runner─┬─hald-addon-acpi │ │ ├─hald-addon-inpu │ │ └─hald-addon-rfki │ └─{hald} ├─login───bash ├─master─┬─pickup │ └─qmgr ├─5*[mingetty] ├─rsyslogd───3*[{rsyslogd}] ├─sleep500s.sh───sleep ├─sshd───sshd───bash───pstree └─udevd───2*[udevd] [root@node1 test]# ls nohup.out sleep500s.sh
ps:由于我们的程序最后会输出一个讯息,但是 nohup 与终端机其实无关了, 因此这个讯息的输出就会被导向『~/nohup.out 』
标签:control hup 之间 技术 内存管理 mst 操作系统 ons dev
原文地址:http://www.cnblogs.com/chbo/p/7064861.html