0%

Linux使用指南与常用命令笔记

引言

本笔记总结了Linux操作系统的基础知识和实用技巧,涵盖远程连接工具、常用命令、系统设置、定时任务、用户管理、文件权限等内容。

前置知识

在学习本笔记内容之前,建议具备以下基础:

  • 基本的计算机操作知识
  • 了解操作系统的基本概念
  • 熟悉命令行界面的使用方式
  • 建议购买云服务器进行实践操作

Linux使用总结

1. Linux介绍

历史背景

Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统。其内核由林纳斯·本纳第克特·托瓦兹(Linus Torvalds)于1991年第一次释出。它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。

核心特点:

  • Linux内核kernel最初由芬兰人李纳斯·托瓦兹在赫尔辛基大学上学时出于个人爱好编写
  • 1991年10月5日第一次正式向外公布
  • Linux借鉴了Unix的思想,但没有一行Unix的代码
  • Linux英文解释:Linux is not Unix,业界称为”类Unix”系统

Linux构成

Linux系统由以下部分组成:

  • Linux Kernel(内核):系统的核心部分
  • 软件包:各种应用程序和工具

主流发行版本

目前市面上比较知名的Linux发行版有:

  • RedHat:企业级商业发行版
  • CentOS:社区企业操作系统(常用于Web服务器)
  • Ubuntu:用户友好的桌面和服务器版本
  • Fedora:RedHat的社区版本
  • Debian:稳定性强的发行版
  • Aliyun Linux:阿里云定制版本
  • SUSE Linux:企业级发行版
  • Open SUSE:SUSE的社区版本
  • CoreOS:容器化操作系统
  • FreeBSD:类Unix系统

应用场景选择:

  • Web应用(Java、PHP等)→ 选择CentOS
  • 微软技术栈(ASP、.NET、SQL Server)→ 选择Windows Server

2. Linux常用远程连接工具

建议:购买云服务器(阿里云、华为云等)进行实践,多练习才能熟练掌握Linux。

推荐工具组合

最佳组合:Xshell + WinSCP

主流远程连接工具

1. SecureCRT

  • 功能:可直接连接并上传文件
  • 下载地址https://www.vandyke.com
  • 特点:集成度高,功能全面

2. XShell

3. Putty

4. XFTP

5. WinSCP


3. Linux常用命令总结

3.1 Linux特色目录符号

1
2
3
4
.      # 当前目录
.. # 上一级目录
- # 上一个工作目录(配合cd使用)
~ # 用户根目录(/root)

使用示例:

1
2
3
cd -   # 返回上一个工作目录
cd ~ # 返回用户根目录
cd .. # 返回上一级目录

3.2 磁盘管理

目录切换与查看

1
2
3
4
5
6
7
8
9
10
11
12
# 进入目录
cd 目录名 # 进入某个目录
cd /info/a # 进入多级目录
cd .. # 返回上一级目录
cd / # 返回根目录
cd - # 返回上一个工作目录

# 显示当前目录
pwd # 显示当前完整路径

# 查看分区
fdisk -l # 查看新的分区

列出文件和目录

1
2
3
4
5
6
7
8
9
10
11
# 基本列出命令
ll # 纵向列出(含详细信息)
ll -a # 额外展示隐藏文件
ll -h # 人性化显示大小(KB、MB、GB)
ls # 横向列出
ls -a # 额外展示隐藏文件
dir # 列出当前目录内容

# ll vs ls 区别
# ll:纵向展示,显示权限、所有者、组、大小等详细信息
# ls:横向简洁展示

磁盘空间查看

1
2
3
4
# df 命令 - 查看文件系统级别的磁盘使用
df # 查看磁盘空间使用情况
df -h # 人性化显示(GB、MB格式)
df -T # 显示文件系统类型

df 输出字段说明:

  • Filesystem:文件系统
  • Size:总容量
  • Used:已使用
  • Avail:可用空间
  • Use%:使用百分比
  • Mounted on:挂载点
1
2
3
# du 命令 - 查看文件/目录级别的磁盘使用
du # 查看文件和目录大小
du -h # 人性化显示大小

使用场景:

  • df:查看磁盘分区整体使用情况
  • du:查看具体文件和文件夹占用空间

3.3 文件管理

创建目录

1
2
3
4
5
6
7
8
9
# 基本创建
mkdir 目录名 # 创建单个目录
mkdir -p file1/file2 # 递归创建多级目录
mkdir -v file4 # 显示创建信息
mkdir -vp {hello/,maven/} # 一次创建多个目录结构

# 参数说明
# -p, --parents : 自动创建父目录
# -v, --verbose : 显示详细信息

文件操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建文件
touch 文件名 # 创建空文件或更新修改时间

# 删除操作
rm -f 文件 # 强制删除文件
rm -rf 目录 # 递归删除目录及内容

# 移动/重命名
mv 源文件 目标文件 # 移动或重命名

# mv 常用参数
# -b : 覆盖前先备份
# -f : 强制覆盖
# -i : 覆盖前询问
# -u : 仅当源文件较新时才更新
# -t : 指定目标目录
# -v : 显示过程

查看文件内容

1
2
3
4
5
cat 文件名                          # 一次性输出全部内容
more 文件名 # 逐屏输出(空格翻页)
less 文件名 # 逐屏输出(PgUp/PgDn翻页,q退出)
head 文件名 # 显示前10行
tail 文件名 # 显示后10行

复制与查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 复制
cp 源文件 目标文件 # 复制文件
cp -rf 源目录 目标目录 # 递归复制目录

# 查找文件
find ./ -name 文件名 # 按名称查找
find ./ -mtime +5 # 查找5天前修改的文件

# 查找命令
which 命令 # 查找命令位置(PATH中)
whereis 程序名 # 查找程序相关文件
# whereis 参数:
# -b : 只搜索二进制文件
# -m : 只搜索man说明文件
# -s : 只搜索源代码文件

3.4 系统设置

进程管理

1
2
3
4
5
6
7
# 查看进程
ps -aux # 查看所有进程(BSD风格)
ps -ef # 查看所有进程(标准风格)

# 终止进程
kill PID # 正常终止进程
kill -9 PID # 强制终止进程

系统信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 日期时间
date # 显示/设置系统日期时间

# 语言环境
echo $LANG # 显示当前语言环境
locale # 查看语言包

# 系统信息
uname # 查看系统信息
cat /etc/centos-release # 查看CentOS版本

# 用户信息
who # 显示已登录用户
whoami # 显示当前用户
su 用户名 # 切换用户

系统操作

1
2
3
shutdown -h now                    # 立即关机
reboot # 重启系统
clear # 清屏(内容上移)

实用技巧:

  • Tab 键自动补全命令或文件名

系统负载监控

1
2
# top 命令 - 实时监控系统
top # 动态显示系统资源使用情况

top 可查看信息:

  • CPU使用率
  • 内存使用情况
  • 系统运行时间
  • 进程线程信息
  • 交换分区使用情况
1
2
# uptime 命令 - 系统负载概览
uptime # 显示系统运行时长和负载

系统负载解读:

  • 系统平均负载:特定时间间隔内运行队列中的平均进程数
  • 每个CPU核心活动进程数 ≤ 3:系统运行良好
  • 四核CPU:负载 < 12 为正常
  • 负载达到20:系统负载严重

进程进入运行队列的条件:

  • 没有在等待I/O操作
  • 没有主动进入等待状态
  • 没有被停止

内存管理

1
2
3
free                              # 显示内存使用(KB)
free -m # 显示内存使用(MB)
free -h # 显示内存使用(GB,人性化)

3.5 Linux定时任务

详细教程:可参考博文《Linux crontab 命令详细使用》

Crontab 基本命令

1
2
3
crontab -e                        # 创建或编辑定时任务
crontab -l # 查看当前定时任务
crontab -r # 删除所有定时任务(慎用)

Crontab 语法格式

1
2
3
4
5
6
7
* * * * * command
│ │ │ │ │
│ │ │ │ └─── 星期 (0-7, 0和7都表示周日)
│ │ │ └───── 月份 (1-12)
│ │ └─────── 日期 (1-31)
│ └───────── 小时 (0-23)
└─────────── 分钟 (0-59)

使用示例

1
2
3
4
5
6
7
8
# 每分钟执行一次
*/1 * * * * echo "hello world" >> /opt/crontab.log

# 每天凌晨2点执行
0 2 * * * /path/to/script.sh

# 每周一上午9点执行
0 9 * * 1 /path/to/script.sh

查看执行日志

1
tail -f /var/log/cron             # 实时查看定时任务执行情况

重定向符号说明

1
2
3
4
>  a.log                          # 重定向覆盖输出
>> a.log # 重定向追加输出
| # 管道符,左边输出作为右边输入
> a.log # 清空日志文件

常用组合:

1
ps -ef | grep tomcat              # 查找tomcat进程

扩展阅读:重定向详解参考博文 https://blog.csdn.net/smilehappiness/article/details/105181739


3.6 用户管理

详细教程https://www.runoob.com/linux/linux-user-manage.html

用户操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 添加用户
useradd 用户名 # 创建新用户

# 删除用户
userdel -r zhangsan # 删除用户及主目录
# -r 参数:同时删除用户主目录

# 修改密码
passwd # 修改当前用户密码
passwd zhangsan # 修改指定用户密码(需root权限)

# 查看用户信息
id 用户名 # 查看用户ID信息
# 输出示例: uid=1001(用户名) gid=1002(组名) groups=1002(组名)

用户组操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看用户和组
cat /etc/passwd # 查看所有用户
cat /etc/group # 查看所有用户组

# 创建和删除组
groupadd 组名 # 创建用户组
groupdel 组名 # 删除用户组

# 查看用户所属组
groups # 查看当前用户所在组
groups 用户名 # 查看指定用户所在组

# 用户加入组
usermod -g 组名 用户名 # 修改用户主组
gpasswd -a 用户名 组名 # 将用户添加到附加组

# 从组中移除用户
gpasswd -d 用户名 组名 # 将用户从组中删除
# 注意:组名不能是用户的主组

3.7 文件权限

文件类型识别

使用 ll 命令查看文件权限信息:

1
ll                               # 显示详细文件信息

Linux 7种文件类型:

1
2
3
4
5
6
7
-rw-rw-rw   -  普通文件
drw-rw-rw d 目录(Directory)
srw-rw-rw s 套接字文件(Socket)
brw-rw-rw b 块设备(Block device)
crw-rw-rw c 字符设备(Character device)
lrw-rw-rw l 符号链接(Link)
prw-rw-rw p 管道文件(Pipe)

权限详解

权限表示:

  • r(read):读权限,值=4
  • w(write):写权限,值=2
  • x(execute):执行权限,值=1
  • rwx:所有权限,值=7(4+2+1)

常见权限值:

  • 644:rw-r–r–(文件常用)
  • 755:rwxr-xr-x(目录常用)
  • 777:rwxrwxrwx(完全开放,不推荐)

权限结构解析

drwxr-xr-x 为例:

1
2
3
4
5
6
d rwx r-x r-x
│ │ │ │
│ │ │ └─ 其他用户权限(Others)
│ │ └───── 用户组权限(Group)
│ └───────── 文件所有者权限(Owner)
└──────────── 文件类型

位置说明:

  • 第1位:文件类型
  • 第2-4位:属主权限(创建者)
  • 第5-7位:属组权限(所属组)
  • 第8-10位:其他用户权限

文件中rwx的含义

1
2
3
r : 可查看文件内容(如 cat 命令)
w : 可编辑或删除文件
x : 可作为命令执行

目录中rwx的含义

1
2
3
r : 可列出目录内容(ls 命令)
w : 可在目录中创建文件
x : 可切换进入目录(cd 命令)+ 查看详细信息(ls -l)

权限修改命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 修改权限
chmod 640 aa.txt # 设置文件权限为640
chmod -R 755 /usr/local # 递归设置目录权限
# -R : 递归应用到子文件和子目录

# 修改所有者
chown centos aa.txt # 修改文件所有者
chown -R centos /usr/local # 递归修改所有者

# 修改所属组
chgrp centos aa.txt # 修改文件所属组
chgrp -R centos /usr/local # 递归修改所属组

# 同时修改所有者和所属组
chown centos:centos aa.txt # 一次性修改
chown -R centos:centos /usr/local # 递归修改

# 查看当前用户所在组
groups

3.8 文档处理

文本搜索与处理

1
2
3
4
5
6
7
8
9
10
11
12
13
# 文本搜索
grep 'keyword' 文件名 # 搜索包含关键词的行
ps -ef | grep tomcat # 查找进程

# 排序和去重
sort 文件名 # 排序输出
cat aa.log | sort # 排序日志内容
uniq # 去除相邻重复行
cat aa.txt | sort | uniq # 排序后去重

# 统计
wc 文件名 # 统计行数、单词数、字符数
cat aa.txt | wc # 输出格式:行数 单词数 字符数

日志查看与分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 关键词上下文查看
grep -A 100 'Exception' catalina.out # 关键词后100行(After)
grep -B 100 'Exception' catalina.out # 关键词前100行(Before)
grep -C 100 'Exception' catalina.out # 关键词上下100行(Center)

# 管道方式
cat catalina.out | grep -C 100 'Exception'
cat catalina.out | grep -A 100 'Exception'
cat catalina.out | grep -B 100 'Exception'

# 实时查看日志
tail -f catalina.out # 实时查看日志
tail -100f catalina.out # 实时查看最后100行
tail -f -n 100 catalina.out # 同上

3.9 网络通讯

网络工具

1
2
3
4
5
6
7
8
9
10
# 网页抓取
curl https://example.com # 抓取网页内容

# 文件下载
wget https://example.com/file # 下载文件

# 命令确认
yes # 自动输入y确认
y # 输入y确认
no 或 n # 输入no或n拒绝

网络配置与测试

1
2
3
4
5
6
7
# IP查看
ifconfig # 查看本机IP配置
curl ipinfo.io/ip # 查看外网IP
curl ifconfig.me # 查看外网IP(备选)

# 连通性测试
ping 域名或IP # 测试网络连通性

端口与进程查看

1
2
3
4
5
6
7
8
9
10
11
# 端口占用查看
lsof -i 端口号 # 查看端口占用情况
lsof -i 8000 # 查看8000端口使用情况

# 安装lsof(如未安装)
yum -y install lsof

# 网络连接查看
netstat # 查看所有网络端口
netstat -nlp # 查看监听端口
netstat -tunlp | grep 8000 # 查看指定端口

netstat 参数说明:

1
2
3
4
5
-t (tcp)    : 仅显示tcp相关选项
-u (udp) : 仅显示udp相关选项
-n : 拒绝显示别名,全部转化为数字
-l : 仅列出在监听(Listen)的服务
-p : 显示建立连接的程序名

3.10 备份压缩

tar 压缩与解压

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 解压命令
tar -zxvf xxx.tar.gz # 解压.tar.gz文件
tar -zxvf xxx.tar.gz -C /usr/local # 解压到指定目录
tar -xvf xxx.tar # 解压.tar文件

# 压缩命令
tar -zcvf xxx.tar.gz ./file/* # 压缩为.tar.gz
tar -cvf xxx.tar ./file/* # 压缩为.tar

# 不同格式压缩(压缩率递增,速度递减)
tar -zcvf file.tar.gz 目录 # .tar.gz格式
tar -jcvf file.tar.bz2 目录 # .tar.bz2格式
tar -Jcvf file.tar.xz 目录 # .tar.xz格式

# 通用解压
tar -xvf 压缩文件 # 自动识别格式解压

压缩格式对比:

  • tar.gz:常用,压缩适中
  • tar.bz2:压缩率高,速度较慢
  • tar.xz:压缩率最高,速度最慢

zip 压缩与解压

1
2
3
4
5
# 压缩
zip a.zip a.txt # 压缩为zip格式

# 解压
unzip a.zip # 解压zip文件

3.11 Linux上rz和sz的使用

对于小文件传输,可以使用rz/sz命令,无需XFTP或WinSCP。

安装

1
yum -y install lrzsz

使用

1
2
rz                              # 上传文件到服务器
sz 文件名 # 下载文件到本地

使用场景:

  • 小文件快速传输
  • 临时文件上传下载
  • 配合Xshell等终端使用

Shell重定向详解

标准文件描述符

1
2
3
0 : 标准输入(stdin)  - 键盘
1 : 标准输出(stdout) - 屏幕
2 : 错误输出(stderr) - 屏幕

/dev/null 黑洞设备

1
2
/dev/null                       # Linux空设备文件
# 所有写入内容都会被丢弃

常用重定向组合

1
2
3
4
5
6
7
8
9
10
11
12
13
command > file                  # 标准输出重定向到文件
command 2> file # 错误输出重定向到文件
command > file 2>&1 # 标准输出和错误输出都重定向到文件
command &> file # 同上(简写)
command >> file # 追加标准输出到文件
command 2>> file # 追加错误输出到文件

# 丢弃所有输出
command > /dev/null 2>&1 # 标准输出和错误输出都丢弃
command &> /dev/null # 同上(简写)

# 后台运行
nohup command > /dev/null 2>&1 & # 后台运行并丢弃所有输出

重定向顺序的重要性

1
2
3
4
5
6
7
8
9
10
11
12
13
# 正确写法
>/dev/null 2>&1
# 执行顺序:
# 1. 标准输出重定向到/dev/null
# 2. 错误输出重定向到标准输出(即/dev/null)
# 结果:两者都被丢弃

# 错误写法
2>&1 >/dev/null
# 执行顺序:
# 1. 错误输出绑定到当前标准输出(屏幕)
# 2. 标准输出重定向到/dev/null
# 结果:标准输出被丢弃,错误输出仍显示在屏幕

nohup 命令详解

1
2
3
4
5
6
nohup command &                     # 后台运行,输出到nohup.out
nohup command > log.txt 2>&1 & # 后台运行,输出到log.txt
nohup command > /dev/null 2>&1 & # 后台运行,不产生任何输出

# 常用于启动Java服务
nohup java -jar xxxx.jar > /dev/null 2>&1 &

重点建议

1. 实践为主

  • 购买云服务器进行实际操作
  • 每个命令都亲自尝试
  • 出错是正常的,重要的是理解为什么出错

2. 循序渐进

  • 先掌握基础命令
  • 再学习高级特性
  • 最后进行综合应用

3. 善用帮助

1
2
3
man 命令                        # 查看命令手册
command --help # 查看命令帮助
whatis 命令 # 查看命令简介

4. 命令组合

  • 熟练使用管道符 |
  • 掌握重定向符号 > >>
  • 学会使用 &&|| 连接命令

5. 安全意识

  • 谨慎使用 rm -rf 命令
  • 修改系统文件前做好备份
  • 使用非root用户进行日常操作
  • 定期备份重要数据

6. 效率提升

  • 使用Tab键自动补全
  • 使用历史命令(↑↓方向键)
  • 学习vim或nano编辑器
  • 掌握快捷键(Ctrl+C、Ctrl+Z等)

7. 日志管理

1
2
3
4
# 查看系统日志
tail -f /var/log/messages # 系统日志
tail -f /var/log/secure # 安全日志
tail -f /var/log/cron # 定时任务日志