我的Linux学习方法:不会就问AI,动手熟能生巧
文章目录
- 我的方法:不懂就问,熟能生巧
- Linux学习第一步:认识你的系统
- 这个系统几个关键点
- 装好系统先做三件事
- Linux 学习第二步:常用命令动手练
- 课前前提
- 任务 0:先把常用工具补齐(之前已经执行过了,再运行一下看看是否安装成功)
- 任务 1:认识当前身份与路径
- 任务 2:目录查看与切换(Linux 最常用)
- 任务 3:创建、删除、移动、复制文件 & 文件夹
- 任务 4:查看文件内容
- 任务 5:学会简单编辑文件(nano 新手友好)
- 任务 6:查看系统资源状态
- Linux学习第三步:用户与权限管理
- 任务 1:查看系统已有用户
- 任务 2:新建用户、设置密码
- 任务 3:切换用户练习
- 任务 4:用户相关常用删除 / 修改命令
- 任务 5:理解文件权限(重中之重)
- 任务 6:文件夹权限小区别
- Linux 学习第四步:进程、磁盘与压缩解压
- 一、进程是什么
- 任务 1:查看进程
- 1. top(实时动态查看,最常用)
- 2. ps 静态查看进程快照
- 3. 查看进程树 pstree
- 4. 根据端口查进程(排查端口占用神器)
- 任务 2:杀死异常进程
- 任务 3:前后台任务(实操练习)
- 二、磁盘管理全套命令
- 1. 整体磁盘分区使用
- 2. 查看当前目录各个文件夹大小
- 3. 挂载 / 卸载(U 盘、数据盘必会)
- 三、压缩 & 解压(日常打包备份必备)
- 1. tar 打包压缩(Linux 最主流)
- 2. zip / unzip 格式(Windows 互通)
- 3. 常用解压万能口诀
- 实在无法理解怎么办?
- Linux 学习第五步:服务器网络排查与安全加固
- 一、常用网络排查命令(排错必备)
- 1、查看本机 IP、网卡信息
- 2、测试连通性 ping
- 3、路由查看
- 4、查看监听端口(哪些程序对外开放端口)
- 5、域名解析 nslookup / dig
- 6、测试端口通不通
- 二、UFW 防火墙实操(Ubuntu 默认防火墙)
- 1、查看防火墙状态
- 2、放行 SSH(必须先开!否则开启防火墙会被踢下线通常默认是开的)
- 3、开启防火墙
- 常用放行 / 删除规则
- 三、SSH 安全加固(防暴力扫描、防入侵)
- 编辑 SSH 配置文件
- 核心修改项
- 可选:修改 SSH 默认端口(示例 2222)
- 重启 SSH 生效
- 查看 SSH 状态
- 四、日志查看(排查报错万能手段)
- Linux学习第六步:服务管理与定时任务(了解
- 第一部分 systemctl 系统服务(控制软件启停、开机自启)
- 通用命令模板
- 实操示例(ssh、nginx)
- 辅助命令
- 第二部分 Crontab 定时任务(服务器自动化核心)
- 1. 基础操作命令
- 2. crontab 时间格式(重点,必须记)
- 3. 实战定时例子
- 4. 查看定时任务执行日志
- Linux学习第七步:Shell 脚本入门与实战
- 一、什么是 Shell 脚本
- 二、第一个脚本 hello.sh
- 1. 创建脚本文件
- 2. 给脚本添加执行权限
- 3. 两种运行方式
- 三、变量用法
- 四、if 判断语句(最常用:判断文件 / 进程 / 端口)
- 五、for 循环(批量操作文件)
- 六、实战小脚本:服务器简易巡检脚本
- 七、配合前面学的 crontab 自动化
我的方法:不懂就问,熟能生巧
学习 Linux,我只有一招:遇到不会的指令,直接问 AI,拿到答案后自己敲一遍,在反复实践中熟能生巧。
具体就三步:
- 问 AI——比如你想要干什么,就问这个使用 Linux 这么弄,直接截图发给它
- 自己敲——把 AI 给的命令原样敲进终端,看输出对不对。
- 举一反三——改改参数、换换条件,看看结果有什么不同。
就这么简单。命令忘不掉,是因为你用过了、改过了、踩过坑了。
Linux学习第一步:认识你的系统
如果是按照我上一篇文章做的话 0基础入门 Linux ,系统应该是Ubuntu 24.04.2 LTS,代号noble,属于Debian 家族。LTS 表示长期支持版,当学习服务器或线上业务服务器都很稳。
这个系统几个关键点
包管理器:apt
装东西、更新系统全用apt,不用旧版apt-get:
sudoaptupdate# 更新软件源索引sudoaptupgrade-y# 升级系统全部已装软件sudoaptinstallxxx# 安装软件防火墙:ufw
Ubuntu 默认用ufw,不是 CentOS 的firewalld:
sudoufw allow22sudoufwenable服务管理:systemctl
全 Linux 通用:
sudosystemctl start/stop/restart/enable 服务名几个 24.04 的小细节
- 默认没有
ifconfig,查网卡用ip a - Python3 预装,但没有
python命令,只有python3 - 安全策略严格,默认禁止 root 直接 SSH 远程登录
装好系统先做三件事
1. 完整更新一遍(建议新手自己手敲熟悉一下,如果复制粘贴千万不要使用 ctrl+v)
sudoaptupdate&&sudoaptupgrade-y2. 装常用工具,补齐新手命令
sudoaptinstallnet-tools treevimnanozipunzip-ynet-tools:找回ifconfigtree:树形查看目录vim/nano:两个编辑器,新手先熟悉nano
3. 确认当前是谁
whoami如果输出不是root,后面装软件、改配置前面都得加sudo。
先把这几步跑一遍,系统就能用了,中间遇到不会的直接问 AI。
Linux 学习第二步:常用命令动手练
课前前提
你已经登录服务器,终端提示符一般类似:ubuntu@localhost:~$。所有命令前面带sudo的代表需要管理员权限,Ubuntu 24.04 日常不建议用 root 登录,新手使用也没事。
任务 0:先把常用工具补齐(之前已经执行过了,再运行一下看看是否安装成功)
复制整条运行:
sudoaptupdate&&sudoaptinstallnet-tools treevimnanozipunzip-y作用:
apt update:刷新软件源列表- 安装:
- net-tools:提供旧命令
ifconfig - tree:树形展示文件夹
- vim、nano:两个文本编辑器
- zip、unzip:压缩解压工具
- net-tools:提供旧命令
任务 1:认识当前身份与路径
依次逐条输入,看懂每条作用
whoami查看你当前登录的用户名
pwdPrint Working Directory,打印你现在所在文件夹路径
hostname查看服务器主机名
任务 2:目录查看与切换(Linux 最常用)
lsls-lls-als:列出当前目录文件ls -l:显示详细权限、大小、修改时间ls -a:显示隐藏文件(以.开头的文件)
cd/etcpwdcd /etc进入系统配置目录,再用 pwd 验证位置
cd..pwdcd ..退回上一级目录
cd~pwdcd ~快速回到你的个人家目录(日常存放自己文件的地方)
任务 3:创建、删除、移动、复制文件 & 文件夹
逐条执行练习:
# 创建空文件touchtest1.txt# 创建文件夹mkdirmydir# 复制 test1.txt 到 mydir 里面cptest1.txt mydir/# 重命名文件mvtest1.txt rename.txt# 移动文件进文件夹mvrename.txt mydir/# 删除单个文件rmmydir/rename.txt# 删除空文件夹rmdirmydir⚠️ 高危命令演示(不要乱删系统文件)
rm -rf 目录名强制删除带内容的文件夹,一旦删除无法找回
任务 4:查看文件内容
三种方式:
# 一次性全部输出cat/etc/os-release# 查看前6行head-n6/etc/passwd# 查看最后8行tail-n8/var/log/syslog任务 5:学会简单编辑文件(nano 新手友好)
nanohello.txt- 随便输入一段文字:
Hello Ubuntu 24.04 Linux - 按
Ctrl+O→ 回车确认文件名保存 - 按
Ctrl+X退出编辑器
查看刚才写的内容:
cathello.txt任务 6:查看系统资源状态
ipa# 或者ifconfig查看服务器网卡、公网内网 IP
df-h查看磁盘分区占用情况
free-h查看总内存、已用、空闲内存
top实时查看 CPU、内存、进程占用,按q退出
Linux学习第三步:用户与权限管理
Ubuntu 默认不让 root 远程登录,平时用普通账号干活,改系统配置前面加sudo临时获取管理员权限。(新手了解这个即可,学习使用 root 模式问题不大)
任务 1:查看系统已有用户
# 查看当前是谁whoami# 系统所有用户都存在这个文件里cat/etc/passwd随便挑一行举例:ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
分段含义:
- 用户名
- 密码占位符
- UID(用户 ID)
- GID(组 ID)
- 备注
- 家目录
- 登录 Shell
任务 2:新建用户、设置密码
我们新建一个练习用户user01:
sudoadduser user01执行后按提示:
- 输入两次密码(自己记好)
- 后面全名、电话等一路回车跳过,最后输入
Y确认创建
把user01加入管理员组,以后可以用 sudo:
sudousermod-aGsudouser01验证是否添加成功:
iduser01输出里出现sudo组就代表成功。
任务 3:切换用户练习
方式 1:临时切换到 user01
su- user01输入刚才设置的密码,提示符会变化,代表切换成功。执行whoami确认身份。
切回你原来账号:
exit任务 4:用户相关常用删除 / 修改命令
修改已有用户密码(自己改自己不用 sudo,改别人需要 sudo):
sudopasswduser01删除用户(连带家目录一起删干净):
sudodeluser --remove-home user01现在先别删,后面权限练习还要用,可以等本节全部做完再删。
任务 5:理解文件权限(重中之重)
先创建一个测试文件用来观察权限:
touchtestperm.txtls-ltestperm.txt你会看到类似:-rw-r--r-- 1 ubuntu ubuntu 0 Jul 2 xxx testperm.txt
拆分权限-rw-r--r--:
- 第一位:文件类型(
-普通文件,d文件夹,l软链接) - 第 2~4 位:所有者权限(u)—— r 读、w 写、x 执行
- 第 5~7 位:所属组权限(g)
- 第 8~10 位:其他用户权限(o)
字母对应数字:r=4,w=2,x=1
例:rw-= 4+2=6,r--=4,整体就是644
修改权限 chmod 两种写法:
- 数字写法(最常用)
chmod755testperm.txtls-ltestperm.txt755 含义:所有者读写执行,组和其他人读 + 执行
- 字母写法
# 给所有人增加执行权限chmod+x testperm.txt# 去掉其他用户写权限chmodo-w testperm.txt修改文件归属用户 / 组 chown:
sudochownuser01:user01 testperm.txtls-ltestperm.txt文件归属就变成 user01 了。
任务 6:文件夹权限小区别
文件夹必须有x权限才能进入浏览内容:
mkdirpermdirchmod600permdirls-ldpermdir# 尝试进入cdpermdir此时会权限不足,修改权限后正常进入:
chmod700permdircdpermdirLinux 学习第四步:进程、磁盘与压缩解压
一、进程是什么
程序运行起来就是进程。服务器卡顿、端口占用、卡死程序,都要靠进程命令排查,有的时候服务器CPU满了,只能重启服务器,所以下载东西之前要先看看服务器能不能带的动
任务 1:查看进程
1. top(实时动态查看,最常用)
top- 按
P:按 CPU 占比排序 - 按
M:按内存占比排序 - 按
q:退出界面
2. ps 静态查看进程快照
psauxpsaux|grepbash|是管道符,把前一个命令的输出传给后面命令做过滤。
3. 查看进程树 pstree
pstree没装就执行:
sudoaptinstallpsmisc-y4. 根据端口查进程(排查端口占用神器)
sudolsof-i:80或者:
sudonetstat-tulnp任务 2:杀死异常进程
格式:kill 进程 PID
温和终止:
kill1234强制杀死(程序僵死无响应时用):
kill-91234任务 3:前后台任务(实操练习)
# & 放到后台运行sleep300&# 查看后台任务jobs# 把后台任务调到前台fg编号# Ctrl+Z 暂停当前程序放入后台# bg 编号 让暂停任务继续后台运行二、磁盘管理全套命令
1. 整体磁盘分区使用
df-h-h表示人性化单位(GB/MB),容易看懂。
2. 查看当前目录各个文件夹大小
du-sh*-s:汇总大小-h:友好单位
3. 挂载 / 卸载(U 盘、数据盘必会)
先看磁盘列表:
lsblk示例挂载用法(仅练习理解,不要乱挂载系统盘):
sudomkdir/mnt/testdisksudomount/dev/sdb1 /mnt/testdisk# 卸载sudoumount/mnt/testdisk三、压缩 & 解压(日常打包备份必备)
1. tar 打包压缩(Linux 最主流)
创建测试文件夹用于练习:
mkdirtar_testtouchtar_test/a.txt tar_test/b.txt打包压缩为 tar.gz:
tar-zcvftest.tar.gz tar_test/参数解释:
z:gzip 压缩c:创建包v:显示过程f:指定包名
解压 tar.gz:
tar-zxvftest.tar.gz只打包不压缩:
tar-cvftest.tar tar_test/tar-xvftest.tar2. zip / unzip 格式(Windows 互通)
# 压缩文件夹zip-rtest.zip tar_test/# 解压unziptest.zip3. 常用解压万能口诀
- tar.gz:
tar -zxvf xxx.tar.gz - tar.bz2:
tar -jxvf xxx.tar.bz2 - zip:
unzip xxx.zip
实在无法理解怎么办?
没事,多问 AI,多敲几次自然就熟了。
Linux 学习第五步:服务器网络排查与安全加固
一、常用网络排查命令(排错必备)
1、查看本机 IP、网卡信息
ipa# 老命令(需安装net-tools)ifconfig可查看内网 IP、网卡状态、公网绑定网卡信息。
2、测试连通性 ping
# 持续 ping,Ctrl+C 停止pingwww.baidu.com# 发送4个包自动结束ping-c4www.baidu.comping 不通一般判断:服务器外网断网 / DNS 异常 / 网关问题
3、路由查看
route-niproute4、查看监听端口(哪些程序对外开放端口)
# 传统命令sudonetstat-tulnp# 新版更快推荐sudoss-tulnp参数说明:
- t:tcp 端口
- u:udp 端口
- l:监听中端口
- n:不解析域名,显示纯数字 IP
- p:显示对应进程 PID
5、域名解析 nslookup / dig
nslookupwww.baidu.com# 安装 digsudoaptinstalldnsutils-ydigwww.baidu.com用于排查:域名打不开、DNS 解析异常、DNS 污染问题。
6、测试端口通不通
# curl 测试本机端口curl127.0.0.1:80# telnet 测试端口sudoaptinstalltelnet-ytelnet127.0.0.180二、UFW 防火墙实操(Ubuntu 默认防火墙)
1、查看防火墙状态
sudoufw status默认:inactive 关闭状态
2、放行 SSH(必须先开!否则开启防火墙会被踢下线通常默认是开的)
sudoufw allow22/tcp3、开启防火墙
sudoufwenable# 验证sudoufw status常用放行 / 删除规则
# 放行80网页端口sudoufw allow80/tcp# 放行443 HTTPSsudoufw allow443/tcp# 放行一段端口 3000-4000sudoufw allow3000:4000/tcp# 查看规则编号sudoufw status numbered# 删除第2条规则sudoufw delete2# 关闭防火墙(测试用,不建议生产关闭)sudoufw disable# 重置所有防火墙规则sudoufw reset三、SSH 安全加固(防暴力扫描、防入侵)
编辑 SSH 配置文件
sudonano/etc/ssh/sshd_config核心修改项
PermitRootLogin no # 禁止 root 远程登录(最重要) PasswordAuthentication yes可选:修改 SSH 默认端口(示例 2222)
# 先放行新端口sudoufw allow2222/tcp配置文件添加/修改:
Port 2222保存退出:Ctrl+O → 回车 → Ctrl+X
重启 SSH 生效
sudosystemctl restart sshd改端口后连接方式:
ssh用户名@IP-p2222查看 SSH 状态
systemctl status sshd四、日志查看(排查报错万能手段)
# 实时查看系统日志tail-f/var/log/syslog# 查看登录认证日志(查爆破、登录记录)tail-n30/var/log/auth.logLinux学习第六步:服务管理与定时任务(了解
第一部分 systemctl 系统服务(控制软件启停、开机自启)
Linux 所有后台程序(Nginx、MySQL、ssh、防火墙)都叫服务,统一用 systemctl 管理。
通用命令模板
sudosystemctl start 服务名# 立即启动sudosystemctl stop 服务名# 立即停止sudosystemctl restart 服务名# 重启(先停再开)sudosystemctl reload 服务名# 重载配置(不中断进程)sudosystemctlenable服务名# 设置开机自动启动sudosystemctl disable 服务名# 取消开机自启sudosystemctl status 服务名# 查看运行状态、报错日志实操示例(ssh、nginx)
- 查看 SSH 服务状态
systemctl status sshd- 安装 Nginx 练手
sudoaptinstallnginx-y- 操作 Nginx
sudosystemctl start nginxsudosystemctlenablenginx systemctl status nginx浏览器访问服务器IP就能看到 nginx 页面。
辅助命令
# 列出所有正在运行的服务systemctl list-units--type=service--state=running# 查看开机自启的服务systemctl list-unit-files--type=service|grepenabled第二部分 Crontab 定时任务(服务器自动化核心)
作用:定时自动执行脚本、备份、清理日志、拉取数据。
1. 基础操作命令
crontab-e# 编辑当前用户定时任务(第一次选nano)crontab-l# 查看当前已有定时任务crontab-r# 删除当前用户所有定时任务(谨慎)sudocrontab-e# 编辑root用户定时任务(系统级)2. crontab 时间格式(重点,必须记)
分 时 日 月 周 要执行的命令 * * * * * command字段取值:
- 分:0-59
- 时:0-23
- 日:1-31
- 月:1-12
- 周:0-6(0 = 周日)
符号含义:
*每单位*/5每 5 分钟1,3,5第 1、3、510-2010 到 20 区间
3. 实战定时例子
# 1. 每1分钟输出一段文字到日志*/1 * * * *echo"定时任务测试">>~/cron_log.txt# 2. 每天凌晨2点清理nginx日志02* * *sudotruncate-s0/var/log/nginx/access.log# 3. 每周日凌晨3点备份家目录03* *0tar-zcf/home/ubuntu/backup.tar.gz /home/ubuntu4. 查看定时任务执行日志
tail-f/var/log/syslog|grepCRONLinux学习第七步:Shell 脚本入门与实战
一、什么是 Shell 脚本
把多条 Linux 命令写到一个.sh文件里,一次性批量执行,替代手动重复敲命令,适合定时备份、批量操作、服务器巡检。
二、第一个脚本 hello.sh
1. 创建脚本文件
nanohello.sh写入以下内容:
#!/bin/bash# 第一行叫解释器声明,固定格式,必须写开头# 井号是注释,程序不会执行echo"===== 我的第一个Shell脚本 ====="echo"当前用户名:$USER"echo"当前路径:$PWD"echo"当前系统时间:$(date)"保存:Ctrl+O回车,退出Ctrl+X
2. 给脚本添加执行权限
chmod+x hello.sh3. 两种运行方式
# 方式1(推荐)./hello.sh# 方式2bashhello.sh三、变量用法
新建var.sh练习:
nanovar.sh写入:
#!/bin/bash# 自定义变量,等号两边不能有空格name="Linux学习者"num=666# 输出变量用 $变量名echo$nameecho$num# 命令赋值变量now=$(date+"%Y-%m-%d %H:%M:%S")echo当前时间:$now授权执行:
chmod+x var.sh ./var.sh四、if 判断语句(最常用:判断文件 / 进程 / 端口)
新建if_test.sh:
#!/bin/bashfile="test.txt"# 判断文件是否存在if[-f$file];thenecho"$file文件存在"elseecho"$file文件不存在,自动创建"touch$filefi运行测试:
chmod+x if_test.sh ./if_test.sh常用判断参数:
-f 文件:是否是普通文件-d 文件夹:是否存在目录-x 文件:文件是否有执行权限
五、for 循环(批量操作文件)
创建loop.sh,批量创建 5 个测试文件:
#!/bin/bash# 循环1到5foriin{1..5}dotouch"file_$i.txt"echo"已创建 file_$i.txt"done执行后家目录会多出 file_1 ~ file_5.txt
六、实战小脚本:服务器简易巡检脚本
新建check.sh,一键查看内存、磁盘、负载:
#!/bin/bashecho"========服务器巡检========"echo"当前时间:$(date)"echo""echo"1. 内存使用:"free-hecho""echo"2. 磁盘占用:"df-hecho""echo"3. 系统负载:"uptime授权运行:
chmod+x check.sh ./check.sh七、配合前面学的 crontab 自动化
需求:每 30 分钟自动执行巡检脚本,输出日志
- 先获取脚本完整路径
pwd# 假设输出 /home/ubuntu- 编辑定时任务
crontab-e添加一行:
*/30 * * * * /home/ubuntu/check.sh >> /home/ubuntu/check_log.txt每 30 分钟自动巡检并保存日志,完全不用手动操作。
到这里你已经算基本入门了Linux了,剩下的就是靠你自己在实践中一点一点巩固,所谓是熟能生巧