Linux 笔记

239 阅读22分钟

鸟哥的Linux私房菜:基础学习篇 第四版 | 鸟哥的 Linux 私房菜:基础学习篇 第四版 (gitbooks.io)
Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)
Linux学习教程,Linux入门教程(超详细) (biancheng.net)
Linux 教程 | 菜鸟教程 (runoob.com)

组合键

Ctrl + A 光标移动到头部
Ctrl + E 光标移动到尾部
Ctrl + U 删除所有在光标左侧的命令字符
Ctrl + K 删除所有在光标右侧的命令字符
Ctrl + C 结束正在运行的程序
Ctrl + Z 暂停当前运行的程序并放入后台
Ctrl + D 结束输入或退出shell
Ctrl + S 暂停屏幕输出【锁住终端】
Ctrl + Q 恢复屏幕输出
Ctrl + L 清屏,【是字母L的小写】等同于Clear

文件

目录配置

Linux 系统目录结构 | 菜鸟教程 (runoob.com)

文件管理

cd命令 – 切换目录

cd  directory
-p 显示链接文件 指向的文件 的路径

ls 命令 – 显示指定工作目录下的文件及属性信息

ls [parameter] [objectname]
-a 列出隐藏文件  
-d 列出目录本身  
-l 显示详细信息  

cp命令 – 复制文件或目录

cp origin object   
-i 若目标文件已存在,则会询问是否覆盖  
-p 保留源文件或目录的所有属性  
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-r 递归复制文件和目录  
-a 等价于“pdr”选项   

chgrp命令 – 更改文件用户组

chgrp group file  
-R 递归修改  
-v 显示执行过程

chown命令 – 改变文件或目录的用户和用户组

chown [account][:group] file  
-R 递归修改
-v 显示拥有者变更的详细资料

chmod命令 – 改变文件或目录权限

chmod number file    
chmod ugoa -+= rwx   
-R 递归修改

mkdir命令 – 创建目录文件

mkdir  directory
-m 设置权限    
-p 创建不存在的上层目录

rm命令 – 删除文件或目录

rm  object
-r 递归删除  
-i 询问每个文件是否删除  
-f 强制删除  
-v 显示执行过程  

cp命令 – 复制文件或目录

cp origin object  
-p 保留源文件或目录的所有属性  
-r 递归复制文件和目录   
-a 等价于“pdr”选项  
-i  若目标文件已存在,则会询问是否覆盖   

mv命令 – 移动或改名文件

mv  源文件 目标文件   
-i 若存在同名文件,则向用户询问是否覆盖  
-f 覆盖已有文件时,不进行任何提示  

touch命令 – 创建空文件与修改时间戳

ln命令 – 为文件创建快捷方式

ln origin  link
-s 对源文件建立符号链接,而非硬链接  

umask命令 – 文件默认权限(反向)

umask 002    other没有w权限
umask u=, g=w, o=rwx  

chattr命令 – 更改文件隐藏属性

chattr +-= 隐藏属性 file    

lsattr命令 – 显示文件隐藏属性

dd命令 – 生成、拷贝及转换文件

ACL (access control list)

linux ACL权限,设定,删除_胡尚的博客

setfacl命令 – 设置文件ACL规则 set file access control list

setfacl [-bkRd]  [ [-m|-x] acl参数 ]  objectfile
acl参数格式
针对用户/用户组
u/g:[账户名]:[rwx]
针对有效权限设置
m:[rwx]
意为用户对该文件实际操作权限为`m对应权限列表`与`用户/用户组对该文件权限列表` 的交集

参数
-m  更改文件的访问控制列表
-x  根据文件中访问控制列表移除条目
-b 删除所有扩展访问控制列表条目
-R 递归操作子目录

getfacl命令 – 显示文件或目录的ACL策略

文本编辑

sed 命令

sed [参数] [行(多行用,分隔离,$为末行)+动作] [filename] 
可作为管道命令处理标准输出
-r 使用拓展正则表达式

动作
  a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
  i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!

nano命令– 字符终端文本编辑器

vim命令 – 文本编辑器

一般命令模式

gg 首行    
G 末行    
ctrl+f上一页  
ctrl+b下一页  
快速定位 行号G,如150G  
yy 复制整行  
dd 剪切整行   
x delete  
X bachkspace  
p 粘贴  
u 撤销  
ctrl + r 取消上次撤销  
i  编辑模式  
ctrl + v(可视块)或V(可视行)或v(可视)   
ctrl + : 命令行模式  

编辑模式

命令行模式

 w 写入  
 q 退出  
 q! 强制退出  
:syntax on[off] 着色  
:set [no]nu 显示(隐藏)行号    
/[?]word  向下(上)找word  
n 重复前一次查找  
N  反向重复前一次查找,如向后变向前查找  
number1,(number2或$代表末行)s/word1/word2/g[c]  
在n1到n2行间寻找word1并替换成word2 c为交互模式

可视化模式

↑ ↓ ← →选择要复制的内容  
gg 首行    
G 末行    
ctrl+f上一页  
ctrl+b下一页  
快速定位 行号G,如150G  
y 复制  
d 剪切 
p 粘贴  
u 撤销  
ctrl + r 取消上次撤销  

20111012051623235.png

文件查看

pwd命令 – 显示当前工作目录的路径

du命令 – 查看文件或目录的大小

du file
-h 以易读方式显示文件大小   
-s 仅显示总计  

cat命令 – 在终端设备上显示文件内容

cat file
-n 显示行号  

more命令 – 分页显示文本文件内容

more file
space/enter 下翻页  
b 上翻页  
/String 查询  
:f 显示行数  

less命令 – 分页显示文件内容

less file
space/enter 下翻页  
b 上翻页  
/String 向下查询  
?String 向上查询  
n 重复前一个查询  
N 反向重复查询  
g 首行  
G 末行  

head命令 – 显示文件开头的内容

head file
-n 定义显示行数 

tail命令 – 查看文件尾部内容

tail file
-n number 显示行数  

file命令 – 识别文件类型

egrep命令 – 在文件内查找指定的字符串

egrep [参数] pattern file
-i 忽略大小写 
-n 显示行号  
-v 内容反选

printf 命令 – shell 输出

Linux awk 命令

//todo

diff命令 – 比较文件内容差异

diff  old  new
-b 不检查空格字符的不同
-B 忽略空白行

patch命令 – 修补文件

diff  -Naur old new > patchfile.patch
patch [参数] < patchfile.patch 
-p[number] 设置欲剥离几层路径名称
-R 还原,卸载patch包

which命令 – 依据PATH环境变量路径查找执行文件文件名

which command  
>-a 列出所有找到的文件  

whereis命令 – 从特定/预定目录寻找命令/文件

locate命令 – 快速查找文件或目录

updatedb命令 – 创建或更新数据库文件
基于数据库(/var/lib/locatedb)进行的定点查找,有时需用updatedb命令更新数据库

find命令 – 根据路径和条件搜索从硬盘查找指定文件

find [objectFindPath] [option] [action]  
-name filename  

压缩打包

zip命令 – 压缩文件

zip 参数 resultFile originFile  

unzip命令 – 解压缩zip格式文件

unzip [参数] 压缩包  

gzip – 压缩和解压文件

bzip2 – bz2文件的压缩程序

zip onjectfile1 [objectfile2] ...... 
-d 解开压缩文件  
-k 保留原文件  
-c 把压缩后的文件输出到标准输出设备,不去更动原始文件  

tar命令 – 打包、解包、压缩、解压缩文件

压缩 tar -jcv -f resultfile.tar.bz2 origin...  
查询 tar -jtv -f filename.tar.bz2  
解压缩 tar -jxv -f originzipfile.tar.bz2 -C  objectDirectory   
压缩时 origin前加/,解压缩时会定位到根目录,不加/则使用相对路径定位到objectDirectory/origin  
-c 建立.tar打包文件  
-t 查看打包文件内容  
-x 解包  
-z、j、J 压缩/解压缩  
-f   
-C 解压缩目录  
-p 保留文件属性  
-P 保留/  
--exclude=FILE 排除file  

备份

dump命令 – 备份ext文件系统

dump 备份文件 目标文件系统(挂载点/设备)  

restore命令 – 还原ext备份

xfsdump 备份文件系统

xfsdump -f 备份文件 目标文件系统(挂载点/设备)  
-I 查看备份信息状态  
-l 指定等级 0为完整备份 1-9为增量备份  

xfsrestore 还原xfs文件系统

xfsrestore -f dumpfile 待恢复目录  

磁盘管理

df 命令 – 显示磁盘空间使用情况

-h 以容易阅读的方式显示  
-i 显示索引字节信息  

lsblk命令 – 查看系统的磁盘使用情况

blkid命令 – 显示关于可用块设备的信息

parted命令 – 磁盘分区工具

-l 列出磁盘的分区类型与分区信息

磁盘分区管理

gdisk命令 –GPT 磁盘分区管理
fdisk命令 – MBR 磁盘分区管理

fdisk  [disk]
-l 列出指定的外围设备的分区表状况  

mkfs命令 – 对设备进行格式化文件系统操作

-f 强制格式化  

fsck命令 – 检查与修复文件系统

mount命令 – 把文件系统挂载到目录

mount [设备] [挂载点]

umount命令 – 卸载文件系统

umount  [设备/挂载目录]
-v 执行时显示详细的信息 

Linux开机自动挂载(磁盘)

swapon命令 – 激活交换空间

swapon  [device]  
-a 将/etc/fstab文件中所有设置为swap的设备,启动为交换区

swapoff命令 – 关闭系统交换区

swapoff  [device]   
-a 将/etc/fstab文件中所有设置为swap的设备关闭

sync命令 – 刷新文件系统缓冲区

Shell

Shell 教程

通配符

* 任意个字符
? 某一个字符
[] 其中一个
[^……] 不是括号内任意一个
[from-to]编码顺序内所有字符其中一个

特殊符号

~ 家目录
& 将命令变为后台任务
! 逻辑非
`` 或 $( ) 嵌套优先执行命令
(commamd) 子shell
{ } 命令区块的组合
$((表达式)) 计算表达式
[ ] 脚本中作条件表达式

数据流重定向

1 标准输出
2 标准错误输出
> , >> 输出重定向 替换、累加
< 键盘输入改由文件内容替换
<< "String" 输入String时结束输入

$ cat > catfile << "eof"  
\>This is a test   
\>eof  
$ cat catfile  
This is a test   

1>file 2>&1 错误输出合流到标准输出,一起输出到file
&>file 标准输出、标准错误输出合流到file,作用同上
/dev/null 垃圾黑洞

连续执行命令

命令返回值0为成功 非0为失败
; 不考虑命令相关性连续执行
&& 传来0则执行
|| 传来非0则执行
从前向后传,和java不一样,更像是if

管道命令

command1 | command2 用command2对command1的标准输出进行处理,command2 必须是能接受标准输入的命令
Linux管道命令(pipe)
linux shell环境减号”-“的用途

变量

Shell 变量

[root@localhost ~]# variable=value  

加单引号表示纯文本

[root@localhost ~]# variable='value'  

加双引号可显示变量和命令 {}可选,数组类型必须加

[root@localhost ~]# var=" ${variable} and $(command) "  

整型

declare -i/p var=value

数组/映射

Shell 数组 | 菜鸟教程 (runoob.com) 数组

array_name=(value1 value2 ... valuen)
array_name[index]=value

映射

declare -A var=(["google"]="www.google.com", ["runoob"]="www.runoob.com", ["taobao"]="www.taobao.com")
declare -A var
var["google"]="www.google.com"
var["runoob"]="www.runoob.com"
var["taobao"]="www.taobao.com"

${varArray[*/@]} 获取所有值
${!varArray[*/@]} 获取所有键
${#varArray[*]} 获取数组长度

配置文件

Linux Bash的环境配置文件_CoLiuRs的博客

shell脚本

Shell 教程
头 #!/bin/bash
条件表达式要放在方括号之间,并且要有空格,例如:  [$a==$b]  是错误的,必须写成  [ $a == $b ]

常用命令

alias命令 – 设置命令别名

alias newname="commands" 
-p 打印已经设置的命令别名

echo命令 – 输出字符串或提取后的变量值

env命令 – 显示和定义环境变量

env 显示环境变量
env var=value 定义环境变量
env -u var 删除环境变量

set命令 – 设置shell、显示所有变量

set 显示所有环境变量,结果比使用env得到的多,很乱
-a 设置环境变量

unset命令 – 删除指定的shell变量或函数

unset -v var

export命令 – 将变量提升成环境变量

export var[=value]
-f  指定函数名称    
-n  删除指定的变量   
-p  列出所有的环境变量

read – 读取单行数据内容

read  var
-p  设置提示信息
-d  定义一个结束标志,只有第一个字符有效,Enter转为空格

declare命令 – 声明指定类型变量

declare var[=value]

-i 先计算表达式,把结果赋给所声明变量 
[root@localhost ~]# declare -i var=1+3
[root@localhost ~]# echo $var
4

-p  计算变量的定义的方法和值,将结果赋值给变量
[root@localhost ~]# var=1+3
[root@localhost ~]# declare -p var
declare -i var="4"
[root@localhost ~]# echo $var
4

-a  声明数组
-A  声明映射
-x 将指定的Shell变量转换成环境变量

expr命令 – 命令行计数器

exit命令 – 退出终端

系统

系统信息

free命令 – 显示系统内存使用量情况

-h 使用优化单位格式
-t 显示合
-s 持续刷新n秒
-c 刷新指定次数

uname命令 – 显示系统内核信息 Unix name

netstat命令 – 显示网络状态

ifconfig命令 – 显示或设置网络设备参数信息

uptime命令 – 查看系统负载

信息显示依次为:
现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

top命令 – 实时显示系统运行状态

top 
-d <秒> 改变显示的更新速度
-n 设定显示的总次数,完成后将会自动退出
-p 指定pid

执行过程中可用按键命令 
? 显示在top中可用命令
P 以cpu的使用排序显示
M 以Memory的使用排序显示
N 以PID来排序
k 给予某个PID一个signal
r 基于某个PID新的nice值

locale命令 – 显示字符集

locale 
-a 显示可用的语言环境

系统操作

init命令 – 切换系统运行级别

init number
0  关机      
1  单用户     
2  多用户     
3  完全多用户模式 
5  图形界面    
6  重启

shutdown命令 – 关闭服务器的系统

reboot命令 – 重新启动计算机

系统设置

localectl命令 – 语言设置

localectl set-locale var=value  设值语系,会改配置文件,不会改环境变量 

使用locale查看字符集
如未设置其余语系变量,影响语系的变量是 LANG 和 LC_ALL,设置这两个并设为环境变量即可。
整体系统默认的语系定义在 /etc/locale.conf

日志

Linux系统日志管理
日志文件的格式包含以下 4 列:

  • 事件产生的时间。
  • 产生事件的服务器的主机名。
  • 产生事件的服务名或程序名。
  • 事件的具体信息。

logwatch命令 – 遍历系统日志

进程/服务管理

任务管理

后台进程脱离session运行方法 - 阮一峰的网络日志

& 将任务放到后台执行

[root@localhost ~]# ls -l &
[1] 17142  #返回 [任务号] pid 

[root@localhost ~]# total 76 #任务执行完会在shell插入输出
-rw-------. 1 root test  1827 Aug  4 10:18 anaconda-ks.cfg
......
[1]+  Done                    ls --color=auto -l

ctrl + z 将当前任务放到bash后台中暂停

[root@localhost ~]# vim test
# 输入CTRL + Z
[1]+  Stopped                 vim test

jobs命令 – 查看后台任务状态

 -l 显示pid  
 -r 仅显示running的任务  
 -s 仅显示stopping的任务  
 +表示最近一个被放到后台的任务  
 -表示最近第二个被放到后台的任务  

fg命令 – 将后台任务放到前台运行

fg [任务号]

bg命令 – 让任务在后台运行

bg [任务号]

nohup命令 – 将命令放到系统后台中运行

nohup命令可以将程序以忽略挂起信号(忽视SINGUP信号)的方式运行起来,而被运行程序的输出信息不会显示到屏幕上

nohup command &

进程管理

ps 查看进程

-a 显示与终端无关的所有进程
-A 显示所有程序
-l 采用详细的格式来显示程序状况
-aux 查看所有进程
-u 查看当前用户所有进程
-f 显示UID,PPIP,C与STIME栏位 

pidof命令 – 返回运行程序的进程ID

pidof 程序名称

pstree命令 – 以树状图显示进程

-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-c 不使用精简标示法(显示子进程)
-p 显示PID
-u 显示执行账号名称
-h 列出树状图时,特别标明现在执行的程序

[root@localhost ~]# pstree
systemd─┬─ModemManager───number*[{ModemManager}]  number为子进程数量
        └─avahi-daemon───avahi-daemon   ─── 表进程依赖性

kill命令 – 杀死进程

kill [-signal] [PID] [%任务号] 
-l 列出可用signal
常用signal
1 重新读取配置文件(类似reload)
2 终止任务,同ctrl+c
9 立即强制删除任务
15 以正常的进程方式终止任务     

nice命令 – 执行命令并赋予优先级

nice -n -20~19 command

renice命令 – 修改正在运行的进程的调度优先级

renice  -20~19 PID
-g 指定进程组id
-u 指定开启进程的用户名

服务

systemctl -  管理系统服务

systemctl [参数] [服务]  
start 启动服务  
stop 停止服务  
restart 重启服务  
reload 重新加载配置文件  
enable  使某服务开机自启  
disable  关闭某服务开机自启
status  查看服务状态
list -units --type=service  列举所有已启动服务
mask 注销服务
kill 杀死服务

Systemd 入门教程:命令篇 - 阮一峰的网络日志
Systemd 入门教程:实战篇 - 阮一峰的网络日志

计划任务

atd 一次性

at的守护进程,默认情况下,atd守护进程每60秒检查一次目录。有作业时会检查作业运行时间,如果与当前时间匹配,则运行此作业。

at命令 – 一次性定时计划任务

Linux之at命令_weixin_34162228的博客

at [选项] [时间]
回车后输入命令
Ctrl + D  结束at命令的输入

参数
-l 列出未执行任务列表
-d id 删除任务
-f 将指定文件提交等待作业
at 交给服务器在后台执行,标准/错误输出不会输出到命令行,可使用-m 发送到mail

常用时间格式 
TIME:时间格式,这里可以定义出【什么时候要执行at这项任务】的时间,格式有:
HH:MM    ex>04:00
在今日的HHMM时刻执行,若该时刻已超过,则明天的HH:MM执行此任务
HH:MM YYYY-MM-D  ex>04:00 2015-07-30
强制规定在某年某月的某一天的特殊时刻执行该任务。
HH: MM[am/ pm][Month] [Date] ex>04pm July 30
也是一样,强制在某年某月某日的某时刻执行
HH: MM[am/ pm] + number [ minutes | hours | days | weeks ]
ex>now+5minutes   ex> 04pm+3 days
就是说,在某个时间点【再加几个时间后】才执行

batch命令 – 指定时间执行任务

cron 周期性

cron相关命令的守护进程
linux计划任务_jixieyang3701的博客

crontab命令 – 管理用户的定时计划任务

crontab 详细用法、定时任务 、时间规则_森林屿麓的博客

crontab [-u username] [参数] 
回车后输入  时间 任务 来添加计划任务

参数
-u 只有root能使用,管理其他使用者的计划任务
-e 使用vim编辑crontab的任务内容
-l 查看crontab任务列表
-r 删除所有crontab任务内容,若要仅删除一项,配合 -e 

时间格式
时间具有五个字段,以空格分隔
意义 | 分钟 | 小时 | 日期  | 月份 | 周 
范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7

特殊符号
* 任何时刻
, 分隔时段 ex 0 3,6 * * * command
- 代表时间范围 ex 0 3-6 * * * command
*/number 每隔number单位间隔执行一次 ex */5 * * * * command 每隔五分钟执行一次

管理系统的cron计划任务

系统计划任务在/etc/crontab

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root 执行结果发送给谁

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |    .----  用什么身份(用户)执行command,默认为root
# |  |  |  |  |    |
# *  *  *  *  * user-name  command to be executed

cron 服务读取配置文件的位置 /etc/crontab 系统的例行性任务 /etc/cron.d/* /etc/cron./ /var/spool/cron/* 用户自己任务

anacron命令 – 检测、执行未执行的crontab命令

默认每小时自动执行一次

[root@localhost ~]# anacron [选项] [工作名]
这里的工作名指的是依据 /etc/anacrontab 文件中定义的工作名。
-f  强制执行相关工作,忽略时间戳。 
-n 立即执行
配置文件见链接

软件安装

tarball的安装_hahachenchen789的博客

RPM 、 SRPM、YUM

RPM 全名是“ RedHat Package Manager ”
RPM 与 SRPM 的格式分别为:

xxxxxxxxx.rpm   RPM 的格式,已经经过编译且包装完成的 rpm 文件;
xxxxx.src.rpm   SRPM的格式,包含未编译的源代码信息。

文件名格式,例如 rp-pppoe-3.11-5.el7.x86_64.rpm 这的文件的意义为:

rp-pppoe -        3.11   -     5        .el7.x86_64  .rpm
软件名称   软件的版本信息 释出的次数 适合的硬件平台 扩展名

rpm命令 – RPM软件包管理器

rpm [参数] packageName 
安装
-i 安装
-v 显示详细安装信息
-h 显示安装进度
升级与更新
-Uvh 没安装过则安装,安装过则更新到新版
-Fvh 未安装过则不安装,安装过则更新到新版

查询

-q  :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整文件名 (list);
-qc :列出该软件的所有配置文件 (找出在 /etc/ 下面的文件名而已)
-qd :列出该软件的所有说明文档 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
-qf :由后面接的文件名称,找出该文件属于哪一个已安装的软件;
-q --scripts:列出是否含有安装后需要执行的脚本档,可用以 debug 喔!
查询某个 RPM 文件内含有的信息:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在于找出
        某个 RPM 文件内的信息,而非已安装的软件信息!注意!

验证与数字签名

-V  :后面加的是软件名称,若该软件所含的文件被更动过,才会列出来;
-Va :列出目前系统上面所有可能被更动过的文件;
-Vp :后面加的是文件名称,列出该软件内可能被更动过的文件;
-Vf :列出某个文件是否被更动过~

[[email protected] ~]# rpm -V logrotate
..5....T.  c /etc/logrotate.conf

你会发现在文件名之前有个 c ,然后就是一堆奇怪的文字了。那个 c 代表的是 configuration
, 就是配置文件的意思。至于最前面的几个信息是:
-   S :(file Size differs) 文件的容量大小是否被改变
-   M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可执行等参数已被改变
-   5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
-   D :(Device major/minor number mis-match) 设备的主/次代码已经改变
-   L :(readLink(2) path mis-match) Link 路径已被改变
-   U :(User ownership differs) 文件的所属人已被改变
-   G :(Group ownership differs) 文件的所属群组已被改变
-   T :(mTime differs) 文件的创建时间已被改变
-   P :(caPabilities differ) 功能已经被改变

卸载

-e  卸载软件包

重建数据库

--rebuilddb

YUM 线上升级机制 | 鸟哥的 Linux 私房菜:基础学习篇 第四版

查询功能:yum [list|info|search|provides|whatprovides] 参数

[[email protected] ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
[option]:主要的选项,包括有:
  -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应;
  --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
[查询工作项目] [相关参数]:这方面的参数有:
  search  :搜寻某个软件名称或者是描述 (description) 的重要关键字;
  list    :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
  info    :同上,不过有点类似 rpm -qai 的执行结果;
  provides:从文件去搜寻软件!类似 rpm -qf 的功能!

安装/升级功能:yum [install|update] 软件

[[email protected] ~]# yum [option] [安装与升级的工作项目] [相关参数]
选项与参数:
  install :后面接要安装的软件!
  update  :后面接要升级的软件,若要整个系统都升级,就直接 update 即可

移除功能:yum [remove] 软件

软件群组功能

[[email protected] ~]# yum [群组功能] [软件群组]
选项与参数:
   grouplist   :列出所有可使用的“软件群组组”,例如 Development Tools 之类的;
   groupinfo   :后面接 group_name,则可了解该 group 内含的所有软件名;
   groupinstall:这个好用!可以安装一整组的软件群组,相当的不错用!
   groupremove :移除某个软件群组;

配置文件
CentOS yum 源的配置与使用 - David_Tang
rpmbuild命令 – 编译SPRM、创建软件包

用户

列出 Linux 系统上所有用户的 3 种方法
Linux 系统中用户信息存放在 /etc/passwd 文件中。

这是一个包含每个用户基本信息的文本文件。当我们在系统中创建一个用户,新用户的详细信息就会被添加到这个文件中。

/etc/passwd 文件将每个用户的基本信息记录为文件中的一行,一行中包含 7 个字段。

/etc/passwd 文件的一行代表一个单独的用户。该文件将用户的信息分为 3 个部分。

* 第 1 部分:`root` 用户信息
* 第 2 部分:系统定义的账号信息
* 第 3 部分:真实用户的账户信息

用户管理

linux系统账号是什么

useradd命令 – 创建并设置用户信息

useradd [参数] [account]
-c 添加备注文字
-g 指定用户对应的用户组
-G 定义此用户为多个不同组的成员
-r 建立系统帐号

passwd命令 – 管理用户密码

passwd account

chage命令 – 修改/显示帐号和密码的有效期限

chage [参数] account

usermod命令 – 修改用户账号信息

usermod [参数] 用户名
-g<群组> 修改用户的初始用户组
-G<群组> 修改用户所属的附加群组,多个群组间用,分隔
-l<账号名称> 修改用户账号名称

userdel命令 – 删除用户账户

userdel [参数] 用户名
-r 删除用户主目录及其中的任何文件

用户操作

newgrp命令 – 切换有效用户组

以相同的帐号,另一个群组名称,使用子.shell,再次登入系统。

su命令 – 切换用户身份

su [-l] [-c command] [-s bash.sh] account
-c  执行完指定的指令后,即恢复原来的身份
-l 改变身份时,也同时变更工作目录
-m 变更身份时,不要变更环境变量
-s 指定要执行的shell

sudo命令 – 授权普通用户执行管理员命令

/etc/sudoers 中有出现的account才能使用(具有管理员身份)

sudo [-b] 
 -b command 将要执行的指令放在后台执行
 -u account 切换到特定账号执行命令

visudo命令 – 编辑/etc/sudoers文件

Linux visudo 命令_allway2的博客
visudo命令详解 - 马昌伟

image.png

用户信息

id命令 – 显示用户与用户组信息

id [参数] [用户名]

w命令 – 显示已登录用户

who命令 – 查看当前登录用户信息

last命令 – 显示用户或终端的历史登录记录

lastlog命令 – 显示用户最近一次登录信息

用户组

groups命令 – 查看用户组成员或成员所属用户组

groups [user] [group]

groupadd命令 – 创建新的用户组

groupadd [参数] 用户组

groupdel命令 – 删除用户组

groupdel [参数] [群组名称]

gpasswd命令 – 设置用户组管理员

gpasswd userGroup
-a  添加用户到组 
-A 指定管理员,
-d 从组删除用户
指定多个用户用,分隔

问题

yum恢复默认源

Centos系统还原官方yum源 - 傲世网 (pjax.vip)