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

内容目录:

内容一:将进程放入后台
1.1 直接将一个进程放到后台
1.2 将一个目前正在前台运行的进程放到后台

内容二:查看放入后台的进程
2.1 查看所有放入后台的进程
2.2 查看某一个放入后台的进程

内容三:管理放入后台的进程
3.1 在后台启动放入后台的进程
3.1.1 在后台启动放入后台的进程(通过后台进程号)
3.1.2 在后台启动放入后台的进程(通过后台进程名)
3.2 在前台启动放入后台的进程
3.2.1 在前台启动放入后台的进程(通过后台进程号)
3.2.2 在前台启动放入后台的进程(通过后台进程名)
3.3 杀死放入后台的进程
3.3.1 杀死放入后台的进程(通过后台进程号)
3.3.2 杀死放入后台的进程(通过后台进程名)

具体的内容:

内容一:将进程放入后台
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 core dump 的开启 (临时)

步骤一:理解 core dump 的作用

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

步骤二:临时开启 core dump
2.1 设置可生成 core dump 大小的参数
2.1.1 查看当前允许生成 core dump 的大小

# 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 将允许生成 core dump 大小的参数设置为无限大

# 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 设置 core dump 生成的位置

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

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

[步骤] openSUSE&SUSE 图形系统桌面的安装

步骤目录:

步骤一:查看 openSUSE&SUSE 可安装的软件包组

步骤二:安装 Gnome 图形系统界面
2.1 安装 Gnome 图形系统界面
2.2 将系统默认的图形桌面设置为 Gnome 图形桌面

步骤三:进入图形系统界面
3.1 设置系统开机进入图形桌面
3.2 立刻进入图形桌面

具体的操作步骤:

步骤一:查看 openSUSE&SUSE 可安装的软件包组

# zypper se -t pattern

步骤二:安装 Gnome 图形系统桌面
2.1 安装 Gnome 图形系统桌面

# zypper -n in -t pattern gnome

2.2 将系统默认的图形桌面设置为 Gnome 图形系统桌面

# vim /etc/sysconfig/displaymanager

将以下内容:

......
DISPLAYMANAGER_XSERVER="Xorg"

修改为:

......
DISPLAYMANAGER_XSERVER="gdm"

步骤三:进入图形系统桌面
3.1 设置系统开机进入图形系统桌面

# systemctl set-default graphical.target

3.2 立刻进入图形系统桌面

# startx

或者:

# init 5

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

内容目录:

内容一:受 systemctl 管理的单元列表
1.1 列出所有 systemctl 可用单元
1.2 列出所有 systemctl 正在运行的单元
1.3 列出所有 systemctl 运行失败的单元
1.4 列出所有受 systemctl 管理的服务单元
1.5 列出所有受 systemctl 管理的目标单元

内容二:单元的状态查看

内容三:单元的启动管理
3.1 启动某一个单元
3.2 停止某一个单元
3.3 重启某一个单元
3.4 启动并将一个单元设置为开机自启

内容四:单元的开机自启管理
4.1 让某一个单元开机自启
4.2 取消某一个单元的开机自启
4.3 查看某一个单元是否是开机自启

内容五:单元的锁定管理
5.1 锁定某一个单元(禁止其启动)
5.2 取消某一个单元的锁定(让它可以启动)

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

具体的内容:

内容一:受 systemctl 管理的单元列表
1.1 列出所有 systemctl 可用单元

# systemctl list-unit-files

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

1.2 列出所有 systemctl 正在运行的单元

# systemctl list-units

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

1.3 列出所有 systemctl 运行失败的单元

# systemctl --failed

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

1.4 列出所有受 systemctl 管理的服务单元

# systemctl list-units --type service


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

1.5 列出所有受 systemctl 管理的目标单元

# systemctl list-units --type target


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

内容二:单元的状态查看

# 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) 单元既可以是服务单元也可以是目标单元

内容三:单元的启动管理
3.1 启动某一个单元

# systemctl start <unit>


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

3.2 停止某一个单元

# systemctl stop <unit>


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

3.3 重启某一个单元

# systemctl restart <unit>


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

3.3 查看某一个单元是否正在运行

# systemctl is-active <unit>


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

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

# systemctl enable --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&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>

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

内容二:单独设置某个 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>

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