三占从二

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Linux命令查询器

Linux命令大全(手册)

文件管理 目录管理 ls、cd、mkdir、rmdir    
  权限管理      
  文档管理
  • 目录查看、切换、创建、删除:ls、cd、mkdir、rmdir
  • 复制、删除、移动:cp、rm、mv
  • 创建:ln、touch、>
  • 显示文件内容:cat、tac、nl、more、less、head、tail
  • 统计、查找:wc、find
  • 搜索、排序、去重:grep、sort、uniq
  • 比较:comm、diff、sdiff、vimdiff
  • 解压缩:tar、gzip|gunzip、bzip2|bunzip2 、zip|unzip、xz 
   
  文件搜索 comm、diff、sdiff、vimdiff    
  备份压缩 tar、gzip|gunzip、bzip2|bunzip2 、zip|unzip、xz     
  文件传输 sz、rz    
用户管理 查看用户(组)及登录信息 whoami、who am i、who、w、users、id、last、lastb、lastlog、groups    
  用户(组)增加、修改、删除 useradd、usermod、userdel、groupadd、groupmod、groupdel、    
  用户(组)密码 passwd、chpasswd、gpasswd、chage    
  用户切换 su    
磁盘管理        
系统管理 系统状态      
  设备管理      
进程管理  

ps、pstree、pgrep

kill、killall、pkill

top、nice、renice

nohup

strace、ltrace

runlevel

init

service

   
         
网络通讯        
其它        

 

 

基础命令

man 命令:

1、Linux目录及文件操作指令

  • 目录查看、切换、创建、删除:ls、cd、mkdir、rmdir
  • 复制、删除、移动:cp、rm、mv
  • 创建:ln、touch、>
  • 显示文件内容:cat、tac、nl、more、less、head、tail
  • 统计、查找:wc、find
  • 搜索、排序、去重:grep、sort、uniq
  • 比较:comm、diff、sdiff、vimdiff
  • 解压缩:tar、gzip|gunzip、bzip2|bunzip2 、zip|unzip、xz 
  • tar命令用于打包文件和目录,gzip、bzip2和xz命令用于对单个文件进行压缩,zip和7z命令用于对多个文件和目录进行压缩。tar命令将多个文件或者文件夹打包成一个.tar文件,然后再使用gzip、bzip2或xz进行压缩

单个命令详解:

  • ls [option] [directory]: 列出目录信息
-a  :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-d  :仅列出目录本身,而不是列出目录内的文件数据(常用)
-l  :长数据串列出,包含文件的属性与权限等等数据;(常用)
-S  :根据文件大小排序
-X  :根据文件扩展名排序
-t  :以文件修改时间排序
-h  :以容易理解的格式列出文件大小 (例如 1K 234M 2G)
-R  :同时列出所有子目录层
...
  • cd [directory]:切换目录
cd /home/user:切换到指定绝对路径目录
cd Documents:切换到当前Documents子目录
cd ..:切换到上一级目录
cd ~:切换到当前用户的家目录
cd -:切换到上一个工作目录
cd /home/user/*/Documents:可以快速切换到符合条件的目录
cd $MYDIR:命令切换到MYDIR环境变量所代表的目录
  • pwd :显示目前的目录

pwd -L:默认,会把符号链接作为实际的路径来显示
pwd -P:会忽视所有符号链接(symbolic link),显示实际的物理路径
  • mkdir [-mpv] [directory]:创建一个新的目录

mkdir 命令的常用参数包括:
-m 或 --mode:设定权限模式(如755或644)。这允许在创建目录的同时设定其权限。
-p 或 --parents:允许创建多级目录,即如果父目录不存在,mkdir 将会创建它。
-v 或 --verbose:显示命令在执行过程中所创建的目录。

mkdir dir :创建单个目录
mkdir dir1 dir2 dir3 :创建多个目录
mkdir -p parent/child/subchild :创建多级目录
mkdir -m 755 directory :设置目录权限
mkdir -v newdir :创建目录后,打印出一条信息mkdir: created directory `newdir`
mkdir "dir 1 2" :创建带有空格等特殊字符的目录,使用引号
  • rmdir [-pv] [directory]:删除一个空的目录(里面不能有文件或文件夹)

rmdir命令常用参数包括:
-p 或 --parents:递归地删除目录,当子目录被删除后,如果父目录变为空,则也一并删除。
-v 或 --verbose:显示详细的处理信息。
--ignore-fail-on-non-empty:即使某些目录非空也不显示错误信息。

rmdir dir :删除单个空目录
rmdir -p parent_directory/child_directory :递归删除多级空目录
rmdir -v empty_directory :删除empty_directory,并显示关于删除操作的详细信息
rmdir --ignore-fail-on-non-empty directory_name :尝试删除非空目录但不显示错误
  • rm [-fir] [directory]: 移除文件或目录
-f  :强制删除文件或者目录
-i  :删除文件或目录前提示要用户确认
-r或者-R  :递归删除目录及其下属各级子目录和相应的文件,非常危险的选项!
  • cp [option] [source] [dest]: 复制文件或目录, 其中,源文件可以是一个文件或一个目录,目标文件可以是一个已存在的目录或一个新文件的路径。 

-a  :按原样进行复制。这个参数等同于-dpr,自动进行递归复制,保留所有属性,包括文件属性、目录属性和权限等。
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身,复制过去也是一个(link file);
-p  :保留源文件或目录的属性。复制时保留原始文件或目录的所有特性,包括文件或目录的所有者、组、时间戳等。
-r 或 -R:复制目录及其子目录的内容。如果源文件是一个目录,使用此参数复制整个目录树。
-f  :覆盖逻辑,force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    默认是会提示的,alias cp会发现cp的别名为cp -i,那就是说cp本身就是自带覆盖提醒,就算我们加上-f 的选项,它还是会优先匹配 -i 的选项,可通过unalias cp去掉别名
-i  :覆盖逻辑,若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u  :覆盖逻辑,若目标文件已经存在,且 source 比较新,就会询问是否覆盖!
-n  :覆盖逻辑,不要覆盖已经存在的文件。当目标文件已经存在时,不进行复制。
-b  :覆盖逻辑,备份目标文件。当目标文件已经存在时,在复制之前先创建一个备份文件,备份文件名称为:source+~
-l  :创建硬链接而不是复制文件。复制时创建一个目标文件的硬链接,而不是完全复制文件。
-s  :创建符号链接而不是复制文件。复制时创建一个目标文件的符号链接,而不是完全复制文件。cp -s 命令只能在当前目录下对源文件建立符号链接
-v  :显示复制的详细信息。在复制过程中,显示每个文件的名称。
  • mv [-ifnu] [source] [dist]: 移动文件或目录;更改文件或目录的名称 
-i : 覆盖文件前需要确认
-f : 若目标文件或目录已存在,直接覆盖
-n : 不覆盖已存在的文件
-u : 移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件
  • ln [directory]: 创建链接文件(又分硬链接与软链接)

-s : 软链接(符号链接),默认创建的是硬链接
-d : 允许超级用户制作目录的硬链接,一般操作系统是不允许的,需要先获取权限
-i : 交互模式,文件存在则提示用户是否覆盖
--backup[=CONTROL] : 备份已存在的目标文件

硬链接(共享物理空间):

    • 硬链接与目标文件共享相同的索引节点,实际上是同一底层文件的多个入口点
    • 硬链接不占用额外的磁盘空间,因为它们与目标文件共享相同的物理存储空间。
    • 硬链接只能链接到文件,不能链接到目录或不存在的目标。
    • 硬链接只能在同一个文件系统中创建,不能跨越文件系统边界
    • 删除硬链接时,只有当链接计数为零时,即所有的硬链接都被删除时,目标文件的存储空间才会被释放
    • 硬链接在文件系统备份时,会备份链接本身和共享的目标文件

软链接(类似快捷方式或别名):

    • 软链接是一个独立的文件,它包含的是指向目标文件或目录的路径。
    • 创建软链接时,软链接文件的大小会占用一些磁盘空间,而不是直接使用目标文件的大小。
    • 软链接可以链接到文件或目录,甚至可以链接到不存在的目标。
    • 通过软链接可以创建链式链接,即一个链接指向另一个链接。
    • 软链接可以跨越不同的文件系统和目录边界
    • 删除软链接不会影响目标文件或目录,而只会删除链接本身。
    • 在文件系统备份时,软链接只会备份链接文件本身,而不会备份目标对象

选择硬链接还是软连接的考虑因素

    • 硬链接只能指向同一文件系统中的现有文件,并且不能跨越分区或设备。而软连接没有这个限制。
    • 软连接可以指向目录,而硬链接只能指向一个具体的文件。
    • 如果需要在不同位置共享相同内容的多个副本,并且希望对所有副本进行更改时都反映出来,则应使用硬链接。
  • touch [file or directory]: 更改文件或目录的时间戳,如果文件不存在则创建它,功能同“>”
可选参数包括:
-c:如果文件不存在,则不创建新文件
-r:自定义时间戳应用于目标文件,而不是当前时间时间戳

cat file.txt   创建单个文件
> file.txt     创建单个文件
touch file1.txt file2.txt file3.txt  创建多个文件
touch {file1,file2,file3}.txt        创建多个文件
  •  cat [option] [file]:读取文件,并从第一行开始打印内容 
可选参数包括:
-s  :静默模式,连续的空行只显示一次
-b  :列出行号,仅针对非空白行做行号显示,空白行则跳过不标行号!
-n  :列出行号,连同空白行也会有行号,与 -b 的选项不同;
-E  :将结尾的断行字节 $ 显示出来;
-T  :将 [tab] 按键以 ^I 显示出来;
-v  :列出一些看不出来的特殊字符
-A  :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • tac [option] [file]:tac与cat命令刚好相反,文件内容从最后一行开始显示

– tac命令不会修改文件内容,只是将内容在输出时进行反向处理。

– 如果对内存的使用有限制时,tac命令可能会导致性能问题,可以考虑使用其他方式进行文件内容的反向处理。

-s :-separator指定文件中每行的分隔符。若没有指定分隔符,TAC命令默认将每行末尾的换行符作为分隔符。
-b :查来查去也没人说清楚到底咋回事
-r :查来查去也没人说清楚到底咋回事

tac file1.txt file2.txt            反向输出多个文件的内容
tac file.txt file2.txt > reversed_file.txt   命令将file.txt和file2.txt文件的内容逆序保存为reversed_file.txt文件
  • nl [option] [file]:显示文件内容及行
-b a :无论是否为空行都显示行号,等同于cat -n [file]
-b t :若为空行,则不显示行号,等同于cat -b [file],默认
-n ln :行号这列左对齐
-n rn :行号这列右对齐,默认
-n rz :行号这列右对齐,前面补0
-w :行号这列的占位数,默认长度为6

nl -b a -n rz -w 10 file.txt  自定义行号占位数且显示所有行
  • more [option] [file]:该命令显示文本文件的内容,一次显示一屏,满屏后停下来,可按如下键继续:

    1. Space键: 默认显示文本的下一屏内容

    2. Enter键: 默认显示文本的下一行内容

    3. d键或CTRL+D: 向下显示文本半屏,默认为11行

    4. b键或CTRL+B: 默认显示文本的上一屏内容

    5. q或INTERRUPT键: 退出more命令

-num :指定一个整数,表示一屏显示多少行
-d :在每屛底部显示信息,包括当前显示的百分比,按键提示等
-c或-p :不滚屏,在显示下一屏之前清屏
+num :从行号num开始显示
+/pattern :定义一字符串,在文件中查找该字符串,从字符串后显示

more +/abc a.txt  在a.txt中查找字符串"abc"并从该字符串处显示
  •  less [option] [file]:与more命令相似,分屏显示文件内容,less命令允许用户通过鼠标或方向键向前或向后浏览文件,按q键退出。
-i :搜索时忽略大小写,除非搜索串中包含大写字母
-l :搜索时忽略大小写
-m :显示读取文件的百分比
-M :显示读取文件的百分比、行号及总行数
-N :在每行前输出行号
-p pattern :定义一字符串,在文件中查找该字符串,并高亮显示

less -p abc a.txt   在a.txt中查找字符串"abc"并高亮显示
  • head/tail [option] [file]:显示文件的开头/结尾部分
-c :显示文件最前/最后面的NUM个字节
-n :显示文件最前/最后面的行,不指定此参数显示10行

head -c 5 a.txt|head -c5 a.txt                   显示a.txt前面的5个字节内容
head -n 5 a.txt|head -n5 a.txt|head -5 a.txt     显示a.txt前面的5行内容
tail -c 5 a.txt|tail -c5 a.txt                   显示a.txt后5个字节内容
tail -n 5 a.txt|tail -n5 a.txt|tail -5 a.txt     显示a.txt后5行内容
  • wc [option] [file]:统计给定文件中的字节数、字数、行数, 这个命令真他妈崩溃,一会算2个一会算3个
-l或-lines :统计行数,实验下来,最后一个空行不计算在内,如果多个空行,也是最后一个空行不计算在内,其它空行计算在内
-w或-words :统计字数,每行代表一个字,字是指以空格、tab、换行分隔的非零长度字符,空行也是不计算
-c或-bytes :统计字节数,一个汉字算作3个字节,每行后跟一个回车+换行,算2个字节。
-m或-chars :统计字符数,一个汉字算作一个字符,每行后跟一个回车+换行,算2个字符。
-L , --max-line-length : 显示最长行的长度,一个汉字算作2个长度;

例如文件test.txt(^M$代表回车换行)
1 123^M$
2 456^M$
3 博客园^M$
4 ^M$
5 def^M$
6 ^M$
7 ^M$-->不计算在内
wc test.txt  输出:6 4 30 test.txt,分别对应-l,-w,-c
wc -m test.txt 输出:24 test.txt
wc -L test.txt 输出:6 test.txt,"博客园"一个汉字算作2个长度
  • find [paths] [expression] [action]:按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件
Expression:
    -name pattern    搜索时使用 pattern 对文件名进行匹配,?可以表示任意一个单一的符号;* 可以表示任意数量(包括 0)的未知符号 
    -iname pattern   同 -name,忽略大小写 
    -path pattern    搜索时使用 pattern 对文件路径进行匹配 
    -ipath pattern   同 -path,忽略大小写
    -type t          根据文件类型搜索,f:文件 d:目录 l:符号链接 
    -empty           检索空文件或空目录 
    !                反义匹配
    -user uname      指定文件的属主
    -group gname     指定文件的属组 
    -atime n[smhdw]  距离文件上次被访问时的时间间隔,n:该文件n天前被修改过;n<0:该文件n天以内被修改过;n>0:该文件距离上次修改已经超过n天时间; 
    -ctime n[smhdw]  距离文件创建时的时间间隔,n:该文件n天前被修改过;n<0:该文件n天以内被修改过;n>0:该文件距离上次修改已经超过n天时间; 
    -mtime n[smhdw]  距离文件上次发生变更时的时间间隔,n:该文件n天前被修改过;n<0:该文件n天以内被修改过;n>0:该文件距离上次修改已经超过n天时间; 
    -size n[ckMGTP]  根据文件大小搜索,c:字节, k:Kb, M:Mb,  G:Gb,使用 + 或 - 符号表示大于或小于当前条件
    -perm mode       根据文件权限搜索,mode为u=rwx,g=rwx,o=rwx或a=rwx或数字(如755),rwx可选
    -maxdepth n      指定递归的最大层数为 n    
    -depth n         检索深度为 n 的文件,即位于指定目录以下 n 层的文件 
    -fstype type     指定文件所在的文件系统的类型 
 Action:
    -ls              打印搜索到的文件的详细信息 
    -delete          删除检索到的文件 
    -exec            对搜索到的结果执行特定的命令

    find /usr -name '*.txt'             查找 /usr 目录下所有文件名以 .txt 结尾的文件
    find /usr -name '????'              查找 /usr 目录下所有文件名刚好为 4 个字符的文件 
    find /usr -path '*/src/*.txt'       查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src
    find /usr -type d -name 'python*'   检索 /usr 下所有文件名以 python 开头的目录
    find /usr -type d -empty            检索/usr 下目录下所有的空目录
    find /usr -type f ! -name '*.txt'   检索 /usr 下所有文件名不以 .txt 为后缀的文件
    find /usr -type f ! -empty          检索 /usr 下所有内容不为空的文件
    find / -type f -user www            检索根目录下所有属主为 www 的文件
    find /usr -type f -mtime 2                   检索 /usr 下两天前被修改过的文件
    find /usr -type f -mtime +50 -mtime -100     检索 /usr 下 50 到 100 天之前修改过的文件
    find /usr -type f -mtime 2 -amin 5           检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件
    find / -size +1G                     检索文件大小高于 1 GB 的文件
    find /usr -perm u=rwx,g=rx,o=rx      检索 /usr 目录下权限为 rwxr-xr-x 的文件
    find /usr -perm a=rx                 检索 /usr 目录下所有权限为 r-xr-xr-x(即系统中的所有用户都只有读写权限)的文件和目录
    find / -type f -perm /a=x            检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么, / 符号即用来表示只匹配权限的某个子集
    find /usr -perm 644                  检索 /usr 目录下权限为 644(即 rwxr-xr-x)的文件
    find / -maxdepth 3                   检索时向下递归的层数最大为 3
    
    find / -type file -size +1G -ls               浏览所有 1G 以上大小的文件的详细信息
    find /usr -type d -empty -delete              删除 usr 目录下所有的空目录
    find /usr -type f -name '*.mp3' -exec cp {} /media/MyDrive ';' 将 usr 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive),其中的大括号({})作为检索到的文件的 占位符 ,而分号( ;)作为命令结束的标志。
    find /usr -type f -exec grep -l hello {} ';'  在 usr 目录下的所有文件中检索字符串 hello
    find /usr -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} + 将 usr 目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中
另外,find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o,通过这两个选项可以对搜索条件进行更复杂的组合,还可以使用小括号对搜索条件进行分组。注意 find 命令中的小括号常需要用单引号包裹起来。
    find /usr -type d -name 'python*'  等同于  find /usr -type d -a -name 'python*'
    更复杂的组合形式如: find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
  • grep [option] pattern [file1] [file2...]:查找文件里符合条件的字符串或正则表达式
-i:忽略大小写进行匹配。
-v:反向匹配,输出不包含匹配模式的行。
-r:递归搜索目录和子目录中的文件。
-l:仅显示包含匹配模式的文件名,而不是匹配的行。
-n:显示匹配的行及其行号。
-w:只匹配整个单词,而不是字符串的一部分。
-A <num>:显示匹配行以及后续 <num> 行的内容。
-B <num>:显示匹配行以及前面 <num> 行的内容。
-C <num>:显示匹配行以及前后各 <num> 行的内容。
  • sort [option] [file] :对文本文件进行排序,可以按行、字段或数字进行排序,并支持各种排序选项,以满足不同的排序需求
-r:逆序排序(降序)。
-n:按数值进行排序。
-k 字段:按指定的字段进行排序。该参数可指定多个字段,使用逗号分隔。默认字段分隔符为制表符或空格。
-t 分隔符:指定字段的分隔符。
-u:去除重复行,仅保留第一次出现的行。
-f:忽略大小写进行排序。
-b:忽略行首的空白字符进行排序。
-c:检查文件是否已经排好序,如果未排序则输出第一个不符合排序顺序的行。

sort -k 2 -t ' ' data.txt 以空格分隔,按第二个字段(年龄)进行排序
sort -k 3r -k 2n data.txt 先-k 3r 指定按第三个字段降序排序(r 表示逆序),再使用 -k 2n 指定按第二个字段升序排序(n 表示按数值排序)
echo -e "3\n1\n2" | sort -n 从标准输入读取数据并进行排序
  • uniq [option] [input[output]]:用于检查及删除文本文件中重复出现的行列。它通过对输入文本进行比较,找出相邻的重复行,并只输出其中的一行。如果文件没有排序,uniq 默认只会删除相邻的重复行,不会删除不相邻的重复行。因此,通常在使用 uniq 之前,会先使用 sort 命令对文件进行排序。
-c:在每行前面显示该行重复出现的次数
-d:只输出重复的行,每个组打印一行
-D:打印所有重复的行
-u:只显示唯一的一行
-i:比较时忽略大小写
-f, --skip-fields=N:比较时会跳过前面N个字段,-f 1代表跳过第一个字段,从第2个字段开好比较
-s, --skip-chars=N:比较时会跳过前面N个字符
-w, --check-chars=N:只比较每一行的前N个字符,之后的字符不再比较
-z:行分隔符是NUL,而不是换行符

cat a |grep -iE "abcd|2374"|sort|uniq -c|sort  -nr  有一个a文本,要求将所有包含abcd和2374的字符过滤出来,并统计这些字符重复出现的次数。
  • comm [option] file1 file2:用于两个文件之间的比较,以便执行交集、求差、以及差集操作
    • 交集:打印出两个文件所共有的行。
    • 求差:打印出指定文件所包含的且不相同的行(也就是去掉交集)。
    • 差集:打印出包含在一个文件中,但不包含在其他指定文件中的行。
如果不附带选项,程序会生成三列输出。第一列包含文件1 特有的行,第二列包含文件2 特有的行,而第三列包含两个文件共有的行。
  -1    不输出文件1 特有的行
  -2    不输出文件2 特有的行
  -3    不输出两个文件共有的行
--check-order     检查输入是否被正确排序,即使所有输入行均成对
--nocheck-order   不检查输入是否被正确排序
--output-delimiter=STR  依照STR 分列

comm aaa.txt bbb.txt -1 -2 两个文件的交集,需要删除第一列和第二列
comm aaa.txt bbb.txt -3 | sed 's/^\t//' 两个文件中不相同的行,需要删除第三列,sed 's/^\t//'是将制表符\t删除,以便把两列合并成一列。
comm aaa.txt bbb.txt -2 -3  两个文件的差集,需要删除第二列和第三列
  • diff [option] file1 file2:用于两个文件之间的比较
-u 或 --unified:以上下文格式显示差异,并显示更多的上下文行。
-c 或 --context:以上下文格式显示差异。
-r 或 --recursive:递归比较目录下的文件。
-i 或 --ignore-case:忽略大小写的差异。
-q 或 --brief:只显示文件是否不同,不显示具体差异内容。

diff -q dir1 dir2  简洁地报告文件是否不同,而不显示具体差异
  • sdiff [option] file1 file2:用于以并排的方式比较和显示两个文件的差异。它以逐行的方式对比文件,并以一种易于阅读的格式显示差异。
    • 文件类型:主要用于文本文件的比较。如果要比较二进制文件,请使用diff命令;
    • 文件大小:对于非常大的文件,sdiff可能会消耗较多的内存和CPU资源。在这种情况下,考虑使用diff命令并将结果保存到文件中进行查看。
    • 文件编码:确保两个文件的编码格式相同,以避免因编码不一致导致的比较错误。
-w <宽度>:指定每行显示的最大宽度。
-o <输出文件>:互动式操作,并将比较结果输出到指定的文件中。
-s:仅显示差异行
-i:忽略大小写的区别
-E:忽略由制表符宽度造成的差异
-b:忽略由空格数不同造成的差异
-W:忽略所有空白字符
-B:忽略任何因空行而造成的差异
-a:所有文件都以文本方式处理
-l:当有两行相同时只显示左栏的一行
-t:将输出中的 tab 转换成空格

sdiff -s file1.txt file2.txt 仅显示差异行
sdiff file1.txt file2.txt -o diff.txt  将比较结果保存到文件
  • vimdiff file1 file2:用于在 Vim 编辑器中比较两个文件并可视化显示差异
在 vimdiff 模式下,可以使用一些命令来导航差异并查看文件内容。以下是一些常用的导航命令:
    ]c:跳到下一个差异处
    [c:跳到上一个差异处
    Ctrl + W:在两个文件之间切换焦点
    Ctrl + W + L:将焦点切换到右侧文件
    Ctrl + W + H:将焦点切换到左侧文件
vimdiff 不仅可以比较文件差异,还可以进行合并操作。以下是一些常用的合并命令:
    dp:将当前差异的右侧内容复制到左侧文件中
    do:将当前差异的左侧内容复制到右侧文件中
    :diffget:将两个文件的差异部分合并到当前文件中
    :diffupdate:更新文件差异,用于在合并过程中同步差异的显示
    :diffthis:将当前文件标记为要进行合并的文件
    :diffg RE:将 RE(一个正则表达式)所匹配的差异部分合并到当前文件中
    :diffp RE:将 RE(一个正则表达式)所匹配的当前文件的差异部分复制到另一个文件中
完成文件差异的比较和合并后,可以执行以下命令保存并退出 vimdiff:
    :wqa:保存所有文件并退出 vimdiff
    :qa!:强制退出 vimdiff,不保存修改
  • tar [option] [new.tar| new.tar.gz | new.tar.bz2] file1 file2:解压缩命令
-z:使用gzip进行压缩和解压缩
-j:使用bzip2进行压缩和解压缩
-J:使用xz进行压缩和解压缩
-v:详细报告tar处理的文件信息(verbose)
-f:使用档案文件或设备,这个选项通常是必选的(file)
-c:创建新的档案文件(create)
-C:解压到指定的目录,指定的目录必须是存在的
-x:解压缩文件或目录(extract)
-t:显示压缩包的内容
-r:往压缩包中增加文件
-u:更新压缩包中的文件
-d:删除压缩包中的文件

tar -czvf output.tar.gz ./file1.txt ./file2.txt 压缩指定路径下的多个文件
tar -tzvf ./output.tar.gz  查看指定路径下压缩包中的文件
tar -xzvf ./output.tar.gz  将整个压缩包解压到当前目录
tar -xzvf ./output.tar.gz ./001/file1.txt ./001/file2.txt 将压缩包中的部分文件解压到当前目录
tar -xzvf ./output.tar.gz -C ./temp 解压到指定的目录
tar -rf all.tar *.gif  这条命令是将所有.gif的文件增加到all.tar的包里面去
tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件
  • gzip|gunzip [option] file1 file2:解压缩命令,压缩后的文件后缀名为.gz只能用于压缩单个文件,不能压缩文件夹
-k	保留源文件(默认情况下,源文件压缩后会被删除),不同的gzip版本可能没有-k选项
-r	递归处理所有子文件(将文件夹中的所有子文件压缩为.gz,每一个文件单独压缩成一个.gz)
-v	显示执行过程中详细信息
-l	显示压缩包内文件信息
-d  解压文件,相当于gunzip(默认情况下,源文件解压后会被删除)

gzip aaa.txt       将aaa.txt压缩为aaa.txt.gz,并将aaa.txt删除
gzip -l aaa.txt.gz 显示压缩包内文件信息
gzip -d aaa.txt.gz | gunzip aaa.txt.gz 解压aaa.txt.gz为aaa.txt,并将aaa.txt.gz删除
  • bzip2|bunzip2  [option] file1 file2:解压缩命令,压缩后的文件后缀名为.bz2。采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。
-c:将输出结果发送到标准输出,而不是解压为一个文件。
-d:解压缩文件。
-f:强制操作,覆盖已存在的输出文件。
-k:保留原始文件,不删除压缩或解压缩的文件。
-s:显示压缩比率,以及压缩前后的文件大小。
-t:测试压缩文件是否完好无损。
-z:压缩文件。这是bzip2命令的默认操作,可以省略。

bzip2 -dc file.bz2 解压并输出文件file的内容,不会产生新文件
bzip2 -dc file.bz2 > ./newFile.txt  解压到新的文件,会产生新的文件
tar -cjvf archive.tar.bz2 ./*  递归地压缩指定目录及其所有内容,并生成archive.tar.bz2
tar -tjvf archive.tar.bz2 ./*  查看压缩包内容
tar -xjvf archive.tar.bz2 -C ./Tmp 解压到指定目录
  • zip|unzip newFile.zip file1 file2:解压缩命令,压缩后的文件后缀名为.zip
zip newFile.zip ./路径1/文件1 ./路径2/文件2 ...压缩指定的多个文件
zip newFile.zip ./路径/2024-*.txt  压缩指定通配符的多个文件
zipinfo newFile.zip 查看压缩包信息,包括文件列表、大小、压缩率等
unzip -l newFile.zip 显示压缩包内文件列表
unzip out.zip -d ./temp 解压压缩包中的文件到指定路径temp
unzip out.zip dir/file1.txt -d ./temp 只解压压缩包中的file1文件到指定路径temp
unzip -j out.zip -d ./temp 只解压缩文件,不解压目录
  • xz [option] file1 file2:解压缩命令,压缩后的文件后缀名为.xz
-k:保留原始文件,不删除压缩或解压缩的文件。
-d:解压缩文件。
-t:测试压缩文件是否完好无损
-l:列出压缩文件的内容

 2、Linux目录及文件操作指令

权限管理命令(只有root才能执行)

chmod -R 777 dir/file # 修改文件或目录权限
chmod -R ugo+rwx dir/file # 增加文件或目录权限
chmod -R ugo-rwx dir/file # 删除文件或目录权限

chown -R toUser dir/file # 修改文件或目录的所有者
chown -R toUser:toGroup dir/file # 同时修改文件或目录的所有者和所属用户组

chgrp -R toGroup dir/file # 修改文件或目录的所属用户组
chgrp --reference=toFile fromFile # 修改fromFile文件或目录的所属用户组改为同toFile

 

2、用户管理

whoami:显示当前终端会话的用户名,等同于id -un命令

who am i:显示登录当前 Linux 系统的用户名、登录终端和登录时间,‌即第一次登录终端的用户,‌等同于 who -m 命令(通常会使用su命令切换用户)

who [-mqu]:显示当前所有登录系统的用户信息

[root@iZbp1hog1euguwis9nc1f5Z ~]# whoami
root
[root@iZbp1hog1euguwis9nc1f5Z ~]# who am i
root     pts/0        2024-08-08 10:13 (116.227.119.161)
[root@iZbp1hog1euguwis9nc1f5Z ~]# su www
bash-4.1$ whoami
www
bash-4.1$ who am i
root     pts/0        2024-08-08 10:13 (116.227.119.161)
[root@iZbp1hog1euguwis9nc1f5Z ~]# who -m    #只显示运行 who 命令的用户名、登录终端和登录时间
root     pts/0        2024-08-08 10:27 (116.227.119.161)
[root@iZbp1hog1euguwis9nc1f5Z ~]# who -q    #只显示用户的登录账号和登录用户的数量
root root
# users=2
[root@iZbp1hog1euguwis9nc1f5Z ~]# who -u    #显示列标题
root     pts/0        2024-08-08 10:27   .         30839 (116.227.119.161)
root     pts/1        2024-08-08 10:27 00:01       30863 (116.227.119.161)

 w [-husfi] [userName]:显示当前已登录用户信息以及这些用户目前正在做什么,USER - 登陆用户、TIY - 登录用户使用的终端名、FROM - 登陆位置IP、login@ - 用户登录时长、IDLE - 自用户上一次与终端进行交互以来的空闲时间、JCPU - 附加到tty的所有进程使用的时间、PCPU - 用户当前进程所用的时间、WHAT - 用户当前的进程及选项/参数。

users: 仅显示当前已登录用户的用户名

[root@iZbp1hog1euguwis9nc1f5Z ~]# w
 11:34:56 up 304 days, 16:46,  2 users,  load average: 0.26, 0.26, 0.19
 #当前时间,系统已运行304天16小时46分,2个活跃用户,当前CPU在过去1,5,10分钟内的负载程度,数值越小,系统负载越轻
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    116.227.119.161  11:33    0.00s  0.01s  0.00s w
root     pts/1    116.227.119.161  11:33    1:52   0.13s  0.13s top
[root@iZbp1hog1euguwis9nc1f5Z ~]# w -h    #不显示头信息
root     pts/0    116.227.119.161  11:33    3.00s  0.01s  0.00s w -h
root     pts/1    116.227.119.161  11:33    1:55   0.13s  0.13s top
[root@iZbp1hog1euguwis9nc1f5Z ~]# w -u zzq    #按指定用户名过虑
 11:35:06 up 304 days, 16:46,  2 users,  load average: 0.22, 0.26, 0.18
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
[root@iZbp1hog1euguwis9nc1f5Z ~]# w -s    #使用短输出格式
 11:35:11 up 304 days, 16:46,  2 users,  load average: 0.20, 0.25, 0.18
USER     TTY      FROM              IDLE WHAT
root     pts/0    116.227.119.161   7.00s w -s
root     pts/1    116.227.119.161   2:07  top
[root@iZbp1hog1euguwis9nc1f5Z ~]# w -f    #不显示用户登录来源,默认显示
 11:35:14 up 304 days, 16:46,  2 users,  load average: 0.19, 0.25, 0.18
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0     11:33    2.00s  0.01s  0.00s w -f
root     pts/1     11:33    2:10   0.15s  0.15s top
[root@iZbp1hog1euguwis9nc1f5Z ~]# w -i    #显示IP地址而不是主机名,默认就是IP
 11:35:17 up 304 days, 16:46,  2 users,  load average: 0.19, 0.25, 0.18
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    116.227.119.161  11:33    5.00s  0.02s  0.00s w -i
root     pts/1    116.227.119.161  11:33    2:13   0.16s  0.16s top
[root@iZbp1hog1euguwis9nc1f5Z ~]# users
root root

id [-gGun] [userName]:显示用户与用户组信息,用户id范围: 0-65535,0: Linux超级用户ID,1-999:Liunx系统自用ID,1000-65535:用户级ID。ID设定规则都被记录在/etc/login.defs文件中

[root@iZbp1hog1euguwis9nc1f5Z ~]# id        #默认显示当前用户信息
uid=0(root) gid=0(root) groups=0(root)
[root@iZbp1hog1euguwis9nc1f5Z ~]# id www    #显示用户www的信息
uid=1001(www) gid=1001(www) groups=1001(www),10(wheel)
[root@iZbp1hog1euguwis9nc1f5Z ~]# id -u www    #只显示用户www的用户id
1001
[root@iZbp1hog1euguwis9nc1f5Z ~]# id -g www    #只显示用户www的用户组id
1001
[root@iZbp1hog1euguwis9nc1f5Z ~]# id -G www    #只显示用户www的所用用户组id,用户仅有一个基本组,但可以有多个扩展组
1001 10
[root@iZbp1hog1euguwis9nc1f5Z ~]# id -gn www    #只显示用户www的用户组名称,-n参数不能单独使用
www
[root@iZbp1hog1euguwis9nc1f5Z ~]# id -Gn www    #只显示用户www的所用用户组名称,用户仅有一个基本组,但可以有多个扩展组
www wheel
[root@iZbp1hog1euguwis9nc1f5Z ~]# id -un www    #只显示用户www的用户名称
www
[root@iZbp1hog1euguwis9nc1f5Z ~]# id xxx        #不存在用户,查不到信息
id: xxx: no such user

last [-adR][-f filePath][-n rowNum] [userName]:显示用户历史登录情况。读取系统登录历史日志文件/var/log/wtmp并按照用户名、登录终端、来源终端、时间等信息进行划分。

lastb [-adR][-f filePath][-n rowNum][userName]:读取/var/log/btmp文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。用于显示用户错误的登录列表,可以发现系统的登录异常。

lastlog [-btu]:格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。

[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2     #只显示前n行 
root     pts/1        116.227.119.161  Fri Aug  9 13:47   still logged in   
root     pts/0        116.227.119.161  Fri Aug  9 13:47   still logged in   

wtmp begins Wed Jul 27 12:10:43 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2 -a    #将主机名或IP地址显示在最后面
root     pts/1        Fri Aug  9 13:47   still logged in    116.227.119.161
root     pts/0        Fri Aug  9 13:47   still logged in    116.227.119.161

wtmp begins Wed Jul 27 12:10:43 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2 -d    #将IP地址转换成主机名显示  
root     pts/1        116.227.119.161  Fri Aug  9 13:47   still logged in   
root     pts/0        116.227.119.161  Fri Aug  9 13:47   still logged in   

wtmp begins Wed Jul 27 12:10:43 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2 -R    #不显示主机名或IP地址
root     pts/1        Fri Aug  9 13:47   still logged in   
root     pts/0        Fri Aug  9 13:47   still logged in   

wtmp begins Wed Jul 27 12:10:43 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# last -x    #显示系统的开关机历史信息
...
reboot   system boot  3.10.0-1160.71.1 Fri Aug 26 02:33 - 18:11 (391+15:37) 
shutdown system down  3.10.0-1160.71.1 Wed Jul 27 12:10 - 02:33 (29+14:23)  
[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2 -f /var/log/wtmp     #指定记录文件。预设last指令会去读取/var/log目录里的wtmp文件;)
root     pts/1        116.227.119.161  Fri Aug  9 13:47   still logged in   
root     pts/0        116.227.119.161  Fri Aug  9 13:47   still logged in   

wtmp begins Wed Jul 27 12:10:43 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2 -F    #显示完整的登录时间和日期
root     pts/1        116.227.119.161  Fri Aug  9 13:47:32 2024   still logged in                      
root     pts/0        116.227.119.161  Fri Aug  9 13:47:31 2024   still logged in                      

wtmp begins Wed Jul 27 12:10:43 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# last -n 2 -t 20240808000000    #显示指定时间之前的行,格式:YYYYMMDDHHMMSS
root     pts/1        116.227.119.161  Wed Aug  7 19:20 - 19:47  (00:26)    
root     pts/0        116.227.119.161  Wed Aug  7 19:20 - 19:47  (00:26)  
############################################################################
[root@iZbp1hog1euguwis9nc1f5Z log]# lastb -n 2    #只显示前n行 
ftp      ssh:notty    47.110.180.34    Fri Aug  9 01:27 - 01:27  (00:00)    
ftp      ssh:notty    47.110.180.32    Fri Aug  9 01:27 - 01:27  (00:00)    

btmp begins Sat Oct  1 11:22:48 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# lastb -n 2 -a #将主机名或IP地址显示在最后面
ftp      ssh:notty    Fri Aug  9 01:27 - 01:27  (00:00)     47.110.180.34
ftp      ssh:notty    Fri Aug  9 01:27 - 01:27  (00:00)     47.110.180.32

btmp begins Sat Oct  1 11:22:48 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# lastb -n 2 -d    #将IP地址转换成主机名显示  
ftp      ssh:notty    47.110.180.34    Fri Aug  9 01:27 - 01:27  (00:00)    
ftp      ssh:notty    47.110.180.32    Fri Aug  9 01:27 - 01:27  (00:00)    

btmp begins Sat Oct  1 11:22:48 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# lastb -n 2 -R    #不显示主机名或IP地址 
ftp      ssh:notty    Fri Aug  9 01:27 - 01:27  (00:00)    
ftp      ssh:notty    Fri Aug  9 01:27 - 01:27  (00:00)    

btmp begins Sat Oct  1 11:22:48 2022
[root@iZbp1hog1euguwis9nc1f5Z log]# lastb -n 2 -f /var/log/btmp    #指定记录文件。预设lastb指令会去读取/var/log目录里的btmp文件;)    
ftp      ssh:notty    47.110.180.32    Fri Aug  9 01:27 - 01:27  (00:00)    
ftp      ssh:notty    47.110.180.34    Fri Aug  9 01:27 - 01:27  (00:00)    

btmp begins Sat Oct  1 11:22:48 2022
############################################################################
[root@iZbp1hog1euguwis9nc1f5Z log]# lastlog -b 10    #显示指定天数前的登录信息
Username         Port     From             Latest
bin                                        **Never logged in**
zzq              pts/1    180.158.174.147  Thu Jul 25 15:18:34 +0800 2024
[root@iZbp1hog1euguwis9nc1f5Z log]# lastlog -t 10    #显示指定天数以来的登录信息
Username         Port     From             Latest
root             pts/1    116.227.119.161  Fri Aug  9 13:47:32 +0800 2024
www              pts/0                     Fri Aug  9 11:26:10 +0800 2024
[root@iZbp1hog1euguwis9nc1f5Z log]# lastlog -u zzq    #显示指定用户的最近登录信息
Username         Port     From             Latest
zzq              pts/1    180.158.174.147  Thu Jul 25 15:18:34 +0800 2024

 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]:增加用户。

创建一个新用户之后,会在下面文件中自动生成内容:
  /etc/passwd:生成用户信息
  /etc/shadow:生成密码信息
  /etc/group:生成用户组信息
  /etc/gshadow:生成用户组密码信息
  /home/tom:创建家目录
  /var/spool/mail/tom:创建用户邮箱目录

useradd默认用户配置/etc/default/useradd
GROUP=100          #用户默认组,对应组名users
HOME=/home         #用户家目录
INACTIVE=-1        #是否启用帐号过期停权,-1表示不启用
EXPIRE=           #帐号终止日期,不设置表示不启用
SHELL=/bin/bash      #默认shell
SKEL=/etc/skel          #默认模板目录,创建后会copy至家目录
CREATE_MAIL_SPOOL=yes   #是否建立邮箱

useradd默认密码配置/etc/login.defs
PASS_MAX_DAYS 90                 #密码有效期
PASS_MIN_DAYS 7                    #密码修改间隔,0代表任何时候都可以更改
PASS_MIN_LEN   8                    #密码最小位位数
PASS_WARN_AGE 7                  #密码到期警告的天数
UID_MIN  1000                         #最小UID范围
UID_MAX  60000                      #最大UID范围
ENCRYPT_METHOD  SHA512    #加密模式

[root@iZbp1hog1euguwis9nc1f5Z mail]# useradd test1                #使用默认配置创建用户test1
[root@iZbp1hog1euguwis9nc1f5Z ~]# id test1                        
uid=1002(test1) gid=1002(test1) groups=1002(test1)
[root@iZbp1hog1euguwis9nc1f5Z mail]# grep "test1" /etc/passwd     #生成用户test1的密码信息
test1:x:1002:1002::/home/test1:/bin/bash    
#用户名:x代表密码被加密:用户ID:组ID:用户描述:家目录:缺省shell
[root@iZbp1hog1euguwis9nc1f5Z mail]# grep "test1" /etc/shadow     #生成用户test1的密码信息
test1:!!:19944:7:90:7:::    
#用户名:被加密的密码:创建日期与今天相隔的天数:密码最短使用天数:密码有效期:密码过期前警告天数:密码失效后多少天停止账号:禁用天数:过期天数
[root@iZbp1hog1euguwis9nc1f5Z mail]# grep "test1" /etc/group      #生成用户test1的用户组信息
test1:x:1002:    #组名:x代表密码被加密:组ID:group所拥有的用户,多个用[,]分割
[root@iZbp1hog1euguwis9nc1f5Z mail]# grep "test1" /etc/gshadow    #生成用户test1的用户组密码信息
test1:!::    #组名:加密密码:组管理员:组附加用户列表
[root@iZbp1hog1euguwis9nc1f5Z mail]# ls /home/test1               #生成用户test1的家目录
[root@iZbp1hog1euguwis9nc1f5Z mail]# ls /var/spool/mail/test1     #生成用户test1的邮箱目录
/var/spool/mail/test1
#########################################################################################################################
[root@iZbp1hog1euguwis9nc1f5Z home]# useradd -c "test2 user" -d /home/testHome -m -e '2024-12-31' -f 3 -u 5678 -o -g www -G www,root  -p 12345678 -k /etc/shel -s /bin/bash test2 
[root@iZbp1hog1euguwis9nc1f5Z home]# id test2
uid=5678(test2) gid=1001(www) groups=1001(www),0(root)
[root@iZbp1hog1euguwis9nc1f5Z home]# grep "test2" /etc/passwd    #生成用户test2的密码信息
test2:x:5678:1001:test2 user:/home/testHome:/bin/bash
[root@iZbp1hog1euguwis9nc1f5Z home]# grep "test2" /etc/shadow    #生成用户test2的密码信息
test2:12345678:19944:7:90:7:3:20088:
[root@iZbp1hog1euguwis9nc1f5Z home]# grep "test2" /etc/group    #生成用户test2的用户组信息
root:x:0:test2
www:x:1001:test2
[root@iZbp1hog1euguwis9nc1f5Z home]# grep "test2" /etc/gshadow    #生成用户test2的用户组密码信息
root:::test2
www:!::test2
[root@iZbp1hog1euguwis9nc1f5Z home]# ls /var/spool/mail/test2    #生成用户test2的邮箱目录
/var/spool/mail/test2

-c:	用户的注释信息
-d:	指定用户的家目录,-m 选项可以自动创建主目录。
-m: 如果用户的家目录不存在,则创建
-e:	账户的到期时间,格式为 YYYY-MM-DD
-f:指定用户账号多久不活动后自动失效,单位为天
-u: 指定该用户的默认UID,默认是不允许重复的
-o:	允许使用一个重复的UID
-g:	指定一个初始的用户基本组(必须已存在的),gid或名称都可以
-G:	指定一个或多个扩展组
-p:	指定该用户的密码
-k:	当adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的,默认/etc/shel
-s:	指定该用户的默认Shell解释器,默认/bin/bash
-r: 创建系统用户
-M:	不创建用户家目录
-N:	不创建与用户同名的基本用户组
-U:默认选项,创建一个跟用户名一样的组
  • usermod [option] userName:修改用户的基本信息
-c:	修改用户的注释信息
-d:	修改用户的家目录
-e:	修改帐号的有效期限;
-f:	修改在密码过期后多少天即关闭该帐号;
-g:	修改用户所属的群组;
-G:	修改用户所属的附加群组;
-aG:	增加用户所属的附加群组;
-l:	修改用户帐号名称;
-s:	修改用户登入后所使用的shell;
-u:	修改用户ID;
-L:锁定用户密码,使密码无效;
-U:解除密码锁定
[root@iZbp1hog1euguwis9nc1f5Z ~]# usermod -l test22 test2
[root@iZbp1hog1euguwis9nc1f5Z ~]# id test2
id: test2: no such user
[root@iZbp1hog1euguwis9nc1f5Z ~]# id test22
uid=6678(test22) gid=1001(www) groups=1001(www),0(root)
[root@iZbp1hog1euguwis9nc1f5Z ~]# usermod -L test22    #用户锁定,密码前+!
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/shadow|grep test
test22:!12345678:19944:7:90:7:3:20088:
[root@iZbp1hog1euguwis9nc1f5Z ~]# usermod -U test22    #用户解锁
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/shadow|grep test
test22:12345678:19944:7:90:7:3:20088:
  • userdel [-rf] userName:删除用户
userdel -r test    #删除用户test, -r表示:删除用户的同时删除用户家目录,删除前请备份
userdel -f test    #强制删除用户,即使用户当前已登录
会自动删除下面的文件:
  ①、删除 /etc/passwd 文件的用户信息
  ②、删除 /etc/shadow 文件的用户密码信息
  ③、删除/etc/group 文件的用户组信息
  ④、删除 /etc/gshadow 文件的用户组密码信息
  ⑤、删除用户的邮件信息 rm -rf /var/spool/mail/用户名
  ⑥、删除用户的家目录 rm -rf /home/用户名
  • groupadd [-fgor] groupName:增加用户组
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupadd -g 344 grouptest       #指定新建工作组的id
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep grouptest
grouptest:x:344:
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupadd -g 344 -o grouptest    #允许添加组ID号不唯一的工作组
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep grouptest
grouptest:x:344:
grouptest2:x:344:
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupadd -f grouptest     #如果新用户组已存在,则会强制创建一个新的用户组,而不会发生任何错误
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupadd -r grouptest3    #创建系统工作组,系统工作组的组ID小于1000,并且不会显示在登录界面的用户列表中
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupadd -r grouptest4    #非系统用户ID大于1000
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep grouptest
grouptest:x:344:
grouptest2:x:344:
grouptest3:x:343:
grouptest4:x:1002:
  • groupmod [-gno] groupName:修改用户组
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep grouptest2
grouptest2:x:344:
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupmod -g 345 grouptest2            #修改群组ID
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep grouptest2
grouptest2:x:345:
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupmod -n grouptest22 grouptest2    #修改群组名称
grouptest22:x:345:
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupmod -o -g 343 grouptest22        #重复使用群组ID,组ID343已经存在
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep grouptest
grouptest3:x:343:
grouptest22:x:343:
  • groupdel groupName:删除用户组,本命令要修改的系统文件包括/ect/group/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/gshadow|grep group
grouptest:!::
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep group
grouptest:x:344:
[root@iZbp1hog1euguwis9nc1f5Z ~]# groupdel grouptest    #删除用户组grouptest
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/group|grep group
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/gshadow|grep group
  • passwd:更改用户密码,root用户能修改任何用户的密码,普通用户只能修改自己的密码,语法为 passwd,后面不能加普通用户名,而且密码要符合密码规则,不然修改不了
-S:列出密码的相关信息,仅有系统管理者才能使用;
-d:删除密码,仅有系统管理者才能使用;
-l:暂时锁定用户,该选项会在 /etc/shadow 文件中指定用户的加密密码串前添加 "!!",使密码失效,与usermod -L区别是加2个"!!"
-u:解开已上锁的帐号
-n 天数:设置该用户修改密码后,多长时间不能再次修改密码,也就是修改 /etc/shadow 文件中各行密码的第 4 个字段;
-x 天数:设置该用户的密码有效期,对应 /etc/shadow 文件中各行密码的第 5 个字段;
-w 天数:设置用户密码过期前的警告天数,对于 /etc/shadow 文件中各行密码的第 6 个字段;
-i 日期:设置用户密码失效日期,密码失效后几天停止账号,对应 /etc/shadow 文件中各行密码的第 7 个字段。
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -S test    #列出密码的相关信息
test PS 2024-08-09 7 90 7 3 (Alternate authentication scheme in use.)密码修改间隔,
#NP|LK|PS分别表示账号无密码|锁定|正常,2024-08-09表示最后一次更改密码的日期,7表示密码最短使用时间,多长时间不能再次修改密码,90表示密码使用的最长时间,7表示密码需要更改的提前天数,3表示密码的失效时间。
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -d test    #删除用户密码
Removing password for user test.
passwd: Success
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -S test    #列出密码的相关信息
test NP 2024-08-12 7 90 7 3 (Empty password.)
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd test       #设定新密码
Changing password for user test.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -l test    #暂时锁定用户密码
Locking password for user test.
passwd: Success
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -S test
test LK 2024-08-12 7 90 7 3 (Password locked.)
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -u test    #解锁用户
Unlocking password for user test22.
passwd: Success
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -S test
test PS 2024-08-12 7 90 7 3 (Password set, SHA512 crypt.)
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -n 10 test    #设置密码最短使用时间10天,10天内不能再次修改密码
Adjusting aging data for user test22.
passwd: Success
[root@iZbp1hog1euguwis9nc1f5Z ~]# passwd -S test
test22 PS 2024-08-12 10 90 7 3 (Password set, SHA512 crypt.)
  • chpasswd [-em]:批量更新用户口令的工具
[root@iZbp1hog1euguwis9nc1f5Z ~]# echo "test:123456789"|chpasswd #修改单个用户密码
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/shadow|grep test
test:$6$ocEGm/8CjD1/56$jyXPHqInY2IP2Lm.eR7DepCWNLMgoN/OYakqFWmNfCOa1q74eqGlQxDh7Prqvyn5p3WRef8KL46HY2ja9vnsZ/:19947:9:90:7:3:20088:
[root@iZbp1hog1euguwis9nc1f5Z ~]# chpasswd -c NONE    #从标准输入批量修改用户密码,密码使用明文,一行代表一个用户,使用ctl+D结束输入
test:12345678
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat /etc/shadow|grep test
test:$6$g0Kqf/rdOS7/Er4$lUQq7nuKWggxRVB8kNBnsnQpsIAmh1bmQN5MnLWKqCE2/9fihC3wz6W/JEIQX6GX4cIkML9gO6Rxe2LJ3YaWY.:19947:9:90:7:3:20088:
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat pass.txt | chpasswd    #从文件读取密码批量修改用户密码
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat pass.txt | chpasswd -m #指定加密算法修改用户密码
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat pass.txt 
test:$1$1lP9KfKx$uj1QJqB4EjMXTGN9YOk3G1
[root@iZbp1hog1euguwis9nc1f5Z ~]# cat pass.txt | chpasswd -e #使用密码密文修改用户密码
-c, --crypt-method 方法 加密方法(NONE DES MD5 SHA256 SHA512 中的一个)
-e, --encrypted 提供的密码已经加密
-m, --md5 使用 MD5 算法加密明文密码
  • gpasswd [-adAMrR]:工作组文件/etc/group/etc/gshadow管理工具
-a:添加用户到组;
-d:从组删除用户;
-A:指定管理员;
-M:指定组成员和-A的用途差不多;
-r:删除密码;
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
  • chage [-lMmWIE] userName:修改帐号和密码的有效期限,注:账户过期与密码过期的区别
[root@iZbp1hog1euguwis9nc1f5Z ~]# chage -l test        #列出用户及密码的有效期限
Last password change                                    : Aug 12, 2024 #对应-d,最近一次密码修改时间 
Password expires                                        : May 08, 2027 #密码过期时间,等于最近一次密码修改时间+密码有效期
Password inactive                                       : May 17, 2027 #对应-I,密码失效日期
Account expires                                         : never  #对应-E, 帐户过期时间,0 表示立即过期,-1表示永不过期
Minimum number of days between password change          : 0      #对应-m,两次改变密码之间相距的最小天数,为 0 时,可随时更改
Maximum number of days between password change          : 999    #对应-M,密码有效期
Number of days of warning before password expires       : 10     #对应-W,在密码过期之前警告的天数
[root@iZbp1hog1euguwis9nc1f5Z ~]# chage -m 2 -M 10 -W 18 -I 3 -E "2024-12-31" test
[root@iZbp1hog1euguwis9nc1f5Z ~]# chage -l test
Last password change                                    : Aug 12, 2024
Password expires                                        : Aug 22, 2024
Password inactive                                       : Aug 25, 2024
Account expires                                         : Dec 31, 2024
Minimum number of days between password change          : 2
Maximum number of days between password change          : 10
Number of days of warning before password expires       : 18
  • su [-clms] userName:用户切换,选项 - 千万不能省略,必须要连带用户的环境变量一起切换。从普通用户切换到 root 用户是需要输入密码的,而从root用户切换到普通用户是不需要输入密码的。
su -c "ls" root    #临时使用root账号执行ls指令,但不切换用户
su root 或 su -root 或 su -l root     #切换用户至root,并连带用户的环境变量一起切换
su -m root或su -p root   #变更身份时,不要变更环境变量

3、磁盘管理

 

 

进程管理

  • ps [option]:查看当前系统的进程状态
  •  
  • pstree:以树状图的方式展现进程之间的派生关系,显示效果比较直观
  •  
  • pgrep [option] pName: 以名称为依据从运行进程队列中查找进程,并显示查找到的进程id
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -c -u rabbitmq        #-c:统计符合匹配进程的个数
5
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -d ',' -u rabbitmq    #-d:分隔符(默认为换行符)-u:匹配有效用户的进程
727,837,1056,1177,1179
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -d ',' -u 996         #996为用户rabbitmq的UID
727,837,1056,1177,1179
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -d ',' -G 992         #按GID进行匹配,992为rabbitmq的GID
727,837,1056,1177,1179
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -o -u rabbitmq        #选择最早的进程
727
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -n -u rabbitmq        #选择最近执行的进程
1179
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -d ',' -v  -u root    #-v:查找不符合条件的进程,取反
541,548,553,727,837,1038,1056,1177,1179,15958,19504
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -l ngi                #-l:按名称过滤,列出进程的名字和 ID。
19503 nginx
19504 nginx
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -x -l ngi             #-x:只匹配名称与模式完全匹配的进程
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -l 'nginx: master'    #不带-f匹配不到
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -f -l 'nginx: master' #-f:使用完整的命令行进行匹配,默认模式通常仅与进程名称匹配
19503 nginx
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -l -P 1177            #-P:选择父 PID 匹配的进程
1179 inet_gethost
[root@iZbp1hog1euguwis9nc1f5Z ~]# pgrep -l -t pts/1           #-t:查找符合终端号的进程
6354 bash
6447 top
  • kill [option] [pid]:用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
[root@iZbp1hog1euguwis9nc1f5Z ~]# kill -l    #列出所有信号的名称
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    
[root@iZbp1hog1euguwis9nc1f5Z ~]# kill -l 9     #列出指定信号的名称
KILL
[root@iZbp1hog1euguwis9nc1f5Z ~]# kill -l 15    #列出指定信号的名称
TERM
[root@iZbp1hog1euguwis9nc1f5Z ~]# kill 5555       #终止PID为5555进程
[root@iZbp1hog1euguwis9nc1f5Z ~]# kill -9 5555    #强制终止PID为5555进程
  • killall [option]:此指令可以杀死一组同名进程,我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
[root@iZbp1hog1euguwis9nc1f5Z ~]# killall -l        #打印所有已知信号列表
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
[root@iZbp1hog1euguwis9nc1f5Z ~]# ps -ef|grep nginx
root       798     1  0  2023 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody     802   798  0  2023 ?        00:05:22 nginx: worker process
root     24644  6754  0 16:51 pts/0    00:00:00 grep --color=auto nginx
[root@iZbp1hog1euguwis9nc1f5Z ~]# killall nginx    #终止所有nginx进程
[root@iZbp1hog1euguwis9nc1f5Z ~]# ps -ef|grep nginx
root     25827  6754  0 16:52 pts/0    00:00:00 grep --color=auto nginx
[root@iZbp1hog1euguwis9nc1f5Z ~]# killall -i -I -s KILL -u nobody -p -q Nginx
Signal nginx(pgid 16832) ? (y/N) y
-I:忽略大小写的不同;
-i:交互式杀死进程,杀死进程前需要进行确认;
-s:用指定的进程号代替默认信号“SIGTERM”;
-u:杀死指定用户的进程。
-p:杀死进程所属的进程组;
-q:如果没有进程被杀死。则不输出任何信息;否则会输出:xxx: no process found
-e:对长名称进行精确匹配;大于15个字符的名称
-w: 等待进程结束后再返回,否则一直等待
-r:使用正规表达式匹配要杀死的进程名称;
  • pkill [option]:可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。
[root@iZbp1hog1euguwis9nc1f5Z ~]# pkill -c nginx #显示匹配到的进程数量,而不执行终止操作
2
-f, --full:匹配进程名及其参数,可用于定位带有特定参数的进程。示例:pkill -f <进程参数>。
-u, --euid:根据进程的有效用户ID(EUID)来定位和终止进程。示例:pkill -u <用户ID>。
-g, --pgroup:根据进程组ID来定位和终止进程。示例:pkill -g <进程组ID>。
-t, --terminal:根据终端ID来定位和终止进程。示例:pkill -t <终端ID>。
-c, --count:显示匹配到的进程数量,而不执行终止操作。示例:pkill -c <进程名>。
-P, --parent <ppid>,:匹配父进程为指定进程 ID 的进程。
  • top [option]: 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
[root@iZbp1hog1euguwis9nc1f5Z ~]# top
top - 11:13:56 up 310 days, 16:25,  2 users,  load average: 0.24, 0.26, 0.31    #当前系统时间,系统已经运行了310天16小时25分钟,2个用户当前登录,过去1、5、15分钟系统的平均负载
Tasks: 101 total,   2 running,  99 sleeping,   0 stopped,   0 zombie    #101个总进程数,2个正在运行的进程数,99个睡眠的进程数,0个停止的进程数,0个僵尸进程数
%Cpu(s):  3.0 us,  4.2 sy,  0.0 ni, 92.6 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st 
#us:用户空间占用CPU百分比,sy:内核空间占用CPU百分比,ni:用户进程空间内改变过优先级的进程占用CPU百分比,id:空闲CPU百分比,wa:等待输入输出的CPU时间百分比,hi:硬中断(Hardware IRQ)占用CPU的百分比,si:软中断(Software Interrupts)占用CPU的百分比,st:用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间
KiB Mem :  8008680 total,   370600 free,  1814020 used,  5824060 buff/cache #total物理内存总量,free空闲内存总量,used使用的物理内存总量,buff/cache用作内核缓存的内存量
KiB Swap:        0 total,        0 free,        0 used.  5888324 avail Mem  #total交换区总量,free空闲交换区总量,used使用的交换区总量,avail Mem缓冲的交换区总量

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
21345 root      10 -10  185348  53032  10296 S   3.3  0.7 613:22.48 AliYunDunMonito   
    9 root      20   0       0      0      0 S   0.3  0.0 132:36.33 rcu_sched  
  262 root       0 -20       0      0      0 S   0.3  0.0   3:02.52 kworker/0:1H    
  727 rabbitmq  20   0 2272668  76808   5100 S   0.3  1.0 718:16.45 beam.smp 
 2559 root      20   0 6923036   1.0g  16504 S   0.3 13.1 347:12.68 java
 4901 root      20   0  116256   5624   4140 S   0.3  0.1   0:03.96 sshd
PID	进程ID
USER	进程所有者的用户名
PR	优先级
NI 	nice值,负值表示高优先级,正值表示低优先级
VIRT 	进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP	进程使用的虚拟内存中,被换出的大小,单位kb
RES	 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
S	进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU	上次更新到现在的CPU时间占用百分比
%MEM	进程使用的物理内存百分比
TIME+	进程使用的CPU时间总计,单位1/100秒
COMMAND	命令行

-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。 
-b:以批次的方式执行top。 
-n:与-b配合使用,表示需要进行几次top命令的输出结果。 
-p:指定特定的pid进程号进行观察。
-u:指定用户名;
  • nice [-n]:改变程序执行的优先权等级
-n:指定进程的优先级(整数),优先级值范围从-20到19,其中值越小,优先级越高。
nice -19 tar zcf pack.tar.gz documents         #新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU
nice --19 tar zcf pack.tar.gz documents        #将当前目录下的documents目录打包,并且赋予tar进程最高的优先级
  • renice [优先级]  [pid][-gpu]:修改正在运行的进程的调度优先级
renice 1 987 -u daemon root -g www -p 32 #将进程id为987及32的进程、进程拥有者为daemon及root、用户组为www的优先级为1
  • nohup: 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
nohup command > myout.file 2>&1 &    #2>&1解释:将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。最后的" &":表示后台运行,不霸占交互命令行
#0 – stdin (standard input,标准输入) 
#1 – stdout (standard output,标准输出)
#2 – stderr (standard error,标准错误输出) 
nohup ping -c 10 baidu.com #会在同一个目录下生成一个名称为 nohup.out 的文件
nohup ping -c 10 baidu.com > /home/test/nohup.out #在指定目录下生成一个名称为 nohup.out 的文件
./startup.sh 2>&1 | tee startup.log    #表示将执行startup.sh脚本后到标准输出和标准错误输出内容写入到startup.log文件中
  • strace:是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。
  • ltrace:类似于strace,但是ltrace主要用于跟踪进程执行期间的库函数调用。
  • runlevel:用于打印当前Linux系统的运行等级,进入每个runlevel都需要启动或关闭相应的一系列服务(services),这些服务以初始化脚本的方式放置于目录/etc/rc.d/rc?.d/或者/etc/rc?.d下面(?代表runlevel的对应序号)
[root@iZbp1hog1euguwis9nc1f5Z ~]# runlevel
N 3
[root@iZbp1hog1euguwis9nc1f5Z etc]# ls -al /etc|grep rc.\.d    #0:停机、1:单用户模式、2:多用户,没有 NFS、3:完全多用户模式、4:没有用到、5:图形界面、6:重新启动
#多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面,而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面,runlevel 1和2除了调试之外很少使用
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc0.d -> rc.d/rc0.d
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc1.d -> rc.d/rc1.d
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc2.d -> rc.d/rc2.d
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc3.d -> rc.d/rc3.d
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc4.d -> rc.d/rc4.d
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc5.d -> rc.d/rc5.d
lrwxrwxrwx    1 root root         10 Jul 27  2022 rc6.d -> rc.d/rc6.d
  • init: 是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1是Linux内核引导运行的,是系统中的第一个进程。
-b:不执行相关脚本而直接进入单用户模式;
-s:切换到单用户模式。
init 1 #关机
init 6 #重启
  • service:用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态
service --status-all:显示所服务的状态,服务名:即/etc/init.d目录下的脚本文件名;
[root@iZbp1hog1euguwis9nc1f5Z init.d]# ls -a /etc/init.d
.  ..  functions  netconsole  network  README  sshd  tomcat
[root@iZbp1hog1euguwis9nc1f5Z init.d]# service network status    #查看network服务的状态
Configured devices:
lo eth0
Currently active devices:
lo eth0 docker0
#start:启动指定的服务。
#stop:停止指定的服务。
#restart:重启指定的服务。
#reload:重新加载服务的配置文件。
#status:显示服务的当前状态。

 

 

  • uptime [-ps]:查看系统负载信息,输出内容与w命令输出的第一行一样

[root@iZbp1hog1euguwis9nc1f5Z ~]# uptime 11:34:56 up 304 days, 16:46, 2 users, load average: 0.26, 0.26, 0.19 [root@iZbp1hog1euguwis9nc1f5Z ~]# uptime -p #以易读的方式显示本次开机的时间距离当前的时间 up 43 weeks, 3 days, 17 hours, 10 minutes [root@iZbp1hog1euguwis9nc1f5Z ~]# uptime -s #显示本次开机的时间 2023-10-09 18:48:39

  •  
  •  

  • 进程管理命令

    系统管理命令

    网络命令
  • 3、Linux目录及文件操作指令
  • echo
  • source 
  • gpg
  • sed
  • awk
  • od -x a.txt # 以十六进制查看文件
    od -o a.txt # 以八进制查看文件
    od -d a.txt # 以十进制查看文件
    od -b a.txt # 以二进制查看文件
    
    scp user@x.x.x.x:/home/file1 file2 # 跨网络复制文件或者复制整个目录
    
    
    
    

  • 其它命令
  • seq 1 3
  • rev
posted on 2024-07-25 14:11  三占从二  阅读(13)  评论(0编辑  收藏  举报