Linux高阶知识【挂载,yum源,克隆,免密登陆】

Linux-高阶知识

目录

1、Httpd服务... 1

2、系统管理... 2

2.1、挂载外部设备... 2

2.2、统计文件或者文件夹大小... 3

2.3、系统服务管理... 4

2.4、修改系统时间... 4

3、软件安装... 5

4、配置本地YUM源... 7

5、进程管理... 8

5.1、进程概念... 8

5.2、进程状态... 8

5.3、进程管理常用操作... 9

5.3.1、PS命令... 9

5.3.2、kill/pidof/pkill命令... 10

5.3.3、进程切换... 10

5.3.4、top命令... 11

5.3.5、pstree命令... 11

5.3.6、JPS命令... 12

6、计划任务... 12

6.1、概念... 12

6.2、命令服务管理crontab. 12

6.3、crontab功能使用... 13

7、克隆虚拟机... 14

8、SSH免密登录配置... 14

 

1、Httpd服务

  1. 先检查本机的httpd服务是否开启,使用命令:

service --status-all | grep httpd

 

  1. 开启httpd服务

为确保是否开启成功,请再重新检查一次

 

  1. 我们进入到/var/www/html目录下,新建一个huangbo.html文件,往文件里加入一个字符串”huangbo wangbaoqiang xuzheng”,然后保存

cd /var/www/html

vi huangbo.html

 

  1. 在windows系统中,打开浏览器,在url地址栏输入:http://192.168.123.202/huangbo.html
    看看是不是能看到我们往里加入到文件当中的字符串:huangbo wangbaoqiang xuzheng,如果看到如下效果,则证明httpd服务使用成功

 

  1. 在我们进入到/var/www/html目录下,新建一个mingxing文件夹,往文件夹新建一个文件wangbaoqiang.jpg,然后保存,访问http://192.168.123.202/mingxing

2、系统管理

2.1、挂载外部设备

挂载是一个非常重要的功能,使用非常频繁。它指将一个设备(通常是存储设备,可以挂载光盘、硬盘、磁带、光盘镜像文件等)挂接到一个已存在的目录上(这个目录可以不为空,但挂载后这个目录下以前的内容将不可用)。

 

需要理解的是,Linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。

 

挂载需要有挂载源挂载点

 

  1. 挂载光驱

在常用挂载目录/mnt下创建一个目录cdrom用来进行挂载:

mkdir /mnt/cdrom

将挂载源设备/dev/cdrom挂载到该挂载点(/mnt/cdrom)上:

mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/

 

ln -s /mnt/cdrom /var/html/cdrom(软连接)

 

注:-t:文件系统类型,iso9660表示光盘或者光盘镜像

    -o:挂载方式,ro表示以只读方式,loop表示把挂载的设备当做一个磁盘分区

 

  1. 挂载光盘镜像文件(.iso文件)

我们准备一个镜像文件:CentOS-6.7-x86_64-bin-DVD1.iso

再准备一个挂载目录:mkdir /mnt/centos

mount -t iso9660 -o loop /root/CentOS-6.7-x86_64-bin-DVD1.iso /mnt/centos

 

  1. 挂载的资源在重启后即失效,需要重新挂载。要想自动挂载,可以将挂载信息设置到/etc/fstab配置文件中,如下:

/dev/cdrom                         /mnt/cdrom  iso9660  defaults          0 0

/root/CentOS-6.7-x86_64-bin-DVD1.iso   /mnt/centos  iso9660  defaults,ro,loop   0 0

 

第一列:/dev/cdrom:挂载源,要挂在的磁盘分区或者存储设备,或者文件系统

第二列:/mnt/cdrom:挂载点,挂载位置

第三列:iso9660:文件系统类型,ext4文件系统,swap表示交换分区,……

第四列:defaults:挂载参数

第五列:0:表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份。如果是0,dump就会被忽略,事实上大多数的dump设置都是0

第六列:0:读取文件系统时候的检查顺序,允许的数字是0,1,2,根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为2,0表示不检查

 

  1. 卸载,使用umount命令

umount /mnt/cdrom                     

2.2、统计文件或者文件夹大小

  1. 存储空间查看

df -h

 

  1. 统计指定路径下的所有子目录和文件的大小

du -sh  /mnt/cdrom/packages

2.3、系统服务管理

1、跟服务相关的基本使用命令:

service --status-all   # 查看系统所有的后台服务进程

service sshd status   # 查看指定的后台服务进程的状态

service sshd stop    # 停止

service sshd start    # 开始

service sshd restart   # 重启

 

2、配置后台服务进程的开机自启

chkconfig httpd on  ## 让httpd服务开机自启

chkconfig httpd off  ## 让httpd服务开机不要自启

[root@hadoop01 mnt]# chkconfig httpd off

[root@hadoop01 mnt]# chkconfig --list | grep httpd

httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

[root@hadoop01 mnt]# chkconfig --level 35 httpd on

[root@hadoop01 mnt]# chkconfig --list | grep httpd

httpd           0:off   1:off   2:off   3:on    4:off   5:on    6:off

2.4、修改系统时间

  1. 查看系统当前时间和时区

查看时间:下面两种都OK

[root@hadoop01 ~]# date -R

[root@hadoop01 ~]# date

[root@hadoop01 ~]# date '+%Y-%m-%d %H:%M:%S'

 

查看时区:cat /etc/sysconfig/clock

 

  1. CentOS中时区是以文件形式存在,当前正在使用的时区文件位于

/etc/localtime

其他时区文件则位于

/usr/share/zoneinfo

其中中国时区使用

/usr/share/zoneinfo/Asia/Shanghai

则,更改时区的话,直接使用如下命令就OK

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

PS:如果没有Asia/Shanghai时区文件,请使用tzselect命令去生成时区文件,生成好的时区文件就在/usr/share/zoneinfo目录下

 

  1. 我们一般使用”date -s”命令来修改系统时间

[root@hadoop01 ~]# date -s 12/25/2016

[root@hadoop01 ~]# date -s 19:57:30

[root@hadoop01 ~]# date -s “2016-12-25 19:57:30”

 

  1. 每次都手动来修改,比较麻烦,这里教大家一个简单的方法,用来同步网络时间。使用命令:

[root@hadoop01 ~]# ntpdate time.nist.gov

[root@hadoop01 ~]# ntpdate 202.120.2.101

上海交通大学网络中心NTP服务器地址:202.120.2.101ntp.sjtu.edu.cn

中国国家授时中心服务器地址:cn.pool.ntp.org

若以上提供的网络时间服务器不可用,请自行上网寻找可用的网络时间服务器

 

  1. 现在告诉大家一个一劳永逸的方法
  1. 使用命令:crontab -e

[root@hadoop01 ~]# crontab -e

crontab的使用后面会有详细讲解

 

  1. 然后往里加入一行内容

*/10 * * * * ntpdate 202.120.2.101

上面的配置表示,每隔十分钟从202.120.2.101该时间服务器同步一次时间。

 

  1. 保存退出即可

3、软件安装

1、二进制发布包

软件已经针对具体平台编译打包发布,只要解压,修改配置即可

演示过程见JDK安装文档”资料-jdk安装

或者参考Linux系统中的Tomcat的安装

 

2、RPM发布包

软件已经按照RedHat(Redhat Package Manager)的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用rpm命令进行安装

演示过程见MySQL安装文档”资料-MySQL安装

 

常用命令:

1、安装包:rpm -ivh 包名

参数:

-i :安装的意思

-v :可视化

-h :显示安装进度

另外在安装一个rpm包时常用的附带参数有:

--force 强制安装,即使覆盖属于其他包的文件也要安装

--nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包

 

2、升级包:rpm -Uvh filename

-U 升级

 

3、卸载包rpm -e filename (这里的filename是通过rpm的查询功能所查询到的)

 

4、查询一个包是否安装:rpm -q  包名(这里的包名,是不带有平台信息以及后缀名的)

 

5.查询当前安装的所有rpm包:rpm -qa

查询当前安装的和sql相关的包:rpm -qa | grep 'sql'

查询sqlite安装路径:rpm -ql sqlite

 

3、Yum在线安装

YumYellow dog Updater, Modified)是一个在CentOS和RedHat以及SUSE中的Shell前端软件包管理器。比如软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上存在的rpm软件,并且会自动解决软件安装过程中的库依赖问题(注:类似于maven),yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记

 

yum仓库服务器本质上就是一台http服务器,服务器的目录中放置了rpm包,及rpm包的索引信息文件,即可为yum客户端提供rpm文件下载

安装示例:yum install nc

 

yum命令工具使用举例

yum update 升级系统

yum install ~ 安装指定软件包

yum update ~ 升级指定软件包

yum remove ~ 卸载指定软件

 

4、源码编译安装

软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署

安装示例:资料-Redis的安装

4、配置本地YUM源

  1. 准备一个http服务器,这里我们已经配置好了httpd的服务,如果系统不自带,请自行安装,可以使用命令在线安装:

yum install -y httpd

 

  1. 安装好了,或者重新安装完成后,检查httpd的运行状态

service httpd status

 

  1. 在httpd服务的web目录中放入rpm库,

比如,将centos安装光盘中的rpm库放入:

mkdir  /var/www/html/centos

cp  -r /mnt/cdrom/*   /var/www/html/centos/          

注:上面这种方式比较浪费空间,可以不用拷贝,其实只要创建一个软连接即可

ln -s /mnt/cdrom   /var/www/html/centos

 

  1. 用浏览器访问一下httpd服务,看看是不是能看到这些东西

地址:http://192.168.123.202/centos

 

  1. 配置yum客户端repo地址文件

将本地http服务器加入repo地址

首先,将内置的源全部disable掉

cd /etc/yum.repos.d/

rename .repo .repo.bak *

然后,新建一个repo源:

vi  CentOS-Local.repo

[CentOS-Local]

name=CentOS-Local

baseurl=http://192.168.123.202/centos/cdrom0

       http://192.168.123.202/centos/cdrom1

gpgcheck=0

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

 

接下来,我们检查我们自定义的源是否生效,使用命令:yum repolist

 

  1. 再接下来,就可以使用yum像从公网安装软件一样在内网服务器上下载软件进行安装了

yum install -y 你要的软件

 

7、补充:

国内有名的Yum源:

网易:

         CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo

CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo

CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo

5、进程管理

5.1、进程概念

进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。

 

子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程

5.2、进程状态

进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。

 

5.3、进程管理常用操作

5.3.1、PS命令

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

ps 命令常用选项包括:

1、a显示所有用户的进程

2、u显示用户名和启动时间

3、x显示所有进程,包括没有控制终端的进程

4、e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略

5、l显示进程详细信息,按长格式显示

 

常用组合

ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息

ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息

ps -el 按长格式显示进程详细信息

 

以上命令执行结果中可能出现的一个字段含义:

USER: 进程所有者

PID: 进程号

PPID: 进程的父进程ID

%CPU:  CPU占用率

C: 进程的CPU占用率

%MEM: 内存占用率

VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;

RSS: 指明了当前实际占用了多少内存;

TTY: 终端的次要装置号码 (minor device number of tty)

F:进程的标志

S:进程的状态

STAT: 该进程程的状态,有以下值

D: 不可中断的静止

R: 正在执行中

S: 静止状态

T: 暂停执行

Z: 不存在但暂时无法消除

W: 没有足够的记忆体分页可分配

<: 高优先序的进程

N: 低优先序的进程

L: 有记忆体分页分配并锁在记忆体内

PRI:进程的优先权

NI:进程的Nice值

ADDR:进程的地址空间

SZ:进程占用内存的大小

WCHAN:进程当前是否在运行

TTY:进程所属终端

START: 进程开始时间

TIME: 执行的运行时间

COMMAND:所执行的指令

CMD:进程的命令

5.3.2、kill/pidof/pkill命令

有时候某个进程可能会长期占用CPU资源或无法正常执行或超出运行时间等,此时可能希望人工干预直接将进程杀死,这时候kill命令可以派上用场

 

1、kill pid  直接杀死进程,但不能保证一定能杀死

2、kill -9 pid  强制杀死进程

 

3、pidof命令用于查看某个进程的进程号(例如:pidof mysqld)

 

4、pkill命令可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉

5.3.3、进程切换

前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行

 

1、ctrl + c 终止进程

2、ctrl + z 挂起进程

3、fg命令将进程转换到前台执行

4、bg命令将进程转换到后台执行

5、jobs命令查看任务

5.3.4、top命令

Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程。

按q键退出查看

5.3.5、pstree命令

将进程间的关系以树结构的形式展示,能清楚看各进程之间的父子关系

pstree :以树状形式显示进程

pstree -p : 以树状形式显示进程,并且显示进程号

5.3.6、JPS命令

JPS命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。不是linux系统自带的。主要任务就是用来检查java进程的。

6、计划任务

6.1、概念

计划任务在Linux的体现主要分为at和crontab,其中:

 

at:通过at命令安排任务在某一时刻执行一次

 

crontab:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

6.2、命令服务管理crontab

在CentOS系统上,crontab服务的名称叫做crond

 

1、安装

yum -y install crontabs

 

2、服务操作说明

service crond start                ## 启动服务

service crond stop                 ## 关闭服务

service crond restart               ## 重启服务

service crond reload              ## 重新载入配置

service crond status                ## 服务状态

 

## 查看crontab服务是否已设置为开机启动,执行命令:

chkconfig --list

 

## 加入开机自动启动:

chkconfig --level 35 crond on

6.3、crontab功能使用

1、命令格式

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

 

参数说明:

-u user:用来设定某个用户的crontab服务,例如,”-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

 

命令示例:

crontab file [-u user]         ## 用指定的文件替代目前的crontab。

 

必须掌握:

crontab -l [-u user]                   ## 列出用户目前的crontab.

crontab -e [-u user]                 ## 编辑用户目前的crontab.

 

补充:通过crontab添加的计划任务都会存储在/var/spool/cron/目录里

 

2、配置说明

基本格式 :

*  *  *  *  *  command

分  时  日  月  周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时0~23(0表示0点) 7-9表示:7点到9点之间

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

 

  1. 配置示例

*/1 * * * * date >> /root/date.txt

上面的例子表示每分钟执行一次date命令

 

30 21 * * * /usr/local/etc/rc.d/httpd restart

上面的例子表示每晚的21:30重启apache

 

45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache

 

10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart

上面的例子表示每周六、周日的1 : 10重启apache

 

0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache

 

0 23 * * 6 /usr/local/etc/rc.d/httpd restart

上面的例子表示每星期六的11 : 00 pm重启apache

 

* */1 * * * /usr/local/etc/rc.d/httpd restart

上面的例子每一小时重启apache

 

* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart

上面的例子晚上11点到早上7点之间,每隔一小时重启apache

 

0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart

上面的例子每月的4号与每周一到周三的11点重启apache

 

0 4 1 jan * /usr/local/etc/rc.d/httpd restart

上面的例子一月一号的4点重启apache

7、克隆虚拟机

见文档”资料-vmware克隆虚拟机

8、SSH免密登录配置

  1. SSH概念

SSH为Secure Shell(安全外壳协议)的缩写,简单说,SSH只是一种网络协议,用于计算机之间的加密登录,很多ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而SSH就是专为远程登录会话和其他网络服务提供安全性的协议。

 

SSH是由客户端和服务端的软件组成的

服务端是一个守护进程(sshd),他在后台运行并响应来自客户端的连接请求。

客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

 

  1. SSH认证机制

从客户端来看,SSH提供两种级别的安全验证。

 

第一种级别(基于口令的安全验证)

只要你知道自己帐号和口令,就可以登录到远程主机。

 

第二种级别(基于密钥的安全验证)

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密”质询”(challenge)并把它发送给客户端软件。客户端软件收到”质询”之后就可以用你的私人密匙解密再把它发送给服务器。

 

原理图:

 

  1. 配置SSH认证机制

假如A要登录B:

 

在A上进行操作:

  1. 首先生成密钥对,使用命令:

ssh-keygen

或者

ssh-keygen -t rsa

上面一种是它的简写形式,提示要输入信息的时候不用输入任何东西,直接回车三次就OK

上述命令执行完成之后,会生成这么两个文件,其中id_rsa.pub是公钥

 

  1. 将A自己的公钥放置到授权列表文件authorized_keys中

cat id_rsa.pub > authorized_keys

或者

cp id_rsa.pub authorized_keys

 

  1. 将得到的authorized_keys发送给B机器对应的文件夹下
    scp -r authorized_keys [email protected]:$PWD

或者

scp -r authorized_keys [email protected]:/root/.ssh/

这是一个远程拷贝命令,意思是把authorized_keys拷贝到192.168.123.202这台机器对应目录下

 

  1. 这样我们的机器A就能访问到机器B了。验证方法使用命令:

ssh 192.168.123.202

 

重点理解之处:A将公钥发给B,不是B可以访问A,而是A可以访问B,所以任何一台机器想要能访问其他机器,那么就把自己的公钥内容发送到别的机器的authorized_keys中去,记住,是追加,不是覆盖

 

你可能感兴趣的:(Linux)