常用的RPM软件包命令
文字描述 | 指令 |
---|---|
安装软件的命令格式 | rpm -ivh filename.rpm |
升级软件的命令格式 | rpm -Uvh filename.rpm |
卸载软件的命令格式 | rpm -e filename.rpm |
查询软件描述信息的命令格式 | rpm -qpi filename.rpm |
列出软件文件信息的命令格式 | rpm -qpl filename.rpm |
查询文件属于哪个RPM的命令格式 | rpm -qf filename.rpm |
常见的Yum命令
命令 | 作用 |
---|---|
yum repolist | 列出所有仓库 |
yum list all | 列出仓库中所有软件包 |
yum info 软件包名称 | 查看软件包信息 |
yum install 软件包名称 | 安装软件包 |
yum reinstall 软件包名称 | 重新安装软件包 |
yum update 软件包名称 | 升级软件包 |
yum remove 软件包名称 | 移除软件包 |
yum clean all | 清除所有仓库缓存 |
yum check-update | 检查可更新的软件包 |
yum grouplist | 查看系统中已经安装的软件包组 |
yum groupinstall 软件包组 | 安装指定的软件包组 |
yum groupremove 软件包组 | 移除指定的软件包组 |
yum groupinfo 软件包组 | 查询指定的软件包组信息 |
systemed与System V init 的区别以及作用
System V init 运行级别 | systemed 目标名称 | 作用 |
---|---|---|
0 | runlevel0.target, poweroff.target | 关机 |
1 | runlevel1.target, rescue.target | 单用户模式 |
2 | runlevel2.target, multi-user.target | 等同于级别3 |
3 | runlevel3.target, multi-user.target | 多用户的文本界面 |
4 | runlevel4.target, multi-user.target | 等同于级别3 |
5 | runlevel5.target, graphical.target | 多用户的图形界面 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 紧急Shell |
systemctl常用命令
systemctl命令 | 作用 |
---|---|
systemctl start foo.service | 启动服务 |
systemctl restart foo.service | 重启服务 |
systemctl stop foo.service | 停止服务 |
systemctl reload foo.service | 重新加载配置文件(不终止服务) |
systemctl status foo.service | 查看服务状态 |
systemctl enable foo.service | 开机自动启动 |
systemctl disable foo.service | 开机不自动启动 |
systemctl is-enable foo.service | 查看特定服务是否为开机自动启动 |
systemctl list-unit-files --type=service | 查看各个级别下服务的启动与禁用情况 |
常用LINUX命令
命令 | 描述 | 格式 |
---|---|---|
man man | 查看man命令自身的帮助信息 | |
man --help | 查看man命令自身的帮助信息 | |
man -h | 查看man命令自身的帮助信息 | |
echo | 在终端输出字符串或变量提取后的值 | echo[字符串|$变量] |
date | 显示和设置系统的时间或日期 | date[选项] [+指定的格式] |
reboot | 重启系统 | reboot |
poweroff | 关闭系统 | poweroff |
wget | 在终端中下载网络文件 | wget[参数] 下载地址 |
ps | 查看系统中的进程状态 | ps[参数] |
top | 动态监视进程活动与系统负载等信息 | top |
pidof | 查询某个指定服务进程的PID值 | pidof[参数] [服务名称] |
kill | 终止某个指定PID的服务进程 | kill[参数] [进程PID] |
killall | 终止某个指定名称的服务所对应的全部进程 | killall[参数] [进程名称] |
ifconfig | 获取网卡配置与网络状态等信息 | ifconfig[网络设备]] [参数] |
uname | 查看系统内核与系统版本等信息 | uname[-a] |
uptime | 查看系统的负载信息 | uptime |
free | 显示当前系统中内存的使用量信息 | free[-h] |
who | 查看当前登陆主机的用户终端信息 | who[参数] |
last | 查看所有系统的登陆记录 | last[参数] |
history | 显示历史执行过的命令 | history[-c] |
sosreport | 收集系统配置及架构信息并输出诊断文档 | sosreport |
pwd | 显示用户当前所处的工作目录 | pwd[选项] |
cd | 切换工作路径 | cd[目录名称] |
ls | 显示目录中的文件信息 | ls[选项] [文件] |
cat | 查看纯文本文件(内容较少) | cat[选项] [文件] |
more | 查看纯文本文件(内容较多) | more[选项] 文件 |
head | 查看纯文本文件的前N行 | head[选项] [文件] |
tail | 查看纯文本文档的后N行或持续刷新内容 | tail[选项] [文件] |
tr | 替换文本文件中的字符 | tr[原始字符] [目标字符] |
wc | 统计指定文本的行数、字数、字节数 | wc[参数] 文本 |
stat | 查看文件的具体存储信息和时间等信息 | stat 文件名称 |
cut | 按“列”提取文本字符 | cut[参数] 文本 |
diff | 比较多个文本文件的差异 | diff[参数] 文件 |
touch | 创建空白文件或设置文件的时间 | touch[选项] [文件] |
mkdir | 创建空白的目录 | mkdir[选项] 目录 |
cp | 复制文件或目录 | cp[选项] 源文件 目标文件 |
mv | 剪切文件或重命名文件 | mv[选项] 源文件 [目标路径|目标文件名] |
rm | 删除文件或目录 | rm[选项] 文件 |
dd | 按照指定大小和个数的数据块来复制或转换文件 | dd[参数] |
file | 查看文件类型 | file 文件名 |
tar | 对文件进行打包压缩或解压 | tar[选项] [文件] |
grep | 用于在文本中执行关键词搜索,并显示匹配结果 | grep[选项] [文件] |
find | 用于按照指定条件来查找文件 | find[查找路径] 寻找条件 操作 |
输入重定向中用到的符号及其作用
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
eg1:
需要统计b.txt文件的行数
$ wc -l b.txt
61 b.txt
也可以将输入重定向到b.txt文件中
$ wc -l < b.txt
61
第二个不会显示文件名,因为它只知道从标准输入中读取内容
eg2:
$ cat << u
>i
>love
>u
i
love
eg3:结合邮箱命令
# mail -s "readme" xx@qq.com << over
输出重定向中用到的符号及其作用
符号 | 作用 |
---|---|
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2 > 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原文件内容后面) |
命令 2 >> 文件 | 将错误输出重定向到一个文件中(追加到原文件内容后面) |
命令 >> 文件 2>&1或 命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容后面) |
通俗的讲,重定向输出就是把原本要输出的文件信息写入到一个文件中去而不是输出到控制台(显示屏)
管道命令符
“ | ”为管道命令符,其执行格式为“命令A | 命令B”,简单来说就是把前一个命令原本要输出到屏幕的标准正常数据当作后一个命令的标准输入。
eg1:
$ cat b.txt | wc -l
61
eg2:更改root用户的密码通常需要输入两次密码,这对编写自动化脚本很不方便,于是可以
# echo "xxxxxx" | passwd --stdin root
Changing password for user root
passwd:all .....successfully
命令行的通配符
“ * ” 代表匹配零个或多个字符,“ ? ” 代表匹配单个字符,“ [0-9] ”代表匹配0-9之间的单个数字的字符,“ [abc] ”代表匹配三个字符中任意一个字符。
转义字符表
字符 | 作用 |
---|---|
反斜杠( \ ) | 使反斜杠后面的一个变量变为单纯的字符串 |
单引号(’’) | 转义其中所有的变量为单纯的字符串 |
双引号("") | 保留其中的变量属性,不进行转义处理 |
反引号(F`) | 把其中的命令执行后返回结果 |
重要的环境变量
命令在Linux执行分为4个步骤:
第一步:判断用户是否以绝对路径或相对路径的方式输入命令,如果是的话则直接执行
第二步:Linux系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。可以用 alias 命令来创建一个属于自己的命令别名,格式为“ alias 别名=命令”。若要取消用 unalias 命令。
第三步:Bash解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交给第四步处理,可以使用 ”type 命令名称“ 来判断用户输入的命令是内部命令还是外部命令。
第四步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫做PATH,可以简单地把它理解成是“解释器小助手”,作用是告诉Bash解释器待执行的命令可能存放的位置,然后Bash解释器就会在这些位置逐个查找。PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。
查看Linux系统中所用环境变量可以使用env命令。
变量名称 | 作用 |
---|---|
HOME | 用户的主目录 |
SHELL | 用户在使用的Shell解释器名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言、语系名称 |
RANDOM | 生成一个随机数 |
PS1 | Bash解释器的提示符 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
export命令可以将变量提升为全局变量。
Vim中常用的命令
命令 | 作用 |
---|---|
dd | 删除(剪切)光标所在整行 |
5dd | 删除(剪切)从光标处开始的5行 |
yy | 复制光标所在整行 |
5yy | 复制从光标处开始的5行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步操作 |
p | 将之前删除或复制过的数据粘贴到光标后面 |
Vim末行模式中可用的命令
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 |
:q! | 强制退出 |
:wq! | 保存并强制退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该命令 |
:整数 | 跳转到该行 |
😒/one/two | 将光标所在行的第一个one替换成two |
😒/one/two/g | 将光标所在行的所有one替换成two |
:%s/one/two/g | 将全文的one替换成two |
?字符串 | 在文本中从下至上搜索该字符串 |
/字符串 | 在文本中上至下搜素该字符串 |
SHELL脚本的编写
简单示例:
#!/bin/bash
#For Example
pwd
ls -al
第一行一般是脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本
第二行的注释信息是对脚本的功能和某些命令的介绍信息
之后就是可执行的语句
接收用户参数:
Linux内置接收参数的变量:
参数 | 作用 |
---|---|
$0 | 当前Shell脚本程序的名称 |
$# | 总共有几个参数 |
$* | 所用位置的参数值 |
$? | 显示上一次命令的执行返回值 |
$1、$2 | 对应的第N个位置的参数值 |
判断用户的参数:
测试语句格式:[ 条件表达式 ]
条件测试语句可以分为4种:(1)文件测试语句(2)逻辑测试语句(3)整数值比较语句(4)字符串比较语句
文件测试所用参数:
运算符 | 作用 |
---|---|
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
逻辑测试符:
&& “与” 表示当前面的命令执行成功后才会执行它后面的命令
|| “或” 表示当前面的命令执行失败后才会执行它后面的命令
! “非” 把条件测试中的判断结果取相反值
可用的整数比较运算符:
运算符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
eg:
# [ 5 -eq 10 ]
# echo $?
1
注意:“$?”指的是上一条指令的执行状态,“0”代表成功,“1”代表失败。
常见的字符串比较运算符
运算符 | 作用 |
---|---|
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
if条件测试语句:
单分支结构:
if 条件测试操作
then 命令序列
fi
双分支结构:
if 条件测试操作
then 命令序列1
else 命令序列2
fi
多分支结构:
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
for条件循环语句:
for 变量名 in 取值列表
do
命令序列
done
while条件循环语句:
while 条件测试操作
do
命令序列
done
case条件测试语句:
case 变量值 in
模式1)
命令序列1
;;
模式1)
命令序列2
;;
*)
默认命令序列
esac
计划任务服务程序
计划任务分为一次性计划任务与长期性计划任务
一次性计划任务
命令 | 作用 |
---|---|
at 时间 | 在指定时间执行任务 |
at -l | 查看已设置好但还未执行的一次性计划任务 |
atrm 任务序号 | 删除任务 |
长期性计划任务
命令 | 作用 |
---|---|
crontab -e | 创建、编辑计划任务 |
crontab -l | 查看创建好的任务 |
crontab -r | 删除某条计划任务 |
crontab -u | 编辑他人计划任务 |
格式:
分,时,日,月,星期 命令
用户身份与文件权限
用户身份常用指令
指令 | 格式 | 作用 |
---|---|---|
useradd | useradd[选项] 用户名 | 用于创建新的用户 |
groupadd | groupadd[选项] 群组名 | 用于创建用户组 |
usermod | usermod[选项] 用户名 | 用于修改用户的属性 |
passwd | passwd[选项] [用户名] | 用于修改用户密码、过期时间、认证信息 |
userdel | userdel[选项] 用户名 | 用于删除用户 |
useradd参数
参数 | 作用 |
---|---|
-d | 指定用户的家目录(默认/home/username) |
-e | 账户的到期时间,格式为YYYY-MM-DD |
-u | 指定该用户的默认UID |
-g | 指定一个初始的用户基本组 |
-G | 指定一个或多个扩展用户组 |
-N | 不创建与用户同名的基本用户组 |
-s | 指定该用户的默认Shell解释器 |
usermod参数
参数 | 作用 |
---|---|
-c | 填写用户账户的备注信息 |
-d -m | 重新指定用户的家目录并自动把九的数据转移过去 |
-e | 账户的到期时间 |
-g | 变更所属用户组 |
-G | 变更扩展用户组 |
-L | 锁定用户禁止其登陆系统 |
-U | 解锁用户,允许其登陆系统 |
-s | 变更默认终端 |
-u | 修改用户的UID |
passwd参数
参数 | 作用 |
---|---|
-l | 锁定用户禁止其登陆 |
-u | 解除锁定,允许其登陆 |
–stdin | 允许通过标准输入修改用户密码 |
-d | 使该用户可用空密码登陆系统 |
-e | 强制用户在下次登陆时修改密码 |
-S | 显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
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
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限。当查看某命令属性时发现rwx变成了rws,表明该文件被赋予了SUID权限,如果rw-则会变为rwS。
SGID
SGID有两种功能:(1)让执行者临时拥有属组的权限(2)在某个目录中创建的文件自动继承该目录的用户组
更改权限的命令
命令 | 格式 | 作用 |
---|---|---|
chmod | chmod[参数] 权限 文件或目录名称 | 设置文件或目录的权限 |
chown | chown[参数] 所有者:所属组 文件或目录名称 | 设置文件或目录的所有者和所属组 |
SBIT
SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。
当目录被设置SBIT特殊权限位后,rwx–>rwt,rw- -->rwT
chmod o+t可以设置SBIT
文件的隐藏属性
命令 | 格式 | 作用 |
---|---|---|
chattr | chattr[参数] 文件 | 用于设置文件的隐藏权限 |
lsattr | lsattr[参数] 文件 | 用于显示文件的隐藏权限 |
chattr参数
添加隐藏功能使用“+参数”,移除隐藏功能使用“-参数”
参数 | 作用 |
---|---|
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并 |
X | 可以直接访问压缩文件中的内容 |
i | 无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的自文件内容而不能新建或删除文件 |
a | 仅允许补充内容,无法覆盖/删除内容(Append Only) |
S | 文件内容在变更后立即同步到硬盘(sync) |
s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(atime) |
文件访问控制列表
setfacl命令
setfacl命令用于管理文件的ACL规则,格式为“ setfacl[参数] 文件名称 ”。文件的ACL提供的使在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制。针对目录文件需要使用-R递归参数;针对普通文件则使用-m,删除某个文件的ACL使用-b。
怎么查看是否设置了ACL?
答:文件权限的最后面的“ . ”变为了 “ + ”。
getfacl命令
getfacl命令用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。
su与sudo
su命令可以使用户在普通用户与管理员之间进行切换,切换到root用户时需要输入密码,造成安全隐患。
sudo命令可以把特定命令的执行权限赋予给指定用户。
sudo服务中可用的参数
参数 | 作用 |
---|---|
-h | 列出帮助信息 |
-l | 列出当前用户可执行的命令 |
-u 用户名或UID | 以指定的用户身份执行命令 |
-k | 清空密码的有效时间,下次执行sudo时需要再次进行密码验证 |
-b | 在后台执行指定的命令 |
-p | 更改询问密码的提示语 |