什么是程序
一组计算机能识别和执行的指令,用于指导计算机执行特定任务或解决特定问题。程序通常由代码、数据和资源文件组成,涉及语法、算法和数据结构。为二进制文件
什么是进程
是一个具有独立功能的程序关于某个数据集合的一次运行活动。作为系统进行资源分配和调度的基本单位,是操作系统结构的基础。
程序与进程的关系
进程的状态
基础进程状态
创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
执行状态:进程处于就绪状态被调度后,进程进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
更多的状态
运行态:running
就绪态:ready
睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵尸态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程
如何结束僵尸态
创建僵尸进程
利用top或ps指令查看僵尸态进程(Z)PID号
利用kill发送指令唤醒僵尸进程的父进程来实现回收僵尸进程
[root@localhost ~]# kill -18 6904
也可以通过杀死僵尸进程的夫进程,但不建议使用。
进程的类型
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
进程的优先级
静态优先级:100-139
动态优先级:-20 --19
进程管理相关命令
ps
查看静态的进程统计信息
进程相关信息保存在/proc目录中
若ps不加选项,查看不到多少信息
[root@localhost ~]# ps PID TTY TIME CMD 6950 pts/2 0000 bash 7441 pts/2 0000 ps
一般使用指令:ps aux
选项
a | 显示所以进程信息 |
---|---|
u | 以用户为主的格式输出 |
x | 显示当前用户在所有终端下的进程信息 |
k|--sort 属性 | 对属性排序,属性前加 - 表示倒序 |
ps输出属性
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193700 6852 ? Ss 12:53 0:02 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S 12:53 0:00 [kthreadd]
user | 进程用户 |
---|---|
PID | pid号 |
%CPU | CPU的使用率 |
%MEM | 内存的使用率 |
VSZ | 虚拟内存大小 |
RSS | 真实内存大小 |
TTY | 终端设备 |
STAT | 进程状态 |
START | 进程启动时间 |
TIME | 进程运行了多少时间 |
COMMAND | 进程命令名称 |
查看进程信息
prstat PID号
[root@localhost ~]# prtstat 6900 Process: sshd State: S (sleeping) CPU#: 1 TTY: 0:0Threads: 1 Process, Group and Session IDs Process ID: 6900 Parent ID: 1152 Group ID: 6900 Session ID: 6900 T Group ID: -1 Page Faults This Process (minor major): 1741 3 Child Processes (minor major): 1384 1 CPU Times This Process (user system guest blkio): 0.00 0.18 0.00 0.00 Child processes (user system guest): 0.01 0.00 0.00 Memory Vsize: 151 MB RSS: 5357 kB RSS Limit: 18446744073709 MB Code Start: 0x5644f8c0d000 Code Stop: 0x5644f8cd4a24 Stack Start: 0x7ffc51c00f00 Stack Pointer (ESP): 0x7ffc51c003f8 Inst Pointer (EIP): 0x7fb109e23783 Scheduling Policy: normal Nice: 0 RT Priority: 0 (non RT)
top
实时查看进程统计信息
[root@localhost ~]# top top - 17:01:45 up 4:08, 4 users, load average: 0.00, 0.01, 0.05 Tasks: 209 total, 1 running, 208 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1867048 total, 76652 free, 796612 used, 993784 buff/cache KiB Swap: 2097148 total, 2097004 free, 144 used. 810116 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 430 root 20 0 0 0 0 S 0.3 0.0 0:01.72 xfsaild/dm-0 1 root 20 0 193700 6852 4068 S 0.0 0.4 0:02.61 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.65 rcu_sched 10 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/0 11 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/1 12 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/1 13 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/1 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H 16 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/2 17 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/2 18 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/2 19 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kworker/2:0 20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H 21 root rt 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/3 22 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/3 23 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/3 25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0H 27 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 28 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 29 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
各个字段的含义如下:
PID:进程的 ID。
USER:该进程所属的用户。
PR:优先级,数值越小优先级越高。
NI:优先级,数值越小、优先级越高。
VIRT:该进程使用的虚拟内存的大小,单位为 KB。
RES:该进程使用的物理内存的大小,单位为 KB。
SHR:共享内存大小,单位为 KB。
S:进程状态。
%CPU:该进程占用 CPU 的百分比。
%MEM:该进程占用内存的百分比。
TIME+:该进程共占用的 CPU 时间。
COMMAND:进程的命令名。
top命令栏位信息简介
us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
在top中的命令
q | 退出命令 |
---|---|
s | 修改刷新时间间隔 |
k | 终止指定进程 |
w | 保存文件 |
pgrep
查看指定的进程
-u | 指定用户 |
---|---|
-l | 显示进程命 |
-a | 显示完整格式的进程名 |
[root@localhost ~]# pgrep -u asdjkl 9828 9834 9841 9842 9900 9905 9991 10010 10015 10018 10037 [root@localhost ~]# pgrep -u asdjkl -l 9828 gnome-keyring-d 9834 gnome-session-b 9841 dbus-launch 9842 dbus-daemon 9900 gvfsd 9905 gvfsd-fuse 9991 ssh-agent 10010 at-spi-bus-laun 10015 dbus-daemon [root@localhost ~]# pgrep -u asdjkl -a 9828 /usr/bin/gnome-keyring-daemon --daemonize --login 9834 /usr/libexec/gnome-session-binary --session gnome-classic 9841 dbus-launch --sh-syntax --exit-with-session 9842 /bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session 9900 /usr/libexec/gvfsd 9905 /usr/libexec/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes 9991 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
pstree
以树形结构列出进程信息
常用选项
-a 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
-p 显示PID
-u 显示用户切换
-H pid 高亮显示指定进程及其前辈进程
[root@localhost ~]# pstree -a systemd --switched-root --system --deserialize 21 ├─ModemManager │ └─2*[{ModemManager}] ├─NetworkManager --no-daemon │ └─2*[{NetworkManager}] [root@localhost ~]# pstree -p systemd(1)─┬─ModemManager(762)─┬─{ModemManager}(785) │ └─{ModemManager}(801) ├─NetworkManager(841)─┬─{NetworkManager}(849) │ └─{NetworkManager}(855) ├─VGAuthService(750) ├─abrt-watch-log(758) ├─abrt-watch-log(760) ├─abrtd(739) [root@localhost ~]# pstree -u systemd─┬─ModemManager───2*[{ModemManager}] ├─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─2*[abrt-watch-log] ├─abrtd ├─accounts-daemon───2*[{accounts-daemon}] ├─alsactl
free
查看进程占用 内存的详细信息
[root@localhost ~]# free total used free shared buff/cache available Mem: 1867048 1247944 119912 13656 499192 358276 Swap: 2097148 6572 2090576 [root@localhost ~]#
iostat
iostat 可以提供更丰富的IO性能状态数据
Total DISK READ :0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ:0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-~tem --deserialize 21 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 5 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H] 10246 be/4 asdjkl0.00 B/s 0.00 B/s 0.00 % 0.00 % seapplet 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched] 10 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] 12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] 13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] 15 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/1:0H] 16 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/2] 17 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/2] 18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/2] 20 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/2:0H] 21 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/3] 22 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/3]
iotop
查看网络流量
进程管理
手动启动
"命令 &",把命令放入后台执行
运行中的作业: Ctrl+z 放到后台 但是会停止作业
尚未启动的作业: 命令 &
查看后台任务列表 :jobs
调出后台任务: fg
继续任务:bg
并行执行任务:每个命令使用&隔开
结束进程
kill
kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的
kill后面的选项 [root@localhost ~]# trap -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1 11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM 16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP 21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ 26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR 31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3 38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8 43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13 48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12 53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7 58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2 63) SIGRTMAX-164) SIGRTMAX
计划任务
一次性的计划任务
[root@localhost ~]# at 13:50 at> mkdir kk at>job 1 at Thu Apr 18 13:50:00 2024 [root@localhost ~]# ls [root@localhost ~]# ls 123 ?? aa anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面 [root@localhost ~]# ls ?? aa initial-setup-ks.cfg 公共 视频 文档 音乐 123 anaconda-ks.cfg kk 模板 图片 下载 桌面 您在 /var/spool/mail/root 中有新邮件
周期性的计划任务
crontab [选项] [file]
选项 | 功能 |
---|---|
-u user | 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示。 |
* * * * * 分时日月周
链接:https://www.cnblogs.com/zhj0708/p/18143407
-
Linux
+关注
关注
87文章
11279浏览量
209264 -
程序
+关注
关注
117文章
3782浏览量
80990 -
进程
+关注
关注
0文章
203浏览量
13958
原文标题:深入解析Linux程序与进程:你不知道的高效运行秘诀
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论