• Linux常用命令(四)


    1、xargs

    作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

    语法格式:

    # xargs [-ni]

    常用参数:

    参数

    参数说明

    -n

    分组输出,n个分为一组

    -i

    与大括号{}关联,使每一个输出的参数都会被执行一次

    实践说明:

    [root@ky01 ~]# find . -type f -name "123.txt"|xargs mv {} /tmp 

    mv: target `./123.txt' is not a directory

    [root@ky01 ~]# find . -type f -name "123.txt"|xargs -i mv {} /tmp

    [root@ky01 ~]# ls /tmp/

    123.txt  etc01.tar.gz  etc.tar.gz  oldboy.txt  test.txt

    2、wc

    统计数字

    语法格式:

    # wc [-lwc]  文件

    常用参数:

    参数

    参数说明

    -l

    计算行数

    -w

    计算字数

    -c

    计算字符数

     实践说明:

    [root@ky01 ~]# wc -l b.txt

    4 b.txt

    [root@ky01 ~]# wc -w b.txt 

    10 b.txt

    [root@ky01 ~]# wc -c b.txt

    52 b.txt

    3、basename

    只显示目录下文件的名称,shell脚本中会用到

    语法结构:

    # basename [文件] 

    实践说明:

    只显示目录/root/01/02/03/04/05/123.txt的文件名

    [root@ky01 ~]# basename 01/02/03/04/05/123.txt

    123.txt

    4、chattr

    改变文件属性

    语法结构:

    # chattr [-R] [+-=] [属性] 文件

    参数

    参数说明

    -R

    递归处理

    属性

    参数说明

    a

    只需添加

    i

    不许更改文件属性

     

    实践说明:

    [root@ky01 ~]# ls -l 12.txt

    -rw-rw-rw- 1 root root 1210 April 24 19:49 12.txt

    [root@ky01 ~]# chattr +i 12.txt

    [root@ky01 ~]# chmod 777 12.txt       

    chmod: changing permissions of `12.txt': Operation not permitted

    [root@ky01 ~]# chattr -i 12.txt

    [root@ky01 ~]# chmod 777 12.txt

    [root@ky01 ~]# ls -l 12.txt

    -rwxrwxrwx 1 root root 1210 April 24 19:49 12.txt

    5、chgrp

    修改文件或目录的用户组

    语法结构:

    # chgrp 用户组 文件

    常用参数:

    参数

    参数说明

    -R

    递归处理

    实践说明:

    修改文件123.txt的用户和用户组

    [root@ky01 ~]# ls -l 123.txt

    -rwxrwxrw- 1 ky1 root 31 April 23 12:14 123.txt

    [root@ky01 ~]# chgrp ky1 123.txt

    [root@ky01 ~]# ls -l 123.txt    

    -rwxrwxrw- 1 ky1 ky1 31 April 23 12:14 123.txt

    6、chkconfig

    查看或更改开机自启动的运行级别的情况,chkconfig管理的服务是/etc/init.d/下的服务文件

        原理:chkconfig和当前服务进程的运行情况没有关系,只是在开机时影响服务的启动

        实现:

    • a.编写服务文件(如名字为oldboy)脚本时需要包含chkconfig管理的代码# chkconfig: 345 25 75345代表的是启动级别,25代表服务开启顺序的号码,75代表服务关闭顺序的号码,号码默认是1-99号),再添加权限chmod +x oldboy
    • b.把脚本放到/etc/init.d/文件夹下面,并且希望开机时被chkconfig管理,需要添加chkconfig --add oldboy
    • c.添加进去的默认在哪个级别上启动要看开发脚本中chkconfig的配置,服务启动顺序和关闭顺序也是看脚本中chkconfig的配置
    • d.chkconfig --level 3  oldboy on/off的实质

    开启实质:rm -f /etc/rc.d/rc3.d/K75oldboy(删除关闭顺序的文件)

             ln -s /etc/init.d/oldboy /etc/rc.d/rc3.d/S25oldboy(建立开启顺序文件连接)

    关闭实质:rm -f /etc/rc.d/rc3.d/S25oldboy(删除开启顺序的文件)

             ln -s /etc/init.d/oldboy /etc/rc.d/rc3.d/S75oldboy(建立关闭顺序文件连接)

    语法结构:

    # chkconfig [--list、--level] [服务] [on/off]

    常用参数:

    参数

    参数说明

    --list

    查看所有服务在所有级别的开启关闭状态(没有也显示)

    --level

    接级别,设置相应级别的某个服务的开启或关闭

    实践说明:

    [root@ky01 ~]# chkconfig --list netfs

    netfs           0:off   1:off   2:off   3:off   4:off   5:off   6:off

    [root@ky01 ~]# chkconfig --level 3 netfs on

    [root@ky01 ~]# chkconfig --list netfs      

    netfs           0:off   1:off   2:off   3:on    4:off   5:off   6:off

    [root@ky01 ~]# chkconfig --level 23 netfs on

    [root@ky01 ~]# chkconfig --list netfs       

    netfs           0:off   1:off   2:on    3:on    4:off   5:off   6:off

     

    查看或更改开机自启动的运行级别的情况,chkconfig管理的服务是/etc/init.d/下的服务文件

        原理:chkconfig和当前服务进程的运行情况没有关系,只是在开机时影响服务的启动

        实现:1、编写服务文件(如名字为oldboy)脚本时需要包含chkconfig管理的代码# chkconfig: 345 25 75345代表的是启动级别,25代表服务开启顺序的号码,75代表服务关闭顺序的号码,号码默认是1-99号),再添加权限chmod +x oldboy

             2、把脚本放到/etc/init.d/文件夹下面,并且希望开机时被chkconfig管理,需要添加chkconfig --add oldboy

            3、添加进去的默认在哪个级别上启动要看开发脚本中chkconfig的配置,服务启动顺序和关闭顺序也是看脚本中chkconfig的配置

           4chkconfig --level 3  oldboy on/off的实质

    开启实质:rm -f /etc/rc.d/rc3.d/K75oldboy(删除关闭顺序的文件)

             ln -s /etc/init.d/oldboy /etc/rc.d/rc3.d/S25oldboy(建立开启顺序文件连接)

    关闭实质:rm -f /etc/rc.d/rc3.d/S25oldboy(删除开启顺序的文件)

             ln -s /etc/init.d/oldboy /etc/rc.d/rc3.d/S75oldboy(建立关闭顺序文件连接)

    7、dd

    磁盘管理命令

    语法结构:

     

     dd if=input_file of=output_file
     dd if=input_file of=output_file bs=#[b|k|m|g] count=n

    实例说明:

    1.将本地的/dev/hdb整盘备份到/dev/hdd

       dd if=/dev/hdb f=/dev/hdd              hdb –> 内存 -> hdd

    2.将/dev/hdb全盘数据备份到指定路径的image文件

       dd if=/dev/hdb f=/root/image            hdb –> 内存 -> image文件

    3.将备份文件恢复到指定盘

       dd if=/root/image f=/dev/hdb             image文件 –> 内存 -> hdb

    4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

        dd if=/dev/hdb | gzip> /root/image.gz

    5.将压缩的备份文件恢复到指定盘

       gzip -dc /root/image.gz | dd f=/dev/hdb

    6.备份磁盘开始的512个字节大小的MBR 主引导记录信息到指定文件

       dd if=/dev/hda f=/root/image count=1 bs=512   默认从硬盘0柱面0磁道1扇区读取512个字节

       count=1指仅拷贝一个块;bs=512指块大小为512个字节。

       恢复:dd if=/root/image f=/dev/hda

    7.备份软盘

       dd if=/dev/fd0 f=disk.img count=1  bs=1440k (即块大小为1.44M)

    8.拷贝内存内容到硬盘

       dd if=/dev/mem f=/root/mem.bin  bs=1024 (指定块大小为1k)  

    9.拷贝光盘内容到指定文件夹,并保存为cd.iso镜像文件

       dd if=/dev/cdrom(hdc)   of=/root/cd.iso

    10.增加swap交换分区文件大小

    第一步:创建一个大小为256M的文件:

    dd if=/dev/zero  of=/swapfile  bs=1024 count=262144

    第二步:把这个文件变成swap交换分区文件:

    mkswap /swapfile

    第三步:启用这个swap交换分区文件:

    swapon /swapfile

    第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap交换分区文件:

    /swapfile    swap    swap    default   0 0

    11.销毁磁盘数据

         dd if=/dev/urandom f=/dev/hda1

    注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

    12.测试硬盘的读写速度

         dd if=/dev/zero bs=1024 count=1000000 f=/root/1Gb.file    写速度

          dd if=/root/1Gb.file bs=64k | dd f=/dev/null      读速度

    通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。

    13.确定硬盘的最佳块blocks大小:初始化硬盘

         dd if=/dev/zero bs=1024 count=1000000 f=/root/1Gb.file    初始化硬盘

         dd if=/dev/zero bs=2048 count=500000 f=/root/1Gb.file     初始化硬盘

         dd if=/dev/zero bs=4096 count=250000 f=/root/1Gb.file     初始化硬盘

         dd if=/dev/zero bs=8192 count=125000 f=/root/1Gb.file     初始化硬盘

    通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。

    14.修复硬盘:                 自初始化硬盘

         dd if=/dev/sda f=/dev/sda  SCSI硬盘 或dd if=/dev/hda f=/dev/hda   IDE

    当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point 电磁点现象,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区即MBR(主引导程序446、硬盘分区表64、硬盘有效标识2字节)时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。

    8、 mdadm 软raid 创建

    硬raid:

    主板直接实现raid控制。或者插在pci插槽上。硬盘在链接到主机之前就链接到一起了。 bios就能控制。

    软raid:

    在操作系统内核中实现,把一个驱动程序,将多个磁盘当一个用。由内核的一个模块的软件代码来实现的。软件代码由cpu实现。 cpu大量时间来处理存储了。占用了大量的cpu的使用周期,性能提升不明显。

    md,mkdadm ,mdadm配置文件/etc/mdadm.conf
    md:可以组合任何块设备做成raid,不限于磁盘。即多个分区都可以做成raid。但是同一个磁盘的不同分区做成raid没有任何意义
    mdadm:监控raid,扩展raid空间,加一块盘进来。跟vim一样是模式化的工具

    内核的模块是工作在内核空间的。而用户的命令是工作在用户空间,二者的空间是无法通信的,如果调用则需要通过系统调用。比如我们的软raid的内核模块md,要读取硬盘信息我们在用户空间是无法直接控制的,而是必须有专门的客户端命令mdadm调用专门的系统调用接口才能让内核模块md加载读取。

    mdadm:
    -A :装配模式
    -C:创建模式
    -F:监控模式
    管理模式:
    -f :标记Wie损坏
    -r:模拟为拿掉坏的
    -a:添加好的。
    -D:显示阵列的详细信息
    --detail

    -S :停止raid
    mdadm -S /dev/md2
    --scan 扫描
    mdadm --scan
    mdadm --scam /dev/md2
    -A :启动
    mdadm -A /dev/md2 /dev/sda{1,2,3}

    创建大小为12G的RAID0:
    2*6G
    3*4G
    4*3G
    6*2G

    -C: 创建模式
    options:
    -n $num:用于创建raid设备的设备个数
    -x $num:热备磁盘的个数
    -l 级别:options are: linear, raid0, 0,
    stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multi-
    path, mp, faulty, container. Obviously some of these are synonymous.
    -a yes: 自动为创建的raid设备创建设备文件
    -c Chunck_size:指定分块大小,默认为512,单位KB

    操作: #创建命令 但是首先需要下面一堆命令分区。
    # mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
    # cat /proc/mdstat
    #mdadm -D /dev/md0 #查看detail详情
    =======================2==============================
    练习 创建一个大小为12G的RAID1:
    2*12G
    # mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb{1,2}
    #cat /proc/mdstat
    #watch -n1 'cat /proc/mdstat'

    watch 命令:
    -n $num:多久执行一次指定的命令 单位为秒钟
    1, .5

    模拟损坏
    mdadm /dev/md1 -f /dev/sdc3
    mdadm -D /dev/md1
    模拟移除:
    mdadm /dev/md1 -r /dev/sdc3
    添加:
    mdadm /dev/md1 -a /dev/sdc3 会同步镜像盘。

    raid 1 具有热备磁盘 如何设置
    #设置带有热备的命令 -x参数
    mdadm -C /dev/md2 -a yes -l 1 -n 2 -x 1 /dev/sda{1,2,3}

     

  • 相关阅读:
    [NOI2004] 郁闷的出纳员
    [洛谷P4556] 雨天的尾巴
    【转】进程、线程、 GIL全局解释器锁知识点整理
    Python3中的SocketServer
    socket 上传文件代码
    python socket 连续send,出现粘包问题
    【转】动态导入模块的两种方法
    【转】面向对象高级语法部分
    python的垃圾回收机制和析构函数__del__
    django 项目使用setting文件里定义的变量方法
  • 原文地址:https://www.cnblogs.com/tina-python/p/5429665.html
Copyright © 2020-2023  润新知