[内容] Linux 后台进程的管理

内容一:将进程放入后台

1.1 直接将一个进程放到后台

# firefox&

1.2 将一个目前正在前台运行的进程放到后台

按下 “ctrl” 键和 “z” 键

内容二:显示放入后台的进程

2.1 显示所有放入后台的进程

# jobs

2.2 显示某一个放入后台的进程

2.2.1 显示某一个放入后台进程(通过后台进程号)
# jobs %<background process number>
2.2.2 显示某一个放入后台进程(通过后台进程名)
# jobs %<background process name>

(注意:只有后台进程名唯一时此操作才有效)

内容三:管理放入后台的进程

3.1 在后台启动放入后台的进程

3.1.1 在后台启动放入后台的进程(通过后台进程号)
# bg %<background process number>

(注意:只有可以在后台启动的进程才能在后台启动)

3.1.2 在后台启动放入后台的进程(通过后台进程名)
# bg %<background process name>

(注意:只有可以在后台启动的进程才能在后台启动,且只有后台进程名唯一时此操作才有效)

3.2 在前台启动放入后台的进程

3.2.1 在前台启动放入后台的进程(通过后台进程号)
# fg %<background process number>
3.2.2 在前台启动放入后台的进程(通过后台进程名)
# fg %<background process name>

(注意:只有后台进程名唯一时此操作才有效)

3.3 杀死放入后台的进程

3.3.1 杀死放入后台的进程(通过后台进程号)
# kill %<background process number>

(补充:这里可以配合各种 kill 选项进行操作,例如 kill -9)

3.3.2 杀死放入后台的进程(通过后台进程名)
# kill %<background process name>

(注意:只有后台进程名唯一时此操作才有效)

(补充:这里可以配合各种 kill 选项进行操作,例如 kill -9)

[步骤] Linux Kdump 的开启 (临时版)

步骤一:理解 Kdump 的作用

开启 core dump 之后,如果出现了 C 语言程序的 crash,则会将 crash 的结果记录到一个文件里

步骤二:临时开启 Kdump

2.1 设置可生成 Kdump 大小的参数

2.1.1 显示当前允许生成 Kdump 的大小
# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31722
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31722
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
2.1.2 将允许生成 Kdump 大小的参数设置为无限大
# ulimit -c unlimited
2.1.3 确认修改结果
# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31722
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31722
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

2.2 设置 Kdump 生成的位置

# sysctl -w kernel.core_pattern=/tmp/corefile/core-%e-%p

步骤三:此时如果有 C 语言的程序 crash 了,则会被自动记录

[步骤] Linux 图形桌面的安装 (GNOME 版) (openSUSE & SLES 版)

步骤一:系统环境要求

服务器系统要配置好可用的软件源

步骤二:显示 openSUSE & SLES 可安装的软件包组

# zypper se -t pattern

步骤三:安装 GNOME 图形桌面

3.1 安装 GNOME 图形桌面

# zypper in -t pattern gnome

3.2 将系统默认的图形桌面设置为 GNOME 图形桌面

# vim /etc/sysconfig/displaymanager

将以下内容:

......
DISPLAYMANAGER_XSERVER="Xorg"

修改为:

......
DISPLAYMANAGER_XSERVER="gdm"

步骤四:进入图形桌面

4.1 设置系统开机进入图形桌面

# systemctl set-default graphical.target

4.2 立刻进入图形桌面

# startx

或者:

# init 5

[命令] Linux 命令 systemctl (程序单元启动和管理)

内容一:受 systemctl 管理的单元列表

1.1 受 systemctl 管理的所有单元列表

1.1.1 列出所有 systemctl 可用单元以及是否开机自启
# systemctl list-unit-files

(补充:所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的)

1.1.2 列出所有 systemctl 正在运行的单元
# systemctl list-units

(补充:所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的)

1.1.3 列出所有 systemctl 运行失败的单元
# systemctl --failed

(补充:所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的)

1.2 受 systemctl 管理的目标单元列表

1.2.1 列出所有受 systemctl 管理的目标单元
# systemctl list-units --all --type target


补充:
1) 所有受 systemctl 目标管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.2.2 列出所有正在运行的受 SYSTEMCTL 管理的目标单元
# systemctl list-units --typer=target --state=running


补充:
1) 所有受 systemctl 目标管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.2.3 列出所有开机自启的受 SYSTEMCTL 管理的目标单元
# systemctl list-units --all --type=target --state=active


补充:
1) 所有受 systemctl 目标管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.2.4 列出所有开机不自启的受 SYSTEMCTL 管理的目标单元
# systemctl list-units --all --type=target --state=inactive


补充:
1) 所有受 systemctl 目标管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.3 受 systemctl 管理的目标单元列表

1.3.1 列出所有受 systemctl 管理的服务单元
# systemctl list-units --all --type service


补充:
1) 所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.3.2 列出所有正在运行的受 systemctl 管理的服务单元
# systemctl list-units --typer=service --state=running


补充:
1) 所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.3.3 列出所有开机自启的受 systemctl 管理的服务单元
# systemctl list-units --all --type=service --state=active


补充:
1) 所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

1.3.4 列出所有开机不自启的受 systemctl 管理的服务单元
# systemctl list-units --all --type=service --state=inactive


补充:
1) 所有受 systemctl 管理单元的文件都是放在 /usr/lib/systemd/system 目录下的
2) service 是一个个单独的服务
3) target 是包含很多个单独服务(service)的一组服务

内容二:单元的状态显示

2.1 单元的状态显示 (按标准格式显示)

# systemctl status <unit>


补充:
1) systemctl 的主要状态项有:
Loaded 单元是否已被内存加载
Active 单元是否已成功运行
Main PID 单元主进程的 PID 号
Status 单元的其他相关信息

2) Active 状态项的参数有:
loaded 单元文件已经处理
active(running) 单元正在运行
active(exited)已完成单元的一次性配置
active(waiting)正在等待启动
inactive 没有启动
enabled 将在系统启动时自动启动
disabled 不会在系统启动时自动启动
static 可以被其他单元启动

3) 单元既可以是服务单元也可以是目标单元

2.2 单元的状态显示 (显示所有内容)

# systemctl status -l <unit>


补充:
1) systemctl 的主要状态项有:
Loaded 单元是否已被内存加载
Active 单元是否已成功运行
Main PID 单元主进程的 PID 号
Status 单元的其他相关信息

2) Active 状态项的参数有:
loaded 单元文件已经处理
active(running) 单元正在运行
active(exited)已完成单元的一次性配置
active(waiting)正在等待启动
inactive 没有启动
enabled 将在系统启动时自动启动
disabled 不会在系统启动时自动启动
static 可以被其他单元启动

3) 单元既可以是服务单元也可以是目标单元

内容三:单元的启动管理

3.1 启动某 1 个单元

# systemctl start <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.2 停止某 1 个单元

# systemctl stop <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.3 重启某 1 个单元

# systemctl restart <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.3 显示某 1 个单元是否正在运行

3.3.1 使用 is-active 参数显示某个单元是否正在运行
# systemctl is-active <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.3.2 使用 list-unit-files 参数显示某个单元是否正在运行
3.3.2.1 使用 list-unit-files 参数显示某个单元是否正在运行的格式
3.3.2.1.1 显示某个 systemctl 的服务在 systemctl 中的文件名的格式
# ll /usr/lib/systemd/system/<unit>
3.3.2.1.2 显示某个 systemctl 文件名的状态的格式
# systemctl list-unit-files | grep ^<file name>
3.3.2.2 使用 list-unit-files 参数显示某个单元是否正在运行的案例
3.3.2.2.1 显示某个 systemctl 的服务在 systemctl 中的文件名的案例
# ll /usr/lib/systemd/system/ctrl-alt-del.target
lrwxrwxrwx 1 root root 13 May 19 06:56 /usr/lib/systemd/system/ctrl-alt-del.target -> reboot.target


补充:
1) 这里以显示 systemctl 的 ctrl-alt-del.target 服务在 systemctl 中的文件名为例
2) 从这里的输出结果可以看出 systemctl 的 ctrl-alt-del.target 服务在 systemctl 中的文件名为 reboot.target

3.3.2.2.2 显示某个 systemctl 文件名的状态的案例
# systemctl list-unit-files | grep ^reboot.target
reboot.target                                                             disabled        disabled

(补充:这里以显示 systemctl 的 reboot.target 文件名为例)

3.4 启动并将某 1 个单元设置为开机自启

# systemctl enable --now <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

3.5 停止并将某 1 个单元取消开机自启

# systemctl disable --now <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

内容四:单元的开机自启管理

4.1 让某一个单元开机自启

# systemctl enable <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

4.2 取消某一个单元的开机自启

# systemctl disable <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

4.3 显示某一个单元是否是开机自启

# systemctl is-enabled <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

内容五:单元的锁定管理

5.1 锁定某一个单元(禁止其启动)

# systemctl mask <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

5.2 取消某一个单元的锁定(让它可以启动)

# systemctl umask <unit>


补充:
1) service 是一个个单独的服务
2) target 是包含很多个单独服务(service)的一组服务
3) 单元既可以是服务单元(service)也可以是目标单元(target)

内容六:重新加载某 systemctl 的配置文件

# systemctl daemon-reload

[内容] CentOS Linux & RHEL YUM 的设置 (网络代理)

内容一:设置所有 YUM 软件源网络代理的方法

# vim /etc/yum.conf

添加以下内容:

......
proxy=http://<user>:<password>@<IP address>:<port>/


注意:
1) 如果没有用户和密码就写成 proxy=http://<IP address>:<port>/
2) 如果密码中也有一个 “@” 符号,则需要把 “@” 符号转义一下,转义成 %40

或者:

# vim /etc/yum.conf

添加以下内容:

......
proxy=http://<IP address>:<port>
proxy_username=<user>
proxy_password=<password>

(注意:如果没有用户和密码就不写后面两行)

或者:

# vim /etc/rhsm/rhsm.conf

添加以下内容:

......
proxy=<IP address>
proxy_port=<port>
proxy_username=<user>
proxy_password=<password>

(注意:如果没有用户和密码就不写后面两行)

内容二:单独设置某个 YUM 软件源网络代理

# vim /etc/yum.repos.d/<yum source file name prefix>.repo

添加以下内容:

......
proxy=http://<user>:<password>@<IP address>:<port>/
......


注意:
1) 如果没有用户和密码就写成 proxy=http://<IP address>:<port>/
2) 如果密码中也有一个 “@” 符号,则需要把 “@” 符号转义一下,转义成 %40

或者:

# vim /etc/yum.repos.d/<yum source file name prefix>.repo

添加以下内容:

......
proxy=http://<IP address>:<port>
proxy_username=<user>
proxy_password=<password>

(注意:如果没有用户和密码就不写后面两行)