1、Linux常用命令
1.1、系统命令
重启
reboot 执行命令后立即重新启动操作系统。
shutdown -r now 重新启动操作系统,shutdown会给别的用户提示
关机
shutdown 执行命令后,提示一分钟后关闭操作系统。
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:25 :系统在今天的20:25 会关机
shutdown -h +10 :系统再过十分钟后自动关机
显示当前所在目录:pwd
清屏:clear
帮助:--help 例如:ls --help
⼿册: man 命令 例如:man ls 退出:q
查看CPU核数 lscpu命令,结果中查看CPU(s):后边的数字即可
登录相关
who或者w:显示目前登入系统的用户信息
-q或--count : 只显示用户的登录账号和登录用户的数量
-u或--heading : 显示列标题
远程连接(连接其他Linux服务器): ssh -p 2222 myuser@192.168.0.1 -p是指定远程端口号
切换登陆: ssh -l test -p 22 192.168.19.128
应用查找
查看应用的安装路径:whereis nginx
which: 查找⼯具-查找应⽤程序或命令所在位置
例如:which mysql、which ls;
不可找⽂件
curl验证nginx启动成功
curl IP:PORT 端口80可以省略不写
时间相关
date 显示当前系统时间
date -s “2014-01-01 10:10:10“ 设置系统时间
date 081315002024.0 修改系统时间
系统信息查看
hostname 查看当前主机名
发行信息:lsb_release -a 、cat /etc/issue 、 cat /etc/centos-release或cat /etc/redhat-release、cat /etc/os-release
CentOS Linux release 7.9.2009 (Core)
内核信息:cat /proc/version 、uname -a、uname -sr
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
2.6.32-696.el6.x86_64 为内核版本
uname 显示系统信息
uname -a 显示本机详细信息
依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称
目录或文件大小查看
du 显示目录或文件的大小。
du –h 显示当前目录的大小
du -sh ./logs 查看日志文件所占空间大小
du -sh * 看日志文件的大小(进入到logs下)
环境变量
修改后使之生效 source /etc/profile
定时任务
查看配置的定时任务
crontab -e
crontab -l
1.2、进程命令
查进程
ps -aux
ps -ef
以上两个没有区别
常用选项说明:
-a : 显示终端上的所有进程,包括其他用户的进程
-u : 显示进程的详细状态
-x :显示没有控制终端的进程
ps 正在运行的某个进程的状态
ps -ef(相当于查看window进程) | grep java寻找进程中包含java关键字的,grep的不算。
jps 查看进程,jdk中的命令,Bootstrap就是Tomcat的进程。
jps -l信息会全一点
进程内存排序
ps aux --sort=-%mem
ps auxww --sort=-%mem 查看详细进程信息
杀进程
kill 进程PID
强制删除: kill -9 进程PID
-9:强制删除选项
统计当前系统中的进程数
ps -ef | wc -l
wc -l:这是一个用于统计行数的命令
如何使⽤⼀条命令来完成杀java进程
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
思路:
1、获取JAVA进程pid
2、使用kill -9 pid
1.3、端口命令
查看系统中开放哪些端⼝
netstat 可以查看当前系统网络状态及对应软件使用的端口
netstat -anput 想要知道系统中有哪些端⼝已被使⽤,就使⽤此命令
netstat -ntulp | grep 端口号 查询指定端口
netstat -lanp | grep 6379 根据端口号得到其占用的进程的详细信息
netstat –anopt|grep sshd 查看ssh的端口
ss -anp | grep 21 查看端口
常用选项说明:
常用参数-anplt
-a 显示所有活动的连接以及本机侦听的TCP、UDP端口
-l 显示监听的server port
-n 直接使用IP地址,不通过域名服务器
-p 正在使用Socket的程序PID和程序名称
-r 显示路由表
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-w 显示RAW传输协议的连线状况
lsof查看系统监听端口
lsof(list open files)是一个列出当前系统打开文件的工具,可以查看系统中正在使用端口的详细信息
lsof -i :如果不给出条件,则默认显示所有进程打开的所有
lsof -i:端⼝号 列出使用端口3306的进程信息,此命令必须在root账户下使⽤
测试端口是否可以通信
telnet 192.168.14.112 11526 ,如果防火墙开启或者端口没有开放是链接不成功的。
1.4、账户管理
添加账户
useradd -g 组 ⽤户名
useradd -g root user01
useradd test 添加test用户
useradd test -d /home/t1 指定用户home目录
删除用户
userdel test 删除test用户(不会删除home目录)
userdel –r test 删除用户以及home目录
修改密码
passwd 账户名 用于设置指定用户的密码 (执行命令的用户必须为root)
passwd user01,为user01用户设置密码
切换⽤户
su ⽤户名
su - : 切换到root用户
su root --> 需要填写root的密码
由普通用户切换到其他用户时,需要输入密码
sudo su - 切换root用户
sudo -i
1.5、退出
命令: exit
多⽤户退出原理:
1.6、服务相关
将nginx服务加入chkconfig管理列表:
chkconfig --add redis
chkconfig --add /etc/init.d/nginx
检查mysqld服务是否已经生效
chkconfig --list mysqld
chkconfig --list
设置开机自动启动
chkconfig nginx on
关闭开机自动启动
chkconfig nginx off
设置开机启动
systemctl enable nginx
systemctl enable nginx.service
关闭开机启动设置
systemctl disable nginx
查看服务状态
systemctl status nginx
启动redis
service redis start
关闭redis
service redis stop
开机自启文件配置位置
/etc/init.d 指向-> /etc/rc.d/init.d
mysqld
nginx
redis
1.7、安装包相关
安装包在线下载
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
yum命令(推荐)
yum install -y samba samba-common samba-client samba包在线安装
yum list installed | grep sysstat 是否安装了某个程序
rpm查找命令
rpm -qa | grep openssl
rpm查找安装位置
rpm -ql keepalived
rpm包安装
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm包卸载
rpm -e nginx-1.20.2-1.el7.ngx.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
gem包安装
gem install redis-3.0.gem
1.8、网络通讯命令
获取ip地址: ip a、ip addr、ifconfig
网卡操作
ifconfig eth0 up 启用eth0网卡(相当于网络设置里边的开启和关闭网卡)
ifconfig eth0 down 停用eth0网卡(在客户端停用网卡,客户端就连不上了,需要到服务器开启网卡才能连接)
网络操作
ping 192.168.0.1 探测网络是否畅通。
ip add show eth1 从eth1网卡中查看当前IP情况
1.9、性能相关
cpu、内存查看
free 显示内存状态
free –m 以mb单位显示内存情况
top命令
top命令用于实时动态查看系统进程相关信息
top:相当于windows中的任务管理器,可以查看瞬时进程情况及CPU、内存情况。
常⽤:性能测试使⽤
参数:
p: 根据CPU使用率大小降序显示进程信息
m:根据内存的大小降序显示进程信息
q: 退出top命令或者按 ctrl+c也可以退出
列解释
PID:进程ID,用于标识进程。
USER:进程所有者的用户名。
PR:进程优先级。
NI:进程的“nice”值,用于确定进程的调度优先级。
VIRT:进程使用的虚拟内存大小,单位是KB。
RES:进程使用的物理内存大小,单位是KB。
SHR:进程使用的共享内存大小,单位是KB。
S:进程的当前状态。
%CPU:进程使用的CPU时间百分比。
%MEM:进程使用的物理内存百分比。
TIME+:进程使用的CPU时间总和,单位是秒。
COMMAND:进程启动的命令行参数。
系统CPU、内存排序
top -o %CPU
top -o %MEM
Shift + P键,将进程按照CPU使用率从高到低排序
Shift + M键,将进程按照内存使用量从高到低排序
top -p <PID> 使用top命令查看该进程的CPU内存情况:
Java进程一天内占用的最大CPU和内存分别是多少?
top -b -n 1 -p <PID> > top_output.txt -b选项表示以批处理模式运行top,-n选项表示运行一次top。
jstat -gcutil <PID> 1000 86400 > jstat_output.txt
jstat命令的第二个参数1000表示每隔1000ms输出一次内存使用情况,第三个参数86400表示运行时间为一天(单位是秒)。
使用awk命令从top_output.txt文件中提取CPU占用率的最大值
awk '{if($1 == "<PID>") print $9}' top_output.txt | sort -nr | head -n 1
1表示top输出的第一列,即进程ID,9表示top输出的第九列,即CPU占用率。
使用awk命令从jstat_output.txt文件中提取堆内存使用率的最大值。
awk '{if(NR > 1) print $4}' jstat_output.txt | sort -nr | head -n 1
NR表示当前行号,如果当前行号大于1,则输出第四列,即堆内存使用率
sort -nr:将输入的数据进行排序,其中“-n”表示将输入解释为数字,而“-r”表示按照相反的顺序(从大到小)进行排序
head -n 1:从排序后的结果中选出第一行,即最大值。
1.10、网络流量
抓取所有网口指定端口和ip的通信网络数据:
tcpdump -i any dst port 14526 and host 192.168.14.112 -Al any全部端口
tcpdump -i eth4 host 172.18.23.114 and dst port 514 -Aenl -i指定某个网口eth4
流量回放
tcpreplay -i eno1 -M 1 -l 0 ttt/* > /dev/null 2>&1 &
tcpreplay --mbps=27 <pcap文件>
tcpreplay -i eth0 -tK --mbps=27 <pcap文件名>
pcap包
sudo tcpdump -i eno1 -w capture.pcap pcap制作
sudo tcpdump -r capture.pcap tcpdump 命令来分析 pcap 文件
使用tcpreplay工具将多个pcap包合并成一个
tcprewrite --infile=a.pcap,b.pcap,c.pcap --outfile=merged.pcap
使用mergecap命令将多个pcap文件合并为一个
mergecap -w output.pcap input1.pcap input2.pcap input3.pcap ...
mergecap -w output.pcap /path/to/directory/*.pcap
流量监控
iftop -i eth1
2、压测工具stress
CPU内存压测
Ubuntu安装环境: apt-get install stress
使用:
stress --cpu 2 -t 60s 表示持续一分钟的2核心压力测试。
stress -m 3G -t 600s 将占用3GB 内存,并保持 600 秒
3、操作其它服务
mysql
mysql
mysql -uroot -p123456 -h 172.17.18.14:mysql限制了本机登录:只能登录别的机器的
\G的使用:在 MySQL 中,
\G
是用来替代;
分号的一个命令结束符。当你在 MySQL 命令行客户端中输入 SQL 查询语句时,使用\G
可以让查询结果以更易读的格式展示出来,每行一个字段,而不是普通的方式显示在一行上。
行转列