linux查看系统编码和修改系统编码的方法
查看支持的字符编码
使用locale命令,
如:
root@ubuntu:/etc# locale
然后修改/etc/locale.conf,如改成中文编码:
LANG=en_US.UTF-8
改为
LANG="zh_CN.GBK"
然后在不重启的情况下重新加载locale.conf文件
root@ubuntu:/etc# source /etc/locale.conf
自启动配置
一、添加开机自启服务
在centos7中添加开机自启服务非常方便,只需要两条命令(以Jenkins为例):
 
systemctl enable nginx.service #设置nginx服务为自启动服务
sysstemctl start  nginx.service #启动nginx服务
二、添加开机自启脚本
在centos7中增加脚本有两种常用的方法,以脚本autostart.sh为例:
#!/bin/bash
#description:开机自启脚本
/usr/local/tomcat/bin/startup.sh  #启动tomcat
方法一
1、赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh
2、打开/etc/rc.d/rc/local文件,在末尾增加如下内容
/opt/script/autostart.sh
3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local
方法二
1、将脚本移动到/etc/rc.d/init.d目录下
mv  /opt/script/autostart.sh /etc/rc.d/init.d
2、增加脚本的可执行权限
chmod +x  /etc/rc.d/init.d/autostart.sh
3、添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
chkconfig --add autostart.sh
chkconfig autostart.sh on
网络配置文件
在RHEL或者CentOS等Redhat系的Linux系统里,跟网络有关的主要设置文件如下:
/etc/host.conf         配置域名服务客户端的控制文件
/etc/hosts             完成主机名映射为IP地址的功能
/etc/resolv.conf       域名服务客户端的配置文件,用于指定域名服务器的位置
/etc/sysconfig/network 包含了主机最基本的网络信息,用于系统启动.
/etc/sysconfig/network-script/    系统启动时初始化网络的一些信息
/etc/xinetd.conf       定义了由超级进程xinetd启动的网络服务
/etc/networks          完成域名与网络地址的映射
/etc/protocols         设定了主机使用的协议以及各个协议的协议号
/etc/services          设定主机的不同端口的网络服务
 
1. /etc/host.conf文件的默认信息如下:
 
multi on           #允许主机拥有多个IP地址
order hosts,bind   #主机名解析顺序,即本地解析,DNS域名解析的顺序
 
这个文件一般不需要我们修改,默认的解析顺序是本地解析,DNS服务器解析,也就是说在本系统里对于一个主机名首先进行本地解析,如果本地解析没有,然后进行DNS服务器解析。
 
2. /etc/hosts文件默认的内容大概如下:
 
127.0.0.1   butbueatiful   localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
 
可见,默认的情况是本机ip和本机一些主机名的对应关系,第一行是ipv4信息,第二行是ipv6信息,如果用不上ipv6本机解析,一般把该行注释掉。
第一行的解析效果是,butbueatiful localhost.localdomain localhost都会被解析成127.0.0.1
3. /etc/resolv.conf, 指定域名解析的DNS服务器IP等信息, 配置参数一般接触到的有4个:
nameserver    指定DNS服务器的IP地址
domain        定义本地域名信息
search        定义域名的搜索列表
sortlist      对gethostbyname返回的地址进行排序
 
但是最常用的配置参数是nameserver,其他的可以不设置,这个参数指定了DNS服务器的IP地址,如果设置不正确,就无法进行正常的域名解析。
一般来说,推荐设置2个DNS服务器,比如我们用google的免费DNS服务器,那么该文件的设置内容如下:
 
nameserver 8.8.8.8
nameserver 8.8.4.4
 
同样,这个文件也是危险的,如果被人恶意改成了他自己的DNS服务器,他就可以为所欲为的控制你通过域名访问的每个目的地了,这就是常说的DNS劫持。
 
4. /etc/sysconfig/network, 典型的配置如下:
 
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=butbueatiful
GATEWAY=192.168.0.1
 
参数简要解释:
    
NETWORK          设置网络是否有效,yes有效,no无效
NETWORKING_IPV6  设置ipv6网络是否有效,yes有效,no无效
HOSTNAME         设置服务器的主机名,最好和/etc/hosts里设置一样,否则在使用一些程序的时候会有问题。
GATEWAY          指定默认网关IP
 
5. ifcfg-ethX, 设置对应网口的IP等信息, 比如第一个网口, 那么就是/etc/sysconfig/network-scripts/ifcfg-eth0,配置例子:
 
DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.0.255"
HWADDR="00:16:36:1B:BB:74"
IPADDR="192.168.0.100"
NETMASK="255.255.255.0"
ONBOOT="yes"
 
参数简要解释:
 
DEVICE        设备名,不要自己乱改,和文件ifcfg-ethX里的ethX要一致
BROADCAST     广播地址
HWADDR        物理地址,这个你不要乱改
IPADDR        IP地址
NETMASK       子网掩码
ONBOOT        启动或者重启网络时,是否启动该设备,yes是启动,no是不启动
BOOTPROTO     开机协议,最常见的三个参数如下:
              static(静态IP)
              none(不指定,设置固定ip的情况,这个也行,但是如果要设定多网口绑定bond的时候,必须设成none)
              dhcp(动态获得IP相关信息)
 
6. route-ethX,比如第一个网口eth0的路由信息,那么就是/etc/sysconfig/network-scripts/route-eth0:
 
比如我们现在有这样一个需求,通过eth0去网络172.17.27.0/24不走默认路由,需要走192.168.0.254,那么我们第一反应,肯定是用route命令追加路由信息:
[root@butbueatiful ~]# route add -net 172.17.27.0 netmask 255.255.255.0 gw 192.168.0.254 dev eth0
 
可是,你没意识到的是,这样只是动态追加的而已,重启网络后,路由信息就消失了,所以需要设置静态路由,这时候就要设置/etc/sysconfig/network-scripts/route-eth0文件了,如果没有该文件,你就新建一个:
[root@butbueatiful ~]# vi /etc/sysconfig/network-scripts/route-eth0
#追加
172.17.27.0/24via 192.168.0.254
 
这下即使重启网络,重启系统,该路由也会自动加载,当然了,如果你没有这样的需要,那么这个文件就没必要创建和配置了
 
Hostname(主机名)配置
在CentOS7中,有三种定义的主机名:
 
静态的(Static hostname)
“静态”主机名也称为内核主机名,是系统在启动时从/etc/hostname自动初始化的主机名。
 
瞬态的(Tansient hostname)
“瞬态”主机名是在系统运行时临时分配的主机名,例如,通过DHCP或mDNS服务器分配。
 
灵活的(Pretty hostname)
“灵活”主机名也有人叫做“别名”主机名。
“灵活”主机名则允许使用自由形式(包括特殊/空白字符)的主机名,以展示给终端用户(如xh01@f5)。
 
“静态”主机名和“瞬态”主机名都遵从作为互联网域名同样的字符限制规则。
 
在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置。
 
查看主机名:
//查看一下当前主机名的情况,查看全部三种主机名
hostnamectl   
 
//或者,查看全部三种主机名
hostnamectl status
 
//只查看静态、瞬态或灵活主机名,分别使用--static,--transient或--pretty选项
[root@xh00 ~]# hostnamectl --static
xh00
 
//或者查看主机名配置文件,查看到的是静态的(Static hostname)
cat /etc/hostname
查看当前Linux操作系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等):
 
uname -a //查看到的是瞬态的(Tansient hostname)
cat /etc/redhat-release //查看操作系统环境
 
修改主机名:
方法1:临时有效
hostname 主机名 //只能临时修改的主机名,当重启机器后,主机名称又变回来了。
 
hostname xh01
 
方法2:永久生效
//永久性的修改主机名称,重启后能保持修改后的。
hostnamectl set-hostname xxx
 
//删除hostname
hostnamectl set-hostname ""
hostnamectl set-hostname "" --static
hostnamectl set-hostname "" --pretty
修改所有三个主机名:静态、瞬态和灵活主机名:
[root@localhost ~]# hostnamectl set-hostname xh00
[root@localhost ~]# hostnamectl --pretty
[root@localhost ~]# hostnamectl --static
xh00
[root@localhost ~]# hostnamectl --transient
xh00
就像上面展示的那样,在修改静态/瞬态主机名时,任何特殊字符或空白字符会被移除,而提供的参数中的任何大写字母会自动转化为小写。
一旦修改了静态主机名,/etc/hostname 将被自动更新。然而,/etc/hosts 不会更新以保存所做的修改,所以你每次在修改主机名后一定要手动更新/etc/hosts,之后再重启CentOS 7。否则系统再启动时会很慢。
 
方法3:永久生效
修改配置文件/etc/hostname来实现主机名的修改。把该文件内容hostname name中的name替换成自己想要的主机名重启即可。
vim /etc/hostname
hostname  myname
系统启动顺序
启动第一步--加载BIOS
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
 
启动第二步--读取MBR
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
 
启动第三步--Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
 
启动第四步--加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
 
启动第五步--用户层init依据inittab文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多
 
启动第六步--init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的
 
启动第七步--启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
 
启动第八步--执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
 
启动第九步--执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
 
启动第十步--执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。
利用crontab定时执行任务
cron服务是Linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:
 
/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
以上1-4行分别为启动、停止、重启服务和重新加载配置。
 
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可
 
查看当前用户的crontab,输入 crontab -l;
 
编辑crontab,输入 crontab -e;
 
删除crontab,输入 crontab -r
 
添加任务
 
  crontab -e
  0 */1 * * * command
  0 */2 * * * command
查询任务是否加了:
 
  crontab -l -u root #查看root用户
  0 */1 * * * command
  0 */2 * * * command
 
基本格式 :
*  *  *  *  *  command
分 时   日  月  周    命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
 
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
红色路径一般为软件安装位置
一月一号的4点重启apache
进程管理systemd详解
系统启动过程中,当内核启动完成,后加载根文件系统,后绪的一些用户空间的服务的管理工作,就交由init进行启动和管理,在CentOS7上,init变成了systemd。
 
systemd的核心概念:unit
unit由其相关的配置文件进行标识、识别和配置,也就是说一个unit到底定义与否,由其配置文件进行标识。这类配置文件中主要包含了几个类别:系统服务,监听的socket、保存的快照以及其他与init相关的信息,这些配置文件中主要保存在:
/usr/lib/systemd/system/    每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/  
/run/systemd/system/    系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system/    管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行
 
unit的常见类型:
service unit:这类unit的文件扩展名为.service,主要用于定义系统服务(其扮演了在centos6上/etc/init.d/目录下的服务脚本的作用)
target unit:这类unit的文件扩展名为.target,主要用于模拟实现"运行级别"的概念
device unit:这类unit文件扩展名为.device,用于定义内核识别的设备,然后udev利用systemd识别的硬件,完成创建设备文件名
mount unit:这类unit文件扩展名为.mount,主要用于定义文件系统挂载点
socket unit:这类unit文件扩展名为.socket,用于标识进程间通信用到的socket文件
snapshot unit:这类unit文件扩展名为.snapshot,主要用于实现管理系统快照
swap unit:这类unit文件扩展名为.swap,主要用于标识管理swap设备
automount unit:这类unit文件扩展名为.automount,主要用于文件系统自动挂载设备 
path unit:这类unit文件扩展名为.path,主要用于定义文件系统中的文件或目录
 
systemd对服务的管理(service类unit的管理)
主要是依靠service类型的unit文件进行管控的完成的
 
systemctl命令:
 
语法:systemctl [OPTIONS…] COMMAND [SERVICE_NAME.service…]
 
<1>启动:service SERVICE_NAME start ==>  systemctl start SERVICE_NAME.service
 
<2>停止:service SERVICE_NAME stop ==>  systemctl stop SERVICE_NAME.service
 
<3>重启:service SERVICE_NAME restart ==>  systemctl restart SERVICE_NAME.service
 
<4>状态:service SERVICE_NAME status ==>  systemctl status SERVICE_NAME.service
 
<5>条件式重启:(相当于如果服务之前启动了,则对服务进行重启,如果服务之前没启动,则不执行任何操作)
 
service SERVICE_NAME condrestart ==>  systemctl tryrestart SERVICE_NAME.service
 
<6>重载或重启服务:(相当于如果服务支持不重启而重载配置文件,就进行重载,如果服务不支持重载配置文件,就重启服务)
 
cenntos6不支持  
 
systemctl reload-or-restart SERVICE_NAME.service
 
<7>重载或条件是重启:(相当于如果服务支持不重启而重载配置文件,就进行重载,如果服务不支持重载配置文件,就重启服务,但重启的前提是该服务之前是开启的)
 
cenntos6不支持  
 
systemctl reload-or-try-restart SERVICE_NAME.service
 
<8>查看某服务当前是否激活:
 
centos6不支持  
 
systemctl is-acive SERVICE_NAME.service
 
<9>查看所有已激活的服务:
 
systemctl list-unit –type|-t service
 
<10>查看所有的服务,也就是所有已经装载load的服务,包含已激活和未激活的:
 
chkconfig –list ==> systemctl list-unit -t service -a
 
显示出来的信息的含义:
loaded:Unit配置文件已处理
                active(running):一次或多次持续处理的运行
                active(exited):成功完成一次性的配置
                active(waiting):运行中,等待一个事件
                inactive:不运行
                enabled:开机启动
                disabled:开机不启动
                static:开机不启动,但可被另一个启用的服务激活
 
<11>设置服务可以开机自动启动:
chkconfig SERVICE_NAME on ==> systemctl enable SERVICE_NAME.service
 
<12>禁止服务开机自动启动:
chkconfig SERVICE_NAME off ==> systemctl disable SERVICE_NAME.service
 
<13>查看某服务是否能够开机自启动:
chkconfig –list SERVICE_NAME ==> systemctl is-enabled SERVICE_NAME.service
 
<14>禁止某服务设定为开机自启:
systemctl mask SERVICE_NAME.service
 
<15>取消上述禁止:
systemctl unmask SERVICE_NAME.service
 
<16>查看服务的依赖关系:
systemctl list-dependencies SERVICE_NAME.service
 
systemd对target类unit的管理(类似于运行级别的管理)
运行级别的对应关系:
0 ==> runlevel0.target 或 poweroff.target
1 ==> runlevel1.target 或 rescue.target
2 ==> runlevel2.target 或 multi-user.target
3 ==> runlevel3.target 或 multi-user.target
4 ==> runlevel4.target 或 multi-user.target
5 ==> runlevel5.target 或 graphical.target
6 ==> runlevel6.target 或 reboot.target
 
<1>级别切换:
init 数字 ==> systemctl isolate NAME.target
<2>查看当前运行级别:
runlevel ==> systemctl –list-unit -t target
<3>查看所有装载的target:
systemctl –list-unit -t target -a
<4>查看默认运行级别:
systemctl get-default
<5>设定默认运行级别:
systemctl set-default NAME.target
centos6修改/etc/inittab文件
<6>切换至紧急救援模式:
systemctl rescue
<7>切换至紧急emergency模式:比紧急救援模式加载的东西更加少,紧急救援模式还会执行系统初始化脚本/etc/rc.d/rc.sysinit系统初始化脚本,但emergency不会执行系统初始化脚本,通常用于当装了某些硬件驱动后无法正常启动时,才进入该模式。
systemctl emergency
 
systemd相关的其他常用命令:
关机:systemctl halt、systemctl poweroff
重启:systemctl reboot
挂起:systemctl suspend
快照:systemctl hibernate
快照并挂起:systemctl hybrid-sleep
 
servie unit文件的组织格式:
/etc/systemd/system/目录下的个unit文件和/usr/lib/systemd/system/下文件的关系:
当运行级别定义后,该级别下需要加载运行的服务等,会从/usr/lib/systemd/system/下的对应的unit以软链接方式(相当于windows里面的快捷方式)映射/etc/systemd/system/目录下
如利用systemctl set-default runlevel5.target 修改默认运行级别后,原来/etc/systemd/system/default.target会重新链接到/usr/lib/systemd/system/graphical.target
 
service unit file文件的组成:
文件通常由三部分组成:
[Unit]:定义与Unit类型无关的通用选项,用于提供unit的描述信息,unit行为及依赖关系等;
[Service]:与特定类型相关的专用选项,此处为service类型
[Install]:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或仅用时用到的一些选项;
 
unit段的常用选项:
Description:描述信息,意义性描述
After:定义unit启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
Requies:依赖到的其他units;强依赖,被依赖的unit无法激活时,当前unit也无法激活
Wants:指明依赖到的其他units;弱依赖,被依赖的unit无法激活时,当前unit可以被激活
Conflicts:定义units间的冲突关系
 
service段的常用选项:
Type:用于定义ExecStart及相关参数的功能的unit进程启动类型;
ExecStart:定义启动进程时执行的命令。
类型:
simple:默认值,表示由ExecStart启动的进程为主进程
forking:表示由ExecStart启动的进程生成的其中一个子进程将成为主进程,启动完成后,父进程会退出
oneshot:功能类似于simple,但是在启动后续的units进程之前,主进程将会退出
notify:类似于simple,表示后续的units,仅在通过sdnotify函数发送通知以后,才能运行该命令
idle:
常见的是notify、forking、simple
EnvironmentFile :指明环境配置文件,为真正ExecStart执行之前提供环境配置或变量定义等文件
ExecStart:指明启动unit要运行的命令或脚本;ExecStartPre、ExecStartPost表示启动前或启动后要执行的命令或脚本
ExecStop:指明停止unit要运行的命令或脚本
Restart:表示进程意外终止了,会自动重启
 
install段的常用选项:
Alias:当前unit的别名
RequiredBy:被那些units所依赖,强依赖
WantedBy:被那些units所依赖,弱依赖
注意:对于新创建的unit文件,或修改了的unit文件,必须要让systemd重新识别此配置文件,可利用:systemctl daemon-reload 进行重载
 
unit文件示例
vim /etc/systemd/system/bak.service
            [Unit]
                Description=backup my etc
                Requires=atd.service
                #(Requires运行不了,可以改成Wants试试)
            [Service]
                Type=simple
                ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"
            [Install]
                WantedBy=multi-user.target
 
编辑完成后,执行
            systemctl daemon-reload 让systemd识别此服务配置文件
            systemctl start bak.service  启动此服务
 
查询硬件信息
版本
①  确认是64位还是32位,其他信息不多
$ uname -a
②  看到更多信息
$ more /etc/*release
 
CPU信息
总核数 = 物理CPU个数 × 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 × 每颗物理CPU的核数 × 超线程数
①  查看物理CPU个数
$ cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
 
② 查看每颗物理CPU中core的个数(即核数)
 
$ cat /proc/cpuinfo | grep "cpu cores" | uniq
③  查看逻辑CPU的个数
$ cat /proc/cpuinfo | grep "processor" | wc -l
③  查看CPU信息(型号)
$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
④  查看CPU详细信息
$ cat /proc/cpuinfo
 
查看环境变量
①  环境变量
$ env
系统运行
①  系统运行时间
$ uptime
②  查看平均负载
平均负载?
$ cat /proc/loadavg
 
内存
①  内存详细信息
$ cat /proc/meminfo
MemTotal总内存,MemFree可用内存
②  查看可用内存(-m,单位是m,-g,单位是g)
$ free -m
空闲内存:total - used = free + buff/cache
 
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
 
网络属性信息
①  查看所有网络接口的属性
$ ifconfig
②  带宽
ethtool eth0       //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等
ethtool –h        //显示ethtool的命令帮助(help)
ethtool –i eth0    //查询eth0网口的相关信息
ethtool –d eth0    //查询eth0网口注册性信息
ethtool –r eth0    //重置eth0网口到自适应模式
ethtool –S eth0    //查询eth0网口收发包统计
ethtool –s eth0 [speed 10|100|1000] [duplex half|full]  [autoneg on|off]        //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商
复制代码
③  查看路由表
$ route -n
④  查看所有监听端口
$ netstat -ntpl
⑤  查看所有已经建立的连接
$ netstat -napt
⑥  查看某端口使用情况
$ lsof -i:8030(端口号)
 
查看进程
①  查看所有进程
$ ps -ef
可以通过ps -ef | grep 进程名 进行过滤
$ ps -aux
ps -aux 可以看到进程占用CPU,内存情况
②  实时显示进程状态
$ top
 
查看用户
①  查看活动用户
$ w
②  查看指定用户的信息
$ id root
③  查看用户登录日志
$ last
④  查看系统所有用户
$ cut -d: -f1 /etc/passwd
 
磁盘和分区
①  查看各分区使用情况
$ df -h
②  查看指定目录的大小
$ du -sh /root
③  查看所有分区
$ fdisk -l
④  查看所有交换分区
$ swapon -s
 
分区实战
硬盘 
硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。我们这里提到的磁盘分区中的磁盘指的就是硬盘。

磁盘分区方案
1) 一个交换(swap)分区。交换分区用来支持虚拟内存。如果你的计算机内存小于16MB,必须创建交换分区。即使你有更多的内存,仍然推荐使用交换分区。交换分区的最小尺寸是你的内存的大小,16MB(两者取大)。交换分区最大可以达到127 MB ,所以创建更大的交换分区是浪费空间。注意,可以创建和使用一个以上的交换分区(尽管这通常安装在大的服务器上)。
2) 一个根(root)分区。根分区是”/”(根目录)所在地(注意不是/root)。它只需要启动系统所须的文件和系统配置文件。对于大多数系统,50MB 到100M B 的根分区可以工作得很好。
3) 一个/usr 分区。/usr是Linux 系统的许多软件所在的地方。根据你交换安装的包的数量,这个分区应该在300MB到700MB之间。如果可能,将最大的空间用于/usr分区。任何你以后将要安装的基于RPM 的包都会使用比其他分区更多的/usr空间。
4) 一个/home分区。这是用户的home目录所在地; 它的大小取决于你的Linux 系统有多少用户,以及这些用户将存放多少数据。如果系统将用作E-mail服务的话,为每一位用户预留5MB左右的空间,如果将提供个人主页存放空间的话,则应至少为每位用户预留20MB空间。对于网站建设者,还有一点需要注意的是,你的Web 服务和匿名Ftp/home/ftp)服务器的内容也在这里!
 
另外,你的环境可能会要求你创建一个和多个以下的分区:
1) 一个/usr/local 分区。一般/user/local用来存放与其余Linux 系统不同的软件,如不是RPM包的软件。它的尺寸取决于你准备存放的这些软件的数量。
2) 一个/usr/src分区。在一个Linux 系统中,/usr/src通常存放两样东西: 一是Linux 内核源程序。内核的所有源程序都放在这里,新的内核也在这里创建。目前,内核源程序大概有30MB 。记住,你可能需要更多的空间来创建内核,或者保存几个不同版本的内核。 二是RPM包的源程序。如果安装了包的源程序,文件将存放在这里。注意,除非特别指定,创建包也将使用在这里的一个’创建目录’。同样,这个分区的尺寸也取决于你将在这里安装的软件的数量。
3) 一个/tmp分区。就像它的名字,/tmp分区用来存放临时文件。对于一个大型的,多用户的系统或者网络服务器,专门创建一个/tmp 分区是一个好主意。对于一个单用户的工作站,就不必专门创建一个/tmp分区了。
4) 一个/var分区。你的Linux 系统将把日志写在/var/log。打印队列的文件通常写在/var/spool 。这只是两个写在/var的例子。除非特别配置,/var将是根文件系统的一部分,通常不占很多空间。如果你的系统有很多打印、邮件、或者日志,可以考虑专门创建一个/var分区。一般来讲,只有多用户或者服务器才需要专门的/var分区。
5) 一个/boot分区。这里提到的分区多数是针对大的系统,这个分区则对空间很少的小的系统很有用。所有LILO 启动时需要的文件都在/boot目录。因此最好的办法就是专门为根文件分一个区,大小至多64MB,最好首先分这个区,然后再分/usr等等。
 
Linux服务器分区的方案:
linux系统的硬盘空间为500G
要求实现如下的linux分区:/var分区一定要大(不论postfix邮件,还是LAMP的WEB 服务器等)。最好是400G以上。具体的/boot 只要100M就足够了。
 
分区类型     分区的实际大小
/           1G-2G (最少要150–250MB)
/boot       32M-100M (启动分区,最多只要100M左右)
/opt        100M-1G (附加应用程序)
/tmp        40M-1000M (最大可以设为1G左右,如果加载ISO镜像文件就设为4G左右吧,一般不用那么多)
/home       2G-10G (每个用户100M左右,具体自定。用户目录。)
/usr        3G-10G 最少要500M左右,一般宽松的服务器要分到4-6G)
/usr/local  3G-15G (自已安装程序安装在此)
/var        >2G–硬盘余下全部空间 ( 最少300M-500M,一般2-3G,做服务器的话把上面余下的空间都分给它)
 
Linux桌面分区方案
分区类型     分区的实际大小
/           1G
/boot       32M
/opt        100M
/tmp        50M
/home       1G-10G
/usr        3G-6G
/usr/local  3G-5G
/var        500M以上