详解Linux中Load_average负载

        也许你在学习Linux操作系统,会遇到很多问题,这里为你讲解Linux系统Load average负载的知识,你可能对于 Linux 的负载均值(load averages)已有了充分的了解。负载均值在 uptime 或者 top 命令中可以看到,它们可能会显示成这个样子:

  load average: 0.09, 0.05, 0.01

  很多人会这样理解负载均值:三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字当然是越小越好。数字越高,说明服务器的负载越 大,这也可能是服务器出现某种问题的信号。

  而事实不完全如此,是什么因素构成了负载均值的大小,以及如何区分它们目前的状况是 “好”还是“糟糕”?什么时候应该注意哪些不正常的数值?

  回答这些问题之前,首先需要了解下这些数值背后的些知识。我们先用最简单的例子说明, 一台只配备一块单核处理器的服务器。

  行车过桥

  一只单核的处理器可以形象得比喻成一条单车道。设想下,你现在需要收取这条道路的过桥 费 - 忙于处理那些将要过桥的车辆。你首先当然需要了解些信息,例如车辆的载重、以及还有多少车辆正在等待过桥。如果前面没有车辆在等待,那么你可以告诉后面的司机通过。 如果车辆众多,那么需要告知他们可能需要稍等一会。

  因此,需要些特定的代号表示目前的车流情况,例如:

  0.00 表示目前桥面上没有任何的车流。 实际上这种情况与 0.00 和 1.00 之间是相同的,总而言之很通畅,过往的车辆可以丝毫不用等待的通过。

  1.00 表示刚好是在这座桥的承受范围内。 这种情况不算糟糕,只是车流会有些堵,不过这种情况可能会造成交通越来越慢。

  超过 1.00,那么说明这座桥已经超出负荷,交通严重的拥堵。 那么情况有多糟糕? 例如 2.00 的情况说明车流已经超出了桥所能承受的一倍,那么将有多余过桥一倍的车辆正在焦急的等待。3.00 的话情况就更不妙了,说明这座桥基本上已经快承受不了,还有超出桥负载两倍多的车辆正在等待。

  上面的情况和处理器的负载情况非常相似。一辆汽车的过桥时间就好比是处理器处理某线程 的实际时间。Unix 系统定义的进程运行时长为所有处理器内核的处理时间加上线程 在队列中等待的时间。

  和收过桥费的管理员一样,你当然希望你的汽车(操作)不会被焦急的等待。所以,理想状态 下,都希望负载平均值小于 1.00 。当然不排除部分峰值会超过 1.00,但长此以往保持这 个状态,就说明会有问题,这时候你应该会很焦急。

  “所以你说的理想负荷为 1.00 ?”

  嗯,这种情况其实并不完全正确。负荷 1.00 说明系统已经没有剩余的资源了。在实际情况中 ,有经验的系统管理员都会将这条线划在 0.70:

  “需要进行调查法则”: 如果长期你的系统负载在 0.70 上下,那么你需要在事情变得更糟糕之前,花些时间了解其原因。

  “现在就要修复法则”:1.00 。 如果你的服务器系统负载长期徘徊于 1.00,那么就应该马上解决这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。

  “凌晨三点半锻炼身体法则”:5.00。 如果你的服务器负载超过了 5.00 这个数字,那么你将失去你的睡眠,还得在会议中说明这情况发生的原因,总之千万不要让它发生。

  那么多个处理器呢?我的均值是 3.00,但是系统运行正常!

  哇喔,你有四个处理器的主机?那么它的负载均值在 3.00 是很正常的。

  在多处理器系统中,负载均值是基于内核的数量决定的。以 100% 负载计算,1.00 表示单个处理器,而 2.00 则说明有两个双处理器,那么 4.00 就说明主机具有四个处理器。

  回到我们上面有关车辆过桥的比喻。1.00 我说过是“一条单车道的道路”。那么在单车道 1.00 情况中,说明这桥梁已经被车塞满了。而在双处理器系统中,这意味着多出了一倍的 负载,也就是说还有 50% 的剩余系统资源 - 因为还有另外条车道可以通行。

  所以,单处理器已经在负载的情况下,双处理器的负载满额的情况是 2.00,它还有一倍的资源可以利用。

  多核与多处理器

  先脱离下主题,我们来讨论下多核心处理器与多处理器的区别。从性能的角度上理解,一台主 机拥有多核心的处理器与另台拥有同样数目的处理性能基本上可以认为是相差无几。当然实际 情况会复杂得多,不同数量的缓存、处理器的频率等因素都可能造成性能的差异。

  但即便这些因素造成的实际性能稍有不同,其实系统还是以处理器的核心数量计算负载均值 。这使我们有了两个新的法则:

  “有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量。

  “核心的核心”法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。所以,它应该有八个处理器内核。

  审视我们自己

  让我们再来看看 uptime 的输出

  ~ $ uptime

  23:05 up 14 days, 6:08, 7 users, load averages: 0.65 0.42 0.36

  这是个双核处理器,从结果也说明有很多的空闲资源。实际情况是即便它的峰值会到 1.7,我也从来没有考虑过它的负载问题。

  那么,怎么会有三个数字的确让人困扰。我们知道,0.65、0.42、0.36 分别说明上一分钟、最后五分钟以及最后十五分钟的系统负载均值。那么这又带来了一个问题:

  我们以哪个数字为准?一分钟?五分钟?还是十五分钟?

  其实对于这些数字我们已经谈论了很多,我认为你应该着眼于五分钟或者十五分钟的平均数 值。坦白讲,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的。 但是如果十五分钟的数值仍然保持在 1.00,那么就值得注意了(根据我的经验,这时候你应该增加的处理器数量了)。

  那么我如何得知我的系统装备了多少核心的处理器?

  在Linux 下,可以使用

  cat /proc/cpuinfo

  获取你系统上的每个处理器的信息。如果你只想得到数字,那么就使用下面的命令:

  grep 'model name' /proc/cpuinfo | wc -l

  Popularity: 11% [?]

  以上就是Linux系统Load average负载的内容。

JavaScript去除相同Array数组元素

  1. <style>  
  2. body, div , a {  
  3. color: #666666;  
  4. font-family: tahoma, verdana, 'courier new', sans-serif;  
  5. font-size: 12px !important;  
  6. font-size: 11px;  
  7. line-height: 18px;  
  8. background: white;  
  9. text-align: center;  
  10. }  
  11. a {  
  12. color: #2C78C5;  
  13. text-decoration:none;  
  14. }  
  15. a:hover {  
  16. /*color: red; 
  17. text-decoration:underline;*/  
  18. border-bottom: 1px dotted #ff0000;  
  19. text-decoration: none;  
  20. }  
  21. </style>  
  22. <style>  
  23. fieldset {  
  24. padding-right: 8px;  
  25. padding-left: 8px;  
  26. padding-top: 8px;  
  27. padding-bottom: 8px;  
  28. width: 78%;  
  29. }  
  30. legend {  
  31. margin-bottom: 0px;  
  32. font-size: 9pt;  
  33. }  
  34. #divheader {  
  35. width:100%;  
  36. text-align:right;  
  37. margin-top:0px;  
  38. padding-bottom:8px;  
  39. border-bottom:1px #cccccc solid;  
  40. }  
  41. #divfooter {  
  42. width:100%;  
  43. text-align:right;  
  44. margin-top:15px;  
  45. padding-top:8px;  
  46. border-top:1px #cccccc solid;  
  47. }  
  48. #divOut {  
  49. text-align:left;  
  50. /*float: left;*/  
  51. }  
  52. </style>  
  53. <fieldset>  
  54. <legend><b><a>菜单</a></b></legend>  
  55. <div id="divheader"><b><a>专注Web技术 体验开发乐趣 -- Redhat</a></b></div>  
  56. <div id="divOut">  
  57. <script language="JavaScript">  
  58. <!--  
  59. var arrData=new Array();  
  60. for(var i=0; i<1000; i++)  
  61. {  
  62.     arrData[arrData.length] = String.fromCharCode(Math.floor(Math.random()*26)+97);  
  63. }  
  64. //document.write(arrData+"<br/>");  
  65. //方法一,普通遍历  
  66. function myArray_Unique(myArray)  
  67. {  
  68.     //var myArray=new Array("a","a","c","a","c","d","e","f","f","g","h","g","h","k");  
  69.     var haha=myArray;  
  70.     for(var i=0;i<myArray.length;i++)  
  71.     {  
  72.         for(var j=0;j<myArray.length;j++)  
  73.         {  
  74.             temp=myArray[i];  
  75.             if((i+j+1)<myArray.length&&temp==myArray[i+j+1]) //如果当前元素与后一个元素相等  
  76.             haha.splice(i+j+1,1);       //然后就移除下一个元素  
  77.         }  
  78.     }  
  79.     return haha;  
  80. }  
  81. //方法二  
  82. function getUnique(someArray)  
  83. {  
  84.     tempArray=someArray.slice(0);//复制数组到临时数组  
  85.     for(var i=0;i<tempArray.length;i++)  
  86.     {  
  87.         for(var j=i+1;j<tempArray.length;)  
  88.         {  
  89.             if(tempArray[j]==tempArray[i])  
  90.             //后面的元素若和待比较的相同,则删除并计数;  
  91.             //删除后,后面的元素会自动提前,所以指针j不移动  
  92.             {  
  93.                 tempArray.splice(j,1);  
  94.             }  
  95.             else  
  96.             {  
  97.                 j++;  
  98.             }  
  99.             //不同,则指针移动  
  100.         }  
  101.     }  
  102.     return tempArray;  
  103. }  
  104. //方法三 正则表达式 -- 适用于字符型数组  
  105. function getUnique2(A)  
  106. {  
  107.     var str = "\x0f"+ A.join("\x0f");  
  108.     while(/(\w+)[^\1]*\1/.test(str))  
  109.     str = str.replace("\x0f"+ RegExp.$1, "");  
  110.     return str.substr(1).split("\x0f");  
  111. }  
  112. //方法四 关联结构  
  113. Array.prototype.unique = array_unique;  
  114. function array_unique()  
  115. {  
  116.     var o = new Object();  
  117.     for (var i=0,j=0; i<this.length; i++)  
  118.     {  
  119.         if (typeof o[this[i]] == 'undefined')  
  120.         {  
  121.             o[this[i]] = j++;  
  122.         }  
  123.     }  
  124.     this.length = 0;  
  125.     for (var key in o)  
  126.     {  
  127.         this[o[key]] = key;  
  128.     }  
  129.     return this;  
  130. }  
  131.   
  132. var d = new Date().getTime();  
  133. document.write(myArray_Unique(arrData));  
  134. d = new Date().getTime()-d;  
  135. document.write("<br/>2000元素 方法一算法计耗时 "+ d +" 毫秒!<br/><br/>");   //大约370ms~390ms左右  
  136. var d = new Date().getTime();  
  137. document.write(getUnique(arrData));  
  138. d = new Date().getTime()-d;  
  139. document.write("<br/>2000元素 方法二算法计耗时 "+ d +" 毫秒!<br/><br/>");   //大约360ms~380ms左右  
  140. var d = new Date().getTime();  
  141. document.write(getUnique2(arrData));  
  142. d = new Date().getTime()-d;  
  143. document.write("<br/>2000元素 正则表达式 方法三算法计耗时 "+ d +" 毫秒!<br/><br/>");//大约80ms左右  
  144. var d = new Date().getTime();  
  145. document.write(arrData.unique());  
  146. d = new Date().getTime()-d;  
  147. document.write("<br/>2000元素 关联结构 方法四算法计耗时 "+ d +" 毫秒!<br /><br />");//大约0ms~10ms左右  
  148. //-->  
  149. </script> 

Linux系统利用Crontab命令实现定时重启

Crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序

  使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,

  cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务:

  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

  crontab -l //列出某个用户cron服务的详细内容

  crontab -r //删除没个用户的cron服务

  crontab -e //编辑某个用户的cron服务

  比如说root查看自己的cron设置:crontab -u root -l

  再例如,root想删除fred的cron设置:crontab -u fred -r

  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

  编辑/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。

  需要将crond设置为系统启动后自动启动的服务,可以在/etc/rc.d/rc.local 中,在末尾加上

  service crond start

  如果还需要在系统启动十加载其他服务,可以继续加上其他服务的启动命令。

  比如: service mysqld start

基本格式 :

*  *  *  *  *  command

分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

  基本用法:

  1. crontab -l

  列出当前的crontab任务

  2. crontab -d

  删除当前的crontab任务

  3. crontab -e (solaris5.8上面是 crontab -r)

  编辑一个crontab任务,ctrl_D结束

  4. crontab filename

  以filename做为crontab的任务列表文件并载入

  crontab file的格式:

  crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间

  分钟 (0-59)

  小时 (0-23)

  日期 (1-31)

  月份 (1-12)

  星期几(0-6,其中 0 代表星期日)

  第 6 个字段是一个要在适当时间执行的字符串

  例子:

  #MIN HOUR DAY MONTH DAYOFWEEK COMMAND

  #每天早上6点10分

  10 6 * * * date

  #每两个小时

  0 */2 * * * date (solaris 5.8似乎不支持此种写法)

  #晚上11点到早上8点之间每两个小时,早上8点

  0 23-7/2,8 * * * date

  #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

  0 11 4 * mon-wed date

  #1月份日早上4点

  0 4 1 jan * date

  补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export)

  (1)先建一个文件crond.txt如下, 每天早上5点36分重新启动

  36 5 * * * reboot

  (2)上传到/opt目录

  (3)运行命令

  crontab /opt/crond.txt

  crontab -l

  让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。

  在Fedora 和Redhat中,我们应该用;

  [root@localhost ~]# /etc/init.d/crond restart

  如果让crond 在开机时运行,应该改变其运行级别;

  [root@localhost ~]# chkconfig --levels 35 crond on

  service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它, cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务

Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成,域之间用空格或Tab分开,其中:

minutes: 分钟域,值的范围是0到59

hours: 小时域,值的范围是0到23

day of month: 日期,值的范围是1到31

month: 月份,值的范围是1到12

day of week: 星期,值的范围是0到6,星期日值为0

command: 所要运行的命令

如果一个域是*,表明命令可以在该域所有可能的取值范围内执行。

如果一个域是由连字符隔开的两个数字,表明命令可以在两个数字之间的范围内执行(包括两个数字 本身)。

如果一个域是由逗号隔开的一系列值组成的,表明命令可以在这些值组成的范围内执行。

如果日期域和星期域都有值,则这两个域都有效。

编写一个文件,用以启动自动备份进程。

cd /opt

touch reboot.txt

在reboot.txt中添加一下内容:

0 4 * * * reboot

crontab /opt/reboot.txt

用crontab -e编辑定时操作,例如加入下行命令:

用crontab -l命令来查看

注意:需要启动服务(添加在rc.local中)

重启crond任务

/etc/init.d/cron restart (ubuntu下)

第一种 在Fedora或Redhat 等以RPM包管理的系统中;

[root@localhost ~]# /etc/init.d/crond start

[root@localhost ~]# /etc/init.d/crond stop

[root@localhost ~]# /etc/init.d/crond restart

/etc/rc.d/init.d/crond restart

命令简介

crontab-操作每个用户的守护程序和该执行的时间表。

部分参数说明

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

crontab-[-u user]-用标准输入替代目前的crontab.

crontab-1[user]-列出用户目前的crontab.

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

crontab-d[user]-删除用户目前的crontab.

crontab-c dir- 指定crontab的目录。

crontab文件的格式:M H D m d cmd.

M: 分钟(0-59)。

H:小时(0-23)。

D:天(1-31)。

m: 月(1-12)。

d: 一星期内的天(0~6,0为星期天)。

cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量。

下面是一个例子文件:

使用scp命令上传/下载文件

上传:

其中,使用 -P 指定SSH的端口

 

下载:

scp+sshpass非交互密码验证:

 

MySQL的基本操作

mysqladmin -u root password 'hcsoft'

1、数据库目录
   /var/lib/mysql/

   2、配置文件
   /usr/share/mysql(mysql.server命令及配置文件)

   3、相关命令
   /usr/bin(mysqladmin mysqldump等命令)

   4、启动脚本

   /etc/rc.d/init.d/(启动脚本文件mysql的目录)
 

2、修改登录密码

   MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。

   1、命令
   /usr/bin/mysqladmin -u root password 'hcsoft'
   格式:mysqladmin -u用户名 -p旧密码 password 新密码

   2、例子
   例1:给root加个密码123456。
   键入以下命令 :
   [root@test1 local]# /usr/bin/mysqladmin -u root password hcsoft

   注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
 

3、测试是否修改成功
   1)不用密码登录
   [root@test1 local]# mysql
   ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
   显示错误,说明密码已经修改。
   2)用修改后的密码登录
   [root@test1 local]# mysql -u root -p
   Enter password: (输入修改后的密码123456)
   Welcome to the MySQL monitor. Commands end with ; or \g.
   Your MySQL connection id is 4 to server version: 4.0.16-standard
   Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
   mysql>
   成功!
   这是通过mysqladmin命令修改口令,也可通过修改库来更改口令。

4.登录MYsql测试
         # mysql -uroot -p
         Enter password:hcsoft
         成功登录

5.Mysql的启动停止
         cd /etc/rc.d/init.d/(启动脚本文件mysql的目录)
         ./mysql stop
         ./mysql start

Linux下基本的命令

.tar.gz
  解压:tar zxvf FileName.tar.gz
  压缩:tar zcvf FileName.tar.gz DirName
  .tar
  解包:tar xvf FileName.tar
  打包:tar cvf FileName.tar DirName
  (注:tar是打包,不是压缩!)
  ---------------------------------------------
  .gz
  解压1:gunzip FileName.gz
  解压2:gzip -d FileName.gz
  压缩:gzip FileName
  .tar.gz 和 .tgz
  解压:tar zxvf FileName.tar.gz
  压缩:tar zcvf FileName.tar.gz DirName
  ---------------------------------------------
  .bz2
  解压1:bzip2 -d FileName.bz2
  解压2:bunzip2 FileName.bz2
  压缩: bzip2 -z FileName
  .tar.bz2
  解压:tar jxvf FileName.tar.bz2
  压缩:tar jcvf FileName.tar.bz2 DirName
  ---------------------------------------------
  .bz
  解压1:bzip2 -d FileName.bz
  解压2:bunzip2 FileName.bz
  压缩:未知
  .tar.bz
  解压:tar jxvf FileName.tar.bz
  压缩:未知
  ---------------------------------------------
  .Z
  解压:uncompress FileName.Z
  压缩:compress FileName
  .tar.Z
  解压:tar Zxvf FileName.tar.Z
  压缩:tar Zcvf FileName.tar.Z DirName
  ---------------------------------------------
  .zip
  解压:unzip FileName.zip
  压缩:zip FileName.zip DirName
  ---------------------------------------------
  .rar
  解压:rar x FileName.rar
  压缩:rar a FileName.rar DirName
  rar请到:http://www.rarsoft.com/download.htm 下载!
  解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp rar_static /usr/bin/rar
  ---------------------------------------------
  .lha
  解压:lha -e FileName.lha
  压缩:lha -a FileName.lha FileName
  lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!
  >解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp lha /usr/bin/
  ---------------------------------------------
  .rpm
  解包:rpm2cpio FileName.rpm | cpio -div
  ---------------------------------------------
  .deb
  解包:ar p FileName.deb data.tar.gz | tar zxf -
  ---------------------------------------------
  .tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm
.deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx
.zoo .cab .kar .cpt .pit .sit .sea
  解压:sEx x FileName.*
  压缩:sEx a FileName.* FileName
lsb_release -a 查看系统版本。

cat /etc/redhat-release 看这个配置文件也可以。不过管理员可以修改这里的内容

cat /proc/cpuinfo 查看cpu信息,processor 0 为一个U, 1为两个,flags超线程。
cat /proc/meminfo 查看内存信息

lspci 查看主板信息

free 查内存

fdisk -l 查硬盘空间

df -h 查硬盘

du -sh 查看文件夹大小

top 这个比较全,内存 进程 负载 都有了。

uptime 查运行时间 负载情况

[root@localhost ~]# rpm -qa|grep -i mysql 检查是否安装了mysql
[root@localhost ~]# rpm -e mysql-libs-5.0.45-6.fc7 卸载这个版本的mysql
[root@localhost ~]# rpm -qa|grep httpd 检查是否安装apache
如果实在实在有卸载不掉的包,可以加—nodeps这个参数来卸载,比如我们卸载php-4.3.9-3.15,实在卸不掉了。
就用:
[root@localhost ~]# rpm -e php-4.3.9-3.15 --nodeps
--------------------------------------------------------------------------------------------------
查看某软件是否运行
[root@unimaCN maintain]# ps -A|grep squid
12916 ? 00:00:00 squid
12918 ? 00:00:27 squid
28563 ? 00:00:00 squid
28564 ? 00:00:00 squid
28565 ? 00:00:00 squid
10615 ? 00:00:00 squid
10616 ? 00:00:00 squid
10617 ? 00:00:00 squid
10618 ? 00:00:00 squid

[root@unimaCN maintain]# killall squid

SSH限制登陆IP

 

之前一直都不会查看ssh的登陆日志(/var/log/secure),不看 不知道,一看吓一跳,发现有n多探测扫描日志,为了禁止这些不法之徒的举动,可以对ssh进行ip限制。其实这个设置我之前已经有配置过的了,但是由于粗 心,有一台服务器的配置写错了,sshd写成ssh了,结果才会造成今天那么多探测日志...

设置具体如下:
在/etc/hosts.allow添加允许ip,(其中192.168.10.88是你要允许登陆ssh的ip,或者是一个网段192.168.10.0/24)

sshd:192.168.10.88:allow

在/etc/hosts.deny添加,(表示除了上面允许的,其他的ip 都拒绝登陆ssh)
sshd:ALL

设置完后重启sshd:service sshd restart,之后我们就会在log中看到类似
Jan 29 08:24:42 linuxboy.cn sshd[15043]: refused connect from 96.56.184.114 (96.56.184.114)
的信息了

 

Windows下通过xmanager远程桌面控制Linux5

First
open terminal and set as follow...

vi /etc/gdm/custom.conf

[xdmcp]
# The follow line is new add
Enable=ture 

Second(just accept root remote login)
open terminal and set as follow...

input a command "gdmstart" on terminal.

then system will open the display options.

select security options.

find "allow remote system administrator login",and sign it.

Third
reboot computer.

or another way.

one

open terminal and set as follow...

vi /etc/gdm/custom.conf

[xdmcp]
Enable=ture

[security]
AllowRemoteRoot=true

second

reboot computer.

Linux下查看并发连接数

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回结果示例:
  LAST_ACK 5
  SYN_RECV 30
  ESTABLISHED 1597
  FIN_WAIT1 51
  FIN_WAIT2 504
  TIME_WAIT 1057

  其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
 
 

状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

Linux下修改主机名

Linux 安装好后,其默认的主机名是 localhost。修改 Linux 主机名需要3步。

1.使用 hostname 修改当前主机名。
hostname centos

2.修改 /etc/sysconfig/network 配置文件,以便下次重启的时,使用新的主机名。
打开 /etc/sysconfig/network 文件,修改 HOSTNAME=centos.domainname。
修改后的 /etc/sysconfig/network 文件如下:
NETWORKING = yes
HOSTNAME      = centos.localdomain

3.修改本机的域名解析文件 /etc/hosts ,使得本机的应用程序能够解析新的主机名。
编辑文件: /etc/hosts
修改: xxx.xxx.xxx.xxx centos.domainname centos
(这里的xxx代表本机的网络地址,也可以是环回地址127.0.0.1)
修改后的 /etc/hosts 文件如下:
127.0.0.1 localhost.localdomain localhost
127.0.0.1 centos.localdomain centos