[命令] openSUSE & SLES 命令 zypper (管理软件和软件源)

内容一: 帮助文档相关

1.1 显示 zypper 帮助信息

# zypper help

或者:

# zypper --h

1.2 显示 zypper 选项的帮助信息

1.2.1 显示 zypper 选项帮助信息的格式
# zypper help <option>

或者:

# zypper <option> help
1.2.2 显示 zypper 选项帮助信息的案例
# zypper help install

(补充:这里以显示 install 子选项为例)

或者:

# zypper install help

(补充:这里以显示 install 子选项为例)

内容二:软件相关

2.1 安装软件包

2.1.1 安装软件包的格式
2.1.1.1 交互式安装软件包的格式
# zypper in <software>

或者:

# zypper install <software>

(补充:这里的 -f 参数是强制安装软件)

2.1.1.2 非交互式安装软件包的格式
# zypper -n in <software>

(补充:这里的 -n 代表会通过忽略交互式的步骤从而避免运行中断)

或者:

# zypper --no-gpg-checks --non-interactive install <software>


补充:
1) 这里的 –no-gpg-checks 代表不检验证书
2) 这里的 –non-interactive 代表会通过忽略交互式的步骤从而避免运行中断

2.1.2 安装软件包的案例

2.1.2.1 交互式安装软件包的案例
# zypper in httpd

(补充:这里以交互式安装 httpd 软件包为例)

或者:

# zypper install httpd

(补充:这里以交互式安装 httpd 软件包为例)

2.1.2.2 非交互式安装软件包的案例
# zypper -n in httpd


补充:
1) 这里以非交互式安装 httpd 软件包为例
2) 这里的 -n 代表会通过忽略交互式的步骤从而避免运行中断

或者:

# zypper --no-gpg-checks --non-interactive install httpd


补充:
1) 这里以交互式安装 httpd 软件包为例
2) 这里的 –no-gpg-checks 代表不检验证书
3) 这里的 –non-interactive 代表会通过忽略交互式的步骤从而避免运行中断

2.2 删除软件包

2.2.1 删除软件包的格式
2.2.1.1 交互式删除软件包的格式
# zypper rm <software>

或者:

# zypper remove <software>
2.2.1.2 非交互式删除软件包的格式
# zypper -n rm <software>

(补充:这里的 -n 代表会通过忽略交互式的步骤从而避免运行中断)

或者:

# zypper --no-gpg-checks --gpg-auto-import-keys --non-interactive remove <software>


补充:
1) 这里的 –no-gpg-checks 代表不检验证书
2) 这里的 –gpg-auto-import-keys 代表自动信任并导入新的签名密钥
3) 这里的 –non-interactive 代表会通过忽略交互式的步骤从而避免运行中断

2.2.2 删除软件包的案例
2.2.2.1 交互式删除软件包的案例
# zypper rm httpd

(补充:这里以交互式删除 httpd 软件包为例)

或者:

# zypper remove httpd

(补充:这里以交互式删除 httpd 软件包为例)

2.2.2.2 非交互式删除软件包的案例
# zypper -n rm httpd


补充:
1) 这里以非交互式删除 httpd 软件包为例
2) 这里的 -n 代表会通过忽略交互式的步骤从而避免运行中断

或者:

# zypper --no-gpg-checks --gpg-auto-import-keys --non-interactive remove httpd


补充:
1) 这里以非交互式删除 httpd 软件包为例
2) 这里的 –no-gpg-checks 代表不检验证书
3) 这里的 –gpg-auto-import-keys 代表自动信任并导入新的签名密钥
4) 这里的 –non-interactive 代表会通过忽略交互式的步骤从而避免运行中断

2.3 锁定软件包

2.3.1 锁定软件包的格式
# zypper addlock <software>

或者:

# zypper al <software>
2.3.2 锁定软件包的案例
# zypper addlock httpd

或者:

# zypper al httpd

(补充:这里以锁定 httpd 软件包的周期为例)

2.4 显示所有已锁软件包

# zypper locks

或者:

# zypper ll

2.5 解锁软件包

2.5.1 解锁软件包的格式
# zypper removelocks <software>

或者:

# zypper rl <software>
2.5.2 解锁软件包的案例
# zypper removelocks httpd

(补充:这里以解锁 httpd 软件包为例)

或者:

# zypper rl httpd

(补充:这里以解锁 httpd 软件包为例)

2.5.3 清除所有已锁软件包
# zypper cleanlocks

或者:

# zypper cl

2.6 升级软件包

2.6.1 升级软件包
2.6.1.1 升级软件包的格式
2.6.1.1.1 交互式升级软件包的格式
# zypper update <software>
2.6.1.1.2 非交互式升级软件包的格式
# zypper -n update <software>

(补充:这里的 -n 代表会通过忽略交互式的步骤从而避免运行中断)

或者:

# zypper --non-interactive update <software>

(补充:这里的 –non-interactive 代表会通过忽略交互式的步骤从而避免运行中断)

2.6.1.2 升级软件包的案例
2.6.1.2.1 交互式升级软件包的案例
# zypper update nginx

(补充:这里以交互式升级 nginx 软件包为例)

2.6.1.2.2 非交互式升级软件包的案例
# zypper -n update nginx


补充:
1) 这里以非交互式升级 nginx 软件包为例
2) 这里的 -n 代表会通过忽略交互式的步骤从而避免运行中断

或者:

# zypper --non-interactive update nginx


补充:
1) 这里以非交互式升级 nginx 软件包为例
2) 这里的 –non-interactive 代表会通过忽略交互式的步骤从而避免运行中断

2.6.2 升级所有软件包
2.6.2.1 升级所有软件包
2.6.2.1.1 交互式升级所有软件包
# zypper update
2.6.2.1.2 非交互式升级所有软件包
# zypper -n update
2.6.2.2 显示所有可升级的软件包
# zypper lp
2.6.3 升级软件包以后确认系统需不需要重启
# needs-restarting

2.7 查找软件包

2.7.1 查找软件包的格式
# zypper se <software>

或者:

# zypper search <software>

或者:

# zypper search --match-exact --type package --details <software>

(补充:这里 –match-exact 参数的作用是精确匹配,–type package 参数的作用是指定查找的对象是软件)

2.7.2 查找软件包的案例
# zypper se httpd

(补充:这里以查找 httpd 软件包为例)

或者:

# zypper search httpd

(补充:这里以查找 httpd 软件包为例)

或者:

# zypper se --match-exact --type package --details httpd

(补充:此方法会精确查找 httpd 软件包为例)

2.8 显示软件包所有可以安装的版本

2.8.1 显示某个软件包所有可以安装版本的格式
# zypper se -s <software>

或者:

# zypper search -details <software>
2.8.2 显示某个软件包所有可以安装版本的案例
# zypper se -s kernel-default

或者:

# zypper search -details kernel-default

(补充:这里以查找 httpd 软件为例)

2.9 显示软件的生命周期

2.9.1 显示软件的生命周期的格式
# zypper lifecycle <software>
2.9.2 显示软件的生命周期的案例
# zypper lifecycle httpd

(补充:这里以查找 httpd 软件的周期为例)

2.10 显示软件包的详细信息

# zypper if httpd

(补充:这里以显示 httpd 软件包的详细信息为例)

2.11 清理旧的内核软件包

2.11.1 交互式清理旧的内核软件包
# zypper purge-kernels
2.11.2 非交互式清理旧的内核软件包
# zypper -n purge-kernels

内容三:软件组相关

3.1 安装软件组

3.1.1 安装软件组的格式
3.1.1.1 交互式安装软件组的格式
# zypper in -t pattern <pattern>
3.1.1.2 非交互式安装软件组的格式
# zypper -n in -t pattern <pattern>
3.1.2 安装软件组的案例
3.1.2.1 交互式安装软件组的案例
# zypper in -t pattern kvm_server

(补充:这里以交互式安装 kvm_server 软件组为例)

3.1.2.2 非交互式安装软件组的案例
# zypper -n in -t pattern kvm_server

(补充:这里以非交互式安装 kvm_server 软件组为例)

3.2 删除软件组

3.2.1 删除软件组的格式
3.2.1.1 交互式删除软件组的格式
# zypper rm -t pattern <pattern>
3.2.1.2 非交互式删除软件组的格式
# zypper -n rm -t pattern <pattern>
3.2.2 删除软件组的案例
3.2.2.1 交互式删除软件组的案例
# zypper -n rm -t pattern kvm_server

(补充:这里以交互式删除 kvm_server 软件组为例)

3.2.2.2 非交互式删除软件组的案例
# zypper -n rm -t pattern kvm_server

(补充:这里以非交互式删除 kvm_server 软件组为例)

3.3 显示所有可用软件组
# zypper patterns

或者:

# zypper pt

或者:

# zypper se -t pattern

3.4 显示软件组的详细信息

3.4.1 显示软件组详细信息的格式
# zypper pattern-info <pattern>
3.4.2 显示软件组详细信息的案例
# zypper pattern-info kvm_server

(补充:这里以显示 kvm_server 软件组为例)

3.5 显示软件组所需要的所有软件包

3.5.1 显示软件组所需要的所有软件包的格式
# zypper info --requires <pattern>
3.5.2 显示软件组所需要的所有软件包的案例
# zypper info --requires kvm_server

(补充:这里以显示 kvm_server 软件组所需要的所有软件包为例)

内容四:安全相关

4.1 安全补丁

4.1.1 安装安全补丁
4.1.1.1 安装安全补丁的格式
4.1.1.1.1 交互式安装安全补丁的格式
# zypper in -t patch <patch>
4.1.1.1.2 非交互式安装安全补丁的格式
# zypper -n in -t patch <patch>
4.1.1.2 安装安全补丁的案例
4.1.1.2.1 交互式安装安全补丁的案例
# zypper in -t patch SUSE-SLE-SERVER-12-SP5-2022-323=1

(补充:这里以安装 SUSE-SLE-SERVER-12-SP5-2022-323=1 补丁为例)

4.1.1.2.2 非交互式安装安全补丁的案例
# zypper -n in -t patch SUSE-SLE-SERVER-12-SP5-2022-323=1

(补充:这里以安装 SUSE-SLE-SERVER-12-SP5-2022-323=1 补丁为例)

4.1.2 所有安全补丁
4.1.2 安装所有安全补丁
4.1.2.1 非交互式安装所有安全补丁
# zypper patch
4.1.2.2 交互式安装所有安全补丁
# zypper -n patch

内容五:软件源相关

5.1 新增软件源并指定软件源名

5.1.1 新增软件源并指定软件源名的格式
# zypper ar -fcg <software source link> <define software source name>
5.1.2 新增软件源并指定软件源名的案例
# zypper ar -fcg http://192.168.1.1/update-oss/ update-oss

(补充:这里以添加 http://192.168.1.1/update-oss/ 库并命名为 update-oss 为例)

5.2 删除软件源

5.2.1 删除软件源
5.2.1.1 删除软件源的格式
# zypper rr <software source name/software source URL>
5.2.1.2 删除软件源的案例
# zypper rr 'Main Repository'

或者:

# zypper rr http://download.opensuse.org/distribution/leap/15.3/repo/oss/

(补充:这里以删除名为 Main Repository 链接为 http://download.opensuse.org/distribution/leap/15.3/repo/oss/ 的软件源为例)

5.2.2 删除所有软件源
# zypper rr -a

或者:

# zypper rr `zypper ls | awk '{print $1}'`

5.3 启用软件源

5.3.1 启用软件源
5.3.1.1 启用软件源的格式
# zypper mr -e <software source name/software source URL>

或者:

# zypper modifyrepo -e <software source name/software source URL>
5.3.1.2 启用软件源的案例
# zypper mr -e 'Main Repository'

或者:

# zypper modifyrepo -e http://download.opensuse.org/distribution/leap/15.3/repo/oss/

(补充:这里以启用名为 Main Repository 链接为 http://download.opensuse.org/distribution/leap/15.3/repo/oss/ 的软件源为例)

5.3.2 启用所有软件源
# zypper mr -ea

或者:

# zypper modifyrepo -ea

或者:

# zypper mr -e `zypper ls | awk '{print $1}'`

或者:

# zypper modifyrepo -e `zypper ls | awk '{print $1}'`

5.4 禁用软件源

5.4.1 禁用软件源
5.4.1.1 禁用软件源的格式
# zypper mr -d <software source name/software source URL>

或者:

# zypper modifyrepo -d <software source name/software source URL>
5.4.1.2 禁用软件源的案例
# zypper mr -d 'Main Repository'

或者:

# zypper modifyrepo -d http://download.opensuse.org/distribution/leap/15.3/repo/oss/

(补充:这里以禁用名为 Main Repository 链接为 http://download.opensuse.org/distribution/leap/15.3/repo/oss/ 的软件源为例)

5.4.2 禁用所有软件源
# zypper mr -da

或者:

# zypper modifyrepo -da

或者:

# zypper mr -d `zypper ls | awk '{print $1}'`

或者:

# zypper modifyrepo -d `zypper ls | awk '{print $1}'`

5.5 显示软件源

5.5.1 显示所有软件源
# zypper ls

或者:

# zypper lr

(补充:zypper ls 会多显示软件源的 Type)

5.5.2 显示所有软件源的链接
5.2.2.1 显示所有软件源的链接 (显示时进行软件源验证)
# zypper ls -d

或者:

# zypper ls -u

或者:

# zypper repos -d

或者:

# zypper repos -u

或者:

# zypper ls --details

或者:

# zypper ls --uri

或者:

# zypper repos --details

或者:

# zypper repos --uri
5.2.2.2 显示所有软件源的链接 (显示时不进行软件源言政)
# zypper --non-interactive --no-gpg-checks repos -d


补充:
1) –non-interactive 代表非交互式
2) –no-gpg-checks 代表不检查证书

5.6 缓存软件源列表

5.6.1 缓存所有已启用软件源列表
# zypper ref

或者:

# zypper refresh
5.6.2 清除所有软件源列表缓存
# zypper clean

内容六:系统本版相关

升级系统版本

# zypper migration

[内容] 软件源的设置 (openSUSE 版) (非官方版)

步骤一:禁用所有原有的软件源

# zypper mr -da

步骤二:添加阿里的 openSUSE 软件源

# sudo zypper ar -fc https://mirrors.aliyun.com/opensuse/distribution/leap/15.0/repo/oss openSUSE-Aliyun-OSS
# sudo zypper ar -fc https://mirrors.aliyun.com/opensuse/distribution/leap/15.0/repo/non-oss openSUSE-Aliyun-NON-OSS
# sudo zypper ar -fc https://mirrors.aliyun.com/opensuse/update/leap/15.0/oss openSUSE-Aliyun-UPDATE-OSS
# sudo zypper ar -fc https://mirrors.aliyun.com/opensuse/update/leap/15.0/non-oss openSUSE-Aliyun-UPDATE-NON-OSS


补充:
1) 命令中最后一个参数为每这个源指定了一个别称
2) 这里以添加 openSUSE 15.0 版本的 oss、non-oss、update 和 update-now-oss 库为例

步骤三:刷新所有处于 enable 状态的软件源

# zypper ref

[内容] CentOS Linux & RHEL YUM 的使用 (只更新安全补丁)

内容一:更新全部安全补丁

1.1 安装 yum-security 插件

# yum install yum-security

1.2 列出所有的安全补丁

# yum --security check-update

1.3 批量安装所有的安全补丁

# yum update --security

内容二:列出某个安全补丁的详细信息

2.1 加载 bugzillas

# yum list-security bugzillas

2.2 显示某个安全补丁的详细信息

# yum info-security <patch name>

(补充:CentOS&RHEL 的补丁名都是以 RHSA 开头,例:RHSA-2009:1148-1)

[命令] Linux 命令 top (显示资源和进程)

内容一:top 命令解析

1.1 top 命令输出结果

# top
top - 14:16:16 up 6 days, 20:52,  4 users,  load average: 0.00, 0.00, 0.00
Tasks: 393 total,   1 running, 392 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   5848752 total,  5709944 used,   138808 free,     4960 buffers
KiB Swap:  2103292 total,        0 used,  2103292 free.  4507072 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S   %CPU  %MEM     TIME+ COMMAND                                      
    8 root      20   0       0      0      0 S  0.332 0.000   2:12.60 rcu_sched                                    
  716 z0042h2+  20   0   15484   2840   2132 R  0.332 0.049   0:00.09 top                                          
31993 root      20   0       0      0      0 S  0.332 0.000   0:00.08 kworker/u32:2                                
    1 root      20   0  189604   5892   4120 S  0.000 0.101   2:35.86 systemd                                      
    2 root      20   0       0      0      0 S  0.000 0.000   0:00.72 kthreadd                                     
    4 root       0 -20       0      0      0 S  0.000 0.000   0:00.00 kworker/0:0H

1.2 top 命令输出结果简介

1.2.1 top 命令输出结果分类

1) 前 5 行是整体的统计信息
2) 后面的是具体的进程信息

1.2.2 统计信息说明
1.2.2.1 第 1 行信息

1) 14:16:16 系统当前时间
2) 20:52 系统运行了多久
3) 4 users 系统当前登录用户数
4) load average: 0.00, 0.00, 0.00 系统平均负载


补充:
1) 其中的三个数值分别代表:1,5,15 分钟的系统平均负载
2) 单核 CPU 的情况下:0.00 代表 0 负载,1.00 代表满载,超过 1 代表超负荷
3) 理想情况是:CPU 的核心数 * 0.7 = 整个系统的理想负载

1.2.2.2 第 2 行信息

1) Tasks: 393 total 总进程数
2) 1 running 正在运行的进程数
3) 392 sleeping 睡眠进程数
4) 0 stopped 停止进程数
5) 0 zombie 僵尸进程数

1.2.2.3 第 3 行信息


注意:
1) 这一行默认是所有 CPU 核心加在一起的平均值,如果有 1 个核心那满值就是 100%,如果有 5 个核心那总值就是 500%
2) 如果此时输入数字 1 ,则可以切换至每个单核 CPU 的负载情况,再输入数字 1,则可以再切换回来

1) 0.0 us 用户空间占用 CPU 的百分比
2) 0.0 sy 内核空间占用 CPU 的百分比
3) 0.0 ni 非实时的进程的优先级,取值范围为从 -20 到 19,数值越小优先级越高
4) 100.0 id 空闲的 CPU 的百分比
5) 0.0 wa CPU 等待输入输出的时间百分比
6) 0.0 hi 服务因硬件中断所消耗的时间百分比
7) 0.0 si 服务因软件中断所消耗的时间百分比
8) 0.0 st 虚拟机被物理机偷去的 CPU 时间百分比

1.2.2.4 第 4 行信息

1) 5848752 total 总物理内存量
2) 5709944 used 已经使用的物理内存量
3) 138808 free 剩余的物理内存量
4) 4960 buffers 用作内核缓存的内存量

1.2.2.5 第 5 行信息

1) 2103292 total 总交换分区量
2) 0 used 已经使用的交换分区量
3) 2103292 free 剩余交换分区量
4) 4507072 cached Mem 用作缓存的交换分区量

1.2.3 进程信息说明


补充:
1) 此时按下 “f” 键可以选择要显示的信息
2) 此时按下 “方向” 键翻看想查阅的内容
3) 此时按下 “s” 键可以开启显示这一信息
4) 此时按下 “d” 键可以关闭显示这一信息
4) 带 * 号的是已经选择要显示的信息

1) PID (Process Id) 进程的 id
2) USER (User Name) 进程所有者的用户
3) PR (Priority) 优先级
4) NI (Nice value) nice 值(负值表示高优先级,正值表示低优先级)
5) VIRT ( Virtual Image (kb) ) 进程使用的虚拟内存量,单位 kb
6) RES ( Resident size (kb) ) 进程使用的、未被换出的物理内存大小,单位 kb
7) SHR (Shared Mem size (kb) ) 共享内存大小,单位 kb
8) S (Process Status) 进程状态,可以为 D R S T 和 Z

(补充:D 表示不可中断的睡眠状态,R 表示运行,S 表示睡眠,T 表示跟踪/停止,Z 表示僵尸进程)

9) %CPU (CPU usage) 上上次更新到上次更新时进程 CPU 占用平均百分比

(注意:此值可能会超过 100% ,但不会超过:CPU 总核心数 * 100% )

10) %MEM ( Memory usage (RES) ) 上上次更新到上次更新时进程使用的物理内存百分比
11) TIME+ ( CPU Time, hundredths ) 进上上次更新到上次更新时进程使用 CPU 的总时间,单位 1/100 秒
12) COMMAND (Command name/line) 命令名或命令行 (命令和选项)

内容二:top 非交互式命令选项

1) -b 以批处理模式执行命令
2) -c <command> 在执行了 top 命令之后再直接执行交互命令
3) -d <time> 屏幕刷新间隔时间
4) -i 忽略僵尸进程
5) -s 以安全模式执行命令
6) -S 以累积模式执行命令
7) -i <时间> 设置间隔时间
8) -u <用户> 指定只显示某个用户的进程
9) -p <进程号> 指定只显示某个 PID 的进程
10) -n <次数> 指定显示循环的次数

内容三:top 交互命令 (即是在键入了 top 命令之后再键入以下命令)

3.1 基础操作

按 “h” 显示帮助

3.2 设置操作

1) 按下 “k” 键再按下 “<pid>” 再按下 “<回车>” 键,将某个 pid 为 <pid> 的进程删除
2) 按下 “r” 键再按下 “<ni>” 再按下 “<回车>” 键,将某个进程的 ni 设置为 <ni>,取值范围为从 -20 到 19,数值越小优先级越高

(注意:只有 root 的取值范围才是 -20 到 19 ,普通用户的取值范围是 0 到 19)

3) 按下 “esc” 键,退出 top 命令当前的子状态,如果没有子状态则不退出
4) 按下 “q” 键,退出 top

3.3 显示操作

1) 按下 “d” 键再按 <number> 再按下 “回车” ,将刷新频率修改为 <number> 秒
2) 按下 “s” 键再按 <number> 再按下 “回车”,将刷新的延迟时间修改为 <number> 秒 (默认是 5S)
3) 按下 “n” 键再按 <number> 再按下 “回车”,将显示的行数修改为 <number> 行 (默认显示能满屏的行数)
4) 按下 “f” 键,选择要显示的信息
5) 按下 “i” 键,不显示闲置和僵死进程,再按下 “i” 键会取消
6) 按下 “S” 键,切换到累积模式,再按下 “S” 键会取消
7) 按下 “l” 键,隐藏第 1 行总负载信息,再按下 “l” 键会取消
8) 按下 “t” 键, 隐藏第 2~3 行 CPU 信息,再按下 “t” 键会取消
9) 按下 “m” 键,隐藏第 4~5 行内存信息,再按下 “m” 键会取消
10) 按下 “1” 键,显示 CPU 所有核心的信息,每核显示 1 行,再按下 “1” 键会取消

3.4 排序操作

1) 按下 “M” 键,根据使用内存的大小进行排序
2) 按下 “P” 键,根据使用 CPU 的大小进行排序
3) 按下 “T” 键,根据开启的时间进行排序

内容四:top 命令使用案例

4.1 案例一:显示 top 命令运行 1 秒钟时的信息

# top -bn 1

4.2 案例二:显示 top 命令运行 1 秒钟时的 CPU 占用率最高的进程

# top -bn 1 -i -c