首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux的进程管理

Linux的进程管理

作者头像
姚远OracleACE
发布2023-04-06 18:27:06
发布2023-04-06 18:27:06
1.7K0
举报
文章被收录于专栏:oracleaceoracleace

01

系统任务管理

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

  • & 最经常被用到:这个用在一个命令的最后,可以把这个命令放到后台执行
  • ctrl + z:可以将一个正在前台执行的命令放到后台,并且暂停
  • jobs:查看当前有多少在后台运行的命令
  • fg:将后台中的命令调至前台继续运行
代码语言:javascript
复制
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暂停了。

02

ps

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

选项

说明

-ef

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

-aux

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

-w

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

03

pidof

根据进程名查询进程号

代码语言:javascript
复制
oracle@yaoyuan ~$ pidof mysqld
1907
oracle@yaoyuan ~$ ps -ef|grep mysqld
mysql     1907     1  0 Jul29 ?        00:01:57 /usr/sbin/mysqld

04

kill

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

代码语言:javascript
复制
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可以强制杀死。

05

nohup

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

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

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

代码语言:javascript
复制
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
...

06

at

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

代码语言:javascript
复制
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

<EOT>是输入Ctrl+d结束。

07

crontab

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

格式如下:

代码语言:javascript
复制
* * * * * command

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

例子:

每晚的21:30重启apache:

代码语言:javascript
复制
30 21 * * * /usr/local/etc/rc.d/lighttpd restart

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

代码语言:javascript
复制
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

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

代码语言:javascript
复制
0 2 * * 7 backup_database.sh

常用于数据库备份

开机自动执行

代码语言:javascript
复制
# crontab -e
//进入编辑,输入如下行
@reboot touch /home/oracle/hello.res

检查使用crontab -l

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 oracleace 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档