nagios怎么读,《NagiosSystemandNetworkMonitoring》epub下载在线阅读,求百度网盘云资源
nagios怎么读,《NagiosSystemandNetworkMonitoring》epub下载在线阅读,求百度网盘云资源详细介绍
本文目录一览: nagios怎么念
nei ji e s,
zabbix怎么读,cacti,还有nagios这几个软件哪位大侠帮忙告诉怎么发音的,必加分
cacti - 凯克塔爱
linux下的yum怎么读
yum读作:英 [j?m] 美 [j?m] 。
yum原意表示味道或气味非常好。linux中yum的全称是Yellow dog Updater, Modified,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
例句:If the ntp package is not installed, Puppet uses the appropriate tool,
such asyum or apt-get to install it.
翻译:如果ntp包未安装,Puppet就使用适当的工具,例如yum或者apt-get来进行安装。
扩展资料
yum常用命令介绍:
1、列出所有可更新的软件清单命令:yum check-update
2、更新所有软件命令:yum update
3、仅安装指定的软件命令:yum install
4、仅更新指定的软件命令:yum update
5、列出所有可安装的软件清单命令:yum list
6、删除软件包命令:yum remove
7、查找软件包 命令:yum search
Linux下yum音标:[j?m] (丫木)。
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。提供软件查找、安装、删除某一个或一组甚至全部软件包的命令,而且命令简洁而又好记。yum的命令形式如下:
yum [options] [command] [package ...]常用的命令包括:
#安装软件yum install packages#更新软件yum update packages#删除软件yum remove packages#清除缓存yum clean packages
直接叫 Y U M 这三个字母就可以了,
读:亚母
音标是/j?m/
U发尖角a的音。。
【j?m】
yum读音为:英 [j?m] 美 [j?m]
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。
例句:
1、Create the yum repository metadata with the createrepo command.
使用createrepo命令创建yum存储库元数据。
2、Before you install Nagios, use yum to install Apache, the CC compiler, and the GD development libraries.
在安装Nagios之前,使用yum来安装Apache、CC编译器和GD开发库。
扩展资料:
Yum的软件包来源:
可供Yum下载的软件包包括Fedora本身的软件包以及源自rpmfusion和rpm.的Fedora Extras,全部是由Linux社区维护的,并且基本是自由软件。所有的包都有一个独立的PGP签名,主要是为了用户的系统安全。
参考资料:百度百科-yum
《NagiosSystemandNetworkMonitoring》epub下载在线阅读,求百度网盘云资源
《Nagios》(Wolfgang Barth)电子书网盘下载免费在线阅读
资源链接:
链接: https://pan.baidu.com/s/1BMD3jeT8xNWIdImsu8wbLg
提取码: s586
书名:Nagios
作者:Wolfgang Barth
出版社:No Starch Press
出版年份:2008-10-28
页数:720
内容简介:
Good system administrators recognize problems long before anyone asks, "Hey, is the Internet down?" Nagios, an open source system and network monitoring tool, has emerged as the most popular solution for sys admins in organizations of all sizes. It's robust but also complex, and Nagios: System and Network Monitoring, 2nd Edition, updated to address Nagios 3.0, will help you take full advantage of this program. Nagios, which runs on Linux and most *nix variants, can be configured to continuously monitor network services such as SMTP, POP3, HTTP, NNTP, SSH, and FTP. It can also supervise host resources (processor load, disk and memory usage, running processes, log files, and so on) and environmental factors, such as temperature and humidity. This book is your guide to getting the most out of this versatile and powerful monitoring tool. Inside Nagios, you'll learn how to: * Install and configure the Nagios core, all standard plugins, and selected third-party plugins * Configure the notification system to alert you of ongoing problems-and to alarm others in case of a serious crisis * Program event handlers to take automatic action when trouble occurs * Write Perl plugins to customize Nagios for your unique needs * Quickly understand your Nagios data using graphing and visualization tools * Monitor Windows servers, SAP systems, and Oracle databases The book also includes a chapter that highlights the differences between Nagios versions 2 and 3 and gives practical migration and compatibility tips. Nagios: System and Network Monitoring, 2nd Edition is a great starting point for configuring and using Nagios in your own environment.
《Nagios》(Wolfgang Barth)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan.baidu.com/s/1xaJP-oKSntNBiu_JkhhNQw
提取码:m9y7
书名:Nagios
作者:Wolfgang Barth
出版社:No Starch Press
出版年份:2008-10-28
页数:720
内容简介:
Good system administrators recognize problems long before anyone asks, "Hey, is the Internet down?" Nagios, an open source system and network monitoring tool, has emerged as the most popular solution for sys admins in organizations of all sizes. It's robust but also complex, and Nagios: System and Network Monitoring, 2nd Edition, updated to address Nagios 3.0, will help you take full advantage of this program. Nagios, which runs on Linux and most *nix variants, can be configured to continuously monitor network services such as SMTP, POP3, HTTP, NNTP, SSH, and FTP. It can also supervise host resources (processor load, disk and memory usage, running processes, log files, and so on) and environmental factors, such as temperature and humidity. This book is your guide to getting the most out of this versatile and powerful monitoring tool. Inside Nagios, you'll learn how to: * Install and configure the Nagios core, all standard plugins, and selected third-party plugins * Configure the notification system to alert you of ongoing problems-and to alarm others in case of a serious crisis * Program event handlers to take automatic action when trouble occurs * Write Perl plugins to customize Nagios for your unique needs * Quickly understand your Nagios data using graphing and visualization tools * Monitor Windows servers, SAP systems, and Oracle databases The book also includes a chapter that highlights the differences between Nagios versions 2 and 3 and gives practical migration and compatibility tips. Nagios: System and Network Monitoring, 2nd Edition is a great starting point for configuring and using Nagios in your own environment.
linux监控脚本执行的次数
为了监控Linux脚本的执行次数,可以通过在脚本中添加计数器来实现。每次脚本执行完毕后,计数器自增1,这样就可以记录下脚本执行的次数。这种方法的好处是简单易行,只需要在脚本中添加几行代码即可实现。同时,可以将计数器的值输出到日志文件中,以便于后续分析和查看。
除了在脚本中添加计数器外,还可以利用Linux系统自带的工具来进行监控。例如,可以使用cron定时任务来周期性地执行脚本,并在执行完毕后将执行结果写入日志文件中。通过分析日志文件,可以得知脚本的执行次数以及执行结果等信息。
总之,监控Linux脚本的执行次数可以采用多种方法,根据实际需求选择合适的方法即可。同时,对于重要的脚本,建议进行定期备份并做好日志记录,以便于后续的管理和分析。
要监控Linux脚本的执行次数,可以通过在脚本中添加计数器来实现。在脚本执行的关键位置,可以使用计数器自增的语句,来统计脚本的执行次数。例如,在脚本的结尾处可以打印出执行次数的统计结果,以便于观察脚本的执行情况。
监控脚本的执行次数有助于我们对脚本的性能进行评估,以便于调整脚本的运行效率。此外,也可以通过监控脚本的执行次数,来检测脚本的健康状况,以便及时发现并解决脚本的问题。
在实际应用中,我们可以结合其他工具和技术来进行脚本的监控。例如,可以使用Linux系统的cron定时任务工具来定时运行脚本,并记录脚本的执行情况。也可以使用监控工具,如Nagios、Zabbix等,来对脚本的执行情况进行监控和报警。这些工具和技术可以帮助我们更加方便和准确地监控和管理Linux系统中的脚本运行。
可以使用Linux中的定时任务(crontab)来监控脚本执行的次数,具体方法如下:
1. 编写一个计数器脚本,每次监控到脚本执行的时候,就让计数器加1,并将计数器的值保存到一个文件中。
2. 在crontab中设置定时任务,让计数器脚本每隔一段时间(比如10分钟)执行一次。
3. 在crontab中设置另外一个脚本,用来检查计数器的值是否超过了某个阈值,如果超过了则发送一封邮件给管理员。
这样就可以在Linux系统中监控脚本的执行次数了。监控脚本执行的次数有助于了解脚本的执行情况,及时发现问题并进行修复,提高系统的稳定性和可靠性。
另外,还可以通过其他方式来监控脚本的执行情况,比如使用监控工具(如Zabbix、Nagios等)进行监控,或者使用日志分析工具(如ELK Stack)来分析脚本的执行日志,从而了解脚本的执行情况和问题。
要实现对Linux监控脚本执行次数的计数,可以在脚本中加上计数器,并在每次脚本执行完成后将计数器加1。当需要查看脚本执行次数时,只需查看计数器即可。
原因是,Linux系统中有很多任务是需要定时执行的,比如备份、清理等。为了保证这些任务按时执行,需要设置计划任务,并对任务的执行情况进行监控。如果某个任务执行次数过低或者过高,就需要对任务的执行情况进行调整,以保证任务的稳定执行。
在实际应用中,对于需要监控的脚本,可以通过一些第三方的监控工具进行监控,如Nagios、Zabbix等,这些工具可以不仅可以监控脚本的执行次数,还可以监控脚本的运行时间、输出结果等。同时,在编写脚本时,也可以加入一些日志记录功能,以便对脚本的执行情况进行记录和分析。
为了监控脚本的执行次数,可以使用Shell脚本来实现。主要思路是在脚本中使用计数器变量,每次脚本执行时将计数器加1并将结果保存到一个文件中。下次执行脚本时,从文件中读取计数器的值并加1,再将结果保存回文件中。这样就可以实现对脚本执行次数的监控。
需要对脚本执行次数进行监控的原因可能有很多,比如想要了解脚本的运行状况,发现脚本有异常时可以及时发现并处理,或者对脚本的效率进行优化等等。在实际使用中,监控脚本的执行次数可以帮助我们更好地管理和维护系统,提高工作效率。
除了监控脚本执行次数,还有很多其他的Linux监控工具和技巧,如使用top命令查看系统资源占用情况、使用sar命令查看系统负载情况、使用netstat命令查看网络连接情况等等。这些监控工具和技巧可以帮助我们及时了解系统的运行状态,发现问题并进行解决。
如果要监控Linux脚本的执行次数,可以通过在脚本中增加统计代码的方式来实现。具体来说,可以在脚本中设定一个计数器变量,每次脚本被执行时,计数器变量就会自增1。这样,我们就可以通过查看计数器变量的值来了解脚本已经被执行的次数。
需要注意的是,计数器变量需要设置为全局变量,这样才能在脚本的多次执行中保持计数的连续性。此外,如果需要在多台机器上监控脚本的执行次数,可以将计数器变量存储在共享文件系统中,从而实现多台机器之间的数据共享。
除了监控脚本的执行次数,我们还可以通过其他方式来监控Linux系统的运行情况,比如使用系统自带的监控工具,如top、vmstat等,或者使用第三方监控工具,如Nagios、Zabbix等。这些工具可以帮助我们实时、全面地监控系统的各项指标,如CPU利用率、内存使用情况、磁盘空间占用率等,从而及时发现并解决系统问题,保证系统的稳定性和可靠性。
如何使用Nagios监控Cisco交换机硬件及运行状态
1. Cisco交换机都支持SNMP协议,只需要简单的设置即可开启,例如:snmp-server community snmppw RO。更加详细的设置请使用Google搜索“Cisco 开启 SNMP”,参考网上相关文章。
2. 在安装Nagios之前,必须已经安装Net-Utils及其开发组件。成功安装Nagios之后,再次检查libexec目录下有check_snmp命令。
系统环境:Nagios 3.x + CentOS 5.6 + Cisco 4500
前提条件:
1. Cisco交换机都支持SNMP协议,只需要简单的设置即可开启,例如:snmp-server community snmppw RO。更加详细的设置请使用Google搜索“Cisco 开启 SNMP”,参考网上相关文章。
2. 在安装Nagios之前,必须已经安装Net-Utils及其开发组件。成功安装Nagios之后,再次检查libexec目录下有check_snmp命令。
系统测试:
check_snmp命令提供了详细的使用说明,只需要在Linux命令行输入 check_snmp –help即可查看帮助信息,这其中包括每一项参数的使用等。
这里以检测Cisco交换机的系统为例,示范如何使用check_snmp。交换机为Cisco 4500系列,系统描述的OID为.1.3.6.1.2.1.1.1.0
[root@wardking libexec]# ./check_snmp -H 10.241.10.1 -o .1.3.6.1.2.1.1.1.0 -C snmppw
SNMP OK – “Cisco IOS Software, Catalyst 4500 L3 Switch Software (cat4500-ENTSERV | K9-M), Version 12.2(53)SG2, RELEASE SOFTWARE (fc1)
建议用于Nagios监控的OID:
系统内存使用(5分钟内)1.3.6.1.4.1.9.9.48.1.1.1.5.1
系统可用内存(5分钟内)1.3.6.1.4.1.9.9.48.1.1.1.6.1
CPU使用率(5分钟内)1.3.6.1.4.1.9.2.1.58.0
硬件状态1.3.6.1.4.1.9.9.13
系统配置:
由于使用check_snmp检测的结果不够人性化,大部分的结果都需要重新调整。使用Perl脚本调用NET::SNMP模块,实现收集监控结果,并重新输出,更易阅读和使用。
这里引用4个从国外网站收集的脚本,check_snmp_env, check_snmp_cisco_memutil, check_snmp_cisco_loadavg, check_snmp_cisco_ifstatus
请下载至nagios安装目录下的libexec子目录中,例如/usr/local/nagios/libexec,重命名去掉txt扩展名,赋予可执行权限:
[root@nagios libexec]# pwd
/usr/local/nagios/libexec
[root@nagios libexec]# chmod a+x check_snmp_cisco_* check_snmp_env -v
mode of `check_snmp_cisco_ifstatus’ retained as 0755 (rwxr-xr-x)
mode of `check_snmp_cisco_loadavg’ retained as 0755 (rwxr-xr-x)
mode of `check_snmp_cisco_memutil’ retained as 0755 (rwxr-xr-x)
mode of `check_snmp_env’ retained as 0755 (rwxr-xr-x)
剩下的工作就是follow标准流程设置监控命令,添加被监控的交换机和服务了。
编辑etc/objects/command.cfg,添加如下定义:
#Check Cisco, Extreme and Juniper hardware
define command{
command_name check_snmp_env
command_line $USER1$/check_snmp_env -H $HOSTADDRESS$ -C $ARG1$ $ARG2$
}
#Cisco SNMP device monitoring
define command{
command_name check_snmp_cisco_mem
command_line $USER1$/check_snmp_cisco_memutil -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
define command{
command_name check_snmp_cisco_cpu
command_line $USER1$/check_snmp_cisco_loadavg -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}
define command{
command_name check_snmp_cisco_if
command_line $USER1$/check_snmp_cisco_ifstatus -H $HOSTADDRESS$ -C $ARG1$ -i $ARG2$ -w $ARG3$ -c $ARG4$
}
编辑switch.cfg加入监控的交换机配置,新增相关系统服务,例如:
define service{
use generic-service ; Inherit values from a template
host_name CAT4506E_B1_LG3_1, CAT4506E_B3_A09L_1, CAT4507R_B5_A09R_1, CAT4507R_B1_LG3_1, CAT4507R_B5_D12_1, RackSW_PDC_1, RackSW_PDC_2, RackSW_PDC_3, RackSW_PDC_4, RackSW_SDC_2, RackSW_SDC_3
service_description Environment
check_command check_snmp_env!snmppw
}
define service{
use generic-service ; Inherit values from a template
host_name CAT4507R_B5_D12_1, CAT4507R_B1_LG3_1, CAT4506E_B1_LG3_1, CAT4506E_B3_A09L_1, CAT4507R_B5_A09R_1
service_description LoadAVG
check_command check_snmp_cisco_cpu!snmppw!60!80
}
define service{
use generic-service ; Inherit values from a template
host_name CAT4507R_B5_D12_1, CAT4507R_B1_LG3_1, CAT4506E_B1_LG3_1, CAT4506E_B3_A09L_1, CAT4507R_B5_A09R_1
service_description Memutil
check_command check_snmp_cisco_mem!snmppw!70!90
}
用nagios监控cisco 交换机,交换机要做那些配置?具体命令是什么?
snmp就行
snmp最好加访问列表限制源地址
access-list 11 permit x.x.x.x
然后再跟snmp绑定
snmp-server commu $NAME ro 11 $NAME是自定义名称,根据自己喜好,ro是readonly,如果你只为了读取参数
设置CatOS设备(交换机)
在CatOS的Enable状态下,敲入
set interface sc0 VLAN ID IP address 配置交换机本地管理接口所在VLAN ID,IP地址,子网掩码
Set cdp enable all 启用CDP
set snmp community read-only gsunion 配置本交换机的只读字串为public
set snmp community read-write-all gsunion 配置本交换机的读写字串为private
set snmp trap server-ip gsunion
指定交换机SNMP Trap的接收者为网管服务器,发送Trap时采用gsunion作为字串
set snmp trap enable all 将全部类型的SNMP Trap发送出去
set snmp rmon enable 激活交换机的SNMP RMON功能
set logging server IP-address-server 将log记录发送到网管服务器的IP (CW2K安装机器的IP地址)上的syslog server
set logging level 6 将记录事件严重级别定义为从informational开始,一直到最紧急级别的事件全部记录到前边指定的syslog server
set logging server facility local7 将记录事件类型定义为local7
set logging timestamp 发送记录事件的时候包含时间标记
set logging enable 起动log机制
write terminal 显示并检查配置
保存配置
CentOS6.2安装的nagios出现以下问题
默认情况下,最新版的nagios关于web方面的配置文件会放在/etc/httpd/conf.d/nagios.conf
但是,apache如果想要读取到conf.d中的配置文件,却需要/etc/httpd/conf/httpd.conf中
Include conf.d/.conf.d这条内容(默认是存在的,并且应该是在221行)
so请查看是否有这条内容
在编译nagios的时候./configure结束后,请看下最后的输出信息,这里会告知你即将安装的路径,以及各项用户权限,查看正确了再进行安装。默认nagios.conf会放在/etc/httpd/conf.d
与此同时,nagios的页面均放在/usr/local/nagios/share或者/usr/local/nagios/sbin那么请确定apache是否安装了相关的php/cgi模块
apache配置文件不对
httpd.conf
编译nagios过程
请使用
cd nagios
./configure --with-nagios-ser=nagios --with-nagios-group=nagios --with-command-group=nagcmd
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf -----》这条httpd。conf里面去看看 是否有nagios加入了
nagios的配置文件一般是在/etc/httpd/conf.d/nagios.conf
看下httpd.conf 结尾 是否有include这个文件
=。=可以发私信交流
大数据如何入门
导读:
第一章:初识Hadoop
第二章:更高效的WordCount
第三章:把别处的数据搞到Hadoop上
第四章:把Hadoop上的数据搞到别处去
第五章:快一点吧,我的SQL
第六章:一夫多妻制
第七章:越来越多的分析任务
第八章:我的数据要实时
第九章:我的数据要对外
第十章:牛逼高大上的机器学习
经常有初学者会问,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高……首先,如果你确定了想往这个方面发展,先考虑自己的过去从业经历、专业、兴趣是什么。计算机专业——操作系统、硬件、网络、服务器?软件专业——软件开发、编程、写代码?还是数学、统计学专业——对数据和数字特别感兴趣?
其实这就是想告诉你大数据的三个发展方向,平台搭建/优化/运维/监控、大数据开发/设计/架构、数据分析/挖掘。
先扯一下大数据的4V特征:
数据量大,TB->PB
数据类型繁多,结构化、非结构化文本、日志、视频、图片、地理位置等;
商业价值高,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖掘出来;
处理时效性高,海量数据的处理需求不再局限在离线计算当中。
现如今,正式为了应对大数据的这几个特点,开源的大数据框架越来越多,越来越强,先列举一些常见的:
文件存储:Hadoop HDFS、Tachyon、KFS
离线计算:Hadoop MapReduce、Spark
流式、实时计算:Storm、Spark Streaming、S4、Heron
K-V、NOSQL数据库:HBase、Redis、MongoDB
资源管理:YARN、Mesos
日志收集:Flume、Scribe、Logstash、Kibana
消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
分布式协调服务:Zookeeper
集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
数据挖掘、机器学习:Mahout、Spark MLLib
数据同步:Sqoop
任务调度:Oozie
······
第一章:初识Hadoop
1.1 学会百度与Google
不论遇到什么问题,先试试搜索并自己解决。
Google首选,翻不过去的,就用百度吧。
1.2 参考资料首选官方文档
特别是对于入门来说,官方文档永远是首选文档。
相信搞这块的大多是文化人,英文凑合就行,实在看不下去的,请参考第一步。
1.3 先让Hadoop跑起来
Hadoop可以算是大数据存储和计算的开山鼻祖,现在大多开源的大数据框架都依赖Hadoop或者与它能很好的兼容。
关于Hadoop,你至少需要搞清楚以下是什么:
Hadoop 1.0、Hadoop 2.0
MapReduce、HDFS
NameNode、DataNode
JobTracker、TaskTracker
Yarn、ResourceManager、NodeManager
自己搭建Hadoop,请使用第一步和第二步,能让它跑起来就行。
建议先使用安装包命令行安装,不要使用管理工具安装。
另外:Hadoop1.0知道它就行了,现在都用Hadoop 2.0.
1.4 尝试使用Hadoop
HDFS目录操作命令;
上传、下载文件命令;
提交运行MapReduce示例程序;
打开Hadoop WEB界面,查看Job运行状态,查看Job运行日志。
知道Hadoop的系统日志在哪里。
1.5了解它们的原理
MapReduce:如何分而治之;
HDFS:数据到底在哪里,什么是副本;
Yarn到底是什么,它能干什么;
NameNode到底在干些什么;
ResourceManager到底在干些什么;
1.6 自己写一个MapReduce程序
仿照WordCount例子,自己写一个(照抄也行)WordCount程序,
打包并提交到Hadoop运行。
不会Java的话,Shell、Python都可以,有个东西叫Hadoop Streaming。
如果能认真完成了以上几步,恭喜你,你的一只脚已经进来了。
第二章:更高效的WordCount
2.1 学点SQL吧
如果不懂数据库的童鞋先学习使用SQL句。
2.2 SQL版WordCount
在1.6中,你写(或者抄)的WordCount一共有几行代码?
如果用SQL的话:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;这便是SQL的魅力,编程需要几十行,甚至上百行代码,SQL一句就搞定;使用SQL处理分析Hadoop上的数据,方便、高效、易上手、更是趋势。不论是离线计算还是实时计算,越来越多的大数据处理框架都在积极提供SQL接口。
2.3 安装配置Hive
Hive算是数据仓库工具,安装不难,网上有很多教程,配置完成后,可以正常进入Hive命令行。
2.4 试试使用Hive
尝试在Hive中创建wordcount表,并运行2.2中的SQL语句。在Hadoop WEB界面中找到刚才运行的SQL任务。看SQL查询结果是否和1.4中MapReduce中的结果一致。
明明写的是SQL,为什么Hadoop WEB界面中看到的是MapReduce任务?
2.5 学会Hive的基本命令
创建、删除表;加载数据到表;下载Hive表的数据;并学习更多关于Hive的语法和命令。
以上如果按照第一章和第二章的流程认真完整的走了一遍后,应该已经具备以下技能和知识点:
0和Hadoop2.0的区别
MapReduce的原理(还是那个经典的题目,一个10G大小的文件,给定1G大小的内存,如何使用Java程序统计出现次数最多的10个单词及次数);
HDFS读写数据的流程;向HDFS中PUT数据;从HDFS中下载数据;
自己会写简单的MapReduce程序,运行出现问题,知道在哪里查看日志;
会写简单的SELECT、WHERE、GROUP BY等SQL语句;
Hive SQL转换成MapReduce的大致流程;
Hive中常见的语句:创建表、删除表、往表中加载数据、分区、将表中数据下载到本地;
从上面的学习,你已经了解到,HDFS是Hadoop提供的分布式存储框架,它可以用来存储海量数据,MapReduce是Hadoop提供的分布式计算框架,它可以用来统计和分析HDFS上的海量数据,而Hive则是SQL On Hadoop,Hive提供了SQL接口,开发人员只需要编写简单易上手的SQL语句,Hive负责把SQL翻译成MapReduce,提交运行。
此时,你的认知中“大数据平台”是这样的:
那么问题来了,海量数据如何到HDFS上呢?
第三章:把别处的数据搞到Hadoop上
此处也可以叫做数据采集,把各个数据源的数据采集到Hadoop上。
3.1 HDFS PUT命令
put命令在实际环境中也比较常用,通常配合shell、python等脚本语言来使用。建议需熟练掌握。
3.2 HDFS API
HDFS提供了写数据的API,自己用编程语言将数据写入HDFS,put命令本身也是使用API。
实际环境中一般自己较少编写程序使用API来写数据到HDFS,通常都是使用其他框架封装好的方法。比如:Hive中的INSERT语句,Spark中的saveAsTextfile等。
可以尝试了解原理,试着写几个Demo。
3.3 Sqoop
Sqoop是一个主要用于Hadoop/Hive与传统关系型数据库Oracle/MySQL/SQLServer等之间进行数据交换的开源框架。
就像Hive把SQL翻译成MapReduce一样,Sqoop把你指定的参数翻译成MapReduce,提交到Hadoop运行,完成Hadoop与其他数据库之间的数据交换。
自己下载和配置Sqoop(建议先使用Sqoop1,Sqoop2比较复杂)。
了解Sqoop常用的配置参数和方法。
使用Sqoop完成从MySQL同步数据到HDFS;
使用Sqoop完成从MySQL同步数据到Hive表;
PS:如果后续选型确定使用Sqoop作为数据交换工具,那么建议熟练掌握,否则,了解和会用Demo即可。
3.4 Flume
Flume是一个分布式的海量日志采集和传输框架,因为“采集和传输框架”,所以它并不适合关系型数据库的数据采集和传输。Flume可以实时的从网络协议、消息系统、文件系统采集日志,并传输到HDFS上。因此,如果你的业务有这些数据源的数据,并且需要实时的采集,那么就应该考虑使用Flume。
下载和配置Flume。使用Flume监控一个不断追加数据的文件,并将数据传输到HDFS;
PS:Flume的配置和使用较为复杂,如果你没有足够的兴趣和耐心,可以先跳过Flume。
3.5 阿里开源的DataX
之所以介绍这个,是因为以前某公司客户目前使用的Hadoop与关系型数据库数据交换的工具,就是之前基于DataX开发的,个人感觉非常好用。现在DataX已经是3.0版本,支持很多数据源。你也可以在其之上做二次开发。
PS:有兴趣的可以研究和使用一下,对比一下它与Sqoop。
至此,你的“大数据平台”应该是这样的:
第四章:把Hadoop上的数据搞到别处去
前面介绍了如何把数据源的数据采集到Hadoop上,数据到Hadoop上之后,便可以使用Hive和MapReduce进行分析了。那么接下来的问题是,分析完的结果如何从Hadoop上同步到其他系统和应用中去呢?
其实此处的方法和第三章基本一致的。
4.1 HDFS GET命令
把HDFS上的文件GET到本地。需要熟练掌握。
4.2 HDFS API
原理同3.2.
4.3 Sqoop
原理同3.3。
使用Sqoop完成将HDFS上的文件同步到MySQL;
使用Sqoop完成将Hive表中的数据同步到MySQL;
4.4 DataX
原理同3.4
此时,“你的大数据平台”应该是这样的:
走完第三章和第四章的流程,那么你应该已经具备以下技能和知识点:
知道如何把已有的数据采集到HDFS上,包括离线采集和实时采集;
知道sqoop(或者还有DataX)是HDFS和其他数据源之间的数据交换工具;
知道flume可以用作实时的日志采集;
至此,对于大数据平台,应该已经掌握如何搭建Hadoop集群,把数据采集到Hadoop上,使用Hive和MapReduce来分析数据,把分析结果同步到其他数据源。
接下来的问题就是,Hive使用的越来越多,你会发现很多不愉快的地方,特别是速度慢,
大多情况下,明明我的数据量很小,它都要申请资源,启动MapReduce来执行。
第五章:快一点吧,我的SQL
其实大家都已经发现Hive后台使用MapReduce作为执行引擎,实在是有点慢。因此SQL On Hadoop的框架越来越多,按我的了解,最常用的按照流行度依次为SparkSQL、Impala和Presto.这三种框架基于半内存或者全内存,提供了SQL接口来快速查询分析Hadoop上的数据。
目前我们的方案使用的是SparkSQL,至于为什么用SparkSQL,原因大概如下:
使用Spark还做了其他事情,不想引入过多的框架;
Impala对内存的需求太大,没有过多资源部署;
5.1 关于Spark和SparkSQL
什么是Spark,什么是SparkSQL。
Spark有的核心概念及名词解释。
SparkSQL和Spark是什么关系,SparkSQL和Hive是什么关系。
SparkSQL为什么比Hive跑的快。
可参考:SparkSQL与Hive on Spark的比较
5.2 如何部署和运行SparkSQL
Spark有哪些部署模式?
如何在Yarn上运行SparkSQL?
使用SparkSQL查询Hive中的表。
可参考:Spark - lxw的大数据田地
PS: Spark不是一门短时间内就能掌握的技术,因此建议在了解了Spark之后,可以先从SparkSQL入手,循序渐进。
如果认真完成了上面的学习和实践,此时,你的”大数据平台”应该是这样的:
第六章:一夫多妻制
其实我想说的是数据的一次采集、多次消费。
在实际业务场景下,特别是对于一些监控日志,想即时的从日志中了解一些指标(关于实时计算,后面章节会有介绍),这时候,从HDFS上分析就太慢了,尽管是通过Flume采集的,但Flume也不能间隔很短就往HDFS上滚动文件,这样会导致小文件特别多。
为了满足数据的一次采集、多次消费的需求,这里要说的便是Kafka。
6.1 关于Kafka
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
6.2 如何部署和使用Kafka
使用单机部署Kafka,并成功运行自带的生产者和消费者例子。
使用Java程序自己编写并运行生产者和消费者程序。
Flume和Kafka的集成,使用Flume监控日志,并将日志数据实时发送至Kafka。
关于Kafka,可以参考 :Kafka - lxw的大数据田地
至此,“大数据平台”应该扩充成这样:
这时,使用Flume采集的数据,不是直接到HDFS上,而是先到Kafka,Kafka中的数据可以由多个消费者同时消费,其中一个消费者,就是将数据同步到HDFS。总结:
为什么Spark比MapReduce快。
使用SparkSQL代替Hive,更快的运行SQL。
使用Kafka完成数据的一次收集,多次消费架构。
自己可以写程序完成Kafka的生产者和消费者。
前面的学习已经掌握了大数据平台中的数据采集、数据存储和计算、数据交换等大部分技能,而这其中的每一步,都需要一个任务(程序)来完成,各个任务之间又存在一定的依赖性,比如,必须等数据采集任务成功完成后,数据计算任务才能开始运行。如果一个任务执行失败,需要给开发运维人员发送告警,同时需要提供完整的日志来方便查错。
第七章:越来越多的分析任务
不仅仅是分析任务,数据采集、数据交换同样是一个个的任务。这些任务中,有的是定时触发,有点则需要依赖其他任务来触发。当平台中有几百上千个任务需要维护和运行时候,仅仅靠crontab远远不够了,这时便需要一个调度监控系统来完成这件事。调度监控系统是整个数据平台的中枢系统,类似于AppMaster,负责分配和监控任务。
7.1 Apache Oozie
1. Oozie是什么?有哪些功能?
2. Oozie可以调度哪些类型的任务(程序)?
3. Oozie可以支持哪些任务触发方式?
4.安装配置Oozie。
7.2 其他开源的任务调度系统
Azkaban
light-task-scheduler
alibaba/zeus
……
此时:
第八章:数据要实时
在第六章介绍Kafka的时候提到了一些需要实时指标的业务场景,实时基本可以分为绝对实时和准实时,绝对实时的延迟要求一般在毫秒级,准实时的延迟要求一般在秒、分钟级。对于需要绝对实时的业务场景,用的比较多的是Storm,对于其他准实时的业务场景,可以是Storm,也可以是Spark Streaming。当然,如果可以的话,也可以自己写程序来做。
8.1 Storm
1. 什么是Storm?有哪些可能的应用场景?
2. Storm由哪些核心组件构成,各自担任什么角色?
3. Storm的简单安装和部署。
4. 自己编写Demo程序,使用Storm完成实时数据流计算。
8.2 Spark Streaming
1. 什么是Spark Streaming,它和Spark是什么关系?
2. Spark Streaming和Storm比较,各有什么优缺点?
3. 使用Kafka + Spark Streaming,完成实时计算的Demo程序。
此时:
至此,大数据平台底层架构已经成型了,其中包括了数据采集、数据存储与计算(离线和实时)、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提供数据了。第九章:数据要对外
通常对外(业务)提供数据访问,大体上包含以下方面:
离线:比如,每天将前一天的数据提供到指定的数据源(DB、FILE、FTP)等;
离线数据的提供可以采用Sqoop、DataX等离线数据交换工具。
实时:比如,在线网站的推荐系统,需要实时从数据平台中获取给用户的推荐数据,这种要求延时非常低(50毫秒以内)。
根据延时要求和实时数据的查询需要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。
OLAP分析:OLAP除了要求底层的数据模型比较规范,另外,对查询的响应速度要求也越来越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。如果你的数据模型比较规模,那么Kylin是最好的选择。
即席查询:即席查询的数据比较随意,一般很难建立通用的数据模型,因此可能的方案有:Impala、Presto、SparkSQL。
这么多比较成熟的框架和方案,需要结合自己的业务需求及数据平台技术架构,选择合适的。原则只有一个:越简单越稳定的,就是最好的。
如果你已经掌握了如何很好的对外(业务)提供数据,那么你的“大数据平台”应该是这样的:
第十章:牛逼高大上的机器学习
这里本人也没有接触太多,稍微讲一下我们的业务场景应用,遇到的能用机器学习解决的问题大概这么三类:
分类问题:包括二分类和多分类,二分类就是解决了预测的问题,就像预测一封邮件是否垃圾邮件;多分类解决的是文本的分类;
聚类问题:从用户搜索过的关键词,对用户进行大概的归类。
推荐问题:根据用户的历史浏览和点击行为进行相关推荐。
大多数行业,使用机器学习解决的,也就是这几类问题。
入门学习线路:
数学基础;
机器学习实战(Machine Learning in Action),懂Python最好;
SparkMlLib提供了一些封装好的算法,以及特征处理、特征选择的方法。
那么把机器学习部分加进 “大数据平台”。
看情况吧,一般学校的话,比如这边是三年制大专
大数据入门学习路线
目前的大数据在就业方面还是不错的,不论是互联网公司或者不是以互联网为主的公司对大数据开发人才需求都是很大的,所以学习大数据开发的话就业前景还是很不错的。不知道你是想要线下学习还是线上学习。以目前的行情来说,线下学习费用高昂、地域限制,建议选择线上平台。如今线上学习无论是就业还是教学均已完善。大数据开发技术让大数据成为了2017年移动互联网追逐的热点。也引得很多领域外的人才纷纷转投于大数据发领域,扣丁学堂具有完整系统的大数据培训视频教程,顶级行内大牛为学员们设定了可视化的学习线路直通车,让没有学习方向的学子一目了然,最快的进入大数据领域大门。
恩恩,大数据基础入门的java,linux,mysql这三个,这三个学的差不多了的话才能进行更深入的大数据方面的学习的,Hadoop等。柠檬学院大数据。
首先我们要了解Java语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。
大数据
Java :只要了解一些基础即可,做大数据不需要很深的Java 技术,学java SE 就相当于有学习大数据基础。
Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。
Hadoop:这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFS、MapReduce和YARN,HDFS是存储数据的地方就像我们电脑的硬盘一样文件都存储在这个上面,MapReduce是对数据进行处理计算的,它有个特点就是不管多大的数据只要给它时间它就能把数据跑完,但是时间可能不是很快所以它叫数据的批处理。
Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。
Mysql:我们学习完大数据的处理了,接下来学习学习小数据的处理工具mysql数据库,因为一会装hive的时候要用到,mysql需要掌握到什么层度那?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库。这里主要的是学习SQL的语法,因为hive的语法和这个非常相似。
Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。
Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单,不会再费劲的编写MapReduce程序。有的人说Pig那?它和Pig差不多掌握一个就可以了。
Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapReduce、Spark脚本,还能检查你的程序是否执行正确,出错了给你发报警并能帮你重试程序,最重要的是还能帮你配置任务的依赖关系。我相信你一定会喜欢上它的,不然你看着那一大堆脚本,和密密麻麻的crond是不是有种想屎的感觉。
Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。所以他常被用于大数据处理完成之后的存储目的地。
Kafka:这是个比较好用的队列工具,队列是干吗的?排队买票你知道不?数据多了同样也需要排队处理,这样与你协作的其它同学不会叫起来,你干吗给我这么多的数据(比如好几百G的文件)我怎么处理得过来,你别怪他因为他不是搞大数据的,你可以跟他讲我把数据放在队列里你使用的时候一个个拿,这样他就不在抱怨了马上灰流流的去优化他的程序去了,因为处理不过来就是他的事情。而不是你给的问题。当然我们也可以利用这个工具来做线上实时数据的入库或入HDFS,这时你可以与一个叫Flume的工具配合使用,它是专门用来提供对数据进行简单处理,并写到各种数据接受方(比如Kafka)的。
Spark:它是用来弥补基于MapReduce处理数据速度上的缺点,它的特点是把数据装载到内存中计算而不是去读慢的要死进化还特别慢的硬盘。特别适合做迭代运算,所以算法流们特别稀饭它。它是用scala编写的。Java语言或者Scala都可以操作它,因为它们都是用JVM的。
linux怎么停止进程
Linux查询进程和结束进程
1. ps -ef |grep redis
ps:将某个进程显示出来-A 显示所有程序。-e 此参数的效果和指定"A"参数相同。-f 显示UID,PPIP,C与STIME栏位。grep命令是查找中间的|是管道命令 是指ps命令与grep同时执行
这条命令的意思是显示有关redis有关的进程
2. kill[参数][进程号]
kill -9 4394
kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。当然你也可以使用kill发送其他信号给进程。 更具体的Linux命令介绍可如下进行查看:
Linux查看进程和终止进程的技巧
1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提下,输入tomcat的to按tab)。
2. ps 命令用于查看当前正在运行的进程。
grep 是搜索
例如: ps -ef | grep java
表示查看所有进程里CMD是java的进程信息
ps -aux | grep java
-aux 显示所有状态
ps
3. kill 命令用于终止进程
例如: kill -9 [PID]
-9表示强迫进程立即停止
通常用ps 查看进程PID ,用kill命令终止进程
网上关于这两块的内容
-----------------------------------------------------------------------------------
PS
-----------------------------------------------------------------------------------
1. ps简介
ps命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.
2. ps命令及其参数
ps命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设
备进行通信地,所以如果需要检测其情况,便可以运用ps命令了.
该命令语法格式如下:
ps [选项]
-e 显示所有进程,环境变量
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a 显示终端上地所有进程,包括其他用户地进程
r 只显示正在运行地进程
x 显示没有控制终端地进程
O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定地多级排序顺序显示进程列表.
对于ps地不同格式都存在着默认地顺序指定.这些默认顺序可以被用户地指定所覆盖.在这里面“+”字符是可选地,“-”字符是倒转指定键地方向.
pids只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如:ps -f1,4,5.
以下介绍长命令行选项,这些选项都运用“--”开头:
--sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按数字升序或者词典顺序.比如: ps -jax -sort=uid,-ppid,+pid.
--help 显示帮助信息.
--version 显示该命令地版本信息.
在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见表4-3.
表4-3 排序键列表
c
cmd
可执行地简单名称
C
cmdline
完整命令行
f
flags
长模式标志
g
pgrp
进程地组ID
G
tpgid
控制tty进程组ID
j
cutime
累计用户时间
J
cstime
累计系统时间
k
utime
用户时间
K
stime
系统时间
m
min_flt
次要页错误地数量
M
maj_flt
重点页错误地数量
n
cmin_flt
累计次要页错误
N
cmaj_flt
累计重点页错误
o
session
对话ID
p
pid
进程ID
P
ppid
父进程ID
r
rss
驻留大小
R
resident
驻留页
s
size
内存大小(千字节)
S
share
共享页地数量
t
tty
tty次要设备号
T
start_time
进程启动地时间
U
uid
UID
u
user
用户名
v
vsize
总地虚拟内存数量(字节)
y
priority
内核调度优先级
3. 经常使用ps命令参数
最经常使用地三个参数是u、a、x,下面将通过例子来说明其具体用法.
[例20] 以root身份登录系统,查看当前进程状况
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,显示地项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)
、COMMAND(该进程地命令行输入).
可以运用u选项来查看进程所有者及其他少许详细信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash进程前面有条横线,意味着该进程便是用户地登录shell,所以对于一个登录用户来说带短横线地进程只有一个.还可以看到%CPU、%MEM两个选项,前者指该进程占用地CPU时间和总时间地百分比;后者指该进程占用地内存和总内存地百分比.
在这种情况下看到了所有控制终端地进程;当然对于其他那些没有控制终端地进程还是没有观察到,所以这时就需要运用x选项.运用x选项可以观察到所有地进程情况.
-----------------------------------------------------------------------------------
KILL
-----------------------------------------------------------------------------------
由于职责的要求,你不得不费力地阅读那些令你感到费解的晦涩的Linux应用程序的说明文件。然后,你将运行指令和编辑设置文件。一切都在正常 运行,生活真美好。但是,你知道,好时光不会永远持续下去。当你遇到令人恐惧的“send the process a SIGHUP”提示时,好时光结束了。
什么是“SIGHUP(启动信号)”,你如何发送它?它像是你送给你的恋人的一束花吗?虽然你可以肯定这不是一个命令行指令,不过,你还是试着 键入它。当然,这没有结果。然后,你检查一下键盘。哦,没有SIGHUP键。于是你又重新阅读这个应用程序的参考指南,看到下面这段文字:
当收到一个hangup(进程结束)信号时,sshd程序会重新阅读配置文件。通过执行启动程序时的命令及选项来发送SIGHUP信号,如:/usr/sbin/sshd。
哦,原来是这样。
程序员 VS 使用者
LINUX程序的在线参考指南作者一般都要既照顾到最终用户的需求也要照顾到高级程序员的需求。因此,有些说明比较难懂。不过,不要担心。现在我们就要揭开覆盖在这些让人迷惑的内容上面那神秘的面纱。
信号与进程控制
这个问题主要属于信号和进程控制的范畴。对于我们系统管理员和普通用户来说,我们主要关心的是启动、停止和重新启动服务、停止失控的进程和被挂起的进程,并且尽可能不中断系统运行。因为不同的
操作系统和不同的命令外壳处理信号的方式都不相同,我们这里只介绍Linux操作系统和bash外壳。
信号是用来与守护程序和进程通信的。任何活动任务都是一个进程,而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。一个 程序必须有建在其中的信号处理程序用于捕获和应答信号。在LINUX中的signal 参考指南解释了各种不同信号和这些信号的用途。信号是由“kill”命令发出的。kill -l命令可以显示一个可用信号列表及其编号。
所有的守护程序和进程都有一个进程ID(PID),例如使用ps命名所显示的内容:
$ ps aux
USER PID %CPU %MEM TTY STAT COMMAND
root 1 0.0 0.1 ? S init [2]
105 7783 0.0 0.2 ? Ss /usr/bin/dbus-daemon --system
hal 7796 0.0 0.7 ? Ss /usr/sbin/hald
postfix 7957 0.0 0.2 ? S qmgr -l -t fifo -u -c
nagios 8371 0.0 0.2 ? SNs /usr/sbin/nagios /etc/nagios/nagios.cfg
这个输出是经过简化的。你在系统中可以看到更多的行和栏目。如果某些进程消耗了你的全部CPU或者内存,你可以在这个输出的%CPU和%MEM 列中发现它们。找到失控的进程的一种更快捷的方法是使用top命令,因为按照默认的设置,使用占用CPU资源最多的进程在最上面显示。我们可以使用一条 “yes”命令来测试一下:
$ yes carla is teh awesum
这个命令将以很高的速度反复显示“carla is teh awesum”,直到你停止它运行。这将使你的CPU使用率达到警戒线。
$ top
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12144 carla 25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole
22236 carla 15 0 2860 468 400 S 4.3 0.1 0:00.97 yes
分析一下这个结果,你会发现一些有趣的事,你会发现,占用CPU最多的程序是konsole虚拟终端程序,而不是“yes”命令,这是因为 “yes”命令是在konsole终端程序中运行的。如果在一个“真正的”控制台(按Ctrl+alt+f2键)中运行同样的命令序列,你将看到 “yes”命令被排在第一位。
有许多停止“yes”命令运行的方式。如果你要回到运行它的shell中,按CTRL+c键就可以了。或者你可以在另一个shell中用“kill”命令停止“yes”命令的运行,Kill命令后面跟PID或者命令名称,如下如示:
$ kill 22236
或者
$ killall yes
按CTRL+c键发出一个SIGINT(信号2),这个信号是键盘要求取得控制权的中断信号。kill和killall这两个命令按照默认的设 置都发出一个SIGTERM信号(编号15)。程序中可以设置对SIGTERM信号(15)是捕捉或者忽略,或者以不同的方式解释。因此,如果你的程序对 于 KILL命令的反应与你预期不同,很可能是被KILL的目标程序的问题。
终止一个父进程通常也终止了它的子进程。不过,情况并不总是如此。你知道子进程是什么吗?使用ps命令加上-f选项就可以看到,如下所示:
$ ps axf
22371 ? R 2:35 _ konsole [kdeinit]
22372 pts/3 Ss 0:00 | _ /bin/bash
24322 pts/3 S+ 0:00 | | _ yes carla is teh awesum
22381 pts/4 Rs 0:00 | _ /bin/bash
24323 pts/4 R+ 0:00 | | _ ps axf
现在,回到SIGHUP的话题
SIGHUP的发音是“sig-hup”,是signal hangup的缩写,含义是“中止信号”。你如何发送一个SIGHUP信号呢?这里有几种方式:
# kill -HUP [pid]
# killall -HUP [process-name]
# kill -1 [pid]
# killall -1 [process-name]
因此,你可以使用PID或者名称,信号名称或者号码。那么为什么要这样做而不使用/etc/init.d/foo命令重新启动呢?使用它们自己 的 init(初始化)文件来控制服务是优先选择的方式,因为这些文件通常包含健全和错误检查以及额外的功能。使用“kill”命令和信号的主要原因是尽可能 明确地终止挂起和失控的进程,而不必重新启动或者登出。
终止进程
正如你在关于信号的man page中所看到的,有十几种控制进程的方法。下面是一些常用的方法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。
SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。
Bash shell的Kil命令l
Bash外壳包含一个内置的kill命令,当执行下面命令:
$ type -all kill
kill is a shell built-in
kill is /bin/kill
命令的结果表明有两个kill命令,一个是BASH的内置命令,另一个是/bin/kill可执行程序。一般来说这两个命令不太可能遇到冲突的情况,不过,如果你确实遇到了kill命令行为异常时,你可以明确的指定/bin/kill命令。
你一定要进一步查阅下面的资源中列出的参考资源来了解Linux中kill的妙用,因为这是你进入维护Linux系统领域的门票。这些知识能够让你像做外科手术一样对系统进行维护,而不用在遇到问题时每一次都重新启动系统,就像我们知道的某些蹩脚的
操作系统那样。
资源
Linux Cookbook一书的第七章“开始和终止Linux”
bash (1) - GNU Bourne-Again Shell
yes (1) - 在被终止前反复打印字符
signal (7) - 可用信号列表
ps (1) - 报告当前进程的快照
kill (1) - 向一个进程发出信号
killall (1) - 按名字消灭进程
pkill (1) - 根据名字和其它属性查看或者发出进程信号
skill (1) - 发送一个信号或者报告进程状态
xkill (1) - 按照X资源消灭一个客户程序