• (第七篇)系统编码、自启动配置、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以上

  • 相关阅读:
    koa2环境搭建
    单例模式
    nodejs fs path
    path node
    webpack code splitting
    babel 插件编写
    C#验证码类
    C#身份证识别相关技术
    C# Socket服务端与客户端通信(包含大文件的断点传输)
    动态抓取网页信息
  • 原文地址:https://www.cnblogs.com/wsxcode/p/9599656.html
Copyright © 2020-2023  润新知