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 的内容

image-20210420152724191

tac /etc/sysconfig/network-scripts/ifcfg-ens32 # 查看 ifcfg-ens32 的内容,内容顺序与 cat 相反

image-20210420152750763

nl /etc/sysconfig/network-scripts/ifcfg-ens32 # 查看 ifcfg-ens32 的内容,并且显示行号

image-20210420152830789

# 通过翻页的形式查看文件内容
# 使用 空格键 显示下一页
# 使用 回车键 显示下一行
# 使用 b 显示上一页
# 使用 h 查看帮助
# 使用 :f 显示行号
more /etc/csh.login
# 通过翻页的形式查看文件内容
# 使用 上下箭头进行 翻页操作
# 使用 q 退出,
# 使用 /关键字 进行向下查询
# 使用 ?关键词 进行向上查询
# 查询后,使用 n 进行向下寻找, 使用 N 进行向上寻找
less /etc/csh.login

image-20210420154501666

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

image-20210424095953474

比较文件内容

diff test1 test2 # 显示 test1 和 test2 的不同内容

image-20210427155119311

sdiff test1 test2 # 以对比的方式,显示 test1 和 test2 的内容

image-20210427155135967

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

image-20210422134624744

重启网络服务

service network restart
systemctl restart network

启用网络连接

步骤一:进入网络配置目录

cd /etc/sysconfig/network-scripts

步骤二:编辑网络配置文件

vi ifcfg-ens32

步骤三:启用网络

ONBOOT=yes

image-20210422134304326

步骤四:重启网络

service network restart

步骤五:查看网络

ip addr

image-20210422134750791

固定IP地址配置

步骤一 打开指定网卡配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

步骤二 查看当前网络详情

nmcli device show

image-20210427133536363

步骤三 修改配置

# 启用静态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 # 查看网络设备基本信息

image-20210427134220796

nmcli device show # 查看网络设备完整信息

image-20210427134315688

nmcli connection show # 查看活动链接概述

image-20210427134413930

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

image-20210427121313921

删除用户组

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 用户的密码,空密码的用户不能进行登陆

image-20210420174741903

锁定用户

无法使用被锁定的用户进行登陆

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

image-20210420182906337

列名说明
Filesystem 文件系统名称
Size 总大小
Used 已使用大小
Avail 可使用大小
Use 已使用百分比
Mounted on 挂载目录

查看当前目录磁盘使用情况

du -h # 查看当前目录及子目录所占的空间情况
du -sm /* # 查看根目录下每个目录所占空间的情况

image-20210420183246227

说明
第一列 占用多少磁盘空间
第二列 文件名

挂载磁盘

mount /dev/u /mnt/u # 将外部 U 盘挂载到 /mnt/u 目录下

卸载磁盘

unmount -f /mnt/u # 将 /mnt/u 磁盘进行卸载
posted @ 2021-06-09 12:29  编码小高  阅读(104)  评论(0编辑  收藏  举报