Linux命令
如果线上某台虚机CPU Load过高,该如何快速排查原因?
一个应用占用CPU很高,除了是计算密集型应用之外,通常原因都是出了死循环。
w命令:都有谁,在做什么? 快速了解系统中目前有哪些用户登录着。
ps命令和top命令:列出运行的进程
ps:进程的静态列表,用于显示当前系统中的进程,ps命令显示的进程列表不会随时间而更新,是静态的。
不加任何参数:只显示当前用户在当前终端的进程。
ps -ef:列出所有进程 ps -ef | less
ps -efH:以乔木状列出所有进程
ps -u 用户名:列出此用户运行的进程
pstree:以树形结构显示进程
ps -aux:通过CPU和内存使用来过滤进程
根据CPU使用率来降序排列: ps -aux --sort -pcpu | less
根据内存使用率来降序排列:ps -aux --sort -pmem | less
将CPU和内存合并到一起:ps -aux --sort -pcpu,+pmem | head
top:进程的动态列表,实时监控系统进程
ps是静态的只能记录当下那一刻的进程列表,ps命令并不能帮助我们实时监控系统的进程
top:这些进程是按照使用处理器的比率来排序的,top命令无法显示全部进程,只显示一页
一些按键:q退出 h显示帮助文档 B加粗某些信息 f/F在进程列表中添加或删除某些列,改变进程列表排序所参照的列
u依照用户来过滤显示 k结束某个进程 s改变刷新页面时间
系统监控软件:glance
yum install epel* -y
yum install python -pip python -devel -y
yum install glances -y
htop软件
yum install -y epel-release
yum install -y htop
停止进程:ctrl+C;kill
ctrl+C:中止终端中正在运行的程序(进程);在终端中拷贝粘贴用ctrl+shift+c,ctrl+shift+v
kill:结束一个进程,后接需要结束的进程号
同时结束几个进程,用空格隔开pid即可
kill -9强制立即结束进程
killall 接程序名,结束全部进程
halt和reboot:停止和重启系统
halt:关闭系统,需要root身份
reboot:重启系统,需要root身份
halt和reboot都调用了shutdown命令
poweroff:关机,不需要root身份就可以运行
管理前后台进程:
&符号和nohup命令:后台运行进程,可以实现在同一个终端运行好几个命令
前台进程:默认情况下,用户创建的进程都是前台进程;前台进程从键盘读取数据,并把处理结果输出到显示器
后台进程的优点是不必等待程序运行结束,就可以输入其他命令,可以与键盘数据无关
在要运行的命令最后加上&符号:cp file.txt file-copy.txt & 注意空格隔开
sudo find / -name "*log" &
sudo find / -name "*log" > output_find &
sudo find / -name "*log" > output_find 2>&1 &
&缺点:后台进程与终端相关联,一旦终端关闭或者用户登出,进程就自动结束
nohup:使进程与终端分离,使得命令不受hangup信号的影响
nohup cp file.txt file-copy.txt
ctrl+Z,jobs,bg和fg命令:控制进程的前后台切换
ctrl+Z:转到后台并暂停运行
bg:使进程转到后台,将命令转到后台运行;加入后台有暂停的命令,bg会使其进入运行状态;不加任何参数,bg命令会默认作用于最近的一个后台进程;如果后面加%1,%2这样的参数,则会作用于指定编号的进程
ctrl+Z-->bg:为什么不直接bg,因为如果不先用ctrl+Z将此进程暂停,此进程就一直在前台运行,没法再命令提示符后面输入
sudo grep -r "log" / > grep_log 2>&1 &
5种常见的进程状态:
运行:正在运行会在运行队列中等待,对应的状态码R
中断:休眠中,受阻,当某个条件形成后或接收到信号时,则脱离该状态,S
不可中断:进程不响应系统异步信号,即使用kill命令也不能使其中断,D
僵死:进程已终止,但进程描述符依然存在,直到父进程调用wait4系统函数将进程释放,Z
通知:进程收到SIGSTOP、SIGSTP、SIGTIN、SIGTOU等停止信号后停止运行,T
jobs:显示当前终端中的后台进程状态
fg:使进程转到前台,如果不加参数,作用于最近的一个进程;加%数字,%可以省略
任务的定时和延期
date:调节时间
定制date的输出:date "+%H:%M:%S" date "+%H时%M分%S秒"
用date修改系统时间:sudo date 10121430 需要root身份 -->10月12日14点30分
at:延时执行一个程序,设定一个程序的执行时间
注意:at只能让程序执行一次
在指定时刻执行程序:先用at命令后接想要程序执行的确定时刻,再输入想要在以上指定时刻执行的命令
at 22:10 回车后会进入交互模式,需要输入需要执行的命令 at 22:10 tommorow at 22:10 12/10/19 月/日/年
使用ctrl+D结束并退出at命令
在指定间隔之后执行程序:
at还有第二种用法,就是在指定时间间隔之后执行程序
at now +10 minutes 10分钟之后执行
atq和atrm命令:列出和删除正在等待执行的at任务
atq:列出正等待执行的at任务
atrm:删除正在等待执行的at任务 atrm 后接任务编号
;-->用于分隔两个命令,使得命令依次执行
sleep命令:休息一会
touch file.txt; sleep 10; rm file.txt 默认为秒
touch file.txt; sleep 10m; rm file.txt
&&和||符号 逻辑与和逻辑或
和分号类似,分隔命令
区别:&&号前的命令执行成功才会执行后面的命令
||号前的命令执行失败才会执行后面的命令
不论分号前的命令执行成功与否都会执行分号后的命令
crontab命令:定时执行程序
可以重复执行命令
sudo yum install vixie-cron crontabs
sudo apt install cron
crontab用于修改crontab文件,cron用于实际执行定时的程序
参数
-l:显示crontab文件
-e:修改
-r:删除
https://www.cnblogs.com/lzghyh/p/13035675.html
https://blog.csdn.net/yushouxiang2014/article/details/82876405 kill -9