Linux常用命令整理

本文将分享一些常用的Linux命令。根据功能的不同,大概分为以下几个方面,一是文件相关命令,二是进程相关命令,三是网络相关命令,四是磁盘相关命令,五是用户管理相关命令,六是系统命令。

1. 文件相关命令

ls:用于列出当前目录下文件和目录。

ls [选项] [文件/目录]
选项: 可用于控制 ls 命令的显示方式。
文件/目录: 指定要列出的文件或目录。

常见选项:
-l: 长列表模式,显示详细的文件信息,包括权限、大小、修改时间、所有者等。
-a: 显示所有文件,包括隐藏文件(以 . 开头的)。
-h: 以人类可读的大小单位显示文件大小(如 KB、MB、GB)。
-r: 反转文件顺序。
-t: 按修改时间排序。

比如列出当前目录下所有文件,包括隐藏文件:
ls -a

cd:用于改变当前工作目录。

cd ..: 切换到上级目录
cd /: 切换到根目录
切换到当前用户的 home 目录:cd ~
更改多个目录:cd Documents/Projects

mkdir:用于创建新目录。

创建单个目录:
mkdir 新目录
 
创建多个目录:
mkdir 目录1 目录2 

使用绝对路径创建目录:
mkdir /home/user/Documents/新文件夹

-p: 创建目录的父级目录。
mkdir -p /home/user/Documents/新文件夹/子文件夹
这会创建 /home/user/Documents/新文件夹/子文件夹 所有必要父级目录。

rmdir:用于删除空目录.。

删除单个空目录:
rmdir 空目录

-p:递归删除目录及所有子目录。使用 -p 选项时,需要确保要删除的目录是空目录,否则会产生错误。
递归删除 "project" 目录及其所有子目录
rmdir -p project

rm:用于删除文件和目录。

删除单个文件:
rm 文件名

删除多个文件:
rm 文件1 文件2 文件3

删除目录 (该目录为空):
rm 目录名

选项:
-f: 强制删除文件,不询问确认。
-r: 递归删除目录和子文件/目录。使用 -r 选项会永久删除指定目录及其所有内容。
-i: 删除前询问确认。

删除名为 "myfile.txt" 的文件:
rm myfile.txt

递归删除 "project" 目录及其所有内容:
rm -r project

tourch:用于创建新文件,或更新已有文件的最后修改时间。

touch [选项] 文件名
选项:
-a 或 --atime: 仅更新文件的访问时间。
-m 或 --mtime: 只更新文件的修改时间。
-c 或 --no-create: 如果目标文件已存在,则不创建新文件,直接退出。
-t 时间戳: 设置文件的最后修改时间为指定的时间戳。时间戳的格式通常为 YYYYMMDDHHMMSS。

创建名为 "newfile.txt" 的新空文件:
touch newfile.txt

更新名为 "file.pdf" 的文件的访问时间和修改时间:
touch -a -m file.pdf

touch 命令无法创建目录。
若指定的文件已存在,则执行 touch 命令不会改变文件内容,只会更新其最后修改时间。
如果使用 touch -t 设置文件的最后修改时间为未来时间,则系统会显示错误。

cp:


cp [选项] 源文件/目录 目标文件/目录
选项:
-i 或 --: 复制文件之前询问确认。
-f 或 --force: 如果目标文件已存在,则覆盖其,不询问确认。
-r 或 --recursive: 递归复制目录和子文件/目录。必要选项用于复制目录。
-p 或 --preserve: 保留源文件/目录的属性 (权限、所有者、时间戳等)。


复制名为 "image.jpg" 的文件到桌面:
cp image.jpg ~/Desktop/

复制名为 "project" 的目录及其所有内容到 "backup" 目录:
cp -r project backup/

cp 命令不会创建父目录。如果目标目录不存在,则需要先创建。
当复制多个文件时,您可以将它们列出,或者使用通配符 (例如 *.txt ) 指定要复制的文件。

mv:用于移动或者重命名文件和目录。


mv [选项] 源文件/目录 目标文件/目录
选项:
-i 或 --: 移动文件之前询问确认。
-f 或 --force: 如果目标文件已存在,则覆盖它,不询问确认。
-n 或 --no-clobber: 如果目标文件已存在,则不覆盖它,会退出。

移动文件:
mv sourcefile targetdirectory

重命名文件:
mv sourcefile newfilename

移动目录 (包含子目录和文件) :
mv source_directory targetdirectory

比如:
移动名为 "report.docx" 的文件到 "documents" 目录:
mv report.docx documents/

重命名名为 "file.txt" 的文件为 "newfile.txt":
mv file.txt newfile.txt

移动名为 "music" 的目录到 "home" 目录:
mv music home/music

mv 命令不能直接创建父目录。
当移动文件到已经存在的目录时,如果目标filename 已经存在,并且没有使用 -f 选项,系统会提示您是否覆盖。

cat:用于连接并显示文件内容。

cat [选项] 文件名
选项:
-n: 在每一行末尾显示行号。
-b: 在每一行首显示空白字符对应的十进制编号。
-s: 合并连续的空白行。
-A: 显示所有非打印字符,包括空格、制表符、回车符等,并使用 ASCII 码表示。
-E: 显示所有非打印字符,包括空格、制表符、回车符等,并使用 ASCII 码表示。

显示文件 "notes.txt" 内容并显示行号:
cat -n notes.txt

连接文件 "data1.txt","data2.txt" 和 "data3.txt" 并输出到终端:
cat data1.txt data2.txt data3.txt > output.txt 

将文件 "README.md" 的内容写入到另一个文件 "file.txt":
cat README.md > file.txt 


cat 命令会直接读取文件内容并输出,无法进行文件的修改。

more:用于分页显示文件内容。

more [选项] 文件名 
选项:
-n num: 每页显示 num 行。
-c: 显示目录符号。
-f: 忽略文件名的提示信息。
-r: 以 RAW 模式读取文件内容,不进行转义处理。
-d: 只显示文件名,不显示内容。

交互模式:
空格键: 滚动下一屏内容。
回车键: 滚动下一屏内容。
上箭头键: 返回上一屏内容。
下箭头键: 前进下一屏内容。
** 数字:** 向前或向后跳到指定行。
q键: 退出 more 命令。
** /pattern:** 从当前位置开始搜索指定的模式,并跳转到匹配行。
?pattern: 从当前位置开始搜索反模式匹配的行。

分页显示文件 "file.txt" 内容:
more file.txt

分页显示文件 "log.txt" 内容,每页显示 10 行:
more -n 10 log.txt

直接退出 more 命令,不显示内容
more -d file.txt

搜索文件 "config.ini" 中包含 "port" 的所有行
more /config.ini /port
注意:

more 命令只能一次显示一屏内容,以便于阅读和浏览大型文件。

less:用于分页显示文件内容,但它比more功能更加强大。

基本语法

less [选项] 文件名
选项:
-n num: 每页显示 num 行。
-r: 以 RAW 模式读取文件内容,不进行转义处理。
-s: 忽略文件名的提示信息。
-G: 忽略末尾空白行。

交互模式:
空格键: 滚动下一屏内容。
回车键: 滚动下一屏内容。
上箭头键: 返回上一屏内容。
下箭头键: 前进下一屏内容。
** 数字:** 向前或向后跳到指定行。
** /pattern:** 从当前位置开始搜索指定的模式,并跳转到匹配行。
** ?pattern:** 从当前位置开始搜索反模式匹配的行。
=: 在当前行显示行号。
p 或 P: 显示当前行前/后的行。
b: 显示文件开头。
e: 显示文件结尾。
q: 退出 less 命令。


分页显示文件 "log.txt" 内容,每页显示 20 行:
less -n 20 log.txt

搜索文件 "config.ini" 中包含 "port" 的所有行
less /config.ini /port 

在 less 命令中显示当前行的行号
less file.txt
=

less 命令比 more 命令更强大,因为它支持搜索、标记、书签等更多功能。

head:用于显示文件开头部分的内容。

head [选项] 文件名
选项:
-n num: 显示文件的前 num 行。
-c num: 显示文件的前 num 字节。

显示文件 "file.txt" 的前 10 行:
head -n 10 file.txt

显示文件 "log.txt" 的前 5 行:
head -5 log.txt

查看文件 "index.html" 的标题行:
head -n 1 index.html

查看文件 "data.csv" 的前 100 字节:
head -c 100 data.csv

tail:用于显示文件末尾部分的内容。

tail [选项] 文件名
选项:
-n num: 显示文件的后 num 行。
-c num: 显示文件的后 num 字节。

交互模式:
-f: 实时跟踪文件,当文件添加新内容时会滚动并显示。
-s num: 合并重复的行数之前的行数为 num。
-q: 静默模式,不显示文件名的提示信息。

显示文件 "file.txt" 的最后 10 行:
tail -n 10 file.txt

显示文件 "log.txt" 的最后 50 行:
tail -n 50 log.txt

实时监控日志文件 "server.log" 的最新内容:
tail -f server.log

vi/vim: 文本编辑器。

Vim主要分为两种模式:命令模式和插入模式。

命令模式:用于执行编辑操作,需要使用命令来控制编辑器的行为。
插入模式:用于输入文本内容。

vim filename:打开名为 "filename" 的文件。如果文件不存在,vim将创建新文件。

打开一个文件后,默认处于命令模式。

按下 i 键进入插入模式

按下 Esc 键返回命令模式。

:w 键保存文件
:wq 键保存文件并退出
:q! 键强制退出,不保存文件

退出编辑器:
:q! 关闭文件不保存
:q 保存文件后退出

移动光标:
h:左移一格
j:下移一格
k:上移一格
l:右移一格
0:移动到行首
$:移动到行尾
gg:移动到文件开头
G:移动到文件末尾

删除文字:
x:删除光标所在字符
dw:删除光标所在词
dd:删除整行

搜索:
/pattern:向前搜索 "pattern"
?pattern:向后搜索 "pattern"

注释:
在每一行开头添加尖号 ( # ),实现注释

find:用于查找文件和目录。

find 路径 参数
常用参数:
路径:指定查找的起始路径。如果不指定路径,默认从当前目录开始查找。
参数:用来指定查找的条件和操作。
. 表示当前目录

按文件名查找:
find . -name "*.txt"
这条命令在当前目录及其所有子目录中查找所有以 .txt 结尾的文件,并打印它们的路径。

按文件类型查找:
find . -type f
这条命令查找当前目录及其所有子目录中的所有普通文件,并打印它们的路径。-type d 可以查找目录。

按文件大小查找:
find . -size +1M
这条命令查找当前目录及其所有子目录中大小大于1MB的文件,并打印它们的路径。-size -1M 可以查找小于1MB的文件。

按文件权限查找:
find . -perm 644
这条命令查找当前目录及其所有子目录中文件权限为 644 的文件,并打印它们的路径。

按时间戳查找:
find . -mtime -7
这条命令查找当前目录及其所有子目录中最近7天内修改过的文件,并打印它们的路径。-mtime +7 则可以查找7天前修改过的文件。

打印文件路径:
find . -name "*.log" -print
这条命令查找当前目录及其所有子目录中所有以 .log 结尾的文件,并逐行打印它们的路径。

查找当前目录及其所有子目录中的所有普通文件,并将它们的权限修改为 644。
find . -type f -exec chmod 644 {} \;
或者
find . -type f -exec chmod 644 {} +
上述写法会将 find 找到的文件一次性传递给 chmod 命令,而不是每找到一个文件就执行一次 chmod。这种方式可以在性能上稍微优化,特别是在处理大量文件时。

find . -name "*.jpg" -exec cp {} /backup \;
这条命令查找当前目录及其所有子目录中所有以 .jpg 结尾的文件,并将它们复制到 /backup 目录。

grep:用于在文件中搜索指定文本。

grep 选项 模式 文件名
常用选项:
-i: 忽略大小写。
-r 或 -R: 递归地在目录中搜索文件。
-n: 显示匹配行及其行号。
-v: 显示不匹配的行。
-E: 使用扩展正则表达式。
-F: 使用固定字符串(Fixed Strings)。
-o: 只显示匹配的部分。
-w: 匹配整个单词。
-c: 统计匹配的行数。
-l: 列出包含匹配的文件名。
-L: 列出不包含匹配的文件名。

在文件中查找特定文本:
grep "pattern" file.txt
这条命令会在 file.txt 中查找包含 pattern 的所有行,并将它们打印出来。

忽略大小写进行搜索:
grep -i "pattern" file.txt
使用 -i 选项可以忽略大小写,例如查找 Pattern、PATTERN、pattern 等都会匹配。

递归地在目录中搜索文件:
grep -r "pattern" directory/
使用 -r 选项可以递归地在指定目录 directory/ 及其子目录中搜索包含 pattern 的所有文件。

显示匹配行及其行号:
grep -n "pattern" file.txt
使用 -n 选项可以显示匹配行及其行号,方便定位匹配的具体位置。

仅显示匹配的部分:
grep -o "pattern" file.txt
使用 -o 选项可以仅显示匹配的部分,而不是整行内容。

统计匹配的行数:
grep -c "pattern" file.txt
使用 -c 选项可以统计匹配的行数而不显示具体匹配内容。

显示不匹配的行:
grep -v "pattern" file.txt
使用 -v 选项可以显示不包含 pattern 的所有行。

匹配整个单词:
grep -w "word" file.txt
使用 -w 选项可以确保只匹配整个单词 word,而不是单词的一部分。

列出包含匹配的文件名:
grep -l "pattern" *.txt
使用 -l 选项可以列出所有包含 pattern 的文件名,而不显示具体匹配内容。

查找 file.txt 中完全匹配 "exact string" 的行。
grep -F "exact string" file.txt

(tar,gzip):用于打包和解压文件。

归档文件通常是一个或多个文件的集合,它们可能被压缩以节省空间。归档文件通常使用.tar扩展名,可能还会附带其他压缩方法,如.gz(代表gzip)或.bz2(代表bzip2)。

例如:
file.tar 是一个未压缩的归档文件。
file.tar.gz 是一个使用gzip压缩的归档文件。
file.tar.bz2 是一个使用bzip2压缩的归档文件。


tar命令用法

1.创建归档文件
tar -cvf archive.tar file1 file2 ... 
-c:创建一个新的归档文件。
-v:显示详细的操作过程(verbose),可以查看哪些文件被添加到归档中。
-f archive.tar:指定归档文件的名称。

创建一个名为 backup.tar 的归档文件,包含当前目录下所有文件和子目录:
tar -cvf backup.tar .

创建一个名为 documents.tar 的归档文件,仅包含当前目录下的 docs 文件夹:
tar -cvf documents.tar docs


2. 查看归档文件内容
tar -tvf archive.tar 
-t:显示归档文件中包含的文件列表。

查看 backup.tar 中包含的文件列表:
tar -tvf backup.tar


3. 解压归档文件
tar -xvf archive.tar  
-x:解压归档文件中的内容。

解压 backup.tar 中的文件到当前目录:
tar -xvf backup.tar


4. 添加文件到已存在的归档文件
tar -rvf archive.tar newfile.txt  
-r:在已存在的归档文件末尾添加文件。

向 backup.tar 中添加新文件 important.txt:
tar -rvf backup.tar important.txt


5. 从归档文件中删除文件
tar --delete -f archive.tar file_to_delete.txt  
--delete:从归档文件中删除指定的文件。

从 backup.tar 中删除 oldfile.txt:
tar --delete -f backup.tar oldfile.txt


6. 其他常用选项
-z:通过 gzip 压缩归档文件(通常用 .tar.gz 扩展名)。
-j:通过 bzip2 压缩归档文件(通常用 .tar.bz2 或 .tbz 扩展名)。
-C:切换到指定目录后执行操作。

gzip命令用法

1.基本用法
压缩文件,生成 filename.gz
gzip filename 

gzip example.txt
这将生成一个名为 example.txt.gz 的压缩文件,并删除原始的 example.txt 文件。

2. 解压缩文件
解压缩文件 filename.gz
gzip -d filename.gz  

解压缩 example.txt.gz 文件:
gzip -d example.txt.gz

3. 查看压缩比和文件信息

gzip -l filename.gz 
显示压缩文件的信息

查看 example.txt.gz 的压缩信息:
gzip -l example.txt.gz

4. 压缩选项
gzip 命令本身并不提供太多复杂的选项,它主要用于简单的压缩和解压缩操作。
以下是一些常见的压缩选项:
-f:强制压缩,即使文件已经存在或者已经压缩过。
-k:保留原始文件,即不删除原始文件,而是保留压缩后的文件副本。

强制压缩 example.txt,即使已经存在 example.txt.gz:
gzip -f example.txt

保留原始文件 example.txt,并且生成 example.txt.gz:
gzip -k example.txt


默认情况下,gzip 在压缩文件时会删除原始文件,并生成 .gz 后缀的压缩文件。使用 -k 选项可以保留原始文件。
gzip 不支持直接压缩多个文件或目录。如果需要压缩多个文件,通常会结合 tar 命令来先打包成 .tar 文件,然后再用 gzip 进行压缩。

chmod:用于更改文件或目录的权限(权限控制)。

chmod [选项] 模式 文件名
常用选项:
-R:递归地应用权限更改到目录及其子目录和文件。
-v:显示详细的权限更改信息。
-c:仅在发生更改时显示操作信息。

chmod 命令的模式可以使用两种方法来指定权限:
1. 符号模式:
符号模式允许你通过符号来指定权限的增加或减少。它的基本语法如下:
chmod [ugoa...][[+-=][rwxXstugo...]...][文件名]
u:所有者(user)权限。
g:所属组(group)权限。
o:其他用户(others)权限。
a:所有用户(相当于 ugo 的组合)。

权限符号包括:
+:增加权限。
-:减少权限。
=:设置权限。

权限标志:
r:读权限。
w:写权限。
x:执行权限。

给文件的所有者增加执行权限。
chmod u+x filename



2. 数字模式:
数字模式使用数字来指定权限,每个权限用数字表示如下:
4:读权限(r)。
2:写权限(w)。
1:执行权限(x)。

将这些数字按照权限组合起来,每个组合的总和就是权限的数字表示。例如:
7:rwx(读、写、执行权限)。
6:rw-(读、写权限)。
5:r-x(读、执行权限)。
4:r--(只读权限)。

给文件设置如下权限:所有者(user)具有读、写、执行权限(7),所属组(group)和其他用户(others)具有读、执行权限(5)。
chmod 755 filename

给文件添加执行权限:
chmod +x filename

递归更改目录及其子目录的权限:
chmod -R 755 directoryname

显示详细的权限更改信息:
chmod -v 644 filename

仅在发生更改时显示操作信息:
chmod -c 600 filename

chown:用于更改文件或目录的所有者。

chown [选项] 新所有者 文件或目录
常用选项:
-R:递归地更改指定目录及其所有子目录和文件的所有者。
-v:显示详细的操作信息。
-c:仅在更改了文件所有者时显示操作信息。

参数说明:
新所有者:可以是用户名、用户ID、用户:组合的形式(将文件所有者更改为指定用户和组合)或者直接是组名。如果只提供用户名或用户ID,文件的所属组不会更改。
文件或目录:要更改所有者的文件名或目录名。

将 filename 文件的所有者更改为 user1:
chown user1 filename

递归地将 directoryname 目录及其所有子目录和文件的所有者更改为 user2,同时将所属组更改为 group2:
chown -R user2:group2 directoryname

将 filename 文件的所属组更改为 group3,而文件所有者不变:
chown :group3 filename

将文件 filename 的所有者和所属组都更改为用户ID为 1001 的用户,组ID也为 1001 的组:
chown 1001:1001 filename

递归地将 directoryname 目录及其所有子目录和文件的所有者更改为 user3,但所属组不会更改:
chown -R user3 directoryname

只有超级用户(root)才能更改其他用户的文件所有者。一般用户只能更改自己拥有的文件或目录的所有者。

chgrp:用于更改文件或目录的所属组。

chgrp [选项] 新组名 文件或目录
常用选项:
-R:递归地更改指定目录及其所有子目录和文件的所属组。
-v:显示详细的操作信息。
-c:仅在更改了文件所属组时显示操作信息。

参数说明:
新组名:可以是组名或者组ID。
文件或目录:要更改所属组的文件名或目录名。

将文件的所属组更改为指定组:
chgrp group1 filename
这个命令将 filename 文件的所属组更改为 group1。

递归地更改目录及其内容的所属组:
chgrp -R group2 directoryname
这个命令将递归地将 directoryname 目录及其所有子目录和文件的所属组更改为 group2。

使用组ID来更改文件的所属组:
chgrp 1002 filename
这个命令将文件 filename 的所属组更改为组ID为 1002 的组。

chown 命令可以同时更改文件的所有者和所属组,而 chgrp 命令只能更改所属组。

pwd:用于显示当前工作目录的路径

echo:用于打印输出文本或变量内容到标准输出

2. 进程相关命令

ps:用于显示进程状态。

ps [options]
常用选项:
-e: 显示所有进程,包括其他用户的进程。
-f: 显示完整格式,包括父进程 ID (PPID)、CPU 使用情况等。
-l: 长格式显示,显示更多的信息,如进程状态、执行时间等。
-u user: 显示特定用户的进程信息。
-p pid: 显示指定进程 ID (PID) 的信息。
-o format: 自定义输出格式。
-a: 显示所有终端(包括与终端无关的)的进程。
-x: 显示没有控制终端的进程。

显示当前所有进程:
ps
这会显示当前终端下运行的所有进程的简要信息,如进程 ID (PID) 和命令名。

显示所有进程的详细信息:
ps -ef
这会显示系统中所有进程的详细信息,包括进程的所有者、PID、父进程 ID (PPID)、CPU 使用率、内存占用等。

显示特定用户的进程:
ps -u username
这会显示特定用户 username 运行的所有进程的信息。可以用于查看某个用户的进程状态。

查找特定进程 ID (PID) 的信息:
ps -p pid
这会显示指定 PID 的进程信息,例如 ps -p 1234 将显示 PID 为 1234 的进程详细信息。

显示所有进程的全格式信息:
ps -efl
这会以长格式显示所有进程的详细信息,包括更多的字段如进程状态、启动时间、CPU 时间等。

查看系统中所有进程的树形结构:
ps -e --forest
这会以树形结构显示所有进程的关系,包括父子进程的层级关系,有助于理解进程之间的衍生关系。

显示没有控制终端的进程:
ps -x
这会显示所有没有控制终端的进程,这些进程通常是守护进程或者后台任务。

自定义输出格式:
ps -o pid,ppid,user,%cpu,%mem,cmd
这会自定义输出字段,仅显示指定的字段如 PID、PPID、用户、CPU 使用率、内存使用率和命令名。

进程状态字段可以包括 R(运行)、S(睡眠)、D(不可中断睡眠)、Z(僵尸)、T(停止)等

top和htop:动态显示系统中的进程和资源使用情况。

top
输入 top 命令即可启动 top,默认情况下会按照 CPU 使用率进行排序并显示进程列表。

常用交互命令:
q:退出 top。
h:显示帮助信息。
k:终止选中的进程。
1:显示各 CPU 核心的详细信息。
f:添加或移除显示的字段。

选项:
-u username:只显示特定用户的进程。
-p PID:显示指定 PID 的进程信息。
-o field1,field2,...:自定义输出字段。


htop
输入 htop 命令启动 htop,它是 top 的增强版本,提供了更丰富的功能和更直观的界面。

htop 使用彩色显示,区分不同的进程状态和资源使用情况,使信息更直观。并且提供了更多的交互命令和操作选项,可以通过函数键进行快捷操作。

常用交互命令:
F1:显示帮助信息。
F4:筛选进程,按名称或其它条件过滤。
F5:刷新显示。
F9:选择进程操作,如终止进程、优先级调整等。
F10:退出 htop。

选项:
-u username:只显示特定用户的进程。
-p PID:显示指定 PID 的进程信息。
-d seconds:指定刷新间隔时间。

top vs htop:
top 是最基本的进程查看工具,可用性强。
htop 提供了更加交互化和信息丰富的界面,适合需要更详细信息和更好用户体验的场景。

kill:用于终止进程。

kill [options] PID
PID 是要终止的进程的进程号(Process ID)。
options 是可选的参数,用于指定不同的信号或调整 kill 命令的行为。

常用信号:
SIGTERM (15):默认信号,请求终止进程。通常会允许进程做清理工作,然后自行退出。
SIGKILL (9):强制终止进程。该信号会立即终止进程,不允许进程做清理操作。
SIGHUP (1):挂起信号。通常用于重新启动进程,如重新加载配置文件等。

选项
-signal 或 -s signal:指定要发送的信号类型。例如,-9 或 -SIGKILL 都是发送 SIGKILL 信号。
-l:显示支持的所有信号列表。
-a:不实际发送信号,仅检查进程是否存在并可以发送信号。

终止进程号为 12345 的进程:
kill 12345

使用 SIGKILL 强制终止进程:
kill -9 12345

重新启动进程:
kill -1 12345

显示支持的所有信号列表:
kill -l

nice 和 renice: 用于调整进程优先级。

nice 命令用于启动新进程时设置其优先级。

nice [options] command [arguments]
command 是要执行的命令或程序。
arguments 是命令的参数。

优先级调整
nice 命令通过调整进程的优先级来控制 CPU 分配。优先级范围从 -20(最高优先级)到 19(最低优先级),默认值是 0。

增加优先级:较高的优先级值意味着进程更容易获取 CPU 时间。
nice -n <priority> command
其中 <priority> 是一个数值,在 -20 到 19 之间。例如,nice -n 10 command 会以较高的优先级运行 command。

降低优先级:较低的优先级值使得进程更少获取 CPU 时间。
nice -n -<priority> command
例如,nice -n -10 command 会以较低的优先级运行 command。


以较高优先级运行 gzip 压缩文件:
nice -n 10 gzip filename

以较低优先级运行长时间运行的任务:
nice -n -10 ./long_running_task.sh


renice 命令用于修改已经运行的进程的优先级。与 nice 不同,renice 可以调整已经运行中的进程的优先级。

renice [options] priority [[-p] pid | [-g] pgrp | [-u] user]
priority 是要设置的新优先级。
-p pid:根据进程号 (PID) 修改优先级。
-g pgrp:根据进程组号 (Process Group ID) 修改优先级。
-u user:根据用户名修改优先级。

提高进程号为 12345 的进程优先级:
renice +10 -p 12345

降低进程组号为 54321 的所有进程优先级:
renice -5 -g 54321

3. 网络相关命令

ifconfig:用于配置和显示网络信息

ifcopnfig命令用法

显示所有网络接口信息:
ifconfig
这会列出所有网络接口的详细信息,包括接口名称、IP地址、MAC地址、子网掩码、广播地址等。

显示特定网络接口信息:
ifconfig eth0
这将显示 eth0 接口的详细配置信息。

配置网络接口:
设置IP地址和子网掩码:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
这条命令将 eth0 接口配置为IP地址 192.168.1.100,子网掩码 255.255.255.0。

启用接口:
sudo ifconfig eth0 up
这会启用 eth0 接口,使其可以开始进行网络通信。

禁用接口:
sudo ifconfig eth0 down
这会禁用 eth0 接口,停止其进行网络通信。

指定广播地址:
可以使用 broadcast 参数来指定接口的广播地址:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255

显示所有接口信息:
如果要显示所有接口(包括未激活的),可以使用 -a 参数:
ifconfig -a

ifconfig 命令所做的修改通常是临时的,系统重启后会重置。要永久修改网络配置,需要编辑相应的配置文件。/etc/network/interfaces(Debian/Ubuntu)或 /etc/sysconfig/network-scripts/ifcfg-eth0(CentOS/RHEL)。

ip:用于管理网络接口、路由表、地址等。

显示当前网络接口信息:
ip address
这会列出所有网络接口的配置信息,包括激活和未激活的接口。

显示路由表:
使用 ip route 命令可以查看当前系统的路由表,显示系统如何决定发送数据包的目标地址:
ip route
这会列出所有的路由表项,包括目标网络、网关、接口等信息。

显示链接状态:
ip link
使用 ip link 命令可以显示网络接口的链接状态,包括接口名称、状态(UP或DOWN)、MAC地址等

设置IP地址和子网掩码:
sudo ip address add 192.168.1.100/24 dev eth0
这会将 eth0 接口配置为IP地址 192.168.1.100,子网掩码为 255.255.255.0。

使用 ip link 命令可以启用或禁用网络接口:
sudo ip link set dev eth0 up
这会启用 eth0 接口,使其可以开始进行网络通信。
sudo ip link set dev eth0 down
这会禁用 eth0 接口,停止其进行网络通信。

修改MAC地址:
使用 ip link 命令可以修改网络接口的MAC地址
sudo ip link set dev eth0 address 00:11:22:33:44:55
这会将 eth0 接口的MAC地址修改为 00:11:22:33:44:55。

添加路由:
使用 ip route add 命令可以手动添加路由
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
这条命令添加了一个到 192.168.2.0/24 子网的路由,使用 192.168.1.1 作为网关,通过 eth0 接口。

删除路由:
使用 ip route del 命令可以删除路由
sudo ip route del 192.168.2.0/24
这条命令将删除路由表中到 192.168.2.0/24 子网的路由。

修改路由:
使用 ip route change 命令可以修改现有路由的参数,例如修改下一跳的地址或出接口。

netstat:用于显示网络状态。

使用 netstat 命令可以显示当前系统上所有的网络连接信息,包括TCP、UDP、UNIX域套接字等:
netstat

显示特定类型的连接:
可以使用 -t(TCP)、-u(UDP)、-n(数字格式)、-p(显示进程)等选项来筛选显示特定类型的连接,例如:
netstat -t           # 显示所有TCP连接
netstat -u           # 显示所有UDP连接
netstat -n           # 显示数字格式(IP地址而非域名)
netstat -p           # 显示与连接关联的进程
可以结合使用这些选项,例如 netstat -tunp 将显示所有TCP和UDP连接,并且显示与连接相关联的进程。

显示网络接口信息
显示网络接口统计信息:
使用 -i 选项可以显示网络接口的统计信息,包括接口名称、接收和发送的数据包数量、错误等:
netstat -i


显示路由表信息:
使用 -r 选项可以显示系统的路由表信息,包括目标网络、网关、接口等:
netstat -r

显示UNIX域套接字:
使用 -x 选项可以显示所有UNIX域套接字(本地套接字)的信息:
netstat -x

ping:用于测试与目标主机的网络连接

基本用法:
ping target_address
其中 target_address 可以是主机名(例如 example.com)或者IP地址(例如 192.168.1.1)。

持续 ping 测试:
使用 -c 选项可以指定发送 ICMP 请求的次数。例如,要发送5个 ICMP 请求:
ping -c 5 target_address
这将会发送5个 ICMP 请求到目标主机,并显示每次请求的回应情况。

连续 ping 测试:
使用 -i 选项可以设置 ICMP 请求之间的时间间隔(单位为秒)。例如,设置每隔1秒发送一个 ICMP 请求:

ping -i 1 target_address
这将持续发送 ICMP 请求,直到手动中断(Ctrl+C)。


指定包大小:
使用 -s 选项可以指定 ICMP 数据包的大小(字节)。例如,发送一个大小为100字节的 ICMP 请求:
ping -s 100 target_address
这在测试网络连通性时可以测试不同大小的数据包对网络的影响。

显示时间戳:
使用 -D 选项可以在每行输出中显示时间戳,以便更精确地测量延迟:
ping -D target_address

设置超时时间:
使用 -W 选项可以设置等待目标主机响应的超时时间(单位为秒)。例如,设置超时时间为2秒:
ping -W 2 target_address
如果目标主机在2秒内未响应,则视为超时。

使用特定网络接口:
使用 -I 选项可以指定使用特定的网络接口发送 ICMP 请求。例如,使用 eth0 接口发送 ICMP 请求:
ping -I eth0 target_address


ping 命令的输出通常显示每个 ICMP 回显应答的统计信息,例如:
每个包的回应时间(RTT,Round-Trip Time)。
丢包率(如果有的话)。
发送的字节数和接收的字节数。

traceroute:用于追踪数据包从本地主机到目标主机的网络路径

基本的 traceroute 追踪:
traceroute target_address
其中 target_address 可以是主机名(例如 example.com)或者IP地址(例如 192.168.1.1)。

指定使用的协议:
使用 -I 选项可以指定使用 ICMP 协议进行 traceroute:
traceroute -I target_address
使用 -U 选项可以指定使用 UDP 协议进行 traceroute:
traceroute -U target_address
默认情况下,traceroute 使用 UDP 协议。

指定端口号:
使用 -p 选项可以指定发送的 UDP 数据包的目标端口号。这对于避开某些防火墙规则或特定的路由器过滤规则可能有用:
traceroute -p port_number target_address

设置最大跃点数:
使用 -m 选项可以指定 traceroute 搜索路由路径的最大跃点数(默认为30):
traceroute -m max_hops target_address
这对于控制 traceroute 的最大深度和减少不必要的跟踪尝试很有用。

显示延迟:
使用 -q 选项可以指定每个 TTL 值发送的查询数(默认为3),从而显示每个路由器的平均延迟:
traceroute -q queries target_address

显示IP地址:
使用 -n 选项可以以数字形式显示IP地址,而不是尝试进行反向域名解析:
traceroute -n target_address


traceroute 命令的输出通常显示每个路由器(每一跳)的IP地址、每一跳的延迟(RTT,Round-Trip Time)、跳数(TTL)等信息。在每一跳的行中,通常会显示如下信息:
序号:显示当前跃点数。
IP地址:显示当前路由器的IP地址。
延迟:显示到达当前路由器的往返时间。

route: 显示和操作 IP 路由表

显示当前路由表:
route
这将列出系统当前所有的路由信息,包括目标网络、网关、掩码、接口和标志等。

显示详细信息:
使用 -n 选项可以以数字格式显示IP地址,而不是尝试进行反向域名解析:
route -n
这对于查看路由表时,避免等待反向域名解析的延迟很有帮助。

添加路由:
使用 add 子命令可以添加一个新的路由。
将网络 192.168.10.0/24 通过网关 192.168.1.1 添加到接口 eth0:
sudo route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
add:添加路由。
-net:指定目标网络。
netmask:指定子网掩码。
gw:指定网关。
dev:指定接口。

删除路由:
使用 del 子命令可以删除一个现有的路由。
删除到网络 192.168.10.0/24 的路由:
sudo route del -net 192.168.10.0 netmask 255.255.255.0

修改路由:
使用 change 子命令可以修改一个现有的路由。
将网关修改为 192.168.1.2:
sudo route change -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.2

查看特定目标的路由信息:
使用 -n 选项加上目标IP地址可以查看特定目标的路由信息。
查看到主机 192.168.1.100 的路由:
route -n | grep 192.168.1.100


route 命令的输出通常会列出每条路由的详细信息,包括目标网络、网关、掩码、接口和标志等。例如:
目标:显示目标网络或主机的IP地址。
网关:显示用于到达目标的下一跳路由器的IP地址。
掩码:显示目标网络的子网掩码。
接口:显示路由器的出口接口。
标志:显示路由的标志,例如 UG 表示此路由是默认网关。

wget:用于从网络下载文件。

下载单个文件:
wget URL
其中 URL 是要下载的文件的地址,可以是 HTTP、HTTPS 或 FTP 协议的链接。

保存文件到指定位置:
使用 -O 选项可以指定保存下载文件的路径和文件名:
wget -O /path/to/save/file URL
这将把下载的文件保存到指定的路径和文件名。


递归下载整个网站:
使用 -r 选项可以递归下载整个网站。这对于下载一个完整的静态网站非常有用:
wget -r URL
注意:递归下载可能会下载整个网站的所有链接,包括子链接,因此要谨慎使用,以免下载大量不必要的文件。

限制递归深度:
使用 -l 选项可以限制递归的深度,即下载的链接层级:
wget -r -l depth URL
这将限制下载到指定的深度层级。

断点续传:
使用 -c 选项可以启用断点续传功能。如果下载中断,可以继续下载未完成的部分而不是重新开始:
wget -c URL

后台下载:
使用 -b 选项可以在后台运行 wget,允许你继续执行其他命令:
wget -b URL
下载的进度和日志会保存在 wget-log 文件中。

限制下载速度:
使用 --limit-rate 选项可以限制下载速度,以避免占用过多带宽:
wget --limit-rate=100k URL
这将限制下载速度为每秒100KB。

其他常用选项
-q:静默模式,减少输出。
-nv:非详细模式,减少详细输出。
-np:不递归上级目录。
-U:指定用户代理,模拟不同的浏览器访问。

curl:用于发送和接收数据

下载文件:
curl URL -o filename
这会将从 URL 下载的文件保存为 filename。

显示下载进度:
使用 -# 选项可以显示下载进度条:
curl -# URL -o filename
这样会在下载过程中显示进度条。

发送 GET 请求:
curl -X GET URL

发送 POST 请求,并使用 -d 选项传递数据:
curl -X POST -d 'data' URL
这会将 data 作为 POST 请求的数据发送给 URL。

使用 -H 选项可以设置请求头:
curl -H 'Content-Type: application/json' URL
这会将 Content-Type 设置为 application/json。

使用 -o 或 -O 选项可以将响应保存到文件:
curl URL -o filename
-o 用于指定保存的文件名,-O 用于使用从 URL 中推断出的文件名保存。

使用 -F 选项可以上传文件:
curl -F 'file=@localfile.txt' URL
这会将 localfile.txt 上传到 URL。

HTTPS 请求:
curl 默认支持 HTTPS,不需要额外选项。

使用 -u 选项可以进行基本的 HTTP 认证:
curl -u username:password URL
这会使用 username 和 password 进行 HTTP 基本认证。

其他常用选项
-s:静默模式,减少输出。
-v:详细模式,显示详细的请求和响应信息。
-L:跟随重定向。
--cookie:发送和接收 cookies。
--header:添加自定义头部信息。

ssh:用于访问和管理远程计算机

连接到远程主机:
ssh username@hostname
其中 username 是远程主机的用户名,hostname 是远程主机的 IP 地址或域名。

指定端口连接:
如果远程主机的 ssh 服务监听在非默认的端口(默认为 22),可以使用 -p 选项指定端口号:
ssh -p port username@hostname
其中 port 是 ssh 服务监听的端口号。

使用 SSH 密钥对进行认证可以更安全地连接到远程主机,而不需要输入密码:
ssh -i path/to/private_key username@hostname
path/to/private_key 是本地的私钥文件路径。


在 ssh 命令后面指定要在远程主机上执行的命令:
ssh username@hostname 'command'
这会连接到远程主机并执行 command。

其他常用选项
-C:请求压缩所有数据以提高性能。
-v:详细模式,显示 ssh 的调试信息。

scp:用于在本地主机和远程主机之间传输文件,通过 SSH 协议进行加密传输

使用 scp 将本地文件传输到远程主机上:
scp /path/to/local/file username@hostname:/path/to/remote/location
/path/to/local/file 是本地文件的路径。
username 是远程主机的用户名。
hostname 是远程主机的 IP 地址或域名。
/path/to/remote/location 是远程主机上文件存放的路径。

使用 scp 从远程主机获取文件到本地:
scp username@hostname:/path/to/remote/file /path/to/local/location
username 是远程主机的用户名。
hostname 是远程主机的 IP 地址或域名。
/path/to/remote/file 是远程主机上要获取的文件路径。
/path/to/local/location 是本地文件存放的路径。

指定端口连接:
如果 ssh 服务监听在非默认的端口(默认为 22),可以使用 -P 选项指定端口号:
scp -P port /path/to/local/file username@hostname:/path/to/remote/location

使用 SSH 密钥对进行认证:
可以使用 -i 选项指定私钥文件路径,以使用 SSH 密钥对进行认证:
scp -i /path/to/private_key /path/to/local/file username@hostname:/path/to/remote/location

递归复制目录:
scp -r /path/to/local/directory username@hostname:/path/to/remote/location
-r 选项可以递归地复制整个目录及其内容。

传输文件夹及其内容:
scp -r username@hostname:/path/to/remote/directory /path/to/local/location
-r 选项同样适用于传输整个文件夹及其内容。


其他常用选项
-v:详细模式,显示详细的调试信息。
-C:请求压缩传输的数据以提高性能。
-p:保持文件的修改时间和访问时间。
-l:限制传输速率,以避免网络拥塞。



确保远程主机的 SSH 服务和配置是安全的。
建议使用 SSH 密钥对进行认证,而不是在命令行中使用明文密码。
避免在不可信的网络环境中使用 scp,尤其是在未加密或不安全的网络中。

nslookup:用于查询 DNS信息

查询域名对应的 IP 地址:
nslookup example.com
这会输出 example.com 的 IP 地址记录,以及 DNS 解析过程中的相关信息。

反向查询 IP 地址对应的域名:
使用 -type=PTR 选项可以进行反向查询,即查询 IP 地址对应的域名:
nslookup -type=PTR 8.8.8.8
这会输出 IP 地址 8.8.8.8 对应的域名。

指定特定 DNS 服务器:
默认情况下,nslookup 使用操作系统配置的 DNS 服务器。可以使用 -querytype 选项指定查询的类型,以及 -server 选项指定特定的 DNS 服务器。
nslookup -querytype=MX example.com 8.8.8.8
这会查询 example.com 的邮件服务器记录(MX 记录),并使用 Google 的 DNS 服务器 8.8.8.8 进行查询。

设置递归查询:
使用 -recurse 选项可以强制 nslookup 执行递归查询,即继续向上级 DNS 服务器查询,直至找到结果。
nslookup -recurse example.com

显示详细信息:
使用 -debug 选项可以显示更详细的调试信息,包括 DNS 查询过程中的通信细节。
nslookup -debug example.com

其他常用选项
-timeout:设置查询超时时间,单位为秒。
-queryclass:设置查询的类别(通常使用默认值 IN)。
-port:指定要连接的远程 DNS 服务器的端口号。



A 记录(Address Record):
用途:将域名解析为 IPv4 地址。
示例:example.com 的 A 记录可以指定为 192.0.2.1,这样访问 example.com 就会被解析为 192.0.2.1。
AAAA 记录(IPv6 Address Record):
用途:将域名解析为 IPv6 地址。
示例:example.com 的 AAAA 记录可以指定为 2001:db8::1,这样访问 example.com 就会被解析为 2001:db8::1。

MX 记录(Mail Exchange Record):
用途:指定邮件服务器的优先级和域名。
示例:example.com 的 MX 记录可以指定为 10 mail.example.com,这表示邮件应该发送到 mail.example.com,优先级为 10。

NS 记录(Name Server Record):
用途:指定域名服务器(Name Server),负责解析特定域名的查询。
示例:example.com 的 NS 记录可以指定为 ns1.example.com 和 ns2.example.com,这些记录告诉其他 DNS 服务器去查询 ns1.example.com 和 ns2.example.com 来获取 example.com 的解析信息。

CNAME 记录(Canonical Name Record):
用途:创建域名的别名,实现域名的重定向。
示例:www.example.com 的 CNAME 记录可以指定为 example.com,这样访问 www.example.com 就会被重定向到 example.com。

4. 磁盘相关命令

df:用于查看磁盘空间使用情况

显示当前系统上所有已挂载文件系统的磁盘空间使用情况:
df
一般包括下列输出信息:
Filesystem: 文件系统名称,比如 /dev/sda1。
Size: 文件系统总大小,以 GB 为单位。
Used: 文件系统当前已使用空间大小,以 GB 为单位。
Avail: 文件系统当前剩余空间大小,以 GB 为单位。
Use%: 文件系统使用率,以百分比表示。
Mounted on: 文件系统挂载点,即在文件系统中访问它的路径,比如 / 或 /mnt/data。

显示特定文件系统的详细情况:
df /dev/sda1
这会显示 /dev/sda1 文件系统的。

显示不同单位的存储空间:
df -m
-h 表示使用人类可读的单位(KB,MB,GB),-m 表示使用兆字节(MB)为单位。

显示所有挂载点:
df -a 
这会显示所有已挂载的、隐藏的以及没有被其它命令挂载的块设备。

只显示已使用的空间:
df --total
这会展示一个总计行的统计信息,包括总存储空间,已使用的存储空间,以及空闲存储空间。

定制输出格式:
下列选项来定制输出格式。
df -T显示文件系统的类型
df -x type排除特定类型的文件系统排除

man df 可以获取更多关于 df 命令的详细文档和用法说明。

du:用来显示文件和目录的空间信息。

du [选项] 文件/目录
常用选项:
-h: 以人类可读的单位(如 KB, MB, GB)显示文件大小,而非原始的块大小。
-a: 显示所有子目录的大小,不仅仅是直接子目录。
-c: 在最后显示总大小。
-d: 指定要显示指定深度(可选:0-N)的目录结构信息。
-s: 只显示目录的总大小,而不显示其子目录内的大小。
-b:显示文件和目录的大小,以字节为单位。

显示当前目录下所有文件和目录的大小(以GB为单位):
du -sh *

显示当前目录下所有文件和子目录的大小 (以MB单位) :
du -hm *

仅显示单个目录的大小:
du -sb /home/user/Documents 

显示指定目录下所有子目录的大小 (以KB为单位,显示):
du -a /opt/data

只显示指定目录的总大小而不显示子目录的大小:
du -s /var/log


du 命令会将文件大小展示为整体的占用空间。

lsblk:用于列出系统的块设备信息。

sudo lsblk [选项]

常用选项:
-f : 显示文件系统。
-o : 指定要显示的输出格式 ( --print --version 查看可用格式)。
-h : 以更易读的单位显示设备大小 (KB、MB、GB...)

一般包括下列输出信息:
NAME: 是该块设备的名称,例如 /dev/sda 。
MAJ:MIN: 是主设备号和次设备号。
RM: 表示删除标记,0 表示未删除,1 表示已删除。
SIZE: 显示设备的大小。
RO: 表示只读标记,0 表示可读写,1 表示只读。
TYPE: 显示设备类型,例如 disk(硬盘),part(分区),loop(虚拟磁盘等)。
MOUNTPOINT: 显示挂载点,即该设备被挂载到的目录。

查看所有块设备信息:
sudo lsblk

查看指定设备的信息:
sudo lsblk /dev/sdb

查看指定类型设备的信息 (例如分区):
sudo lsblk -o NAME,SIZE,TYPE,MOUNTPOINT | grep 'part'

fdisk:用于管理磁盘分区 

fdisk [选项] 设备文件
设备文件: 通常是 /dev/sda 类似的形式,表示要操作的分区磁盘。

常用选项:
-l : 列出磁盘分区表。
-n : 在创建分区时提供交互式帮助提示。
-C : 列出设备的默认分区表类型 (例如,msdos)。

显示磁盘分区表:
sudo fdisk -l
这会列出系统中所有已连接的磁盘及其分区信息。

进入fdisk交互式模式:
sudo fdisk /dev/sda
你会在 fdisk 交互式模式下看到各种操作命令。

创建新分区:
在fdisk模式下,输入 n 创建新分区。

设置分区类型:
在fdisk模式下,输入 t 可以设置分区类型。

退出fdisk模式:
进入fdisk模式后,输入 w 保存更改并退出。


fdisk 操作可能会导致数据丢失,确保备份重要数据。
在使用 fdisk 之前,请使用 lsblk 或 df 命令确认正在操作的磁盘和分区是正确的。

5. 用户管理相关命令

id:用于显示当前用户或指定用户的用户身份信息

id [选项] [用户名]
常用选项:
-u : 显示用户的 UID(用户标识号)。
-g : 显示用户所属的基本组的 GID(组标识号)。
-G : 显示用户所属的所有附加组的 GID(组标识号),多个 GID 之间用逗号分隔。
-n : 显示用户名而不是 UID。
-r : 显示实际的 UID/GID,而不是有效的(可能是映射后的)。
-Z : 显示安全上下文。


显示当前用户的 UID 和 GID:
id

显示特定用户的 UID 和 GID:
id 用户名

显示用户名而不是 UID:
id -n 用户名

显示用户所属的所有附加组的 GID:
id -G 用户名

useradd:用于创建新的用户账户

sudo useradd [选项] 用户名

常用选项:
-c "用户描述" : 设置用户描述(comment)。
-d 目录 : 设置用户主目录(home directory)。
-g 组名称 : 设置用户所属的用户组。
-G 组名称1,组名称2, ... : 给用户添加多个用户组。
-s /bin/bash : 设置用户的默认 shell,默认为/bin/bash。
-m : 自动创建用户的主目录。
-U : 没有密码的用户 (必须指定密码后再使用该用户)。

创建一个新的用户:
sudo useradd -c "系统管理员" -m 新用户
这将创建名为 "新用户" 的用户,并设置其描述为 "系统管理员", 同时自动创建用户的 /home/新用户 主目录。

设置用户密码:
sudo passwd 新用户
系统会提示您输入新密码。

添加用户到特定组:
sudo useradd -g admin -G wwwdata 用户名
这会将名为 "用户名" 的用户添加至 "admin" 组,并同时添加至 "wwwdata" 组

userdel:用于删除用户账户及其相关配置和文件

sudo userdel [选项] 用户名
常用选项:
-r : 删除用户的主目录及其内容。
-f : 强制删除用户,即使用户当前登录或拥有进程。
-Z : 删除用户的 SELinux 用户。
-h : 显示帮助信息和选项。

删除用户(保留主目录):
sudo userdel 用户名
这会删除名为 "用户名" 的用户账户,但会保留其主目录及其内容。

删除用户及其主目录:
sudo userdel -r 用户名
这会删除名为 "用户名" 的用户账户,并同时删除其主目录及其内容。

强制删除用户(即使用户当前登录):
sudo userdel -f 用户名
这会强制删除名为 "用户名" 的用户账户,即使该用户当前已登录或有运行中的进程。

passwd:用于更改用户的密码

passwd [选项] [用户名]
常用选项:
-l : 锁定用户账户,使其无法登录。
-u : 解锁用户账户,允许其登录。
-d : 使用户密码无效(删除密码),但用户仍然可以登录。
-e : 强制用户在下次登录时更改密码。

更改当前用户的密码:
passwd

更改其他用户的密码(需要管理员权限):
sudo passwd 用户名

锁定用户账户:
sudo passwd -l 用户名
这会禁用指定用户账户的登录,用户将无法使用该账户登录系统。

解锁用户账户:
sudo passwd -u 用户名
如果之前使用 -l 锁定了用户账户,这个命令可以解锁账户,使其恢复登录权限。

删除用户密码(用户仍然可以登录但没有密码):
sudo passwd -d 用户名
这将删除指定用户的密码,但仍允许用户使用其他身份验证方法登录系统。

强制用户下次登录时更改密码:
sudo passwd -e 用户名
这会将用户标记为需要强制更改密码。用户在下次登录时将被提示输入新密码。

chage:用于更改用户账户的过期信息

chage [选项] 用户名
常用选项:
-l : 显示用户的当前密码和账户过期信息。
-M : 设置密码过期后的最大天数。
-m : 设置密码过期前的最小天数。
-E : 设置账户过期的绝对日期,格式为 YYYY-MM-DD。
-I : 设置账户过期后的不活动期限,单位为天数。
-d : 设置账户的上次修改密码的日期,格式为 YYYY-MM-DD。


显示用户的当前密码和账户过期信息:
chage -l 用户名
这将显示用户的密码过期信息和账户过期信息,包括密码过期的最后修改日期和账户过期日期等。

设置密码过期后的最大天数(例如 90 天):
sudo chage -M 90 用户名
这会将指定用户的密码过期后最大允许使用天数设置为 90 天。超过这个天数后,用户将被提示修改密码。

设置密码过期前的最小天数(例如 7 天):
sudo chage -m 7 用户名
这会设置用户需要在密码过期前至少在 7 天内修改密码。这可以防止用户在密码过期当天才修改密码。

设置账户过期的绝对日期(例如 2026-01-01):
sudo chage -E 2026-01-01 用户名
这将设置用户账户的过期日期为 2026 年 1 月 1 日,过期后用户将无法登录系统。

设置账户过期后的不活动期限(例如 30 天):
sudo chage -I 30 用户名
如果用户在这段不活动期限内没有登录系统,账户将被视为过期。

设置账户的上次修改密码的日期(例如 2023-01-01):
sudo chage -d 2023-01-01 用户名
这会设置用户账户的上次修改密码的日期为 2023 年 1 月 1 日,这对于某些安全策略和审计目的可能是有用的。

groupadd:用于创建新的用户组

groupadd [选项] 组名
常用选项:
-g GID : 指定新用户组的数值标识符(GID)。默认情况下,系统会自动分配下一个可用的 GID。
-r : 创建一个系统用户组。系统用户组的 GID 通常较小且保留给系统服务使用。
-f : 强制创建用户组。如果组名已存在,使用此选项将强制创建。


创建一个名为 developers 的新用户组:
sudo groupadd developers
这会在系统中创建一个名为 developers 的新用户组。默认情况下,groupadd 命令会自动分配一个未使用的 GID 给该组。

创建一个名为 sysadmin 的系统用户组,指定 GID 为 2001:
sudo groupadd -r -g 2001 sysadmin
这会创建一个名为 sysadmin 的系统用户组,其 GID 为 2001。系统用户组通常用于服务账户或需要特殊权限的系统组件。

强制创建一个名为 developers 的用户组,即使它已经存在:
sudo groupadd -f developers
这会强制创建一个名为 developers 的用户组。如果该组名已存在,则会先删除原有组,然后重新创建。

groupdel:删除现有的用户组

基本用法
groupdel 组名

删除一个名为 developers 的用户组:
sudo groupdel developers
这会从系统中删除名为 developers 的用户组。如果该组还有成员,系统会提示确认是否删除。

groupmod:用于修改 用户组的属性

groupmod [选项] 组名
常用选项:
-g GID : 修改用户组的数值标识符(GID)。
-n 新组名 : 修改用户组的名称。
-o : 允许使用非唯一的 GID。通常与 -g 选项一起使用,用于允许将 GID 设置为非唯一值。
-R : 为指定的用户组设置 GID 范围。

修改用户组 developers 的 GID 为 1500:
sudo groupmod -g 1500 developers
这会将用户组 developers 的 GID 修改为 1500。GID 是用于系统内部标识用户组的数值。

将用户组 team 的名称修改为 team1:
sudo groupmod -n team1 team
这会将用户组 team 的名称修改为 team1。修改名称可以使用户组更符合当前组织结构或命名约定。

将用户组 developers 的 GID 设置为一个非唯一值(与现有的其他组共享同一 GID):
sudo groupmod -g 1500 -o developers
使用 -o 选项可以允许将 GID 设置为非唯一值,适用于特定需求下需要共享 GID 的情况。



修改用户组的 GID 可能会影响与该组相关联的文件和目录的访问权限。

6. 系统命令

uname:用于显示当前操作系统的信息

uname [选项]
常用选项:
-a, --all : 显示所有信息。
-s, --kernel-name : 显示内核名称。
-n, --nodename : 显示网络节点主机名。
-r, --kernel-release : 显示内核版本。
-v, --kernel-version : 显示内核版本详细信息。
-m, --machine : 显示系统硬件架构。
-p, --processor : 显示处理器类型。
-i, --hardware-platform : 显示硬件平台。
-o, --operating-system : 显示操作系统类型。


显示操作系统名称:
uname -s
输出可能是 Linux、Darwin(Mac OS X)、FreeBSD 等,取决于当前操作系统。

显示当前系统的内核版本:
uname -r
输出如 5.4.0-77-generic,这是 Linux 内核的版本号。

显示系统硬件架构:
uname -m
输出可能是 x86_64(64 位)、i686(32 位)等,指示当前系统的处理器架构。

显示所有信息:
uname -a
这会显示包括内核名称、版本、处理器类型等所有详细信息。

hostname:用于显示或设置当前系统的主机名

hostname [选项]
常用选项:
-a, --alias : 显示主机别名。
-d, --domain : 显示 DNS 域名。
-f, --fqdn, --long : 显示完全限定域名 (FQDN)。
-i, --ip-address : 显示主机的 IP 地址。
-s, --short : 显示短主机名(不包含域名部分)。


显示当前主机名:
hostname
这会简单地输出当前系统的主机名。

显示完全限定域名 (FQDN):
hostname -f
如果主机名是 myhost,而域名是 example.com,则输出可能是 myhost.example.com。

显示主机的 IP 地址:
hostname -i
这会显示主机当前使用的 IP 地址。

显示主机的短名称:
hostname -s
如果主机名是 myhost.example.com,则输出是 myhost。

hostnamectl:用来查看和修改主机名

hostnamectl [选项] [命令]
常用选项:
status : 显示当前主机名和相关状态信息。
set-hostname NAME : 设置主机名为指定的 NAME。


显示当前主机名和状态信息:
hostnamectl status
这会显示当前主机名、静态主机名、图标名、架构、操作系统、内核版本、虚拟化类型等信息。

设置主机名:
sudo hostnamectl set-hostname newhostname
这会将主机名设置为 newhostname。注意,这个操作需要管理员权限。

设置静态主机名:
静态主机名是永久性的主机名,会存储在 /etc/hostname 文件中。使用以下命令设置静态主机名:
sudo hostnamectl set-hostname --static newhostname
这会设置静态主机名为 newhostname,并更新 /etc/hostname 文件。

显示所有可用信息:
hostnamectl
这会显示所有可用的主机信息,包括静态主机名、图标名、内核版本、架构、虚拟化类型等。


使用 hostnamectl 命令可以比较方便地管理主机名,特别是在使用 systemd 管理的 Linux 系统上。
修改主机名可能需要重启服务或重新登录才能生效,具体取决于系统配置。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值