Linux常用命令

Linux相关

【1】查看磁盘剩余空间
df命令是linux系统以磁盘分区为单位查看文件系统
命令格式:df -hl

df -h:查看当前目录磁盘使用情况

看内存使用情况:
列出了所有的内存使用情况:$ cat /proc/meminfo( proc被称为虚拟文件系统,它是一个控制中心,可以通过更改其中某些文件改变内核运行状态,它也是内核提空给我们的查询中心,用户可以通过它查看系统硬件及当前运行的进程信息。)
用于实时显示 process 的动态:top
查看系统内存使用情况:free

查看CPU使用情况
top
top命令用于实时监测系统资源使用状况,包含,进程、cpu,内存等

top -p 通过指定监控进程ID来仅仅监控某个进程的状态

统计信息区前五行是系统整体的统计信息:

第一行是任务队列信息;第二、三行为进程和CPU的信息;
total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s): 
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi:硬件CPU中断占用百分比
si:软中断占用百分比
st:虚拟机占用百分比

最后两行为内存信息:
Mem:
total    物理内存总量
used    使用的物理内存总量
free    空闲内存总量
buffers    用作内核缓存的内存量
Swap: 
total    交换区总量
used    使用的交换区总量
free    空闲交换区总量
cached  缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入

怎么知道系统CPU负载高
查看系统CPU负载及使用率的命令为:top、vmstat
top 命令:查看进程级别的cpu使用情况
vmstat 命令:查看系统级别的cpu使用情况

怎么知道是内核空间负载高还是用户空间负载高
vmstat命令可以查看系统整体的cpu,内存的使用情况
在这里插入图片描述
us:用户模式消耗的 CPU 时间百分比。该值较高时,说明用户进程消耗的 CPU 时间比较多,比如,如果该值长期超过 50%,则需要对程序算法或代码等进行优化。
sy:内核模式消耗的 CPU 时间百分比。

查看物理CPU个数
cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l
查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep “cpu cores”| uniq
查看逻辑CPU的个数
cat /proc/cpuinfo| grep “processor”| wc -l

top命令找到占用CPU最高的java线程
(1)使用top命令找出占用cpu最高的JAVA进程PID
(2)使用命令top -Hp PID找出占用cpu最高的线程
(3)把线程号转化为十六进制,printf “%x\n” <线程ID>
(4)jstack <进程号>,把线程栈打印出来。就可以分析为什么线程会占用那么高的cpu了

【2】查看一个文件大小/文件占用多大的磁盘空间
du 命令用来查看目录或文件所占用磁盘空间的大小
du -ah:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
du -sh:显示目录占用的磁盘空间大小,不显示其下子目录和文件占用的磁盘空间大小
du -sh * | sort -n:统计当前文件夹(目录)大小,并按文件大小排序
du -sk [文件名] :查看指定文件大小

【3】查看日志文件内容命令有
cat 由第一行开始显示文件内容
显示文件里匹配关键字那行以及上下20行
cat 文件名 | grep -C 20 ‘关键字’
显示关键字及前20行
cat 文件名 | grep -B 20 ‘关键字’
显示关键字及后20行
cat 文件名 | grep -A 20 ‘关键字’

more 一页一页的显示文件内容
head 命令用于查看一个文本文件的开头部分
tail 命令则用于显示文本文件的末尾几行
sed 查看文件中间一段 sed -n ‘5,10p’ [文件全路径]:可以只查看文件的第5行到第10行

【4】cd命令用于切换当前工作目录至 dirName(目录参数)
“~” 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,"…" 则表示目前目录位置的上一层目录

【5】ps命令用于显示当前进程 (process) 的状态
使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等
ps -le:查看操作系统中有哪些进程

-A :所有的进程均显示出来
-a : 显示现行终端机下的所有进程,包括其他用户的进程
-u :以用户为主的进程状态

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作 ps aux | grep program_filter_word,ps -ef |grep tomcat

如何查找指定关键字的进程信息,解决的办法是:
(1) 先用pgrep [str] 命令进行模糊匹配,找到匹配该特征串的进程ID
(2) 其次根据进程ID显示指定的进程信息,ps --pid [pid]
(3) 因为查找出来的进程ID需要被作为参数传递给ps命令,故使用xargs命令,通过管道符号连接
(4) 最后显示进程详细信息,需要加上-u参数

最终命令形如:
pgrep Java | xargs ps -u --pid

查看当前占用CPU或内存最多的几个进程
ps -aux | sort -k4nr | head -N ,命令详解:
1.head:-N可以指定显示的行数,默认显示10行。
2.ps:参数a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分。ps -aux的输出格式如下:

USER    PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     1  0.0  0.0  19352  1308 ?        Ss   Jul29   0:00 /sbin/init
root     2  0.0  0.0      0     0 ?        S    Jul29   0:00 [kthreadd]
root     3  0.0  0.0      0     0 ?        S    Jul29   0:11 [migration/0]

3.sort -k4nr中(k代表从根据哪一个关键词排序,后面的数字4表示按照第四列排序;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。-k3表示按照cpu占用率排序。

【6】vim 文本编辑器
vim中怎么替换内容
命令格式::首行数,末行数s/要替换的字符串/替换的字符串/g
通常我们会在命令中使用%指代整个文件做为替换范围::%s/要替换的字符串/替换的字符串/g
:s/要替换的字符串/替换的字符串/g 在当前行内查找要替换的字符串并将之替换为替换的字符串,所有出现都会被替换(g)

如何跳到第一行?怎么跳到最后一行?
:0或:1跳到文件第一行
:$ 跳到文件最后一行

如何删除一行?
dd 删除当前行

查找特定字符串出现次数
在所有行中查找字符串出现的次数
:%s/字符串/&/gn

在m和n行之间查找字符串出现的次数
:m,ns/字符串/&/gn

在Linux下用VIM打开大小几个G、甚至几十个G的文件时,是非常慢的。这时,可以利用下面的方法分割文件,然后再打开。
1 查看文件的前多少行
head -10000 /var/lib/mysql/slowquery.log > temp.log 把slowquery.log文件前10000行的数据写入到temp.log文件中。

2 查看文件的后多少行
tail -10000 /var/lib/mysql/slowquery.log > temp.log 把slowquery.log文件后10000行的数据写入到temp.log文件中。

3 查看文件的几行到几行
sed -n ‘10,10000p’ /var/lib/mysql/slowquery.log > temp.log 把slowquery.log文件第10到10000行的数据写入到temp.log文件中。

【7】
统计一个文件的行数:wc -l
统计字符数:wc -m 文件名在这里插入图片描述
统计一个文件中一行有多少个字符(以’a’为例)
awk -F " " ‘{for(i=1;i<=NF;++i) if($i= =“a”) ++sum}END{print sum}’ urfile,注意:-F " "中间必须要有空格 "a"必须使用双引号,字符串
将文件夹下文件按照size大小倒序排列:du -s /usr/* | sort -rn | head

【8】在Shell脚本中获取传入参数的总个数
当前传递给脚本的参数的数量通过 $ # 来判断,当前传递给脚本的参数的数量$#的数量即传递给脚本的参数的数量是从$1开始计算的

Shell脚本中 $0 代表Shell本身的文件名

【9】Shell中压缩/解压一个文件夹,用什么指令?
tar -zcvf [打包后生成的文件名全路径] [要打包的目录]
解压:tar -zxvf
压缩当前的文件夹:zip -r [打包后的文件名] [打包的目录路径]
解压:unzip

tar和zip的底层实现区别:
ZIP是一种相当简单的分别压缩每个文件的存档格式,用于windows的操作系统,重要作用是压缩,分别压缩文件允许不必读取另外的数据而检索独立的文件

tar命令在Unix/Linux系统中重要用途是备份文件,tar代表未压缩的tar文件。已压缩的tar文件则附加压缩文件的扩展名,如经过gzip压缩后的tar文件,扩展名为“.tar.gz”

【10】观察端口使用情况netstat
sudo netstat -ap:查看所有的服务端口并显示对应的服务程序名
netstat -a:查看所有的服务端口
netstat -tln:查看linux的端口使用情况
netstat -anp | grep 端口号:查看端口被哪个程序占用

netstat
【11】进程打开多少文件夹
lsof
查看端口被哪个程序占用
lsof -i:端口号

netstat和lsof看端口区别:
1.netstat无权限控制,lsof有权限控制,只能看到本用户
2.losf能看到pid和用户,可以找到哪个进程占用了这个端口

【12】chmod
修改文件调用权限,语法格式:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
chmod 544:(r-xr–r--)

linux权限777 命令的意思 = 全部开放读写执行操作权限
一个文件有三个权限,分别是读、写和执行,它们对应的数分别是4、2和1。如果某个用户只有读权限没有写和执行权限当然就是4,如果三个如果有读和执行权限就是5(4+1),所以有全部权限就是7了。而一个文件或文件夹面对的用户分三类:所属用户、所属用户的组其他用户以及组外用户。所以777三个数字就是对应这三个用户对象全部都有读、写、执行权限。如果是所属用户有全部权限,组员有读和执行权限,而组外用户只有读权限,那数字应该就是754。

【13】查找文件
find、locate、whereis、which

根据 文件或目录名称 搜索:find 【搜索目录】【-name或者-iname】【搜索字符】 -name和-iname的区别一个区分大小写,一个不区分大小写
查找最近10分钟修改过的文件find . -type f -mmin -10
查找大于10M的文件 find / -type f -size +10M
查找最近30分钟修改的当前目录下的.php文件find . -name ‘*.php’ -mmin -30

删除七天之前的.log文件
find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} ;
find /opt/soft/log/ -mtime +7 -name “*.log” -exec rm -rf {} ;
说明:将/opt/soft/log/目录下所有7天前带".log"的文件删除

删除某个目录下所有.jar后缀的文件
find 目录 -name “*.jar” | xargs rm -rf

在文件资料中查找文件:locate【文件名】 -i 不区分大小写
find是全盘检索,而locate 是在文件资料库中进行搜索。所以locate命令的执行要比find命令执行速度快很多

搜索命令所在的目录及别名信息:which【命令】

搜索命令所在的目录及帮助文档路径:whereis【命令】

【14】把一台服务器上的文件复制到另一台文件上
scp

【15】nohup &
nohup是不挂断地运行命令;&是指在后台运行
nohup COMMAND & 这样就能使命令永久的在后台执行

【16】awk
awk 是一种处理文本文件的语言,是一个强大的文本分析工具。awk 是以文件的一行内容为处理单位的。awk读取一行内容,然后根据指定条件判断是否处理此行内容,若此行文本符合条件,则按照动作处理文本,否则跳过此行文本,读取下一行进行判断。

有一个文件,文件用’\t’分隔,分四列,只要输出第三列的内容,用awk实现了。awk -F’\t’ ‘{print $3}’ a.log
输出一个文本数据的第三列(awk)

【17】把一个文件中的空行进行删除
grep -v '^$ ’ data.txt
sed ‘/^ $ /d’ data.txt
awk ‘!/^ $ /’ data.txt
tr -s ‘\n’ < data.txt

【18】如何将一个程序开机就启动
写进配置文件,/etc/inittab会启动rc.local这个文件

【19】crontab
定时任务的守护进程,精确到分,设计秒的我们一般写脚本

【20】ping
在诊断网络问题时,经常会使用ping命令。它可以快速判断某个域名是否可以可以访问,访问延时高不高。ping输出的内容包含三部分:
1/ping的主机对应的IP地址(进行了DNS解析),向该主机发送的数据包的大小(56字节)
2/来自主机的响应信息
icmp_seq:序列号,表示第几个个响应包(递增的数字)
time:请求往返耗时
ttl:IP数据报的ttl设置
64 bytes:响应的数据包大小是64字节
3/ping整体请求/响应概览

实现原理
ping命令主要基于ICMP(Internet Control Message Protocol)实现,向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,它包含了两部分:客户端、服务器:
客户端:向服务端发送ICMP回显请求报文(echo message)。
服务端:向客户端返回ICMP回显响应报文(echo reply message)。

ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方。ICMP协议是IP层的一个协议,报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP报头形成ICMP报文,再添加IP报头形成IP数据报。

【21】查找文件夹下包含某字符的所有文件
grep -r string ./
示例:grep -r message ./
示例解释:在当前目录下递归查找含有字符串message的文件

grep -l 模式 文件名: 列出文件内容符合指定的范本样式的文件名称
如: grep -l [0-9] file.go,如果包含0-9数字就匹配上了。支持正则,查询多文件时只输出包含匹配字符的文件名。

【22】查看磁盘剩余空间
==parted -l ==

主机连接数
netstat -na|wc -l

在一个带子目录的目录中查找一个以pro开头的文件
find . -name pro*
ls -al |grep c * 在Linux中查找以c开头的文件和文件夹
ls | grep *.文件后缀 找到指定文件后缀的文件

【23】批量替换
批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。

sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`

例如:我要把/test下所有包含abc的文件中的abc替换为def,执行命令:

sed -i "s/abc/def/g" `grep abc -rl /test ` 

【24】查询文件中某个关键词所在的行号
grep -n “关键字” ./log.txt|cut -d “:” -f 1

【25】
kill进程,系统是怎么完成的
kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill和kill -9的区别:kill命令发送SIGTERM,SIGTERM多半是会被阻塞的;kill -9表示强制杀死该进程,该命令发送SIGKILL,即exit,exit信号不会被系统阻塞

【26】Linux 进程死循环
用 top -H -p PID 查看问题到底出现在那个线程, 记录下threadID.
用 gdb ProcessName PID 附近到目标进程.
用 info threads 列出线程状态.
用 thread Num. 查看问题线程信息
用 bt 查看堆栈调用顺利找到问题代码位置.

【27】查进程占用的虚拟内存
top命令中的 VIRT — 进程使用的虚拟内存总量

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值