Linux系列(13)之程序与服务的概念
知道如何区分程序与进程吗?
知道如何产生进程吗?
知道进程之间的相关性吗?
知道进程调用的流程吗?
知道进程与服务的区别吗?
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)之程序与服务的概念的更多相关文章
- dvm进程,linux进程,应用程序进程是否同一概念
Android 运行环境主要指的虚拟机技术——Dalvik.Android中的所有Java程序都是运行在Dalvik VM上的.Android上的每个程序都有自己的线程,DVM只执行.dex的Dalv ...
- [Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-lnmp环境的搭建
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 在平常的工作中,我作为PHP程序员经常要搭建一下环境,这个环境就是Linux系统下安装nginx,php,mysql这三个软件,对软件进行 ...
- [Linux] PHP程序员玩转Linux系列-搭建代码开发环境
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...
- [Linux] PHP程序员玩转Linux系列-备份还原MySQL
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是g ...
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...
- [Linux] PHP程序员玩转Linux系列-nginx初学者引导
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-Ubuntu配置SVN服务器并搭配域名
在线上部署网站的时候,大部分人是使用ftp,这样的方式很不方便,现在我要在线上安装上SVN的服务器,直接使用svn部署网站.因为搜盘子的服务器是ubuntu,因此下面的步骤是基于ubuntu的. 安装 ...
随机推荐
- Cash Machine (POJ 1276)(多重背包——二进制优化)
链接:POJ - 1276 题意:给你一个最大金额m,现在有n种类型的纸票,这些纸票的个数各不相同,问能够用这些纸票再不超过m的前提下凑成最大的金额是多少? 题解:写了01背包直接暴力,结果T了,时间 ...
- Js 之复制到剪贴板 clipboard.js
一.下载 https://github.com/zenorocha/clipboard.js/archive/master.zip 二.Demo示例 <!DOCTYPE html> < ...
- 什么是文件的BOM头
1.什么是BOM? BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部. 在不同的Unicode编码中, ...
- php-fpm脚本
#! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required- ...
- 认识理解Java中native方法(本地方法)
Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能. 可 ...
- PHP学习之工厂模式
<?php //工厂模式 interface Doing { function eat(); function sleep(); } class Cat implements Doing { f ...
- 详解python中@的用法
python中@的用法 @是一个装饰器,针对函数,起调用传参的作用. 有修饰和被修饰的区别,‘@function'作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义). 代码1 ...
- Java动态修改运行环境
1.pom.xml直接添加一下配置 <profiles> <profile> <id>dev</id> <properties> <a ...
- PHP + Smarty + MySQL
Help me please! How to transfer data from table to smarty? Function: public function getBanLog() { g ...
- android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题 jav ...