标签: Linux

  • linux运维学习之netstat命令常见故障错误排查汇总

    netstat命令简介

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

    输出信息含义

    执行netstat后,其输出结果为

    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
    tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
    tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
    tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
    tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
    
    Active UNIX domain sockets (w/o servers)
    Proto RefCnt Flags Type State I-Node Path
    unix 1 [ ] STREAM CONNECTED 16178 @000000dd
    unix 1 [ ] STREAM CONNECTED 16176 @000000dc
    unix 9 [ ] DGRAM 5292 /dev/log
    unix 1 [ ] STREAM CONNECTED 16182 @000000df
    

    从整体上看,netstat的输出结果可以分为两个部分:

    一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

    另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

    Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

    常见参数

    -a (all)显示所有选项,
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态

    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。

    提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

    实用命令实例

    1、列出所有端口 (包括监听和未监听的)

    列出所有端口 netstat -a

    # netstat -a | more
     Active Internet connections (servers and established)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 localhost:30037         *:*                     LISTEN
     udp        0      0 *:bootpc                *:*
     
    Active UNIX domain sockets (servers and established)
     Proto RefCnt Flags       Type       State         I-Node   Path
     unix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0
     unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket
    

    列出所有 tcp 端口 netstat -at

    # netstat -at
     Active Internet connections (servers and established)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 localhost:30037         *:*                     LISTEN
     tcp        0      0 localhost:ipp           *:*                     LISTEN
     tcp        0      0 *:smtp                  *:*                     LISTEN
     tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
    

    列出所有 udp 端口 netstat -au

    # netstat -au
     Active Internet connections (servers and established)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     udp        0      0 *:bootpc                *:*
     udp        0      0 *:49119                 *:*
     udp        0      0 *:mdns                  *:*
    

    2、列出所有处于监听状态的 Sockets

    只显示监听端口 netstat -l

    # netstat -l
     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 localhost:ipp           *:*                     LISTEN
     tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
     udp        0      0 *:49119                 *:*
    

    只列出所有监听 tcp 端口 netstat -lt

    # netstat -lt
     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 localhost:30037         *:*                     LISTEN
     tcp        0      0 *:smtp                  *:*                     LISTEN
     tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
    

    只列出所有监听 udp 端口 netstat -lu

    # netstat -lu
     Active Internet connections (only servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     udp        0      0 *:49119                 *:*
     udp        0      0 *:mdns                  *:*
    

    只列出所有监听 UNIX 端口 netstat -lx

    # netstat -lx
     Active UNIX domain sockets (only servers)
     Proto RefCnt Flags       Type       State         I-Node   Path
     unix  2      [ ACC ]     STREAM     LISTENING     6294     private/maildrop
     unix  2      [ ACC ]     STREAM     LISTENING     6203     public/cleanup
     unix  2      [ ACC ]     STREAM     LISTENING     6302     private/ifmail
     unix  2      [ ACC ]     STREAM     LISTENING     6306     private/bsmtp
    

    3、显示每个协议的统计信息

    显示所有端口的统计信息 netstat -s

    # netstat -s
     Ip:
     11150 total packets received
     1 with invalid addresses
     0 forwarded
     0 incoming packets discarded
     11149 incoming packets delivered
     11635 requests sent out
     Icmp:
     0 ICMP messages received
     0 input ICMP message failed.
     Tcp:
     582 active connections openings
     2 failed connection attempts
     25 connection resets received
     Udp:
     1183 packets received
     4 packets to unknown port received.
     .....
    

    显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su

    # netstat -st 
    # netstat -su
    

    4、在 netstat 输出中显示 PID 和进程名称 netstat -p

    netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。

    # netstat -pt
     Active Internet connections (w/o servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
     tcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefox
     tcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox
    

    5、在 netstat 输出中不显示主机,端口和用户名 (host, port or user)

    当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。

    同样可以加速输出,因为不用进行比对查询。

    # netstat -an
    

    如果只是不想让这三个名称中的一个被显示,使用以下命令

    # netsat -a --numeric-ports
    # netsat -a --numeric-hosts
    # netsat -a --numeric-users
    

    6、持续输出 netstat 信息

    netstat 将每隔一秒输出网络信息。

    # netstat -c
     Active Internet connections (w/o servers)
     Proto Recv-Q Send-Q Local Address           Foreign Address         State
     tcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
     tcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSING
     tcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
     tcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING
    

    7、显示系统不支持的地址族 (Address Families)

    netstat --verbose
    

    在输出的末尾,会有如下的信息

    netstat: no support for `AF IPX' on this system.
    netstat: no support for `AF AX25' on this system.
    netstat: no support for `AF X25' on this system.
    netstat: no support for `AF NETROM' on this system.
    

    8、显示核心路由信息 netstat -r

    # netstat -r
     Kernel IP routing table
     Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
     192.168.1.0     *               255.255.255.0   U         0 0          0 eth2
     link-local      *               255.255.0.0     U         0 0          0 eth2
     default         192.168.1.1     0.0.0.0         UG        0 0          0 eth2
    

    注意:使用 netstat -rn 显示数字格式,不查询主机名称。

    9、找出程序运行的端口

    并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

    # netstat -ap | grep ssh
     tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
     tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -
    

    找出运行在指定端口的进程

    # netstat -an | grep ':80'
    

    10、显示网络接口列表

    # netstat -i
     Kernel Interface table
     Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
     eth0       1500 0         0      0      0 0             0      0      0      0 BMU
     eth2       1500 0     26196      0      0 0         26883      6      0      0 BMRU
     lo        16436 0         4      0      0 0             4      0      0      0 LRU
    

    显示详细信息,像是 ifconfig 使用 netstat -ie:

    # netstat -ie
     Kernel Interface table
     eth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11
     UP BROADCAST MULTICAST  MTU:1500  Metric:1
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
     Memory:f6ae0000-f6b00000
    

    11、IP和TCP分析

    查看连接某服务端口最多的的IP地址

    wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
    18 221.136.168.36
    3 154.74.45.242
    2 78.173.31.236
    2 62.183.207.98
    2 192.168.1.14
    2 182.48.111.215
    2 124.193.219.34
    2 119.145.41.2
    2 114.255.41.30
    1 75.102.11.99
    

    TCP各种状态列表

    wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
    established)
    Foreign
    LISTEN
    TIME_WAIT
    ESTABLISHED
    TIME_WAIT
    SYN_SENT
    

    先把状态全都取出来,然后使用uniq -c统计,之后再进行排序。

    wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c
    143 ESTABLISHED
    1 FIN_WAIT1
    1 Foreign
    1 LAST_ACK
    36 LISTEN
    6 SYN_SENT
    113 TIME_WAIT
    1 established)
    

    最后的命令如下:

    netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
    

    分析access.log获得访问前10位的ip地址

    awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10
    
  • 不要再用ifconfig了,Linux ip命令配置网络要注意的事项

    Linux 的ip命令让监控Linux的网络配置变得简单,但你需要了解一些注意事项。

    在现在数据中心内,Windows管理员偶尔也需要处理Linux系统。比如说当一个供应商提供了一款,但这款应用需要运行在VM内的Linux OS时。初学者需要知道一些基础的Linux网络配置方法。

     

    在分析Linux的网络配置之前,你首先需要知道目前都在使用什么方法。Linux的ip命令是其中一种方法,它提供了一系列的选项来查看机器的当前网络配置。

    ip命令需要和参数一起使用才能指明精确的显示内容。

    使用ip addr可以查看当前的网络;

    使用ip link可以分析网卡的状态;

    使用ip route可以查看路由表。

    所有这些命令都可以和show命令进行搭配。

    ip address show(见示例1)可以显示当前的IP地址配置;

    ip link show可以告诉你链路的统计信息;

    ip route show会显示当前的路由表。

    示例1,以下的输出展现了使用ip addr show命令来查看当前网卡的IP地址配置

    [root@server1 ~]# ip addr show

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:95:7f:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.210/24 brd 192.168.122.255 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fd00::210/64 scope global
    valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe95:7f5f/64 scope link
    valid_lft forever preferred_lft forever

    在这个输出内容里面,ip addr show命令展现了你的Linux网络配置中所有接口的信息。例1中展现了两个网卡。lo网卡是它的回环接口,是给进程用来做基于IP协议的通讯的。比较重要的接口是eth0,是这台服务器上第一个以太网接口。你可以从中看到有三个比较重要的信息:MAC地址(用link/ether表示),IPv4地址以及IPv6地址。可以通过验证这些信息来确认是否与你需要使用的一致。

    但不是所有的Linux系统都会将标准的以太网卡显示为eth0。新的Linux内核会使用biosdevname功能,它会使辨别一张特定的网卡更加容易。设备的名称是唯一的,类似于eno1677736,不过这个命名在不同的Linux系统间也不是标准统一的。因此如果你在其他设备上看到了类似eth0命名的设备,不要惊慌,这是预料中并且是正常的事情。

    另一个比较有用的来查看Linux网络配置的命令是ip –s link。这个命令展示了从一个网卡发出去的数据包的统计信息。Linux的ip –s link命令(查看示例2)在你遭遇网卡故障并且希望能确保网卡在传输中没有丢包的时候会有帮助。

    示例2,ip -s link的输出可以让管理员分析网络数据包统计数据

    [root@server1 ~]# ip -s link

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    97196      270      0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    97196      270      0       0       0       0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:95:7f:5f brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    71870878   412311   0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    33588506   290604   0       0       0       0

    当检查完网络配置之后,可能还需要检查一下路由。可以使用ip route show(见示例3)来查看当前的路由表。你将会看到默认路由,它表明了当机器需要访问其他网络的时候需要经过的网关的IP地址。

    示例3:Linux的ip route show命令可以帮助你检查路由表配置

    [root@server1 ~]# ip route show

    default via 192.168.122.1 dev eth0  proto static  metric 100
    192.168.122.0/24 dev eth0  proto kernel  scope link  src 192.168.122.210  metric 100

    还用不用ifconfig命令?

    早在10年前,在Linux服务器上使用ifconfig命令查看当前网络信息这种方法已经开始弃用。那使用它有什么不好呢?Linux网络栈已经从全盛时期的ifconfig发生变化了,如果现在还在使用ifconfig,那么你会错过很多信息。随着网络栈的变化,ip命令被引进来管理Linux网络配置的各个方面,而ifconfig命令的开发也再没有继续了。

    Linux的ifconfig命令并不准确。举个例子,当管理员希望在网卡上配置额外的IP地址时,如果这个地址是使用ip常规命令配置的,那么你使用ifconfig将看不到这个IP地址。正因为如此,在现在很多Linux发行版本中,ifconfig命令已经不再包含于其中了。

  • 配置看门狗 WatchDog 自动监控重启树莓派系统

    使用 Raspberry Pi树莓派 的过程中,难免会遇到因为资源冲突而死机的现象,这里介绍配置 “看门狗” 来自动检测特定情境,以达到预知和自动重启系统的目的。

     

    1. 修改系统配置文件
    nano /boot/config.txt
    dtparam=watchdog=on
    reboot

    2. 安装 watchdog 程序
    apt-get install watchdog

    3. 修改 watchdog 配置文件,这里主要列出几项被监控的资源异常情况
    nano /etc/watchdog.conf
    watchdog-device = /dev/watchdog
    watchdog-timeout = 15
    realtime = yes
    priority = 1
    interface = wlan0
    max-load-1 = 24
    min-memory = 1

    4. 激活 watchdog 系统开机运行
    systemctl enable watchdog
    systemctl start watchdog
    systemctl status watchdog

    5. 压力测试,执行以下代码,大约 1 分钟左右 CPU 资源耗尽超过设置极限,系统自动重启
    bash -c ':(){ :|:& };:'

  • Linux(CentOS)创建ftp设置权限和忘记ftp帐号密码修改

    Linux 忘记ftp密码修改方法:

    1.登录服务器IP
    cd /etc/vsftpd
    cat ftpusers
    找到对应的ftp用户名 (如果用户名也忘记了 那么 cd /etc 然后cat passwd 查看用户和对应的管理目录)
    passwd ftp用户名(回车)
    service vsftpd restart

    Linux添加FTP用户并设置权限

    在linux中添加ftp用户,并设置相应的权限,操作步骤如下:

    1、环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/test

     

    2、建用户,命令行状态下,在root用户下:

    运行命令:“useradd -d /home/test test”  //增加用户test,并制定test用户的主目录为/home/test

     

    运行命令:“passwd test”  //为test设置密码,运行后输入两次相同密码

    3、更改用户相应的权限设置:

    运行命令:“usermod -s /sbin/nologin test”  //限定用户test不能telnet,只能ftp

    运行命令:“usermod -s /sbin/bash test”  //用户test恢复正常

    运行命令:“usermod -d /test test”  //更改用户test的主目录为/test

    4、限制用户只能访问/home/test,不能访问其他路径

    修改/etc/vsftpd/vsftpd.conf如下:

    chroot_list_enable=YES
    # (default follows)
    chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

    编辑上面的内容

    第一行:chroot_list_enable=YES  //限制访问自身目录

    第三行:编辑vsftpd.chroot_list。根据第三行说指定的目录,找到chroot_list文件。(因主机不同,文件名也许略

    有不同)

    编辑vsftpd.chroot_list,将受限制的用户添加进去,每个用户名一行

    5、重启服务器

    改完配置文件,不要忘记重启vsFTPd服务器

    运行命令:/etc/init.d/vsftpd restart

    6、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:

    运行命令:“usermod -s /usr/bin/passwd test”  //用户telnet后将直接进入改密界面

  • CentOS 8已经停止维护无法升级,如何检查CentOS版本?

            CentOS 7 将会在2024年6月30日停止维护(EOL)

    那么怎么知道我们线上正在跑的CentOS是哪个版本呢?

    现在CentOS Linux有4个主要的发布分支,CentOS 5,CentOS 6,CentOS 7和CentOS 8

    从命令行检查CentOS版本

    lsb_release命令显示有关Linux发行版的Linux Standard Base(LSB)信息。

    这是首选方法,无论你运行的是哪种CentOS版本都应该可以使用。

    打开终端并键入以下命令:

    lsb_release -a

    CentOS版本将显示在”description”行中。从上面的输出可以看出我使用的是CentOS Linux 7.5.1804版。

    这些版本号的数字 7.5.1804都指的是什么

    • 7 是CentOS的主要分支
    • 7.5 是CentOS 7的最新次要版本
    • 1804 是次要版本的日期代码,1804表示2018年4月,数字用于指示发布的时间

    如果你在执行命令时看到bash: lsb_release: command not found...,则表示redhat-lsb-core 没有在你的系统上未安装该软件包。你可以使用以下方法安装该软件

    sudo yum install redhat-lsb-core
    

    使用rpm命令检查CentOS版本

    rpm (Red Hat Package Manager)是基于Red Hat的系统(如RHEL,CentOS和Fedora)的软件包管理工具。

    你可以使用rpm工具显示有关centos-release包的信息,其中包括名称中的CentOS版本

    rpm --query centos-release
    
    centos-release-7-18elcentos.x86_64
    

    使用/etc/centos-release文件检查CentOS版本

    /etc/centos-release文件由centos-release包提供。

    要检查CentOS版本,请输入以下命令:

    cat /etc/centos-release
    
    CentOS Linux release 1804 (Core)
    

    使用/etc/os-release文件检查CentOS版本

    /etc/os-release文件存在于运行systemd的所有系统上,并包含操作系统标识数据。

    只有拥有CentOS 7时,此方法才有效

    > cat /etc/os-release
    NAME="CentOS Linux"
    VERSION="7 (Core)"
    ID="centos"
    ID_LIKE="rhel fedora"
    VERSION_ID="7"
    PRETTY_NAME="CentOS Linux 7 (Core)"
    ANSI_COLOR="0;31"
    CPE_NAME="cpe:/o:centos:centos:7"
    HOME_URL="https://www.centos.org/"
    BUG_REPORT_URL="https://bugs.centos.org/"
    
    CENTOS_MANTISBT_PROJECT="CentOS-7"
    CENTOS_MANTISBT_PROJECT_VERSION="7"
    REDHAT_SUPPORT_PRODUCT="centos"
    REDHAT_SUPPORT_PRODUCT_VERSION="
    

    使用hostnamectl命令检查你的CentOS版本

    hostnamectl是一个允许你设置主机名的命令,但你也可以使用它来查找你的CentOS版本

    只有在CentOS 7时,此方法才有效

    > hostnamectl
    Static hostname: localhost.localdomain
             Icon name: computer-vm
               Chassis: vm
            Machine ID: 2849f743fbe74706abaa6cb8b2ae5377
               Boot ID: 8259a43c6265465884920ac6d762ed5e
        Virtualization: kvm
      Operating System: CentOS Linux 7 (Core)
           CPE OS Name: cpe:/o:centos:centos:7
                Kernel: Linux 0-8elx86_64
          Architecture: x86-64
  • 一位Linux运维工程师对运维规则的 10 条经验总结

    作为一个IT工程师,在阅览技术书籍时,看到作者对运维规则的总结,反复阅读几遍后,发现其内容言简而意赅,质朴而真谛。些许认知是我自个儿明白,而无法用言语总结的;些许是让我自个儿从无知到认知的;些许是我想要做而目前作为一个运维小哥而无法做到的~

    总之,阅览后如获珍宝。当然,作为一个运维小哥,以下内容及规则(涉及系统大体)自个儿能驾驭的是少之又少,但丝毫不影响我的向学之心!那是我的工作之心所向,那是我傲娇之心所追,更是对自己能力提升的同时而注重的自我升华。

     

    以下是本人根据书籍内容及些许的自我认同而提炼出的部分精髓(至少自己是这样认为,^_^),个人感觉,有一部分适用于运维人员,而有一部分适用于技术管理人员。相信也存在许多像我一样的IT小哥哥小姐姐,所以希望做个分享,希望能让有需之人观后有感!为啥我要总结出这两种人群的适应内容呢?呃,毕竟,不想当将军的士兵不是好士兵~

     

    对于运维而言,平台、工具、知识、经验,意识等都固然重要,其都在某种程度上决定了运维质量。而对于运维规则,也不可小觑,整好了也许会有四两拨千斤的效果哦!

     

    以下内容是本人摘录技术书籍内容,同时加上了些许个人感知及个人言语,不喜勿喷哦!

    1、勿重复劳作

    不要重复劳动力,也不要什么都从外部获取,如工具、代码、框架等。需要考虑的是在合适的时间以合适的成本切入,投资回报率也是需要考虑的。

     

    一般来说,每个公司都存在重复造轮子的现象,而且许多人都热衷于此,可能需要用这样的项目来证明自己,而却忽略了投入/产出比这个重要的指标。如果能够充分利用社区的成果,利用公司已有的成熟框架,那么可大大加快自己的项目进度,因此,为什么非要自己做一个呢?也许有些人考虑的是重复造轮子,可以真正锻炼到团队,毕竟一个从头开始的项目,所积累的经验往往比一般项目多得多,有助于个人的成长和公司后续项目。

     

    2、允许出错

    人非圣贤,孰能无过,运维也是如此!出错并不可怕,关键是要建立机制,让错误能够尽可能快速地被修复,限制错误影响的范围,同时要归纳总结,从错误中让个人成长,让组织成长。

     

    当然,允许出错并不表示事无巨细,均可犯错。允许出错是建立在大体层面上已尽可能的完善了整体制度,规范了运维流程等情况下出现的无可预知的错误!

     

    只要存在硬件载体,就必然伴随着各种各样的故障。有时为了追求高可用性,设计复杂的架构,或者准备过多的冗余设施,往往会导致解决方案的成本剧增,而解决方案的复杂性,也会为后期的改造及维护增加难度。国内众多公司都号称可用性高达99.99%,甚至高精度的小数点后面多加好几个9。然而,某巨头企业的云产品导致小公司数据丢失,某巨头企业应对活动日出现页面异常等等场景,让我们情不自禁的感叹~~

    3、设置备用

    备用角色在运维工作中可能只被人看到日常运维的价值,而当主要角色因事请假、过度劳累、因故离职等时期,备用角色价值凸显,他可让正在进行的项目不被打断,正在进行的工作不陷入被动。高效培养备用角色,其需文档、流程和规范的支持,故运维规范等也是重中之重!

    4、定位瓶颈

    不监控,无运维。此话说明监控的重要性,对于一些资源的争用,通过监控系统能够直观的反映。而对于一些隐藏较深的资源瓶颈和系统瓶颈,往往需要利用工具,靠经验去分析和判断。作为运维,需要有意识的尽可能地通过监控系统去发现问题,让监控系统变得越来越智能,越来越少地依赖于人的经验。

    高级工程师和初级工程师有一个很大的区别,高工知道如何去定位瓶颈所在。他们不仅知道如何使用工具,还知道何时、何地、为什么要使用这个工具。这样,才可能在问题爆发之前,就定位到瓶颈所在。

    当然,定位瓶颈,单一化的运维知识可能满足不了需求,因为数据可能要经过很多环节,如本地电脑、浏览器、DNS服务、负载均衡设备、应用服务器等。

    所以,应该尽可能的涉猎不同领域的多元化的知识。

    5、重视工具/平台

    许多互联网公司都有基础平台的技术部门,专门负责开发基础平台、工具和服务,提供给各个应用研发团队使用。但这往往是一个短期内难以见到效益的事情。对于业务规模不大的公司来说,更多的时候是在做一些技术储备的事情。基础平台部门往往是伴随着公司的高速发展而壮大的,研发出来的产品如果没人用,自然就得不到改进,然后就更加没有人使用,如此恶性循环。其情境往往考验高层的决心,考虑是否需要继续坚持保留适当比例的底层平台开发人员呢?

    应用软件的研发和平台工具的研发毕竟是不一样的,如果基础不牢,可能造成更大的业务风险。所以长远来看,使用部分人力(高素质的工程师)做平台和工具,其实是节省成本的!

    硅谷的一些公司,让优秀的人去做平台和工具,并提供最好的待遇,给予足够的尊重,对于他们的衡量标准也应该不同!

    6、分工明确

    大规模的系统架构体系的维护,离不开训练有素的工程师,他们需要有许多知识、经验和技巧,也必然分工明确,如开发运维平台的、专门数据操作的、性能调优的、源码优化的等等。优秀的团队可能还有项目经理、质量管控、文档编者、成本分析、培训教育等各个专业领域的人,不同岗位的人员在自己的专业领域发挥优势,各司其职,才能使整个项目的光彩洋溢地淋淋尽致~

    7、善于分享

    应该多参与业内技术交流,对于一些问题,也许有些公司能有更好的解决方案,如果你分享了经验,同行们也会分享经验。从某种角度上看,两者是竞争者的关系,但是如果需要发展,就要看看业内的竞争对手在做什么,要跳出公司的格局去看待技术和管理问题。

    同时,参与业内的技术论坛不仅仅是关注行业技术趋势的一种手段,也是一种招聘方式,通过认识更多人,扩大影响力,吸引更多人加入自己所在公司。自我人脉扩展的同时也充实了公司的发展,何乐而不为呢?

    8、重视例会

    许多管理者忽略了周会与例会的重要性。若长期不重视,整个团队就可能变得松散,没有凝聚力。

    周会的一个重要作用是讨论分工。随着机器规模的扩大,人员的增加,团队管理者都需要分工明确,责任到人,才能促使员工尽可能的恪尽职守。

    周会也可讨论彼此的工作进度、交流未完成工作的对策、互相了解团队成员的工作状态、传达上层领导的指示、交流技术与分享等等~~~

    总之,每个人的工作饱和度及个性等差异化,如果没有有效的沟通,关系可能就会像从果核中慢慢腐烂到表皮的水果,彼此互有抱怨。因此,固定一段时间进行正式的交流并成为习惯是值得推荐的沟通方式,同时也可使得同事关系融洽,人员氛围优升~

    9、绩效束缚

    关键绩效指标(KPI)是指用于评测组织中与关键目标或关键成功因素,许多公司到了一定规模后,都把KPI考核作为一项主要的管理工具。

     

    而事实是绩效是一种工具,人却是复杂的,管理人更是一件复杂的事情,要想面面俱到,很难靠绩效这个工具来简化所有的问题。当然,很多东西量化之后,就显得比较好管理。对于产品经理、运营人员、销售人员等等而言,量化指标,往往是看的见的数字。而对于运维及部分职位,可能就很难有一个量化指标!

     

    绩效的设计应该是帮助个人发展,帮助员工赢的尊重的,而不是用于桎梏个人的。当个人的价值观和企业的价值观起些许冲突时,但凡一个好企业,往往具有包容性;而当冲突严重时,同时个人又不能妥协时,可以考虑换个环境,避免继续在一起的双方损失。

     

    在书《赢》中,管理大师杰克·韦尔奇运用绩效造就了伟大的文化,而不容忽视的背景是,他花了许多年创立了坦诚沟通的企业文化。如果没有坦诚、没有沟通、绩效可能会成为破坏企业文化的杀手。在推动工作进展的时候,不是去考虑对公司是否真的有帮助,而是主要去考虑自己的绩效,是一个非常不好的倾向。自己现有的工作成果,工作输出,决定了自己后续的工作方向~~~

     

    10、优化设计

    应该有意识地优化流程设计以提高工作效率和服务质量。随着公司业务的发展,运维部门也会随之扩张,如果缺乏合理的流程或缺乏高层次的人才,那么往往会出现一个问题:人数增多了,效率反而下降了!因为随着公司规模的扩大,所管理和维护的资源急剧膨胀,出于安全和其他因素考虑,设计了各种各样的流程,以便得到正确的执行结果,但有时这些流程可能会导致效率下降,部门内部的沟通成本也越来越高,这都需要运维人员对流程本身建立反馈和优化的机制,有意识地不断优化流程!

  • Linux是如何结束一个进程的?

    你是否曾经遇到过启动应用程序,而在使用该应用程序时突然变得无响应并意外崩溃的情况?你尝试再次启动该应用程序,但没有任何反应,因为原始应用程序进程从未真正完全关闭。

    普通用户可以杀死自己的进程,但不能杀死属于其他用户的进程,而root用户可以杀死所有进程。

    系统kill信号

    killkillall可以将给定信号发送到指定的进程或进程组。当没有指定信号时,两个工具都会发送-15(-TERM)。

    最常用的信号是:

    • 1(-HUP):重新启动进程。
    • 9 (-KILL):杀死一个进程。
    • 15 (-TERM):正常停止进程。

    可以通过三种不同的方式指定信号:

    • 使用带有SIG前缀(例如-SIGHUP)
    • 使用数字(例如-1)
    • 不带SIG前缀(例如-HUP) 。

    使用-l选项列出所有可用信号:

    kill -l  # or killall -l
    
    1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
     6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
    11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
    16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
    21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
    26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
    31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
    38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
    43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
    53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
    58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
    63) SIGRTMAX-1  64) SIGRTMAX
    

    使用kill命令终止进程

    要使用kill命令终止进程,首先需要找到进程PID。你可以使用不同的命令来执行此操作,例如top, ps ,pidofpgrep

    假设我们的Firefox浏览器已无法响应,你需要取消Firefox进程。要找到过程PID,请使用pidof命令:

    pidof firefox

    以上命令将显示所有Firefox进程:

    2551 2514 1963 1856 1771
    

    一旦你知道Firefox处理PID以终止所有PID,请输入:

    kill -9 2551 2514 1963 1856 1771
    

    使用killall命令终止进程

    killall命令终止与指定名称匹配的所有程序。

    使用与之前相同的方案,我们可以通过键入以下命令来终止Firefox进程:

    killall -9 firefox

    killall接受几个选项,例如指定使用用户身份运行的进程,使用正则表达式以及根据创建时间终止进程。你可以通过键入killall(不带任何参数)来获得所有选项的列表。

    例如,如果我们要终止以用户身份运行的所有进程rumenz,则可以运行以下命令:

    killall -u rumenz

    杀死运行时间超过 5h 的进程

    killall -o 5h

    杀死进行时间小于 4h 的进程

    killall -y 4h

    默认情况下,killall 命令是大小写敏感的,所以我们如果写错大小写,将无法正确杀死进程。

    killall -I NGINX

    等待直到某个进程被终止,可以使用 -w 选项,其中 w 代表 wait

    killall -w

    使用pkill命令终止进程

    pkill使用正则表达式来匹配进程名称。

    ps -eo pid,cmd  | grep ssh
    1039 sshd
    2257 ssh-agent
    6850 ssh
    31279 ssh-agent
    

    通过正则批量关闭

    pkill '^ssh$'

  • linux TCP / UDP抓包软件tcpdump安装教程及使用方法

    前言

    大家好,这里是奇点linux,主要给大家分享linuxpython网络通信相关的IT知识平台。

    今天给大家分享一个linux下的抓包神器tcpdump使用方法,通过简单通俗易懂的实战技巧,让你感受一下它的强大之处。大体上通过介绍其命令参数,带你进入抓包实战。同时也给大家分享几个日常工作中常用的有关tcpdump神器的招式,让你一招半式也能应付工作中的故障排查。

    tcpdump前世今生

    tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。

    tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统 中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。

    说白了tcpdump就是linux下的一款抓包工具。通常用于故障诊断、网络分析,功能十分的强大。了解了tcpdump是何物之后,让我们通过实战去一一掀开它神秘的面纱。

     

    tcpdump命令参数

    tcpdump作为一个命令使用,其具有多样的参数选项。

    tcpdump基本命令如下:

    tcpdump [option] [proto] [dir] [type]

    其中:

    1、option即可选参数,可以指定相关参数,输出特定信息。

    可选参数很多,主要有以下:

    -A 以ASCII格式打印出所有分组,并将链路层的头最小化。-c 在收到指定的数量的分组后,tcpdump就会停止。-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。-d 将匹配信息包的代码以人们能够理解的汇编格式给出。-dd 将匹配信息包的代码以c语言程序段的格式给出。-ddd 将匹配信息包的代码以十进制的形式给出。-D 打印出系统中所有可以用tcpdump截包的网络接口。-e 在输出行打印出数据链路层的头部信息。-E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。-f 将外部的Internet地址以数字的形式打印出来。-F 从指定的文件中读取表达式,忽略命令行中给出的表达式。-i 指定监听的网络接口。-l 使标准输出变为缓冲行形式,可以把数据导出到文件。-L 列出网络接口的已知数据链路。-m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。-M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。-n 不把网络地址转换成名字。-nn 不进行端口名称的转换。-N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。-t 在输出的每一行不打印时间戳。-O 不运行分组分组匹配(packet-matching)代码优化程序。-P 不将网络接口设置成混杂模式。-q 快速输出。只输出较少的协议信息。-r 从指定的文件中读取包(这些包一般通过-w选项产生)。-S 将tcp的序列号以绝对值形式输出,而不是相对值。-s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。-t 不在每一行中输出时间戳。-tt 在每一行中输出非格式化的时间戳。-ttt 输出本行和前面一行之间的时间差。-tttt 在每一行中输出由date处理的默认格式的时间戳。-u 输出未解码的NFS句柄。-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。-vv 输出详细的报文信息。-w 直接将分组写入文件中,而不是不分析并打印出来。

    2、proto即类过滤器,指定过滤某种协议的数据包。如tcp、udp、ip、arp、icmp等。

    3、dir即类过滤器,根据数据流向进行过滤,可识别的关键字有src、dst、 src or dst等。

    4、type即类过滤器,可识别的关键字有:host, net, port, port range等,这些关键字后边需要再接具体参数。

    tcpdump安装

    1、linux系统默认没有安装tcpdump工具的,所以需要我们自己安装,这里我通过yum进行安装。

    yum -y install tcpdump

    2、安装完成,通过tcpdump -h查看它相关版本信息。

    [root@haodaolinux1 ~]# tcpdump -htcpdump version 4.9.2libpcap version 1.5.3OpenSSL 1.0.2k-fips  26 Jan 2017Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]                [ -Q|-P in|out|inout ]                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]                [ -Z user ] [ expression ][root@haodaolinux1 ~]#

    tcpdump实战

    下面通过常见的具体抓包实例,让你加深其使用技巧。

    1、常用抓包命令1

    tcpdump -i eno16777736

    该命令参数表示抓取网口eno16777736上所有的数据包。

    2、常用抓包命令2

    tcpdump -i eno16777736 -s 0 -w hao1.cap

    该命令参数大概意思是针对网口eno16777736抓取不限制大小的报文,保存为文件hao1.cap

    3、常用抓包命令3

    tcpdump -ni eno16777736 -c 10 dst host 192.168.3.165

    该命令参数表示抓取网口eno16777736发往目的主机192.168.3.165的数据包,并且抓取10个包后,自动停止抓包。

    4、常用抓包命令4

    tcpdump -r hao1.cap

    该命令是读取抓包文件hao1.cap,结果如下:

    [root@haodaolinux1 ~]# tcpdump -r hao1.cap reading from file hao1.cap, link-type EN10MB (Ethernet)15:22:42.826813 IP 192.168.3.199.ssh > 192.168.3.165.8162: Flags [P.], seq 211541184:211541316, ack 3983093332, win 255, length 13215:22:42.862614 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 546175073, win 16293, length 015:22:43.026135 IP 192.168.3.165.8162 > 192.168.3.199.ssh: Flags [.], ack 132, win 16425, length 015:22:43.609384 IP 192.168.3.199 > 183.232.231.172: ICMP echo request, id 9275, seq 7, length 6415:22:43.621431 IP 183.232.231.172 > 192.168.3.199: ICMP echo reply, id 9275, seq 7, length 6415:22:43.621610 IP 192.168.3.199.ssh > 192.168.3.165.armtechdaemon: Flags [P.], seq 1:133, ack 0, win 255, length 13215:22:43.821278 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 133, win 16260, length 015:22:44.610696 IP 192.168.3.199 > 183.232.231.172: ICMP echo request, id 9275, seq 8, length 6415:22:44.624632 IP 183.232.231.172 > 192.168.3.199: ICMP echo reply, id 9275, seq 8, length 6415:22:44.624842 IP 192.168.3.199.ssh > 192.168.3.165.armtechdaemon: Flags [P.], seq 133:265, ack 0, win 255, length 13215:22:44.824397 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 265, win 16227, length 0

    5、常用抓包命令5

    tcpdump -i eno16777736 host 183.232.231.172 and tcp port 80 

    即表示抓取主机183.232.231.172所有在TCP 80端口的数据包。

    6、常用抓包命令6

    tcpdump -i eno16777736 host 183.232.231.172 and dst port 80 

    即表示抓取HTTP主机183.232.231.172在80端口接收到的数据包。

    7、常用抓包命令7

    tcpdump -i eno16777736 port 80

    即表示抓取所有经过eno16777736,目的或源端口是80的网络数据。

    8、常用抓包命令8

    tcpdump -i eno16777736 icmp

    即表示过滤出icmp包。如下图所示:

    结语

    以上这些抓包命令只是日常工作中比较常见的,其还可以根据相关选项参数组合进行抓包,这里就不一一举例了。执行抓包命令后,如果不指定保存抓包文件,即报文直接从控制台输出,通过ctrl+c组合键停止抓包。保存的抓包文件是可以导出到windows环境,通过Wireshark工具打开的。

  • Linux 系统运维常用40条命令汇总

    1、删除0字节文件

    find -type f -size 0 -exec rm -rf {} \;
    2、查看进程
    按内存从大到小排列
    PS -e -o "%C : %p : %z : %a"|sort -k5 -nr

    3、按 CPU 利用率从大到小排列

    ps -e -o "%C : %p : %z : %a"|sort -nr

    4、打印 cache 里的URL

    grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'

    5、查看 http 的并发请求数及其 TCP 连接状态:

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    6、 sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config sed 在这个文里 Root 的一行,匹配 Root 一行,将 no 替换成 yes。

    7、如何杀掉 MySQL 进程

    ps aux |grep mysql |grep -v grep  |awk '{print $2}' |xargs kill -9 (从中了解到awk的用途)
    killall -TERM mysqld
    kill -9 `cat /usr/local/apache2/logs/httpd.pid`   试试查杀进程PID

    8、显示运行 3 级别开启的服务:

    ls /etc/rc3.d/S* |cut -c 15-   (从中了解到cut的用途,截取数据)

    9、如何在编写 SHELL 显示多个信息,用 EOF

    cat << EOF+--------------------------------------------------------------+|       === Welcome to Tunoff services ===                |+--------------------------------------------------------------+EOF

    10、for 的巧用(如给 MySQL 建软链接)

    cd /usr/local/mysql/binfor i in *do ln /usr/local/mysql/bin/$i /usr/bin/$idone

    11、取 IP 地址

    ifconfig eth0 |grep "inet addr:" |awk '{print $2}'| cut -c 6-  或者ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

    12、内存的大小:

    free -m |grep "Mem" | awk '{print $2}'

    13

    netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort

    14、查看 Apache 的并发请求数及其 TCP 连接状态:

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    15、因为同事要统计一下服务器下面所有的 jpg 的文件的大小,写了个 SHELL 给他来统计。原来用 xargs 实现,但他一次处理一部分。搞的有多个总和……,下面的命令就能解决。

    find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'

    CPU 的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。

    16、CPU负载

    cat /proc/loadavg

    检查前三个输出值是否超过了系统逻辑 CPU 的4倍。

    17、 CPU负载

    mpstat 1 1

    检查 %idle 是否过低(比如小于5%)。

    18、内存空间

    free

    检查 free 值是否过低,也可以用 # cat /proc/meminfo

    19、SWAP 空间

    free

    检查 swap used 值是否过高,如果 swap used 值过高,进一步检查 swap 动作是否频繁:

    vmstat 1 5

    观察 si 和 so 值是否较大

    20、磁盘空间

    df -h
    检查是否有分区使用率(Use%)过高(比如超过90%)如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录:
    du -cks * | sort -rn | head -n 10

    21、磁盘 I/O 负载

    iostat -x 1 2

    检查I/O使用率(%util)是否超过 100%

    22、网络负载

    sar -n DEV

    检查网络流量(rxbyt/s, txbyt/s)是否过高

    23、网络错误

    netstat -i

    检查是否有网络错误(drop fifo colls carrier),也可以用命令:# cat /proc/net/dev

    24、网络连接数目

    netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n

    25、进程总数

    ps aux | wc -l

    检查进程个数是否正常 (比如超过250)

    26、可运行进程数目

    vmwtat 1 5

    列给出的是可运行进程的数目,检查其是否超过系统逻辑 CPU 的 4 倍

    27、进程

    top -id 1

    观察是否有异常进程出现。

    28、网络状态,检查DNS,网关等是否可以正常连通

    29、用户

    who | wc -l

    检查登录用户是否过多 (比如超过50个)   也可以用命令:# uptime。

    30、系统日志

    # cat /var/log/rflogview/*errors

    检查是否有异常错误记录   也可以搜寻一些异常关键字,例如:

    grep -i error /var/log/messagesgrep -i fail /var/log/messages

    31、核心日志

    dmesg

    检查是否有异常错误记录。

    32、系统时间

    date

    检查系统时间是否正确。

    33、打开文件数目

    lsof | wc -l

    检查打开文件总数是否过多。

    34、日志

    # logwatch –print
    配置 /etc/log.d/logwatch.conf,将 Mailto 设置为自己的 email 地址,启动 mail 服务(sendmail或者postfix),这样就可以每天收到日志报告了。
    缺省 logwatch 只报告昨天的日志,可以用 # logwatch –print –range all 获得所有的日志分析结果。
    可以用 # logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。

    35、杀掉80端口相关的进程

    lsof -i :80|grep -v “ID”|awk ‘{print “kill -9”,$2}’|sh

    36、清除僵死进程

    ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9

    37、tcpdump 抓包,用来防止80端口被人攻击时可以分析数据

    tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts

    38、然后检查IP的重复数并从小到大排序 注意 “-t\ +0”   中间是两个空格

    # less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0

    39、查看有多少个活动的 php-cgi 进程

    netstat -anp | grep php-cgi | grep ^tcp | wc -l

    40、查看系统自启动的服务

    chkconfig --list | awk '{if ($5=="3:on") print $1}'

    41、kudzu 查看网卡型号

    kudzu --probe --class=network

    常用正则表达式

    1.匹配中文字符的正则表达式: [\u4e00-\u9fa5]

    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

    2.匹配双字节字符(包括汉字在内):[^\x00-\xff]

    评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

    3.匹配空白行的正则表达式:\n\s*\r

    评注:可以用来删除空白行

    4.匹配 HTML 标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />

    评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

    5.匹配首尾空白字符的正则表达式:^\s*|\s*$

    评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

    6.匹配Email地址的正则表达式:

    \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    评注:表单验证时很实用

    7.匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

    评注:网上流传的版本功能很有限,上面这个基本可以满足需求

    8.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

    评注:表单验证时很实用

    9.匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

    评注:匹配形式如 0511-4405222 或 021-87888822

    10.匹配腾讯QQ号:[1-9][0-9]{4,}

    评注:腾讯QQ号从10000开始

    11.匹配中国邮政编码:[1-9]\d{5}(?!\d)

    评注:中国邮政编码为6位数字

    12.匹配×××:\d{15}|\d{18}

    评注:中国的×××为15位或18位

    13.匹配ip地址:\d+\.\d+\.\d+\.\d+

    评注:提取 IP 地址时有用

    14.匹配特定数字:

    ^[1-9]\d*$   //匹配正整数^-[1-9]\d*$  //匹配负整数^-?[1-9]\d*$  //匹配整数^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)^-[1-9]\d*|0$  //匹配非正整数(负整数 + 0)^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$  //匹配正浮点数^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$  //匹配非负浮点数(正浮点数 + 0)^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点数 + 0)

    评注:处理大量数据时有用,具体应用时注意修正

    15.匹配特定字符串:

    ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串^[a-z]+$ //匹配由26个英文字母的小写组成的字符串^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串

    评注:最基本也是最常用的一些表达式

  • 五种经常遇到的 DNS 错误诊断和故障问题处理方法

    1 DNS 基础知识

    互联网基于 TCP/IP 协议。为了方便管理网络内的主机,整个互联网分为若干个域 (domain),每 个域又可以再分为若干个子域,例如,.com,.org,.edu 都是顶级域,而 google.com 是.com 下面的子域。

    网络中的任意一台主机(host)都会属于某个域,并且有自己的名字,称为主机名( hostname)。例如 example.com 就是.com 域中一台主机名为 example.com(或 example,hostname 和 domain name 的区别,见这里 )的主机。

    域名/主机名是为了方便人记忆,而机器之间通信最终用的还是 IP 地址,因此需要一个将主 机名(域名)转换成 IP 地址的服务。域名服务系统(DNS, domain name system)做的就是 这个事情,对应的服务器称为域名服务器(Domain Name Server)。

    例如,当通过浏览器访问 example.com,浏览器会首先访问 DNS 服务器,查找 example.com 对应的 IP 地址,然后和这个 IP 建立 TCP 连接,接下来才发起 HTTP 请求。

    一个域名可以对应一个 IP 地址,也可以对应多个。对于后者,DNS 服务算法会从中选择一个 地址返回。大部分网络服务为了实现高可用,都是对应多个地址,我们后面会看到, baidu.com 就对应多个 IP。

    有一些场景会导致访问 DNS 服务不稳定,例如 DNS 服务器的设置有问题、网络有丢包、主机 DNS 配置错误等等。我们接下来查看几种 case。

    2 准备测试环境

    为方便大家跟着上手练习,本文将搭建一个容器环境。

    Pull Docker 镜像:

    $ sudo docker pull alpine:3.8
    

    运行容器,注意这里一定要带–privileged 参数 [2],否则后面的部分 tc 命令无法执行:

    $ sudo docker run -d --privileged --name ctn-1 alpine:3.8 sleep 3600d
    $ sudo docker ps
    CONTAINER ID    IMAGE        COMMAND         CREATED        STATUS          PORTS  NAMES
    233bc36bde4b    alpine:3.8   "sleep 3600d"   1 minutes ago  Up 14 minutes           ctn-1
    

    进入容器:

    $ sudo docker exec -it ctn-1 sh
    

    查看容器网络信息:

    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:09
              inet addr:172.17.0.9  Bcast:0.0.0.0  Mask:255.255.0.0
    

    3 DNS 配置

    3.1 查看 DNS 配置

    Linux 上的 DNS 配置在/etc/resolv.conf 里面。我们先来查看容器的配置:

    / # cat /etc/resolv.conf
    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 192.168.1.11
    nameserver 192.168.1.12
    

    这其实是继承了宿主机的 DNS 配置,在宿主机上执行 cat /etc/resolv.conf 会看到一样的 结果。

    3.2 修改 DNS 配置

    可以通过修改/etc/resolv.conf 里面的 nameserver 来配置自己想用的 DNS 服务器。例如内网环境可能都会使用自己的 DNS 服务器,因为它除了 提供内网域名解析之外,公网域名解析也会比较快(相比于网络供应商的公网 DNS 服务器) 。

    4 DNS 问题排查

    本节模拟几种导致 DNS 查询变慢的场景,如果在实际环境中遇到类似现象,可以考虑往这些 方向排查。

    4.1 机器未配置 DNS 导致域名查找失败

    • 现象:网络是通的(例如 ping IP 通),但是 DNS 查询总是失败
    • 可能的原因:机器没有配置 DNS 服务器
    • 解决办法:修改/etc/resolv.conf,给机器配置合适的 DNS 服务器 有时新启动的机器(不管是物理机、虚拟机还是容器)没有设置 DNS,导致访问域名不通。我们来复现一下。

    在正常的容器里用 nslookup 工具查看域名对应的 IP 地址:

    / # nslookup example.com
    
    Name:      example.com
    Address 1: 93.184.216.34
    Address 2: 2606:2800:220:1:248:1893:25c8:1946
    

    可以看到,我们获取到了该域名一个 IPv4 地址和一个 IPv6 地址。

    将/etc/resolv.conf 里的 DNS 服务器列表用#注释掉,模拟没有配置 DNS 服务器的场景。

    再次测试:

    / # nslookup example.com
    
    nslookup: can't resolve 'example.com': Try again
    

    所以遇到这种问题,可以先去排查/etc/resolv.conf 里面是否配置了 DNS 服务器。

    4.2 DNS 服务太慢

    • 现象:DNS 查询太慢
    • 可能的原因:配置的 DNS 服务器不合理
    • 解决办法:修改/etc/resolv.conf,配置合适的 DNS 服务器

    每个公司一般都有自维护的 DNS 服务器,不仅用来解析内网 DNS,而且可以加速解析公网域名 。

    dig 是另外一个功能更强大的 DNS 查询工具,安装:

    / # apk update && apk add bind-tools
    

    首先查看使用内网 DNS,查询域名的延迟:

    / # dig example.com
    ...
    example.com.            15814   IN      A       93.184.216.34
    
    ;; Query time: 0 msec
    ;; SERVER: 192.168.1.11#53(192.168.1.11)
    

    可以看到非常快,在 1ms 以内。

    然后我们测试如果使用 Google 的公网 DNS 服务器 8.8.8.8 [1],延迟会是多少。

    修改/etc/resolv.conf,将其他 nameserver 注释掉,添加一行 nameserver 8.8.8.8。

    再次测试:

    / # dig example.com
    ...
    example.com.            15814   IN      A       93.184.216.34
    
    ;; Query time: 150 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    

    延迟变成了 150ms,比原来大了 150 多倍。

    因此,对于 DNS 查询特别慢的场景,首先要查看配置的 DNS 服务器是否合理。

    4.3 hardcode /etc/hosts 导致跳过 DNS 查询

    • 现象:某域名访问太慢、某域名总是指向相同 IP(多 IP 情况下)、特定机器不可访问 某域名等等
    • 可能的原因:/etc/hosts 有 hardcode 域名及 IP
    • 解决办法:修改/etc/hosts

    前面提到,大部分公网域名都对应多个 IP 地址,因此每次 DNS 查询拿到的 IP 地址都可能不一 样,我们用 ping 来测试一下:

    / # ping baidu.com
    PING baidu.com (220.181.57.216): 56 data bytes
    64 bytes from 220.181.57.216: seq=0 ttl=45 time=26.895 ms
    64 bytes from 220.181.57.216: seq=1 ttl=45 time=26.701 ms
    ^C
    
    / # ping baidu.com
    PING baidu.com (123.125.115.110): 56 data bytes
    64 bytes from 123.125.115.110: seq=0 ttl=43 time=27.587 ms
    64 bytes from 123.125.115.110: seq=1 ttl=43 time=27.757 ms
    ^C
    

    可以看到,两次 ping 测试(内部首先查询 baidu.com 对应的 IP 地址)拿到的 IP 地址是不一样 的。用 nslookup 可以看到它们都是 baidu.com 对应的 IP 地址:

    / # nslookup baidu.com
    Name: baidu.com
    Address: 220.181.57.216
    Name: baidu.com
    Address: 123.125.115.110
    

    /etc/hosts 里面可以直接 harcode 一个域名对应的 IP 地址,这会导致机器跳过 DNS 查询,直接拿这个 IP 作 为该域名的 IP。我们来验证一下。

    修改/etc/hosts,添加一行 123.125.115.110 baidu.com,再次 ping 测试

    / # ping baidu.com
    PING baidu.com (123.125.115.110): 56 data bytes
    64 bytes from 123.125.115.110: seq=0 ttl=43 time=27.861 ms
    ^C
    --- baidu.com ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max = 27.861/27.861/27.861 ms
    / # ping baidu.com
    PING baidu.com (123.125.115.110): 56 data bytes
    64 bytes from 123.125.115.110: seq=0 ttl=43 time=27.614 ms
    ^C
    

    这是不管执行多少次,baidu.com 对应的 IP 地址都不会变了。而实际上,这个 IP 地址并不一定是最优的 IP 地址,甚至有可能这 个 IP 不可用,导致访问 baidu.com 失败。因此,实际中要极力避免在/etc/hosts 中 hardcode。

    4.4 DNS 查询不稳定

    • 现象:DNS 查询不稳定,时快时慢
    • 可能的原因:机器上有 tc 或 iptables 规则,导致到 DNS 服务器的 packet 变慢或丢失
    • 解决办法:修改或删除 tc/iptables 规则

    我们用 tc 来模拟网络延迟:

    / # apk add iproute2
    

    首先查看有没有 tc 规则:

    / # tc -p qdisc ls dev eth0
    

    默认没有任何规则。

    然后我们加一条:每个 packet 延迟 600ms:

    / # tc qdisc add dev eth0 root netem delay 600ms
    
    / # tc -p qdisc ls dev eth0
    / # qdisc netem 8001: root refcnt 2 limit 1000 delay 600.0ms
    

    测试:

    / # dig example.com
    ...
    example.com.            15814   IN      A       93.184.216.34
    
    ;; Query time: 600 msec
    ;; SERVER: 192.168.1.11#53(192.168.1.11)
    

    可以看到,DNS 查询变成了 600ms。

    这里我们测试的是固定延迟,这种问题很容易发现。我们还可以测试随机延迟,或者按 比例延迟等 [2]:

    / # tc qdisc change dev eth0 root netem delay 600ms 10ms 25%
    / # tc qdisc change dev eth0 root netem delay 600ms 20ms distribution normal
    

    此类规则会导致 DNS 查询速度更有随机性。

    最后删除 tc 规则:

    / # tc qdisc del dev eth0 root
    

    iptables 规则也会导致类似的问题。

    很多软件在运行之后,会在宿主机上添加 tc 或 iptables 规则,例如 OpenStack,K8S 等等 。因此遇到这种随机延迟问题,首先可以查看机器上是否有 tc 或 iptables 规则。

    4.5 DNS 反向查询不稳定

    线上遇到过这样一个问题:从一台机器 ping 一个内网域名,每个 ping 包看起来都会卡 5 ~ 30s 不等,但是 CTL-C 关闭 ping 之后,打印出来的统计信息里,既没有丢包,ping 的延迟也很低 (毫秒级),这就很奇怪。接下来:

    • dig,很快,毫秒级,说明 DNS 查询没有问题
    • dig 能看到域名对应的 IP,直接 ping 这个 IP,发现是没有卡顿的
    • 仍然 ping 域名,用 tcpdump 抓包,tcpdump -i eth0 hostand icmp,发现 ping 包都是立即响应的,印证了统计信息里,ping 延迟很低的事实

    根据以上信息,说明 ping 卡顿的问题出在这台机器,而且应该就是 ping 程序本身在做什么耗 时的操作。继续:

    • 仍然 ping 域名,同时,用 ltrace -p跟踪 ping 进程,发现卡在一个叫 gethostbyaddr()的函数
    • 查阅文档,发现这个函数是根据 IP 反向查询 hostname,需要和 DNS 交互

    到这里,基本确定了是 DNS 服务器反向查询的问题,我们用另外几个命令行工具验证一下, 以下三个命令都是根据 IP 反查 hostname:

    1. nslookup
    2. host
    3. dig -x

    果然,以上三个命令都会卡住。修改/etc/resolv.conf,换一个 DNS 服务器之后,问题 消失了。接下来,就去查 DNS 服务器的问题吧。

  • linux运维老司机:二十个实用技巧分享

    前言

    大家好,这里是奇点linux,主要给大家分享linuxpython网络通信相关的IT知识平台。

    今天奇点给大家分享诸多linux运维老司机在用的一些linux小技巧。这些都是我结合道中朋友的分享进行的一次总结汇总。希望能够给大家在日常运维工作中带来如虎添翼的完美体验。

     

    linux知识锦囊

    以下实用指数不分先后,更多的是以简单的命令形式带给大家更好的体验。

    1、快速清空一个文件的方法,如清空haodao.txt文件

    cat /dev/null >> haodao.txt

    2、查看tomcat服务器的日志有多少个IP访问。

    awk '{print $1}' access.log |sort |uniq |wc -l

    3、如何在本机快速生成一个大文件。

    有时候需要在本机生成一个大文件,用于测试磁盘的读写能力,可以借助dd命令生成大文件。

    dd if=/dev/zero of=test.txt bs=1M count=1000

    上述命令,生成一个文件名为test.txt 大小为 1G 的文件。

    4、如何快速创建大批量相同类型的文件。

    如创建名字为haodao1.txt,haodao2.txt到haodao100.txt的批量文件。

    touch haodao{1..100}.txt

    5、查找当前目录下以.txt结尾的文件,并且删除。

    find . -name "*.txt" -exec rm -rf {} \;

    find . -name "*.txt" |xargs rm -rf {};

    rm -rf $(find . -name "*.txt")

    6、查找当前目录下7天前创建的,并且后缀名是以.txt结尾的文件,并且进行删除

    find . -mtime +7  -name "*.txt" |xargs rm -rf {};

    7、查找当前目录大于1000M的文件,并将该文件移动到/root/home目录下

    find . -size +1000M -exec mv {} /root/home ;

    8、查找当前目录下创建于30天前,大小大于1000M,以.txt结尾的文件,并且进行删除。

    find  . -name "*.txt" –mtime +30 –type f –size +1000M |xargs rm –rf {};

    9、查看自己本机最常用的10条命令

    cat /root/.bash_history |grep -v ^# |awk '{print $1}' |sort |uniq -c |sort -nr |head -10

    10、查看2021年12月11日09时这个时间内有多少个IP访问你的tomcat服务器

    awk '{print $4,$1}' access.log | grep 11/Dec/2021:09 | awk '{print $2}'| sort | uniq | wc -l

    这里只要给出访问日志文件,就可以计算出来,自己可以根据需要计算某个时间点的访问的IP数。

    11、查看tomcat服务器访问量排在前10 位的IP地址

    cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10

    12、查看tomcat服务器中某一个页面资源被访问的次数

    grep "/portal/index.html" access.log | wc -l

    13、查看某一个IP地址访问了tomcat服务器的哪些页面资源

    grep ^192.168.20.100 access.log| awk '{print $1,$7}'

    14、通过抓包工具tcpdump看看8080端口访问量情况

    tcpdump -i ens120 -tnn dst port 8080 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -10

    15、历史命令常用技巧

    1)重复执行上一条命令为!!

    2)重复执行history历史中第N条命令为!N

        其中N可以通过history命令进行查看。

    3)重复执行最近一次,以某个字符开头的历史命令,如以awk开头的历史命令为!awk

    4)最近一次命令的最后一个参数,命令为!$

        如最近一次命令为vi ./test.txt

        执行命令mv !$ !$.bak

        此时即可实现将当前目录下的test.txt改名为test.txt.bak

    16、如何通过sed命令将文件test.txt中的haodao全部替换成HAODAO

    sed -i "s/haodao/HAODAO/g" test.txt

    17、替换haodao.txt文件中的目录

    sed -i "s:/etc/dhcp:/home:g" haodao.txt

    即表示将haodao.txt文件中的/etc/dhcp目录替换成/home目录

    18、以下针对haodao.txt文件举例sed命令常见技巧

    1)去掉行首的#字符,命令为:

    sed -i "s/^#//g" haodao.txt

    2)在行首添加linux字符,命令为:

    sed -i "s/^/linux/g" haodao.txt

    3)在行尾添加一个study字符,命令为:

    sed -i "s/$/study/" haodao.txt

    4)在特定行后,即we love行后添加一个you字符,命令为:

    sed -i "/we love/ayou" haodao.txt

    5)在特定行前,即haodao行前添加一个where字符,命令为:

    sed -i "/haodao/iwhere" haodao.txt

    19、过滤出状态为UP的网络接口

    ip addr |awk -F ":" '/state UP/ {print $2}'

    20、过滤出对应各网卡的IP地址信息

    ip -o addr |awk '/inet/{print $2,$4}'

    结语

    以上都是一些在日常工作中非常使用的小技巧,知识点虽然简单,但是却不能不使用,也是很多朋友容易忽略掉的。如果你也觉得实用,那么就让我们一起分享给身边的小伙伴吧。独乐乐不如众乐乐,知识本就是需要大家传播的!

  • Linux常用命令速查手册(Redhat,Debian, Ubuntu)

    Linux常用命令速查手册

    系统信息

    arch 显示机器的处理器架构(1)
    uname -m 显示机器的处理器架构(2)
    uname -r 显示正在使用的内核版本
    dmidecode -q 显示硬件系统部件 – (SMBIOS / DMI)
    hdparm -i  /dev/hda 罗列一个磁盘的架构特性
    hdparm -tT /dev/sda 在磁盘上执行测试性读取操作
    cat /proc/cpuinfo 显示CPU info的信息
    cat /proc/interrupts 显示中断
    cat /proc/meminfo 校验内存使用
    cat /proc/swaps 显示哪些swap被使用
    cat /proc/version 显示内核的版本
    cat /proc/net/dev 显示网络适配器及统计
    cat /proc/mounts 显示已加载的文件系统
    lspci -tv 罗列PCI设备
    lsusb -tv 显示USB设备

    date 显示系统日期

    cal 2007 显示2007年的日历表
    date 20211207131313 设置日期和时间 – 月日时分年.秒
    clock -w 将时间修改保存到 BIOS

    关机 (系统的关机、重启以及登出)

    shutdown -h now 关闭系统(1)
    init 0 关闭系统(2)
    telinit 0 关闭系统(3)
    shutdown -h hours:minutes & 按预定时间关闭系统
    shutdown -c 取消按预定时间关闭系统
    shutdown -r now 重启(1)
    reboot 重启(2)
    logout 注销

    文件和目录

    cd /home 进入 ‘/ home’ 目录
    cd .. 返回上一级目录
    cd ../.. 返回上两级目录
    cd 进入个人的主目录
    cd ~user1 进入个人的主目录
    cd – 返回上次所在的目录
    pwd 显示工作路径
    ls 查看目录中的文件
    ls -F 查看目录中的文件
    ls -l 显示文件和目录的详细资料
    ls -a 显示隐藏文件
    ls *[0-9]* 显示包含数字的文件名和目录名
    tree 显示文件和目录由根目录开始的树形结构(1)
    lstree 显示文件和目录由根目录开始的树形结构(2)
    mkdir dir1 创建一个叫做 ‘dir1’ 的目录
    mkdir dir1 dir2 同时创建两个目录
    mkdir -p /tmp/dir1/dir2 创建一个目录树
    rm -f file1 删除一个叫做 ‘file1’ 的文件
    rmdir dir1 删除一个叫做 ‘dir1’ 的目录
    rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容
    rm -rf dir1 dir2 同时删除两个目录及它们的内容
    mv dir1 new_dir 重命名/移动 一个目录
    cp file1 file2 复制一个文件
    cp dir/* . 复制一个目录下的所有文件到当前工作目录
    cp -a /tmp/dir1 . 复制一个目录到当前工作目录
    cp -a dir1 dir2 复制一个目录
    ln -s file1 lnk1 创建一个指向文件或目录的软链接
    ln file1 lnk1 创建一个指向文件或目录的物理链接
    touch -t 0712250000 file1 修改一个文件或目录的时间戳 – (YYMMDDhhmm)
    iconv -l 列出已知的编码

    文件搜索

    find / -name file1 从 ‘/’ 开始进入根文件系统搜索文件和目录
    find / -user user1 搜索属于用户 ‘user1’ 的文件和目录
    find /home/user1 -name *.bin 在目录 ‘/ home/user1′ 中搜索带有’.bin’ 结尾的文件
    find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
    find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
    find / -name *.rpm -exec chmod 755 ‘{}’ ; 搜索以 ‘.rpm’ 结尾的文件并定义其权限
    find / -xdev -name *.rpm 搜索以 ‘.rpm’ 结尾的文件,忽略光驱、捷盘等可移动设备
    locate *.ps 寻找以 ‘.ps’ 结尾的文件 – 先运行 ‘updatedb’ 命令
    whereis halt 显示一个二进制文件、源码或man的位置
    which halt 显示一个二进制文件或可执行文件的完整路径

    挂载一个文件系统

    df -h 显示已经挂载的分区列表
    ls -lSr more
    du -sh dir1 估算目录 ‘dir1’ 已经使用的磁盘空间

    用户和群组

    groupadd group_name 创建一个新用户组
    groupdel group_name 删除一个用户组
    groupmod -n new_group_name old_group_name 重命名一个用户组
    useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户
    useradd user1 创建一个新用户
    userdel -r user1 删除一个用户 ( ‘-r’ 排除主目录)
    usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
    passwd 修改口令
    passwd user1 修改一个用户的口令 (只允许root执行)
    chage -E 2005-12-31 user1 设置用户口令的失效期限
    pwck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的用户
    grpck 检查 ‘/etc/passwd’ 的文件格式和语法修正以及存在的群组
    newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组

    文件的权限

    ls -lh 显示权限
    ls /tmp pr -T5 -W$COLUMNS
    chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
    chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
    chown user1 file1 改变一个文件的所有人属性
    chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性
    chgrp group1 file1 改变文件的群组
    chown user1:group1 file1 改变一个文件的所有人和群组属性
    find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件
    chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 – 运行该文件的用户也被赋予和所有者同样的权限
    chmod u-s /bin/file1 禁用一个二进制文件的 SUID位
    chmod g+s /home/public 设置一个目录的SGID 位 – 类似SUID ,不过这是针对目录的
    chmod g-s /home/public 禁用一个目录的 SGID 位
    chmod o+t /home/public 设置一个文件的 STIKY 位 – 只允许合法所有人删除文件
    chmod o-t /home/public 禁用一个目录的 STIKY 位

    文件的特殊属性

    chattr +a file1 只允许以追加方式读写文件
    chattr +c file1 允许这个文件能被内核自动压缩/解压
    chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件
    chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接
    chattr +s file1 允许一个文件被安全地删除
    chattr +S file1 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
    chattr +u file1 若文件被删除,系统会允许你在以后恢复这个被删除的文件
    lsattr 显示特殊的属性

    打包和压缩文件

    bunzip2 file1.bz2 解压一个叫做 ‘file1.bz2’的文件
    bzip2 file1 压缩一个叫做 ‘file1’ 的文件
    gunzip file1.gz 解压一个叫做 ‘file1.gz’的文件
    gzip file1 压缩一个叫做 ‘file1’的文件
    gzip -9 file1 最大程度压缩
    rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包
    rar a file1.rar file1 file2 dir1 同时压缩 ‘file1′,’file2’ 以及目录 ‘dir1’
    rar x file1.rar 解压rar包
    unrar x file1.rar 解压rar包
    tar -cvf archive.tar file1 创建一个非压缩的 tarball
    tar -cvf archive.tar file1 file2 dir1 创建一个包含了 ‘file1′,’file2’ 以及 ‘dir1’的档案文件
    tar -tf archive.tar 显示一个包中的内容
    tar -xvf archive.tar 释放一个包
    tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下
    tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
    tar -jxvf archive.tar.bz2 解压一个bzip2格式的压缩包
    tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
    tar -zxvf archive.tar.gz 解压一个gzip格式的压缩包
    zip file1.zip file1 创建一个zip格式的压缩包
    zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
    unzip file1.zip 解压一个zip格式压缩包

    RPM 包 – (Fedora, Redhat 及类似系统)

    rpm -ivh package.rpm 安装一个rpm包
    rpm -ivh –nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
    rpm -U package.rpm 更新一个rpm包但不改变其配置文件
    rpm -F package.rpm 更新一个确定已经安装的rpm包
    rpm -e package_name.rpm 删除一个rpm包
    rpm -qa 显示系统中所有已经安装的rpm包
    rpm -qa grep httpd
    rpm -qi package_name 获取一个已安装包的特殊信息
    rpm -qg “System Environment/Daemons” 显示一个组件的rpm包
    rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
    rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
    rpm -q package_name –whatrequires 显示与一个rpm包存在依赖关系的列表
    rpm -q package_name –whatprovides 显示一个rpm包所占的体积
    rpm -q package_name –scripts 显示在安装/删除期间所执行的脚本l
    rpm -q package_name –changelog 显示一个rpm包的修改历史
    rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供
    rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
    rpm –import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
    rpm –checksig package.rpm 确认一个rpm包的完整性
    rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
    rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
    rpm -Va 检查系统中所有已安装的rpm包- 小心使用
    rpm -Vp package.rpm 确认一个rpm包还未安装
    rpm2cpio package.rpm cpio –extract –make-directories *bin*
    rpm -ivh /usr/src/redhat/RPMS/arch/package.rpm 从一个rpm源码安装一个构建好的包
    rpmbuild –rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包

    YUM 软件包升级器 – (Fedora, RedHat 及类似系统)

    yum install package_name 下载并安装一个rpm包
    yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
    yum update package_name.rpm 更新当前系统中所有安装的rpm包
    yum update package_name 更新一个rpm包
    yum remove package_name 删除一个rpm包
    yum list 列出当前系统中安装的所有包
    yum search package_name 在rpm仓库中搜寻软件包
    yum clean packages 清理rpm缓存删除下载的包
    yum clean headers 删除所有头文件
    yum clean all 删除所有缓存的包和头文件

    DEB 包 (Debian, Ubuntu 以及类似系统)

    dpkg -i package.deb 安装/更新一个 deb 包
    dpkg -r package_name 从系统删除一个 deb 包
    dpkg -l 显示系统中所有已经安装的 deb 包
    dpkg -l grep httpd
    dpkg -s package_name 获得已经安装在系统中一个特殊包的信息
    dpkg -L package_name 显示系统中已经安装的一个deb包所提供的文件列表
    dpkg –contents package.deb 显示尚未安装的一个包所提供的文件列表
    dpkg -S /bin/ping 确认所给的文件由哪个deb包提供

    APT 软件工具 (Debian, Ubuntu 以及类似系统)

    apt-get install package_name 安装/更新一个 deb 包
    apt-cdrom install package_name 从光盘安装/更新一个 deb 包
    apt-get update 升级列表中的软件包
    apt-get upgrade 升级所有已安装的软件
    apt-get remove package_name 从系统删除一个deb包
    apt-get check 确认依赖的软件仓库正确
    apt-get clean 从下载的软件包中清理缓存
    apt-cache search searched-package 返回包含所要搜索字符串的软件包名称

    查看文件内容

    cat file1 从第一个字节开始正向查看文件的内容
    tac file1 从最后一行开始反向查看一个文件的内容
    more file1 查看一个长文件的内容
    less file1 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作
    head -2 file1 查看一个文件的前两行
    tail -2 file1 查看一个文件的最后两行
    tail -f /var/log/messages 实时查看被添加到一个文件中的内容

    文本处理

    cat file1 | command( sed, grep, awk, grep, etc…) > result.txt 合并一个文件的详细说明文本,并将简介写入一个新文件中
    cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt 合并一个文件的详细说明文本,并将简介写入一个已有的文件中
    grep Aug /var/log/messages 在文件 ‘/var/log/messages’中查找关键”Aug”
    grep ^Aug /var/log/messages 在文件 ‘/var/log/messages’中查找以”Aug”开始的词汇
    grep [0-9] /var/log/messages 选择 ‘/var/log/messages’ 文件中所有包含数字的行
    grep Aug -R /var/log/* 在目录 ‘/var/log’ 及随后的目录中搜索字符串”Aug”
    sed ‘s/stringa1/stringa2/g’ example.txt 将example.txt文件中的 “string1” 替换成 “string2”
    sed ‘/^$/d’ example.txt 从example.txt文件中删除所有空白行
    sed ‘/ *#/d; /^$/d’ example.txt 从example.txt文件中删除所有注释和空白行
    echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ 合并上下单元格内容
    sed -e ‘1d’ result.txt 从文件example.txt 中排除第一行
    sed -n ‘/stringa1/p’ 查看只包含词汇 “string1″的行
    sed -e ‘s/ *$//’ example.txt 删除每一行最后的空白字符
    sed -e ‘s/stringa1//g’ example.txt 从文档中只删除词汇 “string1” 并保留剩余全部
    sed -n ‘1,5p;5q’ example.txt 查看从第一行到第5行内容
    sed -n ‘5p;5q’ example.txt 查看第行
    sed -e ‘s/00*/0/g’ example.txt 用单个零替换多个零
    cat -n file1 标示文件的数
    cat example.txt | awk ‘NR%2==1’ 删除example.txt文件中的所有偶数行
    echo a b c | awk ‘{print $1}’ 查看一行第一栏
    echo a b c | awk ‘{print 3}’ 查看一行的第一和第三栏
    paste file1 file2 合并两个文件或两栏的内容
    paste -d ‘+’ file1 file2 合并两个文件或两栏的内容,中间用”+”区分
    sort file1 file2 排序两个文件的容
    sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
    sort file1 file2 | uniq -u 删除交集,留下其他的行
    sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
    comm -1 file1 file2 比较两个文件的内容只删除 ‘file1’ 所包含的内容
    comm -2 file1 file2 比较两个文件的内容只删除 ‘file2’ 所包含的内容
    comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分

    字符设置和文件格式转换

    dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX
    unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
    recode ..HTML < page.txt > page.html 将一个文本文件转换成html
    recode -l more

    文件系统分析

    badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块
    fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性
    fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
    e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
    e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
    fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
    fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
    fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
    dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性

    初始化一个文件系统

    mkfs /dev/hda1 在hda1分区创建一个文件系统
    mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统
    mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统
    mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统
    fdformat -n /dev/fd0 格式化一个软盘
    mkswap /dev/hda3 创建一个swap文件系统

    SWAP 文件系统

    mkswap /dev/hda3 创建一个swap文件系统
    swapon /dev/hda3 启用一个新的swap文件系统
    swapon /dev/hda2 /dev/hdb3 启用两个swap分区

    备份

    dump -0aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的完整备份
    dump -1aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的交互式备份
    restore -if /tmp/home0.bak 还原一个交互式备份
    rsync -rogpav –delete /home /tmp 同步两边的目录
    rsync -rogpav -e ssh –delete /home ip_address:/tmp 通过SSH通道rsync
    rsync -az -e ssh –delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录
    rsync -az -e ssh –delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录
    dd bs=1M if=/dev/hda gzip
    dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件
    tar -Puf backup.tar /home/user 执行一次对 ‘/home/user’ 目录的交互式备份操作
    ( cd /tmp/local/ && tar c . ) ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’
    ( tar c /home ) ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’
    tar cf – . (cd /tmp/backup ; tar xf – )
    find /home/user1 -name ‘*.txt’ xargs cp -av –target-directory=/home/backup/ –parents
    find /var/log -name ‘*.log’ tar cv –files-from=-
    dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作
    dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容

    光盘

    cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容
    mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件
    mkisofs /dev/cdrom gzip > cd_iso.gz
    mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件
    cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件
    gzip -dc cd_iso.gz cdrecord dev=/dev/cdrom –
    mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件
    cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中
    cd-paranoia — “-3” 从一个CD光盘转录音轨到 wav 文件中(参数-3)
    cdrecord –scanbus 扫描总线以识别scsi通道
    dd if=/dev/hdc md5sum

    网络 – (以太网和 WIFI 无线)

    ifconfig eth0 显示一个以太网卡的配置
    ifup eth0 启用一个 ‘eth0’ 网络设备
    ifdown eth0 禁用一个 ‘eth0’ 网络设备
    ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址
    ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式以嗅探数据包 (sniffing)
    dhclient eth0 以dhcp模式启用 ‘eth0’
    route -n 查看路由表
    route add -net 0/0 gw IP_Gateway 配置默认网关
    route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 配置静态路由到达网络’192.168.0.0/16′
    route del 0/0 gw IP_gateway 删除静态路由
    hostname 查看机器名
    host www.example.com 把一个主机名解析到一个网际地址或把一个网际地址解析到一个主机名。
    nslookup www.example.com 用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
    ip link show 查看网卡信息
    mii-tool 用于查看、管理介质的网络接口的状态
    ethtool 用于查询和设置网卡配置
    netstat -tupl 用于显示TCP/UDP的状态信息
    tcpdump tcp port 80 显示所有http协议的流量

     

  • 要特别熟记的几个linux常用运维命令

    这些命令都是在系统运维常敲的命令,几天不敲,有些就记不全了,对于职业的运维工程师来说这些最好能熟记并能举一反三。虽然什么都可以百度,Google查但是如果你能在工作中很流畅的敲出来并解决问题,那么工作效率肯定会很高。

    查找目录下所有以. zip 结尾的文件移动到指定目录

    find . -name "*.zip" -exec mv {} ./backup/;
    

    查找当前目录 30 天以前大于 100M 的log文件并删除。

    find . -name "*.log" –mtime +30 –typef –size +100M | xargs rm –rf {};
    

    批量解压当前目录下以. zip 结尾的所有文件到指定目录

    for i  in  `find . –name "*.zip" –type f`
    do
      unzip –d $i /data/www/
    done
    

    注解:for i in (command);do … done 为 for 循环的一个常用格式,其中i为变量,可以自己指定。

    写一个脚本查找最后创建时间是 3 天前,后缀是 *.log 的文件并删除。

    find . -mtime +3  -name "*.log" | xargs rm -rf {};
    

    写一个脚本将某目录下大于 100k 的文件移动至/ tmp下

    find . -size +100k -exec mv {} /tmp;
    

    如何判断某个目录是否存在,不存在则新建,存在则打印信息。

    if [ ! –d /data/backup/ ];then
       mkdir –p /data/backup/
    else
       echo  "目录已存在"
    fi
    

    -d 代表目录。

    替换文件中的目录

    sed 's:/user/local:/tmp:g' test.txt
    或者
    sed -i 's//usr/local//tmp/g' test.txt
    

    sed 常用命令

    如何去掉行首的.字符: sed -i 's/^.//g' test.txt
    
    在行首添加一个a字符: sed 's/^/a/g'    test.txt
    
    在行尾添加一个a字符: sed 's/$/a/'     tets.txt
    
    在特定行后添加一个z字符:sed '/rumen/az' test.txt
    
    在行前加入一个c字符: sed '/rumenz/ic' test.txt
    

    sed 另外一个用法找到当前行,然后在修改该行后面的参数

    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
    

    sed 冒号方式

    sed -i 's:/tmp:/tmp/abc/:g' test.txt意思是将/tmp改成/tmp/abc/。
    

    统计 Nginx 访问日志 访问量排在前20的ip地址

    cat access.log |awk '{print $1}'|sort|uniq -c |sort -nr |head -20
    

    注解:sort 排序、uniq(检查及删除文本文件中重复出现的行列 )

    修改文本中以ab 结尾的替换成 cd:

    sed -e 's/ab$/cd/g' b.txt
    

    网络抓包:tcpdump

    #抓取 56.7 通过80请求的数据包。
    tcpdump -nn host 192.168.56.7 and port 80 
    
    #排除0.22 80端口
    tcpdump -nn host 192.168.56.7 or ! host 192.168.0.22 and port 80 
    

    统计bash_history最常用的 20 条命令

    history | awk '{print $2}' | sort | uniq -c | sort -k1,1nr | head -10
    

    配置防火墙脚本,只允许远程主机访问本机的 80 端口

    iptables -F
    iptables -X
    iptables -A INPUT -p tcp --dport 80 -j accept
    iptables -A INPUT -p tcp -j REJECT
    或者
    iptables -A INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT
  • linuxcool:linux常用命令与使用方法大全 (系统入门,建议收藏)

    前言

    为什么要学习 Linux 命令?

    目前企业有超过 80% 甚至更多的系统都是 Linux 操作系统,所以不管是做开发还是运维,不会点 Linux 知识肯定是无法进入到企业里工作。而且,很多企业的岗位职责里写要需要精通 Linux。Linux 的从业方向也比较广,主要分为 运维 和 开发 ,细分下来就数不胜数了,基本都会涉及,因此学好 Linux 刻不容缓。本文将列出我工作多年所学的 Linux 常用命令的汇总!超全面!超详细!包学包会!

    Linux命令汇总

     

    一、 文件管理

     

    1、 ls 命令 – 显示指定工作目录下的内容及属性信息

    ls命令为英文单词 list 的缩写,正如英文单词 list 的意思,其功能是列出指定目录下的内容及其相关属性信息。

    默认状态下,ls命令会列出当前目录的内容。而带上参数后,我们可以用ls做更多的事情。作为最基础同时又是使用频率很高的命令,我们很有必要搞清楚ls命令的用法,那么接下来一起看看吧!

    语法:

    语法格式: ls [选项] [文件]

    常用参数:

    参数 描述
    -a 显示所有文件及目录 (包括以“.”开头的隐藏文件)
    -l 使用长格式列出文件及目录信息
    -r 将文件以相反次序显示(默认依英文字母次序)
    -t 根据最后的修改时间排序
    -A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
    -S 根据文件大小排序
    -R 递归列出所有子目录

    参考实例:

    列出所有文件(包括隐藏文件):

    ls -a
    

    列出文件的详细信息:

    ls -l
    

    列出根目录(/)下的所有目录:

    ls /
    

    列出当前工作目录下所有名称是 “s” 开头的文件(不包含文件夹哦~) :

    ls -ltr s*
    

    列出 /root 目录下的所有目录及文件的详细信息 :

    ls -lR /root
    

    列出当前工作目录下所有文件及目录并以文件的大小进行排序 :

    ls -AS
    

    2、 cp 命令 – 复制文件或目录

    cp命令可以理解为英文单词copy的缩写,其功能为复制文件或目录。

    cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。

    语法:

    语法格式:cp [参数] [文件]

    常用参数:

    参数 描述
    -f 若目标文件已存在,则会直接覆盖原文件
    -i 若目标文件已存在,则会询问是否覆盖
    -p 保留源文件或目录的所有属性
    -r 递归复制文件和目录
    -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
    -l 对源文件建立硬连接,而非复制文件
    -s 对源文件建立符号连接,而非复制文件
    -b 覆盖已存在的文件目标前将目标文件备份
    -v 详细显示cp命令执行的操作过程
    -a 等价于“dpr”选项

    参考实例:

    复制目录:

    cp -R dir1 dir2/
    

    将文件test1改名为test2:

    cp -f test1 test2
    

    复制多个文件:

    cp -r file1 file2 file3 dir
    

    交互式地将目录 /home/lucifer 中的所有.c文件复制到目录 dir 中:

    cp -r /home/lucifer/*.c dir
    

    3、 mkdir 命令 – 创建目录

    mkdir命令是“make directories”的缩写,用来创建目录。

    ? 注意: 默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。所以在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。mkdir命令还可以同时创建多个目录,是不是很强大呢?

    语法:

    语法格式 : mkdir [参数] [目录]

    常用参数:

    参数 描述
    -p 递归创建多级目录
    -m 建立目录的同时设置目录的权限
    -z 设置安全上下文
    -v 显示目录的创建过程

    参考实例:

    在工作目录下,建立一个名为 dir 的子目录:

    mkdir dir
    

    在目录/home/lucifer下建立子目录dir,并且设置文件属主有读、写和执行权限,其他人无权访问:

    mkdir -m 700 /home/lucifer/dir
    

    同时创建子目录dir1,dir2,dir3:

    mkdir dir1 dir2 dir3
    

    递归创建目录:

    mkdir -p lucifer/dir
    

    4、 mv 命令 – 移动或改名文件

    mv命令是“move”单词的缩写,其功能大致和英文含义一样,可以移动文件或对其改名。

    这是一个使用频率超高的文件管理命令,我们需要特别留意它与复制的区别:mv与cp的结果不同。mv命令好像文件“搬家”,文件名称发生改变,但个数并未增加。而cp命令是对文件进行复制操作,文件个数是有增加的。

    语法:

    语法格式:mv [参数]

    常用参数:

    参数 描述
    -i 若存在同名文件,则向用户询问是否覆盖
    -f 覆盖已有文件时,不进行任何提示
    -b 当文件存在时,覆盖前为其创建一个备份
    -u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

    参考实例:

    将文件file_1重命名为file_2:

    mv file_1 file_2
    

    将文件file移动到目录dir中 :

    mv file /dir
    

    将目录dir1移动目录dir2中(前提是目录dir2已存在,若不存在则改名):

    mv /dir1 /dir2
    

    将目录dir1下的文件移动到当前目录下:

    mv /dir1/* .
    

    5、 pwd 命令 – 显示当前路径

    pwd命令是“print working directory”中每个单词的首字母缩写,其功能正如所示单词一样,为打印工作目录,即显示当前工作目录的绝对路径。

    在实际工作中,我们经常会在不同目录之间进行切换,为了防止“迷路”,我们可以使用pwd命令快速查看当前我们所在的目录路径。

    语法:

    语法格式: pwd [参数]

    常用参数:

    参数 描述
    -L 显示逻辑路径

    参考实例:

    查看当前工作目录路径:

    pwd
    

    二、 文档编辑

    1、 cat 命令 – 在终端设备上显示文件内容

    cat这个命令也很好记,因为cat在英语中是“猫”的意思,小猫咪是不是给您一种娇小、可爱的感觉呢?

    ? 注意: 当文件内容较大时,文本内容会在屏幕上快速闪动(滚屏),用户往往看不清所显示的具体内容。

    因此对于较长文件内容可以:

    • 按Ctrl+S键,停止滚屏;
    • 按Ctrl+Q键可以恢复滚屏;
    • 按Ctrl+C(中断)键则可以终止该命令的执行。

    或者对于大文件,干脆用 more 命令吧!

    语法:

    语法格式:cat [参数] [文件]

    常用参数:

    参数 描述
    -n 显示行数(空行也编号)
    -s 显示行数(多个空行算一个编号)
    -b 显示行数(空行不编号)
    -E 每行结束处显示$符号
    -T 将TAB字符显示为 ^I符号
    -v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
    -e 等价于”-vE”组合
    -t 等价于”-vT”组合
    -A 等价于 -vET组合
    –help 显示帮助信息
    –version 显示版本信息

    参考实例:

    查看文件的内容:

    cat lucifer.log
    

    查看文件的内容,并显示行数编号:

    cat -n lucifer.log
    

    查看文件的内容,并添加行数编号后输出到另外一个文件中:

    cat -n lucifer.log > lucifer.txt
    

    清空文件的内容:

    cat /dev/null > /root/lucifer.txt
    

    持续写入文件内容,碰到EOF符后结束并保存:

    cat > lucifer.txt <<EOF
    Hello, World 
    Linux!
    EOF
    

    将软盘设备制作成镜像文件:

    cat /dev/fb0 > fdisk.iso
    

    2、echo 命令 – 输出字符串或提取Shell变量的值

    echo命令用于在终端设备上输出字符串或变量提取后的值,这是在Linux系统中最常用的几个命令之一,但操作却非常简单。

    人们一般使用在变量前加上符号的方式提取出变量的值,例如:PATH,然后再用echo命令予以输出。或者直接使用echo命令输出一段字符串到屏幕上,起到给用户提示的作用。

    语法:

    语法格式:echo [参数] [字符串]

    常用参数:

    参数 描述
    -n 不输出结尾的换行符
    -e “\a” 发出警告音
    -e “\b” 删除前面的一个字符
    -e “\c” 结尾不加换行符
    -e “\f” 换行,光标扔停留在原来的坐标位置
    -e “\n” 换行,光标移至行首
    -e “\r” 光标移至行首,但不换行
    -E 禁止反斜杠转移,与-e参数功能相反
    —version 查看版本信息
    –help 查看帮助信息

    参考实例:

    输出一段字符串:

    echo "Hello Lucifer"
    

    输出变量提取后的值:

    echo $PATH
    

    对内容进行转义,不让$符号的提取变量值功能生效:

    echo \$PATH
    

    结合输出重定向符,将字符串信息导入文件中:

    echo "It is a test" > lucifer
    

    使用反引号符执行命令,并输出其结果到终端:

    echo `date`
    

    输出带有换行符的内容:

    echo -e "a\nb\nc"
    

    输出信息中删除某个字符,注意看数字3消失了:

    echo -e "123\b456"
    

    3、 rm 命令 – 移除文件或目录

    rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

    ? 注意: rm也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。

    所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

    语法:

    语法格式:rm [参数] [文件]

    常用参数:

    参数 描述
    -f 忽略不存在的文件,不会出现警告信息
    -i 删除前会询问用户是否操作
    -r/R 递归删除
    -v 显示指令的详细执行过程

    参考实例:

    删除前逐一询问确认:

    rm -i test.txt.bz2
    

    直接删除,不会有任何提示:

    rm -f test.txt.bz2  
    

    递归删除目录及目录下所有文件:

    mkdir /data/log
    rm -rf /data/log
    

    删除当前目录下所有文件:

    rm -rf *
    

    清空系统中所有的文件(谨慎):

    rm -rf /*
    

    4、 tail 命令 – 查看文件尾部内容

    tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

    语法:

    语法格式:tail [参数]

    常用参数:

    参数 描述
    –retry 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用
    -c或—bytes= 输出文件尾部的N(N为整数)个字节内容
    -f<name/descriptor> –follow:显示文件最新追加的内容
    -F 与选项“-follow=name”和“–retry”连用时功能相同
    -n或—line= 输出文件的尾部N(N位数字)行内容
    –pid=<进程号> 与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令
    –help 显示指令的帮助信息
    –version 显示指令的版本信息

    参考实例:

    显示文件file的最后10行:

    tail file
    

    显示文件file的内容,从第20行至文件末尾:

    tail +20 file 
    

    显示文件file的最后10个字符:

    tail -c 10 file 
    

    一直变化的文件总是显示后10行:

    tail -f 10 file
    

    显示帮助信息:

    tail --help
    

    5、 rmdir 命令 – 删除空目录

    rmdir命令作用是删除空的目录,英文全称:“remove directory”。

    注意:rmdir命令只能删除空目录。当要删除非空目录时,就要使用带有“-R”选项的rm命令。

    rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。

    语法:

    语法格式 :  rmdir [参数] [目录名称]

    常用参数:

    参数 描述
    -p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错
    –ignore-fail-on-non-empty 忽略由于删除非空目录时导致命令出错而产生的错误信息
    -v 显示命令的详细执行过程
    –help 显示命令的帮助信息
    –version 显示命令的版本信息

    参考实例:

    删除空目录:

    rmdir dir
    

    递归删除指定的目录树:

    rmdir -p dir/dir_1/dir_2
    

    显示指令详细执行过程:

    rmdir -v dir
    

    显示命令的版本信息:

    rmdir --version
    

    三、 系统管理

    1、 rpm 命令 – RPM软件包管理器

    rpm命令是Red-Hat Package Manager(RPM软件包管理器)的缩写, 该命令用于管理Linux 下软件包的软件。在 Linux 操作系统下,几乎所有的软件均可以通过RPM 进行安装、卸载及管理等操作。

    概括的说,rpm命令包含了五种基本功能:安装、卸载、升级、查询和验证。

    语法:

    语法格式:rpm [参数] [软件包]

    常用参数:

    参数 描述
    -a 查询所有的软件包
    -b或-t 设置包装套件的完成阶段,并指定套件档的文件名称
    -c 只列出组态配置文件,本参数需配合”-l”参数使用
    -d 只列出文本文件,本参数需配合”-l”参数使用
    -e或–erase 卸载软件包
    -f 查询文件或命令属于哪个软件包
    -h或–hash 安装软件包时列出标记
    -i 显示软件包的相关信息
    –install 安装软件包
    -l 显示软件包的文件列表
    -p 查询指定的rpm软件包
    -q 查询软件包
    -R 显示软件包的依赖关系
    -s 显示文件状态,本参数需配合”-l”参数使用
    -U或–upgrade 升级软件包
    -v 显示命令执行过程
    -vv 详细显示指令执行过程

    参考实例:

    直接安装软件包:

    rpm -ivh packge.rpm 
    

    忽略报错,强制安装:

    rpm --force -ivh package.rpm
    

    列出所有安装过的包:

    rpm -qa
    

    查询rpm包中的文件安装的位置:

    rpm -ql ls
    

    卸载rpm包:

    rpm -e package.rpm 
    

    升级软件包:

    rpm -U file.rpm
    

    2、find 命令 – 查找和搜索文件

    find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。

    find如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find命令,find命令模糊搜索还是比较消耗系统资源的。

    语法:

    语法格式:find [参数] [路径] [查找和搜索范围]

    常用参数:

    参数 描述
    -name 按名称查找
    -size 按大小查找
    -user 按属性查找
    -type 按类型查找
    -iname 忽略大小写

    参考实例:

    使用-name参数查看/etc目录下面所有的.conf结尾的配置文件:

    find /etc -name "*.conf
    

    使用-size参数查看/etc目录下面大于1M的文件:

    find /etc -size +1M
    

    查找当前用户主目录下的所有文件:

    find $HOME -print
    

    列出当前目录及子目录下所有文件和文件夹:

    find .
    

    在/home目录下查找以.txt结尾的文件名:

    find /home -name "*.txt"
    

    在/var/log目录下忽略大小写查找以.log结尾的文件名:

    find /var/log -iname "*.log"
    

    搜索超过七天内被访问过的所有文件:

    find . -type f -atime +7
    

    搜索访问时间超过10分钟的所有文件:

    find . -type f -amin +10
    

    找出/home下不是以.txt结尾的文件:

    find /home ! -name "*.txt"
    

    3、startx 命令 – 初始化X-windows

    startx命令用来启动X-Window,它负责调用X-Window系统的初始化程序xinit。以完成 X-Window运行所必要的初始化工作,并启动X-Window系统。

    语法:

    语法格式:startx [参数]

    常用参数:

    参数 描述
    -d 指定在启动过程中传递给客户机的X服务器的显示名称
    -m 当未找到启动脚本时,启动窗口管理器
    -r 当未找到启动脚本时,装入资源文件
    -w 强制启动
    -x 使用startup脚本启动X-windows会话

    参考实例:

    已默认方式启动X-windows系统:

    startx
    

    以16位颜色深度启动X-windows系统:

    startx --depth 16
    

    强制启动 X-windows系统:

    startx -w
    

    4、uname 命令 – 显示系统信息

    uname命令的英文全称即“Unix name”。

    用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。

    如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字。

    语法:

    语法格式:uname [参数]

    常用参数:

    参数 描述
    -a 显示系统所有相关信息
    -m 显示计算机硬件架构
    -n 显示主机名称
    -r 显示内核发行版本号
    -s 显示内核名称
    -v 显示内核版本
    -p 显示主机处理器类型
    -o 显示操作系统名称
    -i 显示硬件平台

    参考实例:

    显示系统主机名、内核版本号、CPU类型等信息:

    uname -a
    

    仅显示系统主机名:

    uname -n
    

    显示当前系统的内核版本 :

    uname -r
    

    显示当前系统的硬件架构:

    uname -i
    

    5、vmstat 命令 – 显示虚拟内存状态

    vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

    语法:

    语法格式:vmstat [参数]

    常用参数:

    参数 描述
    -a 显示活动内页
    -f 显示启动后创建的进程总数
    -m 显示slab信息
    -n 头信息仅显示一次
    -s 以表格方式显示事件计数器和内存状态
    -d 报告磁盘状态
    -p 显示指定的硬盘分区状态
    -S 输出信息的单位

    参考实例:

    显示活动内页:

    vmstat -a
    

    显示启动后创建的进程总数:

    vmstat -f
    

    显示slab信息:

    vmstat -m
    

    头信息仅显示一次:

    vmstat -n
    

    以表格方式显示事件计数器和内存状态:

    vmstat -s
    

    显示指定的硬盘分区状态:

    vmstat -p /dev/sda1
    

    指定状态信息刷新的时间间隔为1秒:

    vmstat 1
    

    四、 磁盘管理

    1、 df 命令 – 显示磁盘空间使用情况

    df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。

    日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。

    语法:

    语法格式:df [参数] [指定文件]

    常用参数:

    参数 描述
    -a 显示所有系统文件
    -B <块大小> 指定显示时的块大小
    -h 以容易阅读的方式显示
    -H 以1000字节为换算单位来显示
    -i 显示索引字节信息
    -k 指定块大小为1KB
    -l 只显示本地文件系统
    -t <文件系统类型> 只显示指定类型的文件系统
    -T 输出时显示文件系统类型
    — -sync 在取得磁盘使用信息前,先执行sync命令

    参考实例:

    显示磁盘分区使用情况:

    df
    

    以容易阅读的方式显示磁盘分区使用情况:

    df -h
    

    显示指定文件所在分区的磁盘使用情况:

    df /etc/dhcp
    

    显示文件类型为ext4的磁盘使用情况:

    df -t ext4
    

    2、fdisk 命令 – 磁盘分区

    fdisk命令的英文全称是“Partition table manipulator for Linux”,即作为磁盘的分区工具。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。

    语法:

    语法格式:fdisk [参数]

    常用参数:

    参数 描述
    -b 指定每个分区的大小
    -l 列出指定的外围设备的分区表状况
    -s 将指定的分区大小输出到标准输出上,单位为区块
    -u 搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址
    -v 显示版本信息

    参考实例:

    查看所有分区情况:

    fdisk -l
    

    选择分区磁盘:

    fdisk /dev/sdb
    

    在当前磁盘上建立扩展分区:

    fdisk /ext
    

    不检查磁盘表面加快分区操作:

    fdisk /actok
    

    重建主引导记录:

    fdisk /cmbr
    

    3、 lsblk命令 – 查看系统的磁盘

    lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。

    lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。

    语法:

    语法格式:lsblk [参数]

    常用参数:

    参数 描述
    -a 显示所有设备
    -b 以bytes方式显示设备大小
    -d 不显示 slaves 或 holders
    -D print discard capabilities
    -e 排除设备
    -f 显示文件系统信息
    -h 显示帮助信息
    -i use ascii characters only
    -m 显示权限信息
    -l 使用列表格式显示
    -n 不显示标题
    -o 输出列
    -P 使用key=”value”格式显示
    -r 使用原始格式显示
    -t 显示拓扑结构信息

    参考实例:

    lsblk命令默认情况下将以树状列出所有块设备:

    lsblk
    

    默认选项不会列出所有空设备:

    lsblk -a
    

    也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式:

    lsblk -m
    

    要获取SCSI设备的列表,你只能使用-S选项,该选项是用来以颠倒的顺序打印依赖的:

    lsblk -S
    

    例如,你也许想要以列表格式列出设备,而不是默认的树状格式。可以将两个不同的选项组合,以获得期望的输出:

    lsblk -nl
    

    4、 hdparm命令 – 显示与设定硬盘参数

    hdparm命令用于检测,显示与设定IDE或SCSI硬盘的参数。

    语法:

    语法格式:hdparm [参数]

    常用参数:

    参数 描述
    -a 设定读取文件时,预先存入块区的分区数
    -f 将内存缓冲区的数据写入硬盘,并清空缓冲区
    -g 显示硬盘的磁轨,磁头,磁区等参数
    -I 直接读取硬盘所提供的硬件规格信息
    -X 设定硬盘的传输模式

    参考实例:

    显示硬盘的相关设置:

    hdparm /dev/sda
    

    显示硬盘的柱面、磁头、扇区数:

    hdparm -g /dev/sda
    

    评估硬盘的读取效率:

    hdparm -t /dev/sda
    

    直接读取硬盘所提供的硬件规格信息:

    hdparm -X /dev/sda
    

    使IDE硬盘进入睡眠模式:

    hdparm -Y /dev/sda
    

    5️⃣ vgextend命令 – 扩展卷组

    vgextend命令用于动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量。LVM卷组中的物理卷可以在使用vgcreate命令创建卷组时添加,也可以使用vgextend命令动态的添加。

    语法:

    语法格式:vgextend [参数]

    常用参数:

    参数 描述
    -d 调试模式
    -t 仅测试

    参考实例:

    将物理卷/dev/sdb1加入卷组vglinuxprobe:

    vgextend vglinuxprobe /dev/sdb1
    

    五、文件传输

    1、 tftp 命令 – 上传及下载文件

    tftp命令用于传输文件。ftp让用户得以下载存放于远端主机的文件,也能将文件上传到远端主机放置。

    tftp是简单的文字模式ftp程序,它所使用的指令和ftp类似。

    语法:

    语法格式:tftp [参数]

    常用参数:

    参数 描述
    connect 连接到远程tftp服务器
    mode 文件传输模式
    put 上传文件
    get 下载文件
    quit 退出
    verbose 显示详细的处理信息
    trace 显示包路径
    status 显示当前状态信息
    binary 二进制传输模式
    ascii ascii 传送模式
    rexmt 设置包传输的超时时间
    timeout 设置重传的超时时间
    help 帮助信息
    ? 帮助信息

    参考实例:

    连接远程服务器”10.211.55.100″:

    tftp 10.211.55.100
    

    远程下载file文件:

    tftp> get file
    

    退出tftp:

    tftp> quit 
    

    2、 curl 命令 – 文件传输工具

    curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。

    作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;做网页处理流程和数据检索自动化。

    语法:

    语法格式:curl [参数] [网址]

    常用参数:

    参数 描述
    -O 把输出写到该文件中,保留远程文件的文件名
    -u 通过服务端配置的用户名和密码授权访问

    参考实例:

    将下载的数据写入到文件,必须使用文件的绝对地址:

    curl https://www.baidu.com /root/lucifer.txt --silent -O
    

    访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权:

    curl -u root https://www.baidu.com/
    

    3、 fsck命令 – 检查并修复Linux文件系统

    fsck命令的英文全称是“filesystem check”,即检查文件系统的意思,常用于检查并修复Linux文件系统的一些错误信息,操作文件系统需要先备份重要数据,以防丢失。

    Linux fsck命令用于检查并修复Linux文件系统,可以同时检查一个或多个 Linux 文件系统;若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

    语法:

    语法格式:fsck [参数] [文件系统]

    常用参数:

    参数 描述
    -a 自动修复文件系统,不询问任何问题
    -A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统
    -N 不执行指令,仅列出实际执行会进行的动作
    -P 当搭配”-A”参数使用时,则会同时检查所有的文件系统
    -r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式
    -R 当搭配”-A”参数使用时,则会略过/目录的文件系统不予检查
    -t 指定要检查的文件系统类型
    -T 执行fsck指令时,不显示标题信息
    -V 显示指令执行过程

    参考实例:

    修复坏的分区文件系统:

    fsck -t ext3 -r /usr/local
    

    显示fsck系统安装的版本号:

    fsck --version
    

    4、ftpwho命令 – 显示ftp会话信息

    ftpwho命令用于显示当前所有以FTP登入的用户会话信息。

    执行该命令可得知当前用FTP登入系统的用户有哪些人,以及他们正在进行的操作。

    语法:

    语法格式:ftpwho [参数]

    常用参数:

    参数 描述
    -h 显示帮助信息
    -v 详细模式,输出更多信息

    参考实例:

    查询当前正在登录FTP 服务器的用户:

    ftpwho
    

    在详细模式下,查询当前正在登录FTP 服务器的用户:

    ftpwho -v
    

    显示帮助信息:

    ftpwho -h
    

    5、 lprm命令 – 删除打印队列中的打印任务

    lprm命令的英文全称是“Remove jobs from the print queue”,意为用于删除打印队列中的打印任务。尚未完成的打印机工作会被放在打印机贮列之中,这个命令可用来将未送到打印机的工作取消。

    语法:

    语法格式:lprm [参数] [任务编号]

    常用参数:

    参数 描述
    -E 与打印服务器连接时强制使用加密
    -P 指定接受打印任务的目标打印机
    -U 指定可选的用户名

    参考实例:

    将打印机hpprint中的第102号任务移除:

    lprm -Phpprint 102
    

    将第101号任务由预设打印机中移除:

    lprm 101
    

    六、 网络通讯

    1、ssh 命令 – 安全连接客户端

    ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。

    语法:

    语法格式: ssh [参数] [远程主机]

    常用参数:

    参数 描述
    -1 强制使用ssh协议版本1
    -2 强制使用ssh协议版本2
    -4 强制使用IPv4地址
    -6 强制使用IPv6地址
    -A 开启认证代理连接转发功能
    -a 关闭认证代理连接转发功能
    -b<IP地址> 使用本机指定的地址作为对位连接的源IP地址
    -C 请求压缩所有数据
    -F<配置文件> 指定ssh指令的配置文件,默认的配置文件为“/etc/ssh/ssh_config”
    -f 后台执行ssh指令
    -g 允许远程主机连接本机的转发端口
    -i<身份文件> 指定身份文件(即私钥文件)
    -l<登录名> 指定连接远程服务器的登录用户名
    -N 不执行远程指令
    -o<选项> 指定配置选项
    -p<端口> 指定远程服务器上的端口
    -q 静默模式,所有的警告和诊断信息被禁止输出
    -X 开启X11转发功能
    -x 关闭X11转发功能
    -y 开启信任X11转发功能

    参考实例:

    登录远程服务器:

    ssh 10.211.55.100
    

    用test用户连接远程服务器:

    ssh -l test 10.211.55.100
    

    查看分区列表:

    ssh 10.211.55.100 /sbin/fdisk -l
    

    强制使用ssh协议版本1:

    ssh -1
    

    开启认证代理连接转发功能:

    ssh -A
    

    2、 netstat 命令 – 显示网络状态

    netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

    从整体上看,netstat的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到;另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

    语法:

    语法格式:netstat [参数]

    常用参数:

    参数 描述
    -a 显示所有连线中的Socket
    -p 显示正在使用Socket的程序识别码和程序名称
    -u 显示UDP传输协议的连线状况
    -i 显示网络界面信息表单
    -n 直接使用IP地址,不通过域名服务器

    参考实例:

    显示详细的网络状况:

    netstat -a
    

    显示当前户籍UDP连接状况:

    netstat -nu
    

    显示UDP端口号的使用情况:

    netstat -apu 
    

    显示网卡列表:

    netstat -i
    

    显示组播组的关系:

    netstat -g
    

    3、 ping 命令 – 测试主机间网络连通性

    ping命令主要用来测试主机之间网络的连通性,也可以用于。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

    不过值得我们注意的是:Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows下运行ping命令一般会发出4个请求就结束运行该命令;而Linux下不会自动终止,此时需要我们按CTR+C终止或者使用-c参数为ping命令指定发送的请求数目。

    语法:

    语法格式:ping [参数] [目标主机]

    常用参数:

    参数 描述
    -d 使用Socket的SO_DEBUG功能
    -c 指定发送报文的次数
    -i 指定收发信息的间隔时间
    -I 使用指定的网络接口送出数据包
    -l 设置在送出要求信息之前,先行发出的数据包
    -n 只输出数值
    -p 设置填满数据包的范本样式
    -q 不显示指令执行过程
    -R 记录路由过程
    -s 设置数据包的大小
    -t 设置存活数值TTL的大小
    -v 详细显示指令的执行过程

    参考实例:

    检测与百度网站的连通性:

    ping www.baidu.com
    

    连续ping4次:

    ping -c 4 www.baidu.com 
    

    设置次数为4,时间间隔为3秒:

    ping -c 4 -i 3 www.baidu.com
    

    利用ping命令获取指定网站的IP地址:

    ping -c 1 baidu.com | grep from | cut -d " " -f 4
    

    4、 dhclient 命令 – 动态获取或释放IP地址

    dhclient命令的作用是:使用动态主机配置协议动态的配置网络接口的网络参数,也支持BOOTP协议。

    语法:

    语法格式:dhclient [参数] [网络接口]

    常用参数:

    参数 描述
    -p 指定dhcp客户端监听的端口号(默认端口号86)
    -d 总是以前台方式运行程序
    -q 安静模式,不打印任何错误的提示信息
    -r 释放ip地址
    -n 不配置任何接口
    -x 停止正在运行的DHCP客户端,而不释放当前租约,杀死现有的dhclient
    -s 在获取ip地址之前指定DHCP服务器
    -w 即使没有找到广播接口,也继续运行

    参考实例:

    在指定网络接口上发出DHCP请求:

    dhclient eth0
    

    释放IP地址:

    dhclient -r
    

    从指定的服务器获取ip地址:

    dhclient -s 10.211.55.100
    

    停止运行dhclient:

    dhclient -x
    

    5、 ifconfig 命令 – 显示或设置网络设备

    ifconfig命令的英文全称是“network interfaces configuring”,即用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

    语法:

    语法格式:ifconfig [参数]

    常用参数:

    参数 描述
    add<地址> 设置网络设备IPv6的IP地址
    del<地址> 删除网络设备IPv6的IP地址
    down 关闭指定的网络设备
    up 启动指定的网络设备
    IP地址 指定网络设备的IP地址

    参考实例:

    显示网络设备信息:

    ifconfig
    

    启动关闭指定网卡:

    ifconfig eth0 down
    ifconfig eth0 up 
    

    为网卡配置和删除IPv6地址:

    ifconfig eth0 add 33ffe:3240:800:1005::2/64
    ifconfig eth0 del 33ffe:3240:800:1005::2/64
    

    用ifconfig修改MAC地址:

    ifconfig eth0 down
    ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
    ifconfig eth0 up
    ifconfig eth1 hw ether 00:1D:1C:1D:1E 
    ifconfig eth1 up
    

    配置IP地址:

    ifconfig eth0 192.168.1.56 
    ifconfig eth0 192.168.1.56 netmask 255.255.255.0
    ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
    

    七 设备管理

    1、mount 命令 – 文件系统挂载

    mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。

    语法:

    语法格式:mount [参数]

    常用参数:

    参数 描述
    -t 指定挂载类型
    -l 显示已加载的文件系统列表
    -h 显示帮助信息并退出
    -V 显示程序版本
    -n 加载没有写入文件“/etc/mtab”中的文件系统
    -r 将文件系统加载为只读模式
    -a 加载文件“/etc/fstab”中描述的所有文件系统

    参考实例:

    查看版本:

    mount -V
    

    启动所有挂载:

    mount -a
    

    挂载 /dev/cdrom 到 /mnt:

    mount /dev/cdrom /mnt
    

    挂载nfs格式文件系统:

    mount -t nfs /123 /mnt
    

    挂载第一块盘的第一个分区到/etc目录 :

    mount -t ext4 -o loop,default /dev/sda1 /etc
    

    2、MAKEDEV命令 – 建立设备

    MAKEDEV是一个脚本程序, 用于在 /dev 目录下建立设备, 通过这些设备文件可以 访问位于内核的驱动程序。

    MAKEDEV 脚本创建静态的设备节点,通常位于/dev目录下。

    语法:

    语法格式:MAKEDEV [参数]

    常用参数:

    参数 描述
    -v 显示出执行的每一个动作
    -n 并不做真正的更新, 只是显示一下它的执行效果
    -d 删除设备文件

    参考实例:

    显示出执行的每一个动作:

    ./MAKEDEV -v update
    

    删除设备:

    ./MAKEDEV -d device
    

    3、 lspci命令 – 显示当前设备所有PCI总线信息

    lspci命令用于显示当前主机的所有PCI总线信息,以及所有已连接的PCI设备信息。现在主流设备如网卡储存等都采用PCI总线

    语法:

    语法格式:lspci [参数]

    常用参数:

    参数 描述
    -n 以数字方式显示PCI厂商和设备代码
    -t 以树状结构显示PCI设备的层次关系
    -b 以总线为中心的视图
    -s 仅显示指定总线插槽的设备和功能块信息
    -i 指定PCI编号列表文件,不使用默认文件
    -m 以机器可读方式显示PCI设备信息

    参考实例:

    显示当前主机的所有PCI总线信息:

    lspci
    

    以树状结构显示PCI设备的层次关系:

    lspci -t
    

    4、setleds命令 – 设定键盘上方三个 LED 的状态

    setleds即是英文词组“set leds”的合并,翻译为中文就是设置LED灯。setleds命令用来设定键盘上方三个 LED 灯的状态。在 Linux 中,每一个虚拟主控台都有独立的设定。

    这是一个十分神奇的命令,竟然可以通过命令来控制键盘的灯的状态。那么下面我一起来学习一下这个命令吧。

    语法:

    语法格式:setleds [参数]

    常用参数:

    参数 描述
    -F 设定虚拟主控台的状态
    -D 改变虚拟主控台的状态和预设的状态
    -L 直接改变 LED 显示的状态
    +num/-num 将数字键打开或关闭
    +caps/-caps 把大小写键打开或关闭
    +scroll /-scroll 把选项键打开或关闭

    参考实例:

    控制键盘灯num灯亮和灯灭:

    setleds +num 
    setleds -num 
    

    控制键盘的大小写键打开或关闭,键盘指示灯亮与灭:

    setleds +caps 
    setleds -caps 
    

    控制键盘的选项键打开或关闭,键盘指示灯亮与灭:

    setleds +scroll 
    

    对三灯的亮与灭的情况进行组合,分别设置为数字灯亮,大小写灯灭,选项键scroll灯灭:

    setleds +num -caps -scroll
    

    5、sensors命令 – 检测服务器内部温度及电压

    sensors命令用于检测服务器内部降温系统是否健康,可以监控主板,CPU的工作电压,风扇转速、温度等数据 。

    语法:

    语法格式:sensors

    参考实例:

    检测cpu工作电压,温度等:

    sensors
    

    八、备份压缩

    1、 zip 命令 – 压缩文件

    zip程序将一个或多个压缩文件与有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起放入一个压缩存档中。可以使用一个命令将整个目录结构打包到zip存档中。

    对于文本文件来说,压缩比为2:1和3:1是常见的。zip只有一种压缩方法(通缩),并且可以在不压缩的情况下存储文件。(如果添加了bzip 2支持,zip也可以使用bzip 2压缩,但这些条目需要一个合理的现代解压缩来解压缩。当选择bzip 2压缩时,它将通货紧缩替换为默认方法。)zip会自动为每个要压缩的文件选择更好的两个文件(通缩或存储,如果选择bzip2,则选择bzip2或Store)。

    语法:

    语法格式:zip [参数] [文件]

    常用参数:

    参数 描述
    -q 不显示指令执行过程
    -r 递归处理,将指定目录下的所有文件和子目录一并处理
    -z 替压缩文件加上注释
    -v 显示指令执行过程或显示版本信息
    -n<字尾字符串> 不压缩具有特定字尾字符串的文件

    参考实例:

    将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:

    zip -q -r html.zip /home/html
    

    压缩文件 cp.zip 中删除文件 a.c:

    zip -dv cp.zip a.c
    

    把/home目录下面的mydata目录压缩为mydata.zip:

    zip -r mydata.zip mydata
    

    把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip:

    zip -r abc123.zip abc 123.txt 
    

    将 logs目录打包成 log.zip:

    zip -r log.zip ./logs
    

    2、 zipinfo命令 – 查看压缩文件信息

    zipinfo命令的全称为“zip information”,该命令用于列出压缩文件信息。执行zipinfo指令可得知zip压缩文件的详细信息。

    语法:

    语法格式:zipinfo [参数]

    常用参数:

    参数 描述
    -1 只列出文件名称
    -2 此参数的效果和指定”-1″参数类似,但可搭配”-h”,”-t”和”-z”参数使用
    -h 只列出压缩文件的文件名称
    -l 此参数的效果和指定”-m”参数类似,但会列出原始文件的大小而非每个文件的压缩率
    -m 此参数的效果和指定”-s”参数类似,但多会列出每个文件的压缩率
    -M 若信息内容超过一个画面,则采用类似more指令的方式列出信息
    -s 用类似执行”ls -l”指令的效果列出压缩文件内容
    -t 只列出压缩文件内所包含的文件数目,压缩前后的文件大小及压缩率
    -T 将压缩文件内每个文件的日期时间用年,月,日,时,分,秒的顺序列出
    -v 详细显示压缩文件内每一个文件的信息
    -x<范本样式> 不列出符合条件的文件的信息
    -z 如果压缩文件内含有注释,就将注释显示出来

    参考实例:

    显示压缩文件信息:

    zipinfo file.zip 
    

    显示压缩文件中每个文件的信息:

    zipinfo -v file.zip
    

    只显示压缩包大小、文件数目:

    zipinfo -h file.zip
    

    生成一个基本的、长格式的列表(而不是冗长的),包括标题和总计行:

    zipinfo -l file
    

    查看存档中最近修改的文件:

    zipinfo -T file | sort –nr -k 7 | sed 15q
    

    3、unzip命令 – 解压缩zip文件

    unzip命令是用于.zip格式文件的解压缩工具 ,unzip命令将列出、测试或从zip格式存档中提取文件,这些文件通常位于MS-DOS系统上。

    默认行为(就是没有选项)是从指定的ZIP存档中提取所有的文件到当前目录(及其下面的子目录)。一个配套程序zip(1L)创建ZIP存档;这两个程序都与PKWARE的PKZIP和PKUNZIP为MS-DOS创建的存档文件兼容,但许多情况下,程序选项或默认行为是不同的。

    语法:

    语法格式:unzip [参数] [文件]

    常用参数:

    参数 描述
    -l 显示压缩文件内所包含的文件
    -v 执行时显示详细的信息
    -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
    -n 解压缩时不要覆盖原有的文件
    -j 不处理压缩文件中原有的目录路径

    参考实例:

    把/home目录下面的mydata.zip解压到mydatabak目录里面:

    unzip mydata.zip -d mydatabak 
    

    把/home目录下面的wwwroot.zip直接解压到/home目录里面:

    unzip wwwroot.zip
    

    把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面:

    unzip abc\*.zip
    

    查看把/home目录下面的wwwroot.zip里面的内容:

    unzip -v wwwroot.zip
    

    验证/home目录下面的wwwroot.zip是否完整:

    unzip -t wwwroot.zip
    

    4、 gzip命令 – 压缩和解压文件

    gzip命令的英文是“GNUzip”,是常用来压缩文件的工具,gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。

    gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

    语法:

    语法格式:gzip [参数]

    常用参数:

    参数 描述
    -a 使用ASCII文字模式
    -d 解开压缩文件
    -f 强行压缩文件
    -l 列出压缩文件的相关信息
    -c 把压缩后的文件输出到标准输出设备,不去更动原始文件
    -r 递归处理,将指定目录下的所有文件及子目录一并处理
    -q 不显示警告信息

    参考实例:

    把rancher-v2.2.0目录下的每个文件压缩成.gz文件:

    gzip *
    

    把上例中每个压缩的文件解压,并列出详细的信息:

    gzip -dv *
    

    递归地解压目录:

    gzip -dr rancher.gz
    

    5、 unarj命令 – 解压.arj文件

    unarj命令用于解压缩.arj文件。

    语法:

    语法格式:unarj [参数] [.arj压缩文件]

    常用参数:

    参数 描述
    -e 解压缩.arj文件
    -l 显示压缩文件内所包含的文件
    -t 检查压缩文件是否正确
    -x 解压缩时保留原有的路径

    参考实例:

    解压缩.arj文件:

    unarj -e test.arj
    

    显示压缩文件内所包含的文件:

    unarj -l test.arj
    

    检查压缩文件是否正确:

    unarj -t test.arj
    

    解压缩时保留原有的路径:

    unarj -x test.arj
    

    把文件解压到当前路径:

    unarj -ex test.arj
    

    九、其他命令

    1、 hash 命令 – 显示与清除命令运行时查询的哈希表

    hash命令负责显示与清除命令运行时系统优先查询的哈希表(hash table)。

    当执行hash命令不指定参数或标志时,hash命令向标准输出报告路径名列表的内容。此报告含有先前hash命令调用找到的当前shell环境中命令的路径名。而且还包含通过正常命令搜索进程调用并找到的那些命令。

    语法:

    语法格式: hash [参数] [目录]

    常用参数:

    参数 描述
    -d 在哈希表中清除记录
    -l 显示哈希表中的命令
    -p<指令> 将具有完整路径的命令加入到哈希表中
    -r 清除哈希表中的记录
    -t 显示哈希表中命令的完整路径

    参考实例:

    显示哈希表中的命令:

    hash -l 
    

    删除哈希表中的命令:

    hash -r 
    

    向哈希表中添加命令:

    hash -p /usr/sbin/adduser myadduser 
    

    在哈希表中清除记录:

    hash -d
    

    显示哈希表中命令的完整路径:

    hash -t
    

    2、grep 命令 – 强大的文本搜索工具

    grep是“global search regular expression and print out the line”的简称,意思是全面搜索正则表达式,并将其打印出来。这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令。

    grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。需要注意的是:一当模式中包含了空格,务必要用双引号将其引起来。

    linux系统支持三种形式的grep命令,大儿子就是grep,标准,模仿的代表。二儿子兴趣爱好多-egrep,简称扩展grep命令,其实和grep -E等价,支持基本和扩展的正则表达式。小儿子跑的最快-fgrep,简称快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配。

    语法:

    语法格式:grep [参数]

    常用参数:

    参数 描述
    -i 搜索时,忽略大小写
    -c 只输出匹配行的数量
    -l 只列出符合匹配的文件名,不列出具体的匹配行
    -n 列出所有的匹配行,显示行号
    -h 查询多文件时不显示文件名
    -s 不显示不存在、没有匹配文本的错误信息
    -v 显示不包含匹配文本的所有行
    -w 匹配整词
    -x 匹配整行
    -r 递归搜索
    -q 禁止输出任何结果,已退出状态表示搜索是否成功
    -b 打印匹配行距文件头部的偏移量,以字节为单位
    -o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

    参考实例:

    支持多文件查询并支持使用通配符:

    grep zwx file_* /etc/hosts
    

    输出匹配字符串行的数量:

    grep -c zwx file_*
    

    列出所有的匹配行,并显示行号:

    grep -n zwx file_*
    

    显示不包含模式的所有行:

    grep -vc zwx file_*
    

    不再显示文件名:

    grep -h zwx file_*
    

    只列出符合匹配的文件名,不列出具体匹配的行:

    grep -l zwx file_*
    

    不显示不存在或无匹配的文本信息:

    grep  -s zwx file1 file_1
    grep zwx file1 file_1
    

    递归搜索,不仅搜索当前目录,还搜索子目录:

    grep -r zwx file_2 *
    

    匹配整词,以字面意思去解释他,相当于精确匹配:

    grep zw* file_1
    grep -w zw* file_1
    

    匹配整行,文件中的整行与模式匹配时,才打印出来:

    grep -x zwx file_*
    

    不输出任何结果,已退出状态表示结果:

    grep -q zwx file_1
    echo $?
    grep -q zwx file_5
    echo $?
    grep -q zwx file5
    echo $?
    

    查找一个文件中的空行和非空行:

    grep -c ^$ file_1
    grep -c ^[^$] file_1
    

    匹配任意或重复字符用“.”或“*”符号来实现:

    grep ^z.x file_1
    grep ^z* file_6
    

    3、 wait命令 – 等待指令

    wait命令用来等待指令的指令,直到其执行完毕后返回终端。该指令常用于shell脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务。该指令等待作业时,在作业标识号前必须添加备份号”%”。

    语法:

    语法格式:wait [参数]

    常用参数:

    参数 描述
    22 或%1 进程号 或 作业号

    参考实例:

    等待作业号为1的作业完成后再返回:

    wait %1
    find / -name password
    

    4、 bc命令 – 浮点运算

    bc的英文全拼为“ Binary Calculator ”,是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。

    语法:

    语法格式:bc [选项]

    常用参数:

    参数 描述
    -i 强制进入交互式模式
    -l 定义使用的标准数学库
    -w 定义使用的标准数学库
    -q 打印正常的GNU bc环境信息

    参考实例:

    算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:

    echo "1.212*3" | bc 
    

    设定小数精度(数值范围):

    echo "scale=2;3/8" | bc
    

    计算平方和平方根:

    echo "10^10" | bc
    echo "sqrt(100)" | bc
    

    5、 history命令 – 显示与操纵历史命令

    history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。

    如果你经常使用Linux命令,那么使用history命令可以有效地提升你的效率。

    语法:

    语法格式: history [参数] [目录]

    常用参数:

    参数 描述
    -a 将当前shell会话的历史命令追加到命令历史文件中,命令历史文件是保存历史命令的配置文件
    -c 清空当前历史命令列表
    -d 删除历史命令列表中指定序号的命令
    -n 从命令历史文件中读取本次Shell会话开始时没有读取的历史命令
    -r 读取命令历史文件到当前的Shell历史命令内存缓冲区
    -s 将指定的命令作为单独的条目加入命令历史内存缓冲区。在执行添加之前先删除命令历史内存缓冲区中最后一条命令
    -w 把当前的shell历史命令内存缓冲区的内容写入命令历史文件

    参考实例:

    显示最近的10条命令:

    history 10
    

    将本次登录的命令写入历史文件中:

    history -w
    

    将命令历史文件中的内容读入到目前shell的history记忆中 :

    history -r
    

    将当前Shell会话的历史命令追加到命令历史文件中:

    history -a
    

    清空当前历史命令列表:

    history -c 
    

    本次分享到此结束啦~

  • Linux网络配置:CentOS7无法运行 ifconfig如何设置静态IP地址?

    1. CentOS7无法运行 ifconfig 的解决办法

    最近周末休息在家,在追兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,所以产生了一些小问题,xerer安装的是 CentOS 7,内置程序已经没有 ifconfig 了。那么怎么办呢?xerer提供解决方案有两种。

     

    一般找不到 ifconfig 命令错误会显示:

    1. bash: ifconfig: command not found

    或者

    1. bash: /sbin/ifconfig: No such file or directory

    解决方法:

    1. 替代命令 ip addr
    直接执行 ip addr 也可以显示网卡信息,另外 ip addr 添加/删除IP方法

    1. ip addr add 192.168.0.200 dev ens33
    2. ip addr del 192.168.0.200 dev ens33

    add是添加,del是删除,最后的ens33是你网卡名

    2. 重新安装 net-tools 包,让ifconfig命令复活

    1. yum y install nettools

    不过命令虽然可以打出来,也可以配置IP,但是还是不能让 Linux 上网。这是因为没有配置DNS等信息造成的。请继续查看 CentOS7 配置静态IP地址 下面这一段文章。

     

    2. CentOS7 配置网络:

     

    继上一章 CentOS 7 没有 ifconfig 的解决办法,兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,很多已经不适用于最新版本的CentOS了,今天 xerer 给大家讲一下如何快速配置新版CentOS的IP地址。

     

    其实很简单,一句话就能解决的问题,首先 ip addr 查看自己的网卡名字,xerer 这里是 ens33

    然后编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件 (最后的这个ens33就是你的网卡名字)

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    vi 编辑器的使用方法就不多讲了,功能太强大了,自己查一下,这里就告诉你简单的如何修改,按键盘 ‘i’ 键进入编辑模式,然后用方向键移动到最后一行,ONBOOT=no 那里,把no改成yes即可。然后按 ESC 键,再敲 :wq! 保存退出。

    重启网络服务

    service network restart 或者 systemctl restart netwrok
    就可以上网了~

    这里讲的方法很简单,就是利用DHCP让服务器自动获取IP地址,是系统指定的IP地址,不能自己挑选,如果想自己分配IP地址的话,那么请接着看CentOS7 配置静态IP地址

    3. CentOS7 配置静态IP地址

    兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,很多已经不适用于最新版本的CentOS了,今天 Forece 给大家讲一下如何在 CentOS 中配置静态IP地址。也就是说可以自己分配服务器指定的IP地址。

    其实很简单,一句话就能解决的问题,首先 ip addr 查看自己的网卡名字,xerer这里是 ens33

    和上一章其实类似,就是多改一些参数。

    同样开始编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件 (最后的这个ens33就是你的网卡名字)

     

    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    按键盘 ‘i’ 键进入编辑模式,按照下方参数修改,然后按 ESC 键,再敲 :wq! 保存退出。

    将 BOOTPROTO = dhcp(自动获取IP地址) 更改为 BOOTPROTO = static(静态IP地址)
    将 ONBOOT=no(开机不使用配置) 更改为 ONBOOT=yes(开机使用配置)

    再添加下面的信息
    IPADDR=192.168.0.200(IP地址)
    NETMASK=255.255.255.0(子网掩码)
    GATEWAY=192.168.0.1(网关)
    DNS1=8.8.8.8(首选DNS)

    再多说几句,因为是针对兄弟连虚拟机安装Linux的教程写的,所以可能看xerer文章的都是新手,上边几个参数,比如IP,网关,掩码等等可以在 Windows 中 cmd 命令中敲打 ipconfig 查看。

    最后再附上一章给强迫症患者观看的如何将 ens33网卡改名为 eth0 网卡。

    4. CentOS7 将网卡 ens33 改为 eth0

    兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,很多已经不适用于最新版本的CentOS了,今天xerer 给大家讲一下如何在 CentOS 中将ens33网卡更改为视频中的eth0网卡。

    其实不改也没关系,就是个名字而已,不过有时候强迫症犯起病来连自己都怕。那么步入正题

    vi命令再说一遍!按键盘 ‘i’ 键进入编辑模式,按照下方参数修改,然后按 ESC 键,再敲 :wq! 保存退出。

    1. 用vi命令修改grub

    vi /etc/sysconfig/grub
    增加参数:

    net.ifnames=0 biosdevname=0
    修改为:

    GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet”
    2. 重新生成grub文件

    grub2-mkconfig
    3. 备份并创建 eth0 的网卡文件,其实就是复制就的网卡文件,改个名

    cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
    mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
    4. 修改 eth0 的网卡文件

    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    NAME=eth0
    DEVICE=eth0

    将上边两个参数修改一下,然后重启网络服务即可

    service network restart 或者 systemctl restart netwrok
    这里 xerer 又碰到错误,重启网络不成功,后来直接 reboot 重启后正常了。

  • 360旗下安全实验室Netlab发现Linux木马病毒RotaJakiro(双头龙)

    360旗下的网络安全研究实验室Netlab揪出潜伏在Linux系统中长达3年的木马程序RotaJakiro
    除了以AES来加密恶意软件内的信息,木马程序RotaJakiro与命令&控制(C&C)服务器的通讯,更采用AES、XOR、ROTATE与ZLIB压缩等加密算法,来掩饰行踪与来源
    .
    360旗下的网络安全研究实验室Netlab在本周指出,有一木马程序RotaJakiro潜伏在Linux系统中至少长达3年。

    根据Netlab的分析,RotaJakiro为一针对Linux x64系统的木马程序,它使用轮替加密,而且在执行后对于Root或非Root账户有不同的行为,犹如Dota游戏中的双头龙(Jakiro),使得该团队将它命名为RotaJakiro。
    Netlab团队追踪到RotaJakiro的C&C服务器,发现这些服务器存在的年代更久,在他们取得的4个RotaJakiro样本中,最早的一个是在2018年创立,而其C&C服务器最早建立的日期,却是在2015年。

    此外,Netlab团队也相信RotaJakiro与Torii傀儡网络有关,因为它们使用了很多一样的命令,建构的方式也非常的类似,同样利用各种加密算法来掩饰行踪与来源,也都采用老派的长驻与结构化的流量手法。

    Avast曾在2018年揭露Torii的存在,指称它是个复杂的IoT傀儡网络,可入侵包括MIPS、Arm、x86、x64、PowerPC与SuperH等架构的装置,且相信它至少自2017年便开始活动。

    RotaJakiro不仅以AES来加密恶意软件内的信息,其与命令&控制(C&C)服务器的通讯,更采用了AES、XOR、ROTATE与ZLIB压缩等加密算法,此外,RotaJakiro支持12种指令,其中有3种是执行特定的插件,Netlab团队目前尚未得知RotaJakiro的目的,推测其指令可能具备回报装置信息、窃取机密信息、查询/下载/删除档案,以及执行特定插件等功能。
    RotaJakiro隐蔽性较强,对加密算法使用比较多,包括:使用AES算法加密样本内的资源信息;C2通信综合使用了AES,XOR,ROTATE加密和ZLIB压缩算法。指令方面,RotaJakiro支持12种指令码,其中3种是和特定plugin相关的,遗憾的是目前我们并没有捕获到这类payload,因此并不知道它的真正目的。从广义的后门角度来看,RotaJakiro支持的功能可以归纳成以下4类:

    上报设备信息
    窃取敏感的信息
    文件/Plugin管理(查询,下载,删除)
    执行特定的Plugin
    当所有分析结束后,我们尝试对RotaJakiro进行溯源,根据解密后的资源以及编码的风格的相似性,我们推测它是Torii Botnet作者的又一作品。

    RotaJakiro潜伏了多少?
    我们从捕获的样本出发,寻找RotaJakiro同源者,最终发现了以下4个样本,它们在VT上都是0检测,从VT的First Seen时间来看,RotaJakiro至少已经存在了3年。

    概述
    2021年3月25日,360 NETLAB的BotMon系统发现一个的VT 0检测的可疑ELF文件(MD5=64f6cfe44ba08b0babdd3904233c4857),它会与4个业务类型截然不同的域名进行通信,端口均为TCP 443(HTTPS),但流量却并非TLS/SSL类型,这个异常行为引起了我们的兴趣,进一步分析发现它是一个针对Linux X64系统的后门木马,该家族至少已经存在3年但目前还是0检测。基于该家族使用rotate加密,并且运行后对root/non-root账户有不同的行为,犹如一只双头龙,一体双向,我们将它命名为RotaJakiro。

     

  • 经常使用五个Linux运维流量监控工具推荐

    运维监控工具千千万,仅开源的解决方案就有流量监控(MRTG、Cacti、SmokePing、Graphite 等)和性能告警(Nagios、Zabbix、Zenoss Core、Ganglia、OpenTSDB等)可供选择。

    并且每种软件都有自己的特点和功能,各自的侧重点和目标不完全相同,在设计理念和实现方法上也大同小异,但都具有共同特征。例如,采集数据、分析展示、告警以及简单的故障自动处理。最终都能达到对 IT 系统服务可用性的一个完全展示。

    下面我们将针对目前行业内常用的五种监控工具(Cacti、Nagios、Zabbix、Grafana、Prometheus)详细介绍各自的特点。

    1、Cacti
    Cacti(英文含义为仙人掌)是一套基于 PHP、MySQL、SNMP 和 RRDtool开发的网络流量监测图形分析工具。


    它通过 snmpget 来获取数据,使用 RRDtool 绘图,但使用者无须了解 RRDtool 复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与 LDAP 结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。

    Cacti 通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)。

    2、Nagios
    Nagios 是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。

    Nagios 可运行在 Linux 和 UNIX 平台上,同时提供一个可选的基于浏览器的Web 界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等。Nagios 的功能侧重于监控服务的可用性,能及时根据触发条件告警。


    目前,Nagios 也占领了一定的市场份额,不过从观察来看,Nagios 并没有与时俱进,已经不能满足于多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版 Nagios XI 中。

     

    3. Zabbix
    Zabbix 是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持 SNMP、IPMI、JMX、Telnet、SSH 等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。


    Zabbix拥有良好的扩展性,同时它的功能十分丰富,可以监控CPU负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等。

    但是因为消耗资源较多的缘故,如果监控的主机非常多时,可能会出现监控超时、告警超时等现象。

    4、Prometheus
    Prometheus 作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求。


    Prometheus具有以下特性:

    多维的数据模型(基于时间序列的Key、Value键值对)
    灵活的查询和聚合语言PromQL
    提供本地存储和分布式存储
    通过基于HTTP的Pull模型采集时间序列数据
    可利用Pushgateway(Prometheus的可选中间件)实现Push模式
    可通过动态服务发现或静态配置发现目标机器
    支持多种图表和数据大盘
    图片
    5、Grafana
    Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现。


    Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。

    每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。

    最后
    每个监控工具的优势和能力都是不同的。你可以根据实际应用需求,选择适合的监控工具。阿里云内部超全K8s/ECS/RDS/OSS/DevOps/DTS实战手册,提供下载!

  • CentOS8网络配置无法运行ifconfig 的解决办法,CentOS 8 配置静态IP地址

    最近在追兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,所以产生了一些小问题,九边安装的是 CentOS 8,内置程序已经没有 ifconfig 了。那么怎么办呢?解决方案有两种。

    在兄弟连这章 Linux 讲座中,因为使用旧版 CentOS 6 的原因,坑不只这一个,还有很多个,这里列个目录吧,方便大家解决问题
    1. 无法运行 ifconfig 的解决办法
    2. CentOS8 配置网络
    3. CentOS8 配置静态IP地址

    一般找不到 ifconfig 命令错误会显示:

    -bash: ifconfig: command not found
    或者

    -bash: /sbin/ifconfig: No such file or directory
    解决方法:
    1. 替代命令 ip addr
    直接执行 ip addr 也可以显示网卡信息,另外 ip addr 添加/删除IP方法

    ip addr add 192.168.0.200 dev ens33
    ip addr add 192.168.0.200 dev ens33
    add是添加,del是删除,最后的ens33是你网卡名

    2. 重新安装 net-tools 包,让ifconfig命令复活

    yum -y install net-tools
    不过命令虽然可以打出来,也可以配置IP,但是还是不能让 Linux 上网。这是因为没有配置DNS等信息造成的。请继续查看 CentOS8 配置静态IP地址 这篇文章。

     

    CentOS7 快速配置网络IP地址

    继上一段CentOS8 没有 ifconfig 的解决办法,兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,很多已经不适用于最新版本的CentOS了,今天九边给大家讲一下如何快速配置新版CentOS的IP地址。

    在兄弟连这章 Linux 讲座中,因为使用旧版 CentOS 6 的原因,坑不只这一个,还有很多个,这里列个目录吧,方便大家解决问题
    1. 无法运行 ifconfig 的解决办法
    2. CentOS8 配置网络
    3. CentOS8 配置静态IP地址

    其实很简单,一句话就能解决的问题,首先 ip addr 查看自己的网卡名字,九边这里是 ens33

    然后编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件 (最后的这个ens33就是你的网卡名字)

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    vi 编辑器的使用方法就不多讲了,功能太强大了,自己查一下,这里就告诉你简单的如何修改,按键盘 ‘i’ 键进入编辑模式,然后用方向键移动到最后一行,ONBOOT=no 那里,把no改成yes即可。然后按 ESC 键,再敲 :wq! 保存退出。


    重启网络服务

    service network restart 或者 systemctl restart netwrok
    就可以上网了~

    这里讲的方法很简单,就是利用DHCP让服务器自动获取IP地址,是系统指定的IP地址,不能自己挑选,如果想自己分配IP地址的话,那么请接着看CentOS8 配置静态IP地址

     

    CentOS8配置静态IP地址

    继上一段 CentOS8快速配置网络IP地址,兄弟连的 Linux 教程,在2.4章讲到配置 Linux CentOS 服务器IP地址的时候,就懵逼了,因为教程制作时间比较早,用的是 CentOS 6 演示的,很多已经不适用于最新版本的CentOS了,今天九边给大家讲一下如何在 CentOS 中配置静态IP地址。也就是说可以自己分配服务器指定的IP地址。

    在兄弟连这章 Linux 讲座中,因为使用旧版 CentOS 6 的原因,坑不只这一个,还有很多个,这里列个目录吧,方便大家解决问题
    1. 无法运行 ifconfig 的解决办法
    2. CentOS8 配置网络
    3. CentOS8 配置静态IP地址

    和上一段其实类似,就是多改一些参数。同样开始编辑 /etc/sysconfig/network-scripts/ifcfg-ens33 文件 (最后的这个ens33就是你的网卡名字)

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    按键盘 ‘i’ 键进入编辑模式,按照下方参数修改,然后按 ESC 键,再敲 :wq! 保存退出。

    将 BOOTPROTO = dhcp(自动获取IP地址) 更改为 BOOTPROTO = static(静态IP地址)
    将 ONBOOT=no(开机不使用配置) 更改为 ONBOOT=yes(开机使用配置)

    再添加下面的信息
    IPADDR=192.168.0.200(IP地址)
    NETMASK=255.255.255.0(子网掩码)
    GATEWAY=192.168.0.1(网关)
    DNS1=8.8.8.8(首选DNS)

    再多说几句,因为是针对兄弟连虚拟机安装Linux的教程写的,所以可能看我文章的都是新手,上边几个参数,比如IP,网关,掩码等等可以在 Windows 中 cmd 命令中敲打 ipconfig 查看。

  • 国内国外vps面板和linux一键安装包推荐(中文英文)

    现在的云计算非常的火热,很多站长都会购买VPS来做网站,而作为站长,如果远离了最开始的虚拟主机进而升级到折腾VPS或者云主机的时候,如果大家对linux配置不太熟悉,各类WEB建站VPS面板或者WEB环境一键安装包自然是首要学习使用的内容。

    艾薇资讯专门收集分享目前业内使用较为广泛的VPS面板和一键安装包。

    【技术控】国内外各建站VPS面板和一键安装包收集汇总

    1、linux VPS面板类

    国外 VPS面板

    VestaCP:http://vestacp.com/ (这款非常好用,是目前最值得推荐的VPS面板,使用范围较广,自带中文非常赞)
    Kloxo-MR:https://github.com/mustafaramadhan/kloxo/ (Kloxo7.0版本很强大,很好看也很实用,有中文包,同样较常见)
    Webmin/Virtualmin:http://www.webmin.com/virtualmin.html (很稳定,很安全,自带中文点赞)
    以上三款使用较常见的面板,下列属于小众的面板。
    Ispconfig:https://github.com/dclardy64/ISPConfig-3-Debian-Installer (官网安装没看懂,Github是一键安装包,有中文包)
    i-MSCP:http://i-mscp.net/ (简单易用,自带中文)
    EasySCP:http://www.easyscp.net/ (和i-MSCP一样来自Ispconfig,自带中文)
    Webuzo:http://www.webuzo.com/downloads (个人用不错)
    Centos Webpanel:http://centos-webpanel.com/ (据说比较有发展前途)
    Froxlor:http://www.froxlor.org/ (轻量级,适应各种环境)
    Ajenti:http://ajenti.org/ (轻量级的Webmin,自带中文)
    zPanel(sentora):http://www.zpanelcp.com/、http://www.sentora.org/(支持win,有中文包)
    AlternC:https://alternc.org/(简单)
    Easy Hosting Control Panel:http://ehcp.net/ (还不错的VPS面板,有第三方汉化包)
    国内 VPS面板

    AMH:http://amh.sh/ (由Amysql自主开发的国产免费开源虚拟主机VPS面板,国内受众广泛,AMH5.3包月收费,4.2版免费)
    WDCP:http://www.wdlinux.cn/bbs/ (简单易用,不过近来爆出不少严重安全漏洞)
    Kangle:http://www.kanglesoft.com/(大名鼎鼎的kangle,很好很强大)
    LuManager:http://www.zijidelu.org/(支持freeBSD,早期使用同样非常广泛的国产VPS面板)
    VPSMate:http://www.vpsmate.org/(支持 CentOS/Redhat,小巧且节省资源)
    总体来说,国产VPS面板档主是基本都用过,不过VPS面板资源占用也相对较大,不适合低配VPS或者低配云主机。推荐自己用的AMH或者WDCP。vestacp

    linux一键安装包

    国外linux一键安装包

    LEMP:http://centminmod.com/ (据说很适合wordpress)
    LEMP:https://vpssim.com/ (很强大的一键安装包)
    LNMP/LAMP:http://tuxlite.com/、https://github.com/Mins/TuxLite(适用于Debian系列,)
    LNMP:https://github.com/Xeoncross/lowendscript (lowendscript演变来的,最省资源lnmp一键安装包,专为小内存低配置VPS定制)
    monkeyServer:https://github.com/alexandreteles/monkeyServer、http://www.monkey-project.com/(Monkey Web Server轻量级的web服务器)
    下述三款用于Debian:
    https://github.com/maxexcloo/Minimal
    https://github.com/KnightSwarm/Minstall
    https://github.com/mikegioia/Debian-Server
    国内

    LNMP:http://lnmp.org/ (强大的LNMP一键安装包,军哥出品,国内使用的人很多,适应性很强)
    LNMP:http://www.lnmp.net/
    LAMP:http://teddysun.com/lamp (很好用的LAMP一键安装包)
    LAMP:http://teddysun.com/lamp-yum (适合小内存≥64M的LAMP)
    LLsMP:http://www.llsmp.cn/(LiteSpeed一键安装包,用于CentOS/Debian,负载能力很强,占用资源非常低,尤其是一些小内存VPS方案)
    LLNMP:http://shuang.ca/llnmp/(LiteSpeed一键安装包)
    LNMPP:http://lnmpp.net/ (用于Centos/Debian/Ubuntu,支持postgresql,Linux+Nginx+Mysql+Postgresql+PHP,支持ARM)
    LNMPA:https://github.com/wangyan/lanmp (针对512M内存的VPS进行了优化)
    LNMPA:http://blog.linuxeye.com/31.html(多种配置,软件较新)
    LNMPA:http://bbs.aliyun.com/read/151729.html (阿里云论坛看到的)
    OneinStack:https://oneinstack.com/(支持JAVA,包含组件LNMPA、LNMT、LNMH)
    HHVM:http://www.hhvmc.com/thread-17-1-1.html (hhvm一键安装包)
    LCMP:https://linux.cn/article-5198-1.html (Cherokee一键安装包,原地址失效,补的一个)
    EZHTTP:https://www.lxconfig.com/thread-69-1-1.html、https://github.com/centos-bz/EZHTTP(有openresty)
    PHPStudy:http://www.phpstudy.net/(Lighttpd一键安装包)
    LNMP一键安装包推荐军哥出的,档主当前在用,亲测非常稳定。

     

    以上网址整理采编自@suifeng博客&全球主机交流论坛《国内外各种建站VPS面板和一键安装包汇总》

    除此之外,还有适用于win系统:

    WINDOWS VPS面板

    http://www.websitepanel.net/
    http://www.west263.com/services/vhostsoft/
    http://www.npointhost.com/index.html
    http://www.huweishen.com/soft/host/
    http://winginx.com/en/
    http://www.wampserver.com/en/
    http://www.upupw.net/
    http://www.phpstudy.net/
    http://z.admin5.com/windows.php
    http://www.zpanelcp.com/
    http://www.kanglesoft.com/
    以下为可能重复的内容收集

    WINDOWS一键安装包

    https://github.com/maxexcloo/Server
    https://github.com/mikegioia/Debian-Server
    https://github.com/teddysun/lamp-yum/
    https://github.com/teddysun/lamp/
    https://github.com/lj2007331/lnmp
    https://github.com/centos-bz/EZHTTP
    https://github.com/ielnehc/ltmh
    https://github.com/rtCamp/easyengine
    https://github.com/ComfortVPS/Nginx-PHP-MySql-phpMyAdmin
    https://github.com/wangyan/lanmp
    http://blog.jiujiudeliwu.com/llpsw/
    VPS面板

    http://www.turnkeylinux.org/nginx-php-fastcgi
    http://z.admin5.com/linux.php
    http://www.12345t.com/news/2014/0910/370.html
    http://www.vpsmate.org/
    https://www.appnode.com/
    http://isp-control.net/
    http://www.openpanel.com/
    http://www.webuzo.com/downloads
    http://www.blueonyx.it/
    http://www.zentyal.org/
    http://dtcsupport.gplhost.com/PmWiki/
    http://lxcenter.org/software/kloxo
    http://www.ispconfig.org/files/file/2-ispconfig/
    http://wp.geeklab.com.ar/gl/

  • Windows XP 停止支持,要不要换系统?应该怎样换系统?

    到2014年4月8日,微软将完全停止对 Windows XP 的支持了。据一些第三方统计的数字,中国还有很高比例的用户继续在使用Windows XP(据说高达 70%). (更多…)