Linux常用命令

如何查看linux服务器内存使用情况

https://www.cnblogs.com/hanmk/p/10556989.html

free -h

top

 

find 在指定目录下查找文件

在/home目录下查找以.txt结尾的文件名: find /home -name "*.txt"
同上,但忽略大小写: find /home -iname "*.txt"

 

ps aux | grep

[root@node1 Aserver]# ps -ef | grep module_web.jar
root       3769      1 22 17:21 pts/15   00:02:15 java -jar module_web.jar
root      10883 170382  0 17:32 pts/15   00:00:00 grep --color=auto module_web.jar

ps命令将某个进程显示出来

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

linux上进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps工具标识进程的5种状态码:

  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • D 不可中断 uninterruptible sleep (usually IO)
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process

ps命令参数
-e:此选项的效果和指定"A"选项相同。显示所有程序
-f:显示UID,PPIP,C与STIME栏位。

a:显示现行终端机下的所有程序,包括其他用户的程序。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。

grep命令是查找

中间的 | 是管道命令:管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行。

ps是Linux下最常用的也是非常强大的进程查看命令

grep命令是查找,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

以下这条命令是检查java 进程是否存在:ps -ef |grep java

字段含义如下:
UID       PID       PPID      C     STIME    TTY       TIME         CMD

zzw      14124   13991      0     00:38      pts/0      00:00:00    grep --color=auto dae

UID      :程序被该 UID 所拥有

PID      :就是这个程序的 ID 

PPID    :则是其上级父程序的ID

C          :CPU使用的资源百分比

STIME :系统启动时间

TTY     :登入者的终端机位置

TIME   :使用掉的CPU时间。

CMD   :所下达的是什么指令

 

kill + 信号 + 进程号

kill只可杀死单个进程;pkill 和 killall 可杀死多个进程

【1】彻底杀死进程

当我们杀掉父进程时,其下的子进程也会被杀死
kill -9 常用来杀死僵尸进程

格式:kill -9 进程id

<1>查出服务的进程id
ps aux | grep httpd

<2>杀死进程(3645为查到的进程id)
kill -9 3645

【2】杀死程序

程序的运行会产生进程,所以可以通过杀死进程来关闭程序,可以使用kill来实现,但是,kill只可杀死单个进程,如果一个一个杀,有点费时间(也可 ps aux |grep httpd | awk ‘{ print $2 }’ |xargs kill -9 )。

我们这时就可以通过pkill和killall来实现,杀死程序。

<1>直接杀死程序(httpd为程序名)
pkill -9 httpd

killall -9 httpd
 

查看日志

1、tailf filename

默认显示文件末尾10行,然后显示文件最新追加的内容,可用于监视文件内容的变化;等同于 tail -f filename

改变默认显示的10行:tailf -n 20 filename

2、tail -n 20 filename
说明:显示filename最后20行。

补充:
跟tail功能相似的命令还有:
cat 从第一行开始显示文件内容。
tac 从最后一行开始显示文件内容。
more 分页显示文件内容。
less 与 more 相似,但支持向前翻页
head 与 tail 相反,默认显示文件开头10行
n 带行号显示档案内容
od 以二进制方式显示档案内容

解压缩命令

linux下tar命令解压到指定的目录 :
#tar xzvf bbs.tar.gz  -C  /zzz/bbs  

打tar包
#tar czvf xxx.tar.gz  要打包压缩的文件或者目录

参数文件:

-c: 新建打包文件,可搭配-v来查看过程被打包的文件名(filename)。

-t: 查看打包文件的内容含有哪些文件名,重点在查看文件名。

-x: 解打包或解压缩的功能,可以搭配-C(大写)在特定目录解开 。特别留意的是-c、-t、-x不可同时出现在一串命令行中。

-j: 通过bzip2的支持进行压缩/解压缩,此时文件名最好为 *.tar.bz2。

-z: 通过gzip的支持进行压缩/解压缩,此时文件最好为 *.tar.gz。

-v: 在压缩/解压缩的过程中,将正在处理的文件名显示出来。

-f filename: -f后面要接被处理的文件名。建议 -f 单独写一个参数。

-C 目录:这个参数用在解压缩时,若要在特定目录解压缩,可以使用这个参数。

 

cp命令直接覆盖不提示方法

Linux默认给cp取了别名,加了 -i 参数:覆盖既有文件之前先询问用户。
[root@localhost demoTestSrc]# alias cp
alias cp='cp -i'

取消别名即可
unalias cp

 

修改系统时间:

临时修改时间,重启还原: date -s "2019-10-22 09:06:02"
    查看当前系统时间 date
    修改当前系统时间 date -s "2018-2-22 19:10:30"
    查看硬件时间 hwclock --show
    修改硬件时间 hwclock --set --date "2018-2-22 19:10:30"
    同步系统时间和硬件时间 hwclock --hctosys
    保存时钟 clock -w
    重启系统(init 6)后便发现系统时间被修改了


修改系统时间并且让其重启也生效
首先查看bios时间:
    hwclock --show
然后设置当前时钟时间:
    hwclock --set --date '10/18/2018 15:50:00'
    例如现在时间为2018-10-18 15:50:00
将bios时间和系统当前时间同步:
    hwclock --hctosys

who

who: 显示当前登录系统的用户

which

查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

[root@localhost videoDownload]# which pwd
/bin/pwd
 

top

ps命令和top命令的区别:
ps看到的是命令执行瞬间的进程信息,而top可以持续的监视,实时动态地查看系统的整体运行情况
ps只是查看进程,而top还可以监视系统性能,如平均负载,cpu和内存的消耗
另外top还可以操作进程,如改变优先级(命令r)和关闭进程(命令k)

第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。

第四行:内存状态
8306544k total — 物理内存总量(8GB)
7775876k used — 使用中的内存总量(7.7GB)
530668k free — 空闲内存总量(530M)
79236k buffers — 缓存的内存量 (79M)


第五行:swap交换分区
2031608k total — 交换区总量(2GB)
2556k used — 使用的交换区总量(2.5M)
2029052k free — 空闲交换区总量(2GB)
4231276k cached — 缓冲的交换区总量(4GB)
这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB。

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行是空行

第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
多U多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况。

通过 f 键可以选择显示的内容,默认这里列出了所有可在top基本视图中显示的进程字段,有”*”并且标注为大写字母的字段是可显示的,没有”*”并且是小写字母的字段是不显示的。

进入top时,各进程是按照CPU的占用量来排序的。

可通过键盘指令来改变排序字段,比如想监控哪个进程占用MEM最多:先按 'b',再按 'x',最后通过”shift + >”或”shift + <”可以向右或左改变排序列

 

ps -ef | grep "istd"
ps: 非常强大的进程查看命令
-e 显示所有进程,等于“-A”
-f 显示UID,PPIP,C与STIME栏位

netstat

打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

netstat -tunpl | grep 6379

-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-l或--listening:显示监控中的服务器的Socket;

 

grep

统计进程的个数:

ps -A | grep -w "ietd" | wc -l
ps -A | grep -c "istd"

grep: 用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活。
    -w 只显示全字符合的列
    -c 计算符合样式的列数
使用grep指令在当前目录下所有文件中搜索指定文本:
    grep -r "待查找内容" ./

"grep -v grep" 在文档中过滤掉包含有grep字符的行
ps wwaux | grep "postgres" | grep -v grep | wc -l > /root/count.txt
ps wwaux | grep "postgres" | grep -v grep  > /root/postgres.txt

 

抓包:

Windows下抓包过滤条件。
ip.addr == 192.168.201.119
 
linux下的抓包工具,-w保存成cap的格式,方便在windows上用Wireshark查看
tcpdump host 210.27.48.1             截获所有210.27.48.1 的主机收到的和发出的所有的数据包
tcpdump -i eth0 -w ./target.cap    监视指定网络接口的数据包

监视指定主机和端口的数据包
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123 


Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。但在Linux下很难找到一个好用的图形化抓包工具。
还好有Tcpdump。我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

lsmod

加载模块 insmod 
卸载模块 rmmod
lsmod查看当前系统已经加载的模块

网络配置

查看网卡的网速,判断是百兆还是千兆网口:ethtool eth0
linux 修改IP:https://blog.csdn.net/marywang56/article/details/77880501
修改网卡命令:
ifconfig eth0 192.168.0.3 netmask 255.255.255.0 
临时修改IP生效,如果想重启之后依然生效,可以修改网卡配置文件。

重启网卡命令:
centos: sudo service network restart 
ubuntu:sudo /etc/init.d/networking restart

网卡配置文件:
centos: 修改 /etc/sysconfig/network-scripts/ifcfg-eth0
ubuntu: 修改 /etc/network/interfaces

网络
ifconfig    是显示激活状态下的网络信息
ifconfig -a      显示全部接口信息
ifconfig eth1 up    激活网卡

单网卡下增加多个IP地址的方法
ifconfig eth1:1 192.168.6.22 netmask 255.255.255.0 

IPV6
Windows里的ping命令,既可以ping IPV4的地址,也可以直接ping IPV6的地址,但是Linux里不一样,Linux里ping IPV4地址是:ping 191.168.50.201
但是ping IPV6地址是ping6命令:ping6 -I eth0 fe80::4aea:63ff:fe6f:3a95
windows下:ping fe80::4aea:63ff:fe6f:3a99%14  带个接口编号,ipconfig查

Linux里批量添加IPV6地址:
ifconfig eth1 inet6 add fe80::4aea:63ff:fe6f:3a50/64        去掉inet6也行
ifconfig eth1 inet6 del fe80::4aea:63ff:fe6f:3a50/64

 

定时任务

crontab -l  查看
crontab -e  编辑
crontab -r  删除
service crond reload
每10分钟执行命令echo c > /proc/sysrq-trigger
*/10 * * * * echo c > /proc/sysrq-trigger  
分 时 日 月 周

每周六23点挂机
1. crontab -e
2. 0 23 * * 6 poweroff
3. service crond reload

ls

ls    显示非隐藏文件的文件名,按文件名进行排序。
ls -l 别名 ll    列出长字符串,包含文件的权限、属性等信息。
ls -a  显示全部的文件,包括隐藏文件,以.开头的文件
ls -lh  以K M形式列出文件大小

du

du: du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看
du -sh *
-s 仅显示总计,只列出最后加总的值
-h 以K,M,G为单位,提高信息的可读性

df

df: 显示磁盘分区上的可使用的磁盘空间
df -h

uniq

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
-c或——count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;

sort

sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
sort -rnk 1      r表示逆向排序, n表示按数值排序, k表示按第k列进行排序

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值