Linux5-计划任务、进程

news2024/12/23 17:44:40

计划任务

一、cron 计划任务

周期性计划任务

cron 任务概述

• 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
• 软件包:cronie、crontabs
• 系统服务:crond
• 日志文件:/var/log/crond

管理计划任务策略

• 使用 crontab 命令
– 编辑:crontab -e [-u 用户名]
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]

如何编写 crontab 任务记录

• 配置格式可参考 /etc/crontab 文件

执行周期  	配置说明
分钟     	从0到59之间的整数
小时		从0到23之间的整数
日期 		从1到31之间的整数
月份 		从1到12之间的整数
星期 		0~7之间的整数,0或7代表星期日

*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n
在这里插入图片描述

[root@localhost ~]# crontab -e #以当前用户身份编辑计划任务
* * * * * date >> /opt/time.txt
[root@localhost ~]# crontab -l #查看计划任务
* * * * * date >> /opt/time.txt 
[root@localhost ~]# watch -n 1 cat /opt/time.txt #每秒查看一次文件
# 新开启一个终端执行以下命令
[root@server0 ~]# tail -f /var/log/cron #实时查看 cron 的日志文件,Ctrl + c 可以退出查看

二、程序与进程

  • 程序
    保存在磁盘中的可执行文件
    是静态保存的代码
  • 进程
    在CPU及内存中运行的程序指令
    是动态执行的代码
  • PID:进程编号
  • 父/子进程:进程可以创建一个或多个子进程,是树型结构

进程管理

查看进程树

• pstree — Processes Tree
– 格式:pstree [选项] [PID 或用户名]

常用命令选项

– -a:显示完整的命令行
– -u:列出各进程所属的用户名
– -p:列出对应 PID 编号

[root@localhost ~]# pstree #查看整个进程树信息
[root@localhost ~]# pstree -u lisi #未发现进程。 
使用Ctrl + Shift + T快捷键另开一个终端
[root@localhost ~]# su - lisi
[lisi@localhost ~]$ vim a.txt #不编辑,不退出即可
回到之前终端
[root@localhost ~]# pstree -u lisi #显示 lisi 用户正在运行的进程
bash───vim
[root@localhost ~]# pstree -pu lisi #p,显示 pid 号
bash(11980)───vim(12017)
[root@localhost ~]# pstree -apu lisi #a,显示完整的命令行
bash,11980
 └─vim,12017 a.txt

三、查看进程

查看进程快照

ps -Processes Snapshot
格式:ps [选项]…

  • ps aux 操作:信息非常全面详细
    – 列出正在运行的包含其他用户的所有进程
    • a:显示当前终端所有进程
    • u 用户名:列出指定用户的所有进程。
    • x:当前用户在所有终端下的进程
  • ps -elf 操作:信息中有该进程的父进程信息
    – 列出正在运行的所有进程
    • e:显示系统内所有进程
    • f,以完全格式化的形式展示信息(展示全部信息)
    • ef:显示所有进程的完整格式列表。
    • l:以长格式输出信息,包括最完整的进程信息
      可以先使用“ pgrep <进程名> ”命令查找该进程的PID,然后再使用 “ ps -p -o ppid= ”命令查看它的PPID。
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
COMMAND
用户 进程 ID %cpu %内存 虚拟内存 固定内存 终端 状态 起始时间 cpu 时间 程序指令

在这里插入图片描述

PPID:代表父进程的 PID
[root@localhost ~]# ps -elf | wc -l #统计正在运行的进程有多少个
223

进程动态排名

  • top 交互式工具,默认 3 秒刷新一次
    – 格式:top [-d 刷新秒数] [-U 用户名]

top命令选项

在这里插入图片描述

[root@localhost ~]# top #查看进程,默认每隔 3 秒刷新一次
[root@localhost ~]# top -d 1 #每隔 1 秒刷新一次

top命令内容详解

在这里插入图片描述
2.

在这里插入图片描述
3.

在这里插入图片描述

top交互式选项

  • 按大写 P 根据 CPU 使用进行排序,CPU 占用最高的排首位
    按大写 M 根据内存使用进行排序,内存占用最高的排首位

在这里插入图片描述

检索进程信息

  • pgrep — Process Grep
    – 用途:pgrep [选项]… 查询条件
  • 常用命令选项
    – -l:输出进程名,而不仅仅是 PID
    – -U:检索指定用户的进程
    – -t:检索指定终端的进程
    – -x:精确匹配完整的进程名
[root@localhost ~]# pgrep a #检索进程名包含 a 的进程,但是只显示 PID
[root@localhost ~]# pgrep -l a #检索进程名包含 a 的进程,-l 输出进程名称
[root@localhost ~]# pgrep -l crond
1246 crond
[root@localhost ~]# pgrep -lU lisi #检索 lisi 用户的进程

进程管理

进程的前后台调度

  • 前台启动
    —输入正常的命令行
    —运行期间占用当前终端
  • 后台启动
    – 在命令行末尾添加“&”符号,以正在运行的状态放入后台
    —运行期间不占用当前终端
root@localhost ~]# sleep 3 #当前终端睡 3 秒
root@localhost ~]# sleep 1000 #当前终端睡 1000 秒,会一直占用这个终端
root@localhost ~]# sleep 1000 & #当前终端睡 1000 秒,但是是放到后台,不影响使用终端
root@localhost ~]# firefox
root@localhost ~]# firefox &
  • Ctrl + z 组合键
    – 挂起当前进程 (暂停并转入后台)
  • jobs:查看后台任务列表
[root@svr7 ~]# jobs #查看后台进程任务列表
[root@svr7 ~]# sleep 1000
^Z #按 Ctrl+z 暂停放入后台
[2]+ 已停止 sleep 1000
[root@svr7 ~]# jobs
  • bg:激活后台被挂起的任务
[root@svr7 ~]# bg 2 #将后台编号为 2 的进程继续运行
[root@svr7 ~]# jobs
  • fg:将后台任务恢复到前台运行
[root@svr7 ~]# fg 2 #将后台编号为 2 的进程恢复到前台
sleep 800
^C #按 Ctrl+c 终止进程
[root@svr7 ~]# jobs
[root@svr7 ~]# fg 1
sleep 1000
^C
[root@svr7 ~]# jobs

杀死进程

  • 干掉进程的不同方法
    – Ctrl+c 组合键,中断当前命令程序
    – kill [-9] PID… 、kill [-9] %后台任务编号,-9 强制杀死
    – killall [-9] 进程名…
    – pkill 查找条件
[root@svr7 ~]# sleep 1000 &
[1] 21406
[root@svr7 ~]# sleep 2000 &
[2] 21407
[root@svr7 ~]# sleep 3000 &
[3] 21408
[root@svr7 ~]# jobs -l #-l 显示进程的 pid
[root@svr7 ~]# kill 21406 #杀死 pid 为 21406 的进程
[root@svr7 ~]# killall sleep #杀死所有 sleep 进程
[3]+ 已终止 sleep 3000
[root@svr7 ~]# jobs -
[root@localhost ~]# vim a
[2]+ 已停止 vim a
[root@localhost ~]# jobs -l
[2]- 5310 停止 vim a
[root@localhost ~]# kill 5310 #命令没有报错,但是没有杀死
[root@localhost ~]# jobs -l
[2]- 5310 停止 vim a
[root@localhost ~]# kill -9 5310 #使用-9 选项,可以杀死
[2]- 已杀死 vim a
[root@localhost ~]# jobs -l
杀死一个用户的开启的所有进程(强制踢出一个用户)
[root@localhost ~]# pkill -9 -u lisi

日志管理

日志的功能

  • 系统和程序的“日记本”
    – 记录系统、程序运行中发生的各种事件
    – 通过查看日志,了解及排除故障
    – 信息安全控制的“依据”
  • 由系统服务 rsyslog(日志服务)统一记录/管理
    日志消息采用文本格式
    主要记录时间发生的还是件,主机,进程,内容
  • 常见的日志文件
    /var/log/messages 记录内核消息、各种服务的公共消息
    /var/log/dmesg 记录系统启动过程的各种消息
    /var/log/cron 记录与 cron 计划任务相关的消息
    /var/log/maillog 记录邮件收发相关的消息
    /var/log/secure 记录与访问限制相关的安全消息

日志分析

  • 通用分析工具
    – tail、tailf、less、grep 等文本浏览/检索命令
    – awk、sed 等格式化过滤工具
  • tailf:实时跟踪日志消息
[root@svr7 ~]# echo 123 > /opt/1.txt
[root@svr7 ~]# cat /opt/1.txt
123
[root@svr7 ~]# tailf /opt/1.txt
123
另开一个终端,写入内容
[root@localhost ~]# echo xixhaha >> /opt/a.txt
  • 之前动态查看的文件会有变化
[root@localhost ~]# tailf /opt/a.txt
123
xixhaha

用户登录分析

  • 用户登录分析
    • users、who、w 命令
    – 查看已登录的用户信息,详细度不同
    • last、lastb 命令
    – 查看最近登录成功/失败的用户信息
[root@localhost ~]# users #输出信息简单,只显示用户
root root root
[root@localhost ~]# who
root :0		2020-07-07 00:40 (:0)		 #:0:图形的终端
root pts/0 	2020-07-07 10:32 (:0)		 # pts/0:图形的命令行
root pts/1 	2020-07-07 10:32 (192.168.4.1)
[root@localhost ~]# w #对显示的字体有要求,太大会显示失败
w: 64 column window is too narrow
[root@localhost ~]# w #正常显示
[root@localhost ~]# last #显示最近登录成功的用户信息
[root@localhost ~]# lastb #显示最近登录失败的用户信息
[root@localhost ~]# last -2 #显示最近 2 条登录成功的用户信息
[root@localhost ~]# lastb -2 #显示最近 2 条登录失败的用户信息

日志消息的优先级

  • Linux 内核定义的事件紧急程度
    – 分为 0~7 共 8 种优先级别
    – 其数值越小,表示对应事件越紧急/重要
    0 EMERG(紧急) 会导致主机系统不可用的情况
    1 ALERT(警告) 必须马上采取措施解决的问题
    2 CRIT(严重) 比较严重的情况
    3 ERR(错误) 运行出现错误
    4 WARNING(提醒) 可能会影响系统功能的事件
    5 NOTICE(注意) 不会影响系统但值得注意
    6 INFO(信息) 一般信息
    7 DEBUG(调试) 程序或系统调试信息等

服务管理

systemd 介绍

init 程序作用

  • Linux 系统和服务管理器
    – 是内核引导之后加载的第一个初始化进程(PID=1)
    – 负责掌控整个 Linux 的运行/服务资源组合
  • 传统的 init 程序风格
    – ststem v:顺序加载,RHEL5 系列采用
    – upstart:时间触发,RHEL6 系列采用

systemd

  • 一个更高效的系统&服务管理器
    – 开机服务并行启动,各系统服务间的精确依赖
    – 配置目录:/etc/systemd/system/
    – 服务目录:/lib/systemd/system/
    – 主要管理工具:systemctl
  • 服务目录:
[root@localhost ~]# ls /lib/systemd/system/
[root@localhost ~]# ls /lib/systemd/system/sshd.service
  • 主要管理工具:systemctl
    查看 crond 服务的状态:
    systemctl status crond
    重启
    systemctl restart 服务名
    启动
    systemctl start 服务名
    关闭
    systemctl stop 服务名
    设置服务开机自启
    systemctl enable 服务名
    设置服务不开机自启
    systemctl disable 服务名
    查看是否开自启动
    systemctl is-enabled 服务名

管理运行级别

  • RHEL7 运行模式
    • 字符模式:multi-user.target
    • 图形模式:graphical.target
  • 列出可以运行的级别
    [root@localhost ~]# systemctl -t target
  • 当前直接切换到字符模式
    [root@localhost ~]# systemctl isolate multi-user.target
  • 当前直接切换到图形模式
    [root@localhost ~]# systemctl isolate graphical.target
  • 查看每次开机默认进入的模式
    [root@localhost ~]# systemctl get-default
    graphical.target
  • 设置永久策略,每次开机自动进入 multi-user.target
    [root@localhost ~]# systemctl set-default multi-user.target
    [root@localhost ~]# reboot
    [root@localhost ~]# runlevel
    N 5 #旧级别,当前级别
  • 设置永久策略,每次开机自动进入 graphical.target
    [root@localhost ~]# systemctl set-default graphical.target
    [root@localhost ~]# reboot
    [root@localhost ~]# runlevel
  • 补充:
    RHEL6 运行级别
    0:关机
    1:单用户模式(基本功能的实现,破解 Linux 密码)
    2:多用户字符界面(不支持网络)
    3:多用户字符界面(支持网络)服务器默认的运行级别
    4:未定义
    5:图形界面
    6:重启

切换运行级别:init 5

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

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

相关文章

Leetcode—1657.确定两个字符串是否接近【中等】

2023每日刷题&#xff08;四十五&#xff09; Leetcode—1657.确定两个字符串是否接近 算法思想 源于灵神 实现代码 class Solution { public:bool closeStrings(string word1, string word2) {int len1 word1.size();int len2 word2.size();if(len1 ! len2) {return fa…

【note: This is an issue with the package mentioned above, not pip.】

安装gym时出现问题&#xff0c;note: This is an issue with the package mentioned above, not pip. 报错原因&#xff1a; 缺失了某些依赖模块&#xff0c;所以安装报错。 Collecting package metadata (current_repodata.json): done Solving environment: failed with in…

阿里云新版公共实例从注册账号到创建设备生成参数教程

1 注册阿里云 打开阿里云官网&#xff0c;点击右上角的登录/注册 打开的界面按照图片输入手机号注册 注册成功后&#xff0c;登录返回第一次打开的界面&#xff0c;点击控制台 点击控制台后界面如下 点击左上角的菜单&#xff0c;弹出新窗口&#xff0c;搜索物联网平台 开通物…

分治算法——75. 颜色分类

文章目录 &#x1f33f;0. 分治&#x1f33b;1. 题目&#x1f33c;2. 算法原理&#x1f334;3. 代码实现 &#x1f33f;0. 分治 分治分治&#xff0c;顾名思义分而治之&#xff0c;将一个大问题转换成若干个子问题&#xff0c;再将这些子问题的基础上继续划分成更小的子问题&a…

springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp

洗衣服是每个人都必须做的事情&#xff0c;而洗衣机更成为了人们常见的电器&#xff0c;但是单个洗衣机价格不菲&#xff0c;如果每人都买&#xff0c;就会造成资源的冗余。所有就出现了公用设备&#xff0c;随着时代的发展&#xff0c;很多公用都开始向着无人看守的自助模式经…

centOS使用docker部署ElasticSearch和Kibana

一、docker部署ElasticSearch 1、创建网桥 docker network create xybnet 2、下载镜像 docker pull elasticsearch:8.2.0 3、先运行容器 docker run -d \ --name es \ --net xybnet \ -p 9200:9200 \ -p 9300:9300 \ -p 5601:5601 \ -e "discovery.typesing…

笔记二十四、剖析Redux的工作流程

24.1 定义 用做于状态管理的第三方 js 库react框架中使用&#xff0c;也可应用于其他的框架 使用场景 组件间需要共享状态和改变另一个组件的状态在react项目中可以不使用就尽量不用&#xff0c;复杂场景下才使用 24.2 原理图 24.3 代码 安装 yarn add reduxjs/toolkit rea…

【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作

文章目录 一. limits.conf常见配置项详解二. 文件描述符&#xff08;file descriptor&#xff09;简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits…

软著项目推荐 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

JDK21无法导入TimeUnit类

运行环境&#xff1a;windows11、IDEA2023.1.3、JDK21 问题描述&#xff1a;IDEA中无法导入java.util.concurrent.TimeUnit类。 以下截图是问题解决后的截图。有问题的时候未截图&#xff0c;说明一下&#xff0c;有问题的时候TimeUnit类是红色的&#xff0c;无法导入&#x…

ipa应用测试平台怎么开开具发票

控制台-个人中心-发票管理 ●点击申请发票可以开具发票 ●申请发票-填写资料-勾选订单 ●个人发票开具以及公司发票开具 ●提交发票申请 ●等待申请成功开具发票 ●发票开具成功&#xff0c;我们可以开具或者查看发票

什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁 死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。 那么什么是死锁呢?竟然让我们如此烦恼。 “死…

C语言:写一个函数,输入一个十六进制数,输出相应的十进制数

分析&#xff1a; 当用户运行该程序时&#xff0c;程序会提示用户输入一个十六进制数。用户需要在命令行中输入一个有效的十六进制数&#xff0c;例如&#xff1a;"1A3F"。 接下来&#xff0c;程序调用了名为 xbed 的函数&#xff0c;并将用户输入的十六进制数作…

TCP_握手+挥手过程状态变化分析

TCP状态解读 握手挥手过程状态变化 同时握手 双发同时发起syn请求&#xff0c;状态变化过程如下&#xff1a; 图片来源&#xff1a;http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentProcessTheThreeWayHandsh-4.htm 同时挥手 4次挥手&#xff0c;可以理解为2…

oops-framework框架 之 创建项目(二)

引擎&#xff1a; CocosCreator 3.8.0 环境&#xff1a; Mac Gitee: oops-game-kit 构建 本篇博客将使用oops-game-kit 构建一个新的开发项目&#xff0c; 关于 oops-framework 框架的了解&#xff0c;可参考上篇博客&#xff1a; oops-framework框架 之 初始了解(一) 大概…

WordPress:解决xmlrpc.php被扫描爆破的风险

使用WordPress的朋友都知道&#xff0c;一些【垃圾渣渣】会利用xmlrpc.php文件来进行攻击&#xff0c;绕过WP后台错误登录次数限制进行爆破。虽然密码复杂的极难爆破&#xff0c;但及其占用服务器资源。 方法一、利用宝塔防火墙&#xff08;收费版&#xff09; 一般可以直接使…

python中jupyter notebook安装教程

一、什么是Jupyter Notebook&#xff1f; Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算&#xff1a;开发、文档编写、运行代码和展示结果。 ——Jupyter Notebook官方介绍 https://jupyter-notebook.readthedocs.io/en/stable/notebook.html二…

JMeter怎样测试WebSocket

一、安装WebSocket取样器 1、从JMeter插件管理器官网下载&#xff1a; https://jmeter-plugins.org/ 搜索websocket 1、jetty-http-9.1.2.v20140210.jar 2、jetty-io-9.1.2.v20140210.jar 3、jetty-util-9.1.2.v20140210.jar 4、websocket-api-9.1.1.v20140108.jar 5、w…

太阳能路灯系统在道路照明中的应用

太阳能路灯作为一种极为科学和环保的光源利用形式&#xff0c;一直以来备受关注&#xff0c;但是&#xff0c;目前虽然有很多技术可以证明太阳能路灯的可行性&#xff0c;不过&#xff0c;如何真正的将太阳能路灯应用到道路照明之中&#xff0c;还是需要进行深入分析和探讨的。…

安装两个WIN10/WIN11系统到两个盘中,第二个系统依赖原系统盘引导的问题

前段时间折腾装一个双系统&#xff0c;主要两个方面考虑&#xff1a; 1. 原来的系统又许多软件&#xff0c;想着先保留&#xff1b; 2. 系统想安装到一个固态硬盘中&#xff1b; 在安装的过程中遇到了一些问题&#xff0c;这里记录分享一下。 问题1&#xff0c;运行系统自动安装…