参考资料
入门基础
常用操作
1
2
3
4
5
6
7
8
9
10
11
12
|
# 先把内存中的数据写到磁盘中,防止数据丢失
sync
# 关机
shutdown -h now
# 或者
poweroff
# 重启
shutdown -r now
# 或者
reboot
|
1
2
3
4
5
6
7
|
# 查看命令帮助
某指令 --help
# 查看完整手册(按 q 退出)
man 某指令
# 例如
man ls
|
目录操作
切换目录
1
2
3
4
5
|
cd / # 回到根目录
cd /usr # 切换到 /usr 文件夹
cd ../ # 切换到上一级目录
cd ~ # 切换到用户主目录 /home/username
cd - # 切换到上次访问的目录
|
查看目录
1
2
3
4
|
ls # 查看当前目录下的所有文件和目录
ls /usr # 查看 /usr 目录
ls -a # 查看当前目录(包括隐藏文件)
ls -l 或者 ll # 查看详细信息(权限、owner、group、时间等)
|
目录增删改
1
2
3
4
5
6
7
|
mkdir aaa # 在当前目录下创建文件夹
mkdir /usr/aaa # 在 /usr 目录下创建文件夹
mv 旧名称 新名称 # 重命名,也可用于移动文件
cp -r 源文件 目标位置 # 复制文件或目录
rm -rf 文件或目录 # 删除文件或目录(谨慎使用)
find /usr/tmp -name 'a*' # 查找 /usr/tmp 目录下以 a 开头的文件
tree # 以树形结构展示目录
|
文件操作
新建和删除
1
2
|
touch 文件名 # 新建文件
rm -rf 文件名 # 强制删除文件(谨慎使用)
|
编辑文件
推荐先安装 vim 编辑器:
1
2
3
|
sudo apt update
sudo apt upgrade
sudo apt install vim
|
vim 有三种模式:
1. 命令模式(Command Mode)
- 按
Esc 进入
dd:删除整行
x:删除单个字符
/ + 字符:查找
2. 编辑模式(Insert Mode)
- 按
i、a 或 o 进入
i:在当前光标前插入
a:在当前光标后插入
o:在当前行下方另起一行
3. 末行模式(Last Line Mode)
- 输入
: 进入
wq!:保存并退出
q!:不保存直接退出
查看文件
1
2
3
4
|
cat 文件名 # 查看文件(内容过长只显示最后一屏)
more 文件名 # 分页查看,显示百分比;回车下一行,空格下一页,q 退出
less 文件名 # 翻页查看
tail -10 文件名 # 查看文件最后 10 行(Ctrl+C 退出)
|
修改权限
权限格式形如 -rwxr-xr--:
1
2
3
4
5
6
|
- rwx r-x r--
↑ ↑ ↑ ↑
│ │ │ └── 其他用户权限 (r--)
│ │ └─────── 所属组权限 (r-x)
│ └─────────── 拥有者权限 (rwx)
└─────────────── 文件类型 (-)
|
- 第 1 位:文件类型(-、d、l、b、c、s、p)
- 第 2-4 位:拥有者权限(user)
- 第 5-7 位:所属组权限(group)
- 第 8-10 位:其他用户权限(other)
- rwx:r 可读,w 可写,x 可执行
1
2
3
4
5
6
|
chmod 700 文件名 # 将权限改为 700(二进制 111,仅拥有者有所有权限)
chmod -R 700 目录 # 递归修改目录权限
# chmod 与 chown 的区别
chmod 文件名 # 修改访问权限
chown 用户:组 文件名 # 修改所有者和所属组
|
压缩与解压
概念
- Windows:.zip 或 .rar
- Linux 打包文件:.tar
- Linux 压缩文件:.gz
- Linux 打包并压缩:.tar.gz(或 .tgz)
打包压缩
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# tar.gz 格式
tar -zcvf 打包压缩后的文件名 要打包的文件夹
tar -zcvf mydir.tar.gz mydir/
# 参数说明
# -z:调用 gzip 压缩
# -c:创建压缩包
# -v:显示过程
# -f:指定文件名
# zip 格式(需先安装)
sudo apt update && sudo apt install -y zip
zip -r mydir.zip mydir/
|
解压
1
2
3
4
5
6
7
8
9
10
11
|
# tar.gz 格式
tar -zxvf 压缩包 -C 目标目录
tar -zxvf mydir.tar.gz -C /document/mydir
# 参数说明
# -x:解压
# -v:显示过程
# -f:指定文件名
# zip 格式
unzip 压缩包.zip
|
查找命令
grep
1
2
|
ps -ef | grep 服务名 # 查找指定服务的进程
grep -rn "内容" 文件名 # 查找内容在文件中的行号
|
find
1
2
3
4
5
|
find . -name "*.log" -ls # 查询 .log 文件并显示详情
find . -type f -name "*.log" # 查询普通 .log 文件
find . -type d | sort # 查询所有目录并排序
find . -size +100M # 查询大于 100M 的文件
find . -perm 600 # 查询权限为 600 的文件
|
其他定位命令
1
2
3
|
whereis ls # 定位可执行文件、源代码、帮助文件
which java # 在 PATH 中搜索命令位置
who /var/log/wtmp # 查看当前登录用户
|
用户管理
用户切换(su)
1
2
3
4
5
6
7
8
9
|
su - test # 切换到 test 用户
su # 切换到 root 用户
exit # 返回上一个用户
sudo passwd root # 设置 root 密码
# 注意:
# - root 切换到普通用户无需密码
# - 普通用户切换到任何用户都需要密码
# - 切换前用户仍保持登录状态
|
临时提权(sudo)
普通用户可临时拥有 root 权限:
1
2
|
hadoop ALL=(ALL) ALL # 允许使用所有 root 权限(需输入用户密码)
hadoop ALL=(NOPASSWD): /bin/ls, /bin/cat # 仅允许执行 ls 和 cat(无需密码)
|
用户增删
1
2
|
sudo adduser 新用户名 # 新建用户(需重启生效)
sudo deluser 旧用户名 # 删除用户
|
系统服务
systemd(现代系统)
1
2
3
4
5
6
|
systemctl status 服务名 # 查看服务状态
systemctl start 服务名 # 启动服务
systemctl stop 服务名 # 停止服务
systemctl restart 服务名 # 重启服务
systemctl enable 服务名 # 设置开机启动
systemctl list-unit-files # 查看所有服务
|
SysVinit(传统系统)
1
2
3
4
|
service iptables status
service iptables start
service iptables stop
service iptables restart
|
网络管理
主机名配置
域名映射
用于通过主机名访问时解析 IP 地址:
1
2
3
4
|
vi /etc/hosts
# 添加如下内容:
# IP地址1 主机名1
# IP地址2 主机名2
|
定时任务(crontab)
用于在固定间隔时间执行指定命令或脚本。
安装与启动
1
2
3
4
|
apt install cron
service cron start
service cron restart
service cron stop
|
常用命令
1
2
3
|
crontab file [-u user] # 用指定文件替代当前 crontab
crontab -l [-u user] # 列出当前 crontab
crontab -e [-u user] # 编辑 crontab
|
格式说明
命令:* * * * * command
解释:分 时 日 月 周 命令
第 1 列表示分钟 1 ~ 59, 每分钟用 * 或者 */1 表示
第 2 列表示小时 0 ~ 23(0 表示 0 点)
第 3 列表示日期 1 ~ 31
第 4 列表示月份 1 ~ 12
第 5 列表示星期 0 ~ 6(0 表示星期天)
第 6 列为要运行的命令
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 每分钟执行一次 date 命令
*/1 * * * * date >> /root/date.txt
# 每晚 21:30 重启 apache
30 21 * * * service httpd restart
# 每月 1、10、22 日的 4:45 重启
45 4 1,10,22 * * service httpd restart
# 每周六、周日的 1:10 重启
10 1 * * 6,0 service httpd restart
# 每天 18:00-23:00 每隔 30 分钟重启
0,30 18-23 * * * service httpd restart
# 晚上 23 点到早上 7 点每小时重启
* 23-7/1 * * * service httpd restart
|
其他常用命令
基本操作
1
2
|
pwd # 查看当前目录
Ctrl + l # 清屏
|
进程管理
1
2
3
|
ps -ef # 查看当前进程
kill -9 pid # 杀死进程
top # 查看 CPU 和内存占用率(高负载进程排在顶部)
|
网络命令
1
2
3
4
5
|
ifconfig # 查看网卡信息
ifconfig | more # 分页查看
ping IP地址 # 检查与某台机器的连接
netstat -an # 查看当前系统端口
netstat -nltp # 查看端口(可配合 grep 筛选)
|
防火墙
1
2
3
4
5
6
7
8
|
# Ubuntu (ufw)
sudo ufw status
sudo ufw enable
sudo ufw disable
# CentOS/RHEL (firewalld)
firewall-cmd --permanent --add-port=8080/tcp # 永久开放端口
firewall-cmd --reload # 重载配置
|
Vi 快捷键(在命令模式下)
1
2
3
4
5
6
|
Shift + G # 跳到最后一行
Shift + Z Z # 保存并退出
yy # 复制一行
dd # 删除一行
p # 粘贴
u # 撤销
|
后台运行
软件卸载
1
2
3
4
|
apt list | grep ??? # 查看已安装软件
dpkg -l # 列出所有已安装包
sudo apt --purge remove 软件名 # 卸载软件
sudo apt clean # 清理缓存
|
环境变量
添加环境变量
方便调用命令,无需输入完整路径:
1
|
export PATH=/x/x/x/miniconda3/bin:$PATH
|
$PATH 表示取 PATH 变量的值,保留原有设置
- 多个路径用
: 分隔
- 路径顺序很重要,先找到的先使用
- 以上设置仅在当前终端有效
设置全局有效
1
2
3
4
5
|
# 新建脚本文件
vi myenv.sh
# 写入:export OS_SOMETHING=default
# 保存后执行
source myenv.sh
|
查看环境变量
1
2
|
env | grep PATH
env | grep OS
|
重定向
输入重定向
1
2
3
|
命令 < 文件 # 文件内容作为输入
命令 << 分界符 # 从键盘输入直到分界符
命令 < 文件1 > 文件2 # 文件1 作为输入,结果输出到文件2
|
输出重定向
1
2
3
4
5
6
7
|
命令 > 文件 # 标准输出写入文件(覆盖)
命令 >> 文件 # 标准输出写入文件(追加)
命令 2> 文件 # 错误信息写入文件(覆盖)
命令 2>> 文件 # 错误信息写入文件(追加)
命令 >> 文件 2>&1 # 标准输出和错误信息都写入(追加)
# 或者
命令 &>> 文件
|
记忆口诀:双箭头追加、2 表示错误、2>&1 是固定写法
系统更新
1
2
3
4
5
|
# Debian 系(Ubuntu)
sudo apt update && sudo apt upgrade -y
# RHEL 系(CentOS)
sudo yum update --security
|
拓展与后续学习建议
- 进程管理进阶:学习
ps、top、htop 等命令的更多用法,了解进程优先级和调度
- 磁盘管理深入:学习
df、du、lsblk、fdisk、parted 等命令,理解磁盘分区和文件系统
- 网络诊断工具:学习
ping、traceroute、nslookup、dig、netstat、ss 等网络工具
- 日志管理:学习
journalctl、logrotate 的配置,了解日志轮转策略
- Shell 脚本进阶:学习正则表达式、sed、awk 等文本处理工具
- 系统安全:学习
iptables、firewalld、SELinux 等安全配置