Linux常用命令
2019-02-21 16:55:57 89 举报AI智能生成
开发人员Linux常用命令
linux
命令
开发人员
模版推荐
作者其他创作
大纲/内容
文件操作
操作
pwd
ls
cd
cp
scp
scp local_file remote_username@remote_ip:remote_folder <br>
rm
mv
touch
一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式)
二是用来创建新的空文件
ln
软连接
ln -s 源地址 目的地址
硬连接
ln 源地址 目的地址
文件夹不支持硬连接
查看
cat
连接文件并打印到标准输出设备上
cat -n filename
带上行号打印文件内容
find
用来在指定目录下查找文件
head
tail
tail notes.log
显示文件的最后 10 行
tail -f notes.log
循环读取文件
more
less
文本处理
grep
grep '字符' 文件
egrep
sed
sed '命令' 文件
awk
awk '条件{命令}' 文件
wc
统计指定文件中的字节数、字数、行数
特殊符号命令
# 井号 (comments)
~ 帐户的 home 目录
; 分号 (Command separator)
在 shell 中,担任"连续指令"功能的符号就是"分号"
'string' 单引号 (single quote)
被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
"string" 双引号 (double quote)
被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同。
/ 斜线 (forward slash)
根目录
\ 倒斜线
1. 放在指令前,有取消 aliases的作用;
2. 放在特殊符号前,则该特殊符号的作用消失;
3. 放在指令的最末端,表示指令连接下一行
| 管道 (pipeline)
pipeline 是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。
: 冒号
在 bash 中,这是一个内建指令:"什么事都不干",但返回状态值 0
$ 钱号(dollar sign)
变量替换(Variable Substitution)的代表符号
在 Regular Expressions 里被定义为 "行" 的最末端 (end-of-line)
${} 变量的正规表达式
${parameter:-word}
${parameter:=word}
${parameter:?word}
${parameter:+word}
${parameter:offset}
${parameter:offset:length}
${!prefix*}
${#parameter}
${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
${parameter/pattern/string}
${parameter//pattern/string}
$*
引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,然后依此类推
$? 状态值 (status variable)
UNIX(linux) 系统的进程以执行系统调用exit()来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。
$$
代表当前shell 的 PID
输出/输入重导向
>
cmd > file
把cmd命令的输出重定向到文件file中。如果file已经存在,则清空原有文件
>>
cmd >> file
把cmd命令的输出重定向到文件file中,如果file已经存在,则把信息加在原有文件後面
<
cmd < file
使cmd命令从file读入
<<
cmd << text
从命令行读取输入,直到一个与text相同的行结束。
:>
: > filename
把文件"filename"截断为0长度.
如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同)
>&
cmd >&-
关闭标准输出
&>
2&>
2<>>&
>&2
文件描述符
文件描述符 名称 常用缩写 默认值<br> 0 标准输入 stdin 键盘<br> 1 标准输出 stdout 屏幕<br> 2 标准错误输出 stderr 屏幕
> 等同于 1>
< 等同于 0<
& 后台工作
单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作
系统服务
systemd
参考
CentOS 7 Systemd 入门
Systemd 入门教程:命令篇
Systemd 入门教程:实战篇
Systemd 添加自定义服务(开机自启动)
服务配置
服务配置文件
/usr/lib/systemd/
system型
/usr/lib/systemd/system
比如像mysql这种不用登陆就可以运行的就是system型
user型
/usr/lib/systemd/user
用户登录后才能运行的程序
配置文件格式
参考
文件命名
/etc/systemd/system/<服务名称>.service
[Unit]<br>启动顺序与依赖关系<br>
Description
服务的简单描述
Documentation
服务文档URL
After
依赖,仅当依赖的服务启动之后再启动自定义的服务单元
network.target remote-fs.target nss-lookup.target
[Service]<br>启动行为<br>
Type
启动类型
simple(默认值)
systemd认为该服务将立即启动。服务进程不会fork。<br>如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。
forking
后台运行的形式
systemd认为当该服务进程fork,且父进程退出后服务启动成功。<br>对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。<br>使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
oneshot
这一选项适用于只执行一项任务、随后立即退出的服务。<br>可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
notify
与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。<br>这一通知的实现由 libsystemd-daemon.so 提供。
dbus
若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。
PIDFile
pid文件路径
/run/nginx.pid
ExecStartPre
启动前要做什么,比如测试配置文件
/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart
启动
/usr/sbin/nginx -c /etc/nginx/nginx.conf
TimeoutStartSec
ExecReload
重载
/bin/kill -s HUP $MAINPID
ExecStop
停止
/bin/kill -s QUIT $MAINPID
PrivateTmp
True表示给服务分配独立的临时空间
[Install]
WantedBy
服务安装的用户模式
multi-user.target
权限
754权限
查看配置项
systemctl show iot-box-agent.service
systemctl show iot-box-agent.service -p TimeoutStartUSec<br>
systemctl show iot-box-agent.service -p TimeoutStopUSec<br>
systemctl show iot-box-agent.service -p TimeoutStartUSec<br>
重新加载服务配置文件
如果该服务不能重启,但又必须使用新的配置,这条命令会很有用。
systemctl reload <service>
重新读取所有服务项
修改、添加、删除服务项之后需要执行以下命令。
systemctl daemon-reload
服务、系统状态的查看
查看开机项
systemctl list-unit-files
旧指令
chkconfig --list
查看系统所有安装的服务项
systemctl list-unit-files --type=service
查看系统所有运行的服务项
systemctl list-units --type=service
查看系统所有开机自启动的服务项
systemctl list-unit-files --type=service | grep enabled
查看服务项的依赖关系
systemctl list-dependencies <服务项名称>
查看系统启动耗时
systemd-analyze
查看各项服务启动耗时
systemd-analyze blame | grep .service
查询服务运行状态
systemctl status <service>
旧指令
service httpd status
systemctl is-active <service>
显示启动失败的服务
systemctl --failed
服务管理
启动服务
systemctl start <service>
旧指令
service httpd start
停止服务
systemctl stop <service>
旧指令
service httpd stop
重启服务
systemctl restart <service>
旧指令
service httpd restart
开机运行服务
systemctl enable <service>
旧指令
chkconfig --level 3 httpd on
取消开机运行
systemctl disable <service>
旧指令
chkconfig --level 3 httpd off
禁用服务
systemctl mask <服务项名称>
启用服务
systemctl unmask <服务项名称>
日志管理
开启日志持久化存储
查看日志
journalctl -f -u iot-box-agent.service
journalctl -xe -u iot-box-agent.service
查看日志当前占用的磁盘空间
journalctl --disk-usage
修改日志最大占用的磁盘空间
服务运行级别
/etc/rc.d/rc[0-6].d
/etc/rc[0-6].d
软连接,为了保持和Unix的兼容性
后台运行进程
nohup command
setsid command
command &
( command &)
disown
screen
定时作业
watchdog
时间配置
查看时间和时区
查看系统时间
date -R
Sat, 15 Feb 2020 10:47:44 +0800
RFC 2822 format
日期相关的文件
/etc/localtime
描述本机时间
硬件时间
查看硬件时间
hwclock
Sat 15 Feb 2020 02:12:15 PM CST -0.121019 seconds
clock --show
Sat 15 Feb 2020 02:11:29 PM CST -0.460284 seconds
将系统时间写入硬件
hwclock -w
查看时间配置
timedatectl status
设置时间格式
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
将本机时间调整至目标时区的时间格式<br>
设置时区
列出所有时区
timedatectl list-timezones
/usr/share/zoneinfo/Asia/*
这里边放着亚洲主要城市的时间
更改时区
方法1
timedatectl set-timezone Asia/Shanghai
方法2
echo "Asia/Shanghai" > /etc/timezone
方法3
环境变量设置,TZ='Asia/Shanghai'
~/.bash_profile
/etc/profile
网络较时NTP
原理
1. 主机当然需要启动 daemon<br>2. Client 会向 NTP Server 发送出调校时间的 message<br>3. NTP Server 会送出目前的标准时间给 Client<br>4. Client 接收了来自 Server 的时间后,会据以调整自己的时间。
搭建服务端
1. 安装NTP
yum install -y ntp ntpdate
CentOS/RHEL
apt-get install ntp
Debian/Ubuntu
2. 配置NTP
/etc/ntp.conf
3. 添加防火墙
iptables –A INPUT –p udp –i eth0 –s 10.0.7.0/24 –dport 123 –j ACCEPT
4. 启动ntpd
网络时间服务器
ntp1.aliyun.com<br>ntp2.aliyun.com<br>ntp3.aliyun.com<br>ntp4.aliyun.com<br>ntp5.aliyun.com<br>ntp6.aliyun.com<br>ntp7.aliyun.com<br>
0.cn.pool.ntp.org<br>1.cn.pool.ntp.org<br>2.cn.pool.ntp.org<br>3.cn.pool.ntp.org
配置客户端
安装NTP
yum install -y ntpdate
使用ntpdate同步(手动)
ntpdate cn.pool.ntp.org
自动同步
vi /etc/crontab
00 0 1 * * ntpdate -s cn.pool.ntp.org:;hwclock -w
每月一号同步
* */1 * * * ntpdate -s cn.pool.ntp.org;hwclock -w
每一个小时同步
ntpd同步日志
/var/log/ntpdate.log
审计
last
last reboot
history
添加记录时间
echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
source ~/.bash_profile
Other
watch
su
用于切换当前用户身份到其他用户身份
sudo
用来以其他身份来执行命令,预设的身份为root
source
使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
systcl
用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中
ssh
ssh [-l login_name] [-p port] [user@]hostname
tar
压缩tar.gz
tar -zcvf webfile.tar.gz webfile
解压tar.gz
tar -xzvf file.tar.gz
curl
-c
接收cookies
-b
发送cookies
-G
-d
data
-F
form
软件包
软件包组成
二进制程序
/bin<br>/sbin<br>/usr/bin<br>/usr/sbin<br>/usr/local/bin<br>/usr/local/sbin<br>
库文件
/lib<br>/lib64<br>/usr/lib<br>/usr/lib64<br>/usr/local/lib<br>/usr/local/lib64
配置文件
/etc
帮助文件
/usr/share/man
安装方式
通用二进制编译
网上下载,解压使用
软件包管理器
rpm
deb
软件包前端管理工具
yum
适用于Redhat、CentOS、Suse等平台
主配置文件
/etc/yum.conf
客户端配置文件
/etc/yum.repos.d/
常用命令
缓存
yum makecache
yum clean headers
释放头文件
yum clean packages
清除包文件
yum clean all
清除缓存目录下的软件包及旧的 headers
查询
yum search xxx
查找软件包
yum -C search xxx
本地搜索软件包
yum list
列出所有可安装的软件包
yum list updates
列出所有可更新的软件包
yum list installed
列出所有已安装的软件包
yum list installed |grep jdk
yum list extras
列出所有已安装但不在 Yum Repository 内的软件包
yum info
使用YUM获取软件包信息
包管理
yum install
yum -y install java-11-openjdk-headless.x86_64<br>
yum remove
yum -y remove java-1.8.0-openjdk-headless.x86_64
yum -y update
升级所有包同时也升级软件和系统内核<br>
yum -y upgrade
只升级所有包,不升级软件和系统内核<br>
apt-get
适用于Debian、Ubuntu等平台
源
/etc/apk/repositories
apk
适用 docker alpine linux 平台
参考
alpine包管理工具 --apk
源码包安装
gcc
make
系统日志
/var/log
/var/log/dmesg
核心启动日志
/var/log/messages
系统报错日志
系统启动时的状态信息,运行时的状态信息。
比如某个人的身份切换为 root等
如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。
/var/log/maillog
邮件系统日志
/var/log/xferlog
FTP系统日志
/var/log/secure
安全信息和系统登录与网络连接的信息
/var/log/wtmp
记录所有的登录和退出登录,二进制文件,须用last来读取内容
who -u /var/log/wtmp
/var/log/spooler
News日志
/var/log/rpmpkgs
RPM软件包
/var/log/XFree86.0.log
记录 Xfree86 Xwindows 服务器最后一次执行的结果。
如果进系统图形界面失败就找他。
/var/log/boot.log
引导日志 记录开机启动讯息
dmesg | more
/var/log/cron
cron(定制任务日志)日志
/var/log/lastlog
记录每个用户最后的登录信息
/var/log/btmp
记录错误的登录尝试
/var/log/auth.log
需要身份确认的操作
/var/log/audit/audit.log
/var/log/syslog
/var/run/utmp
记录着现在登录的用户
知识点
什么是虚拟内存(swap交换区)
如何快速释放TCP
禁用OS防火墙
Linux 发行版
Debian
更新方式是APT,软件包管理系统是dpkg
Ubuntu
基于Debian发行版和GNOME桌面环境
Linux Mint
基于Debian和Ubuntu的Linux发行版
目的是为家庭用户和企业提供一个免费的,易用的,舒适而优雅的桌面操作系统
Red Hat Linux
Red Hat Enterprise Linux<br>RHEL
商业应用领域
每五年左右更新一次
每个版本提供7年的支持
CentOS
是RHEL的克隆版
更新方式是yum,软件包管理方式是RPM,默认用户界面是GNOME/KDE
Fedora
个人应用领域
免费使用
主要用于桌面版本,提供了较多新特性的支持
操作系统
查看版本当前操作系统发行信息
cat /etc/centos-release
适用于CentOS
CentOS Linux release 7.2.1511 (Core)
cat /etc/redhat-release
适用于Redhat
CentOS Linux release 7.2.1511 (Core)
cat /etc/issue
适用于所有Linux发行版
Red Hat Enterprise Linux Server release 5.6 (Tikanga)<br>Kernel \r on an \m
lsb_release -a
适用于所有Linux发行版
hostnamectl
Static hostname: jenkins<br> Pretty hostname: Jenkins<br> Icon name: computer-vm<br> Chassis: vm<br> Machine ID: db1c4ae82c3339f72246f48061105e42<br> Boot ID: dd0fa6d14a40487caf89396ab9b5008e<br> Virtualization: kvm<br> Operating System: CentOS Linux 7 (Core)<br> CPE OS Name: cpe:/o:centos:centos:7<br> Kernel: Linux 3.10.0-862.3.2.el7.x86_64<br> Architecture: x86-64
查看当前操作系统内核信息
cat /proc/version
Linux version 2.6.32-696.el6.x86_64 (mockbuild@c1bm.rdu2.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:05 UTC 2017<br>
uname -a <br>
Linux jenkins 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Linux Kernel
查看当前Linux版本是多少位
getconf LONG_BIT
64
uname -a
显示x86_64 标识64位 否则就是32位
file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=6129e7403942b90574b8c28439d128ff5515efeb, stripped
file /sbin/init
Shell脚本解释器
类型
sh
Bourne shell
Unix标准shell
bash
Bourne Again shell
Linux标准shell
ash
Almquist shell
轻量级shell,低内存环境
24条内部指令
csh
C shell
52条内部指令
tcsh
ksh
Korn shell
42条内部指令
zsh
Other
查看当前系统支持的shell类型
cat /etc/shells
查看某个用户的Shell类型
cat /etc/passwd | grep ^root
查看正在运行shell的类型
echo $0
echo $$
ps -p {pid}
系统信息
/proc
/proc/cpuinfo
CPU的类型和速度
/proc/stat
Linux平台Cpu使用率的计算
/proc/meminfo
内存
/proc/diskstats
磁盘
/proc/devices
设备
环境变量
系统环境变量
/etc/profile
用户环境变量
~/.bash_profile
进程
ps
ps -ef
显示所有进程信息,连同命令行
ps -ef | grep java
ps -T -p {pid}
查看指定进程的子进程或线程
ps -e| awk '{count[$4]++;} END {for(i in count) {print count[i] "\t" i}}'| sort -r<br>
按进程名称,统计个数
ps -u root
显示指定用户进程
ps -l
将目前属于您自己这次登入的 PID 与相关信息列示出来<br>
ps -aux
列出目前所有的正在内存当中的程序
ps -aux --sort -pcpu | less
根据 CPU 使用来升序排序
ps -aux --sort -pcpu,+pmem | head -n 10
ps -aux --sort -pmem,-pcpu | head -n 10
ps -aux --sort -pmem | head -n 10
ps -eo pid,user,args
查看现在有谁登入了你的服务器
watch -n 1 'ps -aux --sort -pmem,-pcpu | head -n 20'
使用PS实时监控进程状态
pstree
系统支持的最大线程数
cat /proc/sys/kernel/pid_max
内核所能使用的最大线程数
cat /proc/sys/kernel/threads-max
系统限制某用户下最多使用的线程或进程数
ulimit -a|grep processes
单个进程可创建的线程数
cat /proc/sys/vm/max_map_count
系统已经使用进程或线程数
pstree -p | wc -l
查询当前某程序的线程或进程数
pstree -p 3660 | wc -l
pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l
查看一个进程启动的线程数
ps -mp <PID>
CPU
查看cpu相关信息,包括型号、主频、内核信息等
cat /proc/cpuinfo
top
Process info
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
命令名/命令行
vmstat 5 5
vmstat [-V] [-n] [delay [count]]
输出分析
procs
r
等表示运行和等待CPU时间片的进程数
如果这个值长期大于系统CPU个数,就说明CPU资源不足,可以考虑增加CPU;
b
处表示在等待资源的进程数,比如正在等待I/O或者内存交换等
memoy
swpd
虚拟内存使用情况,单位:KB,表示切换到内存交换区的内存大小,
如果swap值不为0或者比较大,只要si、so的值长期为0,这种情况一般属于正常情况。
free
空闲的物理内存,单位KB
buff
用作缓存的内存大小,单位KB(将要写入磁盘的),表示buffers cached内存大小,也就是缓冲大小,一般对块设备的读写才需要缓冲。
cache
用作缓存的内存大小,单位KB(从磁盘中读出来的)。表示page cached的内存大小,也就是缓冲大小,一般作为文件系统进行缓冲,频繁访问的文件都会被缓存
如果cache值非常大说明缓存文件比较多,如果此时io中的bi比较小,说明文件系统效率比较好。
swap
si
从磁盘交换到内存的交换页数量,单位:KB/S(每秒从交换区写到内存的大小);表示从磁盘调入内存,也就是内存进入内存交换区的内存大小;
so
从内存交换到磁盘的交换页数量,单位:KB/S(每秒写入交换区的内存大小),也就是由内存交换区进入内存的内存大小;
一般情况下,si、so的值都为0,如果si、so的值长期不为0,则说明系统内存不足,需要增加系统内存;
io
bi
由块设备读入数据的总量,即读磁盘,单位kb/s
bo
写到块设备数据的总量,即写磁盘,单位kb/s
如果bi+bo值过大(超过1000算大),且wa值较大,则表示系统磁盘IO瓶颈
system
in
表示某一时间间隔内观测到的每秒设备的中断数,包括时钟中断
cs
每秒产生的上下文切换次数
这2个值越大,则由内核消耗的CPU就越多。
cpu
us
用户进程消耗的CPU时间百分比
us值越高,说明用户进程消耗cpu时间越多,如果长期大于50%,则需要考虑优化程序或算法。
sy
表示系统内核进程消耗的CPU时间百分比
一般来说us+sy应该小于80%,如果大于80%,说明可能出现CPU瓶颈
id
空闲状态的时间百分比(包括IO等待时间)
wa
表示IO等待所占用的CPU时间百分比
wa值越高,说明IO等待越严重
如果wa值超过20%,说明IO等待严重
引起I/O等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘访问监控器的带宽瓶颈(主要是块操作)造成的
iostat -c 1 10
内存
free
字段描述
Mem<br>物理内存
total
系统可用内存总量
数量上等于系统物理内存减去内核保留的内存
used
总计分配给缓存(包含buffers 与cache )使用的数量
used = total - free - buffers - cache
free
未被分配的内存
shared
多个进程共享的内存总额
buff/cache
系统分配但未被使用的buffers/cache
buffers
缓冲内存
给磁盘写入数据加速的
cache
缓存内存
给磁盘读取数据时加速的
avaliable
还可以被应用程序使用的物理内存大小
available 小于 free + buffer + cache
Swap<br>虚拟内存
totoal
虚拟内存交换空间总量
used
交换区使用量
free
有多少空闲的交换区
空闲内存=free+buffers+cached=total-used
free -h
ll -h /proc/kcore
内存镜像
cat /proc/meminfo
ps -orss --no-headers --pid {pid}
查看指定进程的物理内存使用量,单位KB
文件描述符
lsof
用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)
yum install lsof
lsof
lsof -n
COMMAND
PID
TID
USER
FD
TYPE
DEVICE
SIZE/OFF
NODE
NAME
线程ID
lsof -p
系统级别
统计系统打开句柄数
lsof -n | wc -l
用户级别
进程级别
统计各命令打开句柄数
lsof -n|awk '{print $1}'|sort|uniq -c|sort -nr
统计各进程打开句柄数
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr
统计各用户打开句柄数
lsof -n|awk '{print $4}'|sort|uniq -c|sort -nr
查看所有java进程打开句柄数
lsof -p $(ps -ef |grep java |awk '{print $2}'| tr '\012' ,) |wc -l
显示与指定目录交互的进程
lsof /var/log/messages/
查看指定进程打开的文件描述符
lsof -p {pid}
lsof -p {pid} | wc -l
lsof -n {pid}
lsof -n {pid} | wc -l
最大文件描述符限制
系统级限制
查看方式
sysctl -a | grep fs.file-max
cat /proc/sys/fs/file-max
查看系统最大描述符
/etc/sysctl.conf
fs.file-max = 512000
echo “fs.file-max=1610270” >> /etc/sysctl.conf
sysctl -p
立即生效
用户级限制
查看方式
ulimit -n
修改用户最大文件描述
echo “* hard nofile 65536” >> /etc/security/limits.conf<br>echo “* soft nofile 65536” >> /etc/security/limits.conf
代表所有用户,支持具体用户(优先级高,不受影响)。文件修改即生效,退出<br>或打开新终端执行ulimit -n即看到修改效果
进程级限制
查看方式
cat /proc/${PID}/limits | grep "Max open files"
进程最大描述符受限与系统/用户级,以及进程本身相关代码程序限制
Other
对于文件描述符增加的比例,资料推荐是以2的幂次为参考
磁盘
df -h
磁盘使用情况
文件系统 容量 已用 可用 已用% 挂载点
du
du -h --max-depth=1
当前的文件夹下的磁盘使用情况
du -sh
指定目录磁盘使用情况
du -h --max-depth=0
du -sh ./*
du -sh -m <path>
fdisk
查看当前分区
fdisk -l
逻辑卷管理器(LVM)
物理存储介质
指系统的物理存储设备
/dev/sda
/dev/hda
磁盘分区
计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。
硬盘分为两大类分区:主分区和扩展分区
主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。
物理卷(PV)
物理卷可以是一个磁盘,也可以是磁盘中的一个分区。它为LVM提供了存储介质。
物理盘区(PE)
卷组(VG)
由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。
逻辑卷(LV)
类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统
逻辑盘区(LE)
格式化逻辑卷
mke2fs
挂载逻辑卷
mount
卸载逻辑卷
umonut
硬盘分类
IDE硬盘
hd
hd{硬盘顺序号a-z}{分区序号1-n}
SCSI硬盘
sd
SATA硬盘
sd
虚拟硬盘
vd
磁盘IO
iostat
yum -y install sysstat
iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ][ device [...] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ]]
iostat -d -k 1 10
查看TPS和吞吐量信息
Device
tps
每秒I/O数(即IOPS。磁盘连续读和连续写之和)
Blk_read/s
每秒读取的 block 数
Blk_wrtn/s
每秒写入的 block 数
Blk_read
读入的 block 总数
Blk_wrtn
写入的 block 总数
iostat -d -x -k 1 10
查看设备使用率(%util)、响应时间(await)
Device
rrqm/s
每秒合并到设备的读取请求数
wrqm/s
每秒合并到设备的写请求数
r/s
每秒向磁盘发起的读操作数
w/s
每秒向磁盘发起的写操作数
rkB/s
每秒从设备读入的数据量,单位为 K。
wkB/s
每秒向设备写入的数据量,单位为 K。
avgrq-sz
发送到设备的请求的平均大小,单位是 扇区。
平均每次设备I/O操作的数据大小
avgqu-sz
发送到设备的请求的平均队列长度。
如果I/O请求压力持续超出磁盘处理能力,该值将增加
如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O性能问题。
需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O等待队列长度
await
I/O 请求平均执行时间,包括发送请求和执行的时间。单位是 毫秒。
一般地,系统I/O响应时间应该低于5ms,如果大于 10ms就比较大了
r_await
每个读操作平均所需的时间
不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间
w_await
每个写操作平均所需的时间
不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间
svctm
发送到设备的 I/O 请求的平均执行时间。单位是 毫秒。
平均每次设备I/O操作的服务时间 (毫秒)(这个数据不可信!)
%util
一秒中有百分之多少的时间用于I/O操作,即被IO消耗的CPU百分比
用于显示设备的带宽利用率
一般地,如果该参数是100%表示设备已经接近满负荷运行了
iostat -c 1 10
查看cpu状态
avg-cpu
%user
CPU处在用户模式下的时间百分比
%nice
CPU处在带NICE值的用户模式下的时间百分比
%system
CPU处在系统模式下的时间百分比
%iowait
CPU等待输入输出完成时间的百分比
如果该值较高,表示磁盘存在I/O瓶颈
%steal
管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle
CPU 空闲时间的百分比。
iotop
yum install iotop
iotop -o
vmstat 2 5
网络
ifconfig
查看网卡和IP
ip link
查看网卡状态
ping
利用ICMP协议,检查网络是否联通
网络层
telnet
检查TCP端口是否联通
传输层
lsof -i
select IPv[46] files
lsof -i 6
IPV6 流量
lsof -iTCP
TCP 连接
lsof -i :80
指定端口连接
lsof -i tcp:8080
查看指定端口的进程
lsof -i -sTCP:LISTEN
监听的端口
lsof -i -sTCP:ESTABLISHED
已建立的TCP连接
netstat
功能参数
netstat -a
display all sockets (default: connected)
netstat -at
只列出 TCP 协议的连接
netstat -l
display listening server sockets
netstat -i
辅助参数
netstat -n
禁用反向域名解析,加快查询速度
netstat -p
display PID/Program name for sockets
netstat -e
display other/more information
场景
查看核心路由
netstat -rn
查看所有 TCP 端口
netstat -at
查看所有监听 TCP 端口
netstat -lt
查看 TCP 端口统计信息
netstat -st
TCP连接的状态统计
netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'
显示网络接口列表
netstat -i
查找端口占用
netstat –anp | grep 6379
查看所有进程的TCP连接数,按进程排序
netstat -anpt | sort -k7,7 -k 6,6
字段介绍
netstat -anp
Proto
TCP
UDP
Recv-Q
网络接收队列
表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走
这两个值通常应该为0,如果不为0可能是有问题的。
packets在两个队列里都不应该有堆积状态。
可接受短暂的非0情况。
如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
Send-Q
网络发送队列
表示对方没有收到的,或者说没有Ack的数据,还是本地缓冲区.
如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。<br>
Local Address
Foreign Address
State
PID/Program name
traceroute
利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器
网络层
网络抓包
tcpdump
监视所有来自或去往IP的包<br>
tcpdump host 10.10.10.1<br>
网络流量
nethogs
nethogs eth0 eth1
nload
nc
TCP端口扫描
nc -v -z -w2 192.168.0.3 1-100
扫描UDP端口
nc -u -z -w2 192.168.0.1 1-1000
扫描192.168.0.3 的端口 范围是 1-1000
扫描指定端口
nc -nvv 192.168.0.1 80
扫描 80端口
iptables
查看已添加的iptables规则
iptables -L -n -v
DNS
查看DNS
cat /etc/resolv.conf
dig
查询DNS相关信息记录
nslookup
DNS解析是否正常
网关配置
路由配置
route -n
双网卡配置
评论
0 条评论
下一页