linux 常用命令
系统操作
数据同步
为了防止数据丢失,一般在关机前需要执行数据同步操作
sync # 将数据由内存同步到硬盘中
查看帮助
man sync # 查看 sync 的帮助信息
sync --help # 查看 sync 的帮助信息
关机
poweroff # 立即关机,并且关闭电源
halt # 立即关机,但是不关闭电源
shutdown -h now # 立即关机
shutdown -h 10 # 10分钟后关机
shutdown -h 20:25 # 今天 20:25 关机
shudown -c #取消关机
重启
reboot # 立即重启
shutdown -r now # 立即重启
shutdown -r 10 # 10分钟后重启
shudown -c #取消重启
清空控制台
clear
主机名管理
hostname # 查看主机名
hostname yacon # 将主机名临时设置为 yacon, 重启后恢复到原来的主机名
vi /etc/hostname # 永久修改主机名,重启后方可生效
目录操作
查看路径
pwd # 查看当前所在文件的路径
切换路径
cd / # 进入跟目录
cd ~ # 进入当前用户的主目录
cd .. # 进入父级目录
cd usr # 进入当前目录下的 usr 目录
cd /usr/bin # 进入 /usr/bin 目录
查看子目录及文件列表
ls # 以列表的形式查看
ls -a # 查看所有的文件,包含隐藏文件
ls -l # 以详细信息的形式查看
ls -al # 以详细信息的形式查看所有的文件
创建目录
mkdir test # 在当前目录下创建 test 目录
mkdir /home/test # 在指定目录下创建 test 目录
mkdir -p /home/test1/test2/test3 # 递归创建 test1/test2/test3 目录
删除目录
rmdir test3 # 删除 test3 目录,test3是一个空目录
rmdir -p test1/test2 # 递归删除 test1/test2 目录
rm -rf test1 # 强制删除非空目录
rm -rf * # 强制删除该目录下所有的子目录及文件
目录拷贝
cp -r <原目录或文件> <新目录或文件>
cp -r test2 test1 # 将 test2 目录拷贝到 test1 目录中
cp -r test2 test1/test # 将 test2 目录拷贝到 test1 目录中,并重命名为 test
cp /tmp/yum.log /home # 将 /temp/yum.log 拷贝到 /home 目录中
cp /tmp/yum.log /home/y.log # 将 /temp/yum.log 拷贝到 /home 目录中,并重命名为 y.log
移动目录
mv <原目录或文件> <新目录或文件>
mv test2 test1 # 将 test2 目录移动到 test1 目录中
mv test1/test2 . # 将 test1 中的 test2 目录移动到当前目录
mv test1 test # 将 test1 目录重命名为 test
搜索子目录及文件
find test # 在当前目录下搜索 test 目录或文件
find test* # 在当前目录下搜索以 test 开头的目录或文件,* 为通配符
find -type f -name test # 在当前目录下搜索 test 文件
find -type d -name test # 在当前目录下搜索 test 目录
find . -name test # 在当前目录及其子目录下搜索 test 目录或文件
find / -name test # 在根目录及其子目录下搜索 test 目录或文件
# 全系统搜索 passwd 文件,并显示位置
# 无法搜索普通文件,只能搜索系统文件及命令
whereis passwd
详细列表说明
列 | 位置 | 说明 |
---|---|---|
第 1 列 | 第 1 个字母 | 文件类型, d =目录 - =文件 l =链接 b =外部接口 c =串行接口设备(鼠标、键盘等) p =管理文件 s =套接字文件 |
第 1 列 | 第 2、3、4 个字母 | 所有者的权限, r =可读 w =可写 x =可执行 - =无权限 |
第 1 列 | 第 5、6、7 个字母 | 与所有者在的同组用户的权限, r =可读 w =可写 x =可执行 - =无权限 |
第 1 列 | 第 8、9、10 个字母 | 其它用户的权限, r =可读 w =可写 x =可执行 - =无权限 |
第 2 列 | 直接子目录个数, 需要减去 2 才是真实的数量 | |
第 3 列 | 所有者名称 | |
第 4 列 | 所有者所在的组名称 | |
第 5 列 | 文件大小 | |
第 6 列 | 文件修改时间,格式 月 日 时:分 |
|
第 7 列 | 文件或目录名称 |
文件操作
创建文件
touch test.txt # 在当前目录下创建一个 test.txt 文件
创建链接
ln test.txt t1.txt # 为 test.txt 文件创建硬链接 t1.txt
ln -s test.txt t2.txt # 为 test.txt 文件创建软连接 t2.txt
硬链接和软件链接说明
硬链接 是指多个链接指向同一个文件,删除一个链接不影响另一个链接的使用
软连接 是指为文件创建了一个快捷方式,删除了源文件软连接也无法使用
文件内容操作
查看文件内容
cat /etc/sysconfig/network-scripts/ifcfg-ens32 # 查看 ifcfg-ens32 的内容
tac /etc/sysconfig/network-scripts/ifcfg-ens32 # 查看 ifcfg-ens32 的内容,内容顺序与 cat 相反
nl /etc/sysconfig/network-scripts/ifcfg-ens32 # 查看 ifcfg-ens32 的内容,并且显示行号
# 通过翻页的形式查看文件内容
# 使用 空格键 显示下一页
# 使用 回车键 显示下一行
# 使用 b 显示上一页
# 使用 h 查看帮助
# 使用 :f 显示行号
more /etc/csh.login
# 通过翻页的形式查看文件内容
# 使用 上下箭头进行 翻页操作
# 使用 q 退出,
# 使用 /关键字 进行向下查询
# 使用 ?关键词 进行向上查询
# 查询后,使用 n 进行向下寻找, 使用 N 进行向上寻找
less /etc/csh.login
head -n 10 /etc/csh.login # 显示前 10 行的内容
tail -n 10 /etc/csh.login # 显示后 10 行的内容
tail -f /var/log/messages # 动态加载某个文件的内容,使用 Ctrl+c 退出
搜索文件内容
grep 'onboot' /etc/sysconfig/network-scripts/ifcfg-ens32 # 搜索并显示包含 onboot 的内容,大小写敏感
grep -i 'onboot' /etc/sysconfig/network-scripts/ifcfg-ens32 # 搜索并显示包含 onboot 的内容,忽略大小写
grep -v 'o' /etc/sysconfig/network-scripts/ifcfg-ens32 # 搜索并显示不包含 o 的内容,大小写敏感
写入文件内容
# 一次写入一行
# 向 test.txt 文件中追加字符串 Hello Linux
echo 'Hello Linux' >> test.txt
# 一次写入多行
# 输入 eof 结束输入
cat >>test.text<<eof
比较文件内容
diff test1 test2 # 显示 test1 和 test2 的不同内容
sdiff test1 test2 # 以对比的方式,显示 test1 和 test2 的内容
VI编辑器
模式说明
命令模式 使用 vim 打开文件后, 就会进入命令模式, 在其它模式下按 esc
进入命令模式
编辑模式 在命令模式下输入 i
按键, 则进入编辑模式,
末行模式 在命令模式下输入 :
进入末行模式
命令模式
光标移动
快捷键 | 说明 |
---|---|
h 或 ← |
光标向左移动一个字符 |
l 或 → |
光标向右移动一个字符 |
j 或 ↓ |
光标向下移动一个字符 |
k 或 ↑ |
光标向上移动一个字符 |
Ctrl + f |
向下翻一页 |
Ctrl + b |
向上翻一页 |
Ctrl + d |
向下翻半页 |
Ctrl + u |
向上翻半页 |
+ |
光标移动到下一行 |
- |
光标移动到上一行 |
n + space |
n 表示数字,例如 20, 表示光标向后移动 20 个字符 |
0 或 Home |
光标移动到行首 |
$ 或 End |
光标移动到行末 |
H |
光标移动到屏幕最上方那一行的第一个字符 |
M |
光标移动到屏幕中央那一行的第一个字符 |
L |
光标移动到屏幕最下方那一行的第一个字符 |
G |
移动到这个文档的最后一行 |
n + G |
n 表示数字,例如 20,表示光标移动到第 20 行 |
gg |
移动到这个文档的第一行 |
n + Enter |
n 表示数字,例如 20,光标向下移动 20 行 |
搜索
快捷键 | 说明 |
---|---|
/关键词 |
光标以下的位置进行搜索 |
?关键词 |
光标以上的位置进行搜索 |
n |
进入搜索模式后, 查找下一个搜索项 |
N |
进入搜索模式后, 查找上一个搜索项 |
快速编辑
快捷键 | 说明 |
---|---|
x |
删除光标所在的字符 |
X |
删除光标前面的字符 |
n + x |
n 为数字, 删除光标后面 n 个字符 |
dd |
删除光标所在的一整行数据 |
n + dd |
n 为数字, 删除光标所在行及下面 n 行数据 |
d1G |
删除光标所在行至第一行的数据 |
dG |
删除光标所在行至最后一行的数据 |
d$ |
删除光标所在位置到改行最后一个字符的数据 |
d0 |
删除光标所在位置到改行第一个字符的数据 |
yy |
复制光标所在的行 |
n + yy |
n 为数字, 复制光标所在行至下面 n 行的数据 |
y1G |
复制光标所在行到第一行的数据 |
yG |
复制光标所在行到最后一行的数据 |
y0 |
复制光标所在位置到行首的数据 |
y$ |
复制光标所在位置到行末的数据 |
p |
在光标所在行的下一行插入复制的数据 |
P |
在光标所在行的上一行插入复制的数据 |
J |
将光标所在的行与下一行的数据合并成一行 |
n + cj |
n 为数字, 删除光标所在行及下面 n 行的数据 |
u |
撤销操作,类似于 windows 下的 Ctrl+z |
Ctrl + r |
取消撤销操作,与 u 相反,类似于 windows 下的 Ctrl+y |
末行模式
快捷键 | 说明 |
---|---|
:w |
保存 |
:w! |
若文件为只读模式,则强制写入文档,不一定能成功 |
:q |
退出 vi |
:q! |
不保存并退出 |
:wq! |
保存并退出 |
ZZ |
如果文档有改动,则保存退出,如果文档没有改动,则直接退出 |
:w 文件名 |
另存为 |
:r 文件名 |
读取另一篇文章数据, 追加到光标所在行的后面 |
:n1,n2 w 文件名 |
将 n1 行到 n2 行的数据保存为新文件 |
:! command |
临时离开 vi, 并执行 command, 例如 :! ls /home |
:set nu |
显示行号 |
:set nonu |
取消行号 |
:s/搜索词/替换词/ |
将光标所在行的第一个 搜索词 ,并替换为 替换词 |
:%s/搜索词/替换词/g |
将整篇文章的 搜索词 替换为 替换词 |
压缩与打包
压缩与解压缩
压缩
无法压缩目录
# 将目录下的所有文件进行单独压缩
# 压缩成功后,删除源文件,并生成 *.gz 文件
gzip *
# 压缩 t1 文件
# 压缩成功后,删除源文件,并生成 *.gz 文件
gzip t1
# 安装 bizp2 支持
yum -y install bzip2
# 压缩 t1 文件
# 压缩成功后,删除源文件,并生成 *.bz 文件
bzip2 t1
解压缩
# 将目录下的所有压缩包进行解压,并用列表的形式显示解压结果
# 解压成功后,删除源压缩包
gzip -dv *
# 压缩 t1.gz 文件
# 解压成功后,删除源压缩包
gzip -dv t1.gz
# 将目录下的所有压缩包进行解压,并用列表的形式显示解压结果
# 解压成功后,删除源压缩包
gunzip *
# 压缩 t1.gz 文件
# 解压成功后,删除源压缩包
gunzip t1.gz
# 解压 t1.bz 文件
# 压缩成功后,删除压缩包
bzip2 -d t1.bz
查看压缩文件信息
# 查看目录下所有压缩包的内容
# compressed=压缩后大小 uncompressed=压缩前大小 ratio=压缩比率 uncompressed_name=压缩前的文件名
gzip -l *
# 查看 t1.gz 内容
gzip -l t1
打包与解包
打包
可以打包目录
打包为 *.tar
文件
tar -c -f t1.tar t1 # 将 t1 文件打包为 t1.tar 文件
tar -cv -f t2.tar t2 # 将 t2 文件打包为 t2.tar 文件,并显示打包过程
打包为 *.tar.gz
文件
tar -zcvf t3.tar.gz t3 # t3 文件打包为 t3.tar.gz 文件
打包为 *.tar.bz
文件
# 将 t1 文件打包为 t1.tar.bz 文件
tar -jcvf t1.tar.bz t1
解包
解包为 *.tar
文件
tar -xf t1.tar # 将 t1.tar 解包到本地目录
tar -xf /home/t t1.tar # 将 t1.tar 解包到 /home 目录下,并命名为 t 文件
tar -xvf t1.tar # 将 t1.tar 解包到本地目录,并显示解包过程
解包为 *.tar.gz
文件
tar -zxvf t3.tar.gz # 将 t3.tar.gz 解包到本地目录
解包为 *.tar.bz
文件
tar -jxvf t1.tar.bz # 将 t1.tar.bz 解包到本地目录
网络管理
查看网络
ip addr
重启网络服务
service network restart
systemctl restart network
启用网络连接
步骤一:进入网络配置目录
cd /etc/sysconfig/network-scripts
步骤二:编辑网络配置文件
vi ifcfg-ens32
步骤三:启用网络
ONBOOT=yes
步骤四:重启网络
service network restart
步骤五:查看网络
ip addr
固定IP地址配置
步骤一 打开指定网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
步骤二 查看当前网络详情
nmcli device show
步骤三 修改配置
# 启用静态IP
# static=固定IP dhcp=动态获取IP
BOOTPROTO=static
# 指定IP地址
IPADDR=192.168.198.137
NETMASK=255.255.255.0
GATEWAY=192.168.198.2
DNS1=192.168.198.2
DNS2=192.168.198.2
步骤四 重启网络
service network restart
查看网络设备信息
nmcli # 查看网络设备基本信息
nmcli device show # 查看网络设备完整信息
nmcli connection show # 查看活动链接概述
YUM管理
软件列表
yum list # 显示所有可以按照的软件
yum list java* # 显示软件名称为 java 开头的软件
yum list | grep jdk # 过滤出软件名称包含 jdk 的软件
yum list updates # 查看可更新的软件包
yum list installed # 查看已安装的软件包
yum search jdk # 搜索软件名称包含 jdk 的软件
软件安装
yum install -y java-1.8.0-openjdk.x86_64 # 安装 java-1.8.0-openjdk.x86_64 软件
软件更新
yum check-update # 显示所有可升级的软件列表
yun update -y # 更新所有软件
yum update -y yum.noarch # 更新 yum.noarch 软件
软件卸载
yum remove -y java-1.8.0-openjdk.x86_64 # 卸载 java-1.8.0-openjdk.x86_64 软件
清除缓存
yum clean all # 清除缓存
构建缓存
yum makecache # 把远程服务器的包信息缓存至本地
更新YUM源
步骤一 备份YUM配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
步骤二 下载阿里源
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo
步骤三 配置YUM源
mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
步骤四 重建缓存
yum makecache
网络访问
访问网络
curl www.baidu.com # 访问百度
保存网页
# 将百度网页另存为 baidu.html 文件
curl www.baidu.com >> baidu.html
# 将百度网页另存为 baidu2.html 文件
curl -o baidu2.html www.baidu.com
下载文件
curl -O http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css # 下载百度的 css 文件
curl -# -O www.baidu.com/img/bd_logo1.png # 下载图片并显示进度条
curl -c cookie www.baidu.com # 保存 cookie 信息到 cookie 文件
curl -D response www.baidu.com # 保存响应头信息到 response 文件
FTP上传与下载
curl -O ftp://username:password@www.ftp.com/image.jpg # 从 www.ftp.com FTP服务器中下载 image.jpg 图片
curl -T image.jpg -u username:password ftp://www.ftp.com # 将图片 image.jpg 上传至 www.ftp.com FTP服务器
用户组管理
添加用户组
groupadd admin # 创建 admin 用户组
groupadd -g 500 admin1 # 创建 admin 用户组,并指定 ID 为 500
查看用户组列表
cat /etc/group
删除用户组
groupdel admin1 # 删除 admin1 用户组
修改用户组
groupmod -g 520 admin # 修改 admin 用户组的 ID 为 520
groupmod -n new_admin admin # 修改 admin 用户组的名称为 new_admin
用户管理
添加用户
useradd -m yacon # 创建用户名为 yacon 的用户,并创建 /home/yacon 目录
删除用户
userdel yacon #删除 yacon 用户,但不删除 /home/yacon 目录
userdel -r yacon # 删除 yacon 用户, 并删除 /home/yacon 目录
查看用户列表
cat /etc/passwd
修改用户
# 修改 yacon 用户的工作目录为 /home/yacon_home
# 修改成功后,不会删除原工作目录,也不会新建新的工作目录
# 新的工作目录需要手动创建
usermod -d /home/yacon_home yacon
# 将 yacon 用户添加至 admin 组,并从原来的组中删除
usermod -g admin yacon
# 将 yacon 用户添加至 admin 组,原来的组保留
# 此时 yacon 用户拥有两个组
usermod -a -G admin yacon
切换用户
su yacon # 切换至 yacon 用户
exit # 退出该用户
切换用户组
newgrp admin # 将当前用户的组切换为 admin
修改用户密码
passwd # 修改当前登陆用户的密码
passwd yacon # 修改 yacon 用户的密码, 输入密码时终端不会有任何反应
passwd -d yacon # 清空 yacon 用户的密码,空密码的用户不能进行登陆
锁定用户
无法使用被锁定的用户进行登陆
passwd -l yacon # 锁定 yacon 目录
查看用户密码
cat /etc/shadow
将用户添加到sudo组
步骤一 切换至 root 用户
su root
步骤二 打开 sudoers 文件
visudo # 或 vi /etc/sudoers
步骤三 在 sudoers 文件中添加以下数据
yacon ALL=(ALL) ALL
步骤四 切换至 yacon 用户
su yacon
步骤五 执行网络重启指令
sudo service network restart
查看当前登陆的用户信息
whoami # 查看当前登陆用户的用户名
group # 查看当前登陆用户的所属组
id # 查看当前用户的 UID 和 GID
权限管理
更改文件或目录所属的组
chgrp -R yacon www # 修改 www 目录的所属组为 yacon
更改文件或目录所有的用户
chown -R yacon www # 修改 www 目录的拥有者为 yacon
更改文件或目录的权限
chmod -R 777 www # 所有用户均可对 www 目录进行读写执行操作
权限说明
权限 | 数字 | 说明 |
---|---|---|
r | 4 | 可读 |
w | 2 | 可写 |
x | 1 | 可执行 |
- | 0 | 无权限 |
rwx | 7 | 可读 可写 可执行 |
rw- | 6 | 可读 可写 |
r-x | 5 | 可读 可执行 |
-wx | 3 | 可写 可执行 |
rwxrwxrwx | 777 | 拥有者可读可写可执行 拥有者同组用户可读可写可执行 其它用户可读可写可执行 |
服务管理
查看服务列表
systemctl # 显示所有启动的服务
systemctl -a # 显示所有启动的服务
systemctl | grep ssh # 搜索服务名称包含 ssh 的服务
启动或停止服务
systemctl stop firewalld.service # 启动防火墙服务
systemctl start firewalld.service # 停止防火墙服务
注销或取消注销服务
被注销的服务无法使用
systemctl start
进行启动被注销的服务无法使用
systemctl enable
进行启用
systemctl mask firewalld.service # 注销防火墙服务,需要先停止服务
systemctl unmask firewalld.service # 取消注销防火墙服务
启用或禁用服务
被禁用的服务可以使用
systemctl start
进行启动
systemctl disabled firewalld.service # 禁用防火墙服务,开机不自启,需要先停止服务
systemctl enable firewalld.service # 启用防火墙服务,开机自启
查看服务信息
systemctl is-active network.service # 查询 network.service 服务是否处于激活状态
systemctl is-enabled network.service # 查询 network.service 服务是否开机自启
systemctl status network.service # 查看 network.service 服务状态
进程管理
查看正在运行的进程
ps -a # 查看当前正在运行的进程
ps -u # 查看当前用户启动的进程
ps -x # 查看后台运行的进程
ps -aux|grep mysql # 查看所有的进程,并且过滤出包含 mysql 字符串的进程
杀死进程
kill -9 # 杀死进程ID为9的进程
磁盘管理
查看磁盘列表
df -h
列名 | 说明 |
---|---|
Filesystem |
文件系统名称 |
Size |
总大小 |
Used |
已使用大小 |
Avail |
可使用大小 |
Use |
已使用百分比 |
Mounted on |
挂载目录 |
查看当前目录磁盘使用情况
du -h # 查看当前目录及子目录所占的空间情况
du -sm /* # 查看根目录下每个目录所占空间的情况
列 | 说明 |
---|---|
第一列 | 占用多少磁盘空间 |
第二列 | 文件名 |
挂载磁盘
mount /dev/u /mnt/u # 将外部 U 盘挂载到 /mnt/u 目录下
卸载磁盘
unmount -f /mnt/u # 将 /mnt/u 磁盘进行卸载