常用 Linux 命令。
一、关机与重启
1.1 关机
poweroff # 立即关机
shutdown -h now # 立即关机
shutdown -h 30 # 30 分钟后关机
1.2 重启
reboot # 立即重启
shutdown -r now # 立即重启
shutdown -r 30 # 30 分钟后重启
二、用户分组管理
2.1 新增分组
选项说明:
- -g 指定新用户分组的分组号码(GID)
- -o 表示新用户分组的 GID 可以与已有的用户分组 GID 相同
# 格式: groupadd -g 分组号码 新分组名称
# 本实例准备三个分组,但后边会把 test_group3 删除
groupadd -g 10001 test_group1
groupadd -g 10002 test_group2
groupadd -g 10003 test_group3
2.2 修改分组
选项说明:
- -g 指定新用户分组的分组号码(GID)
- -o 表示新用户分组的 GID 可以与已有的用户分组 GID 相同
- -n 表示修改分组名称
# 格式: groupadd -g 新分组号码 -n 新分组名称 要修改的分组名称
groupmod -g 10003 -n test_group33 test_group3
2.3 删除分组
# groupdel 分组名称
groupdel test_group33
2.4 查询分组信息
用户分组的所有信息位于
/etc/group
文件中。
2.5 切换当前用户的分组
# newgrp 分组名
newgrp test_group1
三、用户管理
3.1 新增用户
选项说明:
- -c 指定一段注释性描述
- -g 指定用户所属用户组
- -G 指定用户所属的附加组
- -s 指定用户登录所用的 Shell 文件
- -u 指定用户的用户号
# 例
useradd -g test_group1 -u 10000001 -c 第一位测试用户 test_user1
useradd -g test_group1 -u 10000002 -c 第二位测试用户 test_user2
3.2 修改账号
选项说明:
- 包含新增用户的选项
- -l 修改为新用户名
# 格式: usermod 选项 用户名
usermod -l test_user2_new test_user2
3.3 删除账号
# 选项: -r 删除用户同时删除用户主目录(可选)
# 格式: userdel -r 用户名
userdel -r test_user2_new
3.4 查询用户信息
用户的所有信息位于
/etc/passwd
文件中。
3.5 用户密码管理
创建用户后,需要为用户创建密码或无密码登录。
选项:
- -l 用户锁定
- -u 用户解锁
- -d 使用户没有密码(用户无法登录)
- -f 使用户下次登录时需要修改密码
# 格式: passwd 选项 用户名
passwd # 修改当前用户密码
passwd test_user1 # 修改 test_user1 用户密码
passwd -l test_user1 # 锁定
passwd -u test_user1 # 解锁
passwd -d test_user1 # 无密码,(用户无法登录)
passwd -f test_user1 # 登录后需要修改密码
3.6 切换当前登录用户
# su 用户名, 输入密码即可登录
su test_user1
四、目录操作
4.1 新增目录
选项:
- -m 创建目录时候配置目录权限
- -p 递归创建目录
# 格式: mkdir [-mp] 目录名称
mkdir test # 当前目录创建文件夹
mkdir test_log/log/2022-07-25 # 递归创建多级文件夹
4.2 删除空目录
# 格式: rmdir [-p] 目录名称
rmdir test # 删除 test 文件夹
rmdir test_log/log/2022-07-25 # 递归删除多级空文件夹
4.3 删除非空目录
# rm [-rf] 目录
rm -r test # 递归删除当前目录下的 test 目录,询问
rm -rf test # 递归删除当前目录下的 test 目录,不询问直接删除
4.4 目录的切换
# 格式: cd 选项
cd / # 切换到根目录
cd ~ # 切换到当前用户家目录
cd - # 切换到上次访问的目录
cd ../ # 切换到上级目录
cd 目录路径 # 切换目录
4.5 目录的查看
ls # 查看当前目录下所有目录和文件
ls -a # 查看当前目录下所有目录和文件,包含隐藏文件
ls -l # 以列表形式查看当前目录所有目录和文件
ls -al # 以列表形式查看当前目录所有目录和文件,包含隐藏的文件
ls 目录路径 # 查看固定目录中的目录与文件
pwd # 查看当前目录的路径
五、文件操作
2.1 新增文件
# 常用方式
# 第一种
touch 新文件名
# 第二种
echo '内容' > 新文件名
# 第三种,使用 vim 保存后,生成文件
vim 新文件名
2.2 编辑文件
# 第一种: vim 编辑文件
vim 文件名
# 第二种: 将文件内容清空
echo '' > 文件名
# 或
cat /del/null > 文件名
2.3 删除文件
# rm [-f] 路径/文件名
rm test.txt # 删除文件,询问是否删除
rm -f test.txt # 删除文件,不询问直接删除
2.4 查看文件
# cat 文件名(从头显示文件内容)
# tac 文件名(从结尾倒着显示文件内容)
# nl 文件名(显示行号并显示内容)
# more 文件名(一页一页下翻显示内容,空格:向下翻动一页,[Enter]:向下翻动一行)
# less 文件名(向前或向下翻显示内容,空格:向下翻动一页,[pagedown]:向下翻动一页,[pageup]:向上翻动一页)
# head 行数 文件名(只显示开头行数内容)
# tail 行数 文件名(只显示结尾行数内容)
# tail -f 文件名 (持续加载监测新数据)
六、目录与文件相同操作
6.1 修改所属用户
# 修改文件所属用户
chown 用户名 文件或目录路径 # 例: chown test_user1 /test/test.txt
# 修改文件所属用户与所属分组
chown 用户名:分组名 文件或目录路径 # 例: chown test_user1:test_group1 /test/test.txt
# 修改当前目录中的文件与所有子目录的所属用户
chown 用户名 -R 文件或目录路径 # 例: chown test_user1 -R /root/test
6.2 修改所属用户组
# chgrp [-R] 分组名 文件或目录路径, -R 递归修改
6.3 修改权限
修改权限有两种方式: 数字与符号。这里只介绍数字方式。
- 权限字符以及对应的数字:
rwx-
- 读:
r
,对应权限数字:4
- 写:
w
,对应权限数字:2
- 执行:
x
,对应权限数字:1
- 不赋予当前位置的权限,用
-
代替,对应权限数字:0
- 权限表示位置:
# 目录与文件的信息 # 列表显示当前目录下的目录与文件 ls -al # 例: 显示以下内容 drwxrw-r-x 2 test_user1 root 4096 Jul 25 15:35 111 -rw-r--r-- 1 root root 4 Jul 25 15:13 1.txt
第一组代表权限:
- 第一个字符
d
代表当前为文件夹, 第一个字符-
代表当前为文件- 第二、第三、第四(rwx)代表 拥有者(owner)权限
- 第五、第六、第七(rw-)代表组(group)权限
- 第八、第九、第十(r-x)代表其他(others)权限
也就是三种角色,每位角色都可设置
rwx
的权限。
数字权限就是
rwx-
属性数相加,举例:
- 拥有者(owner) =
rwx
= 7- 组(group) =
rw-
= 6- 其他(others) =
r-x
= 5
# 格式: chmod [权限数字值-R] 文件或目录的路径
chmod 775 test.log # 修改文件
chmod 775 ./test # 修改目录
chmod 775 -R /root/test/log # 递归修改目录
6.4 复制、删除、剪切或改名
# 复制,只列举常用选项
# -i 若目标已存在, 则询问是否覆盖
# -p 连同目标的属性一起复制过去
# -r 递归复制, 用于目录的复制
cp [-ipr] from文件或from目录 to文件或to目录
# 文件示例:
cp -p ./test.log /www/log/ # 文件复制至新目录
cp -p ./test.log /www/log/new_test.log # 文件复制至新目录并起新名
# 目录示例:
cp -r /test/log /www # 目录复制至新目录
# 删除
# -f 忽略警告信息
# -i 执行前询问是否删除
# -r 递归删除
rm [-rfi] 文件或目录
# 剪切或改名
# -f 忽略警告信息,直接覆盖
# -i 若目标已存在, 则询问是否覆盖
mv [-fi] from文件或from目录 to文件或to目录
# 文件示例:
mv -i ./test.log /www/log/ # 文件剪切至新目录
mv -i ./test.log /www/log/new_test.log # 文件剪切至新目录并起新名
# 目录示例:
mv /test/log /www/log # 目录剪切至新目录
七、查找文件
7.1 find
find 用于在指定目录下查找文件,只列举常用情况。
# 选项
# -amin n : 在过去 n 分钟被读取过的文件
# -atime n : 在过去 n 天被读取过的文件
# -cmin n : 在过去 n 分钟被修改过的文件
# -mtime n : 在过去 n 天被修改过的文件
# -ctime n : 在过去 n 天内创建的文件
# 以下为常用选项
# -iname n 或 -name n : 文件名称符合 n 的文件,iname 会忽略大小写
# -ipath p 或 -path p : 路径名称符合 p 的文件,-ipath 会忽略大小写
# -type t : 文件类型是 t 的文件 (d:目录 c:字型装置文件 b:区块装置文件 f:一般文件 s:socket)
# 格式: find 目录 选项 [-exec -ok command] {} \;
# 例:
find ./ -name "*.log" # 查找当前目录与其子目录中后缀为 log 的文件
find /root/test -type f # 查找 /root/test 目录中所有的 一般文件
find /root/test -mtime 10 # 查找最近10天内更新过的文件
7.2 locate
Locate
用于查询符合条件的文件, 他会去保存文件和目录名称的数据库内查找,一般文件的文件数据库在/var/lib/slocate/slocate.db
中。
这个相当于查询缓存,不是实时的数据,但可以运行
updatedb
命令 手动更新数据库。
# 常用选项
# -c : 只输出找到的总数量
# -i : 忽略大小写
# 例:
locate useradd
7.3 whereis
whereis
用于查找文件。该命令只查找 二进制文件、源代码文件、说明文件。
# -b : 只查找二进制文件
# -B<目录> : 只在设定的目录下查找二进制文件
# -m : 只查找说明文件
# -M<目录> : 只在设定的目录下查找说明文件
# -s : 只查找源代码文件
# -S<目录> : 只在设定的目录下查找源代码文件
# -f : 不显示文件名前的路径
# -u : 查找不包含指定类型的文件
# 例:
whereis adduser
whereis -b adduser
7.4 which
which
用于查找文件。该命令会在环境变量$PATH
设置的目录里查找符合条件的文件。
which adduser
7.5 grep
grep
用于查询文件中符合条件的字符。
# 常用选项
# -c : 返回每个文件符合条件的行数
# -d : 查找目录时必须使用这项参数
# -e : 指定字符串做为查找文件内容的
# -i : 不分大小写搜索
# -l : 只显示搜索结果的文件名
# 常用示例
# 查找当前目录中,文件内包含 MySQL 字符串的所有文件并打印出字符所在的行。
grep MySQL *
# 查找当前目录中,文件内包含 MySQL 字符串的文件名
grep MySQL -l *
# 查找指定的服务进程
ps -ef | grep httpd
# 查找指定端口
netstat -an | grep 80
八、其它命令
# 查看进程
ps -ef | grep httpd
# 结束进程, PID 为进程号
kill -9 pid
# 显示内存使用情况
# -b -k -m -g : 取其一,以 Byte、kb、mb、bg 单位显示
# -s<间隔秒数> : 周期性统计内存使用情况
# -t : 显示内存使用总合
free [-bkmgst]
# 清屏
clear