-
ubantu server-liunx常用命令
关机/重启
sudo poweroff / sudo reboot
磁盘相关
- 磁盘查看
lsblk - 挂载硬盘
sudo mount [设备路径] [挂载点目录]
#示例
sudo mount /dev/sd? /mnt/data?
sudo mount /dev/sdd1 /mnt/data4 3t
sudo mount /dev/sde1 /mnt/data5 2t
- 卸载退出硬盘步骤
1.同步所有文件系统缓存
sync
2.卸载文件系统位置
sudo umount /mnt/data?
sudo umount /mnt/data4
sudo umount /mnt/data5
3.对物理盘断电
sudo udisksctl power-off -b /dev/sd?
服务相关
- 版本查询
? --version - 启动服务
sudo systemctl start ? - 设置服务自启动
sudo systemctl enable ? - 重启服务
sudo systemctl restart ? - 检查服务状态
sudo systemctl status ? - 检查服务是否开机自启
sudo systemctl is-enabled ? - .deb文件程序安装
sudo dpkg -i /?
清除缓存
-
清除页面缓存(PageCache)
sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches -
清除目录项和inodes
sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches -
清除页面缓存、目录项和inodes
sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
防火墙
- 列出所有防火墙规则并带编号
sudo ufw status numbered - 删除规则 编号
sudo ufw delete - 检查防火墙配置
sudo ufw status verbose - 开放端口
sudo ufw allow ?/tcp - 禁止端口
sudo ufw deny ?/tcp - 启动防火墙
sudo ufw enable - 重新加载UFW规则
sudo ufw reload - 关闭防火墙
sudo ufw disable
权限相关
基本权限管理命令
- 查看权限
# 查看当前目录下文件和文件夹的详细权限
ls -l
# 查看指定文件夹的权限
ls -ld /path/to/folder
# 显示隐藏文件的权限
ls -la
- chmod - 更改权限
# 数字表示法(推荐)
chmod 755 folder_name # 所有者:rwx,组:r-x,其他:r-x
chmod 644 file_name # 所有者:rw-,组:r--,其他:r--
chmod 777 folder_name # 所有人可读、写、执行(谨慎使用)
# 符号表示法
chmod u+rwx folder_name # 给所有者添加读、写、执行权限
chmod g+rx folder_name # 给组添加读、执行权限
chmod o-w folder_name # 移除其他的写权限
chmod a+x script.sh # 给所有人添加执行权限
- chown - 更改所有者和组
# 更改文件夹的所有者
sudo chown username folder_name
# 更改文件夹的所有者和组
sudo chown username:groupname folder_name
# 更改文件夹的所有者为当前用户
sudo chown $USER folder_name
# 更改文件夹的组
sudo chown :groupname folder_name
- chgrp - 更改组
# 更改文件夹的所属组
sudo chgrp groupname folder_name
# 将文件夹组改为 www-data(常用于 web 目录)
sudo chgrp www-data /var/www/html
递归操作(处理文件夹及其内容)
递归更改权限
# 递归更改文件夹及其所有内容的权限
chmod -R 755 folder_name
# 递归给所有 .sh 文件添加执行权限
find folder_name -name "*.sh" -exec chmod +x {} \;
# 递归移除其他用户的写权限
chmod -R o-w folder_name
递归更改所有权
# 递归更改文件夹及其所有内容的所有者
sudo chown -R username:groupname folder_name
# 递归更改文件夹及其内容为当前用户
sudo chown -R $USER:$USER folder_name
# 递归更改组
sudo chgrp -R www-data /var/www/html
常用权限组合
Web 服务器目录权限
# Web 根目录 - 安全配置
sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 755 /var/www/html
sudo chmod -R 644 /var/www/html/*.html # 仅文件为 644
# 可写目录(如上传文件夹)
sudo chmod 775 /var/www/html/uploads
sudo chgrp www-data /var/www/html/uploads
用户目录权限
# 用户主目录
chmod 700 ~ # 仅用户自己可访问
chmod 755 ~/public_html # 公开可读,但只有用户可写
# 项目目录
chmod 755 ~/projects # 其他人可读但不可写
配置文件权限
# 敏感配置文件
chmod 600 ~/.ssh/id_rsa # 仅用户可读写
chmod 644 ~/.ssh/id_rsa.pub # 公开可读
chmod 700 ~/.ssh # SSH 目录
权限数字表示法详解
| 数字 | 权限 | 含义 |
|---|---|---|
| 0 | --- | 无权限 |
| 1 | --x | 仅执行 |
| 2 | -w- | 仅写入 |
| 3 | -wx | 写入和执行 |
| 4 | r-- | 仅读取 |
| 5 | r-x | 读取和执行 |
| 6 | rw- | 读取和写入 |
| 7 | rwx | 读取写入和执行 |
格式: chmod ABC file
- A = 所有者权限
- B = 组权限
- C = 其他用户权限
实用权限管理
- 设置默认权限
# 查看当前 umask
umask
# 设置默认创建的文件权限为 644,文件夹为 755
umask 022
# 设置更严格的默认权限(文件 600,文件夹 700)
umask 077
- 特殊权限
# 设置粘滞位(常用于 /tmp,只有所有者能删除文件)
chmod +t folder_name
chmod 1755 folder_name
# 设置 SetGID(新建文件继承父目录的组)
chmod g+s folder_name
chmod 2755 folder_name
# 设置 SetUID(以文件所有者身份运行)
chmod u+s executable_file
chmod 4755 executable_file
- 权限检查与修复
# 检查文件夹权限
namei -l /path/to/folder
# 查找权限过大的文件
find /path -type f -perm 777 -ls
# 查找没有所有者的文件
find /path -nouser -o -nogroup
# 修复常见 web 目录权限
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
- 最小权限原则:只给予必要的最小权限
- 避免使用 777:除非绝对必要且了解风险
- 定期审计权限:检查关键目录的权限设置
- 使用适当的组权限:通过组管理而非全局权限
Linux 命令中 - 后面接字母的选项详细说明
选项的基本类型
- 单字母选项
# 单个字母选项,用单个 - 前缀
ls -l # 长格式显示
ls -a # 显示所有文件(包括隐藏文件)
ls -h # 人类可读的文件大小
- 组合单字母选项
# 多个单字母选项可以组合使用
ls -la # 等同于 ls -l -a
ls -lh # 等同于 ls -l -h
ls -lha # 等同于 ls -l -h -a
- 完整单词选项
# 完整单词选项,用 -- 前缀
ls --all # 显示所有文件
ls --help # 显示帮助信息
ls --version # 显示版本信息
常用命令选项详解
- 文件操作命令
ls- 列出目录内容ls -l # 长格式显示(权限、所有者、大小、时间) ls -a # 显示所有文件,包括隐藏文件 ls -h # 人类可读的文件大小(KB, MB, GB) ls -t # 按修改时间排序 ls -r # 反向排序 ls -R # 递归显示子目录 ls -S # 按文件大小排序 ls -i # 显示 inode 号码复制代码cp- 复制文件cp -r # 递归复制目录 cp -i # 交互模式(覆盖前确认) cp -v # 详细模式(显示复制过程) cp -p # 保留文件属性(权限、时间戳) cp -u # 仅复制更新的文件 cp -l # 创建硬链接而非复制 cp -s # 创建符号链接复制代码mv- 移动/重命名文件mv -i # 交互模式(覆盖前确认) mv -v # 详细模式(显示移动过程) mv -f # 强制移动(不提示) mv -n # 不覆盖已存在文件复制代码rm- 删除文件rm -r # 递归删除目录 rm -f # 强制删除(不提示) rm -i # 交互模式(删除前确认) rm -v # 详细模式(显示删除过程) rm -d # 删除空目录复制代码mkdir- 创建目录mkdir -p # 创建多级目录(自动创建父目录) mkdir -v # 详细模式(显示创建的目录) mkdir -m # 设置目录权限(mkdir -m 755 dirname)复制代码 - 权限管理命令
chmod- 更改权限chmod -R # 递归更改权限 chmod -v # 详细模式(显示更改的文件) chmod -c # 仅在更改时报告 chmod -f # 忽略大部分错误信息复制代码chown- 更改所有者chown -R # 递归更改所有者 chown -v # 详细模式 chown -c # 仅在更改时报告复制代码chgrp- 更改组chgrp -R # 递归更改组 chgrp -v # 详细模式复制代码 - 文本处理命令
grep- 文本搜索grep -r # 递归搜索目录 grep -i # 忽略大小写 grep -v # 反向匹配(显示不包含的行) grep -n # 显示行号 grep -l # 仅显示包含匹配的文件名 grep -c # 显示匹配行数 grep -E # 使用扩展正则表达式复制代码find- 查找文件find -name # 按文件名查找 find -type # 按文件类型查找(f=文件,d=目录) find -mtime # 按修改时间查找 find -size # 按文件大小查找 find -exec # 对找到的文件执行命令 find -delete # 删除找到的文件复制代码tar- 归档文件tar -c # 创建归档 tar -x # 提取归档 tar -v # 详细模式 tar -f # 指定归档文件名 tar -z # 使用 gzip 压缩 tar -j # 使用 bzip2 压缩 tar -t # 列出归档内容复制代码 - 系统管理命令
ps- 进程状态ps -e # 显示所有进程 ps -f # 完整格式显示 ps -l # 长格式显示 ps -u # 按用户显示进程 ps -aux # 显示所有用户的详细进程信息复制代码top/ htop - 进程监控top -p # 监控特定PID top -u # 监控特定用户 top -d # 设置刷新间隔复制代码systemctl- 服务管理systemctl start # 启动服务 systemctl stop # 停止服务 systemctl restart # 重启服务 systemctl reload # 重新加载配置 systemctl enable # 启用开机启动 systemctl disable # 禁用开机启动 systemctl status # 查看服务状态复制代码
选项的语法规则
- 短选项语法
# 单个选项
command -a
# 多个选项组合
command -abc # 等同于 command -a -b -c
# 带参数的选项
command -f filename # -f 后面接文件名
command -n 10 # -n 后面接数字
- 长选项语法
# 完整单词选项
command --help
command --version
# 带参数的选项
command --file=filename
command --number=10
- 混合使用
# 短选项和长选项可以混合使用
tar -czvf archive.tar.gz --exclude="*.tmp" /path/to/dir
常用选项组合示例
实用组合命令
# 备份目录并压缩
tar -czvf backup.tar.gz /path/to/directory
# 查找并删除旧日志文件
find /var/log -name "*.log" -mtime +30 -delete
# 递归更改所有 .sh 文件为可执行
find . -name "*.sh" -exec chmod +x {} \;
# 显示进程的完整信息
ps -ef | grep nginx
# 安全删除(交互确认)
rm -ri old_directory
# 复制并保留所有属性
cp -rp source_directory destination
注意事项
- 选项顺序问题
# 有些命令对选项顺序敏感
tar -cf archive.tar files/ # 正确
tar -fc archive.tar files/ # 可能出错
# 一般规则:带参数的选项应该在参数之前
- 选项冲突
# 某些选项不能同时使用
rm -ri # 可以:交互式递归删除
rm -rf # 可以:强制递归删除
# 但 -i 和 -f 通常不能同时使用,因为含义冲突
3. GNU 风格 vs BSD 风格
bash
# Linux (GNU) 风格
ls --color=auto
# macOS (BSD) 风格
ls -G
帮助信息获取
查看命令选项帮助
# 大多数命令的标准帮助选项
command --help
command -h
# 详细手册
man command
# 简要帮助
command --help | less
示例:学习新命令
# 查看 tar 命令的所有选项
tar --help
# 或者查看手册页
man tar
# 查找特定选项的说明
man chmod | grep -A 5 -B 5 "\-R"
常用字母含义:
- r - 递归 (recursive)
- f - 强制 (force) / 文件 (file)
- v - 详细 (verbose)
- i - 交互 (interactive)
- p - 保留属性 (preserve) / 路径 (path)
- h - 人类可读 (human-readable)
- 使用 --help 查看不熟悉的选项
- 在测试环境练习危险选项(如 rm -rf)
docker相关
启动/停止 Docker
sudo systemctl start docker / sudo systemctl stop docker
查看服务状态
sudo systemctl status docker
进入?内的容器
docker exec -it ? /bin/bash
镜像管理
列出本地所有镜像的基本信息
docker images / docker image ls
通过镜像ID删除镜像
docker rmi ?
删除所有未被容器使用的镜像
docker image prune -a
删除所有悬空镜像(未被任何镜像引用的镜像层)
docker image prune
拉取镜像
docker pull [image]
删除镜像
docker rmi [image]
docker容器管理
查看运行中的容器
docker ps
查看所有容器
docker ps -a
启动容器
docker start ?
停止容器
docker stop ?
重启容器
docker restart ?
删除容器
docker rm ?
进入容器
docker exec -it ? bash
docker-compose容器
在yaml文件所在目录执行命令
启动容器
docker compose up -d
重启容器
docker compose restart ?
关闭容器
docker compose stop ?
停止并删除容器和网络(不会删除数据卷和配置目录)
docker compose down
查看日志
docker compose logs -f
近10条日志
sudo docker compose logs --tail=10
Nginx相关
检查 Nginx 状态
service nginx status
检查位置nginx配置文件
nginx -t -c /?
查看nginx进程
ps | grep nginx
启动nginx
/etc/init.d/nginx start
测试配置语法
nginx -t -c '/etc/nginx/uci.conf'
如果测试通过,启动 Nginx
/etc/init.d/nginx start
文本编辑器
cat
查看
cat /?
cat > 文件名? 直接编写 enter换行 ctrl+d 保存退出
cat > /?#位置文件名 << 'EOF'
插入内容
EOF
vi
i编辑
esc:wq保存退出
:%d 全部删除
nano
- 全选
Ctrl + ^或Alt + A→Meta + \→Meta + /先设置标记,然后跳转至文件首,再跳转至文件尾以实现全选 - 删除所选
Ctrl + K剪切(删除)已选中的文本 - 粘贴
Ctrl + U在光标位置粘贴剪切板内容 - 跳转至文件首
Meta + \或Ctrl + Home快速将光标移动到文件开头 - 跳转至文件尾
Meta + /或Ctrl + End快速将光标移动到文件末尾 - 实现全选并删除
1.精确选择:按
Ctrl + ^(即Ctrl+6) 或Alt + A设置标记,你会看到底部出现"Mark Set"的提示。然后,通过按Meta + /(通常是Alt + /) 跳转到文件末尾。此时,从设置标记的位置到文件末尾的所有文本都会被高亮选中。最后,按Ctrl + K即可一次性删除所有选中的内容。 2.快速选择:先按Meta + \(通常是Alt + \) 跳到文件开头,接着按Ctrl + ^设置标记,然后再按Meta + /跳到文件末尾。这样就选中了整个文件,再使用Ctrl + K删除。 - 全选并覆盖粘贴
这个操作通常用于用剪贴板里的新内容完全替换当前文件的全部旧内容。
首先,使用上面介绍的任意一种方法全选文件内容并按下
Ctrl + K将其剪切(删除)。此时,旧内容已经从编辑区消失。 接着,直接按Ctrl + U就能将刚才剪切的内容粘贴回来。如果你是从其他程序(比如浏览器)复制了内容,想在Nano中替换当前文件,在完成全选和剪切后,不要在Nano里复制新内容,而是直接使用Ctrl + Shift + V(具体组合取决于你的终端设置)将系统剪贴板的新内容粘贴进来。
