进程
gawk
实现和awk
相同的功能,文本字段处理alias awk='gawk'
别名,但每个用户都要使用这个代码l
开头链接,链接文件- 索引节点记录信息,地址指针指向文件所保存的数据块,对数据块读写;
s19@GOJ:~$ which awk
/usr/bin/awk
s19@GOJ:~$ ls -l /usr/bin/awk
lrwxrwxrwx 1 root root 21 12月 21 2018 /usr/bin/awk -> /etc/alternatives/awk
s19@GOJ:~$ ls -l /etc/alternatives/awk
lrwxrwxrwx 1 root root 13 12月 21 2018 /etc/alternatives/awk -> /usr/bin/gawk
-
ln
创建硬链接 -
-f
强制创建链接文件,不管原来有没有 -
ln -f /tmp/chapter3 chapter3.hard
文件内容一样 -
ln -s
软链接 -
软链接是文件路径信息,所以如果删除原文件,找不到文件。删除的时候Link count-1 索引节点如果>0则不释放
s19@GOJ:~$ echo world >> /tmp/chapter3
s19@GOJ:~$ cat /tmp/chapter3
ls -i
列出索引节点号- 不能跨文件系统,不能对目录创建硬链接,so创建软链接
- 硬链接的文件类型是普通文件,只有软链接是链接文件
- 软链接单独为文件分配一个索引节点,硬盘上分配存储空间,存储它指向文件的文件名字,而硬链接不会。软链接两次硬盘读取。
[user@localhost Desktop]$ ls -i a.s
663653 a.s
[user@localhost Desktop]$ ls -i a
663647 a
[user@localhost Desktop]$ ls -i a.ha
663647 a.ha
s19@GOJ:~$ ln -s /tmp/chapter3 chapter3.soft
s19@GOJ:~$ ls -l chapter3.soft
lrwxrwxrwx 1 s193213 stu 13 5月 25 16:12 chapter3.soft -> /tmp/chapter3
ps
ps
表示查看所有终端执行进程-l
显示详细信息,-e
显示所有信息- PID进程ID(唯一标识符)
- TTY 该进程在哪个终端中运行
- TIME 进程使用的CPU时间
- S 表示进程状态是等待态,R是运行态
- UID表示哪个用户创建的
- FPID 副进程ID
- PRI优先级
- NI改变过优先级的进程的占用CPU的百分比
- ADDR地址 SZ占用内存 WCHAN 等待
s19@GOJ:~$ ps
PID TTY TIME CMD
14292 pts/53 00:00:00 bash
14609 pts/53 00:00:00 ps
s19@GOJ:~$ ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1968 14292 14291 0 80 0 - 6958 wait pts/53 00:00:00 bash
0 R 1968 14817 14292 0 80 0 - 8119 - pts/53 00:00:00 ps
#nice 调整进程执行的优先级
s19@GOJ:~$ nice -n 10 ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1968 14292 14291 0 80 0 - 6958 wait pts/53 00:00:00 bash
0 R 1968 14839 14292 0 90 10 - 8119 - pts/53 00:00:00 ps
s19@GOJ:~$ nice -n -10 ps -l
nice: 无法设置优先级: 权限不够
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1968 14292 14291 0 80 0 - 6958 wait pts/53 00:00:00 bash
0 R 1968 14879 14292 0 80 0 - 8119 - pts/53 00:00:00 ps
- 脚本文件
- 二进制文件
ps -l
进程的详细信息ps -u
和用户相关的进程ps -e
表示所有进程的信息s19@GOJ:~$ ps -e |grep nginx|wc -l
有多少进程为用户提供网页服务pstree
查看进程树,systemd是所有进程的根进程top
查看系统健康状态 默认每3秒更新- 可以获得用户输入的进程交前台进程,只有一个
/tmp/count
前台进程,/tmp/count &
后台进程fg
后台进程切换到前台 cirl+c中断
s19@GOJ:~$ /tmp/count >/dev/null &
[1] 21869
s19@GOJ:~$ jobs
[1]+ 运行中 /tmp/count > /dev/null &
s19@GOJ:~$ ps
PID TTY TIME CMD
20652 pts/56 00:00:00 bash
21869 pts/56 00:00:00 count
21895 pts/56 00:00:00 ps
s19@GOJ:~$ jobs -l
[1]+ 21869 运行中 /tmp/count > /dev/null &
s19@GOJ:~$ /tmp/count >result &
[2] 22152
s19@GOJ:~$ ps
PID TTY TIME CMD
20652 pts/56 00:00:00 bash
21869 pts/56 00:00:00 count
22152 pts/56 00:00:00 count
22156 pts/56 00:00:00 ps
s19@GOJ:~$ jobs
[1]- 运行中 /tmp/count > /dev/null &
[2]+ 运行中 /tmp/count > result &
s19@GOJ:~$ tail -f result
s19@GOJ:~$ jobs
[1]- 运行中 /tmp/count > /dev/null &
[3]+ 已停止 /tmp/count > result
把进程放入后台/恢复
两种放入后台的方式
- 在命令后面
&
,放入后台后仍然运行。 cirl+z
放入后台以后暂停进程,后续可以继续。
- 后台命令可以
fg %工作号
恢复到前台[注意工作号和PID的区别] bg %工作号
把命令放到后台,如果该命令和前台有交互,是不能回复到后台运行的。后面不加就是将后面带“+”的命令默认恢复。jobs
查看后台工作状态- 左边第一列是工作号/任务号,“+”表示最近一个放入后台的工作,也是工作回复时,默认回复的工作;“-”表示倒数第二个放入后台的工作。
s19@GOJ:~$ jobs
[1] 运行中 /tmp/count > result &
[2]- 运行中 /tmp/count > result &
[3]+ 已停止 top
s19@GOJ:~$ fg %2
/tmp/count > result
^C
daemons
进程以d结尾,sshd为大家提供远程登录- -atd定时用户;
s19@GOJ:~$ date ; echo "hello" >result
2021年 06月 01日 星期二 16:22:58 CST
只有hello被重定向
异常终止
- 终止前台:cirl+c;终止后台:使用kill命令或是使用fg转到前台,然后终止
- 进程接受信号后的三种行为:(1)接受内核规定的默认动作;(2)忽略该信号;(3)截获该信号并且执行用户定义的动作。
- 进程内部信号;外部信号
- 默认15号信号——软信号;1——挂断;2——终止前台信号;3——退出;9——强制终止
- kill也支持作业号
kill -9 %1 %3
可以终止作业号为1和3的进程 kill -1 22354
关闭进程,重读配置文件后重启kill -9 22368
强制杀死进程try
自定义;不用默认- 父进程退出时给每个子进程发送kill -l;子进程默认收到后退出
s19@GOJ:~$ ps
PID TTY TIME CMD
20652 pts/56 00:00:00 bash
21869 pts/56 00:00:00 count
22338 pts/56 00:00:00 count
23220 pts/56 00:00:00 ps
s193213@GOJ:~$ kill 20652 21869
s19@GOJ:~$ jobs
[1]- 已终止 /tmp/count > /dev/null
[3]+ 已停止 /tmp/count > result
s19@GOJ:~$ /tmp/neverdie &l
[6] 23436
l:未找到命令
s19@GOJ:~$ jobs -l
[3]+ 22338 停止 /tmp/count > result
[4] 23417 运行中 /tmp/neverdie &
[5] 23430 运行中 /tmp/neverdie &
[6]- 23436 运行中 /tmp/neverdie &
s19@GOJ:~$ kill 23436
s19@GOJ:~$ I won't Die!!!
s19@GOJ:~$ jobs -l
[3]+ 22338 停止 /tmp/count > result
[4] 23417 运行中 /tmp/neverdie &
[5] 23430 运行中 /tmp/neverdie &
[6]- 23436 运行中 /tmp/neverdie &
s19@GOJ:~$ kill 23436
s19@GOJ:~$ I won't Die!!!
^C
s19@GOJ:~$ kill -9 23430
s19@GOJ:~$ jobs
[3]+ 已停止 /tmp/count > result
[4] 运行中 /tmp/neverdie &
[5] 已杀死 /tmp/neverdie
[6]- 运行中 /tmp/neverdie &
killall [o] [信号] 进程名
全部终止或按照进程名杀死进程nohup
执行命令并且忽略挂断信号,意味着当退出系统或者通过kill发送1号(挂断)信号时不终止at
在什么时候输入命令,计划任务
s19@GOJ:~$ at 23:59
warning: commands will be executed using /bin/sh
at> backup
at> /tmp/count
at> <EOT>
job 5 at Tue Jun 1 23:59:00 2021
s19@GOJ:~$ at -l
5 Tue Jun 1 23:59:00 2021 a s193213
s19@GOJ:~$ at -c5
at -d 5
删除计划任务crontab
缓冲和缓存
- 缓存是用来加速数据,从硬盘中读取的,缓冲是用来加速数据写入硬盘的。
系统定时任务
命令的顺序和并行执行
- 语法:命令1;命令2
- 用途:顺序执行命令1;命令2[串行]
- 如果命令后面加&,则使得同一命令行并行执行,以&结尾的命令会在后台执行
- 最后一个&和之前的&之间的所有命令使用1个进程(p242)
- 可以用()来分割命令组进程
s19@GOJ:~$ date;echo hello
2021年 06月 06日 星期日 15:53:11 CST
hello
s19@GOJ:~$ date& echo hello&uname;who
[1] 23972
[2] 23973
hello
2021年 06月 06日 星期日 15:51:22 CST
Linux
[1]- 已完成 date
[2]+ 已完成 echo hello
s19 pts/6 2021-06-06 15:23 (10.173.80.210)
s19 pts/9 2021-06-06 15:50 (10.173.80.209)
s19@GOJ:~$ (date; echo hello);who
2021年 06月 06日 星期日 16:00:27 CST
hello
s19 pts/6 2021-06-06 15:23 (10.173.80.210)
s19 pts/9 2021-06-06 15:50 (10.173.80.209)
s19@GOJ:~$ uname -a
Linux GOJ 4.15.0-66-generic #75-Ubuntu SMP Tue Oct 1 05:24:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
s19@GOJ:~$ uname -r
4.15.0-66-generic
s19@GOJ:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic