Linux中的进程:
进程:已经启动的可执行程序的运行实力
1、PID: 进程的ID(每一个新进程都有一个唯一的PID)
2、PPID:父进程ID(有可能多个子进程公用一个该父进程)
3、任何一个进程都可以创建一个子进程
4、在redhat 7以上,所有进程的父进程:systemd
ps命令
参数:
-aux列出所有进程 , ps -aux [ps aux:显示用户u代表user]
-ax 列出所有进程, ps -ax[ps ax]
-ef 列出所有进程, ps -ef
-l 列出和当前用户有关的进程 ps -l
-u 接用户,查看某一用户的进程状态ps -u hudechao
top 可以查看实时的进程状态
top -p {PID} 可查看具体的PID进程的实时状态
使用ps -l查看到:(或ps -aux)
4 S 0 3606 3601 0 80 0 - 29010 wait pts/0 00:00:00 bash
0 R 0 3868 3606 0 80 0 - 37233 - pts/0 00:00:00 ps
进程的各状态:
运行中:
R:该进程正在运行或等待运行
睡眠:
S:正在休眠但是可以被唤醒
D:正在休眠,而且不可以被唤醒,该进程被中断,可能会导致设备的异常状态
K:正在休眠,而且不可以被唤醒,该进程可以被中断
已停止:
T:进程被停止,但是可以通过其他进程来进行恢复
T:正在被调试的进程
僵停:
Z:子进程在退出时向父进程发出信号,除PID外,所有资源全部释放
X:父进程获取了子进程的结构,子进程可以完全释放,该状态进程中是看不到的
进程优先级:
n低优先级
s包含子进程
+位于后台的进程组
ps -aux参数解释:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 13:07 0:00 [kthreadd]
1、%CPU:占用的CPU使用率
2、%MEM:占用的记忆体使用率
3、VSZ:占用的虚拟记忆体大小
4、RSS:占用的记忆体大小
5、TTY:终端的次要装置号码(minor device number of tty)
6、STAT:该进程的状态
7、START:进程开始时间
8、TIME:执行的时间
9、COMMAND:所执行的指令
Linux中的会话和作业:
进程:Linux自身运行的独立的程序
交互进程:由一个shell启动的进程,可以在前台运行,也可以在后台运行
批处理进程:是一个进程序列,和终端没有联系
监控进程(守护进程):Linux系统启动时,启动的进程,并且在后台运行
作业:一个正在执行的进程,而且作业可以包含一个或多个进程。
作业控制:控制正在运行的进程的行为。如:挂起一个进程,等一会在执行。这样用户可以在多个作业之间切换【换句话说:可以在多个正在执行的进程之间切换】
&:and符号可以跟在任何命令的后面,作用:可以让命令在后台执行
jobs:可以查看正在后台运行的作业状态:
jobs -l:除了列出作业,同时列出PID
jobs -r:列出仅仅在后台运行的作业
jobs -s:列出仅仅在后台暂停的作业
sleep 10000延迟多少秒
ctrl + c:中断
ctrl + z:挂起
fg + %作业编号:将后台的命令调到前台来继续执行,不能再放回后台了 【fg 1】
bg +%作业编号:将后台暂停的命令继续执行【bg 2】
ps -j:显示当前作业进程信息
PGID:线程组ID号
SID: 会话ID号
中断进程:
信号:传递给linux进程的操作
kill -l显示可以传递给linux进程的所有的信号
常用:
kill -9 PID强制 杀死一个进程
kill -15 PID正常的方式终止一个进程
kill -2同ctrl+c的操作是一样的
Linux中的控制服务和守护进程:
systemd:是所有进程父进程(Linux内核3.0以上版本)
systemctl:用户管理各种类型的systemd对象,这些对象称为:单元
常用的单元:.service(服务单元).socket(套接字).path(路径单元)
ssh:是一个协议 sshd:是一个进程
systemctl status sshd.service查看后显示中有几个关键字:
[root@localhost ~]# systemctl status sshd.service
sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since六 2018-06-16 13:07:30 CST; 1h 9min ago
loaded:单元配置文件已处理
enabled:开机自启动、或【disabled:开机不自启】、或【static:无法启动,但可以通过某一个已经启动的单元来启动】
active (running):正在运行、或【active (exited):配置成功】、或【active (waiting)运行中,但正在等待事件】、或【inactive:不在运行】
systemctl status sshd.service
start:在系统中启动一项服务
stop:等待程序需要处理完毕后再stop
restart:直接关闭程序,在开启【即重启】
reload:重新加载配置文件,进程暂停,然后把配置文件加载进去后,继续执行后续操作;进程的PID不会发生改变
enable:设置开机自启
disable:关闭开机自启
status:查看某一单元的状态
备注:红帽5,6版本中:
Service sshd status
Chkconfig ssh on/off开机自动启动/关闭自启
Linux中的日志:
大多数日志由四个部分组成
1、记录在日志的时间
2、发送该日志的主机
3、发送该日志消息的程序或进程
4、发送的实际消息
Jun 16 14:50:01 localhost systemd: Started Session 14 of user root.
Jun 16 14:50:01 localhost systemd: Starting Session 14 of user root.
日志监控:
tail -f /var/log/
显示最后10行,如果有新的内容加入,那么会继续输出
tail -200f /var/log/
显示最后200行,如果有新的内容加入,那么会继续输出
Linux中的计划作业:
周期性计划作业——cron
cron 是一个进程。可以让linux周期性的执行某一命令
crontab 是一个命令,可以设置Linux周期性的执行某一命令
-u 设置某个用户的周期性工作——root权限;
-e 编辑crontab的工作内容
-l 查看crontab的工作内容
-r 移除所有的crontab的工作内容,若紧要移除一项,请用-e去编辑
例如:crontab -eu hudechao【参数e要加载前面】
crontab的格式:
一行代表一个任务
minute hour day month week command
minute: 表示分钟,可以是从0-59之间的任何整数
hour: 表示小时,可以是从0-23之间的任何整数
day: 表示日期,可以是从1-31之间的任何整数
month: 表示月份,可以是从1-12之间的任何整数
week: 表示星期几,可以是从0-7之间的任何整数,这里的0或7代表星期日
command: 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
特殊字符含义:
*(星号)代表任何任何时刻都接受的意思,*代表的是任何时候
,(逗号)代表分隔字段意思,
例如:15,30,45 * * * * command代表的是每月每日每小时的15分,30分,45分的时候执行命令
-(减号)代表一段时间范围内,
例如:10 7-10 * * * command代表的是每月每日的7点到10点的10分整时执行命令
/n n代表数字,也就是每隔n单位间隔
例如:*/5 * * * * command代表每月每日每时每隔5分钟执行一次【间隔的时候前面在斜杠前面要加上*】
crontab的配置举例:
例如:每天晚上22点钟执行go to sleep
crontab -eu hudechao
* 22 * * * go to sleep
可查看日志信息有无执行:/var/log/cron
crontab的配置文件:
/etc/crontab配置文件:
当使用者使用crontab这个命令来创建工作任务之后,该项工作就会被记录到/var/spool/cron里面,而且是以用户名来命名文件。
如:hudechao用户使用crontab后,工作文件会被记录到/var/spool/cron/hudechao中,另外,cron运行的每一项工作都会被记录到日志/var/log/cron文件中。
crond服务每分钟检测一次,所以cron会每分钟去读取一次/etc/crontab与/var/spool/cron里面的数据内容,因此,只要编辑完/etc/crontab文件,cron的配置就会自动来执行。
如果修改完crontab或者添加crontab没有马上执行,可以使用systemctl restart crond.service重启。
*/1 * * * * date >>/home/software/abc
Linux中的输入输出重定向:
>file标准输出重定向到文件——覆盖
>>file标准输出重定向到文件——追加
2> file标准错误重定向到文件——覆盖
2>>file标准错误重定向到文件——追加
2>/dev/null标准错误重定向到回收站
&>file标准输出和标准错误重定向到文件——覆盖
>>file 2>&1标准输出和标准错误重定向到文件——追加
管道符:
字符|就是管道符
1、承上启下:把上一个指令的输出作为下一个指令的输入来执行
2、搭配grep 字符实现过滤功能。
如:
ll /etc/ | more
ps -aux | cron
ps -aux | cron >>abc
查找和替换:
grep只能用于查找文件中的内容
sed可以查找,然后替换或者插入想要的内容
a新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
d删除,因为是删除,所以d后面通常不接任何东西
i插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行)
p列印,即将某个选择的资料印出。通常p连同参数sed
s取代,可以直接进行取代的工作。
如:sed '2,5d' 123【删除文件123的第2-5行】
sed '2a 3333' 123【在文件123的地二行的下一行插入3333】
sed '$i 456' 123【在文件123的行尾的上一行插入456,$匹配到文件的行尾(正则)】
sed 's/cat/dog/' 123【左边的cat引用dog,即把cat替换成dog】
【注:上面这些操作都不会对源文件进行修改】
【注:如果要对源文件进行修改,要使用-i参数 【慎用】】
sed -i 's/cat/dog/' 123