Bootstrap

Linux命令大全(全网最细讲解)

文章目录

一、基础知识

(1) Linux系统的文件结构

image-20231210143805146

(2) Linux系统命令行的含义

image-20231210143044426

控制台中蓝色的表示目录,白色表示普通文件绿色表示可执行文件红色表示压缩包。
image-20231210205208066

  • Linux 下有两种用户:管理员(root)、普通用户。
  • 管理员:可以在 Linux 下做任何事情,不受限制。
  • 普通用户:在 Linux 下做有限的事情。
  • 管理员的命令提示符是 " # ",普通用户的命令提示符是 " $ "。
    例如:(“yao@app00:/root$” ,表示使用用户"yao"访问/root文件夹)

(3)CentOS和Ubuntu的区别

CentOS由CentOS项目社区维护,提供免费的社区支持。而Ubuntu由Canonical公司维护,提供商业支持和付费服务。下面是常见命令区别

image-20231212180327709

二、基础操作

(1) 关闭系统

// 立刻关机
shutdown -h now 或者 poweroff
// 两分钟后关机
shutdown -h 2

(2) 关闭重启

// 立刻重启
shutdown -r now 或者 reboot
// 两分钟后重启
shutdown -r 2 

(3) 帮助命令(help)

ifconfig  --help     //查看 ifconfig 命令的用法

(4) 命令说明书(man)

man - 查看某个命令的帮助手册
man ls 【查看 ls 命令的帮助手册】
man netstat 【查看 netstat 命令的帮助手册】
//打开命令说明后,可按"q"键退出

(5) 切换用户(su)

# -选项可选,表示是否在切换用户后加载环境变量,建议带上
# 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
su - yao               //切换为用户"yao",输入后回车需要输入该用户的密码
# 通过exit命令退回到上一个用户,或使用快捷键:Ctrl+d
exit                 //退出当前用户

使用root用户切换到其它用户,无需密码,可以直接切换
使用普通用户,切换到其它用户需要输入密码,如切换到root用户

(6)普通用户获取root授权

sudo 其他命令

在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权。
注:但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

为普通用户配置sudo认证

image-20231212002635221

  1. 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
  2. 在文件的最后添加:要授权的用户名 ALL=(ALL) NOPASSWD:ALL
    最后通过wq保存,切换回普通用户,执行的命令前加sudo,均以root运行
    image-20231212002217112

(7)在Linux中修改主机名

hostname  // 查看主机名
hostnamectl set-hostname 主机名  // 修改主机名命令(需要root)

三、目录操作

(1)切换目录(cd)

cd /                 //切换到根目录
cd /bin              //切换到根目录下的bin目录
cd ../               //切换到上一级目录 或者使用命令:cd ..
cd ~                 //切换到home目录
cd -                 //切换到上次访问的目录
cd xx(文件夹名)       //切换到本目录下的名为xx的文件目录,如果目录不存在报错
cd /xxx/xx/x         //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全

(2)查看目录(ls,ll)

ls                   //查看当前目录下的所有目录和文件
ls -a                //查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l                //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样
ls /bin              //查看指定目录下的所有目录和文件 

输入ll显示出当前目录下所有目录和文件的详细信息
image-20231211161910934

  • 硬链接是指多个文件名指向同一个文件的情况。在Linux系统中,每个文件都有一个链接数,表示有多少个文件名指向该文件。
  • 当创建一个文件时,会自动创建一个链接数为1的硬链接。当使用ln命令创建一个文件的硬链接时,该文件的链接数会增加。删除一个硬链接并不会删除文件本身,只有当链接数减少到0时,文件才会被真正删除。

(3)创建目录(mkdir)

mkdir tools          // 在当前目录下创建一个名为tools的目录
mkdir /bin/tools     // 在指定目录下创建一个名为tools的目录
mkdir -p /bin/tools  // -p选项的作用可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

当使用mkdir连续的创建很多目录之后,就容易搞不清楚目录结构,可以通过一个tree这样的命令,来直观的看到目录是如何构成的!
image-20231210210425947
注意:当第一次使用这个命令的时候可能会报错,找不到这个命令,那是因为tree是属于第三方提供的命令,要单独下载安装!!所以我们可以通过yum install -y tree 下载tree命令(云服务器有效联网状态)。——yum相当于“应用商店”,称为“包管理器”。

(4)删除目录与文件(rm)

rm 文件名              //删除当前目录下的文件
rm -f 文件名           //删除当前目录的的文件(不询问)
rm -r 文件夹名         //递归删除当前目录下此名的目录
rm -rf 文件夹名        //递归删除当前目录下此名的目录(不询问)
rm -rf *              //将当前目录下的所有目录和文件全部删除
rm -rf /*             //将根目录下的所有文件全部删除【慎用!相当于格式化系统】

(5)移动目录或重命名(mv)

重命名语法:mv 旧文件名 新文件名
移动语法:mv /源目录 /目标目录

mv 当前目录名 新目录名        //修改目录名,同样适用与文件操作
mv /usr/tmp/tool /opt       //将/usr/tmp目录下的tool目录剪切到 /opt目录下面
mv -r /usr/tmp/tool /opt    //递归剪切目录中所有文件和文件夹

(6)拷贝目录(cp)

cp /usr/tmp/tool /opt       //将/usr/tmp目录下的tool目录复制到 /opt目录下面
cp -r /usr/tmp/tool /opt    //递归剪复制目录中所有文件和文件夹

语法:cp 源文件 目标文件
cp hello.txt a/ 【拷贝 hello.txt 文件到 a 目录下】
cp -r /home/a /b/ 【递归将 home 下的整个 a 目录拷贝到 b 目录下】
\cp -r /home/a /b/ 【强制覆盖不提示】
如果连续执行相同的拷贝命令系统会一个一个提示是否覆盖文件内的文件,这时在 cp 前加一个 \ 就可以进行强制覆盖,不提示。

(7)搜索目录或文件(find)

find 指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端。

// find 起始路径 -name "被查找文件名或目录名"
find /bin -name 'a*'        //查找/bin目录下的所有以a开头的文件或者目录

find命令结合通配符
test*,表示匹配任何以test开头的内容
*test,表示匹配任何以test结尾的内容
test,表示匹配任何包含test的内容

find按照文件大小查找文件
查找小于10KB的文件:find / -size -10k
查找大于100MB的文件:find / -size +100M
查找大于1GB的文件:find / -size +1G

image-20231212012922214

(8)查看当前目录(pwd)

pwd  //显示当前位置路径

pwd能告知我们当前处于哪个目录,因为当我们操作过多的时候,很容易不知道自己所在的目录,使用这个操作就可以解决这个问题

image-20231210212356632

此时就显示了当前目录的绝对路径,这里我们需要注意的是,在Windows上,我们的绝对路径是以盘符开头的,而在linux里,我们的绝对路径,是以/(根目录)开头的 。

四、文件操作

(1)创建文件(touch)

# 如果文件不存在,在当前目录下创建名为a的txt文件
# 如果文件存在,则将文件时间属性修改为当前系统时间
touch  a.txt         

(2)删除文件(rm)

rm 文件名              //删除当前目录下的文件
rm -f 文件名           //删除当前目录的的文件(不询问)

(3)编辑文件(vi、vim)

操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

  1. 命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模型下,不能自由进行文本编辑。
  2. 插入模式也就是所谓的编辑模式。此模式下,可以对文件内容进行自由编辑。
  3. 底行模式 以:开始,通常用于文件的保存、退出。
  vi 文件名              //打开需要编辑的文件(若文件不存在,就创建文件)
  命令模式
  -刚进入文件就是命令模式,通过方向键控制光标位置,
  -使用命令"dd"删除当前整行
  -使用命令"/字段"进行查找
  -按"i"在光标所在字符前开始插入
  -按"a"在光标所在字符后开始插入
  -按"o"在光标所在行的下面另起一新行插入
  -按":"进入底行模式
  插入模式
  -此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
  -按"ESC"进入底行模式
  底行模式
  -退出编辑:      :q
  -强制退出:      :q!
  -保存并退出:    :wq
  ## 操作步骤示例 ##
  1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车     //保存并退出编辑
  2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车     //撤销本次修改并退出编辑
  ## 补充 ##
  vim +10 filename.txt                   //打开文件并跳到第10行
  vim -R /etc/passwd          
           //以只读模式打开文件
Vi编辑器—命令模式相关命令:
命令模式命令功能
o在当前行后面插入一空行
O在当前行前面插入一空行
dd删除光标所在行
ndd从光标位置向下连续删除 n 行
yy复制光标所在行
nyy从光标位置向下连续复制 n 行
p黏贴
u撤销上一次命令
gg回到文件顶部
G回到文件末尾
/str查找str
Vi编辑器—底行模式相关命令:
底行模式命令功能
:w 文件另存为
:w保存(ctrl+s)
:q退出,如果没有保存,不允许退出
:q!强行退出,不保存退出
:wq保存并退出
:x保存并退出
Shift+z+z保存退出
:set nu设置行号
:set paste设置粘贴模式
:%s/旧文本/新文本文本替换

(4)查看文件(cat,less,more)

  cat a.txt          //查看文件最后一屏内容
  less a.txt         //PgUp向上翻页,PgDn向下翻页,"q"退出查看
  more a.txt         //显示百分比,回车查看下一行,空格查看下一页,"q"退出查看
  tail -100 a.txt    //查看文件的后100行,"Ctrl+C"退出查看

cat 指令查看文件比 vim 更安全,因为 cat 指令只能查看不能修改。

cat a.txt 【查看文件 a.txt 的内容】
cat -n a.txt 【查看文件 a.txt 的内容,并显示行号】

" less " 命令最大的优势在于,能够对于大文件进行 " 秒开 "。

正常的一个编辑器打开文件的时候,就是直接将文件内容都读到内存中,这就涉及到大量的磁盘 IO. 此时,如果文件很大 ( 几个G ),就会打开的很慢,甚至打开失败。比方说,我们前面介绍的 " cat " 命令,就是一下子将所有的数据读出来并显示。
然而," less " 命令只是将当前屏幕显示的这一块给加载到内存中,随着用户的手动翻页,就会不断地加载新的部分,这其实就是懒加载的思想,类似于单例模式中的懒汉模式。( 需要用到了数据,才会执行 )
综上所述,在日常开发中,若我们在服务器上需要打开一个大文件,使用 " less " 命令就是一个明智的选择。

more 指令是一个基于 vim 编辑器的文本过滤器,可以以全屏幕的方式按页显示文本文件的内容,且有若干快捷键:

space(空格);向下翻一页
Enter(回车);向下翻一行
q;立即离开more,不再显示文件内容
Ctrl+F;向下滚动以一屏
Ctrl+B;返回上一屏
=;输出当前行的行号
:f;输出文件名和当前行的行号
more 指令也可以结合 cat 指令进行使用,可以让文件内容按百分比显示,使用管道指令 | more
cat a.txt | more 【查看文件 a.txt 的内容,并以百分比显示】

(5)查看文件首尾(head,tail)

# head - 查看文件开头部分
head a.txt 【默认查看 a.txt 文件的前 10 行内容】
head -n 5 a.txt 【查看 a.txt 文件的前 5 行内容】
# tail - 查看文件尾部的部分
tail a.txt 【默认查看 a.txt 文件的后 10 行内容】
tail -n 5  a.txt 【查看 a.txt 文件的后 5 行内容】
tail -f a.txt 【查看 a.txt 文件的后 10 行内容,并实时追踪文件更新】

(6)输出内容到控制台(echo)

# 语法:echo 输出内容
echo $PATH 【输出环境变量 $PATHecho "Hello World" 【输出语句“Hello World”】
echo `pwd`  【输出pwd命令执行的内容】

注意被反引号``包围的内容,会被作为命令执行,而非普通字符。

(7)输出重定向/追加(> / >>)

重定向 > 会覆盖之前内容,追加 >> 会将新内容添加到之前内容的末尾。
cat 文件1 > 文件2 【将文件1的内容覆盖到文件2】(文件2如果没有则创建一个))
ls -l /home > /home/info.txt 【将 /home 下的文件列表写入 info.txt 中】
cal >> /time 【将当前日历信息追加到 /time 文件中】

(8)查看历史命令(history)

history 【查看最近所有执行过的指令】
history 10 【查看最近执行过的10条指令】
!5 表示去执历史编号为5的指令

image-20231212174415050

(9)查看命令位置(which,whereis)

which查看所使用的一系列命令的程序文件的存放位置,which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

# which 要查找的命令
which bash             //查看指令"bash"的绝对路径

whereis命令会在系统的默认搜索路径中查找指定命令的位置,并返回相关信息。它会显示命令的二进制文件路径、源代码文件路径和帮助文档路径(如果有的话)。

whereis <命令>

image-20231212013724912

(10)过滤查找(grep)

# 关键字如果带有空格或其他特殊符号,建议使用" "将关键字包围起来
# 选项-n,可选,表示在结果中显示匹配的行的行号
grep [-n] 关键字 文件路径 

语法:grep 查找内容 源文件(去源文件中查找指定内容)
grep “yes” hello.txt 【查找 hello.txt 文件中 “yes” 所在行】
cat hello.txt | grep “yes” 【查找 hello.txt 文件中 “yes” 所在行】
cat hello.txt | grep -n “yes” 【查找 hello.txt 文件中 “yes” 所在行并显示行号】
grep 过滤查找常和管道符 | 结合使用,表示将前一个命令的处理结果传递给后面处理

管道符|:就是将管道符左边命令的结果,作为右边命令的输入
image-20231211151022294

(11)数量统计(wc)

# 用于统计文件的行数、单词数量等
wc [-l -w -c -m] 文件路径 

image-20231211233427117

  • 选项,-l,统计行数
  • 选项,-w,统计单词数量
  • 选项,-c,统计bytes数量
  • 选项,-m,统计字符数量
  • 参数,文件路径,被统计的文件,可作为内容输入端口

(12)终止操作

Ctrl+C 用于终止正在运行的程序。 Ctrl+Z 用于将正在运行的程序暂停并放入后台。

  1. Ctrl+C:当你在终端中运行一个程序时,按下 Ctrl+C 可以发送一个中断信号(SIGINT)给正在运行的程序,通常用于终止程序的执行。这相当于向程序发送一个请求,要求它停止运行并退出。大多数程序会捕获这个信号并执行相应的处理,例如关闭文件、释放资源等。

  2. Ctrl+Z:按下 Ctrl+Z 可以将当前正在运行的程序暂停,并将其放入后台(挂起)。这相当于将程序置于休眠状态,暂时停止它的执行。程序会被挂起并返回到终端,你可以在终端中执行其他命令。

可以使用 fg 命令将程序重新切换到前台继续执行,或使用 bg 命令将程序在后台继续执行。

五、用户和权限管控

  • 普通用户的权限,一般在其HOME目录内是不受限的
  • 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

(1)查看用户/用户组信息

查看用户信息

getent passwd username 【获取指定用户的信息】
getent passwd 【获取所有用户的信息】
image-20231212114548288

查看用户组信息

getent group groupname 【获取指定用户组的信息】
getent group 【获取所有用户组的信息】
image-20231212113931198

(2)用户管理

  1. 创建用户
useradd [-g -d] 用户名
  • 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
  1. 删除用户
userdel [-r] 用户名
  • 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
  1. 设置用户密码
passwd 用户名 
  1. 切换用户身份
su - 用户名
  1. 查看用户所属组
id 用户名
  • 参数:用户名,被查看的用户,如果不提供则查看自身
  • image-20231212120920662
  1. 修改用户所属组
usermod -aG 用户组 用户名

(3)用户组管理

groupadd 用户组名   				// 创建用户组
groupdel 用户组名  				// 删除用户组
groupmod -n 新用户组名 旧用户组名    // 修改用户组名
getent group 用户组名  			 	// 查看用户组信息
usermod -aG 用户组名 用户名  		// 添加用户到用户组
gpasswd -d 用户名 用户组名 			// 从用户组中移除用户

创建用户与用户组示例

在这里插入图片描述

(4)权限说明

权限总共分为10个槽位

image-20231212020552174

文件权限由10个字符组成,其中第一个字符代表当前文件的类型,剩下分为三组,每组3个字符。每个字符表示对应权限的状态,其中r表示读取权限w表示写入权限x表示执行权限-表示没有对应权限。
image-20231211162047853

  # 括号内代表"8421法" 
  文件权限简介:'r' 代表可读(4),'w' 代表可写(2),'x' 代表执行权限(1),'-'代表没有对应权限(0)
  ##文件权限信息示例:-rwxrw-r--
  -第一位:'-'就代表是文件,'d'代表是文件夹
  -第一组三位:拥有者的权限
  -第二组三位:拥有者所在的组,组员的权限
  -第三组三位:代表的是其他用户的权限

image-20231212140740596
image-20231212140748394
image-20231212140755052

(5)文件权限(chmod)

修改文件、文件夹的权限信息。注:只有文件、文件夹的所属用户或root用户可以修改

image-20231212021116586

chmod [-R] 权限 文件或文件夹
# 将文件夹test及其文件夹内全部内容权限设置为 rwxr-x--x
chmod -R u=rwx,g=rx,o=x test  
  • 选项:-R,对该文件夹里面的所有文件与文件夹都赋予相同的权限
  • 其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限

普通授权 chmod +x a.txt // 给a.txt 添加可执行权限
chmod -R u=rwx,g=rx,o=x test
8421法 chmod 777 a.txt // 1+2+4=7,"7"说明授予所有权限

1. 使用数字表示法设置文件权限:

chmod 644 file.txt
  • 权限数字表示:‘r’ 代表可读(4),‘w’ 代表可写(2),‘x’ 代表执行权限(1),'-'代表没有对应权限(0)
  • 644是权限模式,表示设置文件的权限为 -rw-r--r--
  • 第一个数字 6 表示所有者的权限,即读写权限(rw = 4+2)。
  • 第二个数字 4 表示所属组的权限,即只读权限(r = 4)。
  • 第三个数字 4 表示其他用户的权限,即只读权限(r = 4)。
  • file.txt 是要设置权限的文件。

2. 使用符号表示法添加权限:

chmod +x script.sh
  • +x 表示添加可执行权限。
  • script.sh 是要添加权限的脚本文件。

3. 使用符号表示法移除权限:

chmod -w file.txt
  • -w 表示移除写权限。
  • file.txt 是要移除权限的文件。

**4. 使用符号表示法设置权限:*

chmod u=rw,go=r file.txt
  • u=rw 表示设置所有者的权限为读写。
  • go=r 表示设置所属组和其他用户的权限为只读。
  • file.txt 是要设置权限的文件。

5. 递归修改目录及其子目录中的文件权限:

chmod -R 755 directory
  • -R 表示递归修改目录及其子目录中的文件权限。
  • 755 是权限模式,表示设置目录的权限为 -rwxr-xr-x
  • directory 是要递归修改权限的目录。

(7)修改文件所属者(chown)

chown命令用于更改文件或目录的所有者和所属组。它可以将文件或目录的所有权转移给其他用户或用户组。

chown [选项] 用户:用户组 文件/目录
  • -R:递归地更改文件或目录及其子项的所有者和所属组。
  • -v:显示详细的操作信息。

image-20231212154205318

六、打包与解压

(1)说明

.zip、.rar 【windows系统中压缩文件的扩展名
.tar 【Linux中打包文件的扩展名
.gz 【Linux中压缩文件的扩展名
.tar.gz 【Linux中打包并压缩文件的扩展名

(2)打包文件

tar -zcvf 【打包压缩后的文件名】 【要打包的文件】
# z:调用gzip压缩命令进行压缩; c:打包文件; v:显示运行过程; f:指定文件名;
tar -zcvf a.tar file1 file2,...      //多个文件压缩打包

(3)解压文件

tar -zxvf a.tar                      //解包至当前目录
tar -zxvf a.tar -C /usr------        //指定解压的位置
unzip test.zip             //解压*.zip文件 
unzip -l test.zip          //查看*.zip文件的内容 

七、定时任务管理

(1)周期定时任务(cron)

在Linux系统中,定时任务通常是通过cron服务来管理的。cron是一个基于时间的作业调度器,它使用户能够自动化脚本或命令的执行。定时任务可以通过crontab命令来配置,每个用户都可以有自己的crontab文件,此外还有一个系统级的crontab。

cron服务在后台运行,检查是否有预定的作业需要在指定的时间执行。它会检查以下位置的配置文件:

1、 /etc/crontab这是系统的主crontab文件,包含了系统级别的定时任务配置。它通常由系统管理员编辑,用于设置系统范围的定时任务。

2、/etc/cron.d/这是一个目录,包含了系统的其他crontab文件。每个文件都代表一个独立的定时任务,可以由不同的软件包或服务创建和管理。

3、/var/spool/cron/crontabs/用户的crontab文件存储在这个目录下。每个用户都有一个以其用户名命名的文件,用于设置个人的定时任务。用户可以使用crontab -e命令编辑自己的crontab文件。

常用的crontab命令(用于操作定时任务的文件)

crontab -l		 		 // 列出当前用户的crontab文件。
crontab -e				// 编辑当前用户的crontab文件。
crontab -r				// 删除当前用户的crontab文件。
crontab -u <username> -l	// 作为root用户,列出其他用户的crontab文件。

crontab文件包含了一系列的作业和作业应当执行的时间。每一行都代表一个作业,格式如下:

image-20231216232039789

每个星号(*)可以用数字替换,表示特定的时间。还可以使用一些特殊字符来指定更复杂的时间安排:

image-20231216230038141

0 2 * * * /path/to/script.sh    # 每天凌晨2点执行脚本。
*/10 * * * * /path/to/command	# 每10分钟执行一次命令。
0 0 1,15 * * /path/to/script.sh # 每个月的1号和15号的午夜执行脚本。
0 8-18/2 * * * /path/to/command # 每天上午8点到下午6点之间,每隔2小时执行一次命令。

高级用法

  • 环境变量: 在crontab文件中,可以设置环境变量,这些变量将会在cron作业执行时生效。

    PATH=/usr/bin:/bin
    SHELL=/bin/bash
    * * * * * /path/to/script.sh
    
  • 输出重定向: 通常,cron作业的输出会通过邮件发送给用户。如果要重定向输出到文件中,可以这样做:

    * * * * * /path/to/command > /path/to/logfile 2>&1
    

    这里>是将标准输出重定向到文件,2>&1是将标准错误也重定向到同一个文件。

  • PATH问题: cron作业运行时的PATH可能与你的交互式shell中的PATH不同。为了确保作业能找到正确的命令,最好在脚本中设置完整的路径或者在crontab中设置PATH变量。

注意事项

  • 权限问题: 确保你的脚本或命令有适当的权限能够被cron服务执行。
  • 环境问题: cron作业可能不会加载你的.bashrc.profile文件,因此你的环境变量可能不会被加载。确保在crontab文件或脚本中明确设置所需的任何环境变量。
  • 编辑器: crontab -e命令会使用默认的文本编辑器来编辑crontab文件,如果你想使用其他编辑器,可以设置EDITOR环境变量,如export EDITOR=vim

(2)执行一次任务(at)

at命令是一次性的定时任务,执行完一次后,就不会再执行了。

  1. atd守护进程会在后台运行,定期检查作业队列,如果队列中有任务的执行时间与当前时间匹配,那么该任务就会被执行。默认情况下,atd守护进程每60秒检查一次作业队列。
  2. 使用at命令时,需要确保atd守护进程正在运行。可以使用ps命令或其他相关命令来检查atd进程的状态。

atd 不是系统内置进程,使用前需要安装 【yum install atd】

要使用at命令,您需要指定一个时间,格式可以是多种多样的,例如:

atq 或者 at -l	  # 查看任务列表
atrm <job number>   # 删除指定任务
at now + 1 minute   # 在1分钟后执行任务。
at 5pm + 2 days 	# 在两天后的下午5点执行任务。
at 14:00 July 25	# 在7月25日的下午2点执行任务。
  • -c:打印指定作业的内容到标准输出。

  • -f:从指定文件读取要执行的命令,而不是从标准输入读取。

  • -v:显示作业将被执行的时间,这是在提交作业时的反馈信息。

  • -l-at:这是atq命令的别名,用于列出当前待执行的作业队列。

  • -d-r:这是atrm命令的别名,用于删除指定的作业。

  • -t:使用特定的时间格式([CC]YYMMDDhhmm)。

at命令接受多种时间格式,例如:

  • now + count time-units:从现在开始的一段时间后执行。
  • HH:MM:今天的特定时间,如果已经过了,则是明天。
  • midnight:午夜时刻。
  • noon:中午时刻。
  • teatime:下午4点。
  • MMDDYY, MM/DD/YY, DD.MM.YY:特定的日期。
  • next + weekday:下一个指定的工作日。
  • tomorrow:明天这个时候。
  • now:立即执行(实际上会有几秒的延迟)。
# 执行一个在明天上午8点发送邮件的作业:
echo 'echo "Hello, world!" | mail -s "Test mail" [email protected]' | at 08:00 tomorrow
# 使用`-f`选项从`script.sh`文件中读取要执行的任务命令:
at -f script.sh 11:00 PM

八、系统管理

(1)修改虚拟机IP

修改网络配置文件,文件地址:/etc/sysconfig/network-scripts/ifcfg-eth0
------------------------------------------------
主要修改以下配置:  
TYPE=Ethernet               //网络类型
BOOTPROTO=static            //静态IP
DEVICE=ens00                //网卡名
IPADDR=192.168.1.100        //设置的IP
NETMASK=255.255.255.0       //子网掩码
GATEWAY=192.168.1.1         //网关
DNS1=192.168.1.1            //DNS
DNS2=8.8.8.8                //备用DNS
ONBOOT=yes                  //系统启动时启动此设置
-------------------------------------------------
修改保存以后使用命令重启网卡:service network restart

(2)配置IP映射

修改文件: vi /etc/hosts
在文件最后添加映射地址,示例如下:
  192.168.1.101  node1
  192.168.1.102  node2
  192.168.1.103  node3
配置好以后保存退出,输入命令:ping node1 ,可见实际 ping 的是 192.168.1.101。

(3)配置环境变量

1、什么是环境变量?

环境变量是一组信息记录,类型是KeyValue型(名称=值),用于操作系统运行的时候记录关键信息。

在Linux系统中执行:env命令即可查看当前系统中记录的所有环境变量信息,如下图:

image-20231215203737413

2、什么是PATH,它的作用是?

环境变量PATH会记录一组目录,目录之间用:隔开。这里记录的是命令的搜索路径,当执行命令会从记录中记录的目录中挨个搜索要执行的命令并执行。

可以通过修改这个项目的值,加入自定义的命令搜索路径如export PATH=$PATH:自定义路径

 env | grep PATH # 通过管道符查找出PATH的环境变量信息

image-20231215203608230

这也就是我们为什么能在Linux系统中的任意位置都能执行内置的系统命令了,因为它们的可执行文件的路径都已经被配置在环境变量PATH里面了!

3、$符号的使用

1. 在Linux系统中,$符号被用于取出“环境变量”的值

环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。取得环境变量的值就可以通过语法:$环境变量名 来取得

2. 比如:echo $PATH就可以获得PATH这个环境变量的值,并通过echo语句输出出来。

image-20231215204056578

又或者:echo ${PATH}ABC

image-20231215204224683

注意:当和其它内容混合在一起的时候,可以通过{}来标注取的变量是谁

4、自行设置环境变量

image-20231215204721966

image-20231215211751752

image-20231215211959706

(4)管理系统服务 (systemctl)

systemctl命令是CentOS 7及以上版本引入的新的服务管理工具,用于管理系统服务、单位和系统状态。它提供了更强大和灵活的功能,适用于基于systemd的发行版。

Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启能够被systemctl管理的软件,一般也称之为服务。一些系统内置的服务,如NetworkManager(主网络服务)、network(副网络服务)、firewalld(防火墙服务)和ssh(远程终端)等,可以通过systemctl命令进行控制。

systemctl命令的基本语法是 systemctl start | stop | status | enable | disable 服务名
systemctl start apache2		      // 启动Apache服务。
systemctl stop nginx   	 	      // 停止Nginx服务。
systemctl restart mysql		      // 重启MySQL服务。
systemctl enable 服务名		      // 设置服务在系统启动时自动启用。
systemctl disable 服务名	      	      // 设置服务在系统启动时不自动启用。
systemctl status 服务名    	      // 查看服务的状态信息。
systemctl list-units --type=service   // 列出所有已安装的服务。

需要注意的是,部分软件在安装后会自动集成到systemctl中,可以直接使用systemctl命令进行控制。而对于没有自动集成的软件,可以手动添加到systemctl中以便使用。这样可以方便地管理和控制各种服务。

(5)管理系统服务(service)

service命令是CentOS上默认的服务管理工具,用于启动、停止、重启和查询服务的状态。它提供了简单的接口,适用于基于SysV init的发行版。

service命令没有直接的开机自启管理功能,需要使用chkconfig命令来设置服务的开机自启,如果您使用的是CentOS 7及以上版本,推荐使用systemctl命令来管理系统服务。

# 说明:service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下
# 这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径
service ssh status      //查看服务状态 
service --status-all    //查看所有服务状态 
service ssh restart     //重启服务 

image-20231212014151556

(6)防火墙操作(firewalld)

service iptables status      //查看iptables服务的状态
service iptables start       //开启iptables服务
service iptables stop        //停止iptables服务
service iptables restart     //重启iptables服务
chkconfig iptables off       //关闭iptables服务的开机自启动
chkconfig iptables on        //开启iptables服务的开机自启动
##centos7 防火墙操作
systemctl status firewalld.service     //查看防火墙状态
systemctl stop firewalld.service       //关闭运行的防火墙
systemctl disable firewalld.service    //永久禁止防火墙服务

(7)查看网络 (ifconfig)

ifconfig 是一个用于配置和管理网络接口的命令行工具,它可以用来查看、配置和管理网络接口的IP地址、子网掩码、广播地址、MAC地址等网络参数。

# 它将显示所有网络接口的配置信息,包括接口名称、IP地址、MAC地址、子网掩码等
ifconfig       # 查看网络接口信息
ifconfig eth0  # 显示接口 eth0 的统计信息
# 为接口 eth0 配置IP地址为 192.168.0.10
ifconfig eth0 192.168.0.10 #
# 为接口 eth0 配置子网掩码为 255.255.255.0
ifconfig eth0 netmask 255.255.255.0
ifconfig eth0 up   # 激活接口 eth0
ifconfig eth0 down # 禁用接口 eth0

(8)查看进程信息(ps)

ps -ef         //查看所有正在运行的进程
语法:ps -ef | grep 关键字 # 查找指定关键字进程信息
ps -ef | grep tail  # 即可准确的找到tail命令的信息
ps -ef | grep 3001 # 查找带有3001关键字的进程信息
  • 选项:-e,显示出全部的进程
  • 选项:-f,以完全格式化的形式展示信息(展示全部信息)
  • 过滤不仅仅过滤名称,进程号\用户ID等等,都可以被grep过滤
  • image-20231215174439710

(9)结束进程(kill)

kill pid       //杀死该pid的进程
kill -9 pid    //强制杀死该进程   

(10)网络状态监控(sar)

查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)

sar -n DEV num1 num2		# 查看网络情况
  • 选项:-n ,查看网络,DEV表示查看网络接口
  • image-20231215200604007

(10)测试网络连接(ping)

ping命令用于测试与目标主机之间的网络连接。它发送ICMP回显请求到目标主机,并等待接收回显应答。

语法:ping [选项] 目标主机
ping example.com                 // 向example.com发送ping请求。
ping -c 5 -i 1 example.com   // 向example.com发送5个ping请求,每个请求间隔1秒。
  • -c <次数>:指定发送ping请求的次数。
  • -i <间隔>:指定发送ping请求的时间间隔。
  • -s <大小>:指定ping请求的数据包大小。
  • -t <TTL>:指定ping请求的生存时间(TTL)。

(11)发起网络请求(curl)

curl命令用于在终端中进行网络请求。它支持多种协议,如HTTP、FTP、SMTP等,并提供了丰富的选项和功能。

语法:curl [选项] URL
curl https://example.com  # 向example.com发送GET请求
# 向example.com发送POST请求,包含JSON数据。
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' https://example.com/api
  • -X <方法>:指定HTTP请求方法。
  • -H <头部信息>:指定HTTP请求头部信息。
  • -d <数据>:指定HTTP请求的数据。
  • -o <文件>:将服务器响应保存到指定文件。
  • -L:跟随重定向。

(12)查看端口开放情况(nmap)

nmap 命令可以帮助您确定目标主机上哪些端口处于打开状态,但不能直接告诉您这些端口是否已经被占用

nmap不是系统内置命令,使用前需要安装 yum -y install nmap

公认端口:1~1023,用于系统内置或常用知名软件绑定使用
注册端口:1024~49151,用于松散绑定使用(用户自定义)
动态端口: 49152~65535,用于临时使用(多用于出口)

语法:nmap 【被查看的IP地址】
nmap  127.0.0.1  # 查看本机对外暴露的端口
  • -p <端口范围>:指定要扫描的端口范围,例如 -p 1-100 表示扫描从端口 1 到端口 100 的范围。
  • -F:执行快速扫描,仅扫描常见端口。
  • -oN <文件名>:将扫描结果保存到指定的文件中,以普通文本格式保存。
  • -oX <文件名>:将扫描结果保存到指定的文件中,以XML格式保存。
  • image-20231215160924166

(13)查看端口占用情况(netstat)

netstat 是一个用于查看本地系统端口占用情况的工具。它可以告诉您哪些端口正在被哪些进程使用。

netstat不是系统内置命令,使用前需要安装 yum -y install net-tools

语法:netstat 【选项】  
netstat -a 	# 查看所有被占用的端口号
netstat -a -p   # 查看所有被占用的端口号和绑定的进程
# 查看指定端口的占用情况
netstat -an | grep <端口号> 
# 除了显示与端口8080相关的网络连接和监听端口外,还会显示相关进程的信息 
netstat -anp | grep <进程标识符/端口号> 
  • -a :显示所有的活动连接和监听端口。这包括 TCP 和 UDP 协议的所有端口
  • -n :显示数字形式的地址和端口号
  • -p:显示进程 ID 和程序名称。
  • -anp等于 -a,-n,-p这三个选项
  • image-20231215163815528

(14)查看系统内存(free)

free命令用于显示系统内存的使用情况。

语法:free [选项]
free       // 显示系统内存的使用情况。
free -h  // 以人类可读的方式显示内存大小。
  • -h:以人类可读的方式显示内存大小。
  • -s <间隔>:指定显示内存使用情况的时间间隔。
  • -t:显示所有内存的汇总。
  • -g:以 GB 为单位输出内存的使用量,-m为MB,-k为KB,-b为字节

(15)实时监控系统进程(top)

top命令用于实时监视系统的进程和系统资源的使用情况。

语法:top [选项]
top		// 显示实时的系统资源使用情况(shift+m 按照内存大小查看)
top -d 1 	// 每秒刷新显示系统资源使用情况。
  • -n:指定刷新输出的次数后退出。
  • -d:设置刷新时间间隔,单位为秒。默认情况下,top 每隔 5 秒刷新一次显示。
  • -c:显示产生进程的完整命令。默认情况下,top 显示的是进程的名称。
  • -p:只显示指定进程的信息。可以通过指定进程的PID(进程ID)来筛选要显示的进程信息
  • -u:查找特定用户启动的进程。使用 -u 选项后,可以指定要显示特定用户启动的进程信息。
  • -b:以非交互非全屏模式运行。当使用 -b 选项时,top 命令以批处理方式运行,并将输出重定向到指定的文件中。这在需要将 top 的输出保存到文件中进行后续处理时很有用。
  • -i:不显示任何闲置(idle)或无用(zombie)的进程。通过使用 -i 选项,top 命令将隐藏闲置和僵尸进程,只显示活动的进程信息。

image-20231215191543232
image-20231215151037371

当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制

按键功能
h键会显示帮助画面
c键会显示产生进程的完整命令,等同于-c参数,再次按下c键,变为默认展示
f键可以选择需要展示的项目
M键根据驻留内存大小(RES)排序
P键根据CPU使用百分比大小进行排序
T键根据时间/累计时间进行排序
E键切换顶部内存显示单位
e键切换进程内存显示单位
l键切换显示平均负载和启动时间信息
i键不显示闲置或无用的进程,等同于-i参数,再次按下,变为默认显示
t键切换显示CPU状态信息
m键切换显示内存信息

(16)查看系统磁盘空间(df)

df命令用于显示文件系统的磁盘空间使用情况

语法:- df [选项] [文件或目录]
df			// 显示所有文件系统的磁盘空间使用情况。
df -h		// 以人类可读的方式显示磁盘空间大小。
  • -h:以人类可读的方式显示磁盘空间大小。
  • -T:显示文件系统类型。
  • -i:显示inode的使用情况。

(17)挂载文件(mount)

mount命令用于挂载文件系统到指定的挂载点。

语法:mount [选项] [设备] [挂载点]
mount:显示已挂载的文件系统。
mount /dev/sdb1 /mnt:将/dev/sdb1设备挂载到/mnt目录(需要先创建一个目录)
# 在 /etc/fstab 文件中添加以下行实现自动挂载,系统重启的时候,该文件系统都会被加载 
/dev/sdb1 /u01 ext2 defaults 0 2
  • -t <文件系统类型>:指定要挂载的文件系统类型。
  • -o <选项>:指定挂载的选项。

(18)显示系统信息(uname)

语法:uname [选项]
uname		// 显示内核名称。
uname -a		// 显示所有可用的系统信息。
  • -a:显示所有可用的系统信息。
  • -s:显示内核名称。
  • -r:显示内核版本。

(19)查看磁盘速率等(iostat)

iostat 命令是一个用于监视系统磁盘和CPU活动的工具。它提供了关于磁盘输入/输出(I/O)性能和CPU利用率的实时统计信息。

# 查看磁盘速率等信息
iostat [-x][num1][num2]		
  • -x,显示更多信息;num1:数字,刷新间隔;num2:数字,刷新几次

image-20231215201348040

九、磁盘分区管理

(1)磁盘分区基础

磁盘分区就像是把你的硬盘分成若干个独立的部分,每个部分可以独立使用。这有点像把一块大饼干分成几个小块,每个人可以拿一块吃。

image-20231217033123833

在 Linux 中,我们有三种类型的分区:

  1. 主分区(Primary Partition):主分区就像是你的主卧室,你可以在这里放你最重要的东西。一个硬盘最多可以有四个主分区。

  2. 扩展分区(Extended Partition):在一个硬盘上,你最多可以创建四个主分区。但如果你需要更多的分区,可以选择不使用全部的主分区,而是将其中一个主分区位置设定为扩展分区。扩展分区本身并不直接存储数据,而是作为一个容器,可以包含多个逻辑分区。

  3. 逻辑分区(Logical Partition):逻辑分区就是扩展分区里的小房间,你可以在扩展分区里创建很多个逻辑分区。

  • 每个逻辑分区都是独立的,就像硬盘上的主分区一样。你可以在每个逻辑分区上创建文件系统,然后将其挂载到系统的目录树中,就像挂载主分区一样。
  • 虽然逻辑分区是在扩展分区内部,但在使用上,它们和主分区没有太大的区别。
  • 例如,你可以创建三个主分区和一个扩展分区。在这个扩展分区内部,你可以创建多个逻辑分区。这样,你就可以拥有超过四个可以使用的分区。

(2)文件系统

文件系统就像是你房间里的柜子,用来放你的东西。不同的文件系统就像是不同类型的柜子,有的大有的小,有的有抽屉有的没有。 在 Linux 中,我们常用的文件系统有:

  1. ext4:这是 Linux 中最常用的文件系统,它支持大文件和大容量硬盘,还有很多其他的特性。

  2. XFS:这是一个高性能的文件系统,适合用在大容量和高并发的环境中。

  3. Btrfs:这是一个新型的文件系统,它支持很多高级特性,如快照、数据压缩和数据校验等。

(3)磁盘分区命令

在 Linux 中,我们有很多命令可以用来进行磁盘分区。以下是一些常用的命令:

1. fdisk:这是一个用来管理磁盘分区的工具。你可以用 fdisk 来查看你的磁盘信息,创建新的分区,删除已有的分区等。

  • 例如,你可以使用 fdisk -l 来查看你的磁盘和分区信息。这就像是查看你的房子有多少个房间,每个房间有多大。
  • 你也可以使用 fdisk /dev/sda 来对 /dev/sda 这个磁盘进行分区。这就像是在你的房子里添加或删除房间。

2. mkfs:这是一个用来创建文件系统的工具。你可以用 mkfs 来在一个分区上创建一个新的文件系统。

  • 例如,你可以使用 mkfs.ext4 /dev/sda1 来在 /dev/sda1 这个分区上创建一个 ext4 文件系统。这就像是在你的房间里安装一个新的柜子。
  • mkfs 命令会清除分区上的所有数据,并设置新的文件系统的参数,这个过程我们通常称之为格式化,如果一个分区上已经有数据,你应该在运行 mkfs 命令之前备份这些数据,因为格式化操作会删除所有的数据

3. mountumount:这两个命令分别用来挂载和卸载文件系统。挂载文件系统就像是打开柜子的门,你可以看到里面的东西。卸载文件系统就像是关上柜子的门,你看不到里面的东西。

  • 例如,你可以使用 mount /dev/sda1 /mnt 来把 /dev/sda1 这个分区挂载到 /mnt 这个目录。这就像是把柜子的门打开,你可以通过 /mnt 这个目录来访问柜子里的东西。
  • 你也可以使用 umount /mnt 来卸载 /mnt 这个目录。这就像是把柜子的门关上,你不能再通过 /mnt 这个目录来访问柜子里的东西。

(4)挂载的疑问解答

当你在挂载的目录(也称为挂载点)中写入文件时,这些文件实际上被写入了挂载的分区中。如果你卸载(umount)这个分区,文件不会被删除,它们仍然存储在分区中。

  • 当你将一个分区挂载到某个目录后,该目录就成为了访问分区内容的窗口。然而,这个目录本身并不存储任何数据,所有的文件实际上都存储在分区上。当你卸载这个分区时,挂载点(即目录)会恢复到原来的状态,显示挂载之前该目录中的内容。
  • 所以,卸载分区并不会影响分区中的文件,它们会被永久保存在磁盘上,除非你手动删除它们,或者对分区进行格式化操作。

如果一个目录在被用作挂载点之前已经包含了一些数据(例如文件或子目录),那么当你把一个文件系统(例如一个分区)挂载到这个目录后,原有的数据将会被隐藏,也就是说你无法访问到这些数据。此时,当你查看这个目录时,你看到的将是挂载的文件系统中的数据,而不是目录原有的数据。

  • 然而,这并不意味着原有的数据被删除或者丢失了。实际上,这些数据仍然存储在磁盘上,只是被挂载的文件系统覆盖了。当你卸载这个文件系统后,原有的数据将会再次出现,你又可以访问到这些数据了。
  • 所以,一般来说,我们会选择一个空的目录作为挂载点,以避免挂载操作覆盖目录中的数据。如果一个目录已经包含了一些数据,你应该在挂载之前将这些数据移动到其他地方,以防止数据被隐藏。

(5)示例:分区挂载

假设我们有一个新的磁盘 /dev/sdb,我们想在这个磁盘上创建一个新的分区,然后在这个分区上创建一个 ext4 文件系统,最后把这个分区挂载到 /mnt/data 这个目录。以下是具体的步骤:

  1. 查看新磁盘:我们可以使用 fdisk -l 命令来查看新磁盘的信息。

    fdisk -l
    
  2. 创建新分区:我们可以使用 fdisk /dev/sdb 命令来创建一个新的分区。

    fdisk /dev/sdb
    

    fdisk 的交互式命令行界面,我们可以输入 n 来创建一个新的分区,然后按照提示完成分区的创建。

    fdisk 命令创建新分区的详细步骤

    当你输入 fdisk /dev/sdb 并回车后,你会进入 fdisk 的交互式命令行界面。在这个界面,你可以输入不同的命令来进行分区操作。以下是创建新分区的步骤:

    1. 输入 n 并回车,开始创建新的分区。
    2. 系统会询问你要创建的是主分区(primary)还是扩展分区(extended),输入 p 创建主分区,或输入 e 创建扩展分区,然后回车。
    3. 接着,系统会询问你新分区的编号。如果是主分区,编号可以是 1 到 4;如果是扩展分区,编号可以是 1 到 16。输入你选择的编号,然后回车。
    4. 系统会询问新分区的起始扇区,你可以直接回车选择默认的起始扇区。
    5. 然后,系统会询问新分区的结束扇区,你可以直接回车选择默认的结束扇区,或者输入 +size 指定分区大小,例如 +2G 创建一个 2GB 的分区。
    6. 最后,输入 w 并回车,将新的分区表写入磁盘。

    这样,你就在 /dev/sdb 磁盘上创建了一个新的分区。

  3. 创建文件系统 / 格式化:我们可以使用 mkfs.ext4 /dev/sdb1 命令来在新分区上创建一个 ext4 文件系统。

    mkfs.ext4 /dev/sdb1
    
  4. 创建挂载目录:挂载分区之前,需要确保挂载点(也就是你打算挂载到的目录)已经存在

    # 这里的 `-p` 选项会让 `mkdir` 命令创建所有需要的父目录。
    mkdir -p /mnt/data
    
  5. 挂载新分区:我们可以使用 mount /dev/sdb1 /mnt/data 命令来把新分区挂载到 /mnt/data 这个目录。

    mount /dev/sdb1 /mnt/data
    
  6. 设置开机自动挂载:为了确保新分区在每次启动时自动挂载,你需要编辑 /etc/fstab 文件来添加相应的挂载条目。/etc/fstab 文件是在 Linux 系统启动时由系统自动读取的,用于定义磁盘驱动器和分区的挂载和使用情况。

    # 编辑 /etc/fstab 文件	
    sudo vim/etc/fstab
    # 在文件的末尾添加一行,指定分区和挂载点
    /dev/sdb1    /mnt/data    ext4    defaults    0    2
    
    • 这里 /dev/sdb1 是分区名称,/mnt/data 是挂载点,ext4 是文件系统类型,defaults 是挂载选项,0 和 2 是用于磁盘检查的优先级设置。
    • 确保在编辑 /etc/fstab 时非常小心,因为错误的配置可能会影响系统的启动。在修改之前,建议备份原始的 /etc/fstab 文件。
  7. 重启确认是否挂载成功:使用 lsblk -f命令 用来确认分区是否已经成功挂载,以及它们挂载的位置。

  • image-20231217032748643

  • 使用lsblk 命令可以帮助你了解你的系统中的磁盘和分区的布局和状态。

  • image-20231217030141414

十、其他常用命令

(1)软链接和硬链接(ln)

  • 软链接:软链接是一个指向文件或目录的指针,类似于Windows系统中的快捷方式。它可以跨文件系统、跨分区和跨网络进行链接。软链接可以指向文件或目录,并且可以链接到不存在的目标。
  • 硬链接:硬链接是一个指向文件的直接链接,它与原始文件共享相同的inode和数据块。硬链接只能链接到同一文件系统中的文件,并且不能链接到目录。

创建软链接时需要使用-s选项来指定创建软链接.而创建硬链接时,不需要使用任何选项,默认创建的就是硬链接。

# 创建软链接
ln -s 原文件位置 需要建立快捷方式的位置
ln -s /path/to/target /path/to/link
# 创建硬链接
ln 原文件位置 需要链接的文件位置
ln /path/to/target /path/to/link
# 删除链接
rm 需要删除的链接文件 
rm /path/to/link

注意: 对软链接的操作不会影响原始文件或目录,删除软链接不会影响原始文件或目录。对硬链接的操作会影响原始文件,删除硬链接不会影响原始文件,只有当所有硬链接都被删除时,原始文件才会被删除。

(2)安装软件(yum)

yum命令是Linux系统中常用的包管理工具,用于安装、更新、卸载软件包。它是基于RPM包管理系统的,可以自动解决软件包之间的依赖关系。yum命令需要root权限哦,可以su切换到root,或使用sudo提权。

说明:安装插件命令
yum install httpd      //使用yum安装Apache HTTP服务器软件包
yum update httpd       //更新Apache HTTP服务器软件包
yum remove httpd       //卸载/删除Apache HTTP服务器软件包
yum list	       			//列出当前系统中的所有安装包(包括已安装和未安装的)
yum list installed     		//查看已安装的软件包列表
yum search <软件包名称>	 //在rpm仓库中搜寻软件包
yum i nfo docker   		// 查看docker软件包详细信息
yum clean all   	 	 // 清理yum缓存,删除已下载的软件包文件(无论是否安装)

注意,在yum命令中,使用-y选项表示自动回答"yes",即在执行命令时自动确认所有的提示信息,无需手动输入"yes"或"no"来确认操作。

(3)安装软件(rpm)

RPM是一种底层的包管理工具,提供基本的软件包管理功能,需要手动解决依赖关系,并且只能使用本地的RPM软件包文件。而YUM是基于RPM的高级包管理工具,提供自动解决依赖关系、仓库管理等高级功能,对用户更加友好。因此,YUM通常是更常用和推荐的包管理工具。

# 说明:插件安装命令
rpm -i <软件包.rpm>      // 安装RPM软件包
rpm -U <软件包.rpm>     // 升级已安装的RPM软件包
rpm -e <软件包>        // 卸载已安装的RPM软件包
rpm -q <软件包>		// 查询系统中是否安装了指定的RPM软件包
rpm -qa			// 列出系统中所有已安装的RPM软件包
rpm -qf <文件>		// 查询指定文件属于哪个RPM软件包

(4)安装软件(apt)

apt命令是用于在Debian和Ubuntu等基于Debian的Linux发行版上进行软件包管理的命令行工具。它提供了一种简单而强大的方式来搜索、安装、更新和删除软件包。

apt install package1 package2   // 同时安装多个软件包。
apt install package            	 // 安装指定的软件包。
apt update    				// 更新本地软件包列表
apt upgrade     			// 升级所有已安装的软件包到最新版本
apt upgrade package		// 仅升级指定的软件包。
apt search keyword  		// 搜索包含关键字的软件包。
apt show package   		// 显示特定软件包的详细信息。
sudo apt remove package    	// 卸载指定的软件包,但保留其配置文件。
sudo apt purge package    	// 彻底卸载指定的软件包,包括其配置文件。
apt list --installed      		// 列出所有已安装的软件包。
sudo apt-add-repository repository   // 添加软件源。
sudo apt edit-sources     	     // 编辑软件源列表

(5)设置日期/时区(date)

date命令和时区切换需要root权限或sudo权限才能执行。

date -s "01/31/2010 23:59:53"   ///设置系统时间

语法:date、data -s 时间
date 【显示当前时间】
date +%Y 【显示当前年份】
date +%m 【显示当前月份】
date +%d 【显示当前是哪一天】
date “+%Y-%m-%d %H:%M:%S” 【显示年月日时分秒】
data -s “2022-3-20 11:05:06” 【设置系统时间为…】

# 切换系统时区
timedatectl list-timezones   // 列出可用的时区
sudo timedatectl set-timezone "时区"  // 设置系统时区

image-20231212234420005

我们也可以通过ntp程序自动校准系统时间

yum -y install ntp // 安装ntp
systemctl start ntpd   // 启动ntp服务
systemctl enable ntpd  // 设置ntp开机自启

当ntpd启动后会定期的帮助我们联网校准系统的时间,
也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com

(6)显示日历(cal)

cal 【显示本月日历】
cal 2022 【显示 2022 年日历】

(7)从网络上下载文件(wget)

wget命令功能强大,支持多种下载操作和选项。它可以用于从网络上下载文件,支持断点续传、递归下载、限速等功能,是一个非常实用的命令行工具。

image-20231212012215798

(8)文件传输协议(ftp)

FTP 是一种用于在网络上传输文件的标准协议。它允许用户通过网络在客户端和服务器之间传输文件。

ftp IP/hostname    //连接到指定的 FTP 服务器。
mls *.html -       //显示远程主机上文件列表

(9)安全复制协议(scp)

SCP 是一种在网络上安全地复制文件的协议,它使用 SSH(安全外壳协议)进行加密和身份验证。

语法:scp [选项] 源文件 目标文件
# 将本地文件复制到远程服务器
scp local_file.txt user@remote_host:/remote/path/
# 将远程文件复制到本地系统
scp user@remote_host:/remote/path/remote_file.txt local_path/
# 递归复制目录及其内容
scp -r local_directory user@remote_host:/remote/path/ 
  • -P:指定远程服务器的 SSH 端口号。
  • -r:递归地复制目录及其内容。
  • -p:保留文件的原始修改时间和权限。
  • -v:显示详细的调试信息。
  • -C:开启压缩传输,加快传输速度。
  • -i:指定用于身份验证的私钥文件。

###(10)快速清屏

ctrl+l        //清屏,往上翻可以查看历史操作

###(11)远程主机

ssh IP       //远程主机,需要输入用户名和密码
;