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

知道如何产生进程吗?

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

知道进程调用的流程吗?

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

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. CComboBoxEx添加图像CImageList无法正常显示

    <1>给控件 CComboBox绑定变量 .cpp中 DDX_Control(pDX, IDC_COMBO_PHOTO_IMG, m_ComboBoxPhotoImg); CComboBo ...

  2. MySQL数据分析(7)-试着使用SQL

    (一) 1.1 启动服务器 Windows版命令: net start mysql 或者 C:\mysql-5.5.20-winx64\mysql-5.5.20-winx64\mysql Mac版命令 ...

  3. Ubuntu start:未知任务:mysql

    在Ubuntu环境下,下载安装mysql但是到最后启动的时候却显示这一句话: start :未知任务:mysql 很纳闷,明明按照教程一步一步写的.后来才想起来,万能的方法,在前面加权限 sudo s ...

  4. java 生成随机数 自定义

    public static void main(String[] args) { int max=10000; int min=1000; Random random = new Random(); ...

  5. Vue 目录

    什么是 vue-cli 通过 vue-cli 建立出来的 vue

  6. js闭包小实验

    js闭包小实验 一.总结 一句话总结: 闭包中引用闭包外的变量会使他们常驻内存 function foo() { var i=0; return function () { console.log(i ...

  7. 安装windows下安装mysql

    参考文档:https://www.cnblogs.com/reyinever/p/8551977.html  https://www.jb51.net/article/151213.htm 首先下载m ...

  8. Jmeter-app接口

    1.IOS登录接口涉及的三个接口: 2.三个接口传入的参,第三个是判断用户是否登录成功的 http://118.178.247.67:8449/service/userLogin/phoneQuick ...

  9. 周志华-机器学习西瓜书-第三章习题3.5 LDA

    本文为周志华机器学习西瓜书第三章课后习题3.5答案,编程实现线性判别分析LDA,数据集为书本第89页的数据 首先介绍LDA算法流程: LDA的一个手工计算数学实例: 课后习题的代码: # coding ...

  10. JAVA 基础编程练习题36 【程序 36 移动位置】

    36 [程序 36 移动位置] 题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数 package cskaoyan; public class cskao ...