知道如何区分程序与进程吗?

知道如何产生进程吗?

知道进程之间的相关性吗?

知道进程调用的流程吗?

知道进程与服务的区别吗?

1.程序与进程的区别

bash就是一个程序,当我们登录之后系统就会给我们分配一个PID。

1.产生进程(process)

我们如何产生一个进程呢?很简单的,就是“执行一个程序或指令”就会触发一个事件而取得一个PID。我们知道系统只认识二进制文件,那么当我们要让系统执行某个工作时,就需要启动(加载)某个二进制文件了。

我们知道,在Linux下执行一个指令时,系统会将相关的权限、属性、程序码、数据等均载入内存,并给予这个内存单元一个程序码(PID),最终该指令可以进行的任务则与这个PID的权限有关。

2.进程与子进程

在这里举个例子,当我们登录系统后会取得一个shell,然后,我们用这个shell提供的接口去执行另一个指令,例如usr/bin/passwd或者是touch等等,那些另外执行的指令也会被触发成PID,那个后来执行指令产生的PID就是“子程序”,而在我们原本的shell环境下就称为父程序了。

父程序与子程序的关系图如下所示:

解惑:

你有没有遇到这种情况,明明我将有问题的程序关闭了,怎么过一阵子它又自动产生了呢?而且新产生的那个程序的PID与原来的还不一样,这是什么原因呢?

不要怀疑,如果不是crontab工作调度的影响,则肯定有一个父程序存在,所以你杀掉子程序后父程序会再主动调用那个程序从而生成一个新的进程。那怎么才能杀死子程序呢,只要杀死父进程,子进程自然就会被杀死的。

3.程序调用流程

程序调用流程:fork and exec

Linux的程序调用通常称为fork and exec的流程。程序都会借由父程序以复制(fork)的方式产生一个一模一样的子程序,然后被复制出来的子程序再以exec的方式来执行实际要执行的程序,最终就成为一个子程序的存在。流程如下:

4.常驻内存的服务

进程与服务的区别:进程在执行完任务就会死亡,因此只会在内存中停留一会儿;而服务则是一直在内存中运行着。

那么有哪些常驻内存的程序?就是系统或网络服务咯。

工作调度的文件/etc/crontab,我们知道系统每分钟都会去扫描/etc/crontab以及相关的配置文件,来进行工作调度吧?工作调度谁负责呢?是crond这个程序所管理的,因此crond就是一直常驻内存中。

常驻内存当中的程序通常都是负责一些系统所提供的功能以服务使用者各项任务,因此这些常驻内存的程序就会被我们称之为:服务(daemon)。

1.服务分类

系统的服务分类非常多,大致分为系统本身所需的服务、网络服务等

1.系统所需服务

常见的系统服务:crond、atd、rsyslogd等等

2.网络服务

网络服务通常会启动一个负责网络监听的端口。

常见的网络服务:Apache、named、postfix、vsftpd等等。

服务总结

注意:常见的系统服务的名称都会以d结尾,为什么需要这样,这是因为Linux希望我们可以简单的判断该程序是否为daemon,所以一般daemon的程序都会加上d在文件名后。

Linux系列(13)之程序与服务的概念的更多相关文章

  1. dvm进程,linux进程,应用程序进程是否同一概念

    Android 运行环境主要指的虚拟机技术——Dalvik.Android中的所有Java程序都是运行在Dalvik VM上的.Android上的每个程序都有自己的线程,DVM只执行.dex的Dalv ...

  2. [Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  3. [Linux] PHP程序员玩转Linux系列-lnmp环境的搭建

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 在平常的工作中,我作为PHP程序员经常要搭建一下环境,这个环境就是Linux系统下安装nginx,php,mysql这三个软件,对软件进行 ...

  4. [Linux] PHP程序员玩转Linux系列-搭建代码开发环境

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...

  5. [Linux] PHP程序员玩转Linux系列-备份还原MySQL

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是g ...

  6. [Linux] PHP程序员玩转Linux系列-自动备份与SVN

    我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...

  7. [Linux] PHP程序员玩转Linux系列-nginx初学者引导

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  8. [Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  9. [Linux] PHP程序员玩转Linux系列-Ubuntu配置SVN服务器并搭配域名

    在线上部署网站的时候,大部分人是使用ftp,这样的方式很不方便,现在我要在线上安装上SVN的服务器,直接使用svn部署网站.因为搜盘子的服务器是ubuntu,因此下面的步骤是基于ubuntu的. 安装 ...

随机推荐

  1. luoguP3366 【模板】最小生成树 x

    P3366 [模板]最小生成树 2.4K通过 6.3K提交 题目提供者HansBug 标签 云端↑ 生成树 难度 普及- 时空限制 1s / 128MB 题目描述 如题,给出一个无向图,求出最小生成树 ...

  2. Luogu [P3622] [APIO2007]动物园

    题目链接 比较费脑子的一道题 先说题目核心思想 : 状压dp 环的处理我们先不管. 我们设 dp[j][s] 表示 到达动物 j 且 [ j , j+5) 这五个动物状态为s时 最多能使多少小朋友开心 ...

  3. 7月清北学堂培训 Day 5

    今天是钟皓曦老师的讲授~ 动态规划 动态规划的三种实现方法: 1.递推: 2.递归: 3.记忆化: 举个例子: 斐波那契数列:0,1,1,2,3,5,8…… Fn = Fn-1 + Fn-2 1.我们 ...

  4. redis数据结构有哪些

    1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 2.list 一个链表, ...

  5. Python语法 - 生成器

    生成器基本概念 1 生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束 2 生成器表达式能做的事情列表解析基本都能处理,只不 ...

  6. 通过xshell在本地win主机和远程linux主机传输文件

    1.下载和安装xshell此处不再介绍 2.安装lrzsz的软件 yum install lrzsz 3.通过xshell上传文件 只需要在XShell的菜单中点击File – Transfer – ...

  7. pwn学习日记Day17 《程序员的自我修养》读书笔记

    静态链接章小结 本章首先学习了静态链接的第一步骤,即目标文件在被链接成最终可执行文件时,输入目标文件中的各段是如何被合并到输出文件中的,链接器如何为它们分配在输出文件中的空间和地址.一旦输入段中的最终 ...

  8. 【转】Mac find 去除 “Permission denied” 信息的方法

    转自 https://segmentfault.com/a/1190000007058875 Mac 下查找文件,最简单的方法应该是 mdfind filename 等同于 mdfind -name ...

  9. SQL-W3School-高级:SQL PRIMARY KEY 约束

    ylbtech-SQL-W3School-高级:SQL PRIMARY KEY 约束 1.返回顶部 1. SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录 ...

  10. C#与C++数据类型对应表(搜集整理一)

    C#与C++数据类型对应表(搜集整理一) C#与C++数据类型对应表   C#调用DLL文件时参数对应表 Wtypes.h 中的非托管类型 非托管 C 语言类型 托管类名 说明 HANDLE void ...