进程
cat /proc/进程ID/status 查看进程
pstree 查看进程
ps aux 查看进程信息
cat /proc/进程ID/exe 查看进程 磁盘文件
. /etc/init.d/fuctions 函数库
/var/spool/cron/ 周期性任务存放
/etc/crontab 系统级周期性任务
mkfio /tmp/tes.fifo 创建管道文件(内存文件) 用于进程间通信
renice -n 10 8881 更改优先级
nice -n -10 ping baidu.com 使用优先级-10使用ping
pmatp 查看进程的资源内存占用
vmstat 查看虚拟内存 以内存为参照物
pkill -t 3060终止指定终端
fuser -k 9 80/tcp终止指定端口的进程
bg 在后台执行 or 在开始前加&
fg 恢复到前台应用
kill -19 %jobnumber 在后台停止
kill -18 %jobnumber 在后台运行
at 11:11 touch 12.txt 一次性创建时间任务 (成功后发邮件)
date 查看时间任务 at -l
crontab -e 30 2 * * * reboot
内存超分
vm.overcommit_memory 是 Linux 内核参数之一,用于控制系统内存管理的一种行为。它定义了内核在分配系统内存时的策略,特别是在内存超额分配(overcommit)的情况下
0:表示内核会根据实际的内存使用情况和系统的内存限制来判断是否允许内存超额分配。这是默认的行为,即允许内存超额分配,但在内存不足时可能会触发 Out-Of-Memory (OOM) Killer 杀死一些进程来释放内存。
1:表示内核总是允许内存超额分配。即使系统的可用内存已经不足,内核也会接受分配新的内存。这种模式可能导致系统在实际使用的内存超过物理内存容量时出现问题,例如触发大量的页交换(swap),导致系统性能下降。
2:表示内核只会分配系统中真实存在的物理内存加上 swap 区域的内存。如果请求的内存超过了系统中实际可用的内存和 swap 区域的大小,则会拒绝内存分配请求,返回错误。
例子:vm.overcommit_memory = 1
进程状态
D (TASK_UNINTERRUPTIBLE) 不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,cpu不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了
R (TASK_RUNNING) 正在运行,或在队列中的进程
S (TASK_INTERRUPTIBLE) 可中断的睡眠状态
T (TASK_STOPPED) 停止状态
t (TASK_TRACED) 被跟踪状态
Z (TASK_DEAD - EXIT_ZOMBIE) 退出状态,但没被父进程收尸,成为僵尸状态
W 进入内存交换(从内核2.6开始无效)
X (TASK_DEAD - EXIT_DEAD) 退出状态,进程即将被销毁
I:空闲状态(idle)
B:进程正在等待更多的内存页
< 高优先级
N 低优先级
L 有些页被锁进内存
s 包含子进程
+ 位于前台的进程组;
l 多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do).
其中就绪状态表示进程已经分配到除CPU以外的资源,等CPU调度它时就可以马上执行了。运行状态就是正在运行了,获得包括CPU在内的所有资源。等待状态表示因等待某个事件而没有被执行,这时候不耗CPU时间,而这个时间有可能是等待IO、申请不到足够的缓冲区或者在等待信号。
kill信号
信号编号 信号名称 信号描述
1 SIGHUP 用户终端连接结束,控制终端进程结束,通知同一session内的各个作业与控制终端脱离关联,或者守护进程重新读取配置文件
2 SIGINT 终端键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程
3 SIGQUIT 类似于SIGINT,但由QUIT字符(通常是Ctrl-\)发出,会产生core文件
4 SIGILL 执行了非法指令
5 SIGTRAP 由断点指令或其他trap指令产生,通常由debugger使用
6 SIGABRT 调用abort函数生成的信号
7 SIGBUS 非法地址或内存地址对齐出错
8 SIGFPE 发生致命的算术运算错误,如浮点运算错误、溢出及除数为0等
9 SIGKILL 立即结束程序运行,不能被阻塞、处理和忽略
10 SIGUSR1 留给用户使用
11 SIGSEGV 试图访问未分配给自己的内存或试图往没有写权限的内存地址写数据
12 SIGUSR2 留给用户使用
13 SIGPIPE 管道破裂,通常在进程间通信产生
14 SIGALRM 时钟定时信号,由alarm函数使用
15 SIGTERM 程序结束信号,可以被阻塞和处理,通常用于要求程序自己正常退出
17 SIGCHLD 子进程结束时,父进程会收到这个信号
18 SIGCONT 让一个停止的进程继续执行
19 SIGSTOP 停止进程的执行,不能被阻塞、处理或忽略
20 SIGTSTP 停止进程的运行,可以被处理和忽略,通常由用户键入SUSP字符(通常是Ctrl-Z)发出
21 SIGTTIN 后台作业从用户终端读数据时,作业中的所有进程会收到这个信号
22 SIGTTOU 类似于SIGTTIN,但在写终端时发出
23 SIGURG 有"紧急"数据或out-of-band数据到达socket时产生
24 SIGXCPU 超过CPU时间资源限制
25 SIGXFSZ 进程试图扩大文件以至于超过文件大小资源限制
26 SIGVTALRM 虚拟时钟信号
27 SIGPROF 类似于SIGALRM/SIGVTALRM,但包括该进程用的CPU时间以及系统调用的时间
28 SIGWINCH 窗口大小改变时发出
29 SIGIO 文件描述符准备就绪,可以开始进行输入/输出操作
30 SIGPWR Power failure
31 SIGSYS 非法的系统调用
这些信号中,有些信号不能被捕获、阻塞或忽略,有些信号会导致进程流产,有些信号会导致进程退出,有些信号会导致进程停止,还有些信号可以被处理或忽略。
ipc进程之间的通信
管道管道(Pipe):
管道是一种半双工的通信方式,用于在相关进程之间传输数据。管道可以是匿名的,也可以是有名字的。匿名管道通常用于父子进程之间的通信,而有名管道通常用于无关联的进程之间的通信。
消息队列(Message Queue):
消息队列是一种消息传递的方式,允许一个进程向另一个进程发送数据块。消息队列提供了一个存放消息的缓冲区,以便其他进程可以按照先进先出(FIFO)的顺序接收消息。
信号(Signal):
信号是一种异步的通信方式,用于通知进程发生了某种事件。进程可以注册信号处理函数来处理不同类型的信号。
共享内存(Shared Memory):
共享内存允许多个进程共享同一块物理内存区域,进程可以通过共享内存来交换数据。共享内存是最快的IPC方式,但也是最难实现的,因为它需要处理进程间的同步和互斥问题。
信号量(Semaphore):
信号量是一种计数器,用于控制对共享资源的访问。信号量通常用于解决竞争条件和进程同步问题。
套接字(Socket):
套接字是一种网络通信方式,用于在不同主机上的进程之间进行通信。套接字可以用于实现各种类型的通信,包括流式套接字(TCP)和数据报套接字(UDP)。
文件映射 (Memory-maped file):
将文件中的一段数据映射到物理内存,多个进程共享这片内存
进程优先级

top

清理缓存
echo 1 >/proc/sys/vm/drip_caches 释放原数据
echo 2 >/proc/sys/vm/drip_caches 释放缓存数据
echo 3 >/proc/sys/vm/drip_caches 全释放
周期性任务
在脚本中需要加入PATH=
crontad * * * * * 命令
分钟 小时 日 月 周
crontab -e: 编辑当前用户的cron作业列表。执行此命令将会打开一个文本编辑器(通常是vi或者vim),可以编辑当前用户的cron作业。
crontab -l: 列出当前用户的cron作业列表。执行此命令将会输出当前用户的cron作业列表到标准输出。
crontab -r: 删除当前用户的所有cron作业。执行此命令将会删除当前用户的所有cron作业,无需确认。
crontab -u username -e: 编辑指定用户的cron作业列表。与crontab -e类似,但可以编辑指定用户的cron作业列表。
crontab -u username -l: 列出指定用户的cron作业列表。与crontab -l类似,但可以列出指定用户的cron作业列表。
crontab filename: 从文件中导入cron作业列表。执行此命令将会从指定的文件中导入cron作业列表。

浙公网安备 33010602011771号