alias
为一个命令体一个别名,简化操作
alias hi='ls -a';
父程序与子程序
登录shell后,就会产出一个bash的pid,在bash下执行命令也会产生一个子程序,成为子程序,继承父程序,子程序可以取得父程序的环境变量。
$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 2372 2369 0 80 0 - 1311 - pts/0 00:00:00 bash
0 T 500 2471 2372 0 80 0 - 2840 - pts/0 00:00:00 vim
0 R 500 2627 2372 0 80 0 - 1220 - pts/0 00:00:00 ps
实现原理:
- 系统先以 fork 的方式复制一个与父程序相同的暂存程序,这个程序不父程序唯一的差别就是 PID的不同! 但是这个暂存程序还会多一个 PPID 的参数,PPID 如前所述,是父程序ID。
- 暂存程序开始以exec的方式开始加载实际要执行的程序
- -
把程序放到后台中运行,避免ctrl+c时关掉
./mongod --dbpath=/data/db &
&表示程序在后台中执行。完成后系统会在终端打印提示信息。放入背景中的认为不可被ctrl + c掉。
将目前正在执行的程序丢到背景中:ctrl-z(暂停)
如果我们正在使用vi编辑某个文件,但是想不到是哪个文件。此时需不需要终止vi,而去进入前景中查询文件了。不需要,只需要按下ctrl-z
查看背景中执行的任务
jobs命令
-l :除了列出 job number 与指令串之外,同时列出 PID 癿号码;
-r :仅列出正在背景 run 癿工作;
-s :仅列出正在背景当中暂停 (stop) 癿工作。
[jiaxiangjuan@192 Desktop]$ jobs -l
[1]- 2446 Stopped vim ~/.bashrc
[2]+ 2458 Stopped find / print
[jiaxiangjuan@192 Desktop]$
其中[1],[2]代表工作号
将暂停背景工作拿到前景来处理
fg %工作号
[jiaxiangjuan@192 Desktop]$ fg %1
将暂停背景工作在背景中继续运行
bg %工作号
####管理背景中执行的任务
kill
kill -1 :重新读取参数的一次配置文件
kill -9:立刻强制删除一项工作
kill -15:以正常的程序方式终止一项工作
如果想要管理bash的工作控制,只需要执行 :kill -9 %工作号;
注:上文工作管理当中提到的『背景』是在终端机模式下可以避克 [crtl]-c 中断的一个情境, 并不是放到系统的背景去喔。当退出终端时,背景中的任务会被中断。at命令就在系统的背景中去执行的。
nohup命令
nohup 可以让你在脱机或注销系统后,还能够让工作继续运行。
nohup [命令或参数] //在终端机前景中工作
nohup [命令或参数] & //在终端机背景中工作
nohup并不支持bash内建的指令,指令必须是外部指令才行