1、Linux基础学习笔记
<h2><span style="color: rgba(255, 0, 0, 1)">Linux主要的发行版本:</span></h2><p>Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain[蝶变]、Fedora、SuSE、OpenSUSE、红旗Linux(国产)</p>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">开启SSH的22端口实现远程登入:</span></h2>
<p>Linux的远程操作工具:Xshell、Xftp</p>
<p>开启方式:参考一、参考二、参考三</p>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">Linux主要目录(层级式目录结构):</span></h2>
<div class="cnblogs_code">
<pre># tree -L 1 /
/<span style="color: rgba(0, 0, 0, 1)"> 根目录
├── bin 可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
├── boot系统引导程序启动目录
├── dev 存放设备文件目录
├── etc 软件配置和启动程序目录
├── home 普通用户的家目录
├── lib 库文件目录(命令 软件)
├── lib6464位操作系统库文件目录(命令 软件)
├── mnt 设备临时挂载目录
├── opt 可选项的,额外安装的第三方软件目录
├── proc 记录操作系统进程和内核信息的目录
├── root 超级管理员的家目录
├── sbin 超级管理员命令存放目录
├── tmp 回收站,临时文件目录
├── usr 用户或软件应用程序目录
├──selinux 系统安全目录
└── var 日志文件存放目录</span></pre>
</div>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">基本指令(Tab键自动补全)</span></h2>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux系统操作命令:</span></h3>
<p>1、立刻进行关机:</p>
<div class="cnblogs_code">
<pre>shutdown now</pre>
</div>
<p>2、定时关机:</p>
<div class="cnblogs_code">
<pre>shudown -h [时间]</pre>
</div>
<p>3、立刻重启:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">shutdown –r now
reboot: 现在重新启动计算机
sync: 把内存的数据同步到磁盘</span></pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux用户管理命令:</span></h3>
<p>Linux系统是一个多用户多任务的操作系统,root用户是系统默认创建的管理员账号。</p>
<p>1、添加用户:</p>
<div class="cnblogs_code">
<pre>useradd[选项] 用户名</pre>
</div>
<p>(1)、useradd zhangsan</p>
<p> 创建一个账号叫zhangsan,此时会创建账号、默认创建一个组zhangsan并且把zhangsan分到此组中、还会在/home下创建一个目录叫zhangsan作为新创建用户的根目录。</p>
<p>(2)、useradd -d /home/ls lisi</p>
<p> 创建一个账号叫lisi,并且给lisi指定家目录/ls。</p>
<p>2、给用户名设置密码:</p>
<div class="cnblogs_code">
<pre>passwd 用户名</pre>
</div>
<p>3、删除用户:</p>
<div class="cnblogs_code">
<pre>userdel[选项] 用户名</pre>
</div>
<p>(1)、userdel zhangsan</p>
<p> 删除用户zhangsan,保留zhangsan的主目录。</p>
<p>(2)、userdel –r lisi</p>
<p> 删除用户lisi,并且把lisi的主目录也删除。</p>
<p>4、查询用户信息:</p>
<div class="cnblogs_code">
<pre>id 用户名</pre>
</div>
<p>5、切换用户:</p>
<div class="cnblogs_code">
<pre>su 用户名</pre>
</div>
<p>注意:从高权限用户切换到低权限用户时,不需要输密码;否则,需要输密码。</p>
<p>另:exit命令可以回到原来的用户。</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux组管理命令:</span></h3>
<p>组管理系统实现对有共性的多个用户进行统一的管理。每一个用户都至少属于一个组,创建用户时如果不指定组,会默认创建一个跟用户名相同的组;</p>
<p>在文件或目录看来,Linux系统将所有的用户分为三类:所有者、同组用户、其它组用户</p>
<p>1、创建组:</p>
<div class="cnblogs_code">
<pre>groupadd 组名</pre>
</div>
<p>2、删除组:</p>
<div class="cnblogs_code">
<pre>groupdel 组名</pre>
</div>
<p>3、添加用户时指定其组:</p>
<div class="cnblogs_code">
<pre>useradd–g 组名 用户名</pre>
</div>
<p>4、将用户添加到组/从组中移除:</p>
<div class="cnblogs_code">
<pre>gpasswd –a/-d 用户名 组名</pre>
</div>
<p>(1)、添加到test组</p>
<p> gpasswd –a zhangsan test</p>
<p>(2)、从test组中移除</p>
<p> gpasswd –d zhangsan test</p>
<p>5、修改文件或目录的所有者:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">chown 新的所有者 文件名或目录名
chown 新的所有者 :新的组 文件名或目录名</span></pre>
</div>
<p>(1)、chown Iven <strong>:</strong> dev t1.txt</p>
<p> 将t1.txt文件的所有者修改为Iven,并添加到dev组</p>
<p>(2)、chown -R Iven <strong>:</strong> dev t1</p>
<p> 递归修改目录</p>
<p>6、修改文件或目录的所在组:</p>
<div class="cnblogs_code">
<pre>chgrp 新的组 文件名或者目录名</pre>
</div>
<p>(1)、chgrp dev t1.txt</p>
<p>(2)、chgrp -R dev t1</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux帮助命令:</span></h3>
<p>1、帮助指令 man</p>
<div class="cnblogs_code">
<pre>man [命令或配置文件]</pre>
</div>
<p>功能描述:获得帮助手册上的信息</p>
<p>注:分屏显示,按回车翻一行,按空格翻一页,按q退出查看</p>
<p>2、帮助指令 help</p>
<div class="cnblogs_code">
<pre>help [命令]</pre>
</div>
<p>功能描述:获得命令内置的帮助信息</p>
<p>3、清屏指令</p>
<div class="cnblogs_code">
<pre>clear</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux文件/目录操作命令:</span></h3>
<p>1、显示当前目录的路径:</p>
<div class="cnblogs_code">
<pre>pwd</pre>
</div>
<p>2、显示当前文件或目录信息:</p>
<div class="cnblogs_code">
<pre>ls [选项] [目录或是文件]</pre>
</div>
<p>常用选项</p>
<p>(1)、-a:(ls -a)</p>
<p> 显示当前目录所有的文件和目录,包括隐藏的。</p>
<p>(2)、-l: (ls -l)</p>
<p> 以列表的方式显示信息</p>
<p><img src="https://img2022.cnblogs.com/blog/2506499/202201/2506499-20220127102341294-1826763671.png" alt=""></p>
<p>3、切换到指定目录:</p>
<div class="cnblogs_code">
<pre>cd [参数]</pre>
</div>
<p>绝对路径(以/开头的目录)和相对路径(以目录名开头的目录,从当前目录下开始查找)</p>
<p>(1)、cd /</p>
<p> 回到根目录</p>
<p>(2)、cd ~</p>
<p> 回到用户主目录</p>
<p>(3)、cd<strong> .</strong></p>
<p> 当前目录</p>
<p>(4)、cd<strong> ..</strong></p>
<p> 回到当前目录的上一级目录</p>
<p>4、创建的目录:</p>
<div class="cnblogs_code">
<pre>mkdir [选项] 要创建的目录</pre>
</div>
<p>常用选项</p>
<p>(1)、-p :(mkdir –p test01/test02)</p>
<p> 创建多级目录</p>
<p>5、删除一个空目录:</p>
<div class="cnblogs_code">
<pre>rmdir 目录</pre>
</div>
<p>6、创建一个或多个空文件:</p>
<div class="cnblogs_code">
<pre>touch 文件名称列表</pre>
</div>
<p>7、复制文件或目录:</p>
<div class="cnblogs_code">
<pre>cp [选项]source(源) dest(目标)</pre>
</div>
<p>常用选项:</p>
<p>(1)、-r :递归复制整个文件夹</p>
<p>(2)cp t1.txt text</p>
<p> 将t1.txt文件复制到text目录中</p>
<p>8、删除的文件或目录</p>
<div class="cnblogs_code">
<pre>rm [选项] 要删除的文件或目录</pre>
</div>
<p>常用选项:</p>
<p>(1)、-r :递归删除整个文件夹</p>
<p>(2)、-f :强制删除不提示</p>
<p>9、移动目录或者文件(可重命名)</p>
<div class="cnblogs_code">
<pre>mv source(源) dest(目标)</pre>
</div>
<p>(1)、mv t1.txt t1_new.txt</p>
<p>10、查看的文件中的内容</p>
<div class="cnblogs_code">
<pre>cat [选项] 要查看的文件名</pre>
</div>
<p>常用选项</p>
<p>(1)、-n :(cat -n a.txt)显示行号</p>
<p>11、分页查看文件内容</p>
<div class="cnblogs_code">
<pre>(1)、more 文件名</pre>
</div>
<p>一次加载文件所有内容,分页显示</p>
<div class="cnblogs_code">
<pre>(2)、less 文件名</pre>
</div>
<p>分页加载文件所有内容,分页显示</p>
<p>(按回车翻一行,按空格翻一页,按q退出查看)</p>
<p>12、查看文件的头/尾的几行:</p>
<p>(1)、查看文件头的前几行</p>
<div class="cnblogs_code">
<pre>head [选项] 文件名</pre>
</div>
<p>(head -n 5 文件名(查看文件头5行内容,5可以是任意行数))</p>
<p>(2)、查看文件尾的后几行</p>
<div class="cnblogs_code">
<pre>tail [选项] 文件名</pre>
</div>
<p>(tail -n 5 文件名(查看文件尾5行内容,5可以是任意行数))</p>
<p>13、内容输出定向:</p>
<p>(1)、>指令:输出重定向,将原来的文件内容覆盖;</p>
<p>(ls –l > a.txt (将ls –l查到的列表内容覆盖写入文件a.txt中(a.txt不存在会创建)))</p>
<p>(2)、>>指令:不会覆盖原来文件的内容,而使追加到文件的尾部;</p>
<p>(ls –l >> a.txt (将ls –l查到的列表内容追加到文件a.txt末尾中(a.txt不存在会创建)))</p>
<p>14、输出内容到控制台:</p>
<div class="cnblogs_code">
<pre>echo [选项] [输出内容]</pre>
</div>
<p>(1)、输出path路径到控制台:echo $PATH</p>
<p>15、查看历史执行过的指令:</p>
<div class="cnblogs_code">
<pre>history</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux的文本编辑器命令</span></h3>
<p>1、vi和vim的使用:</p>
<p> <img src="https://img2022.cnblogs.com/blog/2506499/202201/2506499-20220127103117513-1822152496.png" alt=""></p>
<p>(1)、一般模式:</p>
<p>使用vi或vim命令打开文件(vim text.txt),进入一般模式</p>
<p>(可以查看文件内容,但不能够编辑文件内容)</p>
<p>(2)、编辑模式:</p>
<p>在一般模式下,按i键或者a键,进入编辑模式</p>
<p>(可以编辑内容,但不能保存;按ESC键,可以返回到一般模式)</p>
<p>(3)、命令行模式:</p>
<p>在<span style="color: rgba(255, 0, 0, 1)">一般模式</span>下,按:键,进入命令行模式</p>
<p>输入:</p>
<p> 1)、q!——不保存强制退出编辑器</p>
<p> 2)、wq——保存并且退出编辑器</p>
<p> 3)、q——只是退出编辑器</p>
<p>2、vi和vim常用快捷键</p>
<p>(1)、一般模式下:</p>
<p> 1)、拷贝当前行,输入(yy),</p>
<p> 2)、拷贝当前行(包括当前行)向下的5行,输入(5yy),</p>
<p>3)、并粘贴,输入(p)。</p>
<p>(2)、一般模式下:</p>
<p> 1)、删除当前行,输入(dd),</p>
<p> 2)、删除当前行向下的5行,输入(5dd)。</p>
<p>(3)、一般模式或命令行模式下,</p>
<p> <span style="color: rgba(255, 0, 0, 1)"><strong>1)、在文件中<span style="font-size: 16px">查找关键字</span>,输入(/关键字或?关键字),</strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong> 2)、回车查找, 输入(n),表示光标查找下一个关键字。</strong></span></p>
<p>(4)、一般模式下,</p>
<p> 1)、使用快捷键到达文档的最首行,输入(gg)</p>
<p> 2)、到达文档最末行,输入(G)。</p>
<p>(5)、一般模式下,</p>
<p> 1)、在一个文件中输入"xxxx" ,然后又撤销这个动作,输入(u)。</p>
<p>(6、)命令行模式下,</p>
<p> 1)、设置文件的行号,输入(: set nu)</p>
<p> 2)、取消文件的行号,输入(:set nonu)</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux时间日期命令:</span></h3>
<p>1、查看或设置系统的日期或时间</p>
<div class="cnblogs_code">
<pre>date(查看系统当前完整的日期和时间)</pre>
</div>
<p>(1)、date +%Y(显示当前年份)</p>
<p>(2)、date +%m(显示当前月份)</p>
<p>(3)、date +%d(显示当前日期)</p>
<p>(4)、date "+%Y-%m-%d %H:%M:%S"(显示年月日时分秒)</p>
<p>(5)、date -s 字符串时间(设置日期)</p>
<p>2、查看日历</p>
<div class="cnblogs_code">
<pre>cal [选项](不加选项,显示本月日历)</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux中关于搜索文件或者目录的命令:</span></h3>
<p>1、<span style="color: rgba(255, 0, 0, 1)">find</span> [搜索范围] [搜索标准] 关键字</p>
<p>搜索标准:</p>
<p>(1)、-name:按名称查找,支持通配符(*)。</p>
<p>(2)、-user:按用户名查找</p>
<p>(3)、-size:按文件大小查找</p>
<p>2、<span style="color: rgba(255, 0, 0, 1)">locate</span> 要搜索的文件名</p>
<p>在目录树结构中搜索文件或目录,根据名称搜索,效率高,但新数据不能及时更新</p>
<p>使用:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">updatadb
locate 要搜索的文件名</span></pre>
</div>
<p>3、过滤命令<span style="color: rgba(255, 0, 0, 1)">grep</span>:(重)</p>
<p>grep过滤查找,管道符:“|”,表示将前一个命令的处理结果输出传递给后面的命令处理</p>
<p>使用:</p>
<div class="cnblogs_code">
<pre>搜索命令 |<span style="color: rgba(0, 0, 0, 1)"> grep [选项] 过滤条件
查找命令 </span>| grep [选项] 过滤条件</pre>
</div>
<p>常用选项:</p>
<p>(1)、-n:显示匹配行和行号</p>
<p>(2)、-i:忽略大小写</p>
<p>例:find *.txt | grep new (所有包含new条件的.txt文件)</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux压缩解压命令</span></h3>
<p>1、zip/unzip指令(.zip)</p>
<p>(1)、压缩命令:</p>
<div class="cnblogs_code">
<pre>zip [选项] 目标压缩包名称(通常打包成.zip压缩包)文件或目录列表</pre>
</div>
<p>选项说明:</p>
<p>-r:递归压缩,即压缩目录</p>
<p>(2)、解压命令:</p>
<div class="cnblogs_code">
<pre>unzip [选项] 压缩包名称(.zip) 解压的目录名</pre>
</div>
<p>常用选项:</p>
<p>-d 目录:指定解压后文件的存放目录</p>
<p>2、tar指令(.tar.gz)</p>
<p>(1)、压缩命令:</p>
<div class="cnblogs_code">
<pre>tar [选项] 目标压缩包名称(XXX.tar.gz) 文件或目录列表</pre>
</div>
<p>tar <span style="color: rgba(255, 0, 0, 1)">-zcvf</span> xxx.tar.gz 文件或目录列表</p>
<p>(2)、解压命令:</p>
<div class="cnblogs_code">
<pre>tar [选项] 压缩包名称(XXX.tar.gz) -C 解压到目录名</pre>
</div>
<p>tar <span style="color: rgba(255, 0, 0, 1)">-zxvf</span> xxx.tar.gz -C 解压到目录名</p>
<p>3、选项说明:</p>
<p>(1)、-c:产生.tar.gz 打包文件(compression)</p>
<p>(2)、-v:显示详细信息(view)</p>
<p>(3)、-f:指定压缩后的文件名</p>
<p>(4)、-z:打包同时压缩</p>
<p>(5)、-x:解压.tar.gz 文件</p>
<p>(6)、-C: 指定解压到哪个目录</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux文件或目录的权限控制(重)</span></h3>
<p>在linux中,任何文件或目录都有三种权限:读(Read)、写(Write)、执行(Execute)</p>
<p><img src="https://img2022.cnblogs.com/blog/2506499/202201/2506499-20220127103723022-294074550.png" alt=""></p>
<p>1、对文件而言:</p>
<p>(1)、读(r): 可以读取,查看文件内容 ,比如cat、more、less、head、tail...</p>
<p>(2)、写(w): 可以修改文件内容,比如vi/vim</p>
<p>(2)、执行(x): 如果该文件是可执行文件(.sh),可直接运行</p>
<p>2、对目录而言:</p>
<p>(1)、读(r): 可以读取,ls 查看目录内容</p>
<p>(2)、写(w): 可以修改,目录内创建+删除+重命名目录</p>
<p>(3)、执行(x): 可以进入该目录</p>
<p>3、rwx 可用数字表示:</p>
<p>r=4(即 2²),w=2(即 2¹),x=1(即 2º)</p>
<p>4、文件或目录的权限控制:</p>
<p>(1)、在linux中,任何一个文件或目录都有三部分权限:</p>
<p>所有者权限——同组用户权限——其它组用户权限</p>
<p>(rwx)————(rwx)————(rwx) ------第二位开始看</p>
<p>(2)、查看文件或目录的权限:</p>
<div class="cnblogs_code">
<pre>1<span style="color: rgba(0, 0, 0, 1)">)、ls –aul
</span>2)、ls -l</pre>
</div>
<p>(3)、修改文件或目录的权限(chmod):</p>
<p>1)、用r、w、x分别表示读、写、执行的权限</p>
<p>2)、用u、g、o、a分别代表文件所有者、文件所在组用户、其它组用户、所有用户</p>
<p>3)、=、+、-分别代表设置权限、增加权限、去掉权限</p>
<div class="cnblogs_code">
<pre>例:chmod u=rwx,g=rx,o=x 文件目录名</pre>
</div>
<p>(4)、使用数字的方式修改文件或目录的权限</p>
<p>r=4、w=2、x=1、rwx=4+2+1=7</p>
<div class="cnblogs_code">
<pre>例:chmod 777 文件目录名 <=>chmod u=rwx,g=rwx,o=rwx 文件目录名</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux网络管理命令</span></h3>
<p>1、查看IP地址</p>
<div class="cnblogs_code">
<pre>ifconfig</pre>
</div>
<div class="cnblogs_code">
<pre>hostname -I</pre>
</div>
<p>2、配置linux网络</p>
<div class="cnblogs_code">
<pre>vim /etc/sysconfig/network-scripts/ifcfg-eth33</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux进程管理命令</span></h3>
<p>进程:一个应用程序;线程:一个应用程序的执行单元</p>
<p>1、查看进程</p>
<p>(1)、只会显示应用进程:ps</p>
<p>(2)、显示当前终端下的所有进程信息:ps –a</p>
<p>(3)、以用户的格式显示进程信息:ps –u</p>
<p>(4)、显示后台进程运行的参数:ps –x</p>
<p>(5)、以全格式的形式显示所有进程信息:ps –ef</p>
<p>2、关闭进程</p>
<div class="cnblogs_code">
<pre>(1<span style="color: rgba(0, 0, 0, 1)">)、使用ps命令查看进程的PID
(</span>2)、kill 选项 进程PID值</pre>
</div>
<p>选项说明:</p>
<p>-9:表示强迫进程立即停止</p>
<p>(kill -9 PID值)</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux服务管理命令:</span></h3>
<p>1、服务:守护进程,比如sshd、防火墙等</p>
<p>2、操作</p>
<div class="cnblogs_code">
<pre>systemctl 服务名称</pre>
</div>
<p>(1)、查看防火墙运行状态:systemctl status firewalld</p>
<p>(2)、关闭防火墙:systemctl stop firewalld</p>
<p>(3)、开启防火墙:systemctl start firewalld</p>
<p>(4)、设置防火墙开机启动:systemctl enable firewalld</p>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux开放指定端口命令:</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">#查看防火墙列表
firewall</span>-cmd --list-<span style="color: rgba(0, 0, 0, 1)">all
#打开防火墙,开放指定端口
#例:firewall</span>-cmd --add-port=<span style="color: rgba(128, 0, 128, 1)">8080</span>/tcp --<span style="color: rgba(0, 0, 0, 1)">permanent
firewall</span>-cmd --add-port=要开放的端口/tcp --<span style="color: rgba(0, 0, 0, 1)">permanent
#刷新防火墙
firewall</span>-cmd --<span style="color: rgba(0, 0, 0, 1)">reload
#查看开放的端口
firewall</span>-cmd --list-<span style="color: rgba(0, 0, 0, 1)">ports
#查询某端口是否开放
firewall</span>-cmd --query-port=端口号/<span style="color: rgba(0, 0, 0, 1)">tcp
#移除某端口端口
firewall</span>-cmd --permanent --remove-port=端口号/tcp</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux文本编辑中快速定位关键字命令:</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">一般模式或命令行模式下,
</span><span style="color: rgba(128, 0, 128, 1)">1</span>、在文件中查找关键字,输入(/<span style="color: rgba(0, 0, 0, 1)">关键字或?关键字),
</span><span style="color: rgba(128, 0, 128, 1)">2</span>、回车查找, 输入(n),表示光标查找下一个关键字。</pre>
</div>
<p> </p>
<h3><span style="color: rgba(255, 0, 0, 1)">Linux-SFTP文件传输操作命令:</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># 连接到远程服务器,username是登录用户名,hostname是服务器的主机名或IP地址:
sftp username@hostname
# 显示当前工作目录:
pwd
# 退出SFTP会话:
exit</span></pre>
</div>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">Linux中软件安装包的管理:</span></h2>
<p>1、RPM包管理(Ubuntu采用deb)</p>
<p>RPM:一种linux的软件包的打包和安装工具(以.rpm结尾)</p>
<p>(1)、查询所安装的所有软件包:rpm –qa</p>
<p>(2)、分页查询所安装的所有软件包:rpm –qa|more</p>
<p>(3)、过滤查询安装的指定软件包:rmp –qa|grep xxx</p>
<p>2、YUM包管理</p>
<p>基于RPM的软件安装包管理工具,可自动处理软件包之间的依赖关系</p>
<p>(1)、查看:yum list installed | grep xx</p>
<p>(2)、卸载:yum remove xx</p>
<p>(3)、安装:yum installed xx</p>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">crontab定时任务的调度:</span></h2>
<p>1、概述:</p>
<p> 在Linux系统的实际使用中,可能会经常碰到让系统在某个特定时间执行某些任务的情况,比如定时采集服务器的状态信息、负载状况;定时执行某些任务/脚本来对远端进行数据采集等。</p>
<p>2、简单使用:</p>
<div class="cnblogs_code">
<pre>cd /<span style="color: rgba(0, 0, 0, 1)">
cd etc
crontab –e
输入任务到调度文件中并保存(ctrl</span>+s与ctrl+<span style="color: rgba(0, 0, 0, 1)">x),如:
</span>*/1 * * * * ls -l >> /demo/a.txt #每分钟执行ls -l >> /demo/a.txt命令</pre>
</div>
<p>3、crontab命令:</p>
<div class="cnblogs_code">
<pre>crontab [ -u 用户 ] { -e | -l | -<span style="color: rgba(0, 0, 0, 1)">r }
(</span>1)、crontab -<span style="color: rgba(0, 0, 0, 1)">e :编辑 crontab 的工作内容
(</span>2)、crontab -<span style="color: rgba(0, 0, 0, 1)">l :查阅 crontab 的工作内容
(</span>3)、crontab -r :移除所有的crontab的工作内容,若仅要移除一项,请用-e去编辑</pre>
</div>
<p>4、crontab语法格式说明:</p>
<p> Linux下的任务调度分为两类:系统任务调度和用户任务调度。Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。</p>
<p><img src="https://img2022.cnblogs.com/blog/2506499/202201/2506499-20220127104338112-1683171683.png" alt="" style="display: block; margin-left: auto; margin-right: auto"></p>
<p><img src="https://img2022.cnblogs.com/blog/2506499/202201/2506499-20220127104351136-1405111536.png" alt="" style="display: block; margin-left: auto; margin-right: auto"></p>
<table style="height: 320px; width: 828px" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="158">
<p align="center">特殊符号</p>
</td>
<td valign="top" width="410">
<p align="center">含义</p>
</td>
</tr>
<tr>
<td valign="top" width="158">
<p align="center"><strong>*</strong></p>
</td>
<td valign="top" width="410">
<p>表示任何时间。比如第一个<strong>“*”</strong>表示一小时每一分钟执行一次;</p>
</td>
</tr>
<tr>
<td valign="top" width="158">
<p align="center"><strong>,</strong></p>
</td>
<td valign="top" width="410">
<p>表示不连续时间。比如<strong>“0 8,12 * * * 命令”</strong>表达每天8点0分,12点0分都执行一次命令;</p>
</td>
</tr>
<tr>
<td valign="top" width="158">
<p align="center"><strong>-</strong></p>
</td>
<td valign="top" width="410">
<p>表示连续时间范围。比如<strong>“0 8 * * 1-5 命令”</strong>表示周一到周五的8点0分执行命令;</p>
</td>
</tr>
<tr>
<td valign="top" width="158">
<p align="center"><strong>*/n</strong></p>
</td>
<td valign="top" width="410">
<p>表达每隔多久执行一次。比如<strong>“*/15 * * * * 命令”</strong>表达每隔15分钟执行一次命令;</p>
</td>
</tr>
</tbody>
</table>
<p>5、案例:</p>
<p>(1)、每一分钟执行一次 /bin/ls:</p>
<div class="cnblogs_code">
<pre>* * * * * /bin/ls</pre>
</div>
<p>(2)每小时的第3和第15分钟执行command</p>
<div class="cnblogs_code">
<pre>3,15 * * * * command</pre>
</div>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">shell脚本编程入门</span></h2>
<p>1、shell是命令行编译器,用户通过这个界面访问操作系统内核的服务。</p>
<p>2、脚本格式要求:</p>
<p>(1)、脚本以<span style="color: rgba(255, 0, 0, 1)">#!/bin/bash</span>开头</p>
<p>(2)、脚本需要可执行权限</p>
<p>3、入门:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">创建一个shell脚本(demo.sh),输出hello
(</span>1<span style="color: rgba(0, 0, 0, 1)">)、vim demo.sh
(</span>2<span style="color: rgba(0, 0, 0, 1)">)、输入:
#</span>!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
echo </span>"hello"<span style="color: rgba(0, 0, 0, 1)">
(</span>3<span style="color: rgba(0, 0, 0, 1)">)、保存、并赋予执行(x)权限
chmod </span>744<span style="color: rgba(0, 0, 0, 1)"> demo.sh
(</span>4<span style="color: rgba(0, 0, 0, 1)">)、执行
.</span>/demo.sh</pre>
</div>
<p>4、shell变量:</p>
<p>(1)、系统变量:$HOME、$PWD、$SHELL、$USER等</p>
<div class="cnblogs_code">
<pre>echo $HOME</pre>
</div>
<p>(2)、用户变量:</p>
<p>1)、自定义变量:</p>
<p>注:可撤销变量: unset 变量</p>
<div class="cnblogs_code">
<pre>A=10<span style="color: rgba(0, 0, 0, 1)">
echo </span>"A=$A"<span style="color: rgba(0, 0, 0, 1)">
unset A
echo </span>"A=$A"</pre>
</div>
<p>2)、静态变量:</p>
<p>注:使用readonly声明变量,不能使用unset撤销</p>
<div class="cnblogs_code">
<pre>readonly A=10<span style="color: rgba(0, 0, 0, 1)">
echo </span>"A=$A"</pre>
</div>
<p>5、变量命名规则:</p>
<p>(1)、由字母、数字和下划线组成,不能以数字开头</p>
<p>(2)、等号两侧不能有空格</p>
<p>(3)、变量名一般大写</p>
<p>6、注释:</p>
<p>(1)、单行注释:#</p>
<p>(2)、多行注释:</p>
<div class="cnblogs_code">
<pre>:<<<span style="color: rgba(0, 0, 0, 1)">符号
注释内容...
注释内容...
注释内容...
符号</span></pre>
</div>
<p>注:符号必须一致</p>
<p>7、基本语法:</p>
<div class="cnblogs_code">
<pre>#1、A=`ls -l`(反引号)等价于A=$(ls -<span style="color: rgba(0, 0, 0, 1)">l)
#</span>2<span style="color: rgba(0, 0, 0, 1)">、将shell变量输出设为环境变量:
#export 变量名</span>=<span style="color: rgba(0, 0, 0, 1)">变量值
#</span>3<span style="color: rgba(0, 0, 0, 1)">、让修改的配置信息生效:
#source 配置文件
#</span>4<span style="color: rgba(0, 0, 0, 1)">、查询变量值:
#echo $变量名
#</span>5、获取输入参数(执行时:./<span style="color: rgba(0, 0, 0, 1)">demo 参数一 参数二...)
#(</span>1)、$n:n为数字,$0表示命令本身,$1-<span style="color: rgba(0, 0, 0, 1)">9表示参数一到九,十以上用${n}表示:
#echo </span>"$0 $1 $2"<span style="color: rgba(0, 0, 0, 1)">
#(</span>2)、$*<span style="color: rgba(0, 0, 0, 1)">:表示命令行中所有参数(看为一个整体):
#echo </span>"$*"<span style="color: rgba(0, 0, 0, 1)">
#(</span>3<span style="color: rgba(0, 0, 0, 1)">)、$@:表示命令行中所有参数(区分开来):
#echo </span>"$@"<span style="color: rgba(0, 0, 0, 1)">
#(</span>4<span style="color: rgba(0, 0, 0, 1)">)、$#:表示命令行中所有参数的个数:
#echo </span>"参数个数=$#"<span style="color: rgba(0, 0, 0, 1)">
#</span>6<span style="color: rgba(0, 0, 0, 1)">、查询当前进程的PID:
#echo </span>"当前进程号=$$"<span style="color: rgba(0, 0, 0, 1)">
#</span>7<span style="color: rgba(0, 0, 0, 1)">、后台运行的最后一个进程的PID:
#echo </span>"最后的进程号=$!"<span style="color: rgba(0, 0, 0, 1)">
#</span>8<span style="color: rgba(0, 0, 0, 1)">、显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误:
#echo </span>"退出状态=$?"</pre>
</div>
<p>8、运算符、数组、流程控制、函数</p>
<p> 参考</p>
<p>9、备份数据库案例:</p>
<p>获取:链接 提取码:b87f</p>
<p>(1)、在/opt/text下编写mysql_db_backup.sh脚本:</p>
<div class="cnblogs_code">
<pre>#!/bin/<span style="color: rgba(0, 0, 0, 1)">bash
#完成数据库的定时备份
#备份的路径
BACKUP</span>=/data/<span style="color: rgba(0, 0, 0, 1)">db
#当前的时间作为文件名
DATETIME</span>=$(date +%Y_%m_%d_%H%M%<span style="color: rgba(0, 0, 0, 1)">S)
#可以输出变量调试
#echo ${DATETIME}
echo </span>"=======开始备份========"<span style="color: rgba(0, 0, 0, 1)">
echo </span>"=======备份的路径是 $BACKUP/$DATETIME.tar.gz"<span style="color: rgba(0, 0, 0, 1)">
#主机
HOST</span>=<span style="color: rgba(0, 0, 0, 1)">localhost
#用户名
DB_USER</span>=<span style="color: rgba(0, 0, 0, 1)">root
#密码
DB_PWD</span>=<span style="color: rgba(0, 0, 0, 1)">root
#备份数据库名
DATABASE</span>=<span style="color: rgba(0, 0, 0, 1)">IvenDB
#创建备份的路径
#若备份的路径文件夹不存在则创建
[ </span>! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"<span style="color: rgba(0, 0, 0, 1)">
#执行mysql的备份数据库的指令
mysqldump </span>-u${DB_USER} -p${DB_PWD} --host=$HOST$DATABASE | gzip > $BACKUP/$DATETIME/<span style="color: rgba(0, 0, 0, 1)">$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar </span>-<span style="color: rgba(0, 0, 0, 1)">zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm </span>-rf $BACKUP/<span style="color: rgba(0, 0, 0, 1)">$DATETIME
#删除10天前的备份文件
find $BACKUP </span>-mtime +10 -name "*.tar.gz" -exec rm -<span style="color: rgba(0, 0, 0, 1)">rf {} \;
echo </span>"=====备份文件成功==========="</pre>
</div>
<p>(2)、使用crontab定时调度</p>
<div class="cnblogs_code">
<pre>cd /<span style="color: rgba(0, 0, 0, 1)">
cd etc
crontab –e
#输入任务到调度文件中并保存(ctrl</span>+s与ctrl+<span style="color: rgba(0, 0, 0, 1)">x):
</span>0 1 * * * /opt/text/<span style="color: rgba(0, 0, 0, 1)">mysql_db_backup.sh
#每天一点执行mysql_db_backup.sh脚本进行备份</span></pre>
</div>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">Ubuntu系统安装JDK教程:</span></h2>
<p>相关参考</p>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">Ubuntu系统安装MySQL教程:</span></h2>
<p>相关参考</p>
<p> </p>
<h2><span style="color: rgba(255, 0, 0, 1)">Ubuntu系统安装Nginx教程:</span></h2>
<p>相关参考</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/Iven-L/p/15849109.html
頁:
[1]