Linux 入门笔记6. 进程管理入门

1、进程监控

(1)ps

比如使用ps命令,监控python进程:​​ps -ef | grep python​

Linux 入门笔记6. 进程管理入门_定时任务

这几列的含义分别为:UID、PID、PPID、C、STIME、TTY、TIME、CMD


含义

UID

用户ID

PID

进程ID

PPID

父进程ID

C

CPU资源占用百分比

STIME

进程启动时间

TTY

进程使用的控制台

TIME

进程使用CPU的时间

CMD

所下达的指令


(2)top,与ps命令不同,top能实时监控进程状态

Linux 入门笔记6. 进程管理入门_定时任务_02


2、终止进程:kill

kill -9 1896

9表示终止信号类型,1896是进程ID

kill命令的工作流程是:首先项系统发送一个终止信号和终止进程ID,然后系统根基终止信号的类型和进程
,对该进程进行终止操作。

终止信号的类型有:

Linux 入门笔记6. 进程管理入门_定时任务_03

其中,常用的信号有:2、9、15等

  • kill -2 :表示结束进程,例如Ctrl + c就是发送了SIGINT
  • kill -9 :强制终止进程,,一般使用kill -9
  • kill -15 :kill默认发送的终止信号是15,进程会做释放资源等必要操作,然后再终止

Linux 入门笔记6. 进程管理入门_定时任务_04

3、任务调度进程crond

如果要执行周期性的任务,就需要使用crond。crond是linux下的守护进程,能够定期检查是否有要执行的任务,如果有,则自动执行该任务。

/etc/crontab是crond的配置文件,使用 ​​more /etc/crontab​​查看crond文件的内容

Linux 入门笔记6. 进程管理入门_git_05

定时任务的格式如下:​​minute hour day month week command​

前几项表示时间,command表示要执行的命令。多条命令可以用”;”隔开。写好配置文件后,系统会定时地执行command中的命令。


4、crontab工具小例子:实现定时push到github的功能

(1)我们将自定义的crontab文件保存在/var/spool/cron/crontabs/目录下。

在该目录下,使用命令​​crontab -e​​新建一个定时任务(使用vim)。

为了测试需要,我写了一段python代码,这个代码能够向 test.txt 文件中写入当前的时间,test.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import datetime

def write_file(file):
with open(file, 'a') as f:
f.write(str(datetime.datetime.now()) + '\n')
f.close()

file = 'test.txt'

然后设置定时任务,每隔1分钟执行一次,在crontab中添加:

*/1 * * * * cd /home/lijialin/Desktop;python test.py

Linux 入门笔记6. 进程管理入门_git_06

接下来去喝杯咖啡,几分钟后回来看看效果~

Linux 入门笔记6. 进程管理入门_定时任务_07

(2)既然能够自动执行写文件,说明自动push也是可行的,用下面的代码替换test.py中的内容:

#!/usr/bin/env python

import subprocess
import datetime

subprocess.call(["git", "add", "."])
subprocess.call(["git", "commit", "-m", "auto push at " + str(datetime.datetime.now())]) # 加上当前系统的时间
subprocess.call(["git", "push"]) # 执行push

经过实际测试,上述代码是可以实现自动push功能的。下面是github的截图:

Linux 入门笔记6. 进程管理入门_定时任务_08