Skip to main content

shell 常用命令

基础操作#

ssh登录服务器#

ssh user@ip

linux 免密登录#

1.将登录服务器的公钥copy 到目标服务器 ~/.ssh/authorized_keys (保证.ssh 700 , authorized_keys 600,如果还是登录失败请 restorecon .ssh .ssh/authorized_keys )2.ssh work@192.168.x.x -i 私钥地址  (如果登录不上可以加-v进行调试) 说明:需要restorecon的原因可能是.ssh 或者 authorized_keys是从另的地方copy过来的,导致SElinux上下文权限一并copy过来,所以需要restorecon重置上下文3./var/log/secure 可以在服务端查询ssh登录日志信息进行调试

top#

shift+p 可以按处理器占用率排序 shift+m按内存

top -Hp pid  查看pid进程相关信息:包括:子线程信息,cpu占用

显示用户对资源的访问情况#

ulimit -a ulimit / man.linuxde.net

ulimit -a   查看当前用户线程vi /etc/security/limits.d/90-nproc.conf  修改用户能开启线程最大数vi  /etc/security/limits.conf  修改打开最大文件数

格式化函数 printf#

printf '%X\n' 1231  转16进制

传文件#

scp sourceAddr root@ip:/home/service

tar 压缩、解压缩#

压缩tar -czf libs.tar.zip libs 解压 tar -zxvf libs.tar.zip

网络相关#

网络诊断工具#

tcpdump抓包工具#

tcpdump tcp -i ens160 and dst port 80 or src net 127.0.0.1 -w ./target.cap

检查端口占用或者tcp连接情况 netstat -anltp | grep 1234#

安装netstatyum install net-tools分组查询某个tcp服务连接情况netstat -n | grep tcp | grep 9080 | awk '{print $6}' |sort | uniq -c查询本地tcp服务连接情况netstat -n | grep tcp | awk '{print $4 " " $6}' | sort | uniq -c | sort -rn | more 查询应用的连接数netstat -np | grep port | grep ip | awk  '{print $7}' | awk -F '/' '{print $1}' | sort | uniq -c 

sysstat 工具包相关应用#

1. iostat iostat -d -k 1 10        #查看TPS和吞吐量信息iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await)iostat -c 1 10            #查看cpu状态
2. sarsar -u 1 3      #查看cpu使用情况sar -q          #查看平均负载sar -r          #查看内存使用情况sar -d          #磁盘使用详情统计

网络链路工具#

traceroute#

traceroute www.baidu.com 

MTR#

链路测试工具 详细参考文档

安装mtryum install -y mtrmtr baidu.com

客户端,服务端socket工具#

nc/ncat(netcat) 创建服务监听或连接服务指令#

nc -l -p 9090  创建一下9090监听服务nc localhost 9090(server port) [-p 8090(client port)] 连接服务

ss 用来显示处于活动状态的套接字信息#

ss -s   显示socket相关统计信息ss -pl  查看相关进程与端口信息

域名查询/诊断工具#

host -a baidu.com host -a baidu.com 10.0.2.3  指定nameserver解析
nslookup baidu.com  判断域名解析服务器nslookup baidu.com 10.0.2.3  判断域名解析服务器dig工具查询/跟踪dns记录yum install -y bind-utilsdig baidu.comdig +trace baidu.comdig -x 127.0.0.1  根据IP查找域名(反解)

开发&测试#

time 统计程序耗时#

time ls#执行程序总时间(wall clock time 包括cpu执行其它程序时间)real    0m0.002s#ls 程序实际执行时间=user(用户空间) + sys(内核空间)user    0m0.000ssys     0m0.001s

ab 圧测#

安装ab

yum install httpd-tools

使用ab

ab -n 100 -c 10 baidu.com/-c 并发数  -n 请求总数

日志相关#

cat /var/log/messages  包括整体系统信息cat /var/log/dmesg            包含内核缓冲信息cat /var/log/boot.log    系统启动日志cat /var/log/yum.log  — 包含使用yum安装的软件包信息cat /var/log/cron   crontab 调度时间cat /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里cat /var/log/faillog – 包含用户登录失败信息。错误登录命令也会记录在本文件中
 /var/log/lastlog  用户最后登录日志  可以通过 lastlog 命令查询:lastlog   或者 lastlog -u root /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。

进程相关命令#

进程切换#

Ctrl + z  将进程放到后台进行jobs -l  查看后台进程fg  打开进程

pstree 当前某程序的线程或进程数#

安装 yum -y install psmiscpstree -p | wc -l   总线程数

查看进程相关信息 ps#

ps -p pid -o etime  查看进程运行总时长ps -ef | grep xxx   搜索某进程ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' |  sort -nrk5  查询内存等

lsof(list opened files) 列举系统中已经被打开的文件#

引用

lsof -i tcp:8080 查看端口占用lsof | grep deleted 查看已删除,还是被占用的文件:有时候出现rm后的文件,空间还是没有释放,原因可能是这个文件还被其它进程占用,可以通过此命令查看文件被打开情况,情况允许的情况下,重启相关应用,以确保释放空间lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr| 查看进程打开的文件句柄数

strace 追踪进程的系统调用#

安装stracesudo yum install -y stracestrace -f -t -o a.log ls

查询命令#

基础查询命令#

-S按文件大小排序  -h,显示文件大小 k,M,Gls -lthS系统内在使用量free -h按名字查看sudo find / -name nginx.config按大小查看文件  find / -type f -size +2G统计关键词数  `cat filename | grep hello | wc -l`

man#

# 支持查看内核方法yum install -y man-pages  1是普通的命令2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个 函数,需要加什么头文件)3是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件5是指文件的格 式,比如passwd, 就会说明这个文件中各个字段的含义6是给游戏留的,由各个游戏自己定义7是附件还有一些变量,比如向 environ这种全局变量在这里就有说明8是系统管理用的命令,这些命令只能由root使用,如ifconfig如:man 2 socket#查看系统调用man syscalls

查看操作系统版本#

cat /etc/redhat-releasecat /etc/issueuname -acat /proc/version

查看ip地址 ip addifconfig#

使用ifconfig需要安装 net-tools使用ip需要安装iprout2ip相关使用ip route show 列出路由条目ip route get 192.xx.xx.xx 获取某ip路由包ip addr show eth0 查看某网卡ip地址

du查看目录大小,df查看磁盘使用情况。#

du -sh du -h  --max-depth=1df -h

查询cpu信息#

查询cpu核心数 cat /proc/cpuinfo | grep "processor" | wc -l查询cpu个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

服务配置命令#

sysctl 用于运行时配置内核参数#

/etc/sysctl.conf  设置参数文件-a   显示所有的系统参数-p   从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

selinux 相关操作#

1、/usr/sbin/sestatus -v     如果SELinux status参数为enabled即为开启状态2、临时关闭(不用重启机器):    setenforce 0               设置SELinux 成为permissive模式     setenforce 1         设置SELinux 成为enforcing模式3、修改/etc/selinux/config 文件   将SELINUX=enforcing改为SELINUX=disabled   重启机器即可