码迷,mamicode.com
首页 > 系统相关 > 详细

Linux - 基础

时间:2020-02-21 12:35:30      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:命令   变换   img   free命令   统计信息   搜索   位置   ssh   高速缓存   

Linux系统的常用命令和Linux系统了解程度考核

技术图片

显示日期的指令:data

显示日历的指令:cal

数据同步写入磁盘:sync

惯用的关机指令:shutdown

重启,关机:rebote,halt,poweroff

切换执行等级:init

Linux共有七种执行等级:

--run level 0:关机

--run level 3:纯文本模式

--run level 5:含有图形接口模式

--run level 6:重新启动

使用init这个指令来切换各模式,也可使用shutdown -h now以及poweroff

改变文件所属群组:chgrp

改变文件的拥有者:chown

改变文件的权限:chmod

查看版本信息:

变换目录:cd

显示当前所在目录:pwd

建立新目录:mkdir

删除[空]目录:rmdir

档案与目录的显示:ls

复制档案和目录:cp

移除档案和目录:rm

取得路径的文件名与目录名:basename,dirname

由第一行开始显示文档内容:cat

从最后一行开始显示:tac

一页一页的显示档案内容:more

与more类似,但是比more更好的是,他可以往前翻页:less

只看头几行:head

只看尾几行:tail

寻找特定档案:where is、find

压缩文件和读取压缩文件:gzip,zcat   bzip2,bzcat   tar

tar是打包不是压缩,zip主流的压缩方式,

zip -r myfile.zip ./*  # 将当前目录下的所有文件和文件夹压缩成myfile。zip文件,-r表示递归压缩目录下所有文件。

unzip -o -d /home/sunny myfile.zip  # 把myfile.zip文件解压到 /home/sunny/

-o:不提示的情况下覆盖文件;

-d:-d /home/sunny # 指明将文件解压缩到/home/sunny目录下

zip test.zip test.txt # 将test.zip 文件压缩为test.zip

unzip test.zip # 解压到当前目录

unzip test.zip -d /root/ # 解压到指定目录;

管道:是Linux由Unix那里继承过来的进程间的通信机制,它是Unix早期的一个重要通信机制.其思想是,在内存中创建一个共享文件,从而使通信双方利用这个共享文件来传递信息.由于这种方式具有单向传递数据的特点,所以这个作为传递消息的共享文件就叫做“管道”.

 技术图片

Linux系统有文本编辑界面和图形用户界面(GUI).其特征包括:多用户、多任务、多平台、可编程SHELL、提供源代码、仿真终端、支持多种文件系统及强大的网络功能等.

  多用户:多个用户(六个)能同时从相同或不同的终端(终端号:tty1~tty6)上用同一个应用程序的副本进行工作.在控制台,切换终端的命令是:ALT+F1~F6;在仿真终端窗口(ps/0~n)是:SHIFT+ALT+F1~F6.
  多任务:可同时执行多个程序,程序之间互不妨碍.与WINDOWS的多任务不同,Linux将系统没有用到的剩余物理内存全部用来做硬盘的高速缓存.笔者曾经打开三个xterm,分别用于查找文件、调试程序、发邮件.而且还可以指定某一个程序在后台运行,指定某一些程序在特定的时间内运行(at命令).
  多平台:Linux能在X86平台上运行,也能移植到其他平台.
  可编程SHELL:SHELL是解释并执行命令的系统外壳程序.通过编写SHELL程序,使得系统更加个性化;而且在一些程序中具有C语言的功能.
  提供源代码:Linux是自由软件,源代码完全公开,可以自行编译内核,修改和扩充操作系统,进行二次开发.
  Linux支持的文件系统很多,例如:EXT3、NFS、VFS、ISO9660、MSDOS等等.
  网络功能:较全面的实现了TCP/IP、SLIP、PPP、PLIP协议,功能强大. 

Linux是一个稳定的、功能强大的、值得使用的操作系统;

Linux开放源代码的开发模式,保证了任何系统的漏洞都能被及时发现和改正;

Linux的稳定性并不是一个意外的例外,稳定性是所有大型计算机操作系统所具有的共性。

Linux的稳定性是由于它没有像其它操作系统一样内核如此庞大、漏洞无穷。

优势:跨平台的硬件支持、丰富的软件支持、

多用户多任务:linux实现不同的用户共同登陆系统,并且资源分享比较公平。而不是像Windows那样的伪多用户操作系统,如果需要邓丽更多的用户,要么退出当前用户,要么向微软购买多用户授权。

可靠的安全性、良好的稳定性、完善的网络功能;

Linux目录结构

Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统

 技术图片

技术图片

1、/ - 根目录:

每一个文件和目录都从从这里开始。

只有root用户具有该目录下的写权限。此目录和/root目录不同,/root目录是root用户的主目录。

2、/bin – 用户二进制文件:

包含二进制可执行文件。

系统的所有用户使用的命令都设在这里,例如:ps,ls,ping,grep,cp等。

3、/sbin – 系统二进制文件:

就像/bin,/sbin同样也包含二进制可执行文件。

但是,在这个目录下的linux命令通常由系统管理员使用,对系统进行维护。例如:iptable,reboot,fdisk,ifconfig,swapon命令。

4、/etc – 配置文件:

包含所有程序所需的配置文件。

也包含了用于启动/停止单个程序的启动和关闭shell脚本。例如:/etc/resolv.conf、/etc/logrotate.conf

5、/dev – 设备文件:

包含设备文件。

这些包括终端设备、USB或连接到系统的任何设备。例如:/dev/tty1、/dev/usbmon0

6、/proc – 进程信息

包含系统进程的相关信息。

这是一个虚拟的文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid}目录中包含的与特定pid相关的信息。

这是一个虚拟的文件系统,系统资源以文本信息形式存在。例如:/proc/uptime

7、/var – 变量文件

var代表变量文件,这个目录下可以找到内容可能增长的文件。

这包括 – 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

8、/tmp – 临时文件

包含系统和用户创建的临时文件。

当系统重启时,这个目录下的文件都将被删除。

9、/usr – 用户程序

包含二进制文件、库文件、文档和二级程序源代码。

/usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,在/usr/bin目录看看。例如:atd、cron、sshd、useradd、userdel。

/usr/lib中包含了/usr/bin和/usr/sbin用到的库。

/usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apach2中。

10、/home – Home目录

所有用户用home目录来存储他们的个人档案。

例如:/home/join、/home/nikita

11、/boot – 引导加载程序文件

包含引导加载程序相关文件。

内核的initrd、vmlinux、grub文件位于/boot下。

例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic、vmlinuz-2.6.32-24-generic

12、/lib – 库

包含支持位于/bin和/sbin下的二进制文件的库文件,库文件名为 id*或lib*.so.*

例如:Id-2.11.1.so,libncurses.so.5.7

13./opt – 可选的附加应用程序

opt代表opitional;

包含从个别厂商的附加应用程序。

附加应用程序应该安装在/opt/或者/opt/的子目录下。

14、/mnt – 挂载目录

临时安装目录,系统管理员可以挂载文件系统。

15、/media – 可移动媒体设备

用于挂载可移动设备的临时目录。

举例来说,挂载CD-ROM的media/cdrom,挂载软盘驱动器的/media/floppy;

16、/srv – 服务数据

srv代表服务。

包含服务器特定服务相关的数据,例如,/srv/cvs包含cvs相关的数据。

Linux四个主要组成部分

1、shell(壳,壳状物):

linux shell是一个程序,有了它,用户就能通过键盘输入来操作计算机了。

面向命令行的用户界面被称为CLI(CommandLineinterface)。

l  Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

l  Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。

l  Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

Linux提供了像MicrosoftWindows那样的可视的命令输入界面--XWindow的图形用户界面(GUI)。它提供了很多窗口管理器,其操作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。现在比较流行的窗口管理器是KDE和GNOME。每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。同Linux本身一样,Shell也有多种不同的版本。

1、 实用工具:

实用工具可分三类:   
编辑器:用于编辑文件。   
过滤器:用于接收数据并过滤数据。   
交互程序:允许用户发送信息或接收来自其他用户的信息。   
  Linux的编辑器主要有:Ed、Ex、Vi和Emacs。Ed和Ex是行编辑器,Vi和Emacs是全屏幕编辑器。 
  Linux的过滤器(Filter)读取从用户文件或其他地方的输入,检查和处理数据,然后输出结果。从这个意义上说,它们过滤了经过它们的数据。Linux有不同类型的过滤器,一些过滤器用行编辑命令输出一个被编辑的文件。另外一些过滤器是按模式寻找文件并以这种模式输出部分数据。还有一些执行字处理操作,检测一个文件中的格式,输出一个格式化的文件。过滤器的输入可以是一个文件,也可以是用户从键盘键入的数据,还可以是另一个过滤器的输出。过滤器可以相互连接,因此,一个过滤器的输出可能是另一个过滤器的输入。在有些情况下,用户可以编写自己的过滤器程序。  
  交互程序是用户与机器的信息接口。Linux是一个多用户系统,它必须和所有用户保持联系。信息可以由系统上的不同用户发送或接收。信息的发送有两种方式,一种方式是与其他用户一对一地链接进行对话,另一种是一个用户对多个用户同时链接进行通讯,即所谓广播式通讯。

3、文件系统:

l  使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。Linux目录采用多级树形结构,用户可以浏览整个系统,可以进入任何一个已授权进入的目录,访问那里的文件。

l  文件结构的相互关联性使共享数据变得容易,几个用户可以访问同一个文件。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中,有时被指定为系统目录。

4、内核:
  内核,Shell和文件结构一起形成了基本的操作系统结构。它们使得用户可以运行程序,管理文件以及使用系统。此外,Linux操作系统还有许多被称为实用工具的程序,辅助用户完成一些特定的任务。

  Linux防火墙工具—iptables,它完全免费、功能强大、使用灵活、可以对流入和流出的信息进行细化控制,并且能在 低配置机器上很好地运行;

  mplayer是linux下速度最快的多媒体播放器,占用系统资源较小,对于配置较低的机器来说很合适;

Linux常用命令

ls pwd cd touch rm mkdir tree cp mv cat more grep echo

1.如何查看剩余内存

在Linux下面,我们常用Top命令来查看系统进程,top也能显示系统内存,但我们常用的linux

下查看内存额的专用工具是free命令;

2.如何查看端口是否被占用

1、sudo netstat -anp |grep 端口号

普通用户加sudo,root用户不加

2、netstat -nultp(此处不用加端口号)

改命令是查看当前所有已经使用的端口情况;

3、netstat -anp |grep 82

查看82端口的使用情况;

3.如何查看一个程序的PID以及它的所有子进程

PID(Process Identifiler)进程控制符;

PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二佛如PID。进程中止后PID被系统回收,可能会被分配给新运行的程序;

在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”

经典的命令行工具,如ps或top,都可以用来显示线程级别的信息,只是默认情况下它们显示进程级别的信息;

1、 利用进程名获取进程号(以syslog为例)

ps -ef|grep syslog|grep -v“grep”|awk’{print $2}’

2、 利用进程号查看该进程下的线程

ps -eLf|grep 722|grep -v “grep”

grep的输出都会有grep自身这个程序在,用grep -v“grep”可以把这一行干掉,akw‘{print $2}’就是打印第二列数字;

ps -T -p 722

输出SPID即是线程号;

3、 利用top -H -p 722查看线程cpu利用率;

4、 pstree -p 722(树状图显示)

4.如何为一个目录下的所有文件添加权限

 

5.如果你对一个目录具有写权限,那么你是否具有对这个目录下的所有文件具有删除权限?

 

6.对Linux多路复用的理解

 

7.修改IP地址的方法

 

前途是光明的,道路是曲折的,这是人们常说的一句话,事实也的确如此,不经历风雨哪能见彩虹。前行的路必然不会一路平坦,但只要方向正确,只要还有毅力,还能坚持下去,就要继续前行。唯有这样才能创造属于自己的奇迹。

Linux命令大全(手册)

    1.文件管理

       ls - 显示指定工作目录下的内容及属性信息

       mkdir - 创建目录

       cp - 复制文件或目录

       pwd - 显示文件路径

       mv - 移动或改名文件

    2.文档编辑

       cat - 在终端设备上显示文件内容

       echo - 输出字符串或提取Shell变量的值

       rm - 移除文件或目录

       tail - 查看文件尾部内容

       rmdir - 删除空目录

    3.系统管理

       startx - 初始化X-windows

       vmstat - 显示虚拟内存状态

       rpm - RPM软件管理包

       find - 查找和搜索文件

       uname - 显示系统信息

    4.磁盘管理

       df - 显示磁盘空间使用情况

       fdisk - 磁盘分区

       hdparm - 显示与设定硬盘参数

       lsblk - 查看系统的磁盘

       vgextend - 扩展卷组

    5.文件传输

       tftp - 上传及下载文件

       curl - 文件传输工具

       fsck - 检查并修复Linux文件系统

       ftpwho - 显示ftp会话信息

       iprm - 删除打印队列中的打印任务

    6.网络通信

       ssh - 安全连接客户端

       ping - 测试主机间网络连通性

       netstat - 显示网络状态

       ifconfig - 显示或设置网络设备

       ss - 显示活动套接字信息

    7.设备管理

       mount - 文件系统挂载

       MAKEDEV - 建立设备

       setleds - 设定键盘上方三个LED的状态

       lspci - 显示当前设备所有PCI总线信息

       sensors - 检测服务器内部温度及电压

    8.备份压缩

       zipinfo - 查看压缩文件信息

       gzip - 压缩和解压文件

       unarj - 解压.arj文件

       zip - 压缩文件

       unzip - 解压缩zip文件

    9.其它命令

       hash - 显示与清楚命令运行时查询的哈希表

       bc - 浮点运算

       wait - 等待指令

       rmmod - 删除模块

       history - 显示与操纵历史命令

系统监控:

    1.free - 显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存

    2.ulimit - 显示系统资源限制的信息

    3.top - 实时动态地查看系统的整体运行情况,是一个综合了多方信息检测系统性能和运行信息的实用工具

    4.df -

    5.ps - 查看进程统计信息

文件操作

    1.tail - 查看文件的内容

    2.ll -ah 查看文件情况

网络通信:

    netstat - 用于监控进出网络的包和网络接口统计的命令行工具

    重启网络 - service network restart

    SELinux - Security-Enhanced Linux,功能类似防火墙,不过安全相对比较好

    防火墙 -

系统管理:

    uname - 查看内核版本

    ip addr - 查看linux的ip地址++

操作系统

l  常见Linux命令;

l  进程/线程;

l  内存管理;

防火墙端口防护:指通过对防火墙的端口开关的设置,关闭一些非必需端口,达到一定安全防护目的行为。

计算机网络、分布式计算机系统

都具有通信和资源共享的功能,两者在计算机硬件连接、系统拓朴结构和通信控制等方面基本都是一样的。

分布式计算机系统:在分布式计算机操作系统支持下,进行分布式数据库处理的,也就是说各互联的计算机可以互相协调工作,共同完成一项任务,多台计算机上并行运行。且具有透明性,用户不知道数据、资源的具体位置,整个网络中所有计算机就像是一台计算机一样;而计算机网络却不具备这种功能,计算机网络系统中的各计算机通常是各自独立进行工作的。

简述多线程、多进程

进程:

1、操作系统进行资源分配和调度的基本单位,多个进程之间相互独立

2、稳定性好,如果一个进程崩溃,不影响其他进程,但是进程消耗资源大,开启的进程数量有限制

线程:

1、CPU进行资源分配和调度的基本单位,线程是进程的一部分,是比进程更小的能独立运行的基本单位,一个进程下的多个线程可以共享该进程的所有资源

2、如果IO操作密集,则可以多线程运行效率高,缺点是如果一个线程崩溃,都会造成进程的崩溃

应用:

IO密集的用多线程,在用户输入,sleep时候,可以切换到其他线程执行,减少等待的时间CPU密集的用多进程,因为假如IO操作少,用多线程的话,因为线程共享一个全局解释?锁,当前运行的线程会霸占GIL,其他线程没有GIL,就不能充分利用多核CPU的优势

进程、线程与协程,并行与并发,异步与非阻塞等概念;

进程:是资源分配的最小单位;

²  调度由操作系统完成;

²  进程空间独立,数据安全性好,有专门的进程间通信方法

²  进程的创建和删除要比线程消耗更多的计算机资源

²  有独立的内存空间(上下文切换的时候需要保存栈、cpu寄存器、虚拟内存、以及打开的相关句柄等信息,开销大)

线程:是程序执行的最小单位(资源调度最小单位);

²  一个进程可以有多个线程,每个线程会共享父进程的资源(创建线程开销占用比进程小很多,可创建的数量也会很多)

²  线程的使用会给系统带来上下文切换的额外负担;

²  一个进程可以包含多个线程,线程共享进程的资源空间

协程:

²  调度完全由用户控制;

²  一个线程(进程)可以有多个协程;

²  每个线程(进程)循环按照指定的任务清单顺序完成不同的任务(当任务被堵塞时,执行下一个任务;当恢复时,再回来执行这个任务;任务间切换只需要保存任务的上下文,没有内核的开销,可以不加锁的访问全局变量)

²  协程需要保证是非堵塞的且没有相互依赖

²  写成基本上不能同步通讯,多采用异步的消息通讯,效率比较高;

协程,为何比线程还快;

高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理。

协程能保留上一次调用的状态,管是进程还是线程,每次阻塞、切换都需要陷入系统调用,使用线程时需要非常小心地处理同步问题,二协程完全不存在这个问题。

协程与线程进行比较:

1)一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样Python中则能使用多核CPU。

2)线程进程都是同步机制,而协程则是异步

3)协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态

进程与线程比较:线程是指进程内的一个执行单元,也是进程内的可调度实体。线程与进程的区别:

1)地址空间:线程是进程内的一个执行单元,进程内至少有一个线程,它们共享进程的地址空间,

而进程有自己独立的地址空间

2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源

3)线程是处理器调度的基本单位,但进程不是

4)二者均可并发执行

5)每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,

但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

²  线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点;

²  多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

异步、非阻塞?

同步异步指的是在客户端

同步意味着客户端提出了一个请求以后,在回应之前只能等待

异步意味着客户端提出一个请求以后,还可以继续提其他请求,不管有无结果

阻塞非阻塞指的是服务器端

阻塞意味着服务器接受一个请求后,在返回结果以前不能接受其他请求

非阻塞意味着服务器接受一个请求后,尽管没有返回结果,还是可以继续接受其他请求

并发、并行?

并行是指同一时刻同时做多件事情,而并发是指同一时间间隔内做多件事情;

并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

并发的实质是一个物理CPU(也可以多个物理CPU)在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

并行,是每个CPU运行一个程序。

多进程和多线程的区别;CPU密集型适合用什么;

多线程:在单个程序中同时运行多个线程完成不同额工作,称为多线程。线程共享内存空间;进程的内存是独立的,同一个进程的线程之间可以直接交流;两个进程想通信,必须通过一个中间代理来实现,一个线程可以控制和操作同一进程里的其它线程;但是进程只能操作子进程;

优缺点:1、多进程的优点是稳定性好,一个子进程崩溃了,不会影响主进程以及其余进程。但是缺点是创建进程的代价非常大,因为操作系统要给每个进程分配固定的资源。2、多线程优点是小路较高一些,但是致命的缺点是任何一个线程崩溃都可能造成整个进程的崩溃,因为他们共享了进程的内存资源池。

*CPU密集型适合用多进程开发

CPU密集型、I/O密集型

CPU密集型(CPU-bound

CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写 I/O (硬盘/内存),I/O在很短的时间内就可以完成,而CPU还有许多运算需要处理,CPU Loading很高.

在多重程序系统中,大部分时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound.例如一个计算圆周率至小数点一千位一下的程序,在执行的过程中绝大部分的时间用在三角函数和开根号的计算,便是属于CPU bound的程序.

CPU bound的程序一般而言CPU占有率相当高.这可能是因为任务本身不太需要访问I/O设备,也可能是因为程序是多线程实现因此屏蔽了等待I/O的时间.

I/O密集型(I/O bound

IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,因此,系统运作,大部分情况是CPU在等I/O(磁盘/内存)的读/写操作,此时CPU Loading并不高.

I/O bound的程序一般在达到性能极限时,CPU占用率仍然较低.这可能是因为任务本身需要大量I/O操作,而pipeline做得不是很好,没有充分利用处理器能力.

CPU密集型 vs IO密集型

我们可以把任务分为计算机密集型和IO密集型.

计算密集型任务的特点是要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力.这种计算密集型任务虽然也可以多任务完成,但是任务越多,花在任务切换的时间越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行数量应当等于CPU的核心数.

计算密集型任务由于主要消耗CPU资源,因此,代码运行效率至关重要.Python这样的脚本语言运行效率很低,完全不适合计算密集型任务.对于计算密集型任务,最好用C语言编写.

第二种任务的类型是IO密集型,涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU的内存和速度).对于IO密集型任务,任务越多,CPU效率越高,但也有一个限度.常见的大部分任务都是IO密集型任务,比如Web应用.

IO密集型任务执行期间,99%的时间都花在IO上,花在CPU上的时间很少,因此,用运行速度极快的C语言替换用Python这样运行速度极低的脚本语言,完全无法提升运行效率.对于IO密集型任务,最适合的语言就是开发效率最高(代码量最少)的语言,脚本语言是首选,C语言最差.

总之,计算密集型程序适合C语言多线程,I/O密集型适合脚本语言开发的多线程.

进程管理工具(Supervisor)

Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

SSH

SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露.最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑.1995年,芬兰学者TatuYlonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置.

SSH之所以能够保证安全,原因在于它采用了公钥加密.整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户.(2)用户使用这个公钥,将登录密码加密后,发送回来.(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录.
    这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪.因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的.可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码.再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了.这种风险就是著名的"中间人攻击"(Man-in-the-middleattack).

 

Linux - 基础

标签:命令   变换   img   free命令   统计信息   搜索   位置   ssh   高速缓存   

原文地址:https://www.cnblogs.com/qingaoaoo/p/12340787.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!