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

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

  1. Supervisor安装与配置(Linux/Unix进程管理工具)

    原文链接:http://blog.csdn.net/xyang81/article/details/51555473 Supervisor(http://supervisord.org/)是用Pyth ...

  2. 第七篇 PHP编码规范

    当码农多年,始终进步不大,前面说了第一个原因是没有明确的目标:第二个原因是没有养成良好的习惯(即优秀的职业规范). 1)pear 规范 http://pear.php.net/manual/en/st ...

  3. mysql配置参数设置和进程管理

    # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-co ...

  4. Supervisor安装与配置(非守护进程管理工具)

    http://blog.csdn.net/xyang81/article/details/51555473

  5. Linux进程管理工具Supervisor的安装配置

    目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...

  6. (转)Linux系统基础网络配置老鸟精华篇

    Linux系统基础网络配置老鸟精华篇 原文:http://blog.51cto.com/oldboy/784625 对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太 ...

  7. Mysql 5.7.12解压版的安装及配置系统编码

    这篇博文是由于上篇EF+MySql博文引发的,上篇博文中在Seed方法中插入中文数据到Mysql数据库中乱码,后来网上找了N种方法也没解决.重装了MySql并在安装过程中配置了系统编码,此篇记录一下. ...

  8. 跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh

    SpringCloud系列教程 | 第七篇:Spring Cloud Config 配置中心高可用和refresh Springboot: 2.1.6.RELEASE SpringCloud: Gre ...

  9. linux系统下tomcat应用开机自启动 配置

    linux系统下tomcat应用开机自启动 配置 相对简单的方式是将tomcat添加为系统服务第一步  复制文件将 $Tomcat_Home/bin目录下的 catalina.sh脚本文件复制到目录/ ...

随机推荐

  1. 大部分程序员还不知道的 Servelt3 异步请求,原来这么简单?

    前言 博文地址:https://sourl.cn/URptix 当一个 HTTP 请求到达 Tomcat,Tomcat 将会从线程池中取出线程,然后按照如下流程处理请求: 将请求信息解析为 HttpS ...

  2. Pyhton多线程

    在了解多线程前先给大家介绍下并发和并行: 并发:多个任务一起执行 在多任务之间快速切换处理 任务数量大于cpu核数  并行:一个cpu核处理一个任务,多个cpu核同时处理多个任务 任务数量等于或者小于 ...

  3. 第一个AWK程序的尝试

    为了统计API的访问,需要读取8个G的数据,所以学习了下文本处理神器,AWK.简单实例如下: # 以\t分割的文本 awk -F "\t" ' //获取小时的函数 function ...

  4. 实验十--- MySQL过程式数据库对象

    实验十 MySQL过程式数据库对象 一.  实验内容: 1. 存储过程的创建和调用 2. 存储函数的创建和调用 3. 触发器的创建和触发 4. 事件的创建和修改 一.  实验项目:员工管理数据库 用于 ...

  5. Q - 迷宫问题 POJ - 3984(BFS / DFS + 记录路径)

    Q - 迷宫问题 POJ - 3984 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, ...

  6. 1055 The World's Richest (25分)(水排序)

    Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...

  7. 1013 Battle Over Cities (25 分)

    It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...

  8. Mysql索引、explain执行计划

    1.索引的使用场景 哪些情况使用索引: 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 where 3.多表关联查询中,关联字段应该创建索引on两边都要创建索引 select * f ...

  9. mysql正则匹配中文时存在的问题

    可以看到,目前正则匹配字母没问题,c出现1次,2次,3次匹配的结果都是正常的 接下来我们看看匹配中文的效果 可以看到,当匹配连续出现歪时,结果就开始不正常了 然后我去看了下mysql的中文文档中关于正 ...

  10. Flask 入门 (十一)

    上篇文章讲的是一对多,这篇文章应该说多对多了 但是多对多无法用两张表来实现,因为外键......,你懂,哈哈哈!,所以中间需要加一张表来实现 承接上文,修改main.py中的代码如下: #encodi ...