linux日常运维(一)
- 进程管理ps、top
- 任务计划crontab
进程管理
概念:进程是在自身的虚拟地址空间运行的一个单独的程序。
进程和程序区别:程序只是一个静态的命令集合,不占系统的运行资源;而进程是一个随时都有可能发生变化的、动态的、使用系统运行资源的程序。一个程序可以启动多个进程。和进程相比较。作业是一系列按一定顺序执行的命令。一条简单的命令可能会涉及多个进程,尤其是当使用管道和重定向时。进程有以下特征:
- 动态性:进程的实质是程序是在多道程序系统中的一次执行过程,进程是动态初始、动态消亡的。
- 并发性:任何进程都可以同其他进程一起并发执行。
- 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
- 异步性:由于进程间的相互制约,是的进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
- 结构特征:进程由程序、数据和进程控制块三部分组成。
- 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生变化。
在linux系统中由三种进程:
- 交互式进程:一个由shell启动并控制的进程,交互式进程既可在前台运行,也可在后台运行。
- 批处理进程:与终端无关,安排在指定时刻完成的一系列进程。
- 守护进程:在引导系统时启动,以执行即时的操作系统任务,比如crond、rsyslogd、named等。
查看系统进程的信息
- ps命令 命令语法:ps [选项]
选项 | 含义 |
---|---|
-A | 显示所有的进程 |
-N | 选择除了那些符号指定条件的所有进程 |
-a | 显示排除会话领导者和进程不与终端向关联的所有进程 |
-d | 显示所有的进程(排除会话领导者) |
-e | 显示所有的进程 |
T | 显示当前终端下的所有进程 |
a | 所有的W /tty,包括其他用户 |
r | 显示仅运行中的进程 |
x | 处理w/o控制的ttys |
-c | 为-l选项显示不同的调度信息 |
c | 列出进程时,显示每个进程真正的命令名称,而不包括路径、参数或常驻服务的标识 |
-C<命令名> | 按命令名显示进程 |
-G<真实的用户GID或者组群名> | 按真实的组群GID或者组群名显示进程 |
-U<真实的用户UID或者用户名> | 按真实的用户UID或者用户名显示进程 |
-g<组名> | 选择会话或有效的组名显示进程 |
-p<进程ID> | 按进程id显示进程 |
-s<会话ID> | 显示指定会话ID的进程。 |
-t<终端> | 按终端显示进程 |
-u<有效的用户UID或用户名> | 按有效的用户UID显示进程 |
U<用户名> | 显示属于该用户的进程 |
t<终端> | 按终端显示进程 |
-f | 显示UID、PPID、C和STIME字段 |
-j或j | 采用作业控制的格式显示进程 |
s | 采用进程信号的格式显示进程 |
v | 以虚拟内存格式显示进程 |
-l或l | 采用详细的格式来显示过程 |
u | 以面向用户的格式显示进程 |
p<进程ID> | 显示指定进程号的进程,效果和-p选项相同,只在列表格式方面不同 |
L | 列出输出字段的相关信息 |
f | 用ASCII字符显示树状结果,表达进程间的相互关系。 |
r | 只显示终止运行的进程 |
e | 列出进程时,显示每个进程所使用的环境变量 |
-w或w | 按宽格式显示输出 |
-u | 打印用户格式,显示用户名和进程的起始时间 |
-x | 显示不带控制终端的进程 |
-t<终端编号> | 显示指定终端编号的进程 |
n | 以数字来表示USER和WCHAN字段 |
h | 不显示标题列 |
-H | 显示树状结构,表示进程间的相互关系 |
-m或m | 在进程后面显示线程 |
-y | 配合-l选项使用时,不显示F(flag)输出字段,并以RSS字段取代ADDR字段 |
例子:查看crond进程是否正在运行
[root@localhost ~]# ps -ef|grep crond
root 6571 1 0 03:04 ? 00:00:00 /usr/sbin/crond -n
root 7457 7383 0 03:28 pts/0 00:00:00 grep --color=auto crond
显示所有不带控制台终端的进程,并显示用户名和进程的起始时间。
[root@localhost ~]# ps -aux
显示tty1终端下的进程
[root@localhost ~]# ps -t tty1
PID TTY TIME CMD
6572 tty1 00:00:00 agetty
- top命令:显示当前正在运行的进程以及关于它们的重要信息,包括它们的内存和CPU使用量。使用q键可以退出top命令
命令语法:top [选项]
选项 | 含义 |
---|---|
-b | 使用批处理模式 |
-c | 列进程时,显示每个进程的完整命令,包括命令名称、路径和参数等 |
-d<间隔秒数> | 监控进程执行状态的间隔时间,单位以秒计算。 |
-i | 忽略闲置或是已成为Zombie进程 |
-n<执行次数> | 设置监控信息的更新次数 |
-S | 使用累计时间模式 |
-u<用户名或有效用户UID> | 仅监控指定有效用户UID或用户名匹配的进程 |
-p<进程PID> | 仅监视指定进程的ID的进程 |
-U<用户名或用户UID> | 仅监视指定用户UID或用户名匹配的进程 |
例子:只显示root用户的进程
[root@localhost ~]# top -u root
kill命令杀死进程
命令语法:kill [选项] [进程号]
选项 | 含义 |
---|---|
-s<信号> | 指定发送的信号 |
-l | 显示信号名称的列表,一共62个 |
例如:强制杀死进程号为6571的进程
[root@localhost ~]# ps -ef|grep crond
root 6571 1 0 03:04 ? 00:00:00 /usr/sbin/crond -n
root 7534 7383 0 03:48 pts/0 00:00:00 grep --color=auto crond
[root@localhost ~]# kill -9 6571
[root@localhost ~]# ps -ef|grep crond
root 7536 7383 0 03:49 pts/0 00:00:00 grep --color=auto crond
任务计划:在固定的时间上触发某个作业,就需要创建任务计划,按时执行该作业。使用cron实现任务计划可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的。
- 安装crontabs和cronie软件包
[root@localhost ~]# yum -y install vixie-cron
- 控制crond服务 使用以下命令启动crond服务
[root@localhost ~]# systemctl start crond.service
使用以下命令在重新引导系统时自动启动crond服务
[root@localhost ~]# systemctl enable crond.service
[root@localhost ~]# systemctl is-enabled crond.service
enabled
- /etc/crontab文件是cron的默认配置文件,内容如下
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
其中#号开始的行是注释内容,不会被处理。
前面3行是用来配置cron任务运行环境的变量。/etc/crontab文件中的每一行都表示一项任务,它的格式如下
minute hour day month day of week user-name command
内容 | 描述 |
---|---|
minute | 分钟,0~59的任意整数 |
hour | 小时,0~23的任意整数 |
day | 日期,1~31的任意整数(如果指定了月份,则必须是该月份的有效日期) |
month | 月份,1~12的任意整数(或使用月份的英文简写入Jan、Feb等) |
day of week | 星期,0~7的任意整数,这里的0或7代表星期日(或使用星期的英文简写入Sun、Mon等) |
user-name | 执行命令的用户 |
Command | 要执行的命令或者是自己编写的脚本 |
/etc、crontab文件中可以下表的时间格式
时间格式 | 描述 |
---|---|
* | 可以用来代表所有有效的值。如月份值中的型号意味着在满足其他制约条件后每月都执行该命令 |
- | 指定一个整数范围。比如1-4意味着整数1、2、3、4 |
, | 指定隔开的一系列值指定一个列表。比如3,4,6,8表明这四个指定的整数。 |
/ | 可以用来指定间隔频率。在范围后加上/<integer>意味着在范围内可以跳过integer。如"0-59/2"可以用来在分钟字段上定义时间间隔为两分钟。间隔频率值还可以和星号一起使用,如"*/3"的值可以用在月份字段中表示每3个月运行一次任务。 |
- /etc/crontab文件配置举例 在每天晚上的21:30执行/root、backup.sh
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
30 21 * * * root /root/backup.sh
在每星期六、星期日的1:20执行一个find命令,查找相应的文件
20 1 * * 6,0 root /bin/find / -name core -exec rm {} \;
- /etc/cron/d目录:在/etc/cron.d目录中创建文件(该目录下所有文和/etc/crontab文件使用一样的配置语法)来实现。例如:
[root@localhost ~]# ls /etc/cron.d
0hourly
[root@localhost ~]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
使用crontab命令实现任务计划
- cronta命令简介 root以外的用户可以使用crontab命令配置cron任务。所有用户定义的crontab都被保存在/varspool/cron目录中,并使用创建它们的用户身份来执行。
- 以某位用户身份一个crontab项目
- 以该用户身份登录
- 然后输入crontab -e命令,就进入编辑器编辑该用户的crontab了。(该编辑器是由VISUAL或EDITOR环境变量指定的,文件格式和/etc/crontab相同)
- 编辑成功保存后,该文件会根据用户名被保存在/var/spool/cron/<username>文件中。
- crond守护进程每分钟都检查/etc/crontab文件、/etc/cron.d目录以及/var/spool/cron目录中的改变。如果发现改变,它们就会被载入内存。
- 命令语法:crontab [选项] crontab [选项] [文件]
选项 | 含义 |
---|---|
-u<用户名> | 用户名,如果使用自己的用户名登录,就不需要使用该选项 |
-e | 编辑用户的crontab |
-l | 列出用户的crontab中的内容 |
-r | 删除用户的crontab |
-i | 删除用户的crontab前进行提示 |
- 创建crontab 例子:以用户zhangsan登录系统,创建crontab
[root@localhost ~]# su - wangwu
[wangwu@localhost ~]$ date
Sat Jul 27 05:41:34 EDT 2019
使用crontab -e命令打开vi编辑器,编辑成功后查看,切换为root用户查看(普通用户没有权限打开该文件)
[wangwu@localhost ~]$ su - root
Password:
Last login: Sat Jul 27 05:38:10 EDT 2019 from 192.168.64.1 on pts/0
[root@localhost ~]# cat /var/spool/cron/wangwu
- 编辑crontab过程中可以在每个条目指示加一条注释,这样就可以知道它的功能、运行时间,更为重要的是指定这是哪位用户的作业。
- 列出crontab: 以root用户列出wangwu的crontab
[root@localhost ~]# crontab -u wangwu -l
- 删除crontab:删除crontab同时会删除/var/spool/cron目录中指定有用户的文件
例如:以普通用户wangwu删除自己的crontab
[wangwu@localhost ~]$ crontab -r
- 恢复丢失的crontab文件(找到系统自动备份的位置/var/spool/cron/wangwu)
命令语法:crontab [文件] 例如:以wangwu登录恢复丢失的crontab文件
[wangwu@localhost ~]$ crontab /home/wangwu/wangwucron
摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
例如:以普通用户wangwu删除自己的crontab
[wangwu@localhost ~]$ crontab -r
- 恢复丢失的crontab文件(找到系统自动备份的位置/var/spool/cron/wangwu)
命令语法:crontab [文件] 例如:以wangwu登录恢复丢失的crontab文件
[wangwu@localhost ~]$ crontab /home/wangwu/wangwucron
摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著
linux日常运维(一)的更多相关文章
- linux日常运维工作
Linux的使用环境也日趋成熟,各种开源产品络绎不绝,大有百花齐放的盛景,那么当Linux落地企业,回归工作时,我们还要面对这Linux运维方面的诸多问题,今天我们特意组织一场有关Linux 在企业运 ...
- linux日常运维管理
1.查看系统负载命令 w命令:主要查看cpu负载 load average:一分钟内负载 五分钟内负载 十五分钟内负载 负载跟cpu核心数有关,查看cpu核心数: # cat /proc/cpuinf ...
- linux 日常运维 目录
Linux防火墙:iptables Linux 抓包工具:tcpdump linux 查看磁盘读写:iotop linux 查看磁盘读写:iostat inux 查看网卡流量:sar linux 查看 ...
- Linux 日常运维
查看用户信息:w 查看系统负载:uptime 查看系统资源使用情况:vmstat 查看进程动态:top 查看网卡流量:sar 查看网卡流量:nload 查看磁盘读写:iostat 查看磁盘读写:iot ...
- linux日常运维常用命令
---查看端口占用 netstat -ap | grep 8000 ---重启nginx sudo /usr/sbin/nginx -c /usr/local/nginx/conf/nginx.con ...
- zookeeper 用法和日常运维
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
- Linux企业运维高效技巧心得及分享
本博文出自51CTO博主 吴光科 的博客,有任何问题请进入博主页面互动讨论! 博文地址:http://wgkgood.blog.51cto.com/1192594/1641247 随着Linux在企业 ...
- Linux系统运维工程该具备哪些素质
记得在上高中时,物理老师总是会对我们一句话:"学习是件苦差事."工作后发现,其实做运维也是件苦差事.最为一名运维工程师,深知这一行的艰辛,但和IT行业其他职务一样,那就是付出的越多 ...
- Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)
之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...
- 零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧
云计算概念一旦产生便一发不可收拾,成为移动互联网时代最为火热的行业之一.国内各大互联网公司例如阿里.腾讯.百度.网易等纷纷推出自己的云计算产品,3月10日,腾讯云0.01元投标时间更是让云计算在普罗大 ...
随机推荐
- 03-面试必会-Mysql篇
1. Mysql 查询语句的书写顺序 Select [distinct ] <字段名称> from 表 1 [ <join 类型> join 表 2 on <join 条 ...
- 解决Mysql 5.7 不能插入中文的问题
问题的解决方案 问题描述 : 在学习DML插入中文数据时 , 发现出现了以下问题 -- 插入数据 insert into tea (id , name) values (2 , '徐凤年'); -- ...
- 精选Golang高频面试题和答案汇总
大家好,我是阳哥. 之前写的< GO必知必会面试题汇总>,已经阅读破万,收藏230+. 也欢迎大家收藏.转发本文. 这篇文章给大家整理了17道Go语言高频面试题和答案详解,每道题都给出了代 ...
- Transaction rolled back because it has been marked as rollback-only大概问题及解决方法
Transaction rolled back because it has been marked as rollback-only 问题:前几天遇到一个问题,代码没有抛出我想要的带自定义提示消息的 ...
- Unity UGUI的Text(文本)组件的介绍及使用
UGUI的Text(文本)组件的介绍及使用 什么是UGUI的Text(文本)组件? UGUI(Unity Graphic User Interface)是Unity引擎的一套用户界面系统,而Text( ...
- ASP.NET MVC4 学习笔记-3
创建一个简单的数据录入程序--Create a Simple Data-Entry Application 在这篇博客中,我们将通过创建一个简单的数据录入程序来探索MVC的其他特点.在这一节中我们要跟 ...
- 单行编辑控件不能有多行文本 matlab
单行编辑控件不能有多行文本 matlab 解决方法:双击进入控件,把max参数改2以及以上
- Spring Data MongoDB 使用
本文为博主原创,转载请注明出处: Spring Data MongoDB 是 Spring Data 系列的一部分,它提供了与 MongoDB 的集成和操作支持,类似于 JPA 对关系型数据库的支持. ...
- Go 语言的 nil 能比较自己吗
nil 是什么? 可以看看官方的描述,在 buildin/buildin.go 里: // nil is a predeclared identifier representing the zero ...
- 【技术积累】Java中的常用类【一】
Math类 Math类是Java中的一个数学工具类,提供了一系列常用的数学方法.下面是Math类的常用方法及其案例: abs() 返回一个数的绝对值. int num = -10; int absNu ...