Linux命令总结V1.0

努力就好,不问结果,无问西东。

Linux命令总结V1.0

  • 一、文件管理
    • 目录功能
    • 目录介绍
    • 路径分类
    • mkdir --- 创建目录
    • cd --- 切换目录
    • pwd --- 查看当前所在路径信息(绝对路径)
    • ls --- 显示目录中的数据信息
    • tree --- 显示目录树形结构信息
    • touch --- 创建一个空文件
    • echo --- 输出信息到屏幕上
    • cat --- 查看文件内容
    • less/more --- 查看文件内容信息(逐行查看)
    • cp --- 保存文件信息
    • mv --- 移动剪切文件信息/对文件重命名
    • du --- 查看目录中所有数据的容量综合
    • type --- 查看文件类型
    • vim 的使用
  • 二、权限管理
    • 文件权限
    • useradd--- 创建用户信息
    • man --- 获取命令帮助信息
    • chmod --- 修改数据权限
    • chown --- 修改数据属主或属组信息
    • 用户与组管理
      • 用户组
      • 组成员管理
    • 隐藏权限
    • sudo 提权、远程拷贝文件
  • 三、进程管理
    • hostname --- 查看主机名称或设置主机名称(临时)
    • hostnamectl --- 查看详细主机名称信息或设置主机名(永久)
    • top --- 动态查看进程
      • 进程优先级 nice
      • htop ---top 的升级版本
      • iftop ---查看网卡流量信息
    • uptime ---查看当前CPU负载
    • free --- 查看内存使用量
    • ps --- 查看系统进程
    • kill --- 杀进程命令
  • 四、管道重定向
    • 输出重定向 (覆盖,追加)
    • 管道(|)
    • 输出重定向(>)
    • 追加重定向(>>)
    • 输入重定向(<)
    • xargs --- 管道符后面
  • 五、磁盘管理
    • mount --- 实现目录(门)和存储设备文件(存储空间)建立关系 挂载过程
    • fdisk --- 查看磁盘信息与磁盘分区设置
    • lsblk ---列出磁盘和文件系统的信息
    • blkid ---查看磁盘 ID
    • df --- 查看磁盘挂载情况/查看磁盘使用情况
    • timedatectl --- 可以查看/修改系统时间信息和时区信息
    • sed \--- 修改调整文件内容
    • runlevel --- 查看系统当前使用级别
    • init --- 可以切换系统运行级别
    • alias --- 设置别名信息
    • file --- 可以识别文件数据类型
    • which --- 可以识别命令文件所在绝对路径信息
    • lvm 制作
    • lv移除
    • 从lv缩容
  • 六、文件查找
    • grep --- 过滤筛选文件信息命令
    • find --- 可以根据路径范围以及条件信息查找数据
    • tar --- 压缩解压命令
    • stat --- 可以查看文件信息详细属性
    • locate --- 定位查找指定文件路径信息
    • date --- 可以查看或修改时间
    • ln --- 用于创建链接文件
    • history --- 显示历史命令
  • 七、软件包管理
    • wget --- 可以下载网站资源信息
    • yum --- 安装软件命令
    • rpm --- 安装软件程序命令
    • yum 源配置
      • 本地源配置
  • 八、 DNS域名解析
    • ip --- 查看网络信息
    • nmtui --- 进入网卡信息修改界面
    • systemctl --- 管理系统服务程序
    • shutdown --- 关闭或重启系统
  • 九、计划任务与日志管理
    • 定时任务精确到秒
  • 回顾总结
    • 常用管理文件命令总结
    • 帮助相关
    • 关机重启命令
    • 打包压缩
    • 磁盘管理命令
    • 内置命令
    • 系统特殊符号信息
  • -- 在文件中表示注释信息,可以让指定配置功能暂时失效
    • 引号符号区别
    • 常见系统环境变量总结
    • Linux 常用快捷键
    • 系统操作经验总结

一、文件管理

目录功能

bin 普通用户使用的命令 /bin/ls, /bin/date

sbin 管理员使用的命令 /sbin/service

案例:

[root@server~]# which ls
[root@server~]# which useradd
/usr/sbin/useradd
dev 设备文件 /dev/sda,/dev/sda1
[root@server~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Oct 31 14:16 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 31 14:16 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 31 14:16 /dev/sda2

目录介绍

/root               #root用户的家目录
/home               #存储普通用户家目录 
lost+found 这个目录平时是空的,存储系统非正常关机而留下“无家可归”的文件
/usr         		#系统文件,相当于C:\Windows
/usr/local   		#软件安装的目录,相当于C:\Program
/usr/bin  	 		#普通用户使用的应用程序
/usr/sbin 	 		#管理员使用的应用程序
/usr/lib       		#库文件Glibc 32bit
/usr/lib64    		#库文件Glibc 64bit
/boot        		#存放的系统启动相关的文件,例如kernel
/etc         		#配置文件(系统相关如网络/etc/sysconfig/network)
/tmp         		#临时文件(系统:程序产生的临时文件)
/opt		 		#空目录
/media     			#用于挂载u盘,光驱等自动识别的设备
/srv       			#存放服务启动后产生的数据目录
/var  				#存放的是一些变化文件,比如数据库,日志,邮件....
/proc  				#虚拟文件系统,系统程序文件所处目录 。虚拟文件系统:只要关机就会没有。
/mnt   				#系统提供这个目录是让用户临时挂载其他的文件系统

路径分类

  1. 绝对路径

绝对路径是从文件系统的根目录开始指定的完整路径。例如,在Unix/Linux系统中,如果要指定一个文件的绝对路径,需要使用“/”作为根目录的前缀。

示例:

/home/haoze/test.txt
  1. 相对路径

相对路径是相对于当前工作目录而言的路径。在Linux/Unix系统中,使用绝对路径和相对路径来指定文件或目录的位置。相对路径是通过文件或目录在当前工作目录中的位置来确定的。

示例: 当前工作目录为/home/haoze,相对路径可以使用./表示当前目录下的文件,或者使用…/表示当前目录的父目录中的文件。例如,如果要在./test.txt中编辑文件,可以使用./test.txt命令。如果要在…/test.txt中编辑文件,可以使用…/test.txt命令。

另外,相对路径也可以使用相对路径来确定文件或目录的位置。例如,如果要指定一个文件在当前工作目录中的子目录中的路径,可以使用./test.txt来指定,也可以使用…/subdir/test.txt来指定。

示例: 在当前工作目录下,使用./subdir/test.txt来指定test.txt文件的位置。 或者在当前工作目录下,使用…/subdir/test.txt来指定test.txt文件的位置。

mkdir — 创建目录

语法:mkdir -v 详细 -p 递归 目录

# mkdir dir1
创建两个目录:
# mkdir /home/dir2 /home/dir3
# mkdir /home/{dir4,dir5} 
# mkdir -v /home/{dir6,dir7}   #-v :verbose 冗长的。显示创建时的详细信息
# mkdir -p /home/dir8/111/222  #-p 创建连级目录,一级一级的创建
mkdir -p              --- 创建多级目录
mkdir {..}/{,}        --- 批量创建多个

rmdir 目录名

[root@server ~]# rmdir 2023-07-21   #删除目录2023-07-21

cd — 切换目录

cd /xxx   ---绝对路径方式切换目录  推荐
cd xxx    ---相对路径方式切换目录    
cd ../    ---返回上一级目录
cd -      ---返回上一次所在目录
cd ~ /cd  ---返回家目录

pwd — 查看当前所在路径信息(绝对路径)

[root@server ~]# pwd
/root

ls — 显示目录中的数据信息

ls  -l    ---长格式显示(显示文件的详细信息)
ls -ld    ---查看目录详细属性信息
ls -lrt   ---按照时间排序显示数据信息
ls -lrS   ---按照大小排序显示数据信息
ls -lh    ---以人类可读方式显示文件大小信息(eg: 1k 20M 5G)
ls -a     ---查看隐藏文件信息
ls -i     ---显示文件数据inode信息
ls               ---查看当前目录下的文件
ls   /root/a.txt ---单独列出文件
ls   /home       ---查看指定目录下的文件
#文件类型\权限    硬链接个数   所有者 所属组   大小    修改时间   名字 
[[email protected] ~]# ll -d /home/  #显示目录的详细信息
# ls -lh    #-h 人性化显示 (显示文件大小)
# ls -a     #all 显示所有文件 (包括隐藏文件)

案例:ls a.txt b.txt c.txt

# ls file*        #以file开头的所有文件    *通配符。表示所有字符(隐藏文件除外)
# ls *.txt         #以任意开头以.txt结尾的所有文件
[root@server ~]# ll -d /home/  #查看目录详细信息
[root@server  ~]# ll /home/ #查看目录下面文件的详细信息
[root@server  ~]# ll -t  #按最新的修改时间排序
[root@server  ~]# clear #清屏,快捷键----ctrl+l
================================= 
#隐藏文件:文件名称前面加“.”
问题:想一想ll 与 ls -l 是什么关系?

tree — 显示目录树形结构信息

-L        ---显示指定层级的目录结构信息
-d        ---只显示目录结构信息(不显示文件信息)

案例:

[root@server /]# tree -L 1
.
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── prow
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

20 directories, 1 file
[root@server /]# 

touch — 创建一个空文件

touch命令是Linux中常用的文件创建命令之一,它用于创建空文件或修改文件的访问时间和修改时间。使用touch命令时,只需要在终端中输入touch [文件名],然后按回车键即可创建空文件或修改文件的访问时间和修改时间。

以下是touch命令的常用语法:

touch [选项] [文件名]

其中,选项是可选的,文件名是要创建或修改的文件名。常用的选项有:

  • t:创建空文件。

  • r:只修改文件的访问时间。

  • w:创建文件并修改其访问时间和修改时间。

  • A:创建文件并修改其访问时间。

  • c:修改文件的修改时间。

例如,要创建一个名为zhanghaoze.txt的文件,可以在终端中输入以下命令:

[root@server ~]# touch  zhanghaoze.txt

如果要修改example.txt文件的访问时间,可以输入以下命令:

touch -r example.txt

如果要修改example.txt文件的修改时间,可以输入以下命令:

touch -c example.txt

需要注意的是,touch命令创建或修改文件时,会在文件名前加上文件创建或修改的时间戳,这些时间戳通常由当前系统时间时决定。如果不想显示文件创建或修改时间戳,可以在命令后面加上参数–no-pager,例如:

touch --no-pager [文件名]

echo — 输出信息到屏幕上

echo xxx > 文件       --- 重定向覆盖文件内容
echo xxx >> 文件      --- 追加重定向追加文件内容

cat — 查看文件内容

cat 文件信息  --- 将文件所有内容显示在屏幕上
cat -n       ---显示文件内容行号
cat -A       ---可以显示文件每行结尾空格信息
cat >> 文件信息 << EOF    --- 编辑文件多行信息
XXX
XXX 
XXX 
EOF    

案例:

[root@server ~]# cat >> test.txt < hello world!!!
> by zhanghaoze
> EOF
[root@server ~]# cat test.txt 
hello world!!!
by zhanghaoze

less/more — 查看文件内容信息(逐行查看)

less     ---分页显示文件内容
#1.空格键是翻页  回车键是翻行
#2.上下箭头可以来回翻
#3. /关键字     #搜索 (n按关键字往下翻   N按关键字往上翻)
#4.快捷键:q -quit 退出
more     ---分页显示文件内容
#空格键是向下翻页  回车键是翻行
#Ctrl+B 向上翻页
head      ---查看文件前几行内容,默认查看前10行
[root@server~]# head /etc/passwd     #默查看前十行
[root@server~]# head -2 /etc/passwd  #默认查看前两行
tail      ---查看文件后几行内容
[root@server~]# tail /etc/passwd         #默认查看文件的后十行
[root@server~]# tail -1 /etc/passwd      #查看文件最后一行
[root@server~]# tail /var/log/messages
[root@server~]# tail -f /var/log/secure  #-f 实时追踪动态查看文件的尾部
[root@server~]# tailf /var/log/secure    #功能同上

cp — 保存文件信息

语法: cp -r 源文件1 源文件2 源文件N 目标目录 #将多个文件拷贝到同一个目录

# mkdir /home/dir{1,2}  #创建目录
# cp -v anaconda-ks.cfg /home/dir1/  #-v 显示详细信息
# cp anaconda-ks.cfg /home/dir1/test.txt  #复制并改文件名
# cp -r /etc /home/dir1      #-r 拷贝目录使用,连同目录里面的文件一块拷贝
# cp -r /etc /tmp

mv — 移动剪切文件信息/对文件重命名

1\.创建一个新文件file1
[root@server~]# touch /root/file1
2\.把file1文件移动到/tmp目录中。
[root@server~]# mv /root/file1 /tmp/
[root@server~]# ls /tmp/file1 
3\.把file1文件更名为file2
[root@server~]# mv /tmp/file1 /tmp/file2
4\.观察file1文件已经更名为file2
[root@server~]# cd /tmp/
[root@servertmp]# ls
file2

rm删除文件或目录数据信息

语法:rm -r 递归删除目录 -f force强制 -v 详细过程 \*通配符

rm -f     ---强制删除文件数据信息
rm -rf    ---强制删除目录数据信息
rm -r ---递归,删除目录时
rm -f ---force强制
rm -v ---详细过程
rm --no-preserve-root --- 删除根目录信息

du — 查看目录中所有数据的容量综合

语法:du -sh —汇总查看目录大小(以人类可读方式)

[root@server ~]# du -sh /home/
8.1M	/home/

type — 查看文件类型

在Linux系统中,"type"命令可以用来查看文件的类型。该命令将文件的类型作为结果返回,可以使用以下语法:

type [<文件名>]

其中,"<文件名>"是要检查类型的文件名。

如果想要检查文件是普通文件还是目录,可以使用以下语法:

type [<文件名>] | grep -i "文件类型"

其中,"grep"命令用来过滤掉目录的结果。

[root@server ~]# type ls
ls is aliased to `ls --color=auto'

vim 的使用

Vim是一款非常流行的文本编辑器,它具有高效的文本编辑功能和强大的扩展性,可以在Linux、macOS和Windows等操作系统上运行。以下是一些关于Vim的详解:

  1. 基本命令

Vim具有许多基本命令,可以通过按下快捷键来完成常见的文本编辑任务。以下是一些基本命令:

i		#在光标所在处进入插入模式
a		#在当前光标后面进入编辑模式
o		#在光标的下一行进入编辑模式
I		#在光标所在处行首进入编辑模式
A		#在光标所在处行尾进入编辑模式
O		#在光标的上一行进入编辑模式
o!      #在当前行下面不重新编辑行
og      #在当前行下面创建一个新的代码块
o       #回到插入模式
x       #删除当前光标位置的字符
dd      #删除当前行
Yy      #复制当前行
p       #粘贴当前行
gq      #将光标移动到第一个不匹配的单词的结尾处
q       #退出编辑器

文本编辑常用

 yy      #复制 
 3yy     #从光标开始复制3行。在最后粘贴
 ygg     #从当前光标复制到页首
 yG      #从光标开始复制到页尾
 dd      #删除一行
 3dd     #从光标开始删除3行
 dgg     #从光标开始删除到页首 
 dG      #从光标开始删除到页尾
 d^      #删除当前光标之前的内容
 p       #粘贴到本行的下一行
 P       #粘贴到本行的上一行
 x       #删除光标所在的字符
 D       #从光标处删除到行尾
 u       #undo撤销
 r       #可以用来修改一个字符

扩展命令(尾行)模式:

:::
shift+: #进入尾行模式(扩展命令模式)

:10 #进入第10行

:w #保存

:q #退出

:wq #保存并退出

:q! #不保存并退出

:wq! #强制保存退出
:::

进入其他模式

ctrl+v     #进入可视块模式
shift+v    #进入可视行模式

查找替换

语法----> :范围 s/old/new/选项 

:s/world/nice/         #替换当前光标所在行

:3s/sbin/nice/         #替换指定行

:1,5 s/nologin/soso/   #从1-5行的nologin 替换为soso

:%s/bin/soso/          #替换所有行

:%s/sbin/nice/g        #替换行内所有关键字

注释:%表示替换所有行  g表示行内所有关键字

将文件另存(另存为)

:::
语法----> :w 存储到当前文件

:w /tmp/aaa.txt #另存为/tmp/aaa.txt

:1,3 w /tmp/2.txt #从1-3行的内容另存为/tmp/2.txt
:::

设置环境 :

:set nu    #设置行号 
:set list  #显示控制字符
:set nonu  #取消设置行号 

文件基本信息

时间类型

访问时间:atime,查看内容 
修改时间:mtime,修改内容
改变时间:ctime,文件属性,比如权限,mv改名

二、权限管理

文件权限

:::

  • 普通文件(文本文件,二进制文件,压缩文件,图片…)

d 目录文件(蓝色)

b 设备文件 block device 设备文件,如硬盘,U盘;

c 设备文件 字符设备文件,比如我们的终端tty1,打印机。

l symbolic link 即符号链接文件,又称软链接文件 (浅蓝色)

s socket 即套接字文件,用于实现两个进程进行通信

p 管道文件
:::

useradd— 创建用户信息

使用useradd命令可以创建新的用户。useradd命令有很多参数可以用来创建不同类型的用户,下面是一些常用的参数:

-m:在创建用户时自动创建一个家目录。
-s:指定用户的shell,例如/bin/bash、/bin/sh等。
-c:指定用户的描述信息。
-u:指定用户的UID(用户ID),可以是一个范围内的数字或一个数字加一个字母的组合,例如1001、u1001、1000u等。
-g:指定用户的组ID,可以是一个或多个组ID的组合,用空格分隔。
-G:指定用户所属的组ID,可以是一个或多个组ID的组合,用空格分隔。
-o:指定用户所属的特殊用户组ID,例如operator、writer等。
-D:在创建用户时不自动创建一个家目录。
-R:递归创建子目录。
-s:同-s参数。
-p:指定用户的密码,如果没有密码则不会显示输入密码的提示。
-r:递归创建用户的主目录。
-T:同-D参数,创建一个只读的家目录。
除了上述参数,还有一些常用的选项可以用来创建用户,例如:
-d:创建用户时自动创建一个默认的家目录。
-m:同-m参数,但是在创建用户时会自动创建一个家目录。
-s:同-s参数。
-o:同-o参数。
-u:同-u参数。
-g:同-g参数。
-G:同-G参数。
#需要注意的是,在使用useradd命令创建用户时,必须要具有超级用户权限,否则将会失败。

以下是关于用户信息修改、用户组创建和删除、密码设置、用户身份验证的常用命令。

修改用户信息:usermod
删除用户信息:userdel -r
彻底删除用户信息:userdel -r
创建用户组信息:groupadd
删除用户组信息:groupdel
设置用户密码:passwd
设置免交互的用户密码:passwd --stdin
查看用户uid、gid和所属组信息:id
查看当前登录系统用户信息:w
进行用户之间的切换:su

man — 获取命令帮助信息

 help      ---获取内置命令帮助信息

chmod — 修改数据权限

chmod u/g/o/a +/-/=
chmod xxx
chmod -R  ---对目录本身以及目录下面的数据进行递归修改

chown — 修改数据属主或属组信息

chown xxx             --- 单独修改属主
chown .xxx            --- 单独修改属组
chown xxx.xxx         --- 同时修改属主和属组
chown -R oldboy.oldboy /oldboy   --- root

用户与组管理

Linux的一大特性:

> 多用户、多任务。

> 所谓多用户多任务就是指可以在同一时间,有多个用户登录同一个系统执行不同的任务而互不影响。

> 假设现在有三个用户:root、lbb、mvv,三个用户同一时间登录了同一个系统,root去修改配置文件了,lbb去创建目录了,mvv去访问数据库了,每个用户互不干扰的独立执行自己的任务,并且每个用户不能够越线去访问其他用户正在操作的目录或执行其他用户下的任务,由此可见,不同的用户是拥有各自不同的权限的,Linux通过权限的划分和管理来实现多用户、多任务的运行机制。

Linux中的用户及其角色划分

账户为分三类:

超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0

系统用户 :别称“伪用户”,无法登录系统,其主要作用是支撑系统运行,方便系统管理。uid号码小于1000.

普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统。uid 大于1000,登陆shell是bin/bash。

任何一个账户在创建的同时都会在系统里面创建一个同名的组。

用户组

[root@server~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell

用户操作

Linux是一个开源的操作系统,组成员管理是Linux管理中的重要部分。下面是Linux组成员管理命令的详解:

  1. 列出所有用户

使用以下命令可以列出所有用户:

compgen -u
  1. 列出当前登录用户

使用以下命令可以列出当前登录用户:

whoami
[root@server ~]# whoami 
root
  1. 创建新用户

使用以下命令可以创建新用户:

adduser <用户名>
  1. 添加密码

使用以下命令可以为新用户添加密码:

passwd <用户名>
  1. 编辑用户密码

使用以下命令可以编辑用户密码:

passwd <用户名>
  1. 更改用户密码的到期时间

使用以下命令可以更改用户密码的到期时间:

passwd -e <用户名>
  1. 删除用户

使用以下命令可以删除用户:

userdel <用户名>
  1. 检查用户是否存在

使用以下命令可以检查用户是否存在:

id -u <用户名>
[root@server ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@server ~]# 
  1. 列出当前用户组

使用以下命令可以列出当前用户所属的用户组:

groups
  1. 加入用户组

使用以下命令可以将当前用户加入指定用户组:

adduser <用户名> <用户组>
  1. 从用户组中删除用户

使用以下命令可以从指定用户组中删除当前用户:

deluser <用户名> <用户组>
  1. 修改 UID
[root@server ~]# useradd zhz
[root@server ~]# id zhz
uid=1001(zhz) gid=1001(zhz) groups=1001(zhz)
[root@server ~]# usermod  -u 1008 zhz
[root@server ~]# id zhz
uid=1008(zhz) gid=1001(zhz) groups=1001(zhz)
  1. 修改用户的登录 shell
[root@server ~]# usermod  -s /sbin/nologin zhz
[root@server ~]# tail -1 /etc/passwd
zhz:x:1008:1001::/home/zhz:/sbin/nologin
[root@server ~]# 
  1. 添加用户到附属组
[root@server ~]# usermod -aG  haoze zhz
[root@server ~]# id zhz
uid=1008(zhz) gid=1001(zhz) groups=1001(zhz),1000(haoze)
[root@server ~]# 

组成员管理

Linux组成员管理命令是用于管理Linux系统中用户组的命令。在Linux中,用户组是一组用户的集合,它们共享相同的权限和特性。

Linux组成员管理命令的详细说明:

  1. usermod:用于添加、修改和删除用户组。可以使用以下命令行选项:
  • g:指定要添加用户到的组。

  • u:指定要将用户添加到的用户ID。

  • a:指定要添加的所有用户。

  • d:指定要将用户从的组。

  • u:指定要将用户从的用户ID。

  • r:指定要将用户从的组的删除。

  • groupadd:用于添加新用户组。

  • groupmod:用于修改用户组信息。

  • groupdel:用于删除用户组。

  • userinfo:用于显示指定用户的详细信息,包括用户组。

  • id:用于显示当前用户的用户组信息。

练习:

1、创建用户的同时设置家目录
[root@web02 ~]# useradd user11 -d /opt/user11

2、创建用户时,不创建家目录
[root@web02 ~]# useradd -M user112

3、锁定用户
[root@web02 ~]# usermod -L user113

4、解锁用户
[root@web02 ~]# usermod -U user113

5、用户附加组中
usermod -aG 组名 用户名
[root@web02 ~]# usermod -aG yunze user1113

6、用户添加多个附加组
[root@web02 ~]# usermod -aG yunze,usera01,user112 user1113

7、给用户添加密码
[root@web02 ~]# echo "123456" |passwd --stdin user01

隐藏权限

  • chattr #设置隐藏权限

  • lsattr #查看隐藏权限

    [root@web02 ~]# touch file.txt
    [root@web02 ~]# chattr +a file.txt
    [root@web02 ~]# lsattr file.txt
    -----a---------- file.txt
    #a 权限:无法删除、移动、修改、只能追加内容,不能修改内容
    #i 权限:无法删除、移动、修改内容

sudo 提权、远程拷贝文件

sudo 用户

sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令。

远程拷贝文件

从本地拷贝文件到远程服务器
将当前目录下file1文件拷贝到服务器ip为'192.168.31.99'的root目录下
[root@server-1 ~]# scp file1 192.168.31.99:/root/
从远程服务器'192.168.31.99'拷贝/etc/passwd文件到当前目录
[root@server-1 ~]# scp 192.168.31.99:/etc/passwd ./
将/opt/dir1目录拷贝到服务器ip为'192.168.31.99'的/opt/目录下
[root@server-1 ~]# scp -r /opt/dir1 192.168.31.99:/opt/
将远程服务器'192.168.31.99'内的/opt/dir1目录拷贝到本服务器的/opt/目录下
[root@server-1 ~]# scp -r 192.168.31.99:/opt/dir1 /opt

*sz -y --- 从Linux下载指定数据
rz -y ---从windows上传指定数据

三、进程管理

hostname — 查看主机名称或设置主机名称(临时)

[root@server ~]# hostname
server

hostnamectl — 查看详细主机名称信息或设置主机名(永久)

hostnamectl set-hostname 主机名称

案例:

[root@server ~]# hostnamectl
   Static hostname: server
         Icon name: computer-vm
           Chassis: vm
        Machine ID: c2fb611d5db644399a3c775ab1c26abb
           Boot ID: 4d86403f3993431d82236d8248798c4b
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.92.1.el7.x86_64
      Architecture: x86-64

top — 动态查看进程

root@linux-server ~]# top
h|? 帮助
> 往下翻页
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出   
z 彩色显示
W 保存
=====================================================================================
PR   优先级
VIRT 进程使用的虚拟内存总量,单位kb。
RES  进程使用的、未被换出的物理内存大小,单位kb。
SHR  共享内存大小,单位kb
=====================================================================================
[root@server ~]# top
top - 15:26:17 up 49 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 249 total,   1 running, 248 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2027680 total,  1551848 free,   275104 used,   200728 buff/cache
KiB Swap:  2097148 total,  1883356 free,   213792 used.  1575484 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                               
   767 root      20   0  221648   1468   1092 S   0.3  0.1   0:04.49 vmtoolsd   
=====================================================================================
ni: nice值
id: cpu空闲率
wa: cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了

进程优先级 nice

nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。

nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。

htop —top 的升级版本

  1. 安装htop

在Linux中,可以通过终端命令行使用htop,但是在使用前需要先安装htop。通常可以使用包管理器(如apt-get或yum)来安装htop,具体命令可以根据您使用的Linux发行版而有所不同。

  1. 启动htop

在Linux终端中输入htop命令,然后按下Enter键即可启动htop。

  1. 使用htop

htop是一个交互式的终端监视器,可以显示当前正在运行的进程和系统资源使用情况。以下是一些htop的常用功能:

  • 按F1键可以查看htop的帮助文档,其中包括一些常用的快捷键。

  • 按F6键可以在列表中切换到CPU占用情况列,其他列则包括内存、磁盘、网络等使用情况。

  • 按下Shift+F6键可以在列表中切换到详细模式,可以查看每个进程的详细信息,包括CPU使用情况、内存使用情况、进程ID等。

  • 可以使用快捷键(例如Ctrl+P和Ctrl+N)来逐行滚动查看当前正在运行的进程。

  • 可以使用“!”命令来执行其他操作,例如“!top”可以切换到另一个监视器(top),或者“!pkill”可以强制终止指定进程。

Linux命令总结V1.0_第1张图片

iftop —查看网卡流量信息

Linux命令总结V1.0_第2张图片

uptime —查看当前CPU负载

在Linux系统中,可以使用uptime命令来查看系统的运行时间、已经经过的时间和系统启动的时间等信息。该命令可以输出以下内容:

[root@server ~]# uptime
 19:23:20 up 14:39,  4 users,  load average: 0.00, 0.01, 0.05
[root@server ~]# 

这里的输出信息包括:

  • Current uptime:当前系统运行时间。

  • up:系统运行时间中已经经过的时间。

  • days:系统运行时间中已经经过的天数。

  • seconds:系统运行时间中已经经过的秒数。

  • user:使用系统的用户数量。

  • load average:系统平均负载。

可以通过在终端窗口中输入uptime命令来查看这些信息。

free — 查看内存使用量

[root@server ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         499         111          12        1369        1284
Swap:          2047           0        2047 
[root@server ~]# swapon -s  #查看交换分区信息
Filename				Type		Size	Used	Priority 
/dev/dm-1                              	partition	2097148	0	-2

ps — 查看系统进程

在Linux下,ps命令用于显示进程列表。该命令的基本语法如下:

ps [options]
-aux

其中,options是可选的参数,用于指定ps命令的行为。常用的选项包括:

  • \-ef:显示所有进程,包括非管理员进程。

  • \-u username:以指定用户身份显示进程。

  • \-n:仅显示指定数量的进程。

  • \-o:以特定的选项显示进程信息。常用的选项包括:pid(进程ID)、%CPU(CPU使用率)、%MEM(内存使用率)、VSZ(虚拟内存大小)、RSS(实际占用的内存大小)、TTY(终端名称)、STAT(进程状态)、STIME(启动时间)、TTY(终端名称)、TIME(启动时间)等。

以下是一些常用的ps命令选项示例:

[root@server ~]# ps -ef | grep nginx
root     108988  99180  0 11:44 pts/0    00:00:00 grep --color=auto nginx

这将显示所有包含nginx关键字的进程列表,包括管理员进程。

[root@server ~]# ps -u root  | head
   PID TTY          TIME CMD
     1 ?        00:00:22 systemd
     2 ?        00:00:00 kthreadd
     4 ?        00:00:00 kworker/0:0H
     6 ?        00:00:00 ksoftirqd/0
     7 ?        00:00:00 migration/0
     8 ?        00:00:00 rcu_bh
     9 ?        00:00:12 rcu_sched
    10 ?        00:00:00 lru-add-drain
    11 ?        00:00:00 watchdog/0

kill — 杀进程命令

Linuxkill命令是一种强制结束正在运行的进程的命令,通常用于结束无响应的进程或阻止不可用的进程。该命令需要root权限才能使用。

使用Linuxkill命令时,需要提供要终止的进程的ID(PID)。以下是使用Linuxkill命令的基本语法:

kill [选项] [PID] [进程编号]

选项包括:

  • -1:终止最后一个进程。

  • -u:指定要终止的进程所属的用户。

  • -s:指定终止进程的方式,可以是signal或term。signal指定终止进程时要发送的信号,term指定终止进程时使用的信号,比如SIGKILL(通常使用-9)或SIGTERM。

  • -9:强制杀死某个进程(尽量不要用 慎用)

下面是一个示例,展示如何使用Linuxkill命令来终止一个进程:

# 查看所有正在运行的进程
ps aux

# 终止进程ID为123的进程
kill -9 123

# 终止所有非root用户的进程
kill -9

# 终止所有非root用户的进程并指定用户
kill -9 -u "user1 user2"

需要注意的是,Linuxkill命令是一种强制结束进程的方式,一旦终止进程,进程的数据将会被清除。如果您不确定要终止的进程是否需要终止,请先确认一下。

拓展: pkill

在Linux系统中,pkill是一个命令行工具,用于终止进程。它的作用类似于Windows系统中的taskkill,但有一些重要的区别。

pkill命令使用类似于taskkill的语法,但是有几个不同之处:

  1. 不需要进程名:与taskkill不同,pkill可以使用进程ID(PID)而不是进程名称来终止进程。

  2. 可以终止整个进程组:pkill可以同时终止指定的多个进程,而taskkill只能一次终止一个进程。

  3. 支持通配符:pkill支持通配符,可以匹配多个进程。

  4. 可以使用别名:可以使用别名来快速执行pkill命令,如使用ps命令的别名p。

下面是使用pkill命令的示例:

  1. 查找进程ID:使用ps命令查找要终止的进程的ID。

    ps aux | grep <进程名称>

  2. 终止进程:使用pkill命令终止指定的进程。

    pkill <进程名称>

  3. 终止进程组:使用pkill命令终止指定的进程组。

    pkill -p <进程组ID>

请注意,在使用pkill命令终止进程时,请确保你有足够的权限。否则,可能会导致系统崩溃或数据丢失。

四、管道重定向

0,标准输入(键盘)
1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件。  
&:表示正确错误混合输出

输出重定向 (覆盖,追加)

>   ----覆盖
>>  ----追加
正确输出: 1> 1>> 等价于 > >>
错误输出: 2> 2>>

管道(|)

管道是Linux系统中的一种命令行工具,它将一个命令的输出作为另一个命令的输入,从而实现命令之间的信息传递。使用管道符号(|)可以将一个命令的输出传递给另一个命令。例如,在命令行中输入:

[root@server ~]# ls -l | grep ".txt"
-rw-r--r--  1 root root   37 Jul 21 10:15 123.txt
-rw-r--r--  1 root root    0 Jul 22 09:01 a.txt
-rw-r--r--  1 root root   44 Jul 18 19:14 c.txt
-rw-r--r--  1 root root    0 Jul 18 09:57 date.txt
-rw-r--r--  1 root root   50 Jul 18 09:51 error.txt
-rw-r--r--  1 root root   29 Jul 21 19:52 test.txt
-rw-r--r--  1 root root    0 Jul 21 20:08 zhanghaoze.txt

这个命令将列出当前目录中的所有文件,并使用grep命令过滤出包含“file”关键字的文件。这里的“|”符号将把“ls -l”命令的输出作为“grep”命令的输入。管道符号也可以使用两个命令的输出,如下所示:

ls | head | grep "file"

这个命令将先列出当前目录中的所有文件,然后使用head命令过滤出前几行(这里使用了head命令的输出),并使用grep命令过滤出包含“file”关键字的文件。

需要注意的是,管道符号不能连接同一级别的命令,只能连接下一级别的命令。此外,如果第一个命令的输出为空,那么后面的命令将不会被执行。

输出重定向(>)

将命令的标准输出保存到文件中,如果文件已存在则会覆盖文件内容。

追加重定向(>>)

将命令的标准输出追加到文件中,如果文件不存在则会创建文件。

输入重定向(<)

将文件内容作为命令的输入。

xargs — 管道符后面

xargs是一个在Linux中常用的命令行工具,用于将输入文件中的行传递给命令作为参数。

将管道前面输出内容转换为参数信息 交给后面命令识别处理 --- 将信息数据分组处理
xargs -nx   --- 将指定信息划分多少个组

xargs的使用非常简单,以下是一些常见的使用方法:

  1. 使用通配符过滤输入文件中的行:

    cat input_file*.txt | xargs -I {} echo {}

这个命令将输出input\_file\*.txt文件中的所有行,并将它们作为命令行参数传递给echo命令。在这个例子中,\-I {}选项指定了使用{}来代表命令行参数。

  1. 使用空格分隔命令行参数:

    cat input_file*.txt | xargs echo

这个命令将输出input\_file\*.txt文件中的所有行,并将它们作为命令行参数传递给echo命令。在这个例子中,echo命令会直接输出参数。

  1. 使用空格分隔并重命名命令行参数:

    cat input_file*.txt | xargs mv {new_file_name}

这个命令将输出input\_file\*.txt文件中的所有行,并将它们作为命令行参数传递给mv命令。在这个例子中,mv命令会将每个参数重命名为new\_file\_name

  1. 使用管道过滤和传递命令行参数:

    grep ‘^abc’ input_file*.txt | xargs -I {} echo {} | cut -d ’ ’ -f 1-2

这个命令将输出input\_file\*.txt文件中以abc开头的行,并将它们作为命令行参数传递给echo命令。在这个例子中,\-I {}选项指定了使用{}来代表命令行参数,echo {}将参数重命名为文件名,cut -d ' ' -f 1-2用于提取文件名和行号。

以上仅是xargs的一些常见使用方法,还有很多其他用法。需要注意的是,xargs命令默认不会忽略空行,因此需要使用选项来指定行结束符,例如:

xargs -s input_file*.txt

这个命令将忽略所有空行。

五、磁盘管理

MBR(Master Boot Record)是计算机操作系统启动的第一个区域,其中包含引导代码和主引导记录(MBR Partition Table)。在MBR模式下,计算机可以支持最多4个主分区。在此模式下,用户可以使用fdisk命令进行分区。

GPT(Guaranteed Extensible Partition Table)是一种替代MBR的新型分区表格。GPT模式下,计算机可以支持大于2TB的主分区。在此模式下,用户可以使用gdisk命令进行分区。GPT具有更好的可扩展性和更高的安全性,可以避免MBR模式下的主分区限制和数据丢失的风险。

mount — 实现目录(门)和存储设备文件(存储空间)建立关系 挂载过程

mount命令是Linux系统中常用的命令之一,用于挂载和卸载文件系统。其语法如下:

mount [选项] [文件系统] [挂载点]
-o         指定文件系统属性
rw           读写 
ro           只读 
noexec       不允许执行二进制文件
exec       允许执行二进制文件 
auto       mount -a 开机自动挂载 
remount       在线重新挂载 
#mount 设备文件  挂载点目录(空目录)
#umount --- 实现目录与存储设备文件解除关系 卸载过程     
#umount 挂载点目录  

其中,选项是可选的参数,用于指定挂载方式、权限等;文件系统是要挂载的文件系统类型;挂载点是挂载的目录。

以下是mount命令的详细使用说明:

  1. 挂载文件系统
  • 使用选项参数来指定挂载方式,如使用"-o"选项指定挂载方式,例如"-o loop"表示使用块设备进行挂载;“-o"和”-o"等价。

  • 挂载指定的文件系统,例如挂载NTFS文件系统:

    mount -t ntfs /dev/sda1 /mnt/windows

上述命令将使用sda1文件系统挂载到/mnt/windows目录。

  1. 卸载文件系统
  • 使用"-u"选项来卸载文件系统,例如卸载Windows NTFS文件系统:上述命令将卸载Windows NTFS文件系统。

除了以上的常规用法,mount命令还可以用于管理不同类型的挂载点,例如使用挂载点作为文件系统类型的名称:

mount /mnt/share -t nfs server:/share /mnt/mountpoint

以上命令将在/mnt/mountpoint目录下挂载来自server的nfs文件系统。

fdisk — 查看磁盘信息与磁盘分区设置

fdisk 是一个命令行工具,用于管理 Linux 或 Unix 操作系统下的磁盘分区。下面是 fdisk 的一些常用参数和含义:

  1. fdisk /dev/sdx: 使用 /dev/sdx 来代替磁盘的设备名称。/dev/sdx 通常是 /dev/sda/dev/sdb 等设备名称。

  2. /dev/sdx:w: 清空分区表。在此命令下,/dev/sdx 将清空其分区表,将其分区设置为一个全新的分区表。

  3. /dev/sdx:w: 创建分区表。在此命令下,/dev/sdx 将创建一个新的分区表,可以为该分区添加新的分区。

  4. /dev/sdx:a: 将设备添加到 fdisk 配置文件中。在此命令下,/dev/sdx 将添加到 fdisk 的配置文件中,以便在需要时可以方便地重复使用该设备。

  5. /dev/sdx:q: 退出 fdisk。在此命令下,fdisk 将退出并关闭终端。

  6. /dev/sdx:t: 创建新分区。在此命令下,/dev/sdx 将创建一个新的分区,其大小和分区类型将由用户指定。

  7. /dev/sdx:p: 显示分区列表。在此命令下,/dev/sdx 将显示该设备的所有分区信息。

  8. /dev/sdx:d: 删除分区。在此命令下,/dev/sdx 将删除指定的分区。

注意:使用 fdisk 操作磁盘分区需要小心谨慎,以免误操作导致数据丢失。建议在进行任何更改之前先备份重要数据。

[root@server ~]# fdisk -l /dev/sda #查看系统磁盘与磁盘分区情况

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008f912

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM
#fdisk 不支持大于 2T 的磁盘,gdisk 支持大于2T磁盘

lsblk —列出磁盘和文件系统的信息

语法:lsblk [OPTIONS]

参数:
● f 显示分区和文件系统的信息。
● v 显示详细信息。
● c 以逗号分隔显示信息。
● r 按文件系统类型显示。
● s 仅显示大小和名称。
● n 显示设备名称和挂载点。
● M 显示磁盘信息和块大小。
● k 显示设备号和设备类型。
常见选项:
● c:以逗号分隔显示信息。
● f:显示分区和文件系统的信息。
● v:显示详细信息。
● s:仅显示大小和名称。
● n:显示设备名称和挂载点。
● k:显示设备号和设备类型。
● M:显示磁盘信息和块大小。

注意:lsblk命令仅适用于基于Linux的系统。

示例:

[root@server ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.4G  0 rom  /media/CentOS

显示当前系统上的所有磁盘和分区。

[root@server ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         92aeb542-b7a2-43ef-9e7e-bb1ea51b6c6a   /boot
└─sda2          LVM2_member                 8faBFb-KJVx-BJ3c-cfyt-SFQd-TyJh-oCbiJL 
  ├─centos-root xfs                         bde1a3ef-2acb-48fd-ac4e-0278d5c5e64d   /
  └─centos-swap swap                        95fcccb5-5f5c-4064-8197-a559c8625e4c   [SWAP]
sr0             iso9660     CentOS 7 x86_64 2020-11-04-11-36-43-00                 /media/CentOS
[root@server ~]# 

显示分区和文件系统的信息。

lsblk -s

[root@server ~]# lsblk -s
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda1          8:1    0    1G  0 part /boot
└─sda         8:0    0   20G  0 disk 
sr0          11:0    1  4.4G  0 rom  /media/CentOS
centos-root 253:0    0   17G  0 lvm  /
└─sda2        8:2    0   19G  0 part 
  └─sda       8:0    0   20G  0 disk 
centos-swap 253:1    0    2G  0 lvm  [SWAP]
└─sda2        8:2    0   19G  0 part 
  └─sda       8:0    0   20G  0 disk 
[root@server ~]# 

仅显示大小和名称。

lsblk -n

[root@server ~]# lsblk -n
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.4G  0 rom  /media/CentOS

显示设备号和设备类型。

lsblk -m

[root@server ~]# lsblk -m
NAME             SIZE OWNER GROUP MODE
sda               20G root  disk  brw-rw----
├─sda1             1G root  disk  brw-rw----
└─sda2            19G root  disk  brw-rw----
  ├─centos-root   17G root  disk  brw-rw----
  └─centos-swap    2G root  disk  brw-rw----
sr0              4.4G root  cdrom brw-rw----

显示磁盘信息和块大小。

blkid —查看磁盘 ID

[root@server ~]# blkid
/dev/sda1: UUID="92aeb542-b7a2-43ef-9e7e-bb1ea51b6c6a" TYPE="xfs" 
/dev/sda2: UUID="8faBFb-KJVx-BJ3c-cfyt-SFQd-TyJh-oCbiJL" TYPE="LVM2_member" 
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="bde1a3ef-2acb-48fd-ac4e-0278d5c5e64d" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="95fcccb5-5f5c-4064-8197-a559c8625e4c" TYPE="swap" 

df — 查看磁盘挂载情况/查看磁盘使用情况

df -h     ---以人类可读方式显示磁盘容量大小

[root@server ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  974M     0  974M   0% /dev
tmpfs                   tmpfs     991M     0  991M   0% /dev/shm
tmpfs                   tmpfs     991M   11M  980M   2% /run
tmpfs                   tmpfs     991M     0  991M   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  5.9G   12G  35% /
/dev/sda1               xfs      1014M  213M  802M  21% /boot
tmpfs                   tmpfs     199M   12K  199M   1% /run/user/42
tmpfs                   tmpfs     199M     0  199M   0% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0 100% /media/CentOS

timedatectl — 可以查看/修改系统时间信息和时区信息

[root@server ~]# timedatectl
      Local time: Fri 2023-07-21 19:39:44 CST
  Universal time: Fri 2023-07-21 11:39:44 UTC
        RTC time: Fri 2023-07-21 11:39:44
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

扩展: ntpdate

ntpdate命令用于获取系统时间,并使其与可靠的网络时间服务器保持同步。它会在系统时间和网络时间服务器之间同步时间,并自动进行频率调整以确保时间的准确性。使用ntpdate命令,您可以获取UTC时间,并在系统时间和网络时间服务器之间保持同步。要使用ntpdate命令,请执行以下操作:

  1. 打开终端或命令提示符。

  2. 输入ntpdate命令,后跟网络时间服务器的IP地址或主机名,如下所示:

ntpdate serverip

例如,如果您的网络时间服务器的IP地址是192.168.0.1,则命令如下所示:

ntpdate 192.168.0.1

  1. 按Enter键,系统将开始与网络时间服务器同步。

  2. 您可以在系统时间发生变化时使用ntpdate命令,以确保时间保持准确。

  3. 如果您想在同步之间设置间隔时间,请使用–freq选项,如下所示:

ntpdate serverip --freq 1

这将在同步之间每秒钟进行一次时间调整。 6. 如果您的系统使用了多个网络时间服务器,请使用ntpdate命令的多个IP地址,如下所示:

ntpdate serverip1 serverip2

  1. 您还可以使用ntpdate命令与您的时间设置同步,以确保它们保持准确。例如:

ntpdate ntp.ubuntu.com

  1. 如果您使用的是Linux操作系统,可以使用ntp服务来管理系统时间,该服务默认启用,并自动从可靠的网络时间服务器同步时间。您可以使用命令“systemctl status ntpdate”来检查ntp服务是否正在运行。

    ntpdate —可以同步调整时间
    ntpdate 时间服务器域名地址
    #常用时钟服务器

    • time.edu.cn
    • s2c.time.edu.cn
    • s2f.time.edu.cn
    • s2k.time.edu.cn

sed — 修改调整文件内容

sed            's#修改前内容#修改后内容#g'
sed -i    ---将修改后内容真正写入到磁盘中    

runlevel — 查看系统当前使用级别

[root@server ~]# runlevel
N 5

init — 可以切换系统运行级别

在Linux系统中,init参数用于指定运行级别或系统初始化的选项。在较新版本的Linux中,通常使用systemd作为初始化系统,而不是传统的SysVinit。因此,以下是一些常用的init参数:

0:关机,将系统完全关闭。
1/Single:单用户模式,也称为救援模式。只加载基本系统服务,不启动网络和图形界面。
2/3/4/5:多用户命令行模式,加载全部系统服务,但没有图形界面。
6:重启,关闭系统然后重新启动。
S/s:单用户模式,类似于运行级别1,但可能会加载更多服务。
emergency:紧急模式,只加载最小限度的服务,用于修复系统问题。

请注意,具体的init参数可能因Linux发行版和版本而异。如果你使用的是系统管理工具(如systemctl),则可能不需要手动指定init参数。建议查阅相关文档或执行man init命令来获取特定系统上可用的init参数的详细列表和说明。

alias — 设置别名信息

在Unix/Linux系统中,“alias”命令可以创建一个别名,将一个常用的命令转换成另一个易于记忆的名称。使用alias命令,可以让用户更加方便地使用系统中的命令。

alias 别名='命令信息'
unalias   ---取消别名设置
unalias 别名

在终端中输入以下命令即可创建一个别名:

alias alias_name='command'

其中,“alias_name”是新创建的别名的名称,“command”是需要被转换成别名的命令。例如,下面的命令将命令“ls”转换成了一个易于记忆的名称“ls_list”:

alias ls_list='ls -lh'

用户可以通过在终端中输入“alias_name”来使用新创建的别名。例如,输入“ls_list”命令可以实现使用“ls”命令列出文件和目录的功能。

此外,用户还可以通过“unalias”命令删除已经创建的别名:

unalias alias_name

例如,要删除“ls_list”别名,可以在终端中输入“unalias ls_list”。

总之,使用“alias”命令可以方便地创建和管理命令别名,提高用户在系统中的使用效率。

file — 可以识别文件数据类型

在Linux下,file命令用于检查文件的元数据(meta data),如文件类型、内容长度、权限、创建时间、修改时间等。下面是file命令的详细说明:

  1. file命令语法:

    file [选项] [文件名]

其中,选项用于指定要检查的文件的类型、语言等信息。常用的选项包括:

  • \-c:指定文件类型,例如.cpp.html.py等。

  • \-l:指定文件的字符串长度,例如.txt.pdf等。

  • \-p:指定文件类型为字符串,例如.log.conf等。

  • \-m:指定文件类型为可执行文件,例如.exe.sh等。

  • \-M:指定文件类型为命令文件,例如.sh.bat等。

  • \-i:指定文件类型为可执行文件或可移植二进制文件,例如.dll.so等。

  • \-d:指定文件类型为目录,例如...等。

  • \-s:指定文件类型为普通文件,例如.txt.html等。

  • \-t:指定文件类型为文本文件,例如.txt.log等。

  • \-T:指定文件类型为二进制文件,例如.obj.png等。

  • \-O:指定文件类型为已注册的符号链接,例如.so.dll等。

  • \-o:指定文件类型为其他,例如.pl.cpp等。

  • \-S:指定文件类型为符号链接,例如.lnk.lib等。

  • \-f:指定文件类型为文件系统结构(即目录、文件等),例如.dir.bak等。

  • file命令常用选项:

  • \-c:检查文件类型,并显示文件名和类型,例如:

    [root@server ~]# file error.txt
    error.txt: ASCII text

上述命令会显示文件类型为ASCII文本文件,并显示行终止符为CRLF。

  • \-l:检查文件字符串长度,并显示文件名和长度,例如:

    $ file -l /bin/ls
    /bin/ls: 4 characters

上述命令会显示文件字符串长度为4。

  • \-p:检查文件类型为字符串文件,并显示文件名和类型,例如:

    $ file -p /etc/passwd
    /etc/passwd: ASCII text, with CRLF line terminators

上述命令会显示文件类型为字符串文件,并显示行终止符为CRLF。

  • \-m:检查文件类型为可执行文件,并显示文件名和类型,例如:

    $ file -m /bin/sh
    /bin/sh: ASCII text, with CRLF line terminators

上述命令会显示文件类型为可执行文件,并显示行终止符为CRLF。

  • \-M:检查文件类型为命令文件,并显示文件名和类型,例如:

    $ file -M /etc/init.d/nginx
    /etc/init.d/nginx: ASCII text, with CRLF line terminators

上述命令会显示文件类型为命令文件,并显示行终止符为CRLF。

  • \-i:检查文件类型为可执行文件或可移植二进制文件,并显示文件名和类型,例如:

    $ file -i /usr/bin/grep
    /usr/bin/grep: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped

上述命令会显示文件类型为可执行文件或可移植二进制文件,并显示其他信息。

  • \-d:检查文件类型为目录,并显示文件名和类型,例如:

    $ file -d /var/log
    /var/log: Directory

上述命令会显示文件类型为目录。

  • \-s:检查文件类型为普通文件,并显示文件名和类型,例如:

    $ file -s /usr/share/dict/words
    /usr/share/dict/words: ASCII text

上述命令会显示文件类型为普通文件,并显示其他信息。

  • \-t:检查文件类型为文本文件,并显示文件名和类型,例如:

    $ file -t /usr/share/dict/words
    /usr/share/dict/words: text

上述命令会显示文件类型为文本文件,并显示其他信息。

  • \-T:检查文件类型为二进制文件,并显示文件名和类型,例如:

    $ file -T /usr/bin/bash
    /usr/bin/bash: text

上述命令会显示文件类型为二进制文件,并显示其他信息。

  • \-O:检查文件类型为已注册的符号链接,并显示文件名和类型,例如:

    $ file -O /usr/bin/python
    /usr/bin/python: symbol lookup error: /usr/bin/python: undefined symbol: main

上述命令会显示文件类型为符号链接,并显示其他信息。

  • \-o:检查文件类型为其他,并显示文件名和类型,例如:

    $ file -o /usr/share/dict/words
    /usr/share/dict/words: ASCII text

上述命令会显示文件类型为其他,并显示其他信息。

  • \-S:检查文件类型为符号链接,并显示文件名和类型,例如:

    $ file -S /usr/bin/python
    /usr/bin/python: symbolic link

上述命令会显示文件类型为符号链接,并显示其他信息。

  • \-f:检查文件类型为文件系统结构,并显示文件名和类型,例如:

    $ file -f /bin/ls
    /bin/ls: regular file

上述命令会显示文件类型为普通文件,并显示其他信息。

  • file -i /bin/ls:指定文件类型为可执行文件或可移植二进制文件,例如:

    $ file -i /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped

上述命令会显示文件类型为可执行文件或可移植二进制文件,并显示其他信息。

  • file -p /bin/ls:指定文件类型为字符串文件,例如:

    $ file -p /bin/ls
    /bin/ls: ASCII text

上述命令会显示文件类型为字符串文件,并显示其他信息。

which — 可以识别命令文件所在绝对路径信息

[root@server ~]# which ll
alias ll='ls -l --color=auto'
	/usr/bin/ls
[root@server ~]# which touch
/usr/bin/touch

拓展: whereis

[root@server ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@server ~]# whereis touch 
touch: /usr/bin/touch /usr/share/man/man1/touch.1.gz /usr/share/man/man1p/touch.1p.gz

lvm 制作

  1. LVM的制作

LVM(Logical Volume Manager)是一种虚拟化技术,可以将多个物理卷组合成逻辑卷,方便管理和使用。LVM的制作分为两个步骤:创建逻辑卷组和挂载逻辑卷。

步骤1:创建逻辑卷组

使用命令lvextend可以创建逻辑卷组。语法如下:

lvextend /dev/VG/LV /dev/VG/LV +X GB

其中,VG表示卷组名,LV表示逻辑卷名,+X GB表示要添加的空间大小。

例如,创建一个容量为100GB的逻辑卷组:

lvextend /dev/VG/LV /dev/VG/LV 100GB

步骤2:挂载逻辑卷

使用命令mkfs可以将逻辑卷格式化为文件系统。语法如下:

mkfs.ext4 /dev/VG/LV

其中,ext4表示要格式化的文件系统类型。

例如,格式化创建的逻辑卷为ext4文件系统:

mkfs.ext4 /dev/VG/LV
  1. LVM的使用

使用LVM可以将多个物理卷组合成逻辑卷,方便管理和使用。

步骤1:挂载逻辑卷

挂载逻辑卷需要先创建一个文件系统,并将逻辑卷与文件系统挂载到目录下。

例如,将逻辑卷/dev/VG/LV挂载到目录/mnt/LV

mkdir /mnt/LV
mount /dev/VG/LV /mnt/LV

步骤2:创建分区

使用命令fdisk可以创建分区。语法如下:

fdisk /dev/VG/LV

其中,/dev/VG/LV表示要创建分区的设备名。

例如,创建一个大小为100GB的ext4文件系统的分区:

fdisk /dev/VG/LV
n
p
1
(Enter)
t
(Enter)
m
(Enter)
2
(Enter)
y
(Enter)
w

步骤3:格式化分区

使用命令mkfs可以将分区格式化为文件系统。语法如下:

mkfs.ext4 /dev/VG/LVp1

其中,p1表示要格式化的分区编号。

例如,格式化第一个分区为ext4文件系统:

mkfs.ext4 /dev/VG/LVp1

步骤4:创建挂载点

使用命令mkdir可以创建挂载点。语法如下:

mkdir /mnt/LVp1

例如,创建第一个分区的挂载点:

mkdir /mnt/LVp1
  1. LVM扩容-------在线扩容

使用LVM在线扩容可以在有数据的情况下去扩容。

步骤1:检查物理卷

使用命令vgs可以查看卷组信息。

例如,查看卷组信息:

vgs

步骤2:检查逻辑卷

使用命令lvs可以查看逻辑卷信息。

例如,查看逻辑卷信息:

lvs

步骤3:创建扩展分区

使用命令pdquery可以查看可用的分区。

例如,查看可用的分区:

pdquery /dev/VG/LV

使用命令pdpick可以选择要扩展的分区。语法如下:

pdpick /dev/VG/LVp1

例如,选择要扩展的分区:

pdpick /dev/VG/LVp1

步骤4:扩展分区

使用命令xresize可以扩展分区。语法如下:

xresize /dev/VG/LVp1

例如,扩展第一个分区:

xresize /dev/VG/LVp1

例如,在线扩容第一个分区为100GB:

xresize /dev/VG/LVp1 100G

总结:LVM是一种虚拟化技术,可以将多个物理卷组合成逻辑卷,方便管理和使用。使用LVM可以创建逻辑卷组、挂载逻辑卷、创建分区、格式化分区等。使用LVM在线扩容可以在有数据的情况下去扩容。

lv移除

[root@localhost ~]# lvremove /dev/vg2/lv2

Do you really want to remove active logical volume vg2/lv2? [y/n]: y

  Logical volume "lv2" successfully removed
  
  #先移除lv

[root@localhost ~]# vgremove /dev/vg2

  Volume group "vg2" successfully removed
  
  #再移除vg

[root@localhost ~]# pvremove /dev/sdc

  Labels on physical volume "/dev/sdc" successfully wiped.

  #移除pv
```

```ini
#一个vg使用多个pv时,从vg中删除某一个pv
[root@web2 ~]# vgdisplay -v vg3
  --- Volume group ---
  VG Name               vg3
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.89 GiB
  PE Size               4.00 MiB
  Total PE              5092
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5092 / 19.89 GiB
  VG UUID               mxKCWr-bDBk-B3yf-9oIY-ZPSh-jAza-qpgpGU
   
  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               3oiIL1-3NLN-0vqX-LBCY-wfR5-SoFm-a67eDb
  PV Status             allocatable
  Total PE / Free PE    1278 / 1278
   
  PV Name               /dev/sdb3     
  PV UUID               Ksb2QX-xAFM-B9zb-1Zvf-q6so-V4Xl-vwvhBC
  PV Status             allocatable
  Total PE / Free PE    3814 / 3814
[root@web2 ~]# vgreduce vg3 /dev/sdb3
  Removed "/dev/sdb3" from volume group "vg3"

[root@web2 ~]# vgdisplay -v vg3
  --- Volume group ---
  VG Name               vg3
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               4.99 GiB
  PE Size               4.00 MiB
  Total PE              1278
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1278 / 4.99 GiB
  VG UUID               mxKCWr-bDBk-B3yf-9oIY-ZPSh-jAza-qpgpGU
   
  --- Physical volumes ---
  PV Name               /dev/sdb1     
  PV UUID               3oiIL1-3NLN-0vqX-LBCY-wfR5-SoFm-a67eDb
  PV Status             allocatable
  Total PE / Free PE    1278 / 1278
[root@web2 ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.

从lv缩容

[root@web02 ~]# lvreduce -L -20G /dev/centos/root
[root@web02 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  centos lvm2 a--  <19.00g   4.00m
  /dev/sde   centos lvm2 a--  <20.00g <20.00g
  /dev/sdf   vg1    lvm2 a--  <20.00g <20.00g
  /dev/sdg          lvm2 ---   20.00g  20.00g
  /dev/sdi1         lvm2 ---   10.00g  10.00g
[root@web02 ~]# vgreduce centos /dev/sde
[root@web02 ~]# pvremove /dev/sde

六、文件查找

grep — 过滤筛选文件信息命令

grep 参数 "筛选信息 符号做信息匹配 21:.*error"  xxx.log
    -i        ---忽略大小写
    -A        ---过滤指定行之后内容
    -B        ---过滤指定行之前内容
    -C        ---过滤指定行上下内容
    -r        ---进行递归过滤
    -E        ---可以识别特殊正则符号
    -v        ---进行匹配信息取反过滤操作
    -o        ---只显示过滤匹配的信息
    -c        ---匹配的信息出现了多少次

找出文件夹下包含 “aaa” 同时不包含 “bbb”的文件,查找到 grep的完整用法:

grep -l ‘boss’ * 显示所有包含 boss 的文件名。
grep -n ‘boss’ file 在匹配行之前加行号。
grep -i ‘boss’ file 显示匹配行,boss 不区分大小写。
grep -v ‘boss’ file 显示所有不匹配行。
grep -q ‘boss’ file 找到匹配行,但不显示,但可以检查grep 的退出状态。(0 为匹配成功)
grep -c ‘boss’ file 只显示匹配行数(包括 0)。
grep “$boss” file 扩展变量 boss 的值再执行命令。
ps -ef|grep “^*user1″ 搜索 user1 的命令,即使它前面有零个或多个空格。
ps -e|grep -E ‘grant_server|commsvr|tcpsvr|dainfo’ 查找多个字符串的匹配(grep -E 相当于 egrep)

案例:

过滤文件中带有root的内容:
[root@server ~]#  grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
过滤以root开头的行:^ --以什么开头
[root@server ~]#  grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
过滤以bash结尾的行:$ --以什么结尾
[root@server ~]#  grep 'bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
haoze:x:1000:1000:haoze:/home/haoze:/bin/bash

find — 可以根据路径范围以及条件信息查找数据

在Linux系统中,使用find命令可以快速查找文件和目录。以下是一些基本的find命令用法:

:::
find -name — 根据名称查找数据

find -inme — 根据名称查找数据(忽略大小写)

find -type — 根据类型查找数据(d目录、f文件)

find -mindepth — 根据目录层级查找数据(从哪个深度开始查找)

find -maxdepth — 根据目录层级查找数据(查找的最深深度)

find -size — 根据文件大小尺寸查找数据 - 小于 + 大于 没有± 表示等于 / 关注数据大小单位

find -mtime — 根据文件时间查找数据

                    - 最近多少天以内  + 多少天以前  没有+- 表示距离当前时间正好是第几天的数据 不会使用

find -delete — 将找出的文件数据进行删除

find -exec — 将找出的文件数据进行批量处理

find -mmin — 根据文件时间(分钟)查找数据

find -inum — 根据文件inode编号查找文件数据

find -perm — 根据文件权限查找数据
:::

  1. 查找特定文件

要查找指定文件,请使用find命令的\-name选项。例如,要查找名为example.txt的文件,请使用以下命令:

find /path/to/search -name example.txt #-iname参数不区分大小写搜索

其中,/path/to/search是要搜索的目录路径。如果您知道文件的完整路径,可以直接使用路径名称,而不是使用/path/to/search

  1. 查找特定类型的文件

要查找指定类型的文件,请使用find命令的\-type选项。例如,要查找所有的.txt文件,请使用以下命令:

find /path/to/search -type f -name "*.txt"

其中,/path/to/search是要搜索的目录路径。如果您知道文件的完整路径,可以直接使用路径名称,而不是使用/path/to/search

  1. 查找特定文件的最后修改时间

要查找指定文件的最后修改时间,请使用find命令的\-mtime选项。例如,要查找最近一天内修改过的文件,请使用以下命令:

find /path/to/search -mtime -1

其中,/path/to/search是要搜索的目录路径。如果您知道文件的完整路径,可以直接使用路径名称,而不是使用/path/to/search

  1. 查找特定文件的创建时间

要查找指定文件的创建时间,请使用find命令的\-ctime选项。例如,要查找最近一天内创建的文件,请使用以下命令:

find /path/to/search -ctime -1

其中,/path/to/search是要搜索的目录路径。如果您知道文件的完整路径,可以直接使用路径名称,而不是使用/path/to/search

  1. 查找特定目录

要查找指定目录,请使用find命令的\-path选项。例如,要查找名为mydir的目录,请使用以下命令:

find /path/to/search -path "mydir"

其中,/path/to/search是要搜索的目录路径。如果您知道目录的完整路径,可以直接使用路径名称,而不是使用/path/to/search

  1. 查找指定权限的文件

要查找指定权限的文件,请使用find命令的\-perm选项。例如,要查找所有的rwxr-xr-x权限的文件,请使用以下命令:

find /path/to/search -perm /u=rwx,o=rwx,g=r-x

其中,/path/to/search是要搜索的目录路径。如果您知道文件的完整路径,可以直接使用路径名称,而不是使用/path/to/search

这些是find命令的一些基本用法,您可以根据您的需要组合使用它们来搜索您需要的文件和目录。

tar — 压缩解压命令

#tar cvf xxxx.tar filename   被打包的文件 ...
c :create  创建
v :verbose 详细信息
f :file  文件
#常用
语法:
#tar cvzf file.tar.gz  源文件
#tar cvjf file.tar.bz2 源文件
z:表示gz压缩
j:表示bz2压缩

案例:

[[email protected] ~]# tar cvf dir1.tar /home/dir10/ #打包目录dir10,将包命名为dir1.tar
[[email protected] ~]# tar xf dir1.tar -C /usr/local/ #将dir1包解压到指定目录

stat — 可以查看文件信息详细属性

[root@server ~]# stat /etc/sysconfig/network-scripts/ifcfg-ens33 
  File: ‘/etc/sysconfig/network-scripts/ifcfg-ens33’
  Size: 354       	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 51925691    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-07-21 10:11:00.281009005 +0800
Modify: 2023-07-11 15:18:30.165000199 +0800
Change: 2023-07-11 15:18:30.165000199 +0800
 Birth: -

locate — 定位查找指定文件路径信息

[root@server ~]# locate Desktop
/home/haoze/Desktop
/root/Desktop
/root/Desktop/1.txt
/root/Desktop/10.txt
/root/Desktop/2.txt
/root/Desktop/3.txt
/root/Desktop/4.txt
/root/Desktop/5.txt
/root/Desktop/6.txt
/root/Desktop/7.txt
/root/Desktop/8.txt
/root/Desktop/9.txt
/usr/lib64/girepository-1.0/GDesktopEnums-3.0.typelib
/usr/lib64/girepository-1.0/GnomeDesktop-3.0.typelib
/usr/share/dbus-1/interfaces/org.freedesktop.impl.portal.RemoteDesktop.xml
/usr/share/dbus-1/interfaces/org.freedesktop.portal.RemoteDesktop.xml
/usr/share/dbus-1/services/org.freedesktop.portal.Desktop.service
/usr/share/desktop-directories/Desktop.directory
#updatedb            --- 更新系统文件信息数据库

date — 可以查看或修改时间

可以使用date命令来显示当前的日期和时间。该命令有许多不同的参数,可以用来控制输出的日期和时间格式。以下是一些常用的参数:

  • d: 显示从指定日期到现在的天数

  • D: 设置日期显示格式

  • s: 更新当前系统日期和时间

下面是一些示例:

# 显示当前日期和时间
date

# 显示从2021-10-01到现在的天数
date -d '2021-10-01' +%j

# 显示日期为2021-10-01的形式
date -D "2021-10-01" +%Y-%m-%d

# 更新当前系统日期和时间
date -s "2021-10-01 13:00:00"

除了上述常用参数外,还有许多其他参数可以用来控制输出的日期和时间格式。例如,可以使用"-h"参数来显示时间以24小时制的形式,使用"-H"参数来显示时间以12小时制的形式。此外,还可以使用"-c"参数来创建一个新的时间戳,或者使用"-m"参数来显示秒数。

ln — 用于创建链接文件

语法:

ln 源文件 链接文件 — 创建硬链接

ln -s 源文件 链接文件 — 创建软链接

创建硬链接的命令是使用ln命令,加上源文件名和链接文件名。例如,如果我们要将/home/user/file.txt文件与/home/user/link\_file.txt文件创建一个硬链接,我们可以使用以下命令:

ln /home/user/file.txt /home/user/link_file.txt

创建软链接的命令也是使用ln命令,但是在加上链接文件名的时候需要使用\-s选项。例如,如果我们要将/home/user/file.txt文件与/home/user/link\_file.txt文件创建一个软链接,我们可以使用以下命令:

ln -s /home/user/file.txt /home/user/link_file.txt

请注意,硬链接和软链接都是指向源文件的别名,它们可以在同一目录中存在。但是,硬链接只能存在于目录中,而软链接可以存在于目录和文件中。此外,软链接不会占用额外的存储空间,而硬链接则会占用相同的存储空间。

history — 显示历史命令

history 命令用于列出用户的历史命令记录。可以使用不同的参数来控制输出格式和命令过滤方式。以下是一些常用的参数:

  • \-n:指定输出命令数,例如 history -n 5 将输出最近 5 条命令。

  • \-p:以段落格式输出命令记录,并在每行末尾添加一个换行符,例如 history -p 将输出每个命令前后都有一个换行符。

  • \-r:以反向顺序输出命令记录,例如 history -r 将输出命令的逆序顺序。

  • \-t:按时间戳过滤输出,例如 history -t 20 将输出在指定时间范围内的命令记录。

  • \-s:输出指定范围内的命令记录,例如 history -s 1000000 将输出在范围内第 1000000 条命令。

  • -c:清除历史命令记录信息

  • -w:将内存中记录的历史命令信息立即保存到历史命令文件里面

七、软件包管理

wget — 可以下载网站资源信息

wget命令是一种用于从互联网上下载文件的命令行工具。以下是使用wget命令下载文件的一些常见用法:

  1. 从URL下载文件:

    wget http://www.example.com/example.pdf

  2. 下载指定目录中的文件:

    wget /path/to/directory/*

  3. 下载多个文件:

    wget http://www.example.com/file1.pdf http://www.example.com/file2.doc

  4. 指定下载文件的保存路径:

    wget -P /path/to/directory http://www.example.com/file.pdf

  5. 使用端口号下载文件:

    wget -P /path/to/directory http://www.example.com:8080/file.pdf

  6. 从远程服务器下载文件时指定协议:

    wget ftp://ftp.example.com/file.zip

以上是一些常见的wget命令用法,当然还有很多其他的用法,具体用法可以根据实际情况进行调整。

yum — 安装软件命令

yum是一个在基于RPM包管理的Linux发行版中用于安装、更新和删除软件包的命令。以下是使用yum进行软件安装的基本语法:

:::
yum install -y 软件包名称 — 安装软件包

yum erase — 卸载软件程序(将软件以及软件依赖包一并卸载) A(卸载) B(A的依赖软件) C软件同时依赖B软件

yum provides — 检索命令文件属于哪个软件包

yum search — 检索命令文件属于哪个软件包

yum update 软件包名称 —升级软件包

yum update —升级系统中所有已安装的软件包

yum search 软件包名称 —搜索软件包

yum list 软件包名称 —列出可用软件包

yum remove 软件包名称 —删除软件包

yum clean all —清除缓存

#请注意,执行yum命令需要具有root或具有sudo权限的用户才能操作。在使用yum之前,建议先更新软件包列表,以确保您安装的软件包是最新的:
:::

rpm — 安装软件程序命令

Linux系统下,rpm是一种软件包管理工具,用于管理和安装软件包。rpm文件通常是以rpm格式存储的,可以使用rpm命令来检查、安装、更新或卸载软件包。

例如,要安装一个名为example的软件包,可以使用以下命令:

sudo rpm -ivh example.rpm 

其中,-i表示安装软件包,-vh表示显示详细信息,-h指定软件包的目录位置,即example.rpm所在的位置。

如果要更新现有软件包,可以使用以下命令:

sudo rpm -Uvh example.rpm

其中,-U表示更新软件包,-vh表示显示详细信息。

如果要卸载一个软件包,可以使用以下命令:

sudo rpm -e example

其中,-e表示卸载软件包,不需要指定软件包名称。

此外,rpm还提供了一些其他的选项,例如-d可以检查软件包是否已安装,-g可以检查软件包的版本等。更多的选项可以通过man rpm命令来查看。

yum 源配置

本地源配置

您可以按照以下步骤配置YUM本地源:

  1. 创建一个目录来存储YUM本地源:在Linux系统上,您可以使用以下命令创建一个名为yum.repos.d的目录:

    mkdir /etc/yum.repos.d

  2. yum.repos.d目录中创建一个新的文件,命名为您选择的文件名。例如,您可以创建一个名为myrepo.repo的文件:

    sudo nano /etc/yum.repos.d/myrepo.repo

  3. myrepo.repo文件中,输入以下内容:

    [myrepo]
    name=My Repository
    baseurl=http://myrepo.com/
    enabled=1
    gpgcheck=0
    gpgkey=http://myrepo.com/pub/repo.key

在上面的代码中,您需要将name设置为您的本地源名称,baseurl设置为您的本地源地址,enabled设置为1表示启用该本地源,gpgcheck设置为0表示禁用GPG校验,gpgkey设置为您的本地源GPG密钥的地址。

  1. 保存并关闭myrepo.repo文件。

  2. 您现在已经配置了一个YUM本地源。您可以使用以下命令来更新您的软件包列表:

    sudo yum makecache

现在,您可以使用sudo yum search命令来搜索您需要的软件包,或者使用sudo yum install命令来安装它们。

请注意,您需要在系统中运行sudo yum update命令来更新所有软件包列表和依赖关系。

八、 DNS域名解析

ip — 查看网络信息

ip address show        --- 查看系统网卡地址信息
ip address show ethxx  --- 查看指定网卡信息
ip a s eth0            --- 查看网卡信息(简写方式查看)   

案例:

[root@server ~]# ip addr show 
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cd:a9:a9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.132/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::b876:3ed8:ac13:4959/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0:  mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:89:e6:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic:  mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:89:e6:f9 brd ff:ff:ff:ff:ff:ff
[root@server ~]# 

nmtui — 进入网卡信息修改界面

Linux命令总结V1.0_第3张图片

systemctl — 管理系统服务程序

在Linux系统中,systemctl是一个管理服务和系统组件的工具。它提供了一种方便的方式来管理和启动/停止/重新启动服务和系统组件,如init进程、systemd进程和守护进程等。systemctl工具的主要作用是:

  1. 启动和停止系统服务

  2. 重新启动和恢复系统服务

  3. 管理systemd进程和守护进程

  4. 配置systemd配置文件

  5. 检查服务状态和日志

  6. 修改系统配置文件

  systemctl  {stop|start|restart|status|disable|enable}
  systemctl start   服务程序名称   --- 启动服务
  systemctl restart 服务程序名称   --- 重启服务
  systemctl stop    服务程序名称   --- 停止服务
  systemctl status  服务程序名称   --- 查看服务状态
  systemctl disable 关闭服务开机自启
  systemctl enable  设置服务开机自启 
  · network   --- 网卡服务名称
  · sshd      --- 远程连接服务
  · fire

例如,要使用systemctl来启动一个服务,可以在终端中键入以下命令:

sudo systemctl start [service name]

要停止服务,可以键入以下命令:

sudo systemctl stop [service name]

要重新启动服务,可以键入以下命令:

sudo systemctl restart [service name]

要查看服务状态,可以键入以下命令:

sudo systemctl status [service name]

要查看服务日志,可以键入以下命令:

sudo journalctl -u [service name]

还可以使用systemctl工具来修改系统配置文件,例如:

sudo systemctl edit [configuration file]

需要注意的是,systemctl工具默认情况下只对systemd系统进行支持。如果你的系统不是基于systemd的,你需要安装相应的工具包。例如,如果你的系统使用的是Upstart或者initd系统,你需要安装相应的工具包来使用systemctl工具。

shutdown — 关闭或重启系统

要在Linux系统中关闭计算机,可以使用shutdown命令。

shutdown命令的基本语法如下:

shutdown [选项] [关闭时间] [退出登录]

其中,选项包括:

  • h:关闭并重启系统。

  • t:以秒为单位关闭系统,t表示秒数。

  • c:强制关闭系统。

  • k:关闭进程但不关闭系统。

  • e:关闭系统并进入引导界面。

    shutdown -h — 关闭系统
    shutdown -r — 重启系统
    shutdown -c — 取消关闭或重启计划
    关闭系统:
    poweroff / init 0
    重启系统:
    reboot / init 6

退出登录是可选的。如果省略了关闭时间,则默认为现在。

例如,要在5秒钟后关闭系统,可以使用以下命令:

shutdown -s -t 5

这将在5秒钟后关闭系统,并提示用户确认是否关闭系统。

如果想要强制关闭系统,可以使用以下命令:

shutdown -h -t 0

这将立即关闭系统,并在关闭前不会显示任何消息。

如果想要关闭进程但不关闭系统,可以使用以下命令:

shutdown -c

这将立即关闭进程,但不会关闭系统。

九、计划任务与日志管理

crontab是一个用于Linux、MacOS和其他类Unix操作系统的定时任务系统。它允许您设置计划执行某些任务的时间和日期。crontab的语法非常简单,每个时间字段使用以下格式:

  • 分钟:数字0到59,表示60分钟。例如,5表示5分钟。

  • 小时:数字0到23,表示24小时。例如,3表示下午3点。

  • 日期:数字1到31,表示每个月的第一天到最后一天。例如,1表示1月1日。

  • 月份:数字1到12,表示每个月的第一天到最后一天。例如,1表示1月1日。

  • 星期:数字0到6,表示星期一到星期日。例如,0表示星期一,6表示星期日。

  • 短语:一组字符,表示您想要运行的特定任务。例如,*表示每天都运行。

  • 冒号:用于分隔分钟、小时、日期、月份、星期和短语。

  • 换行符:表示每个短语的结束。

要创建一个新的crontab定时任务,请使用以下命令:

crontab -e

这将打开一个文本编辑器,您可以在其中编辑crontab的定时任务。

要设置定时任务,请按照以下步骤操作:

  1. 添加一个新的短语行,例如:

    0 3 * * * command

这将在每个星期三的凌晨3点运行command

  1. 在该行后面添加所有其他行,以便您可以设置其他定时任务。例如,如果您想要在每个月的15日和每个星期五的早上7点运行另一个任务,您可以添加以下行:

    15 * * * * command1

    • /5 * * * * command2

这将在每个月的15日运行command1,并在每个星期五的早上7点运行command2

  1. 保存文件并关闭编辑器。

一旦您设置了crontab定时任务,您就可以按照所需的时间和日期执行任务。如果您不希望每次运行时都提示输入密码,请在终端中运行以下命令:

sudo crontab -e

这将使用管理员权限编辑crontab。

案例:

注意:小时分钟前面尽量不要填充0
1、下午3点执行

* 15 * * *

2、每天1到5点,每小时执行一次

* 1-5/1 * * *

3、每分钟执行一次

*/1 * * * *

4、每周日上午5点执行

* 5 * * 7

5、每月1号下午5点执行

* 17 1 * *

6、每年1月1号上午5点执行

* 5 1 1 *

7、每周六或 4日凌晨12点整执行

0 * 4 * 6

8、每隔2小时执行一次

* */2 * * *

9、每隔2小时的每一分钟执行一次

*/1 */2 * * *

10、每天的3、5、14、15点整执行

* 3,5,14,15 * * *

定时任务精确到秒

*/1 * * * * sleep 10;ls -l

回顾总结

常用管理文件命令总结

  • 目录:
命令 用法 功能
mkdir mkdir 目录名称 创建一个目录
rmdir rmdir 目录名称 删除一个空目录
cd cd 目录名称 进入一个目录
ls ls 目录名称 列出一个目录内容
  • 文件:
命令 用法 功能
touch touch 文件名 新建一个文件
rm rm 文件名 删除一个文件
cat cat 文件名 打印一个文件内容
  • 其他:
命令 用法 功能
cp mkdir file folder 将文件file拷贝到目录folder
mv mv A B 移动A到B目录或者从命名 A为B
ln ln -s A B 给A做一个快捷方式,放到B位置

帮助相关

命令 描述
help 显示当前可用的命令列表
man [command] 显示指定命令的详细文档
man --help 显示 man 命令的帮助信息
whatis [command] 显示指定命令的简要文档
type [command] 显示指定命令的执行文件路径
whoami 显示当前用户名
exit 退出当前 shell 会话
history 显示命令历史记录,可通过指定参数重新显示某个历史记录
cut 剪切和筛选文本,可以根据指定的列提取信息
paste 粘贴两个或多个文本段,并将它们连接在一起
sed 编辑和替换文本,支持多种替换模式和文本格式
grep 在文本中搜索指定模式,支持多种匹配模式和通配符
awk 根据指定的规则和表达式,提取和处理文本中的数据
awk -f [filename] [option] 从指定的文件中使用 awk 处理文本
sort 对文本中的数据进行排序,可以按照字母、数字、日期等方式排序
uniq 计算文本中唯一数据的个数,可以通过指定参数统计数据的最大/最小值
find 在文件系统中查找指定的文件或目录
mv 移动和重命名文件或目录,可以使用通配符指定要移动的文件或目录
cp 复制文件或目录,可以使用通配符指定要复制的文件或目录
rm 删除文件或目录,可以使用通配符指定要删除的文件或目录
chmod 修改文件或目录的权限,可以使用通配符指定要修改权限的文件或目录
chown 修改文件或目录的所有者,可以使用通配符指定要修改所有者的文件或目录
ln 创建新的链接文件,可以使用通配符指定要创建链接的文件或目录
chdir 切换当前工作目录,可以使用通配符指定要切换的目录
touch 创建新的文件或更新现有的文件时间戳
stat 显示文件或目录的统计信息,包括文件大小、文件权限等
echo 输出文本或变量的值
printf 格式化输出文本或变量的值
cat 连接和显示文本文件中的行
head 显示文件的前几行,可以通过指定参数指定行数
tail 显示文件的后几行,可以通过指定参数指定行数
less 逐行显示文本文件中的内容,可以使用方向键移动光标
more 逐页显示文本文件中的内容,可以使用方向键移动光标
gzip 对文件进行压缩,可以指定压缩算法和文件名
gunzip 解压缩已压缩的文件
tar 打包和解包文件,可以指定打包的格式和选项
zcat 对压缩的文件进行解压缩,并输出到终端
bzip2 对文件进行压缩,可以指定压缩算法和文件名
bunzip2 解压缩已压缩的文件
gzip -d 解压缩已压缩的文件
gunzip -c 解压缩已压缩的文件并输出到终端
tar -cvf [filename] [file] 打包文件到指定的文件中
tar -xvf [filename] [file] 解压缩已打包的文件
mvn clean install 运行 Maven 构建工具
git add 将更改的文件添加到 Git 的暂存区
git commit 提交 Git 的暂存区中的更改到本地仓库
git push 将本地仓库中的更改推送到远程仓库
git pull 将远程仓库中的更改拉取到本地仓库
npm install 安装 Node.js 模块
yarn install 安装 Yarn 模块
nvm install [version] 安装 Node.js 的特定版本
npm install -g [package] 在全局范围内安装 Node.js 模块
yarn install -g [package] 在全局范围内安装 Yarn 模块
nvm uninstall [version] 卸载 Node.js 的特定版本
nvm install --default [version] 默认安装 Node.js 的特定版本
nvm uninstall [version] 卸载 Node.js 的特定版本
nvm use [version] 使用 Node.js 的特定版本
nvm alias [aliasname] [version] 创建一个新的别名,将指定的版本与指定的别名关联起来
nvm unalias [aliasname] 从 Node.js 中删除指定的别名

关机重启命令

命令 作用
reboot 重启系统
shutdown 关闭系统
halt 关闭系统,但保留硬盘
grace-shutdown 延迟关闭系统,让用户选择关闭时间
logout 用户退出系统
shutdown -h now 强制关闭系统,立即执行
poweroff 关闭系统,并将硬盘数据保存到挂载点
shutdown -s -t 5 关闭系统,并延迟5秒钟执行

注:上述命令均可通过终端或命令行执行。

打包压缩

Linux打包命令 功能描述 用法
tar 创建、打包和解压文件 tar -cvf
tar 创建、打包和解压文件 tar -xvf
tar 创建、打包和解压文件 tar -czvf
tar 创建、打包和解压文件 tar -zcvf
gzip 对文件进行压缩 gzip
tar 创建、打包和解压文件 tar -xvf
tar 创建、打包和解压文件 tar -xzvf
tar 创建、打包和解压文件 tar -cvzf
tar 创建、打包和解压文件 tar -czvf
zip 对文件进行压缩 zip
tar 创建、打包和解压文件 tar -xvf
tar 创建、打包和解压文件 tar -xzvf
tar 创建、打包和解压文件 tar -cvzf
tar 创建、打包和解压文件 tar -czvf

这些打包命令可以将文件打包成多种压缩格式,并提供了灵活的解压和解包功能。其中tar命令是最常用的,可以打包和解包任意类型的文件和目录。其他命令如gzip、zip和tar的压缩和解压命令都与tar类似,但它们是不同的软件包。

磁盘管理命令

磁盘管理命令 用法
fdisk 用于创建、编辑和删除磁盘分区表。
parted 用于创建、编辑和删除磁盘分区表,还可以在分区上进行格式化和删除等操作。
parted -m /dev/sda 在指定设备上创建、编辑和删除磁盘分区表。
mkfs 用于格式化磁盘分区,使其可以被操作系统识别和使用。
mke2fs 用于创建Linux分区文件系统。
mkfs.ext3 用于创建ext3文件系统。
mkfs.ext4 用于创建ext4文件系统。
resize2fs 用于调整ext3和ext4文件系统的大小。
df 显示文件系统的磁盘使用情况,包括总大小、已使用大小、可用空间等信息。
du 显示指定目录的磁盘使用情况,包括文件大小、文件数量等信息。
truncate 用于调整文件大小,将其压缩到指定大小。
rm 用于删除文件和目录。
rmdir 用于删除空目录。
mv 用于移动和重命名文件和目录。
cp 用于复制文件和目录。
mkswap 用于创建Swap分区。
swapon 用于开启或关闭Swap分区。
swapoff 用于关闭Swap分区。

内置命令

:::
bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command,

compgen, complete, compopt, continue, declare, dirs, disown, echo,

enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help,

history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd,

pwd, read, readonly, return, set, shift, shopt, source, suspend, test,

times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait
:::

系统特殊符号信息

:::
/ – 根目录 目录之间分隔符

· – 文件名称前面有点开头, 表示隐藏文件

    -- 可以表示匹配任意且只有一个字符

… – 上一级目录

{…} – 生成序列信息
  -- 表示家目录信息

- – 两个目录之间相互切换

* – 匹配符号 匹配任意字符信息(根据文件名称查找文件时)

.* – 匹配符号 匹配任意字符信息(根据文件内容查找文件信息时)

> – 标准输出重定向符号 作用: 清空指定文件信息 echo xxx > 文件

>> – 标准追加输出重定向符号 作用: 在文件中添加信息

< – 标准输入重定向符号

<< – 标准追加输入重定向符号 cat >> 文件 << EOF … EOF

$ – 一行内容结尾定位符

^ – 一行内容行首定位符

– 在文件中表示注释信息,可以让指定配置功能暂时失效

\ – 转义符号

       将没有意义的字符信息变得有意义   \n \t \r 

   将有意义的字符信息变得没有意义   grep "\.$" test.txt 

| – 管道符号 将前一个命令执行的结果交给后面的命令进行识别处理

    -- 正则符号  或者

&& – 代表多个条件都要满足/ 前一个命令执行成功再执行后一个命令

|| – 代表多个条件满足其一/ 前一个命令执行失败再执行后一个命令
:::

引号符号区别

:::
“” 可以解析识别特殊符号信息 $ `` $() 信息中有空格符号时需要构成一个整体时

‘’ 所见即所得

`` 在引号里面放入命令信息,将引号里面命令结果交给引号外面命令再次进行处理识别

没有引号 基本上没有引号和有双引号作用相同,需要输出序列信息时,不能加双引号
:::

常见系统环境变量总结

:::
PS1 — 修改命令提示符信息

LANG — 修改系统字符编码

PATH — 定义命令文件所存储路径信息
:::

Linux 常用快捷键

:::
终端快捷键:

Ctrl + a/Home 切换到命令行开始

Ctrl + e/End 切换到命令行末尾

Ctrl + l 清除屏幕内容,效果等同于clear Ctrl + u 清除剪切光标之前的内容

Ctrl + k 剪切清除光标之后的内容

Ctrl + y 粘贴刚才所删除的字符

Ctrl + r 在历史命令中查找 (这个非常好用,输入关键字就调出以前的命令了)

Ctrl + c 终止命令

ctrl + o 重复执行命令

Ctrl + d 退出 shell,logout

Ctrl + z 转入后台运行,但在当前用户退出后就会终止

Ctrl + t 颠倒光标所在处及其之前的字符位置,并将光标移动到下一个字符

Alt + t 交换当前与以前单词的位置

Alt + d 剪切光标之后的词

Ctrl+w 剪切光标所在处之前的一个词(以空格、标点等为分隔符) Ctrl+(x u) 按住 Ctrl 的同时再先后按 x 和 u,撤销刚才的操作 Ctrl+s 锁住终端

Ctrl+q 解锁终端

!! 重复执行最后一条命令

history 显示你所有执行过的编号+历史命令。这个可以配合!编辑来执行某某命令

!$ 显示系统最近的一条参数

最后这个比较实用,比如我先用 cat /etc/sysconfig/network-scripts/ifconfig-eth0,然后我想用 vim 编辑。一般的做法是先用↑ 显示最后一条命令,然后用 Home 移动到命令最前,删除 cat,然后再输入 vim 命令。其实完全可以用 vim !$来代替。
:::

系统操作经验总结

:::

  1. 系统中大部分配置改动之后, 需要重启服务程序, 加载修改后的配置

  2. 系统对大小写是敏感

  3. 系统操作命令之后,没有任何消息,有可能是最好的消息

  4. 系统目录结构顶点就是根目录(一切从根开始)

  5. 运维人员所有操作或配置过程,都需要检查确认

  6. 在系统中一切皆文件

  7. 局部设置会优先于全局设置

  8. 系统中命令信息和所安装的软件包名称并不一定一致

  9. 交互过程: 方便初级运维人员管理系统服务程序

    免交互过程:高级运维人员提高工作效率
    :::

你可能感兴趣的:(Linux基础阶段,linux,运维,服务器)