一、进程和程序的关系
1.程序
没有运行的代码
2.进程
运行起来的代码
3.线程
程序的副本,把进程复制了一份,但是只是复制了进程的一部分代码,就是为了能够执行任务即可,最小化的复制了这部分代码,仅满足基本需求,真正执行程序的是线程而不是进程,线程就是进程的打工仔。 线程是进程的真正执行者。
二、PS命令
ps(process status,进程状态),静态查看进程的统计信息
ps-elf
e:显示系统内所有进程信息
l:以长格式显示进程的信息,详细信息
f:完整格式显示进程信息
F:父进程
进程的状态:
S:sleep休眠状态的进程
R:正在运行的进程
D:不可中断的休眠状态
Z:僵尸进程
T:停止状态
UID:进程的启动者
PID:进程的ID号
ps-aux
a:显示终端上的所有进程,包括其他用户的进程
u:列出进程的用户
x:显示所有终端的进程信息
USER:进程的启动者
%CPU:进程占用的CPU百分比
%MEM:占用系统内存的百分比
stat:
< 表示高优先级
N 表示低优先级
Ss:表示有子进程
sl:有多个线程
+:位于前台进程组
pstree
以树形结构列出进程的信息
-p:显示进程id
-u:显示进程所属用户
-v:显示版本信息
pstree -up +进程号 查看所属线程及所属用户
三、top命令
动态查看进程排名信息
%cpu:us 用户占用百分比 sy:内核占用百分比 id 空闲状态
VIRT:进程使用虚拟内存
RES:使用物理内存
SHR 共享内存
%CPU %MEM占物理内存的百分比
c键 根据cpu百分比大小排列,大的在前
1键 列出当前机器所有cpu并且查看状态
q/ctrl+c退出
Top -b -n 1 只运行一次就退出
四、pgrep
pgrep是一个用于查找进程 ID(PID)的命令行工具,它可以根据进程的名字或其他属性来查找对应的PID。
pgrep命令通常与其他命令一起使用,如 kill 命令
-l 显示进程名而非 PID
-u 仅显示匹配进程的所有者
五、查看进程状态
system status +进程名
kill -9(强制杀死指定进程) 格式(kill -9 [PID号])
kill
当执行kill这个命令时,实际上是向内核传递了一个信号,内核收到kill信号,由内核执行
进程状态会变为deactivating(相当于从内核中强制停止)
六、进程的前后台调度
在vim的视图模式下ctrl + z(将程序挂起调入后台,但是状态处于停止运行)
1.Jobs
命令可以用于列出这些后台进程的状态信息
-l:显示所有后台进程的PID号
-r:仅显示正在运行的后台进程
&符, 后台运行进程
2.如果服务启动失败该如何排错
① 检查网络(网络层)ping网关测试通不通
② 防火墙是否服务被ban掉了(如果有这个情况交给网络工程师处理)
③ 配置文件修改错误
④ 端口号出错(要么被占用,要么被防火墙策略限制)
⑤ 环境问题
七、定时任务,周期性任务
crontab
设定定时任务命令crontab +五个*****
分别表示 分 时 日 月 周
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7(0和7都表示星期天)
crontab -e 创建计划任务
crontab -u +用户,不加-u 当前用户
crontab -l 查看
crontab -r 删除
*表示该范围内的任意时间
,表示间隔的多个不连续的时间点
-表示一个连续的时间范围
/表示间隔的时间频率
例:
1.每天上午8点45分执行ls
45 8 * * * ls
2.每天8-11点的第25分钟执行ls
25 8-11 * * * ls
或25 8,9,10,11 * * * ls
3.每三个月每两天每两分钟执行
Crontab */2 * */2 */3 **