一、程序,进程和线程的概念
程序:没有运行的代码
进程:正在运行的代码
线程:进程的真正执行者
二、服务与进程的概念
服务:
在操作系统内部或者依赖网络环境运行的一种软件组件,提供特定的功能或服务,一般在后台运行接收请求,处理数据,执行操作服务可以是系统自带的,如firewalld,也可以是第三方基于linux系统开发的应用程序 如http,nginx,mysql
可以通过端口号进行通信,服务之间可用相互访问
服务是以进程的方式运行的,服务可以自行分配资源,也可以是通过管理员限制资源使用
进程:
1、操作系统分配给运行程序的资源单位,在代码中限制了资源的使用,写死了进程所占用的系统资源
2、系统自动分配
3、进程之间是相互隔离的,彼此之间不能访问内存空间
服务与进程的区别:
进程之间一般不能互相访问,也就是说不能通过传统的ip端口进行通信,只能通过系统提供的机制:共享内存,信号等。
服务可以通过定义的端口和协议与其他组件进行通信
服务和进程本质上在linux是一回事,都是以进程的形式展示
区别:服务是第三方,进程大部分是系统自带的
父进程和子进程:
父进程:如systemctl 子进程:基于父进程创建的进程,父进程先启动再启动子进程
子进程运用的资源由父进程提供分配资源
结束运用:子进程先结束,父进程要回收子进程的资源之后,父进程才会终止
ps:静态查看进程的命令,静态的统计进程信息
-a:显示所有终端上的进程,包括其他用户的进程
-u:列出进程的用户
-x:显示所有终端的信息
可以写在一起 -aux
例:ps -aux | grup ssh
主要看:user:进程的用户 PID:进程的id,每次启动PID都会改变,不是固定的
%/cpu:cpu的占用 %/MEM:内存的占用
-e:显示系统内的所有进程信息
-l:长格式显示进程的信息
-f:使用完整格式显示进程信息
也可以写在一起 -elf
stat 进程状态
D:不可中断的休眠状态(了解即可)
R:正在运行
S(大写):处于休眠状态,可被唤醒
s(小写):包含多个进程,也就是父进程
T:停止或后台暂停或处于调试状态
Z:僵尸进程——父进程已经终止,子进程还在运行,没人回收子进程的资源,所占用cpu和内存都很小,无法杀死只能重启
kill:终止进程,杀死进程
-9:强制终止进程,kill命令只是传递一个信息,内核最终执行命令
-15:告诉内核这个进程需要被终止
-q:传递一个强制终止的信号
top:动态查看进程排名信息,信息会不断更新,重点看第三列
%cpu:cpu的信息 us:用户占用 id:空闲cpu的百分比
c键:根据占用cpu的大小进行排序,大的在前,小的在后
q键:退出top程序
数字键1:显示cpu的个数和状态
top -b -h 1:表示只运行一次即退出
pstree:查看进程的线程
-p:显示进程id,也显示进程的用户名
-u:显示进程的用户
pgrep:根据指定的进程名查找pid,一般和kill一起使用,后面只能跟进程名,如httpd,sshd
-a:显示进程名和pid
jobs:查看后台进程的状态信息
-l:显示所有后台进程的PID
-p:显示所有后台进程的进程组id
-h:仅显示最后的后台进程
-r:仅显示正在运行的后台程序
-s:仅显示已停止的后台进程
ctrl+z:放到后台并停止运行
&:后台运行符,放到后台继续运行
fg 1:把后台程序调到前台运行(一般不用)
例:cp -a /mnt/ /opt/ &
tty:运行终端的运行级别
tty1:表示打开的图形化界面终端
2-6:文字界面
pts:永远程连接根据连接到系统的,如xshell,moba
越早登录的远程工具,数字越小
pkill:根据特定条件终止相应的进程
计划任务管理 crontab任务配置 定时任务:由五个*组成
* * * * *
crontab -e:创建定时任务
-u:指定用户创建定时任务
例:crontab -e -u root 和vim文本编辑器一样
-l:展示当前的定时任务
例:crontab -l -u root
-r:清空所有定时任务(很少用)
五个*分别表示分、时、日、月、周
分:0-59
时:0-23(0也代表24点)
日:1-31
月:1-12
周:0-7(0和7都代表星期天)
*表示任意时间 ,:表示间隔的多个不连续的时间点
例:1,3,5 * * * *
表示每1,3,5分钟都执行一次
-:表示连续的时间范围
2-10 * * * *
从2到10分钟都执行
/:表示间隔的时间频率
*/10 * * * *
表示每10分钟执行一次
例题:三月份第一天早上八点半执行一次
30 8 1 3 *
每个月的第一天早上8-10点,每10分钟执行一次
*/10 8-10 1 * *