Linux里面 stricthostkeychecking=no作用是什么?

作者&投稿:豆拜 (若有异议请与网页底部的电邮联系)
Linux里面vmstat命令作用是什么?~

11.5 vmstat:虚拟内存统计
11.5.1 命令详解
【命令星级】 ★★★★☆
【功能说明】
vmstat是Virtual Memory Statistics(虚拟内存统计)的缩写,利用vmstat命令可以对操作系统的内存信息、进程状态和CPU活动等进行监视。但是只能对系统的整体情况进行统计,无法对某个进程进行深入分析。
【语法格式】
vmstat [option] [delay [ count]]
vmstat [选项] [时间间隔[次数]]
说明:1)在vmstat命令及后面的选项里,每个元素之间都至少有一个空格。
2)delay表示两次输出之间的间隔时间。
3)count表示按照delay指定的时间间隔统计的次数。
【选项说明】
表11-4针对该命令的参数选项进行了说明。


11.5.2 使用范例
范例11-12:显示虚拟内存使用情况。
[root@oldboy ~]# vmstat #<==如果省略“间隔时间”和“次数”参数,则仅显示一次报告后就退出
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71756 38600 279084 0 0 24 6 15 18 0 0 100 0 0
[root@oldboyedu ~]# vmstat 5 #<==表示每5秒钟更新一次输出信息,循环输出,按Ctrl+C组合键停止输出。
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 8 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 9 0 0 100 0 0
^C
[root@oldboyedu ~]# vmstat 5 6 #<==表示每5秒更新一次输出信息,统计6次后停止输出。
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 8 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
[root@oldboy ~]#
以下是命令结果说明。
第1列:procs。
q r列表示运行和等待CPU时间片的进程数。
q b列表示在等待资源的进程数。
第2列:memory。
q swpd列表示使用虚拟内存大小。
q free列表示当前空闲的物理内存数量。
q buff列表示buffers 的内存数量。
q cache列表示cache的内存数量。
第3列:swap。
q si(swap in)列表示由磁盘调入内存,也就是内存进入内存交换区的数量。
q so(swap out)列表示由内存调入磁盘,也就是内存交换区进入内存的数量。
第4列:I/O项显示磁盘读写状况。
q bi列表示从块设备读入数据的总量(即读磁盘)(块/s)。
q bo列表示写入到块设备的数据总量(即写磁盘)(块/s)。
第5列:system显示采集间隔内发生的中断数。
q in列表示在某一时间间隔中观测到的每秒设备中断数。
q cs列表示每秒产生的上下文切换次数。
第6列:CPU项显示了CPU的使用状态。
q us列显示了用户进程消耗的CPU时间百分比。
q sy列显示了系统(内核)进程消耗的CPU时间百分比。
q id列显示了CPU处在空闲状态的时间百分比。
q wa列显示了IO等待所占用的CPU时间百分比。
q st列显示了虚拟机占用的CPU时间的百分比。
范例11-13:显示活跃和非活跃内存。
[root@oldboy ~]# vmstat -a 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 71804 160408 165848 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 160408 165844 0 0 0 0 11 11 0 0 100 0 0
0 0 0 71756 160408 165844 0 0 0 0 12 9 0 0 100 0 0
0 0 0 71608 160412 165672 0 0 0 1302 218 341 12 9 80 0 0
0 0 0 71608 160412 165672 0 0 0 0 10 9 0 0 100 0 0
使用-a选项显示活跃和非活跃内存时,所显示的内容除增加了inact和active外,其他显示内容与范例11-12相同。
在Memory列增加的inact和active两列,说明如下。
q inact: 非活跃内存大小(当使用-a选项时显示)。
q active: 活跃的内存大小(当使用-a选项时显示)。
范例11-14:查看内存使用的详细信息。
[root@oldboy ~]# vmstat -s
486640 total memory
414572 used memory
165656 active memory
160420 inactive memory
72068 free memory
……
这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。
范例11-15:查看磁盘的读/写。
[root@oldboy ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
……
sr0 0 0 0 0 0 0 0 0 0 0
sda 14667 3623 594388 6737 12864 32806 365372 44250 0 30
这些信息主要来自于/proc/diskstats。其中的merged表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作。
范例11-16:查看/dev/sda1磁盘的读写统计信息。
[root@oldboy ~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
502 4162 14 68
这些信息主要来自于/proc/diskstats。各列的说明如下。
q reads:来自于这个分区的读的次数。
q read sectors:来自于这个分区的读扇区的次数。
q writes:来自于这个分区的写的次数。
q requested writes:来自于这个分区的写请求次数。
摘自:
跟老男孩学Linux运维:核心系统命令实战 第11章 版权归原作者所有

nohup/setsid/&
场景:
如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?

hangup 名称的来由
在 Unix 的早期版本中,每个终端都会通过 modem 和系统通讯。当用户 logout 时,modem 就会挂断(hang up)电话。 同理,当 modem 断开连接时,就会给终端发送 hangup 信号来通知其关闭所有子进程。
解决方法:
我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

1. nohup
nohup 无疑是我们首先想到的办法。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号。让我们先来看一下 nohup 的帮助信息:
NOHUP(1) User Commands NOHUP(1)

NAME
nohup - run a command immune to hangups, with output to a non-tty

SYNOPSIS
nohup COMMAND [ARG]...
nohup OPTION

DESCRIPTION
Run COMMAND, ignoring hangup signals.

--help display this help and exit

--version
output version information and exit

可见,nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。
nohup 示例
[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@pvcent107 ~]#

2。setsid
nohup
无疑能通过忽略 HUP 信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受 HUP
信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响了。setsid 就能帮助我们做到这一点。让我们先来看一下 setsid
的帮助信息:
SETSID(8) Linux Programmer’s Manual SETSID(8)

NAME
setsid - run a program in a new session

SYNOPSIS
setsid program [ arg ... ]

DESCRIPTION
setsid runs a program in a new session.

可见 setsid 的使用也是非常方便的,也只需在要处理的命令前加上 setsid 即可。
setsid 示例
[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 31094 1 0 07:28 ? 00:00:00 ping www.ibm.com
root 31102 29217 0 07:29 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

值得注意的是,上例中我们的进程 ID(PID)为31094,而它的父 ID(PPID)为1(即为 init 进程 ID),并不是当前终端的进程 ID。请将此例与nohup 例中的父 ID 做比较。
3。&
这里还有一个关于 subshell 的小技巧。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是其中之一。
当我们将"&"也放入“()”内之后,我们就会发现所提交的作业并不在作业列表中,也就是说,是无法通过jobs来查看的。让我们来看看为什么这样就能躲过 HUP 信号的影响吧。
subshell 示例
[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 16270 1 0 14:13 pts/4 00:00:00 ping www.ibm.com
root 16278 15362 0 14:13 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

从上例中可以看出,新提交的进程的父 ID(PPID)为1(init 进程的 PID),并不是当前终端的进程 ID。因此并不属于当前终端的子进程,从而也就不会受到当前终端的 HUP 信号的影响了。
回页首
disown
场景:
我们已经知道,如果事先在命令前加上 nohup 或者 setsid 就可以避免 HUP 信号的影响。但是如果我们未加任何处理就已经提交了命令,该如何补救才能让它避免 HUP 信号的影响呢?

解决方法:
这时想加 nohup 或者 setsid 已经为时已晚,只能通过作业调度和 disown 来解决这个问题了。让我们来看一下 disown 的帮助信息:

disown [-ar] [-h] [jobspec ...]
Without options, each jobspec is removed from the table of
active jobs. If the -h option is given, each jobspec is not
removed from the table, but is marked so that SIGHUP is not
sent to the job if the shell receives a SIGHUP. If no jobspec
is present, and neither the -a nor the -r option is supplied,
the current job is used. If no jobspec is supplied, the -a
option means to remove or mark all jobs; the -r option without
a jobspec argument restricts operation to running jobs. The
return value is 0 unless a jobspec does not specify a valid
job.

可以看出,我们可以用如下方式来达成我们的目的。
灵活运用 CTRL-z

我们的日常工作中,我们可以用 CTRL-z 来将当前进程挂起到后台暂停运行,执行一些别的操作,然后再用 fg 来将挂起的进程重新放回前台(也可用
bg
来将挂起的进程放在后台)继续运行。这样我们就可以在一个终端内灵活切换运行多个任务,这一点在调试代码时尤为有用。因为将代码编辑器挂起到后台再重新放
回时,光标定位仍然停留在上次挂起时的位置,避免了重新定位的麻烦。
用disown -h jobspec来使某个作业忽略HUP信号。
用disown -ah 来使所有的作业都忽略HUP信号。
用disown -rh 来使正在运行的作业忽略HUP信号。
需要注意的是,当使用过 disown 之后,会将把目标作业从作业列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它。
但是还有一个问题,这种方法的操作对象是作业,如果我们在运行命令时在结尾加了"&"来使它成为一个作业并在后台运行,那么就万事大吉了,我们可以通过jobs命令来得到所有作业的列表。但是如果并没有把当前命令作为作业来运行,如何才能得到它的作业号呢?答案就是用 CTRL-z(按住Ctrl键的同时按住z键)了!
CTRL-z 的用途就是将当前进程挂起(Suspend),然后我们就可以用jobs命令来查询它的作业号,再用bg jobspec来将它放入后台并继续运行。需要注意的是,如果挂起会影响当前进程的运行结果,请慎用此方法。
disown 示例1(如果提交命令时已经用“&”将命令放入后台运行,则可以直接使用“disown”)
[root@pvcent107 build]# cp -r testLargeFile largeFile &
[1] 4825
[root@pvcent107 build]# jobs
[1]+ Running cp -i -r testLargeFile largeFile &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile
root 4825 968 1 09:46 pts/4 00:00:00 cp -i -r testLargeFile largeFile
root 4853 968 0 09:46 pts/4 00:00:00 grep largeFile
[root@pvcent107 build]# logout

disown 示例2(如果提交命令时未使用“&”将命令放入后台运行,可使用 CTRL-z 和“bg”将其放入后台,再使用“disown”)
[root@pvcent107 build]# cp -r testLargeFile largeFile2

[1]+ Stopped cp -i -r testLargeFile largeFile2
[root@pvcent107 build]# bg %1
[1]+ cp -i -r testLargeFile largeFile2 &
[root@pvcent107 build]# jobs
[1]+ Running cp -i -r testLargeFile largeFile2 &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile2
root 5790 5577 1 10:04 pts/3 00:00:00 cp -i -r testLargeFile largeFile2
root 5824 5577 0 10:05 pts/3 00:00:00 grep largeFile2
[root@pvcent107 build]#

回页首
screen
场景:
我们已经知道了如何让进程免受 HUP 信号的影响,但是如果有大量这种命令需要在稳定的后台里运行,如何避免对每条命令都做这样的操作呢?

解决方法:
此时最方便的方法就是 screen
了。简单的说,screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。screen
的参数很多,具有很强大的功能,我们在此仅介绍其常用功能以及简要分析一下为什么使用 screen 能够避免 HUP 信号的影响。我们先看一下
screen 的帮助信息:
SCREEN(1) SCREEN(1)

NAME
screen - screen manager with VT100/ANSI terminal emulation

SYNOPSIS
screen [ -options ] [ cmd [ args ] ]
screen -r [[pid.]tty[.host]]
screen -r sessionowner/[[pid.]tty[.host]]

DESCRIPTION
Screen is a full-screen window manager that multiplexes a physical
terminal between several processes (typically interactive shells).
Each virtual terminal provides the functions of a DEC VT100 terminal
and, in addition, several control functions from the ISO 6429 (ECMA
48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and
support for multiple character sets). There is a scrollback history
buffer for each virtual terminal and a copy-and-paste mechanism that
allows moving text regions between windows.

使用 screen 很方便,有以下几个常用选项:
用screen -dmS session name来建立一个处于断开模式下的会话(并指定其会话名)。
用screen -list 来列出所有会话。
用screen -r session name来重新连接指定会话。
用快捷键CTRL-a d 来暂时断开当前会话。
screen 示例
[root@pvcent107 ~]# screen -dmS Urumchi
[root@pvcent107 ~]# screen -list
There is a screen on:
12842.Urumchi (Detached)
1 Socket in /tmp/screens/S-root.

[root@pvcent107 ~]# screen -r Urumchi

当我们用“-r”连接到 screen 会话后,我们就可以在这个伪终端里面为所欲为,再也不用担心 HUP 信号会对我们的进程造成影响,也不用给每个命令前都加上“nohup”或者“setsid”了。这是为什么呢?让我来看一下下面两个例子吧。
1. 未使用 screen 时新进程的进程树
[root@pvcent107 ~]# ping www.google.com &
[1] 9499
[root@pvcent107 ~]# pstree -H 9499
init─┬─Xvnc
├─acpid
├─atd
├─2*[sendmail]
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash───ping

我们可以看出,未使用 screen 时我们所处的 bash 是 sshd 的子进程,当 ssh 断开连接时,HUP 信号自然会影响到它下面的所有子进程(包括我们新建立的 ping 进程)。
2. 使用了 screen 后新进程的进程树
[root@pvcent107 ~]# screen -r Urumchi
[root@pvcent107 ~]# ping www.ibm.com &
[1] 9488
[root@pvcent107 ~]# pstree -H 9488
init─┬─Xvnc
├─acpid
├─atd
├─screen───bash───ping
├─2*[sendmail]

而使用了 screen 后就不同了,此时 bash 是 screen 的子进程,而 screen 是 init(PID为1)的子进程。那么当 ssh 断开连接时,HUP 信号自然不会影响到 screen 下面的子进程了。

这是配置文件里面的语句,意思是主机公钥。

主机公钥确认 StrictHostKeyChecking

  1. StrictHostKeyChecking=no 最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。
  2. StrictHostKeyChecking=ask 默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。
  3. StrictHostKeyChecking=yes 最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。



新和县18583652510: 如何在linux中安装struts -
骑苑生理: 方法一:自己下载struts2包,在服务器目录下配置使用.方法二:下载安装一个Eclipse或者MyEclipse,然后在它们里面配置使用.

新和县18583652510: 简述在Linux中提供的常见的服务有哪些? -
骑苑生理: Linux中的服务 我专门整理过,常见的有: cron,cups,acpid,xinetd,xdm,vsftpd,vnc,telnet,syslog,sshd,splash,smbfs,postfix,portmap ,nfs,network

新和县18583652510: linux里面的shell编程有什么用? -
骑苑生理: 工作或者读书等)需要学习linux的人,需要系统的学习一下,最好有一本好的书来学习. linux是世界各地的黑客们写出来的开源系统,对于热爱学习计算机技术(算法、数据结构、编程、操作系统……)的人来说,linux是一个天堂. 我个人就...

新和县18583652510: Linux里,什么是shell环境? -
骑苑生理: 楼主,你好 何谓shell shell是用户与作业系统之间的交互层,用户修改其环境,设置或 取消shell的环境变量,迎合用户的需要和爱好. shell本身就是一个电脑程序,用C语言编写,为协助用户与作业系统之间通讯而设计,管理用户与核心(...

新和县18583652510: 谁能详解一下Linux中的shell
骑苑生理: Linux中的shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh).三种shell各有优缺点.Bourne shell是UNIX最初使用的shell,并且在每种UNIX上都可以使用.Bourne shell在shell编程方面相当优秀,但在处理与用...

新和县18583652510: 在Linux 中有自带C语言编译器吗? -
骑苑生理: 桌面 Linux 不像 FreeBSD,一般都不自带 C 语言编译器,因为那属于开发用工具,桌面用户一般不用.但是许多 GNU/Linux 的发行版的后台软件库都存有 C 语言编译器,可以通过软件包管理器来安装.以 Fedora 22 为例,安装 GCC 的命令为 sudo dnf install gcc (不过我个人比较偏好 clang),其中 dnf 是管理软件包的指令.

新和县18583652510: 我linux里没装KDE 请问要怎么安装啊 (菜鸟) -
骑苑生理: 这要取决你装什么linux 如果是rh系列 那么yum install kde 如果是RHEL那么你找菜单里面的程式管理器 如果ub那么 apt-get install kde (应该是这个^_^记不太清) 如果是Archlinux那么是pacman -S kde 当然你也可以安装源代码版本

新和县18583652510: 我安装了了linux虚拟机,怎样在linux里获得管理员权限 -
骑苑生理: 1.首先,我们打开Linux客户机并单击connectLinux按钮. 2.然后我们输入用户名和主机IP地址. 3.然后我们输入密码,如下所示. 4.然后我们连接成功,可以在内部操作,获得管理员权限成功. 5.例如:如果当前用户是root用户,并且您希望切换到普通用户marry,那么输入sumarry命令并立即切换到marry环境.

新和县18583652510: linux怎么打开程序 -
骑苑生理: 你先去学基础知识就行了,如果你不想学,那就最好改用 for windows 的版本……1、你在开始菜单里面找不到的程序,当然要用终端来运行,其实,可以用运行解决.印象里打开运行菜单的快捷键是 alt + f2 .你的开始菜单上面或许也有运行的...

新和县18583652510: linux 内核里面有枚举变量吗 -
骑苑生理: 比如当前在kernel源码目录下 find ./ -name "*.h" | xargs grep "strict_strtoul"./drivers/md/md.h:extern int strict_strtoul_scaled(const char *cp, unsigned long *res, int scale);./include/linux/kernel.h:#define strict_strtoul kstrtoul./include/linux/kernel.h:#define strict_strtoull kstrtoull

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网