Linux的进程管理

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 系统任务管理跟系统任务相关的几个命令:fg、bg、jobs、&、ctrl+z

系统任务管理

跟系统任务相关的几个命令:fg、bg、jobs、&、ctrl+z


& 最经常被用到:这个用在一个命令的最后,可以把这个命令放到后台执行


ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停


jobs:查看当前有多少在后台运行的命令


fg:将后台中的命令调至前台继续运行


oracle@yaoyuan ~$ sleep 10
^Z
[1]+  Stopped                 sleep 10
oracle@yaoyuan ~$ sleep 9 &
[2] 25127
oracle@yaoyuan ~$ jobs
[1]+  Stopped                 sleep 10
[2]-  Running                 sleep 9 &
oracle@yaoyuan ~$ ps
  PID TTY          TIME CMD
24894 pts/0    00:00:00 bash
25112 pts/0    00:00:00 sleep
25167 pts/0    00:00:00 ps
[2]-  Done                    sleep 9
oracle@yaoyuan ~$ jobs
[1]+  Stopped                 sleep 10
oracle@yaoyuan ~$ fg
sleep 10



sleep 9在后台执行,不是暂停,而sleep 10暂停了。


ps

ps 命令用于显示当前系统中由该用户运行的进程列表


选项 说明

-ef 查看所有进程及其 PID(进程号)、系统时间、命令的详细目录、执行者等。

-aux 除可显示 -ef 所有内容外,还可显示 CPU 及内存占用率、进程状态。

-w 以加宽方式显示,这样可以显示较多的信息。

pidof

根据进程名查询进程号


oracle@yaoyuan ~$ pidof mysqld
1907
oracle@yaoyuan ~$ ps -ef|grep mysqld
mysql     1907     1  0 Jul29 ?        00:01:57 /usr/sbin/mysqld



kill

而 kill 命令用于输出特定的信号给指定进程号(PID)的进程并根据该信号完成指定的行为,其中可能的信号有进程挂起、进程等待、进程终止等



oracle@yaoyuan ~$    kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT   4) SIGILL   5) SIGTRAP
 6) SIGABRT   7) SIGBUS   8) SIGFPE   9) SIGKILL  10) SIGUSR1
11) SIGSEGV  12) SIGUSR2  13) SIGPIPE  14) SIGALRM  15) SIGTERM
16) SIGSTKFLT  17) SIGCHLD  18) SIGCONT  19) SIGSTOP  20) SIGTSTP
21) SIGTTIN  22) SIGTTOU  23) SIGURG  24) SIGXCPU  25) SIGXFSZ
26) SIGVTALRM  27) SIGPROF  28) SIGWINCH  29) SIGIO  30) SIGPWR
31) SIGSYS  34) SIGRTMIN  35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10  45) SIGRTMIN+11  46) SIGRTMIN+12  47) SIGRTMIN+13
48) SIGRTMIN+14  49) SIGRTMIN+15  50) SIGRTMAX-14  51) SIGRTMAX-13  52) SIGRTMAX-12
53) SIGRTMAX-11  54) SIGRTMAX-10  55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX  
oracle@yaoyuan ~$ sleep 100 &
[1] 25928
oracle@yaoyuan ~$ ps
  PID TTY          TIME CMD
24894 pts/0    00:00:00 bash
25928 pts/0    00:00:00 sleep
25941 pts/0    00:00:00 ps
oracle@yaoyuan ~$ kill 25928
oracle@yaoyuan ~$ ps
  PID TTY          TIME CMD
24894 pts/0    00:00:00 bash
25948 pts/0    00:00:00 ps



信号默认为15,使用-9可以强制杀死。


nohup

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。


nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。


以下命令在后台执行 root 目录下的 dbaace.sh 脚本:


oracle@yaoyuan ~$ cat > yaoyuan.sh
ls
oracle@yaoyuan ~$ chmod a+x yaoyuan.sh 
oracle@yaoyuan ~$ nohup yaoyuan.sh
nohup: ignoring input and appending output to ‘nohup.out’
nohup: failed to run command ‘yaoyuan.sh’: No such file or directory
oracle@yaoyuan ~$ nohup ./yaoyuan.sh
nohup: ignoring input and appending output to ‘nohup.out’
oracle@yaoyuan ~$ cat nohup.out 
aa
a.sql
awrdiff_1_253_1_270.html
...


at

计划任务服务程序 把周期性、规律性的工作交给系统自动完成。计划任务分为一次性计划任务与长期性计划任务。一次性计划任务只执行一次,一般用于满足临时的工作需求。我们可以用at命令实现这种功能,只需要写成“at 时间”的形式就可以。

oracle@yaoyuan ~$ date
Sun Jul 31 15:16:55 CST 2022
oracle@yaoyuan ~$ at 15:18
at> touch file_a
at> <EOT>
job 1 at Sun Jul 31 15:18:00 2022
oracle@yaoyuan ~$ date
Sun Jul 31 15:18:01 CST 2022
oracle@yaoyuan ~$ ll file_a
-rw-r--r--. 1 oracle oinstall 0 Jul 31 15:18 file_a


是输入Ctrl+d结束。


crontab

我们希望 Linux 系统能够周期性地、有规律地执行某些具体的任务,那么Linux 系统中默认启用的 crond 服务简直再适合不过了 创建、编辑计划任务的命令为“crontab -e”,查看当前计划任务的命令为“crontab -l”,删除某条计划任务的命令为“crontab -r”。另外,如果您是以管理员的身份登录的系统,还可以在crontab 命令中加上-u 参数来编辑他人的计划任务。


格式如下:


* * * * * command


分  时  日  月  周  命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令


例子:


每晚的21:30重启apache:


45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart


每月1、10、22日的4点45分执行:


45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart


每周日早上2点执行数据库备份脚本:


0 2 * * 7 backup_database.sh


常用于数据库备份

开机自动执行

# crontab -e
//进入编辑,输入如下行
@reboot touch /home/oracle/hello.res

image.png

检查使用crontab -l


作者介绍:


姚远:Oracle ACE(Oracle和MySQL数据库方向 ),华为云MVP。拥有包括 Oracle 10g和12c OCM在内的20+数据库相关认证。曾任IBM公司数据库部门经理,现在一家第三方公司任首席数据库专家,服务2万+客户,《MySQL 8.0运维与优化》的作者。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 缓存 安全
【计算机系统基石与Linux进程管理深度解析】(一)
【计算机系统基石与Linux进程管理深度解析】
|
消息中间件 监控 算法
深入理解Linux进程管理与优化:原理、调度和资源控制详解
深入理解Linux进程管理与优化:原理、调度和资源控制详解
288 0
|
5月前
|
缓存 监控 Linux
入职必会-开发环境搭建40-Linux常用操作-Linux进程管理
进程是正在执行的程序或命令。每个进程独立的,都有需要占用一定的系统资源。Linux系统中启动进程有两种方式:1.Linux操作系统启动的时自动启动的进程。2.用户在终端输入命令启动的进程。
入职必会-开发环境搭建40-Linux常用操作-Linux进程管理
|
6月前
|
前端开发 物联网 Linux
【Linux】进程管理
【Linux】进程管理
28 1
|
7月前
|
算法 Linux Shell
linux系统的进程管理
linux系统的进程管理
37 2
|
7月前
|
Web App开发 监控 Unix
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
|
7月前
|
消息中间件 监控 安全
【C/C++ 程序设计】Linux 进程管理 设计 获取进程信息 策略权衡
【C/C++ 程序设计】Linux 进程管理 设计 获取进程信息 策略权衡
155 0
|
存储 Linux Shell
哇~真的是你呀!今天是Linux系统程序与进程管理
Linux系统程序与进程管理指的是对于Linux操作系统中的程序和进程的管理、控制和监视。 Linux系统中,程序是由代码编译而成的,而进程是程序在系统中运行时产生的执行实例。 Linux系统提供了多种命令和工具来管理程序和进程,例如可以使用包管理器安装、升级和卸载程序,使用ps命令和top命令查看系统中正在运行的进程,使用kill命令终止指定的进程,使用nice命令调整进程的优先级等等。
69 0
哇~真的是你呀!今天是Linux系统程序与进程管理
|
7月前
|
Linux 调度
Linux学习笔记十一:进程管理
Linux学习笔记十一:进程管理
|
7月前
|
缓存 NoSQL Linux
【计算机系统基石与Linux进程管理深度解析】(四)
【计算机系统基石与Linux进程管理深度解析】