linux系统shell常用的基本命令合计86个,根据个人习惯分了以下6类:系统快捷指令、系统管理指令、文件管理指令、文件权限指令、用户权限指令、资源管理指令。
系统快捷指令 | clear | clear | 清屏 |
tab | tab | 自动补全 | |
Ctrl+c | Ctrl+c | 中断任务 | |
Ctrl+z | Ctrl+z | 暂停任务到后台挂起 | |
系统管理指令 | reboot | reboot | 重启 |
shutdown | shutdown -h 0 | 关机 | |
uname | uname -a | 查看系统相关信息 | |
hostname | hostname testhost | 临时更改主机名 | |
chkconfig | chkconfig --list | 配置服务开机自启 | |
ulimit | ulimit -a | 查看资源限额 | |
uptime | uptime | 查看系统负荷 | |
w | w | 查看登录服务器的用户信息,而且可以看到这些用户做了什么 | |
whoami | whoami | 查看登录服务器的用户信息,而且可以看到这些用户做了什么 | |
which | which iptables | 显示命令的绝对路径 | |
mount | mount /dev/cdrom /mnt | 挂载光驱文件到/mnt | |
showmount -e s.hw.com | 查看可用的NFS Server | ||
mount.xnfs -o rsize=1048576,wsize=1048576,vers=3, sip=192.168.60.133_192.168.60.134 s.hw.com:/xnfs /mnt/DFSclient | 挂载nfs 文件 ◾vers=3:仅支持v3挂载,必须指定。 ◾tcp:使用tcp连接,必须指定,仅支持tcp。 ◾nolock:不使用nfs分布式锁,为了获得更好的性能,必须指定nolock参数。 ◾rsize:读粒度大小,默认为最大值1048576 Byte,根据文件系统默认块大小指定。 ◾wsize:写粒度大小,默认为最大值1048576 Byte,根据文件系统默认块大小指定。 | ||
mount.cifs //10.1.1.246/gongxiang /mnt --verbose -o user=gao | 挂载cifs 文件 | ||
mount -o loop 镜像文件 挂载点 | 挂载镜像文件 | ||
unmount /mnt | 卸载挂载目录 | ||
last | last | 查看最近1个月用户登录服务器的情况 | |
last reboot | 查看历史重启记录 | ||
id | id user1 | 查看用户信息 | |
date | date -s "2007-08-03 14:15:00" | 更改时间 | |
date -d "2010-11-01 00:00:00" +%s | 年月日标准时间格式(+%Y-%m-%d" "%H:%M:%S)转换为时间戳格式 | ||
date -d @1288540800 | 时间戳格式转化为年月日标准时间格式(+%Y-%m-%d" "%H:%M:%S) | ||
history | history -c | 清除history记录 | |
history -a | 将shell 缓存的记录,追加至~.bash_history 文件中 | ||
history -w | 将shell 缓存的记录,替换至~.bash_history 文件中 | ||
history -r | 将~.bash_history 文件中的数据刷新到shell 缓存中 | ||
ldd | ldd /usr/sbin/iptables | ldd可以列出一个程序所需要得动态链接库(so) | |
bc | echo "scale=0;$min_rat * $threshold/1" |bc | 用计算器计算两个值的乘积 | |
vi & vim | vi test.txt | 文本编辑器 | |
文件管理指令 | pwd | pwd | 显示当前目录 |
ls | ls | 默认查看当前文件列表 | |
ls -ltr | 按时间排序查看文件列表 | ||
ls -a | 显示隐含文件列表 | ||
ls -R | 递归显示显示文件列表 | ||
file | file test.txt | 用于辨识文件类型,该命令用来识别文件类型,也可用来辨别一些文件的编码格式 | |
cd | cd | 默认切换用户家目录 | |
cd - | 切换至上一次所在目录 | ||
df | df -h | 以更简易的方式显示空间大小与使用情况。 | |
df -i | 以inode模式来显示磁盘的文件数。磁盘在格式化文件系统的时候默认 16k 一个 inode,万一小文件过多 inode 会不够。 | ||
du | du -sh | 显示指定目录下每个文件或目录的容量大小,并且以易读方式显示 | |
cp | cp 源文件 目标文件 | 拷贝文件 | |
mv | mv /tmp/myfile /opt/mydir1 | 如果mydir1存在且是个目录,则将文件myfile移动到目录mydir1中,如果不存在就是直接移动了目录路径。 | |
mv /tmp/myfile /tmp/myfile2 | 同一个目录执行该命令代表修改目录、或者文件名称。 | ||
rm | rm php.txt | 指定删除php.txt文件 | |
rm -rf /tmp/abc | 参数-r是递归的意思,即可以删除非空目录;参数-f是强制的意思 | ||
mkdir | mkdir test | 创建test文件夹 | |
mkdir /tmp/hh/test | 创建多级目录 | ||
rmdir mydir1 | 删除目录mydir1 | ||
touch | touch myfile | 如果不存在会创建新文件,如果存在会变更文件的最后修改时间。 | |
cat | cat myfile | 查看指定文件 | |
cat > /etc/sysconfig/network/routes << EOF default 10.239.82.254 - - 10.183.96.128 10.242.3.254 255.255.255.128 eth1 EOF | 文件重定向 | ||
cat /proc/net/bonding/Ibond0 | 查看网卡的活动状态 | ||
cat /etc/rsyslog.conf|grep -vE “#|$” > ./rsyslog.conf.def | 去掉注释和空行 | ||
cat /sys/class/net/IbondX/bonding/slaves | 检查bondx 绑定持久化配置 | ||
more | more /etc/httpd/conf/httpd.conf | 分屏显示指定文件httpd.conf的内容,非常适合显示超过一屏的文本文件。每按一下空格键,向后翻一屏;每按一次回车键,向后翻一行 | |
less | less /etc/httpd/conf/httpd.conf | less与more功能很相似,只不过less功能更强大,支持PageUp键向前翻屏,及PageDown向后翻屏。 | |
head | head -n 10 /etc/httpd/conf/httpd.conf | 参数-n设置显示指定行数,本例会显示文件的头10行的内容。 | |
tail | tail -n 10 /etc/httpd/conf/httpd.conf | 参数-n设置显示指定行数,本例会显示文件的尾10行的内容。 | |
tail -f /etc/httpd/conf/httpd.conf | 动态查看文件 | ||
echo | echo "Hello" | 打印 | |
echo ‘mima_123‘ |passwd --stdion tom | 将mima_123打印输出并通过标准输入更改tom密码 | ||
echo >/tmp/hh.txt | 清空/tmp/hh.txt文件数据 | ||
diff | diff test mytest | 比较文件test与mytest是否相同,将不同之处输出到屏幕上。 | |
wc | wc -l /etc/nsswitch.conf | 参数-l的功能可统计出指定文件的行数。另外,利用参数-w统计单词,利用-c统计字符数。 | |
sort | sort mytest | 将指定文件以行为单位按正序输出 | |
sort -k1 -nr mytest | 按出现次数排序 | ||
uniq | uniq -c | 在输出行前面加上每行在输入文件中出现的次数。 | |
uniq -u | 仅显示不重复的行。 | ||
cut | cut -d: -f1 /etc/passwd | 参数-d用来定义字段之间的分隔符,参数-f指定提取第几个字段;本例为提取/etc/passwd文件中以“:”为分隔符的第1个字段。 | |
find | find / -name "dhcpd*" | 参数-name指明按文件名进行查找,即从/目录开始查找以dhcpd开头的所有文件。 | |
find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r | 将find命令的输出传递给ls,它将打印每个找到的文件的大小,然后将该输出传递给sort命令,以根据文件大小的第5列对其进行排序。 | ||
find . -cmin -5 | 从当前目录下查找5分钟之内修改过的文件 | ||
grep | grep "network" /etc/*.conf | 利用通配符可在多个文件中查找包含特定的字符串的行。本例会在/etc下扩展名为.conf文件中查找包含字符串“network”的行。 | |
grep -v "network" /etc/nsswitch.conf | 查找/etc/nsswitch.conf文件中不包含字符串“network”的行。 | ||
grep -Ev '^$|^\s*#' /etc/ansible/cfg | 就可以正常的去掉全部注释。 | ||
zgrep -aE "(\[ping_check\] drop fault local addr)" /var/log/oam/fsa/bak/dsware.{2022-03-22_{1[6-9],2[0-3]},2022-03-23}* > tmp_ping_drop 2> /dev/null | 按条件解压过滤文件 | ||
sed | sed -i '/checkSsh/ s/^\(.*\)$/#\1/g' /etc/crontab | 匹配到查询的内容checkSsh 注释这一行 | |
sed -i '/checkSsh/ s/#//g' /etc/crontab | 匹配到查询的内容checkSsh 删除注释: | ||
sed -i '/checkSsh/d' /etc/crontab | 匹配到查询的内容checkSsh 删除行: | ||
sed -i '/IPADDR/ s/^\(.*\)$/IPADDR=172.16.0.3/g' /etc/sysconfig/network-scripts/ifcfg-Ibond1 | 匹配到查询的内容checkSsh 替换这一行 | ||
awk | lsof |grep delete |awk “{print $2}”|xargs kill -9 | 将查询的进程杀掉 | |
awk '{print $1,$2}' rumenz.txt | 打印文件的前两列 | ||
awk '{print $NF}' rumenz.txt | 打印文件的最后一列 | ||
awk 'END{print NR}' rumenz.txt | 打印文件的总行数 | ||
cat /etc/passwd | awk -F ":" '{print $1" : "$7}' | 打印以: 为分割的第1列与第7列的信息 | ||
awk '/^[^$]/ {print $0}' rumenz.txt | 过滤空行 | ||
awk 'NF' rumenz.txt | 删除空行 | ||
cat 1.txt | awk '{a+=$1}END{print a}' | 求和 | ||
tar | tar -zcvf myetc.tar.gz /etc | 将目录/etc打包为一个名为myetc.tar.gz的文档。 | |
tar -zxf myetc.tar.gz -C /tmp | 文件解压到指定目录。 | ||
zip | zip -r 压缩文件夹.zip 要压缩的文件 | 压缩文件 | |
unzip 解压的文件.zip | 解压缩 | ||
文件权限指令 | chown | chown user1 hello.txt | 将指定文件hello.txt的属主(所有者)改为user1 |
chown user1:sheel hello.txt | 将指定文件hello.txt的属主(所有者)改为user1,属组(组织)改为wheel。 | ||
chown -R user1 mydir | 参数-R,表示递归,即可以深入到指定目录中的每一层,将所有子目录和文件的属主(所有者)改为指定的用户;本例中会将mydir目录中所有子目录和文件的属主设定为user1。 | ||
chgrp | chgrp mygroup1 hello.txt | 将指定文件hello.txt的属组改为mygroup1。 | |
chmod | chmod u+x host.conf | 字母u针对属主、g针对属组、o针对其他用户、a针对所有用户; =表示赋予(设置)指定权限,要注意它会覆盖原权限,+表示在原有权限的基础上增加指定权限,-表示在原有权限的基础上去掉指定权限; r、w、x三种权限,既可以单独使用也可以组合使用 为文件host.conf的属主增加执行权限。 | |
chmod g-w,o=x host.conf | 将文件host.conf的属组去掉写权限,同时将其他用户设置为只有执行权限,而文件属主的权限不变。 | ||
chmod -R 750 host.conf | 以8进制配置权限,加-R表示递归授权。 | ||
lsattr | lsattr /etc/hosts | 命令用于查看文件属性信息,可以查看chattr 加锁的配置。 | |
chattr | chattr +i /etc/hosts | 文件加锁 | |
chattr -i /etc/hosts | 文件解锁 | ||
link | ln -s 源文件 目标文件 | 对源文件建立符号连接,而非硬连接。 | |
用户权限指令 | groupadd | groupadd -g 5000 mygroup2 | 在Linux中每个用户有唯一的用户标识符UID,该UID是一个无符号整数。同时每个用户也必须至少属于一个组,也有组标识符GID。其中UID与GID独立编号。 创建一个新组mygroup2,并指定其GID号为5000,其中-g用来设置用户的主要组,每个用户都有一个主要组。 |
groupdel | groupdel mygroup2 | 删除指定的组,当某个组是某现有用户的主要组时,则不能被删除。 | |
groupmod | groupmod -g 501 mygroup2 | 变更组gid | |
useradd | useradd user1 | 创建一个用户user1,同时在/etc/passwd文件和/etc/shadow文件增加一行,并自动为用户创建相应的主目录:/home/user1。与用户相关的主要配置如下: /etc/passwd文件记录了系统中每个用户的用户名、UID号、GID号、主目录、shell等信息 /etc/shadow文件记录了每个用户的口令,以及口令保持周期等 /etc/login.defs 文件记录了登录用户的相关配置 /etc/pam.d/login 用户登入安全模块 /etc/pam.d/system-auth 密码设置及登陆控制文件 /etc/security下的文件则对于每个pam模块又做了具体的配置策略 | |
useradd -u 1300 -g lack,wheel -G lack -d /home/lack -s /bin/bash -m lack | 创建属于多个组的用户 | ||
userdel | userdel user1 | 普通删除用户 | |
userdel -r user2 | 删除指定的用户user2,同时删除其主目录。 | ||
usermod | usermod -u 601 -g 501 lack | 变更用户信息 | |
passwd | passwd user1 | 改变口令 | |
passwd -l user1 | 禁止用户登入 | ||
passwd –u user1 | 解锁用户登入 | ||
chage | chage -M 9999 user1 | 更改用户密码策率为永不过期 | |
chage -l user1 | 查看用户密码策率信息 | ||
资源管理指令 | lscpu | lscpu | lscpu从sysfs和/proc/cpuinfo收集cpu体系结构信息 |
lsmem | lsmem | lsmem从sysfs和/proc/meminfo收集mem体系结构信息 | |
free | free -h | 查看内存信息 | |
fdisk | fdisk -l | 查看磁盘信息 | |
lsblk | lsblk | lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息 | |
blkid | blkid -o list | 以列表形式查看磁盘详细信息(默认显示所有设备) | |
iostat | iostat -txkd 1 | 统计磁盘每一秒运行情况,主要关注await I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒 | |
ethtool | ethtool eth0 | 查看网卡信息 | |
ethtool -p eth0 | 点亮闪烁 eth0 网口 | ||
ethtool -m eth0 |grep "Laser output power" |head -1 | awk -F '/' '{print $2}' | 查看模块发光 | ||
ethtool -m eth0 |grep "Receiver signal" |head -1 | awk -F '/' '{print $2}' | 查看模块收光 | ||
ifconfig | ifconfig ifconfig eth5 10.183.238.67/26 | 查看所有IP地址信息 启动网卡 关闭网卡 | |
ifenslave | ifenslave -c bond0 eth1 | 将一个物理接口eth1作为active接口 | |
ifenslave bond0 eth1 | 将一个物理接口eth1添加至bond0 | ||
ifenslave -d bond0 eth0 | 从bond0中删除掉eth0 | ||
netstat | netstat -anp |grep LISTEN netstat -tuln | 直接统计tcp数量监听的数量 | |
netstat -an | 查询所有网络连接以及每一个网络接口设备的状态信息 | ||
netstat -tunlp | awk '/^tcp/{++a[$6]}END{for(i in a) print i,a[i]}' | 结合awk统计TCP连接数 | ||
sar | sar -n DEV 1 | 查看实时的网络流量。 | |
tcpdump | tcpdump -i any -Xs 0 -vvv host 10.0.0.1 and port 90 -w /opt/test.cap | 抓取任意接口与10.0.0.1主机数据报文,并显示抓包的数量 | |
lsof | lsof | lsof(list open files)是一个列出当前系统打开文件的工具 | |
lsof -i:22 | 查询22端口被哪个进程占用 | ||
lsof -u username | 查看用户打开哪些文件 | ||
ps | ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head | linux 下 取进程占用 cpu 最高的前10个进程 | |
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head | linux 下 取进程占用内存(MEM)最高的前10个进程 | ||
ps -aux | awk '$8 == "D","Z"' | 查找D状态或者Z状态进程 | ||
ps h -Led -o user | sort | uniq -c | sort -n | 统计每个用户起用的线程数有多少。 | ||
ip | ip -a | 查看所有网络信息 | |
ip route | 查看路由表 | ||
ip route add default via 192.168.10.3 | 添加默认路由 | ||
ip rule show | 显示路由规则 | ||
ip rule add from 192.168.1.0/24 pref 1001 table test1 | 添加策略路由 | ||
ip rule del from 192.168.1.0/24 pref 1001 table test1 | 删除策略路由 | ||
ip addr add 192.168.10.111/24 dev eno16777736 | 设置IP地址 | ||
ip addr del 192.168.10.111/24 dev eno16777736 | 删除IP地址 | ||
iptables | iptables -S | 默认查看iptables filter表的信息 | |
iptables --line -nL | 查看规则链 | ||
iptables -D INPUT 1 (num) | 删除规则链 | ||
iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT | 插入规则链 | ||
service iptables save 或者 iptables-save >/etc/sysconfig/iptables | 备份 | ||
iptables-restore < /etc/sysconfig/iptables | 恢复 | ||
route | route | 查看路由 | |
route add -net 192.168.0.0/24 gw 192.168.0.1 route add default gateway 10.183.238.65 | 添加路由 | ||
route delete -net 192.168.0.0/24 | 删除路由 | ||
traceroute | traceroute 10.0.0.1 | 路由跟踪 | |
traceroute -p 22 10.0.0.1 -T | 探测TCP端口连通性 | ||
traceroute -p 22 10.0.0.1 -U | 探测UDP端口连通性,如果特定端口不通,其它端口通,说明通信正常。 | ||
traceroute -s 10.0.0.1 11.0.0.1 | 指定源端口探测 | ||
telnet | telent 10.0.0.1 22 | 测试端口连通性 | |
nmap | nmap -sU 10.0.0.1 -p 53 | 测试UDP端口通信 | |
ssh | ssh -v -p port username@ip | 测试端口连通性 | |
ssh 客户端用户名@服务器ip地址 | 远程登入主机 | ||
top | top -d 1 | 一秒钟刷新系统资源运行情况。 | |
vmstat | vmstat -t 1 | 统计系统每一秒的整体运行情况 |