zoukankan      html  css  js  c++  java
  • Linux常用操作

    本文仅记录简单常用的操作

    CentOS7服务配置 - systemctl

    # 查看全部服务命令
    systemctl list-unit-files --type service
    # 查看服务命令
    systemctl status name.service
    # 启动服务
    systemctl start name.service
    # 停止服务
    systemctl stop name.service
    # 重启服务
    systemctl restart name.service
    # 增加开机启动
    systemctl enable name.service
    # 删除开机启动
    systemctl disable name.service
    

    配置目录:/usr/lib/systemd/system

    一个简单的配置模板

    $ cat mongod.service
    Description=MongoDB Database Server
    After=network.target
    Documentation=https://docs.mongodb.org/manual
    
    [Service]
    User=mongod
    Group=mongod
    Environment="OPTIONS=-f /etc/mongod.conf"
    EnvironmentFile=-/etc/sysconfig/mongod
    ExecStart=/usr/bin/mongod $OPTIONS
    ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
    ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
    ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
    PermissionsStartOnly=true
    PIDFile=/var/run/mongodb/mongod.pid
    Type=forking
    # file size
    LimitFSIZE=infinity
    # cpu time
    LimitCPU=infinity
    # virtual memory size
    LimitAS=infinity
    # open files
    LimitNOFILE=64000
    # processes/threads
    LimitNPROC=64000
    # locked memory
    LimitMEMLOCK=infinity
    # total threads (user+kernel)
    TasksMax=infinity
    TasksAccounting=false
    # Recommended limits for for mongod as specified in
    # http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
    
    [Install]
    WantedBy=multi-user.target
    

    详细说明可以参考

    修改DNS服务器配置

    /etc/resolv.conf中修改(chattr -i /etc/resolv.conf
    格式:nameserver 192.168.106.133

    sudo权限配置

    编辑/etc/sudoers
    找到root ALL=(ALL) ALL
    在下面添加

    # 允许用户youruser执行sudo命令(需要输入密码)。
    youruser            ALL=(ALL)                ALL
    # 允许用户组yourgroup里面的用户执行sudo命令(需要输入密码)。
    %yourgroup           ALL=(ALL)                ALL
    # 允许用户youruser执行sudo命令,并且在执行的时候不输入密码。
    youruser            ALL=(ALL)                NOPASSWD: ALL
    # 允许用户组yourgroup里面的用户执行sudo命令,并且在执行的时候不输入密码。 
    %yourgroup           ALL=(ALL)                NOPASSWD: ALL
    

    可能需要使用

    # 修改sudo文件的写权限
    chmod u+w /etc/sudoers
    chmod u-w /etc/sudoers
    

    磁盘分区&挂载

    直接对磁盘进行分区挂载:标准分区

    查看分区

    [root@TEST1 ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    vda    253:0    0   40G  0 disk
    └─vda1 253:1    0   40G  0 part /
    vdb    253:16   0  500G  0 disk
    └─vdb1 253:17   0  500G  0 part /home/data
    

    创建分区

    逻辑卷管理方式:LVM

    查看逻辑卷

    [root@TEST2 ~]# lsblk
    NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                          8:0    0  500G  0 disk
    ├─sda1                       8:1    0    1G  0 part /boot
    └─sda2                       8:2    0  499G  0 part
      ├─centos_centos7--6-root 253:0    0   50G  0 lvm  /
      ├─centos_centos7--6-swap 253:1    0    2G  0 lvm  [SWAP]
      └─centos_centos7--6-home 253:2    0  447G  0 lvm  /home
    sdb                          8:16   0    2T  0 disk
    sr0                         11:0    1    4M  0 rom
    sr1                         11:1    1 1024M  0 rom
    

    创建逻辑卷

    磁盘挂载

    # 格式化
    mkfs.ext3 /dev/xvde
    # 创建路径
    mkdir -p /opt/data
    # 挂载磁盘到路径下
    mount /dev/xvde /opt/data
    # 设置开机自动挂载
    echo '/dev/xvde /opt/huawei ext3 defaults 0 0' >> /etc/fstab
    

    split

    # -b 支持K, M, G, T, P, E, Z, Y
    split -b 10k data.file
    
    # -d 使用数字作为后缀, 作为输出文件名的后缀
    # -a 指定后缀长度为3
    split -b 10k data.file -d -a 3
    
    # 还可以指定前缀‘split_file’
    split -b 10k data.file -d -a 3 split_file
    

    sed

    sed -i 's111aaag' file

    grep

    grep -rn "text" path

    awk

    tail -f nohup.out | grep mongo查询时间 | awk '{match($0,/mongo查询时间:([0-9]*), 本次圈搬运小哥数量:([0-9]*)/,a)}{print a[1],a[2]}'

    chattr

    • A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
    • S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
    • a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
    • b:不更新文件或目录的最后存取时间。
    • c:将文件或目录压缩后存放。
    • d:当dump程序执行时,该文件或目录不会被dump备份。
    • D:检查压缩文件中的错误。
    • i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
    • s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
    • u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
    • t:文件系统支持尾部合并(tail-merging)。
    • X:可以直接访问压缩文件的内容。
    // 只能给文件添加内容,但是删除不了
    chattr +a  /etc/passwd
    // 文件不能删除,不能更改,不能移动
    chattr +i  /etc/passwd
    

    named

    todo

    timedatectl

    timedatectl
    设置硬件时间默认为UTCtimedatectl set-local-rtc 1
    启用时间同步timedatectl set-ntp 1

    ntp

    强制同步:

    1. systemctl stop ntpd
    2. ntpd -gq
    3. systemctl start ntpd

    tree

    tree --charset ASCII /proc/sys/fs/加上--charset ASCII可以防止乱码

    dd

    用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
    (这里用它简单测试磁盘读写性能)
    Linux-dd命令详解
    dd应用实例

    # 测试当前位置磁盘写入性能
    dd if=/dev/zero of=kwxgd bs=64k count=4k oflag=dsync
    # 测试当前位置磁盘读取性能
    dd if=kwxgd of=/dev/zero bs=64k count=4k iflag=direct
    

    磁盘性能指标--IOPS 理论

    链接

    # 常见磁盘平均物理寻道时间为:
    7200转/分的STAT硬盘平均物理寻道时间是9ms
    10000转/分的STAT硬盘平均物理寻道时间是6ms
    15000转/分的STAT硬盘平均物理寻道时间是4ms
    
    # 常见硬盘的平均旋转延迟时间为(平均情况下为磁盘旋转半圈的时间):
    7200 rpm    60*1000/7200/2  = 4.17ms
    10000rpm    60*1000/10000/2 = 3ms
    15000rpm    60*1000/15000/2 = 2ms
    
    # 最大IOPS的理论计算方法:IOPS = 1000 ms/(寻道时间 + 旋转延迟) 可以忽略数据传输时间
    7200  rpm的磁盘 IOPS = 1000 / (9 + 4.17)  = 76 IOPS
    10000 rpm的磁盘 IOPS = 1000 / (6+ 3) = 111 IOPS
    15000 rpm的磁盘 IOPS = 1000 / (4 + 2) = 166 IOPS
    
    实际会受到数据传输和写入速度影响,应该低于理论值
    

    hdparm

    Linux hdparm 命令用法详解-Linux命令大全(手册)
    yum install hdparm -y

    # 显示硬盘的相关设置
    [root@VM_0_4_centos ~]# hdparm /dev/vda
    /dev/vda:
     HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
     readonly      =  0 (off)
     readahead     = 8192 (on)
     geometry      = 104025/16/63, sectors = 104857600, start = 0
    
    # 显示硬盘的柱面、磁头、扇区数
    [root@VM_0_4_centos ~]# hdparm -g /dev/vda
    /dev/vda:
     geometry      = 104025[柱面数]/16[磁头]/63[扇区], sectors = 104857600[总扇区数], start = 0[起始扇区数]
    
    # 测试硬盘的读取速度
    [root@VM_0_4_centos ~]# hdparm -t /dev/vda
    /dev/vda:
     Timing buffered disk reads: 622 MB in  3.00 seconds = 207.33 MB/sec
    
    # 测试硬盘缓存的读取速度
    [root@VM_0_4_centos ~]# hdparm -T /dev/vda
    /dev/vda:
     Timing cached reads:   19234 MB in  1.99 seconds = 9654.65 MB/sec
    

    fio

    Centos 检查磁盘读写性能
    yum install fio -y

    # 测试随机写IOPS,运行以下命令:
    fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
    
    # 测试随机读IOPS,运行以下命令:
    fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing
    
    # 测试顺序写吞吐量,运行以下命令:
    fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
    
    # 测试顺序读吞吐量,运行以下命令:
    fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing
    

    以测试随机写IOPS的命令为例,说明命令中各种参数的含义:

    -direct=1 表示测试时忽略I/O缓存,数据直写。
    -iodepth=128 表示使用AIO时,同时发出I/O数的上限为128。
    -rw=randwrite 表示测试时的读写策略为随机写(random writes)。作其它测试时可以设置为:
        randread(随机读random reads)
        read(顺序读sequential reads)
        write(顺序写sequential writes)
        randrw(混合随机读写mixed random reads and writes)
    
    -ioengine=libaio 表示测试方式为libaio(Linux AIO,异步I/O)。应用程序使用I/O通常有两种方式:
        同步:同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用16−32根线程同时工作将iodepth塞满。
        异步:异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。
    
    -bs=4k 表示单次I/O的块文件大小为4KB。未指定该参数时的默认大小也是4KB。
        测试IOPS时,建议将bs设置为一个比较小的值,如本示例中的4k。
        测试吞吐量时,建议将bs设置为一个较大的值,如本示例中的1024k。
    
    -size=1G 表示测试文件大小为1 GiB。
    -numjobs=1 表示测试线程数为1。
    -runtime=1000 表示测试时间为1000秒。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完。
    -group_reporting 表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。
    -filename=iotest 指定测试文件的名称,比如iotest。测试裸盘可以获得真实的硬盘性能,但直接测试裸盘会破坏文件系统结构,请在测试前提前做好数据备份。
    -name=Rand_Write_Testing 表示测试任务名称为Rand_Write_Testing,可以随意设定。
    


    iptables

    详解
    从入门到应用
    iptables [ -t 表名 ] 管理选项 [ 链名 ] 条件匹配 -j 目标动作或跳转
    iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION

    四表五链示意图:

    四表 说明
    filter 确定是否放行改数据包(过滤)
    nat 修改数据包中的源/目标的IP或者端口
    mangle 为数据包设置标记
    raw 确定是否对改数据包进行状态跟踪
    security 是否定义强制访问控制规则(MAC)

    RPM 与 YUM 区别和联系

    RPM 是软件包管理器,YUM是软件包管理器的前端工具

    RPM

    # 安装命令
    rpm -i /PATH/TO/RPM_FILE
    # 一般组合起来使用:-ivh
    rpm -ivh PATH/TO/RPM_FILE
    
    # 升级
    # 存在则更新,不存在则安装
    rpm -Uvh rpm包
    # 存在则更新
    rpm -Fvh rpm包
    
    # 效验文件(可以用来检测软件相关文件是否被修改过,如果没有输出说明没有任何文件被修改)
    rpm -V 包名
    
    # 卸载命令
    rpm -e 包名
    
    # 查询命令
    # 查询所有已安装的包
    rpm -qa
    # 查询指定包的信息
    rpm -q 包名
    # 查询指定包的摘要信息
    rpm -qi 包名
    # 查询指定包安装生成的文件清单
    rpm -ql 包名
    # 查询某个文件是由那个rpm包安装生成的
    rpm -qf /path/to/some_file
    # 查询包安装生成的配置文件
    rpm -qc 包名
    # 查询包安装生成的帮助文档
    rpm -qd 包名
    # 查看包安装文件状态
    rpm -qs 包名
    # 对未安装的RPM包查询信息,使用"-p",可以与其他查询相关的其他选项组合使用
    rpm -qpi /path/to/rpm_file
    

    YUM

    # 配置文件
    /etc/yum.conf
    /etc/yum.repos.d/*.repo
    
    yum list all
    yum list all mysql*
    yum list installed
    yum list available
    yum list updates
    # 显示不属于任何仓库的,额外的包
    yum list extras
    # 显示被废弃的包
    yum list obsoletes
    yum list recent
    yum search 查询名
    
    yum repolist all
    yum repolist enabled
    yum repolist disabled
    
    # 显示软件包的摘要信息(没有rpm -qi详细)
    yum info zip.x86_64
    
    # 查询某个文件是由哪个软件包生成的(类似rpm -qf),效果好像一样
    yum provides /etc/my.cnf
    yum whatprovides /etc/my.cnf
    
    # 清空缓存
    yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    # 手动在本地建立缓存
    yum makecache
    
    # 安装
    yum [-y] install wget
    yum [-y] reinstall wget
    yum update wget
    yum update-to wget
    yum check-update
    
    # 本地安装
    yum localinstall [--nogpgcheck] rpmname.rpm
    
    # 卸载
    yum remove
    

    swap

    启用swap

    # 新建一个专门的文件用于swap分区
    $ dd if=/dev/zero of=/data/swap bs=1024 count=8388616
    
    # 通过mkswap命令将上面新建出的文件做成swap分区
    $ mkswap /data/swap
    
    # 查看内核参数vm.swappiness(若vm.swappiness为0则根据实际需要调整成30或者60)
    $ cat /proc/sys/vm/swappiness
    # 该文件是无法直接编辑的
    # 临时修改
    $ sysctl -w vm.swappiness=60
    $ sysctl -a | grep swappiness
    # 永久修改:编辑/etc/sysctl.conf文件
    
    # 启用此交换分区的交换功能
    $ swapon /data/swap
    $ echo "/data/swap swap swap defaults    0  0" >> /etc/fstab
    

    关闭swap

    $ swapoff /data/swap   
    $ swapoff -a >/dev/null
    
  • 相关阅读:
    C#编写ActiveX在WEB中应用
    Asp.net中Array的用法
    CAB打包方法
    C#获取文件路径的几种方法
    使用MakeCAB.exe命令创建CAB文件
    VS2005 工具里添加“OLE/COM 对象查看器”命令
    【转载】ASP.NET MVC中Controller与View之间的数据传递总结
    F如何配置外向交货单的定价过程
    解决 局域网XP无权限访问的问题 (转)
    U盘装XP系统(含截图,2012最新原创超简单方法)
  • 原文地址:https://www.cnblogs.com/CSunShine/p/11479467.html
Copyright © 2011-2022 走看看