在线测试你的Linux知识水平

  你是一名linux爱好者吗?不妨来测试下自己的Linux知识,不要天天使用 Linux,一些基本知识却不知道哦,呵呵。
   这个测验共有总共有 90 道题目,注意是全英文的,会考包括人物、系统管理、命令、名称、应用、发行版等等,都是跟linux相关的。

    How well do you know your free software people, apps and commands? Put yourself to the test and see just how much you know - we don't think even Linus Torvalds knows all these...
    在线测试Linux知识水平                          附带上参考答案

简单总结echo()和print()、require()和include()等易混淆函数的区别

1.echo和print的区别

PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。

$r = print "Hello World";  

这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print语句。

2.include与require的区别

include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:

if($a){    
include("a.php");    
}  

而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:

if($a){    
require("a.php");    
}  

在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误。

当然,从字面意思上我们也可以理解七分:requre是很强硬的请求、要求的意思。

3.require_once()和include_once()语句

题外话了,因为长的像,简单require_once()和include_once()语句分别对应于require()和include()语句。require_once() 和include_once()语句主要用于需要包含多个文件时,可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。

4.空字符串('')和NULL的区别

PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,你可以试一下echo gettype('');和echo gettype(NULL);你会发现他们打印出来的分别是string和NULL,当然还有0也容易混淆,你可以试试echo gettype(0);打印一下类型,会发现0的类型是integer(整型),可见字符串('')、NULL和0是“等值”但不等类型。

5.isset和 empty的区别

从字面意思上我们就可以明白:empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置。但是这里有一点绝对要注意起来:当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。比如当我们检测$id 变量的时候,当$id=0 ,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty 认为没有配置,isset 则能够取得 $id 的值,看下边例子:
   $id=0;   
   emptyempty($id)?print "我是空的":print "我是$id ."; //结果:我是空的   
   !isset($id)?print "我是空的":print "我是$id .";//结果:我是0   

  6.==(等)和===(恒等)的区别

回顾上面第四条空字符串("")和NULL的区别,再来看一个例子:

'' == NULL;   
'' === NULL;  

运行之后你会发现第一个为true,而第二个则为false!可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。

thenynoc.com VPS Review

我在www.thenynoc.com于2009年1月6号购买的VPS (Super Tiny)已经购买一个多月了,该VPS只运行了分享Linux社区,看一下uptime:

Last login: Sun Feb 15 16:32:31 2009 from 124.131.220.113
[root@noc ~]# clear
[root@noc ~]# uptime
 02:49:06 up 32 days, 19:04,  1 user,  load average: 0.00, 0.00, 0.00
[root@noc ~]#

呵呵,已经无故障运行32天了,继续关注 thenynoc.com ,同时也关注一下分享Linux社区

如果想买VPS可以到VPSer上看看,或者我推荐的美国VPS主机

Name.com的.com,.net 和.org续费优惠码

适合Name的.com, .net 和 .org的续费!
每个可节省$1.5
续费价:$7.49
优惠码:SAUDADE
已测试!完全可用!

UnixBench:测试Linux VPS性能

UnixBench是一款不错的Linux下的VPS性能测试软件,现在说一下具体用法。

UnixBench 4.10 下载地址:http://soft.vpser.net/test/unixbench/unixbench-4.1.0-wht.tar.gz

[root@noc ~]# wget http://soft.vpser.net/test/unixbench/unixbench-4.1.0-wht.tar.gz

[root@noc ~]# tar xzf unixbench-4.1.0-wht.tar.gz
[root@noc ~]# ls
unixbench-4.1.0-wht-2  unixbench-4.1.0-wht.tar.gz

[root@noc ~]# cd unixbench-4.1.0-wht-2/
[root@noc unixbench-4.1.0-wht-2]# make

[root@noc unixbench-4.1.0-wht-2]# ./Run

一下是运行后显示的内容:

==============================================================
BYTE UNIX Benchmarks (Version 4.1-wht.2)
System -- Linux noc.lnmp.org 2.6.18-92.1.13.el5.028stab059.6 #1 SMP Fri Nov 14 16:01:01 MSK 2008 i686 i686 i386 GNU/Linux
simfs                  5120000   1581972   3538028  31% /

Start Benchmark Run: Wed Feb  4 05:11:25 PST 2009
05:11:25 up 20 days, 21:26,  1 user,  load average: 0.00, 0.00, 0.00

End Benchmark Run: Wed Feb  4 05:21:40 PST 2009
05:21:40 up 20 days, 21:37,  1 user,  load average: 15.46, 6.32, 2.72
INDEX VALUES
TEST                                        BASELINE     RESULT      INDEX

Dhrystone 2 using register variables        376783.7 23797779.3      631.6
Double-Precision Whetstone                      83.1     1407.7      169.4
Execl Throughput                               188.3    10095.2      536.1
File Copy 1024 bufsize 2000 maxblocks         2672.0   204163.0      764.1
File Copy 256 bufsize 500 maxblocks           1077.0    74664.0      693.3
File Read 4096 bufsize 8000 maxblocks        15382.0  1629641.0     1059.4
Pipe Throughput                             111814.6  3058960.1      273.6
Pipe-based Context Switching                 15448.6   887966.3      574.8
Process Creation                               569.3    26803.0      470.8
Shell Scripts (8 concurrent)                    44.8     2503.6      558.8
System Call Overhead                        114433.5  2409758.4      210.6
=========
FINAL SCORE                                                     475.4
[root@noc unixbench-4.1.0-wht-2]#

我的VPS是www.thenynoc.com的,内存是256MB,分数是475.4,自己感觉这个分数还不错。快去测试一下你的VPS吧。

Linux服务器安装后的优化

我们的服务器并不是安装完成后就可直接托管到机房了,
而是需要进行一系列的优化配置和安全配置等

   
 1,关闭不需要的服务
    这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,
    这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性
  
    那么哪些服务是肯定要保留的呢?
    在linux机器上通常有四项服务是必须保留的
     iptables
             linux下强大的防火墙,只要机器需要连到网上,哪里离得开它
     network
             linux机器的网络,如果不上网可以关闭,只要上网当然要打开它
     sshd
             这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,
              那么访问机器时需要通过这个sshd服务进行
     syslog
            这是linux系统的日志系统,必须要有,
            否则机器出现问题时会找不到原因

    除了这四项必需的服务之外,其他的服务需要保留哪些呢?
    这时就可以根据系统的用途而定,比如:数据库服务器,就需要启用mysqld(或oracle)
                                    web服务器,就需要启用apache
  
  
 
  2,关闭不需要的tty
请编辑你的/etc/inittab
找到如下一段:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问
此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的
你用ps auxf这个命令可以看到,是六个进程
root      3004  0.0  0.0  1892  412 tty1     Ss+  Jun29   0:00 /sbin/mingetty tty1
root      3037  0.0  0.0  2492  412 tty2     Ss+  Jun29   0:00 /sbin/mingetty tty2
root      3038  0.0  0.0  2308  412 tty3     Ss+  Jun29   0:00 /sbin/mingetty tty3
root      3051  0.0  0.0  1812  412 tty4     Ss+  Jun29   0:00 /sbin/mingetty tty4
root      3056  0.0  0.0  2116  412 tty5     Ss+  Jun29   0:00 /sbin/mingetty tty5
root      3117  0.0  0.0  2396  412 tty6     Ss+  Jun29   0:00 /sbin/mingetty tty6

如何关闭这些进程?
通常我们保留前2个控制台就可以了,
把后面4个用#注释掉就可以了

然后无需重启机器,只需要执行 init q 这个命令即可
init q
q作为参数的含义:重新执行/etc/inittab中的命令

3,如何关闭ipv6?

   ipv6目前我们还不需要,但系统安装完成后它会作为模块常驻核心,没有必要,
   可以用这个步骤来关闭它:
   首先编辑网络配置文件:
   vi /etc/sysconfig/network
   修改
   NETWORKING_IPV6=yes

   为
    NETWORKING_IPV6=no

   然后关闭其模块:vi /etc/modprobe.conf
   在文件中添加以下两行
    alias net-pf-10 off
    alias ipv6 off

   修改完成后需重启机器使之生效

4,如何关闭atime?

    一个linux文件默认有3个时间:
         atime:对此文件的访问时间
         ctime:此文件inode发生变化的时间
         mtime:此文件的修改时间

  如果有多个小文件时通常没有必要记录文件的访问时间,
  这样可以减少磁盘的io,比如web服务器的页面上有多个小图片
 
  如何进行设置呢?
  修改文件系统的配置文件:vi /etc/fstab
  在包含大量小文件的分区中使用noatime,nodiratime两项
  例如:
  /dev/md5                /data/pics1           ext3    noatime,nodiratime 0 0
  
  这样文件被访问时就不会再产生写磁盘的io

5,一定要让你的服务器运行在level 3上
  做法:
      vi /etc/inittab
       
      id:3:initdefault:
  让服务器运行X是没有必要的

    6,优化sshd
     
          X11Forwarding no        //不进行x图形的转发
          UseDNS no               //不对IP地址做反向的解析
             
    7,优化shell
         修改命令history记录
          # vi /etc/profile
         找到 HISTSIZE=1000 改为 HISTSIZE=100
         然后 source /etc/profile