4-1.Linux中的进程
进程:已经启动的可执行程序的运行实例
PID 进程的ID
PPID 父进程的ID
ps 显示当前进程状态
-aux: 列出所有进程
-ef: 列出所有进程
-l: 列出和当前用户有关的进程
-u 用户:查看某一用户的进程状态
·top: 查看实时进程
R 该进程正在运行或等待运行
S 正在休眠但可以被唤醒
D 正在休眠,而且不能被唤醒,如果该进程被中断,可能会导致设备的异常状态
K 正在休眠,而且不能被唤醒,该进程可以被中断
T 进程停止,可以恢复
T 正在被调试的进程
Z 子进程在退出时向父进程发出信号,出PID外,所有资源全部释放
X 父进程获取了子进程的结构,子进程可以完全释放,该状态进程中是看不到的
进程优先级
1、<高优先级
2、n 低优先级
3、s 包含子进程
4、+ 位于后台的进程组
ps -aux参数解释
1、%CPU 占用CPU使用率
2、%MEM 占用的记忆体使用率
3、VSZ 占用的虚拟记忆体大小
4、RSS 占用的记忆体大小
5、TTY 终端的次要装置号码
6、STAT 该进程的状态
7、START 行程开始时间
8、TIME 执行时间
9、COMMAND 所执行的指令
4-2.Linux中的会话和作业
进程:Linux自身运行的独立的程序
交互进程:由一个shell启动的进程,可以在前、后台运行
批处理进程:是一个进程序列,和终端没有联系
监控进程(守护进程):Linux系统启动时,启动的进程,并且在后台运行
作业:一个正在执行的进程,而且作业可以包含一个或多个进程
作业控制:空难根治正在运行的进程的行为。如:挂起一个进程,等一会儿再执行。这样也好就可以在多个作业之间切换
&命令:在命令后面使用该符号,可以让命令在后台执行
jobs:可以查看正在后台运行的作业
-l:列出作业号和PID
-r:列出仅在后台运行的作业
-s:列出暂停的作业
sleep x 延迟x秒
案例:date;sleep 5;date
ctrl+c 终断
ctrl+z 挂起
fg %:%作业编号,将后台的命令调到前台来继续执行,不能再放回到后台
bg %:将后台暂停的命令继续执行,将前端送到后台
ps -j:显示当前作业进程信息
TGID:线程组ID号
SID:会话ID号
终断进程 kill:
kill -l:显示可以传递给Linux的所有信号
kill +编号控制进程
kill -9 PID:强制杀死一个进程
kill -15 PID:正常的方式终止一个进程
kill -2:和ctrl+c的操作是一样的
4-3.Linux中的服务控制
systemd 是所有进程的父进程
systemctl:用户管理各种类型的systemd对象,这些对象称为:单元
常用单元:.service(服务单元) .socket(套接字) .path(路径单元)
例如:systemctl status sshd.service
loaded单元单元配置文件处理 active(running正在运行、exited配置成功、waiting运行中,但正在等待事件)
inactive不运行 enable开机自启动 disabled开机不启动 static无法启动,但可以通过某一个已经启动的单元来启动
控制服务命令:
start 在系统中启动一项服务
stop 等待程序处理完毕后再stop
restart 直接关闭程序,再开启
reload 重新加载配置文件,进程PID不会变
enable 设置开机自启
disable 关闭开机自启
status 查看某一单元的状态
ssh:是一个协议 sshd:是一个进程 在协议后加d就是进程
4-4.Linux中的日志
日志:用于系统审核和故障排除
日志文件保存在/var/log目录中
/var/log/messages消息记录的日志
secure安全和身份验证的消息和日志
maillog与邮件服务器相关的日志
cron与定期执行任务相关的日志文件
boot/log记录和系统启动有关的日志
例:tail -f /var/log/secure //显示最后10行,如果有新的内容加入,那么会继续输出
4-5.Linux中的打包和压缩
打包程序:tar
有重名即覆盖
c:创建文档
t:列出文档内容
x:提取文档
f filename:要操作的存档的文件名
v:详细信息
例如:tar cf a.tar /etc/tmp/ 把tmp下的文件打包成a.tar(后缀名.tar可有可无)
tar tf a.tar 查看a.tar下的内容
压缩程序:
tar支持三种不同的压缩方式:
gzip:压缩速度最快,应用最广泛
bzip2:压缩成的存档文件小
xz:最新的方式,提供最佳的压缩率,压缩至最小,但速度慢
z用于gzip压缩:filename.tar.gz
j用于bzip2压缩:filename.tar.bz2
J用于xz压缩:filename.tar.xz
解压缩:
tar xf a.tar.bz2 解压a.tar.bz2压缩包
4-6.Linux中的计划作业–cron
cron:是一个进程,可以让linux周期性的执行一个命令
crontab:是一个命令,可以设置linux周期性的执行某一个命令
-u 设置某一个用户的周期性工作--root权限
-e 设置crontab的工作内容
-l 查阅crontab的工作内容
-r 移除所有的crontab的工作内容
若只移除一项,就用e去编辑
crontab的格式:
一行代表一个任务
minute hour day month week command
分钟 小时 日期 月份 星期几 要执行的命令
0-59 0-23 1-31 1-12 0-7
特殊符号代表含义
*:任何时刻都接受的意思,代表任何时候
,:分隔字段
-:代表一段时间范围
/n:n代表数字,也就是每隔n单位间隔的意思
例如:15,30,45 * * * * command代表每月每日每小时的15/30/45分的时候执行命令
10 7-10 * * * command代表的是每月每日的7点到10点的10分执行命令
/5(*/10) * * * * command带表每月每日每隔5分钟执行一次命令
例题:每天晚上10点提示用户去睡觉
0 10 * * * go to sleep
每分钟,查看/var/log/cron日志文件有没有发生过变化
tail /var/log/cron
当使用者使用crontab这个命令来创建工作排程之后,该项工作就会记录到/var/spool/cron/里去。而且是以账号来作为判别的
lewis用户使用 crontab 后, 他的工作会被纪录到/var/spool/cron/lewis中。另外,cron 运行的每一项工作都会被纪录到/var/log/cron这个日志文件中.
?
crond服务每分钟检测一次,所以 cron 会每分钟去读取一次/etc/crontab与/var/spool/cron里面的数据内容 ,因此,只要你编辑完/etc/crontab这个文件,并且将他储存之后,那么 cron 的配置就自动的会来运行了。
如果你修改完的crontab或者添加的crontab没有马上的执行起来,那么你可以用systemctl restart crond.service重启
4-7.输入输出重定向
>file 标准输出重定向到文件-覆盖
>>file 标准输出重定向到文件-追加
2> 标准错误重定向到文件-覆盖
2>> 标准输出重定向到文件-追加
2>/dev/null 标准错误重定向到回收站(清空,删除)
&>file 标准输出和标准错误重定向到文件-覆盖
>>file 2>&1 标准输出和标准错误重定向到文件-追加
配合计划任务
*/1 * * * * date >> /tmp/abc
管道符:|
作用:
1、承上启下:把上一个指令的输出作为下一个指令的输入来执行
2、搭配grep字符实现过滤功能
例如:ps aux | grep cron > abc
4-8.Linux中的通配符
通配符:由shell进行解析,一般用于匹配文件名
正则表达式:是一个字符匹配标准,可以匹配文本中的内容。一些命令工具按此标准实现字符匹配(如grep、sed等)。一般用于匹配文件中的内容
常用通配符:
* 匹配任意多个字符
? 匹配任意一个字符
[...] 匹配中括号内出现的任意一个字符
[!...] 不匹配中括号内出现的任意一个字符
4-9.Linux中的正则表达式
字符匹配:
. 匹配任意单个字符 cat abc | grep c.t
* 匹配其前面一个在字符出现任意次 cat abc | grep c*
? 匹配其前面的字符1次或0次
+ 匹配其前面一个字符出现至少一次(在扩展正则表达式中)
位置匹配:
^ 锚定行首
$ 锚定行尾
\<或\b 锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b 锚定词尾,其前面的任意字符必须作为单词尾部出现
\B 非单词的开头或结尾
^$ 空白行
\ 通常用于打开或关闭后续字符的特殊含义
特殊类字符:
[:alnum:] 任何字母和数字
[:alpha:] 任何字母
[:cntrl:] 控制字符
[:digit:] 任何数字
[:graph:] 匹配打印字符
[:lower:] 小写字母
[:print:] 可打印字符
[:punct:] 标点符号
[:space:] 空白字符
[:upper:] 大写字母
[:xdigit:] 任何16进制的数字
分组:
(ab)* 匹配ab这个分组出现任意次
\1 引用第一个左边以及与之对应的右边所包括的所有内容 同理:\2,\3...
4-10.Linux中的查找与替换
grep 只能查找文件中的内容
sed 可以查找,然后替换或插入想要的内容
a 新增 在目前的下一行
d 删除
i 插入 在新一行的上一行
p 列印
s 取代
例题:
1、删除/tmp/abc文件中的第2至5行的内容
sed '2,5d' /tmp/abc
2、在第2行后面添加123456这一行
sed '2a 123456' /tmp/abc
3、在文件的最后一行的前面添加123456
sed '$i 123456' /tmp/abc //利用正则表达式锚定行尾
4、将文件中的cat全部替换成dog
sed 's/cat/dog/' /tmp/abc
sed不会对原文件进行修改,若要修改加-i
4-11.Linux中的find
用法:find [路径] [命令参数] [表达式]
-name"文件名" 查找指定名称的文件
-user 用户名 查找指定用户拥有的文件
-group 组名 查找指定组拥有的文件
-mtime n 查找在N天前被修改过的文件
-atime n 查找在N天前被访问过的文件
-type d/f/b/l/p 查找指定类型的文件
-empty 查找为空的文件
-size 按容量大小查找
-perm mode 查找指定属性的文件
-exec command{} \; 查找指定的文件并执行指定的命令
-newer 文件名 查找比指定文件新的文件
例题:
1、目录/var下查找所有3天内被修改过的文件
find /var -mtime -3
2、目录/var下查找所有3天前被修改过的文件
find /var -mtime +3
3、在/var目录下查找大于5M的文件
find /var -size +5M 小于5M用-5M
4、在/var目录下查找大于2M的文件的详细信息
find /var -size +2M -exec ls -l {} \;
5、将/var下大于5M的文件及目录拷贝到/tmp/abc下
find /var -size +5M -exec cp -ar {} /tmp/abc \;