Linux进程管理与监控

一、相关概念

1、进程的的基本定义

在自身的虚拟地址空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称为一个进程

2、进程的分类   

系统进程:可以执行内存资源分配和进程切换等管理工作;该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。

用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。         

交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。         

批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。         

守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。例如:(1)httpd进程,一直处于运行状态,等待用户的访问;(2)crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务。

二、涉及进程的相关指令

在linux系统中,进程ID(用PID表示)是区分不同进程的唯一标识,它们的大小是有限制的,最大ID为32768,用UID和GID分别表示启动这个进程的用户和用户组。所有的进程都是PID为1的init进程(centos7.x版本是systemd进程)的后代。内核在系统启动的最后阶段启动init进程,因而,这个进程是linux下所有进程的父进程,用PPID表示父进程。

1、top指令

具体每个参数的含义在常用指令集合有详细介绍了,另外补充一下,在top命令下摁“F”可以定制功能,有“*”是已经定制的,按空格键可以定制,按ESC退出。

2、ps指令

ps -ef指令下会显示此时进程的信息,中括号括起来大部分一般是系统进程,系统进程一般排在前面,用户一般无法参与。

另外还有常用的ps -aux命令显示更详细一些。

ps -ef|grep sshd  #过滤查看某进程(sshd)的信息

3、pgrep指令

pgrep是通过程序的名字来查询进程PID的工具,支持模糊匹配,它通过检查程序在系统中活动的进程,输出进程属性匹配命令行上指定条件的进程的ID

pgrep -f sshd    #查看sshd进程对应的所有ID

ps -ef|grep sshd  #像之前提到的ps指令也可以查看,但不够简洁

4、lsof指令

经常用来查看某个进程打开多少文件,解决某个进程超过最大值而可能出现诸多问题。

lsof -p PID     #PID是进程号,通过进程号显示程序打开的所有文件及依赖相关进程

lsof -i     #通过监听指定的协议、端口、主机等信息,显示符合条件的进程信息。一个端口对应的那些进程,例如lsof -i :80/25/22    lsof -i tcp:80/25/22

lsof -c 进程名称    #例如sshd,类似PID,但比-p显示更多    

lsof -c sshd|wc -l     #查看sshd打开了多少个文件

5、kill指令

用kill终止一个进程

kill [信号类型] 进程PID     

信号类型有很多种,可以通过kill –l查看所有信号类型。常用的信号类型有SIGKILL,对应的数字为9,还有SIGTERM和SIGINT,对应的数字分别为15和2。

kill -9 进程PID    #表示强制结束进程。   

kill -2 进程PID    #表示结束进程,但是并不是强制性的,常用的ctrl+c组合键发出的就是一个kill -2的信号。

kill -15 进程PID    #表示正常结束进程,是kill的缺省选项,也就是kill不加任何信号类型时,默认类型就是15。

kill -0 进程PID    #写脚本时候用,对服务、进程的状态进行试探,对一个进程进行是否存在。执行-0后,通过  echo $?  指令,返回值为0则执行成功,其他数字是执行不成功。

6、killall指令

用killall终止一个进程。

killall也是关闭进程的一个命令,与kill不同的是,killall后面跟的是进程的名字,而不是进程的PID,因而,killall可以终止一组进程

killall [信号类型] 进程名称    #信号类型与kill一致,进程名称例如java、httpd、mysqld、sshd、sendmail等。 

 三、任务调度进程crond

1、相关概念

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似。

2、分类     

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

(1)系统任务调度

系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。当然还有cron.各种副文件,都是系统直接配置好的,可以自己修改。

(2)用户任务调度

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

3、crond的使用(针对用户任务调度)

(1)crontab常用的使用格式

crontab [-u user] [file]

crontab [-u user] [-e /-l / -r /-i ]    #没有跟用户默认执行当前用户

常用组合: crontab -e ;crontab -l

选项含义如下:

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般由root用户来运行。 

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。 -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

(2)crontab文件的含义

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段。

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

(3)crontab应用举例

0   */3   *    *    *    /usr/local/apache2/apachectl restart     #表示每隔3个小时重启apache服务一次。  

30  3  *  *  6  /webdata/bin/backup.sh   #表示每周六的3点30分执行/webdata/bin/backup.sh脚本的操作。  

0  0  1,20  *  *   fsck /dev/sdb8   #表示每个月的1号和20号检查/dev/sdb8磁盘设备。  

10  5  */5  *  *   echo "">/usr/local/apache2/log/access_log 表示每个月的5号、10号、15号、20号、25号、30号的5点10分执行清理apache日志操作。

(4)使用crontab工具的注意事项

<1>注意环境变量问题:有时我们创建了一个crontab(他不会自动加载环境变量),但是这个任务却无法自动执行,而在命令行手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。这个时候我们需要在自己的/var/spool/cron/crontab文件下手动添加环境变量,例如:source /etc/profle(系统全局环境变量) source /root/.bashrc(用户环境变量)

问题比如在shell脚本里可以执行,但是放到crontab里面就不行了。

<2>注意清理系统用户的邮件日志:可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

<3>系统级任务调度与用户级任务调度:系统级任务调度主要完成系统的一些维护操作(比如定时重启机器),用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行。 

(5)使用事例

<1>在root用户下,给huoserver用户进行用户级任务调度工作,首先进入编辑页面。

<2>写入的大致内容为:每个月的5号、10号、15号、20号、25号、30号的5点10分执行清理日志操作。

<3>这时我们发现在/var/spool/cron/  目录下出现了我们所设置的用户名的文件,内容也是我们刚才输入的。

<4>我们可以用tail -f /var/log/cron  命令来查看定时执行的任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1409679.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

aardio封装库) 微软开源的js引擎(ChakraCore)

前言 做爬虫肯定少不了JavaScript引擎的使用&#xff0c;比如在Python中现在一般用pyexecjs2来执行JavaScript代码&#xff0c;另外还有一些其他执行JavaScript的库&#xff1a; https://github.com/eight04/node_vm2: rpc调用nodejs&#xff0c;需要安装nodehttps://github.…

25计算机考研院校数据分析 | 同济大学

同济大学&#xff08;Tongji University&#xff09;&#xff0c;简称“同济”&#xff0c;是中华人民共和国教育部直属&#xff0c;由教育部、国家海洋局和上海市共建的全国重点大学&#xff0c;是历史悠久、享有盛誉的中国著名高等学府&#xff0c;是国家“双一流”、“211工…

kubectl_入门_Pod控制器

Pod控制器 在k8s中&#xff0c;按照pod的创建方式可以将其分为两类 自主式pod&#xff1a;k8s直接创建出来的pod&#xff0c;这种pod删除后就没有了&#xff0c;也不会重建控制器创建的pod&#xff1a;通过控制器创建的pod&#xff0c;这种pod删除了之后还会自动重建 1. 什么…

Ollamallama

Olllama 直接下载ollama程序&#xff0c;安装后可在cmd里直接运行大模型&#xff1b; llama 3 meta 开源的最新llama大模型&#xff1b; 下载运行 1 ollama ollama run llama3 2 github 下载仓库&#xff0c;需要linux环境&#xff0c;windows可使用wsl&#xff1b; 接…

Windows下载MingGW

因为要配置vscode的c/c环境&#xff0c;需要下载一个编译器&#xff0c;gcc官方推荐开源的MingGW-W64&#xff0c;看了几个下载方法&#xff0c;决定用最简单的离线安装。 niXman/mingw-builds-binaries/releases 32位的操作系统&#xff1a;i686&#xff0c;64位的操作系统&a…

【C++】学习笔记——string_3

文章目录 六、string类5. string类的操作6. string类的转换7. string类的模拟实现 未完待续 搭配文档食用 六、string类 5. string类的操作 上面的函数中&#xff0c;有些是不常用的&#xff0c;咱们只挑几个重要的进行讲解。 c_str 就是将字符串转换成 C语言 字符串的格式。…

java+jsp+Oracle+Tomcat 记账管理系统论文(二)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️​​​​​​​⬆️…

微软如何打造数字零售力航母系列科普06 - 如何使用微软的Copilot人工智能

如何使用微软的Copilot人工智能&#xff1f; Copilot和ChatGPT有很多相似之处&#xff0c;但微软的聊天机器人本身就有一定的优势。以下是如何对其进行旋转&#xff0c;并查看其最引人注目的功能。 ​​​​​​​ &#xff08;资料来源&#xff1a;Lance Whitney/微软&…

吴恩达2022机器学习专项课程(一)8.2 解决过拟合

目录 解决过拟合&#xff08;一&#xff09;&#xff1a;增加数据解决过拟合&#xff08;二&#xff09;&#xff1a;减少特征特征选择缺点 解决过拟合&#xff08;三&#xff09;&#xff1a;正则化总结 解决过拟合&#xff08;一&#xff09;&#xff1a;增加数据 收集更多训…

openKylin 2.0 Alpha2 X86 安装教程

原文链接&#xff1a;openKylin 2.0 Alpha2 X86 安装教程 Hello&#xff0c;大家好啊&#xff01;今天我们将讨论如何在VMware Workstation上安装openKylin 2.0 Alpha2 X86版。openKylin是一个基于Linux的操作系统&#xff0c;旨在提供高性能、可靠性强的系统体验。在虚拟化软件…

【16-Ⅰ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

C++ 模拟实现 priority_queue(优先队列)

目录 一&#xff0c;优先队列简介 二&#xff0c;priority_queue 的内部实现原理 三&#xff0c;模拟实现 priority_queue 1&#xff0c;模板参数与数据结构 2&#xff0c;构造 3&#xff0c;辅助功能&#xff08;堆的有序化&#xff0c;建立堆&#xff09; 4&#xff0…

202012青少年软件编程(Python)等级考试试卷(一级)

第 1 题 【单选题】 运行下方代码段&#xff0c;输出是6&#xff0c;则输入的可能是&#xff08; &#xff09;。 a eval(input())print(a)A :8%2 B :8/2 C :3*2 D :3**2 正确答案:C 试题解析: 第 2 题 【单选题】 关于Python变量&#xff0c;下列叙述正确的是&#x…

【智能算法】鹦鹉优化算法(WO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2024年&#xff0c;J Lian等人受到鹦鹉学习行为启发&#xff0c;提出了鹦鹉优化算法&#xff08;Parrot Optimizer, PO&#xff09;。 2.算法原理 2.1算法思想 PO灵感来自于在驯养的鹦鹉中观察到的…

八皇后问题-使用递归回溯方法用c语言实现

学习的视频&#xff1a;懒猫老师 https://www.bilibili.com/video/BV1wJ411U7Gy/?spm_id_from333.337.search-card.all.click&vd_sourceda60f9e1bc3321cae28c29fe80e9b078 代码&#xff1a; 编译&#xff1a;gcc test.c -g #include <stdio.h> #include<st…

【openLooKeng集成Hive连接器完整过程】

【openLooKeng集成Hive连接器完整过程】 一、摘要二、正文2.1 环境说明2.2 Hadoop安装2.2.1. 准备工作2.2.2 在协调节点coordinator上进行安装hadoop2.2.3、将Hadoop安装目录分发到从节点worker2.2.4、在协调节点coordinator上启动hadoop集群2.3 MySQL安装2.4 Hive安装及基本操…

数据结构算法——链表带环问题——数学深度解析

前言:本节内容主要是讲解链表的两个问题 &#xff1a;1、判断链表是否带环&#xff1b; 2、一个链表有环&#xff0c; 找到环的入口点。 本节内容适合正在学习链表或者链表基础薄弱的友友们哦。 我们先将问题抛出来&#xff0c;友友们可以自己去力扣或者牛客网去找相应题目&…

el-tabs作为子组件使用页面空白

文章目录 前言一、问题展示二、源码分析三、解决方案 前言 如果el-tabs是子组件&#xff0c;父组件传值value / v-model为空字符&#xff0c;这个时候在watch中监听value / v-model就会发现监听的数据会被调用为‘0’。一定是作为子组件引用&#xff0c;且在watch进行监听&…

【Java探索之旅】包管理精粹 Java中包的概念与实践

文章目录 &#x1f4d1;前言一、封装1.1 封装的概念1.2 访问限定修饰符 二、封装扩展&#xff08;包&#xff09;2.1 包的概念2.2 带入包中的类2.3 自定义包2.4 常见的包 &#x1f324;️全篇总结 &#x1f4d1;前言 在Java编程中&#xff0c;封装是面向对象编程的核心概念之一…

令牌技术详解

1. 问题引出 之前我们讲 Cookie 和 Session 时提到过一个用户登录的场景&#xff1a;当用户登录时&#xff0c;服务器端可以把用户的登录信息存在Session中 并返回给客户端对应的SessionID&#xff0c;客户端会把这个SessionID存在Cookie 中当下次访问该服务器时&#xff0c;…