侧边栏壁纸
博主头像
路小飞博主等级

行动起来,活在当下

  • 累计撰写 72 篇文章
  • 累计创建 12 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux常用命令

路小飞
2024-04-15 / 0 评论 / 0 点赞 / 69 阅读 / 32266 字

一、文件处理

1. ls 查看文件

用于列出指定目录中的文件和子目录。其基本语法格式如下:

ls [OPTION]... [FILE]...

ls -lth /root

其中,OPTION 是可选的参数,FILE 是要查看的文件名。

-l:以长格式显示文件列表,包括文件权限、所有者、组、大小、修改日期等详细信息。

-a:显示所有文件,包括隐藏文件(以.开头的文件)。

-h:与 -l 结合使用时,以人类可读的方式显示文件大小(如 GB、MB、KB 等)。

-t:按照修改时间排序文件列表,最新修改的文件在前面。

-S:按文件大小排序文件列表,最大的文件在前面。

-R:递归列出所有子目录的内容。

-d:仅显示目录本身的信息,而不显示目录中的内容。

-r:以相反的顺序显示文件列表,即倒序排列。

--color=auto:以彩色显示文件列表,不同类型的文件会以不同的颜色显示。

-i:显示文件的 inode 号码。

2. mkdir 创建目录

用于创建新目录。其基本语法格式如下:

-m, --mode=MODE:设置新创建目录的权限模式(即文件夹的权限),例如 mkdir -m 777 /test

-p, --parents:如果指定的目录路径中的上级目录不存在,mkdir 将会递归地创建这些上级目录。

-v, --verbose:在创建目录时显示详细信息,包括已创建的每个目录。

mkdir [OPTION]... [FILE]...

mkdir /root/test.rd
3. rm 删除文件

用于删除文件或者目录。其基本语法格式如下:

rm [OPTION]... [FILE]...

rm -fr /root/test.rd

-f:强制删除,无需确认。即使文件不存在或者没有写权限,也不会提示错误信息,直接删除。

-i:交互式删除,删除前会询问用户是否确认删除。

-r-R:递归删除,用于删除目录及其所有内容,包括子目录和文件。

4. cd 切换目录

用于切换工作目录。其基本语法格式如下:

cd [FILE]...

cd /tmp/test

后面除了file外,还可以跟几个特殊符号

.(点号):表示当前目录。

..(点点号):绝对路径下上级目录。

~(波浪号):表示当前用户的家目录。

-(减号):表示上一个工作目录,即切换到之前所在的目录。

5. pwd 显示当前目录

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

6. cp 复制文件

用于复制文件或目录。其基本语法格式如下:

cp [OPTION]... SOURCE... DESTINATION

cp /etc/passwd /opt/

其中,OPTION 是可选的参数,SOURCE 是要复制的源文件或源目录,DESTINATION 是目标文件或目录的名称。如果 DESTINATION 是一个已经存在的目录,SOURCE 将被复制到该目录中;如果 DESTINATION 是一个文件,SOURCE 将被复制并重命名为目标文件名。

常用的 cp 命令选项包括:

  • -a, --archive:保持源文件的所有属性,包括权限、所有者和组。
  • -i, --interactive:交互式地提示是否覆盖已存在的目标文件。
  • -r, -R, --recursive:递归地复制目录及其内容。
  • -u, --update:仅在源文件比目标文件新时才进行复制。
  • -v, --verbose:显示详细的复制过程。
  • -n:不要覆盖已存在的目标文件。
7. mv 剪切文件

用于移动文件或重命名文件和目录。其基本语法格式如下:

mv [OPTION]... SOURCE... DESTINATION
  • -v, --verbose:显示详细的移动过程。
8. cat 查看文件内容

用于连接文件并打印到标准输出的命令。虽然它的主要功能是显示文件的内容,但实际上它可以做更多的事情。

查看文件内容

cat filename

合并文件

cat file1 file2 file3 >file.all

命令行中输入多行文件

cat > filename << EOF
……
123
……
EOF

在这个命令中,<< EOF 是一种称为 "here document" 的特殊结构,用于在命令行中输入多行文本,并将其重定向到指定的文件中。EOF 是一个标记,用于指示文本输入的结束。

注意事项:cat的文件过大时,会对机器造成大的压力。查看大型文件时候可以采用tail或者head的方式。

9. tail 行尾查看

通常用于查看日志文件或其他实时生成的文本文件的末尾内容。基本如法如下:

tail [OPTION]... [FILE]...

tail -f /var/log/messages
  • -n <行数>:指定要显示的行数。例如,-n 10 将显示文件的最后 10 行。
  • -f:实时跟踪文件的增长,不断显示新添加到文件末尾的内容(follow 的缩写)。常用于查看日志文件,可以持续查看文件的最新内容。
10. less 查看文件

允许用户在文本文件中自由浏览、搜索、向上和向下滚动,以及执行其他操作。

less filename

一旦启动 less,它会显示文件内容,并等待用户输入命令。一些常用的 less 命令包括:

  • 空格键:向下滚动一页。
  • Enter 键:向下滚动一行。
  • b:向上滚动一页(backwards)。
  • q:退出 less
  • /pattern:搜索字段
  • n:显示下一个匹配项(如果使用了 /pattern 命令)。
  • G:跳转到文件的末尾。
  • 1Ggg:跳转到文件的开头。
  • h:显示帮助文档。
11. ln 创建链接文件

用于创建链接文件。

ln source_file link_name

ln -s /usr/local/nginx/sbin/nginx /usr/sbin
  • -s 选项表示创建符号链接(软链接)。
  • 无选项表示创建硬链接。

二、权限管理

1. chown 修改文件的归属

用于改变文件或目录的所有者或所属组。它的基本语法如下:

chown [选项] 新所有:新组 filename

chown -R lxf /tmp/test
chown -R :lxf /tmp/test
chown -R lxf:lxf /tmp/test
  • -R:递归地改变指定目录及其子目录中所有文件的所有者。
2. 修改文件的权限

用于改变文件或目录的权限。它的基本语法如下:

chmod [选项] 模式 文件/目录

chmod -R 755 /data 
chmod a+w /data
chmod g-r /data
chmod -R a=rwx /data

其中:

  • 选项 可以是一系列的控制参数,用来指定 chmod 命令的具体行为。如 -R 可以递归修改目录下文件权限。

  • 模式 是用来描述权限的字符串,可以是数字形式的权限表示或符号形式的权限表示。

  • 文件/目录 是你希望修改权限的文件或目录的路径。

数字形式的权限表示

数字可以是一个三位数,每位分别代表文件所有者、所属组和其他用户的权限。每位权限用数字 0-7 表示,分别对应不同的权限组合。

  • 0:没有权限

  • 1:执行权限,x

  • 2:写权限,w

  • 4:读权限,r

  • 例如,权限 rwxr-xr-- 可以用数字形式表示为 754

符号形式的权限表示

  • u:文件所有者(user)。
  • g:所属组(group)。
  • o:其他用户(others)。
  • a:所有用户(all)。
  • +:添加权限。
  • -:移除权限。
  • =:设置权限。
  • r:读权限。
  • w:写权限。
  • x:执行权限。
3. lsattr 查看文件隐藏属性

lsattr 是一个在 Linux 中用于显示文件或目录的属性的命令。这些属性是由 chattr 命令设置的。文件属性可以控制文件系统中某些文件或目录的行为,例如是否允许删除、更改等操作。

lsattr [选项] [文件或目录]

常见选项:

  • -R:递归地显示目录及其子目录中所有文件的属性。
  • -a:显示包括隐藏文件在内的所有文件的属性。
  • -d:如果是目录,仅显示该目录的属性,而不是目录内的文件。
  • -v:显示文件版本。

文件属性标志:

文件属性标志通常由一个字母表示:

  • a:只能追加(append only)。
  • i:不可更改(immutable)。
  • d:不备份(no dump)。
  • e:文件已使用扩展属性(extent format)。
  • j:数据经由 ext3 日志(journaled)写入。
  • s:文件在删除时被安全地擦除(secure deletion)。
  • u:文件在删除时会被保存(undelete)。
  • t:禁用尾部合并(no tail-merging)。
#显示当前目录中所有文件的属性:
lsattr

显示指定文件的属性:
lsattr filename

递归显示目录及其子目录中所有文件的属性:
lsattr -R directory

显示包括隐藏文件在内的所有文件的属性:
lsattr -a

仅显示目录本身的属性,而不显示目录内文件的属性:
lsattr -d directory
$ lsattr
----i--------e-- ./important_file
-----a-------e-- ./logfile

在上面的例子中,important_file 设置了不可更改(i)属性,而 logfile 设置了只能追加(a)属性。

lsattrchattr 通常用于增加文件系统的安全性和控制文件行为。通过这些属性,可以防止意外或恶意的修改和删除操作。

4. chattr 设置文件特殊属性

chattr 是一个 Linux 系统上的命令,用于修改文件或目录的扩展属性。这些属性可以控制文件的各种行为,比如使文件成为只读文件、防止文件被删除、防止文件被修改等。这个命令通常用于提高文件的安全性或者用于特定系统管理需求。

chattr +i filename 
将文件设置为不可修改的状态
chattr +a filename 
将文件设置为只允许追加写入的状态。

需要注意的是,使用 chattr 命令修改文件属性需要在超级用户或具有特定权限的用户下进行。

三、根据文件信息查找文件

1. which 查找命令

用于在系统的 PATH 路径中查找指定的命令,并返回找到的第一个匹配项的完整路径。

which [选项] 命令

which ls
2. locate

用于在 Linux 系统中快速定位文件的命令。它通过搜索数据库来查找文件路径,而不是实时搜索文件系统,因此速度非常快。这个数据库通常由操作系统定期更新,以确保准确性和高效性。

locate [选项] 关键词

locate myfile.txt
  • -i:忽略大小写。
  • -r:使用正则表达式进行搜索。

updatedb 命令用于手动更新 locate 命令所使用的数据库。这个数据库包含了系统中所有文件和目录的索引,以便 locate 命令可以快速地进行文件搜索。

3. find 搜素文件

用于在指定路径下查找文件和目录。以下是 find 命令的基本用法:

find 路径 [选项] [表达式]

find /home/user -name "*.txt"

find 命令的常用选项和表达式包括:

  • -name:指定要搜索的文件或目录的名称模式。
  • -type:指定要搜索的文件类型,如文件 (f)、目录 (d)、符号链接 (l) 等。
  • -size:根据文件大小进行搜索,可以使用诸如 +10M(大于 10MB)或 -10M(小于 10MB)的形式指定大小。
  • -user:根据文件的所有者进行搜索。
  • mtime : 用于查找在指定天数内或之前修改过的文件。-1查找在过去1天内修改的文件; +1:查找在1天之前修改的文件(不包括今天修改的文件)。
  • mmin : 用于查找在指定分钟内或
  • 之前修改过的文件。

使用案例:递归查找指定目录下最大的十个文件

find . -type f -exec du -h {} + 2>/dev/null | sort -hr | head -n 10
  • .:指定你要查找的目录路径,.表示当前目录
  • -type f:只查找文件。
  • -exec du -h {}:使用 du 命令获取每个文件的大小,-h 选项使输出为可读的格式(例如 KB、MB)。
  • +:使 du 一次处理多个文件,以提高效率。
  • sort -hr:根据文件大小进行降序排序,-h 使得排序按人类可读格式(处理带单位的大小)。
  • head -n 10:只显示前十个结果。

四、文本编辑vi/vim

vi是Unix操作系统和类Unix操作系统中最通用的文本编辑器。

vim编辑器是从 vi 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。

1. vim三种常用工作模式:

vim有三种主要模式:

  • 普通模式:默认模式,可以移动光标和执行命令。
  • 插入模式:用于文本输入。在普通模式下按 i 进入插入模式。
  • 命令模式:用于执行命令。在普通模式下按 : 进入命令模式。
2. 常用命令
操作类型所处模式命令功能
插入内容位置命令模式a光标所在字符后插入
行内跳转命令模式^跳转至行首
行间跳转命令模式$跳转至行尾
全文跳转命令模式gg跳转至首行
全文跳转命令模式G跳转至末行
全文跳转命令模式ng跳转至第n行
删除(剪切)命令模式del删除光标所在字符
删除(剪切)命令模式dd删除光标所在行
删除(剪切)命令模式ndd删除光标所在行及后续的 n-1
复制命令模式yy复制光标所在行
复制命令模式nyy复制光标所在行及后续的 m-1
粘贴命令模式p将剪贴板内容复制到光标所在行的下一行
替换命令模式r替换光标所在字符
撤销命令模式u撤销一步操作
显示行号命令模式:set nu显示行号
隐藏行号命令模式:set nonu隐藏行号
取消高亮命令模式:nohlsearch取消因为查询出现的高亮
查询命令模式/lxf向下搜索并定位到第一个匹配的 "lxf" 处;键入nshift+n(下一个或上一个)
替换命令模式:%s/old/new/g全文范围(%),将所有(g)的 old 替换为 new
进入粘贴模式命令模式:set paste临时进入 粘贴模式,以确保文本的格式不被意外改变
恢复正常模式命令模式:set nopaste退出 粘贴模式,恢复到正常模式
取消高亮命令模式:noh取消查找产生的词条高亮

五、用户管理

1. useradd 创建用户

用于创建新用户的命令。它的基本语法如下:

useradd [options] username

useradd -rs /etc/sbin/nologin lxf

其中,username 是要创建的新用户的用户名,options 是一些可选参数,用于指定用户的属性和行为。以下是一些常用的选项:

  • -c, --comment COMMENT:为用户添加注释,通常是用户的全名或其他描述信息。
  • -d, --home HOME_DIR:指定用户的家目录路径。
  • -g, --gid GROUP:指定用户的初始组。
  • -G, --groups GROUPS:指定用户所属的其他附加组。
  • -s, --shell SHELL:指定用户的默认 shell。
  • -u, --uid UID:指定用户的用户 ID。
  • -m, --create-home:如果家目录不存在,则创建家目录。
  • -r, --system:通常用于创建运行服务的系统用户。自动将用户UID和GID指定到1000以内,不在/home下创建用户家目录。
2. passwd 修改密码

用于更改用户密码的命令。它允许用户更改自己的密码,也可以由系统管理员来更改其他用户的密码(管理员权限)。

passwd 命令的基本语法为:

passwd [options] [username]

passwd lxf

echo "123" |passwd --stdin root

其中,options 是一些可选参数,username 是要更改密码的用户名。如果不指定用户名,则默认更改当前用户的密码。

一些常用的选项包括:

  • -l, --lock:锁定用户账户,禁止用户登录。
  • -u, --unlock:解锁已锁定的用户账户,允许用户登录。
  • -d, --delete:删除用户密码,使其变为空密码(空密码通常被禁止)。
  • -e, --expire:立即使用户密码过期,要求用户在下次登录时更改密码。
3. userdel 删除用户

userdel 命令是在 Linux 系统中用于删除用户账户的命令。它的基本语法如下:

userdel [options] username

userdel -r lxf

其中,username 是要删除的用户账户的用户名,options 是一些可选参数,用于指定删除用户时的行为。

一些常用的选项包括:

  • -r, --remove:删除用户的同时,同时删除用户的家目录和邮件目录等用户数据。
  • -f, --force:强制删除用户,即使用户当前登录或拥有运行中的进程。
  • -Z, --selinux-user:删除与用户相关的 SELinux 用户。

需要注意的是,使用 userdel 命令删除用户账户只会删除用户的账户信息,不会删除用户的数据文件。如果想要同时删除用户的家目录和邮件目录等数据,可以使用 -r 选项。删除用户操作需要管理员权限。

4. groups 查看用户所在组

用于显示指定用户所属的用户组。其基本语法如下:

groups [username]

groups

如果不指定 username,则默认显示当前登录用户所属的用户组。

5. newgrp 切换用户所在组

newgrp 命令用于启动一个新的 shell,将用户切换到一个新的用户组。它允许用户在登录后切换到另一个用户组,以便访问该组的文件和目录。

newgrp 命令的基本语法如下:

newgrp [groupname]

其中,groupname 是要切换到的目标用户组的名称。如果不指定 groupname,则默认切换到用户的主用户组。

需要注意的是,用户只能切换到他们本身所属的用户组或者是他们具有 newgrp 命令所需权限的附加用户组。

当用户切换到一个新的用户组后,新的 shell 会启动,并且用户的权限将会根据新的用户组进行调整。这对于在一个多用户环境中共享文件或访问需要特定用户组权限的文件非常有用。

请注意,newgrp 命令只影响当前的 shell 会话,不会影响其他已经运行的 shell 会话。

6. id 显示用户信息

用于显示用户的实际用户 ID(UID)、有效用户 ID、所属用户组 ID(GID)、附加组 ID 等信息。它可以用于查看当前登录用户或指定用户的身份信息。

id 命令的基本语法如下:

id [options] [username]
id

其中,options 是一些可选参数,用于指定要显示的信息格式,username 是要查询的用户名。如果不指定 username,则默认显示当前登录用户的身份信息。

一些常用的选项包括:

  • -u, --user:显示用户的实际用户 ID(UID)。
  • -g, --group:显示用户的所属组 ID(GID)。
  • -G, --groups:显示用户的附加组 ID 列表。
  • -n, --name:以用户和组名的形式显示结果,而不是以数字 ID 的形式。
7. chage 修改用户的密码信息

chage 命令用于修改用户账户的密码变更信息和过期日期。它可以设置密码过期后多久需要变更密码,以及从上次变更密码之后多久账户会被锁定等信息。

chage 命令的基本语法如下:

chage [options] username

其中,options 是一些可选参数,用于指定要修改的密码变更信息,username 是要修改的用户账户的用户名。

一些常用的选项包括:

  • -l :查看用户的密码信息。

  • -d, --lastday LAST_DAY:设置账户密码上次修改的日期。日期格式为 YYYY-MM-DD。

  • -E, --expiredate EXPIRE_DATE:设置账户的过期日期。日期格式为 YYYY-MM-DD。

  • -I, --inactive INACTIVE:设置账户密码过期后多少天账户被锁定。0 表示密码过期立即锁定账户,-1 表示账户永远不会被锁定。

  • -M, --maxdays MAX_DAYS:设置密码过期的最大天数。

  • -m, --mindays MIN_DAYS:设置密码变更的最小天数。

  • -W, --warndays WARN_DAYS:设置密码过期提醒的天数。

例如,要将用户 username 的密码过期日期设置为 90 天后,并且设置密码最小变更天数为 7 天,可以使用以下命令:

chage -M 90 -m 7 username

需要注意的是,修改用户密码变更信息需要管理员权限,因此通常需要使用 sudo 或者以 root 用户身份运行 chage 命令。

附录. 配置文件
1. 配置文件 /etc/passwd

/etc/passwd 是一个用于存储系统用户账户信息的文件,在类Unix系统中非常常见。每行记录了一个用户账户的基本信息,包括用户名、加密后的密码(现在通常是一个占位符 x,实际密码存储在 /etc/shadow 文件中)、用户 ID(UID)、组 ID(GID)、用户注释信息、用户家目录路径以及默认的登录 shell。

以下是 /etc/passwd 文件中每个字段的含义:

  1. 用户名 (Username):用户的登录名,用于登录系统。
  2. 加密后的密码 (Password):过去,实际加密的密码存储在此处。现在,通常是一个占位符 x,实际的密码被存储在 /etc/shadow 文件中。
  3. 用户 ID (UID):每个用户都有一个唯一的数字标识符,称为用户 ID。系统根据此 ID 来识别用户。
  4. 组 ID (GID):指定用户所属的主组的组 ID。
  5. 用户注释信息 (User Comment):可以包含有关用户的其他信息,通常是用户的全名或描述。
  6. 用户家目录 (Home Directory):用户登录后默认的工作目录路径。
  7. 默认的登录 shell (Login Shell):用户登录后默认使用的 shell。

每行记录的字段之间使用冒号(:)进行分隔。

2. 配置文件 /etc/shadow

/etc/shadow 是一个在类 Unix 系统中用来存储用户密码及相关安全信息的文件。与 /etc/passwd 文件不同,/etc/shadow 文件是不可由普通用户读取的,它需要管理员权限才能访问。这样做的目的是为了增强系统安全,防止密码信息被非法访问。

/etc/shadow 文件中每一行代表一个用户账户的安全信息,每行包含若干字段,字段之间由冒号 (:) 分隔。下面是 /etc/shadow 文件中各个字段的含义:

  1. 用户名:与 /etc/passwd 中的用户名相对应。
  2. 加密密码:用户的加密密码。如果这个字段是一个星号 (*) 或感叹号 (!),则表示账户被禁用,用户不能登录。
  3. 最后一次密码更改时间:表示自 1970 年 1 月 1 日以来,密码最后一次被更改的天数。
  4. 密码更改最小天数:自上次更改密码之后,用户必须等待的最小天数才能再次更改密码。
  5. 密码有效期:密码的有效期,超过这个时间未更改密码,系统可能会要求用户在下次登录时更改密码。
  6. 警告天数:密码到期前,系统开始警告用户更改密码的天数。
  7. 不活动天数:密码过期后用户还可以登录系统的天数。过了这段时间,账户将被禁用。
  8. 账户过期时间:自 1970 年 1 月 1 日以来,账户过期的天数。账户一旦过期,用户将无法登录。
  9. 保留字段:用于将来的扩展,目前未被使用。
3. 配置文件 /etc/group

/etc/group 文件用于定义用户组及其属性,其中每一行代表一个用户组,通常包含四个字段,具体含义如下:

  1. 组名(Group Name):标识用户组的名称。
  2. 组密码(Password):过去,实际加密的密码存储在此处。现在,通常是一个占位符 x,实际的密码被存储在 /etc/gshadow 文件中。
  3. 组ID(Group ID, GID):GID是一个唯一的数字,用于系统内部识别用户组。每个用户组都有一个唯一的GID,用户的初始组ID记录在/etc/passwd文件中。GID是用户组在系统内部的标识。
  4. 用户列表(User List):这一字段列出了属于该用户组的所有用户的用户名,用户名之间用逗号分隔。这允许系统知道哪些用户是该用户组的成员。
4. 配置文件 /etc/gshadow

/etc/gshadow 文件是 /etc/group 的补充,用于增强用户组的安全性和灵活性。这个文件中的每一行代表一个用户组的加密信息,以冒号(:)分隔成四个字段,具体含义如下:

  1. 用户组名:这一字段与 /etc/group 中的组名相对应,标识了用户组的名称。
  2. 加密密码:这一字段存储的是用户组的加密密码。对于大多数用户来说,通常不设置组密码,因此该字段常为空。如果设置为 "!",则表示该群组没有组密码,也不设有群组管理员。
  3. 组管理员:这一字段指定了用户组的管理员。在大型服务器中,为了减轻超级管理员 root 的工作负担,可以设置组管理员来管理用户组成员的添加。这样,当有用户想要加入某群组时,群组管理员可以将用户加入自己管理的群组中,而不需要 root 介入。
  4. 支持的账号名称:这一字段列出了其他用户可以临时通过验证的方式获得该用户组权限的用户列表。
5. 配置文件 /etc/login.defs

/etc/login.defs 文件用于在创建用户时,对用户的一些基本属性进行默认设置。该文件包含以下重要配置:

  1. 指定用户 UID 和 GID 的范围:UID(用户标识号)和GID(组标识号)是Linux系统中用于识别用户和用户组的唯一数字。通过这个文件,系统管理员可以定义新用户和用户组的起始和结束范围。
  2. 设定用户的过期时间:可以设置账户的有效期,这对于临时账户或特定项目的账户管理特别有用。
  3. 密码的最大长度:在这个文件中,系统管理员可以规定用户密码的最小长度,以确保密码的复杂度和安全性。
  4. 其他安全设置:比如是否允许用户使用空白密码、是否要求用户在一段时间内更改密码等。
6. 配置文件 /etc/default/useradd

/etc/default/useradd 是一个配置文件,它定义了在创建新用户时使用的默认设置。这个文件通常包含了一些用于配置用户账户的参数,例如用户的默认组、家目录的位置等。

  • GROUP: 指定新建用户的初始组ID。在这个例子中,初始组ID为100。
  • HOME: 指定新建用户的家目录位置。在这个例子中,家目录位于/home目录下。
  • INACTIVE: 指定账户过期前的天数。如果设置为-1,则表示账户永不过期。
  • EXPIRE: 指定账户的过期日期。留空表示不设置过期日期。
  • SHELL: 指定新建用户的默认shell。在这个例子中,使用的是/bin/bash
  • SKEL: 指定用于复制到新建用户家目录的默认文件和目录的路径。
  • CREATE_MAIL_SPOOL: 指定是否为新建用户创建邮件投递目录。如果设置为yes,则会创建邮件投递目录。
7. 配置文件 /etc/skel

/etc/skel 目录是一个在 Linux 系统中用来存放新建用户的默认配置文件的地方。当管理员创建新用户时,系统会自动将 /etc/skel 目录下的文件复制到新用户的家目录 (/home/<新用户名>) 中,作为新用户的默认配置文件。

8. useradd创建流程

useradd创建用户过程:useradd不加任何参数创建时,系统首先读取用于添加用户的配置文件/etc/login.defs和/etc/defult/useradd根据这两个配置文件中定义的规则添加用户。然后向/etc/passwd和/etc/group文件添加用户和用户组记录,同时/etc.passwd和/etc/group对应的加密文件也会自动生成记录。接着系统会自动在/etc/default/useradd文件设定的目录下建立用户家目录。最后复制/etc/skel目录中所有文件到新用户的家目录中,新用户建立完成。

chage

六、网络命令

1. ping 检测网络连通性

用于测试网络连接性。它通过向目标主机发送ICMP(Internet Control Message Protocol)回显请求数据包并等待响应,以确定目标主机是否可达以及往返时间。

基本用法:

ping [选项] 目标主机

常用选项:

  • -c:指定发送的回显请求数,例如ping -c 4 example.com 发送4个请求。
  • -i:指定发送每个请求之间的间隔时间(以秒为单位),例如ping -i 2 example.com 每2秒发送一次请求。
  • -t:指定IP头部的生存时间(TTL),例如ping -t 64 example.com 设置TTL为64。

例如:

ping google.com
ping 11.43.45.21

Linux系统此命令将一直发送请求直到被手动停止(通常通过Ctrl + C)。

2. traceroute

traceroute命令用于追踪数据包从源主机到目标主机经过的路由路径。它显示每个中间节点(路由器)的IP地址以及到达该节点所花费的时间。这个工具有助于诊断网络连接问题。

基本用法:

traceroute [选项] 目标主机

常用选项:

  • -n:直接显示IP地址而不是尝试解析主机名,这可以加快显示速度。
  • -m:指定最大跳数(TTL),例如traceroute -m 30 example.com 将最大跳数限制为30。
  • -w:设置等待每个回复的时间(秒),例如traceroute -w 2 example.com 设置等待时间为2秒。

例如:

traceroute google.com

此命令将显示从你的计算机到google.com经过的所有中间节点以及每个节点的响应时间。

如果在Windows上使用,可以使用tracert命令,它的用法和traceroute类似:

tracert google.com
3. telnet

telnet命令用于通过网络协议连接到远程主机,常用于测试远程服务器的连通性和服务可用性。它可以手动执行应用层协议的交互,常用于调试和配置网络服务。

基本用法:

telnet [主机名或IP地址] [端口号]

例如:

telnet example.com 80

此命令将尝试连接到example.com的80端口(通常用于HTTP服务)。如果连接成功,你可以手动输入HTTP请求并查看服务器的响应。

一些常用的telnet命令和交互:

  • Ctrl + ]:进入telnet命令模式,可以输入quit来退出。
  • open:连接到指定的主机和端口,例如open example.com 80
  • quit:退出telnet会话。
telnet example.com 22
telnet 192.168.17.110 22
  1. 手动执行HTTP请求

    telnet example.com 80
    

    然后输入:

    GET / HTTP/1.1
    Host: example.com
    
  2. 调试邮件服务器

    telnet mail.example.com 25
    

    然后可以手动输入SMTP命令来测试邮件服务器。

需要注意的是,telnet发送的数据是明文的,所以不推荐用于传输敏感信息。对于安全性要求较高的场景,应使用ssh或其他加密协议。

4. route 路由修改

route 是一个命令行工具,通常用于查看和管理操作系统的 IP 路由表。路由表是一个记录网络中可达目的地的列表,它告诉操作系统如何将数据包从一个网络节点传输到另一个网络节点。

route -n  #查看路由表
route add default gw 192.168.17.1
route del  default gw 192.168.17.1
5. ip 查看网卡信息

ip 命令是一个在 Linux 系统中用于管理网络接口、路由、策略路由、隧道等网络配置的强大工具。它可以取代旧的 ifconfigroute 命令,提供更丰富的功能和更详细的网络配置信息。

下面是一些常见的 ip 命令用法及其功能:

  1. 显示网络接口信息

    ip link show
    ip a
    

    这条命令用于显示系统中所有的网络接口及其状态、MAC 地址等详细信息。

  2. 配置网络接口

    ip addr add <ip_address>/<subnet_mask> dev <interface>
    

    这条命令用于给指定的网络接口配置 IP 地址。

  3. 启用或禁用网络接口

    ip link set dev <interface> up
    ip link set dev <interface> down
    

    这些命令分别用于启用或禁用指定的网络接口。

  4. 显示路由表

    ip route show
    

    这条命令用于显示系统当前的 IP 路由表,包括目的地址、网关、接口等信息。

  5. 添加静态路由

    ip route add <destination_network> via <gateway_ip>
    

    这条命令用于向系统的路由表添加一条静态路由。

  6. 删除静态路由

    ip route del <destination_network>
    

    这条命令用于从系统的路由表中删除指定的静态路由。

  7. 显示连接状态

    ip link show <interface>
    

    这条命令显示指定网络接口的连接状态和统计信息。

  8. 显示多路径策略路由

    ip rule show
    

    这条命令用于显示系统中定义的多路径策略路由规则。

ip 命令的灵活性和强大功能使得它成为管理和配置 Linux 网络的首选工具之一。它支持更多的网络配置选项,适用于复杂的网络环境和需求。

6. w

查询当前登录系统的所有用户以及正在进行的操作

w
7. who

查询登录用户

who
8. netstat

用于监视网络连接、路由表、接口统计信息、伪装连接和多播成员资格。以下是一些常见的用法和选项:

子选项:

  1. -t tcp协议
  2. -u udp协议
  3. -l 监听
  4. -n 以数字形式显示(即IP和端口)(不显示域名)
  5. -a 显示所有选项
  6. -p 显示建立相关连接程序名和进程号
netstat -ntlu

常见端口:

  • 20 21:ftp服务 文件共享
  • 22:ssh服务 安全的远程连接
  • 23:telnet 明文连接(不安全)
  • 25 smtp:简单邮件传输协议 发信
  • 110 pop3:邮局协议 收信
  • 80:http超文本传输协议
  • 3306 mysql端口
  • 3389 Windows终端端口
  • /etc/services 所有常见的端口
9.ss

同netstat,没有netstat时候作为其平替

七、关机和重启命令

1. 关机
poweroff
init 0
shutdown -h now
shutdown -h 5
5min后关机
2. 重启
reboot
init 6
shutdown -r now
3. 数据同步

sync 命令是 Unix 和类 Unix 操作系统中的一个工具,用于将所有待处理的文件系统缓冲区数据写入磁盘。这确保了所有的文件系统更改都被保存,从而防止数据在系统崩溃或断电时丢失。

具体而言,sync 命令执行以下操作:

  1. 刷新缓冲区:将内存中缓存的数据写入磁盘,包括修改过的文件数据和文件系统元数据。
  2. 确保数据一致性:确保所有挂起的写操作都被完成,从而使文件系统处于一致状态。
  3. 用法:通常在卸载文件系统或关闭系统之前使用,以确保所有数据都已正确写入。

基本使用方法如下:

sync

可以单独使用sync命令,也可以在某些情况下与其他命令结合使用,例如在系统重启之前:

sync; reboot

这是为了确保在重启系统之前,所有文件系统的更改都已被保存。

八、挂载

1. mount 挂载

mount 命令是 Unix 和类 Unix 操作系统中用于挂载文件系统的工具。通过 mount 命令,您可以将文件系统(例如硬盘分区、USB 驱动器、ISO 文件等)挂载到系统的目录树中,从而使其内容可用。

以下是 mount 命令的一些常见用法和示例:

mount [选项] <设备> <挂载点>
  1. 挂载一个设备
    假设 /dev/sdb1 是一个硬盘分区,您希望将其挂载到 /mnt/mydrive 目录:

    sudo mount /dev/sdb1 /mnt/mydrive
    
  2. 查看当前挂载的文件系统
    使用 mount 命令不带任何参数可以查看当前系统中所有挂载的文件系统:

    mount
    
  3. 以只读方式挂载
    您可以使用 -o 选项以只读模式挂载文件系统:

    sudo mount -o ro /dev/sdb1 /mnt/mydrive
    
  4. 挂载 ISO 文件
    假设您有一个 ISO 文件 image.iso,您可以将其挂载到 /mnt/iso 目录:

    sudo mount -o loop image.iso /mnt/iso
    
  5. 卸载文件系统
    使用 umount 命令可以卸载文件系统:

    sudo umount /mnt/mydrive
    

子选项:

  • -t <文件系统类型>:指定文件系统类型,例如 ext4, ntfs, vfat 等。

    sudo mount -t ext4 /dev/sdb1 /mnt/mydrive
    
  • -o <选项>:指定挂载选项,例如 ro(只读),rw(读写),loop(挂载文件作为设备)等。

    sudo mount -o ro /dev/sdb1 /mnt/mydrive
    

要使挂载在系统重启后仍然有效,可以编辑 /etc/fstab 文件。此文件包含在启动时自动挂载的文件系统列表。添加一行描述您希望自动挂载的文件系统,例如:

/dev/sdb1  /mnt/mydrive  ext4  defaults  0  2

九、打包压缩

1. tar

tar 是 Unix 和类 Unix 操作系统中用于归档文件的命令行工具,通常用于创建和解压缩归档文件(也称为 tarball)。它能够将多个文件和目录打包成一个单独的文件,通常以 .tar 结尾,并可以选择使用其他压缩工具(如 gzip、bzip2、xz 等)对其进行压缩,形成 .tar.gz.tar.bz2.tar.xz 等文件。

#将多个文件或目录打包成一个 `.tar` 文件
tar -cvf archive.tar file1 file2 dir1

#解压缩一个 `.tar` 文件:
tar -xvf archive.tar

子选项:

  • -c:创建归档文件。

  • -v:显示详细信息,输出归档过程中处理的文件名。

  • -f:指定归档文件的名称。

  • -x:解压缩归档文件。

  • -v:显示详细信息,输出解压缩过程中处理的文件名。

  • -f:指定要解压缩的归档文件。

  • -z:使用 gzip 压缩(通常与 .tar.gz 一起使用)。

    tar -czvf archive.tar.gz file1 file2 dir1
    tar -xzvf archive.tar.gz
    
  • -j:使用 bzip2 压缩(通常与 .tar.bz2 一起使用)。

    tar -cjvf archive.tar.bz2 file1 file2 dir1
    tar -xjvf archive.tar.bz2
    
  • -J:使用 xz 压缩(通常与 .tar.xz 一起使用)。

    tar -cJvf archive.tar.xz file1 file2 dir1
    tar -xJvf archive.tar.xz
    
  • -C:指定解压缩时的目标目录。

    tar -xvf archive.tar -C /target/directory
    
2. zip 和 unzip

zip 命令用于创建 ZIP 文件,可以将多个文件和目录打包成一个 ZIP 归档。

将多个文件和目录打包成一个 ZIP 文件:

zip archive.zip file1 file2 dir1

子选项:

  • -r:递归地将指定目录及其所有内容添加到 ZIP 文件中。
  • -u:更新现有的 ZIP 文件,只添加新的或已更改的文件。
  • -d:从 ZIP 文件中删除指定的文件。

unzip 命令用于解压缩 ZIP 文件。

解压缩一个 ZIP 文件:

unzip archive.zip
unzip archive.zip -d /target/directory

子选项:

  • -l:列出 ZIP 文件中的内容,但不解压缩。
  • -d:指定解压缩目标目录。
  • -u:更新 ZIP 文件中已存在的文件,只覆盖旧版本。

ZIP 文件是一种常见的跨平台归档格式,可以在 Windows、Linux、macOS 等操作系统上使用。

0

评论区