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.pdftouch 命令无法创建目录。
若指定的文件已存在,则执行 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/musicmv 命令不能直接创建父目录。
当移动文件到已经存在的目录时,如果目标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 docs2. 查看归档文件内容
tar -tvf archive.tar
-t:显示归档文件中包含的文件列表。查看 backup.tar 中包含的文件列表:
tar -tvf backup.tar3. 解压归档文件
tar -xvf archive.tar
-x:解压归档文件中的内容。解压 backup.tar 中的文件到当前目录:
tar -xvf backup.tar4. 添加文件到已存在的归档文件
tar -rvf archive.tar newfile.txt
-r:在已存在的归档文件末尾添加文件。向 backup.tar 中添加新文件 important.txt:
tar -rvf backup.tar important.txt5. 从归档文件中删除文件
tar --delete -f archive.tar file_to_delete.txt
--delete:从归档文件中删除指定的文件。从 backup.tar 中删除 oldfile.txt:
tar --delete -f backup.tar oldfile.txt6. 其他常用选项
-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.gz3. 查看压缩比和文件信息gzip -l filename.gz
显示压缩文件的信息查看 example.txt.gz 的压缩信息:
gzip -l example.txt.gz4. 压缩选项
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 filename2. 数字模式:
数字模式使用数字来指定权限,每个权限用数字表示如下:
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.shrenice 命令用于修改已经运行的进程的优先级。与 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 -aifconfig 命令所做的修改通常是临时的,系统重启后会重置。要永久修改网络配置,需要编辑相应的配置文件。/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_addressping 命令的输出通常显示每个 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_addresstraceroute 命令的输出通常显示每个路由器(每一跳)的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.100route 命令的输出通常会列出每条路由的详细信息,包括目标网络、网关、掩码、接口和标志等。例如:
目标:显示目标网络或主机的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/logdu 命令会将文件大小展示为整体的占用空间。
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 系统上。
修改主机名可能需要重启服务或重新登录才能生效,具体取决于系统配置。
相关文章:
Linux常用命令整理
本文将分享一些常用的Linux命令。根据功能的不同,大概分为以下几个方面,一是文件相关命令,二是进程相关命令,三是网络相关命令,四是磁盘相关命令,五是用户管理相关命令,六是系统命令。 1. 文件…...

python 闭包、装饰器
一、闭包: 1. 外部函数嵌套内部函数 2. 外部函数返回内部函数 3.内部函数可以访问外部函数局部变量 闭包(Closure)是指在一个函数内部定义的函数,并且内部函数可以访问外部函数的局部变量,即使外部函数已经执行…...
[pycharm]解决pycharm运行程序出现卡住scanning files to index索引的问题
有时候会出现索引问题,显示scanning files to index 解决方法: in pycharm, go to the "File" on the left top, then select "invalidate caches/restart...", and press "invalidate and restart". 然后等它自己重启…...
python每日学习11:numpy库的用法(下)
python每日学习11:numpy库的用法(下) 数组的拼接 名方法称说明concatenate连接沿现有轴的数组序列hstack水平堆叠序列中的数组(列方向)vstack竖直堆叠序列中的数组(行方向)concatenate函数用于沿指定轴连接相同形状的两…...

【Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
6、基于Fabirc 2.X 通用电子存证系统部署
evidence 将GOPATH设置为/root/go,拉取项目: cd $GOPATH/src && git clone https://gitee.com/henan-minghua_0/evidence.git 在/etc/hosts中添加: 127.0.0.1 orderer.example.com 127.0.0.1 peer0.org1.example.com 127.0.0.1 peer1.org…...
Linux Vim 由浅入深的教程
引言 原文链接 Vim是Linux系统中非常强大的文本编辑器,因其强大的功能和灵活的操作而受到广泛使用。尤其是在服务器管理和开发环境中,Vim几乎是必备工具。本教程将以CentOS 7为例,详细讲解Vim的安装、基本操作以及一些高级技巧,…...

MIT6.824(6.5840) Lab1笔记+源码
文章目录 其他人的内容,笔记写的更好,思路可以去看他们的MapReduceworkermapreduce coordinatorrpc纠错 源码worker.gocoordinator.gorpc.go 原本有可借鉴的部分 mrsequential.go,多看几遍源码 其他人的内容,笔记写的更好…...

【目录】8051汇编与C语言系列教程
8051汇编与C语言系列教程 作者将狼才鲸创建日期2024-07-23 CSDN文章地址:【目录】8051汇编与C语言系列教程本Gitee仓库原始地址:才鲸嵌入式/8051_c51_单片机从汇编到C_从Boot到应用实践教程 一、本教程目录 序号教程名称简述教程链接1点亮LCD灯通过IO…...

群管机器人官网源码
一款非常好看的群管机器人html官网源码 搭建教程: 域名解析绑定 源码文件上传解压 访问域名即可 演示图片: 群管机器人官网源码下载:客户端下载 - 红客网络编程与渗透技术 原文链接: 群管机器人官网源码...
整合EasyExcel实现灵活的导入导出java
引入pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId></dependency>实现功能 结合Vue前端,实现浏览器页面直接导出日志文件实现文件的灵活导入文件导出 3. 实体类 实体类里有自定义转…...
springSecurity学习之springSecurity web如何取得用户信息
web如何取得用户信息 之前说过SecurityContextHolder默认使用的是ThreadLocal来进行存储的,而且每次都会清除,但是web每次请求都会验证用户权限,这是如何做到的呢? 这是通过SecurityContextPersistenceFilter来实现的࿰…...

eclipse中的classbean导入外部class文件,clean项目后删除问题
最近被eclipse搞得头疼,下午终于解决 eclipse创建的java项目中,类的输出目录是classbean。由于项目需要,classbean目录下已经导入了外部的类,但每次clean项目时,会把class删掉。 广泛查询,eclipse不清空c…...

OBD诊断(ISO15031) 0A服务
文章目录 功能简介ISO 15765-4的诊断服务定义1、请求具有永久状态的排放相关故障诊断码2、请求具有永久状态的排放相关故障诊断码3、示例报文 功能简介 0A服务,即 Request emission-related diagnostic trouble code with permanent status(请求排放相关…...

ForCloud全栈安全体验,一站式云安全托管试用 开启全能高效攻防
对于正处于业务快速发展阶段的企业,特别是大型央国企而言,日常的安全部署和运营管理往往横跨多家子公司,所面临的挑战不言而喻。尤其是在面对当前常态化的大型攻防演练任务时,难度更是呈“几何级数”上升: 合规难 众…...

Java——————接口(interface) <详解>
1.1 接口的概念 在现实生活中,接口的例子比比皆是,比如:笔记本电脑上的USB接口,电源插座等。 电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备 电源插座插孔上,可以插ÿ…...

【C++】【继承】【子对象】【构造函数】含子对象的派生类的构造函数写法
(1)子对象的概念:若派生类A1的数据成员中包含基类A的对象a,则a为派生类A1的子对象 (2)含子对象的派生类的构造函数的执行顺序是: ①调用基类构造函数,对基类数据成员初始化 ②调用子…...

golang语言 .go文件版本条件编译,xxx.go文件指定go的编译版本必须大于等于xxx才生效的方法, 同一个项目多个go版本文件共存方法
在go语言中,我们不关是可以在编译时指定版本, 在我们的xxx.go文件中也可以指定go的运行版本,即 忽略go.mod中的版本,而是当当前的go运行版本达到指定条件后才生效的xxx.go文件。 方法如下: 我们通过在xxx.go文件的头部…...

深入浅出mediasoup—通信框架
libuv 是一个跨平台的异步事件驱动库,用于构建高性能和可扩展的网络应用程序。mediasoup 基于 libuv 构建了包括管道、信号和 socket 在内的一整套通信框架,具有单线程、事件驱动和异步的典型特征,是构建高性能 WebRTC 流媒体服务器的重要基础…...

每日一题 LeetCode03 无重复字符的最长字串
1.题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长字串的长度。 2 思路 可以用两个指针, 滑动窗口的思想来做这道题,即定义两个指针.一个left和一个right 并且用一个set容器,一个length , 一个maxlength来记录, 让right往右走,并且用一个set容器来…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...