linux完整
命令
man:
man 命令中常用按键以及用途
按键 | 用途 |
空格键 | 向下翻一页 |
PaGe down | 向下翻一页 |
PaGe up | 向上翻一页 |
home | 直接前往首页 |
end | 直接前往尾页 |
/ | 从上至下搜索某个关键词,如“/linux” |
? | 从下至上搜索某个关键词,如“?linux” |
n | 定位到下一个搜索到的关键词 |
N | 定位到上一个搜索到的关键词 |
q | 退出帮助文档 |
man 命令帮助信息的结构以及意义
结构名称 | 代表意义 |
NAME | 命令的名称 |
SYNOPSIS | 参数的大致使用方法 |
DESCRIPTION | 介绍说明 |
EXAMPLES | 演示(附带简单说明) |
OVERVIEW | 概述 |
DEFAULTS | 默认的功能 |
OPTIONS | 具体的可用选项(带介绍) |
ENVIRONMENT | 环境变量 |
FILES | 用到的文件 |
SEE ALSO | 相关的资料 |
HISTORY | 维护历史与联系方式 |
echo:echo 命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”
date:date 命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。
date 中的参数以及作用:
参数 | 作用 |
%t | 跳格[Tab 键] |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
reboot:reboot 命令用于重启系统,其格式为 reboot。
poweroff :poweroff 命令用于关闭系统,其格式为 poweroff。
wget :wget 命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
wget 命令的参数以及作用
参数 | 作用 |
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
ps :ps 命令用于查看系统中的进程状态,格式为“ps [参数]”。
ps 命令的参数以及作用
参数 | 作用 |
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
Linux进程状态:
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
D(不可中断):进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行
注意:在 Linux 系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的合并后仅保留一个-(减号)即可。另外 ps 命令可允许参数不加减号(-),因此可直接写成 ps aux 的样子。
top:动态监视进程活动与负载等信息,格式为top。
pidof:用于查询某个指定服务进程的PID值,格式为"pidof[参数][服务名称]"。例如:pidof sshd
kill:用于终止某个指定PID的服务进程,格式为"kill [参数][进程PID]"
killall:用于终止某个指定名称的服务所对应的全部进程,格式为:"killall[参数][进程名称]"
ifconfig:用于获取网卡配置与网络状态等信息
uname:用于查看系统内核与系统版本等信息,格式为"uname [-a]".查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。如果要查看当前系统版本的详细信息,则需要查看 redhat-release 文件.
uptime:查看系统的负载信息,格式为uptime。
free:显示当前系统中内存的使用量信息,格式为"free [-h]".
who:用于查看当前登入主机的用户终端信息,格式为"who[参数]"
last:用于查看所有系统的登录记录,格式为"last[参数]"。
history:显示历史执行过的命令,格式为"history [-c]",-c参数用来清空所有的命令
历史命令会被保存在家目录的.bash_history文件中。
sosreport:用于收集系统配置以及架构信息并输出诊断文档,格式为sosreport。
pwd:用于显示用户当前所处的工作目录,格式为"pwd [选项]"。
cd:用于切换工作路径,格式为“cd [目录名称]”
ls:用于显示目录中的文件信息,格式为“ls [选项] [文件] ”,如果想要查看目录属性信息,则需要额外添加一个-d 参数
cat:用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。如果显示行号,可以在cat命令后面加-n
more:用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。
head:用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]”。
tail:用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f 文件名”。
tr:用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。先使用 cat 命令读取待处理的文本,然后通过管道符把这些文本内容传递给 tr 命令进行替换操作即可
wc:用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
wc 的参数以及作用
参数 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
stat:用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。
cut:用于按“列”提取文本字符,格式为“cut [参数] 文本”。如果按列搜索,不仅要使用-f 参数来设置需要看的列数,还需要使用-d 参数来设置间隔符号
diff:diff 命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。在使用 diff 命令时,不仅可以使用--brief 参数来确认两个文件是否不同,还可以使用-c 参数来详细比较出多个文件的差异之处
touch命令:用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”。
touch 命令的参数及其作用
参数 | 作用 |
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime 与mtime |
mkdir:mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”。
cp:用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。
cp 命令的参数及其作用
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r 为上述参数) |
mv:用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。
rm:rm 命令用于删除文件或目录,格式为“rm [选项] 文件”。
dd:用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。
dd 命令的参数及其作用
参数 | 作用 |
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
file:用于查看文件的类型,格式为“file 文件名”
tar:用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”。
tar 命令的参数及其作用
参数 | 作用 |
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip 压缩或解压 |
-j | 用bzip2 压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
grep:grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”。
grep 命令的参数及其作用
参数 | 作用 |
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 反向选择—仅列出没有“关键词”的行 |
find:用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。
nd 命令中的参数以及作用
参数 | 作用 |
-name | 匹配名称 |
-perm | 匹配权限(mode 为完全匹配,-mode 为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n 指n 天以内,+n 指n 天以前) |
-atime -n +n | 匹配访问文件的时间(-n 指n 天以内,+n 指n 天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n 指n 天以内,+n 指n 天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1 新但比f2 旧的文件 |
--type b/d/c/p/l/f | 匹配文件类型(后面的字幕参数依次表示块设备、目录、字符设备、管道、 链接文件、文本文件) |
-size | 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB 的文件) |
-prune | 忽略某个目录 |
-exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
管道符、重定向与环境变量
标准输入重定向(STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命令中输入。
标准输出重定向(STDOUT,文件描述符为 1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为 2):默认输出到屏幕。
输入重定向中用到的符号及其作用
符号 | 作用 |
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 < 文件 1 > 文件 2 | 将文件 1 作为命令的标准输入并将标准输出到文件 2 |
输出重定向中用到的符号及其作用
符号 | 作用 |
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>&1 或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
对于重定向中的标准输出模式,可以省略文件描述符 1 不写,而错误输出模式的文件描述符 2 是必须要写的
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
单引号(''):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。
Linux 系统中最重要的 10 个环境变量
变量名称 | 作用 |
HOME | 用户的主目录(即家目录) |
SHELL | 用户在使用的 Shell 解释器名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言、语系名称 |
RANDOM | 生成一个随机数字 |
PS1 | Bash 解释器的提示符 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
计划任务
一次性计划任务:at 时间
查看已设置好但还未执行的一次性计划任务:at -l
删除计划任务:atrm任务序号
使用at命令设置计划任务时,默认采用的是交互式方法。
创建、编辑计划任务的命令:crontab -e
查看当前计划任务:crontab -l
删除某条计划任务:crontab -r
以管理员身份登录时,可以在crontab命令中加上-u参数来编辑他人的计划任务。
使用 crond 设置任务的参数字段说明
字段 | 说明 |
分 | 取值为 0~59 的整数 |
时 | 取值为 0~23 的任意整数 |
日 | 取值为 1~31 的任意整数 |
月 | 取值为 1~12 的任意整数 |
星期 | 取值为 0~7 的任意整数,其中 0 与 7 均为星期日 |
命令 | 要执行的命令或程序脚本 |
用户身份与文件权限
管理员 UID 为 0:系统的管理员用户。
系统用户 UID 为 1~999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏范围。
普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。
UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000开始的(即使前面有闲置的号码)
useradd:创建新的用户,格式为“useradd [选项] 用户名”。
使用该命令创建用户账户时,默认的用户家目录会被存放在/home 目录中,默认的 Shell 解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。这些默认设置可以使用如下参数去设置:
useradd 命令中的用户参数以及作用
参数 | 作用 |
-d | 指定用户的家目录(默认为/home/username) |
-e | 账户的到期时间,格式为 YYYY-MM-DD. |
-u | 指定该用户的默认 UID |
-g | 指定一个初始的用户基本组(必须已存在) |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户同名的基本用户组 |
-s | 指定该用户的默认 Shell 解释器 |
groupadd:创建用户组,格式为“groupadd [选项] 群组名”。
usermod:修改用户的属性,格式为“usermod[选项]用户名”。
usermod 命令中的参数及作用
参数 | 作用 |
-c | 填写用户账户的备注信息 |
-d -m | 参数-m 与参数-d 连用,可重新指定用户的家目录并自动把旧的数据转移过去 |
-e | 账户的到期时间,格式为 YYYY-MM-DD |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
续表
参数 | 作用 |
-L | 锁定用户禁止其登录系统 |
-U | 解锁用户,允许其登录系统 |
-s | 变更默认终端 |
-u | 修改用户的 UID |
passwd:修改用户密码、过期时间、认证信息等,格式为“passwd[选项][用户名]”
passwd 命令中的参数以及作用
参数 | 作用 |
-l | 锁定用户,禁止其登录 |
-u | 解除锁定,允许用户登录 |
--stdin | 允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username |
-d | 使该用户可用空密码登录系统 |
-e | 强制用户在下次登录时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
userdel:删除用户,格式为“userdel [选项] 用户名”。
userdel 命令的参数以及作用
参数 | 作用 |
-f | 强制删除用户 |
-r | 同时删除用户及用户家目录 |
文件权限与归属
-:普通文件。
d:目录文件。
l:链接文件。
b:块设备文件。
c:字符设备文件。
p:管道文件。
文件权限的字符与数字表示
权限分配 | 文件所有者 | 文件所属组 | 其他用户 | ||||||
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
文件的特殊权限
SUID:是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。
SGID:
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
SGID 的第一种功能是参考 SUID 而设计的,不同点在于执行程序的用户获取的不再是文件所有者的临时权限,而是获取到文件所属组的权限。
SBIT:SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了 SBIT 粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。当目录被设置 SBIT 特殊权限位后,文件的其他人权限部分的 x 执行权限就会被替换成 t 或者 T,原本有 x 执行权限则会写成 t,原本没有 x 执行权限则会被写成 T。
chattr:设置文件的隐藏权限,格式为“chattr [参数] 文件”。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件, 则需要追加“-参数”。
chattr 命令中用于隐藏权限的参数及其作用
参数 | 作用 |
i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而 不能新建或删除文件 |
a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only) |
S | 文件内容在变更后立即同步到硬盘(sync) |
s | 彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(atime) |
续表
参数 | 作用 |
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用 dump 命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-merging) |
X | 可以直接访问压缩文件中的内容 |
lsattr:显示文件的隐藏权限,格式为“lsattr [参数] 文件”。
文件访问控制列表:
setfacl:管理文件的 ACL 规则,格式为“setfacl [参数] 文件名称”。文件的 ACL 提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R 递归参数;针对普通文件则使用-m 参数;如果想要删除某个文件的 ACL, 则可以使用-b 参数。
getfacl:显示文件上设置的 ACL 信息,格式为“getfacl 文件名称”。
sudo:sudo 命令用于给普通用户提供额外的权限来完成原本root 管理员才能完成的任务,格式为“sudo [参数] 命令名称”。
sudo 服务中的可用参数以及作用
参数 | 作用 |
-h | 列出帮助信息 |
-l | 列出当前用户可执行的命令 |
-u 用户名或 UID 值 | 以指定的用户身份执行命令 |
-k | 清空密码的有效时间,下次执行 sudo 时需要再次进行密码验证 |
-b | 在后台执行指定的命令 |
-p | 更改询问密码的提示语 |
sudo 命令具有如下功能:
限制用户执行指定的命令:
记录用户执行的每一条命令;
配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。
如果担心直接修改配置文件会出现问题,则可以使用 sudo 命令提供的 visudo 命令来配置用户权限。这条命令在配置用户权限时将禁止多个用户同时修改 sudoers 配置文件,还可以对配置文件内的参数进行语法检查,并在发现参数错误时进行报错。
只有 root 管理员才可以使用 visudo 命令编辑 sudo 服务的配置文件。
存储结构与磁盘划分
Linux 系统中常见的目录名称以及相应内容
目录名称 | 应放置文件的内容 |
/boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
/dev | 以文件形式存放任何设备与接口 |
/etc | 配置文件 |
/home | 用户家目录 |
/bin | 存放单用户模式下还可以操作的命令 |
/lib | 开机时用到的函数库,以及/bin 与/sbin 下面的命令要调用的函数 |
/sbin | 开机过程中需要的命令 |
/media | 用于挂载设备文件的目录 |
/opt | 放置第三方的软件 |
/root | 系统管理员的家目录 |
/srv | 一些网络服务的数据文件目录 |
/tmp | 任何人均可使用的“共享”临时目录 |
/proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
/usr/local | 用户自行安装的软件 |
/usr/sbin | Linux 系统开机时不会使用到的软件/命令/脚本 |
/usr/share | 帮助与说明文件,也可放置共享文件 |
/var | 主要存放经常变化的文件,如日志 |
/lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
硬件设备 | 文件名称 |
IDE 设备 | /dev/hd[a-d] |
SCSI/SATA/U 盘 | /dev/sd[a-p] |
软驱 | /dev/fd[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0 或/dev/ht0 |
系统采用 a~p 来代表 16 块不同的硬盘(默认从 a 开始分配),而且硬盘的分区编号也很有讲究:
主分区或扩展分区的编号从 1 开始,到 4 结束;
逻辑分区从编号 5 开始。