(第七篇)系统编码、自启动配置、HOSTNAME、系统启动、定时任务、进程管理、硬盘及其分区

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以上

原文地址:https://www.cnblogs.com/wsxcode/p/9599656.html