恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
学习Linux
首页
资讯中心
/
学习Linux
学习Linux
发布时间:2026/10/22 2:09:54
linux存在的意义Linux 开源、免费打破了软件被少数公司垄断的局面让更多人能自由地使用、研究、改造计算机尤其是服务器和设备领域。linux的用途linux是开源、主要跑在服务器和设备上的操作系统。linux与windows、macos的区别系统主战场Windows个人桌面、办公、游戏macOS苹果电脑、设计、创意Linux服务器、设备、超算linux的核心竞争力1开源bug被“众包”越用越稳2稳定:能长期不重启与架构设计有关3免费:省钱能大规模部署无需授权费4安全:权限机制强病毒少5灵活:能裁剪能制定linux的骨架你用户↓ 敲命令【终端 Terminal】← 你打字的那个窗口Xshell 就是一个终端↓【Shell】← 真正听懂你命令的翻译官↓【内核 Kernel】← 操作系统的心脏真正干活的那个↓【硬件】CPU / 内存 / 硬盘 / 网卡狭义上来看linux就是内核。随着多年的发展配套软体不断完善到了现在linux显然是一个集大成者linux家族包含了诸如ubuntucentos等发行版本的操作系统。我们平时所说的linux指的是某个家族成员。学习linux的六大板块一、基础操作1.登陆与链接2.命令的基本结构:命令/选项/参数要干什么/具体怎么干/对谁干命令:如ls列出cd切换pwd显示位置一条命令里第一个词永远是命令选项通常以-或--开头短选项-l一个减号单字母长选项--help两个减号单词可以不加不加就用默认行为常见命令-aaall“所有文件包括隐藏文件”-l详细列出相比ls多了权限、大小、时间、链接数、所有者、所属组参数通常是文件、目录、路径可以不加不加就用默认对象目录和文件的区分看是容器还是内容本身路径如/home/zhangsan关键要点顺序上命令选项参数空格三部分之间用空格隔开选项可以合并ls -l -a可以合并写成ls-la除了命令都可以省略3.帮助忘了命令怎么用自己查man 命令看命令的完整手册man manual手册想深入了解、查看完整说明就用man按q退出不按不退常见区块NAME这个命令叫什么干什么SYNOPSIS用法格式OPTIONS所有选项及含义EMANPLES例子命令 --help看命令的简要帮助使用--help能快速查用命令它能直接列出常用选项4.命令提示符目标是一眼知道“我是谁、我在哪、是不是管理员”[当前用户主机名 当前目录]管理权限例如[rootlocalhost ~]#管理权限有两个符号区分#管理员root$普通用户5. 最基础的导航在系统内走动确认自己的位置pwd我在哪个目录Print working directory显示当前所在的完整路径作用迷路时有奇效知道自己在哪ls目录里面有什么list列出当前目录里的内容文件和子目录作用知道目录里有什么cd切换到别的目录Change directory切换到指定目录几个常用的写法cd /home 去/homecd 回家目录cd . . 去上一层目录cd - 回上一次待的目录cd有两种用法1.按某种确定的路径寻找不管身在何处特点是以 / 开头绝对路径2.从当前的位置寻找特点是没有 / 相对路径二、文件与目录核心一建东西mkdirmake directory创建目录用法mkdir 目录名作用创建一个新的项目常用选项-p-p parents父级作用将路径上缺的上级目录一并建出来touch本意是触摸一下引申为创建/更新时间戳用法touch 文件名作用创建一个空文件无内容touch的细节用法可一次建多个文件如果文件已存在touch不会报错而是更新时间戳修改时间变成现在mkdir和touch的区别前者建文件夹后者建文件二删东西remove删除用法rm 文件名作用删除文件可一次删多个关键选项-r-f-r删除目录必须加解决rm默认删除文件的痛点-r recursive能目录连带内容一起删-f强制删除不提示-f force强制简单来说就是删除某些文件时不会问确定吗不加的话就会问。删目录中最常用也最危险的组合写法rm -rf因为linux没有回收站因此敲组合技之前一定要看清路径特别提醒⚠️rm -rf / 或rm -rf /* 会删光整个系统。三复制移动cp:复制copy复制用法cp 源文件 目标位置注意cp是复制复制后源文件还在多出一份新的常用选项-rcp默认只能复制文件不能复制目录-r解决痛点。-r recursive递归作用复制目录时把目录里所有内容一起复制过去场景总结复制文件夹需要用到-rmv移动/改名move移动用法mv 源 目标两大用途移动将文件移动后原位置就没有文件文件到了新位置改名如果目标位置和源在同一目录就相当于改名cp 与 mv的关键差异在移动目录上mv不用加-r直接就能移三、用户与权限linux的灵魂一用户谁在用查询当前登陆的用户名whoami查询这台机器上有哪些用户cat/etc/passwd会列出所有用户的档案每行一个用户信息很多先看第一列用户名就行⚠️有个文件/etc/shadow存加密密码/etc/passwd只存基本信息谁、家目录、shell显示当前用户的用户名、用户ID、所属组id二用户组人怎么归类概念多个用户归到一起方便统一管理权限。一个用户一个主组多个附加组主组每个用户有一个主组创建用户时默认生成附加组用户还可以额外加入别的组可以有多个。查看命令groups看当前用户属于哪些组id也能看到组信息三权限谁对什么有什么权利1.理解linux里有三类人所有者useru文件的主人所属组groupsg主人所在的组其他人othero无关的其他人权限的种类读写执行。读r看内容列出里面有什么写w改内容建/删里面文件执行x运行它进入这个目录没有就是-。举例-rwxr-xr--第一部分-表示这是个普通文件目录则是d第二部分rwx所有者的权限读写执行第三部分r-x所属组的权限读和执行第四部分r--其他人的权限读2.怎么改权限chmod字母法chmod change mode改变模式/权限用法chmod 谁/-权限 文件符号u/g/o/a所有者/所属组/其他人/所有人/-/加/减/设为例子chmod ux text.txtchmod数字法字母法好懂但工作中数字法更常见。它把权限变成数字写起来短。核心三个权限对应三个数权限/数字r读/4w写/2x执行/1-没有/0原理把有的权限数字相加rwx4217rw-4206r--4004---0用法chmod后面跟三个数字分别对应所有者/组/其他人常见组合755:所有者全权其他人读执行常用于目录、可执行文件644所有者读写其他人只读常用语普通文件700:只有所有者有权限常用于私密文件777:所有人全权这很危险少用四 提权怎么临时当管理员提权对应的需求普通用户权限有限有时候需要临时提高权限让普通人临时拥有root的权限。两个命令1.sudo——临时借用管理员权限推荐sudo superuser do在一条命令面前加sudo这条命令就以root身份执行执行完权限就恢复恢复成普通用户。通常需要输入自己的密码。用法sudo 命令特点临时、单条命令、安全2.su——切换用户用法su 用户名su switch user切换后变成那个用户直到退出。当然切换到rootsu - 或su root要输入root的密码特点整体切换、持续、影响大命令sudosu干什么临时单挑命令提权切换到整个某用户持续程度就一条命令一直持续到退出密码输自己的密码输目标用户的密码安全性高临时、可控低整体切换实际常用更常用较少为什么sudo更安全只提权一条命令用完就收回不用知道root密码只用输入自己的密码系统还能记录谁用sudo做了什么但是得被授权了才能用sudo通常只有管理员把你加进sudo组或wheel组才能用四、软件与服务管理机器1、包管理装软件yum/apt相比于在windows上安装软件得自己跑去官网找、下载、安装linux可以说是帮助自己解放双手只需要告诉linux自己需要什么系统就会从仓库自动取货、装好。关键概念软件仓库repository一个存软件的服务器系统预先配置好了地址包管理器一个帮忙从仓库下载安装处理依赖的工具依赖软件运行需要的其他软件自动帮忙安装有个两个主流包管理器发行版包管理器装软件命令CentOS/RedHatyum新版dnfyum install 软件名Ubuntu/Debianaptapt install 软件名看自己的服务器是哪个发行版选择包管理器。常用命令yum与apt用法几乎一样命令 作用yum Install 软件名 装软件yum remove 软件名 卸载yum update 更新yum search 关键词 搜软件当然在linux上装软件可以用包管理器也可以手动下载安装包只不过后者作为备选罢了。实际执行上装软件通常要管理员权限所以前面一般都加sudo。所以装软件sudo包管理器命令2、服务管理启动/停止程序systemctl服务service在后台一直运行的程序默默提供某种功能。例子服务 干什么nginx 提供网站访问mysql 提供数据库sshd 实现远程连接这些服务开机就自动跑一直不关撑着系统功能需要对服务进行管理的理由服务需要能启动、停止、重启、看状态比如网站挂了得重启nginx所以要有一个工具统一管理服务。核心命令systemctl用法systemctl 动作 服务名常用动作命令 作用systemctlstartnginx 启动systemctlstopnginx 停止systemctlrestartnginx 重启systemctlstatusnginx 看状态systemctlenablenginx 开机自启systemctldisablenginx 取消开机自启两个常用看服务状态systemctlstatusnginx显示服务在跑还是停了以及最近日志。这便是排错第一步先看状态。重启服务systemctlrestartnginx改了配制后重启让它生效。例如网站出问题先重启试试特别讲一讲enableenable开机自动启动。不enable重启机器后服务就没了得手动打开。生产环境里服务一般都要enable。start管现在enable管开机。看看start与enable的区别命令效果start现在启动重启机器后失效enable开机自启永久生效startenable现在也跑重启后也跑最常用实际上会是这么使用systemctl start nginxsystemctl enable nginx或者一条命令搞定systemctl enable --now nginx--now 设开机自启的同时现在就启动。一步到位很常用。3、进程看谁在跑ps/top/kill进程progress正在运行的程序。这里需要和程序进行区分概念是什么在哪程序硬盘上的文件静止的 硬盘程序程序跑起来的样子动态的内存同一个程序可以有多个进程比如开两个记事本看进程的必要性系统卡的时候可以查看是谁在占用资源或是想知道某个程序在不在跑再或者可以结束卡死的程序。核心命令ps——快照·看进程用法psps用于显示当前的进程快照ps单独用只ps当前终端想要看全部得加-ef或者aux快照类比一下给进程拍张照看这一刻谁在跑常用组合ps -ef查看所有进程信息全ps aux另一种写法top——动态·看进程用法toptop实时刷新看谁在占用cpu、内存。需按q退出。类似windows的任务管理器。kill——结束进程用法kill 进程号kill 进程号结束制定进程。进程号PID每个进程都有唯一的编号从ps或者top里获得、查看。强杀kill -9 进程号4、日志看发生了什么 journalctl日志Log系统和程序运行过程中自动记下的流水账例如飞机的黑匣子手机的通讯录。当系统启动、程序运行、出错、谁登陆了……都会记下来出问题时翻日志就知道发生了什么。通常会在以下场景彰显重要性服务启动失败看日志查找失败原因系统异常看日志找线索谁登陆过看日志有记录而排错的核心呢就是看日志核心命令journalctl用法journalctl查看系统日志systemd管的服务的日志。默认太多一般加选项过滤。常用用法命令 作用journalctl -u nginx 看指定服务nginx的日志排错常用journalctl -n nginx 看最近20行journalctl -f 实时跟踪像tail -fjournalctl -xe 看最近的错误排错常用-u unit指定某个服务除了journalctl日志也存在文件里常见目录/var/log/比如/var/log/messages系统日志/var/log/nginx。可以直接用cat、less看less /var/log/massages补充systemdlinux里负责启动和管理整个系统的管家。systemctl是控制systemd的命令systemd把日志收集起来journalctl看systemd管理的日志。tail看文件的末尾几行。默认是10行写法tail /var/log/messages。其他例如tail -n 20 /var/log/messages。作用在诸多内容的日志文件中直接定位到最新的末尾几行。-f意为follow跟随即实时盯着文件的新内容。tail -f /var/log/messages文件一有新内容就会立刻显示实时看日志。需要按CtrlC退出。tail 与tail -ftail只能看一日志文件的末尾几行tail -f能实时跟进日志文件。journalctl与journalctl -f同理前者看systemd日志后者实时跟进systemd日志。五、网络与安全对外链接1、网络查看看网络状态ip/ping思考你连云服务器靠的是网络。那么在linux里怎么知道我这台机器网络通不通、能不能访问某网站有没有类似测试网络的命令答案是有的。既然连接的是云服务器那么用之前需要先确认网络通不通于是需要一个查网络状态的命令。通不通有两层层次需求命令本机网络配置我这台机器的ip、网卡正不正常ip能不能到达对方我能连上某个地方吗ping先看自己ip再在看对方ping。核心命令一ip用法ip addr常用简写ip a用于解决自己这台机器的IP是多少能用来看本机的IP地址、网卡信息。核心命令二ping用法ping 目标地址例如ping www.baidu.com测能不能连接到百度ping 192.168.1.1测能不能练到某个IPping默认一直给目标地址发小包按CtrlC停止2、远程连接连接别的机器ssh/scp这一块讲的是怎么连接到另一台机器以及怎么在机器间传文件核心命令ssh——远程登录sshsecure shell用法ssh 用户名目标地址登陆后想退出敲exit。配套命令scp——传文件上传/下载scp secure copy解决需求想在两台机器之间传文件比如把本地文件传到服务器用法scp 源文件 目标位置例子scp a.txt root192.168.1.10:/home/ # 本地上传到服务器scp root192.168.1.10:/home/a.txt . # 服务器下载到本地写法 方向scp 本地文件 用户地址:路径 上传本地-远程scp用户地址:路径 本地路径 下载远程-本地关键远程路径前要加用户地址冒号后面才是路径。同时冒号必须是英文冒号前后不能有空格。冒号后面直接跟路径。3、文件传输传文件scp/rsyncscp使用方法参考上一个部分。特点简单直接每次全量传送。适合偶尔传一两个文件。rsyncrsyncremote synchronize使时间一致与scp的区别rsync只传变化的部分不是每次全传。也就是说scp传全量rsync传增量。假设你有一个大目录只改了一个文件如果用scp会整个重传会很慢而rsync会先对比只传不一样的部分。用法rsync 选项 源 目标常用写法rsync -av 源目录/ 用户地址: 目标目录/易错点rsync路径结尾的/rsync路径结尾有没有/的意思不一样写法含义rsync -av project/ 目标把project里的内容同步过去把project里的内容同步过去rstnc -av project 目标把project这个目录本身同步过去目标下会多一层project关键选项-aarchive归档模式保留权限、时间等-vverbose详细输出显示过程-zcompressz代表压缩传输时压缩--delete让目标端和源端完全一致删掉目标端多出来的-P--partial--progress的合体断点续传进度-rrecursive递归目录-llinks保留软连接-pperms保留权限-ttimes保留时间戳-ggroup保留属组-oowner保留属主-e--rsh/exec指定远程shell如ssh-ndry-run只模拟不执行补充syn希腊语前缀意为一起、相同chron 时间time-ize动词后缀使……化拓展sync全称synchronize意为同步把内存数据刷到磁盘rsync全称remote sync意为远程同步async全称asynchronous意为异步a-表示不synchronize意为同步4、防火墙控制谁能访问firewalld给服务器提供的一层边界。防火墙相当于控制哪些网络请求能进来/出去的机制。核心思想默认全关只开需要的。核心命令firewall-cmdCentOS用的防火墙工具就是firewall命令就是firewall-cmd。cmd在windows里是Command Prompt命令提示符的缩写在linux中是command的缩写意为命令。常用命令firewall-cmd --list--all看当前规则firewall-cmd--add-port80/tcp --permanent开放80端口永久firewall-cmd --remove-port80/tcp --permanent关闭80端口firewall-cmd --reload重载让改动生效拓展80/tcp80端口走TCP协议。TCP全称Transmission Control Protocol传输控制协议是网络传输数据的一套规则上网、传文件、连接服务器底层大多用的就是TCP。具有可靠性数据发了确保对方收到、有序性数据按顺序到达、有连接性先建立连接再传数据。UPD另一个协议UPD像寄明信片一样直接发不管对方收没收到相比TCP不可靠但快速。关键概念端口。端口是一台机器上不同服务对外的门牌号。要对外开放某些服务就得开对应的端口。一些的服务以及所需常用端口网站HTTP80网站HTTPS443SSH远程22注意两个关键选项--permanent意为永久生效。注意不加的话重启就没了。--reload意为重载配置能让改动立即生效六、shell脚本1.什么是脚本把多条命令打包先问一个直觉题假设你每天都要做同一套操作进目录建文件改权限启动服务。那么你觉得linux有没有办法让你不用天天手敲着一串而是一键搞定答案是有的。而且这正是shell要解决的事情。shell脚本把一串命令夏津一个文件一次性执行。其核心思想就是把手敲一串命令变成运行一个文件。也就是把所需要的操作写进脚本只用写一次却能天天一键跑还能配合定时任务自动跑。具有省事、自动化、不用记的好处。这里写一个最简单的脚本myscript.sh#!/bin/bash声明用哪个Shell执行固定开头cd /home/zhangsan一条普通命令mkdir project一条普通命令chmod 755 project一条普通命令问题来了怎么运行脚本分两步先给脚本加执行权限chmodchmod x myscript.sh运行./myscript.sh./表示当前目录下的。运行后文件里的命令从上到写依次执行。2.变量存数据变量一个用来存数据的盒子。例如name zhangsan。name就是变量名zhangsan就是存进去的值之后用$name就能取出zhangsan。定义赋值namezhangsanage20注意等号两边不能有空格。使用取值变量名前加$echo $name #输出 zhangsanecho $age #输出 20$,告诉Shell这是变量取它的值3.条件判断if为什么需要条件能让脚本看情况办事。基本结构if [ 条件 ]; then命令fi解析if如果[ 条件 ],判断的内容方括号两边要空格then那么命令条件成立时执行fi结束反写if例子#!/bin/bashif [ $age -gt 18 ];thenecho 成年了fi-gtgreater than。意思如果age大于18就输出成年了常用比较符-eq等于equal-ne不等于-gt大于greater than-lt小于-ge大于等于-le小于等于基本结构带else否则if [ $age -gt 18 ]; thenecho 成年elseecho 未成年fi条件成立走then不成立走else。4.循环for/while能让一段命令重复执行多次。for循环知道要循环几次遍历一组东西for 变量 in 列表do命令done例子for name in 张三 李四 王五doecho 你好$namedone执行结果你好张三你好李四你好王五while循环不知道几次满足条件就一直循环结构while [ 条件]do命令done例子i1while [ $i -le 5 ]doecho $ii$((i1))done拓展$(())是一个专门的算术运算语法。$变量表示取i的值。二者不一样。为什么会需要这样的语法因为shell里默认把一切当文字。5.定时任务crontab定时任务即让系统在指定时间自动执行某个命令或脚本。具有无人值守自动执行的价值。核心命令crontab几个常用操作crontab-l 列出当前用户的定时任务crontab-e编辑定时任务crontab-r删除所有定时任务定时任务的格式重点每个定时任务写成一行分6个字段。* * * * * 要执行的命令│ │ │ │ ││ │ │ │ └─ 星期几0-70和7都表示周日│ │ │ └──── 月份1-12│ │ └─────── 日1-31│ └────────── 小时0-23└───────────── 分钟0-59顺序分 时 日 月 周 命令其中的 * 意为每一个不限定举例子* * * * * 每分钟0 * * * * 每小时的第0分钟即每小时0 2 * * *每天2:000 2 * * 1每周一2:00例子每天凌晨2:00执行备份脚本0 2 * * * /home/zhangsan/backup.sh