Linux常用命令大全
- 一、文件&目录管理
-
- [1. 文件和目录操作命令](#1. 文件和目录操作命令)
- [2. 查看文件及内容处理命令](#2. 查看文件及内容处理命令)
- [3. 文件压缩及解压缩命令](#3. 文件压缩及解压缩命令)
- [4. 搜索文件命令](#4. 搜索文件命令)
- [5. 其他](#5. 其他)
- [二、Linux 软件包管理](#二、Linux 软件包管理)
- 三、用户管理
-
- [1. 用户管理](#1. 用户管理)
- [2. 查看系统用户登陆信息的命令](#2. 查看系统用户登陆信息的命令)
- 四、进程管理
- 五、网络通信
-
- [1. 基础网络操作命令](#1. 基础网络操作命令)
- [2. 深入网络操作命令](#2. 深入网络操作命令)
- 六、磁盘管理
- 七、系统监控及管理
-
- [1. 系统信息查看](#1. 系统信息查看)
- [2. 系统管理与性能监视命令](#2. 系统管理与性能监视命令)
- [3. 关机 / 重启 / 注销](#3. 关机 / 重启 / 注销)
- 八、其他
命令大多遵循如下格式:
shellcommand [options] [arguments]
- command表示命令的名称
- options表示选项,定义命令的执行特性
- 短选项,使用符号
-
,可以组合使用- 长选项,使用符号
--
,只能单独使用- arguments表示命令作用的对象
help命令
shellhelp
Type `help name' to find out more about the function `name'. Use `info bash' to find out more about the shell in general. Use `man -k' or `info' to find out more about commands not in this list.
一、文件&目录管理
1. 文件和目录操作命令
命令 | 功能说明 |
---|---|
ls | 全拼 list,功能是列出目录的内容及其内容属性信息。 ll 是ls -alF 的别名 |
tree | 功能是以树形结构显示目录下的内容。 |
cd | 全拼 change directory,功能是从当前工作目录切换到指定的工作目录。 |
cp | 全拼 copy,其功能为复制文件或目录。 |
mkdir | 全拼 make directories,其功能是创建目录。 |
touch | 创建新的空文件,改变已有文件的时间戳属性。 |
mv | 全拼 move,其功能是移动或重命名文件。 |
pwd | 全拼 print working directory,其功能是显示当前工作目录的绝对路径。 |
rename | 用于重命名文件。 |
rm | 全拼 remove,其功能是删除一个或多个文件或目录。 |
rmdir | 全拼 remove empty directories,功能是删除空目录。 |
basename | 显示文件名或目录名。 |
dirname | 显示文件或目录路径。 |
chattr | 改变文件的扩展属性。 |
lsattr | 查看文件扩展属性。 |
file | 显示文件的类型。 |
md5sum | 计算和校验文件的 MD5 值。 |
du | 计算磁盘空间使用情况。 |
2. 查看文件及内容处理命令
命令 | 功能说明 |
---|---|
cat | 全拼 concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。 |
tac | tac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。 |
more | 分页显示文件内容。 |
less | 分页显示文件内容,more 命令的相反用法。 |
head | 显示文件内容的头部。 |
tail | 显示文件内容的尾部。 |
cut | 将文件的每一行按指定分隔符分割并输出。 |
split | 分割文件为不同的小片段。 |
paste | 按行合并文件内容。 |
sort | 对文件的文本内容排序。 |
uniq | 去除重复行。 |
wc | 统计文件的行数、单词数或字节数。 |
iconv | 转换文件的编码格式。 |
dos2unix | 将 DOS 格式文件转换成 UNIX 格式。 |
diff | 全拼 difference,比较文件的差异,常用于文本文件。 |
vimdiff | 命令行可视化文件比较工具,常用于文本文件。 |
rev | 反向输出文件内容。 |
grep/egrep | Linux三剑客之一。用于过滤字符串 |
join | 按两个文件的相同字段合并。 |
tr | 替换或删除字符。 |
vi/vim | 命令行文本编辑器。 |
sed | Linux三剑客之一。全称Stream EDitor,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。 |
awk | Linux三剑客之一。awk是一个报表生成器,主要用于格式化输出 |
3. 文件压缩及解压缩命令
命令 | 功能说明 |
---|---|
tar | 打包压缩。 |
zip | 压缩工具。 安装yum install -y unzip zip |
unzip | 解压文件。 |
gzip | gzip 压缩工具。 |
4. 搜索文件命令
命令 | 功能说明 |
---|---|
find | 从磁盘遍历查找文件或目录。 |
which | 查找二进制命令,按环境变量 PATH 路径查找。 |
whereis | 查找二进制命令,按环境变量 PATH 路径查找。 |
locate | 从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。 |
5. 其他
命令 | 功能说明 |
---|---|
权限管理 | |
chmod | 文件或目录权限修改 |
umask | 显示或设置权限掩码。 |
chown | 改变文件或目录的属主和属组。 |
chgrp | 更改文件用户组。 |
**文件上传下载 ** | |
wget | 从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。"wget" 这个名称来源于 "World Wide Web" 与 "get" 的结合。 |
sz / rz | 利用ZModem协议从Linux服务器传送文件到本地(从本地传送到Linux服务器),一次可以传送一个或多个文件 yum install lrzsz -y |
curl | 利用URL语法在命令行下工作的文件传输工具 |
二、Linux 软件包管理
命令 | 功能说明 |
---|---|
rpm | 管理 rpm 包的命令。 |
yum | 自动化简单化地管理 rpm 包的命令。 |
dpkg | 管理deb 包的命令。 |
apt / apt-get | 自动化简单化地管理 deb 包的命令。 |
ubuntu: /etc/apt/sources.list
centOS: /etc/yum.repos.d/CentOS-Base.repo
三、用户管理
1. 用户管理
命令 | 功能说明 |
---|---|
useradd | 添加用户。 |
adduser | 添加用户。 |
usermod | 修改系统已经存在的用户属性。 |
userdel | 删除用户。 |
groupadd | 添加用户组。 |
passwd | 修改用户密码。 |
chage | 修改用户密码有效期限。 |
id | 查看用户的 uid,gid 及归属的用户组。 |
su | 切换用户身份。 |
visudo | 编辑 / etc/sudoers 文件的专属命令。 |
sudo | 以另外一个用户身份(默认 root 用户)执行事先在 sudoers 文件允许的命令。 |
2. 查看系统用户登陆信息的命令
命令 | 功能说明 |
---|---|
whoami | 显示当前有效的用户名称,相当于执行 id -un 命令。 |
who | 显示目前登录系统的用户信息。 |
w | 显示已经登陆系统的用户列表,并显示用户正在执行的指令。 |
last | 显示登入系统的用户。 |
lastlog | 显示系统中所有用户最近一次登录信息。 |
users | 显示当前登录系统的所有用户的用户列表。 |
finger | 查找并显示用户信息。 |
四、进程管理
命令 | 功能说明 |
---|---|
bg | 将一个在后台暂停的命令,变成继续执行 (在后台执行)。 |
fg | 将后台中的命令调至前台继续运行。 |
jobs | 查看当前有多少在后台运行的命令。 |
kill | 终止进程。 |
killall | 通过进程名终止进程。 |
pkill | 通过进程名终止进程。 |
crontab | 定时任务命令。 |
ps | 显示进程的快照。 |
pstree | 树形显示进程。 |
nice/renice | 调整程序运行的优先级。 |
nohup | 忽略挂起信号运行指定的命令。 黄金搭配 nohup xxxx & |
pgrep | 查找匹配条件的进程。 |
runlevel | 查看系统当前运行级别。 |
init | 切换运行级别。 |
service | 启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 |
五、网络通信
1. 基础网络操作命令
命令 | 功能说明 |
---|---|
telnet | 使用 TELNET 协议远程登录。 |
ssh | 使用 SSH 加密协议远程登录。 |
scp | 全拼 secure copy,用于不同主机之间复制文件。 |
ping | 测试主机之间网络的连通性。 |
route | 显示和设置 linux 系统的路由表。 |
ifconfig | 查看、配置、启用或禁用网络接口的命令。 |
ifup | 启动网卡。 |
ifdown | 关闭网卡。 |
ip | 可以配置几乎所有的网络参数,功能比传统的网络配置命令更加强大,它可以显示操作网络路由、网络设备、设置路由等 |
2. 深入网络操作命令
命令 | 功能说明 |
---|---|
nmap | 网络扫描命令。 |
lsof | 全名 list open files,也就是列举系统中已经被打开的文件。 |
发送和接收邮件。 | |
mutt | 邮件管理命令。 |
nslookup | 交互式查询互联网 DNS 服务器的命令。 |
dig | 查找 DNS 解析过程。 |
host | 查询 DNS 的命令。 |
traceroute | 追踪数据传输路由状况。 |
tcpdump | 命令行的抓包工具。 |
iptables | 防火墙设置 |
firewalld | 防火墙设置 |
netstat | 查看网络状态。 |
六、磁盘管理
命令 | 功能说明 |
---|---|
mount | 挂载文件系统。 |
umount | 卸载文件系统。 |
fsck | 检查并修复 Linux 文件系统。 |
dd | 转换或复制文件。 |
dumpe2fs | 导出 ext2/ext3/ext4 文件系统信息。 |
dump | ext2/3/4 文件系统备份工具。 |
fdisk | 磁盘分区命令,适用于 2TB 以下磁盘分区。 |
parted | 磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。 |
mkfs | 格式化创建 Linux 文件系统。 |
partprobe | 更新内核的硬盘分区表信息。 |
e2fsck | 检查 ext2/ext3/ext4 类型文件系统。 |
mkswap | 创建 Linux 交换分区。 |
swapon | 启用交换分区。 |
swapoff | 关闭交换分区。 |
sync | 将内存缓冲区内的数据写入磁盘。 |
resize2fs | 调整 ext2/ext3/ext4 文件系统大小。 |
七、系统监控及管理
1. 系统信息查看
命令 | 功能说明 |
---|---|
uname | 显示操作系统相关信息的命令。 |
hostname | 显示或者设置当前系统的主机名。 |
dmesg | 显示开机信息,用于诊断系统故障。 |
uptime | 显示系统运行时间及负载。 |
stat | 显示文件或文件系统的状态。 |
du | 计算磁盘空间使用情况。 |
df | 报告文件系统磁盘空间的使用情况。 |
free | 查看系统内存。 |
date | 显示与设置系统时间。 |
cal | 查看日历等时间信息。 |
env | 查看环境变量 |
lsmod | 列出加载的内核模块 |
lsusb | 列出所有USB设备 |
lspci | 列出所有PCI设备 |
2. 系统管理与性能监视命令
命令 | 功能说明 |
---|---|
top | 实时显示系统资源使用情况。 |
chkconfig | 管理 Linux 系统开机启动项。 |
vmstat | 虚拟内存统计。 |
mpstat | 显示各个可用 CPU 的状态统计。 |
iostat | 统计系统 IO。 |
netstat | 查看网络状态。 |
ss | 查看网络状态。 |
sar | 全面地获取系统的 CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU 中断和网络等性能数据。 |
ipcs | 用于报告 Linux 中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。 |
ipcrm | 用来删除一个或更多的消息队列、信号量集或者共享内存标识。 |
strace | 用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 |
ltrace | 命令会跟踪进程的库函数调用, 它会显现出哪个库函数被调用。 |
ulimit | 对shell及其启动的进程可用资源的控制 |
systemctl | systemctl 是 systemd 的主命令,用于管理系统以及服务。 |
hostnamectl | 查看和修改当前主机的信息 |
localectl | 查看和修改本地化设置 |
timedatectl | 查看和修改当前时区设置 |
loginctl | 查看和修改当前登录的用户 |
3. 关机 / 重启 / 注销
命令 | 功能说明 |
---|---|
shutdown | 关机。 |
halt | 关机。 |
poweroff | 关闭电源。 |
logout | 退出当前登录的 Shell。 |
exit | 退出当前登录的 Shell。 |
Ctrl+d | 退出当前登录的 Shell 的快捷键。 |
八、其他
命令 | 功能说明 |
---|---|
**其他内置命名 ** | |
echo | 打印变量,或直接输出指定的字符串 |
printf | 将结果格式化输出到标准输出。 |
watch | 周期性的执行给定的命令,并将命令的输出以全屏方式显示。 |
alias | 设置系统别名。 |
unalias | 取消系统别名。 |
date | 查看或设置系统时间。 |
clear | 清除屏幕,简称清屏。 |
history | 查看命令执行的历史纪录。 |
eject | 弹出光驱。 |
time | 计算命令执行时间。 |
nc | 功能强大的网络工具。 |
xargs | 将标准输入转换成命令行参数。 |
exec | 调用并执行指令的命令。 |
export | 设置或者显示环境变量。 |
unset | 删除变量或函数。 |
type | 用于判断另外一个命令是否是内置命令。 |
bc | 命令行科学计算器 |
集中化运维监控工具 | |
Ansible | 自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能 |
SaltStack | 允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境 |
Zabbix | 基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题 |
使用技巧
命令补齐
命令补齐允许用户输入文件名起始的若干个字母后,按
<Tab>
键补齐文件名。命令历史
命令历史允许用户浏览先前输入的命令并重新调用它们,用
history
命令可以显示命令列表,按方向键↑
和↓
可查找以前执行过的命令。命令别名
alias
和unalias
shellalias mybin="cd /usr/bin" alias #显示系统中现有的别名 unalias mybin #删除系统中的别名
输入/输出重定向
同标准I/O一样,Shell对于每一个进程预先定义3个文件描述字(0、1、2)。分别对应于:
0 (STDIN)标准输入;
1 (STDOUT)标准输出;
2 (STDERR)标准错误输出。
重定向:
>或>> 输出重定向
shellls -l /tmp > /tmp.msg cp -R /usr /backup/usr.bak 2> /bak.error date >> /tmp.msg
< 输入重定向
shellwall < /etc/motd
管道
将一个命令的输出传送给下一个命令, 作为另一个命令的输入
使用方法:
命令1|命令2|命令3......|命令n
使用举例:
shellls --Rl /etc |more cat /etc/passwd | wc cat /etc/passwd | grep login ps --aux |tail +10 |more
命令连接符
;
,用;
间隔的各命令按顺序依次执行
&&
,前后命令的执行存在逻辑与关系,只有&&
前面的命令执行成功后,它后面的命令才被执行。
||
,前后命令的执行存在逻辑或关系,只有||
前面的命令执行失败后,它后面的命令才被执行命令替换符
将一个命令的输出作为另一个命令的参数。
格式为:
命令1 `命令2` #或者 命令1 $(命令2)
范例:
ls -l `which touch` echo `ls -l`
Shell调试技巧
sh -x script
这将执行该脚本并显示所有变量的值。
sh -n script
不执行脚本只是检查语法的模式,将返回所有语法错误