zoukankan      html  css  js  c++  java
  • REDHAT一总复习1 输出重定向及head tail的用法

    1、使用bash命令,在server机上完成以下任务。(考点是:head  tail的使用)

    .显示/usr/bin/clean-binary-files文件的前12行,并将其输出到/home/student/headtail.txt

    .显示/usr/bin/clean-binary-files文件的最后9行,并将其添加到/home/student/headtail.txt

    (存放到一个文件里,记得有个增量添加和异地同步的命令rsync和scp实现,MK在一篇博客里有提到过。 这里使用的是>>重定向,这里>与>>的区别,naifuzhang在知道中回答道:> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);>> 这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。 把前面的文件输出到后面的文件里,顺序不要搞错了。)

    1.1 显示/usr/bin/clean-binary-files文件的前12行,并将其输出到/home/student/headtail.txt文件

         $ head -n 12 /usr/bin/clean-binary-files > /home/student/headtail.txt

    1.2 显示/usr/bin/clean-binary-files文件的最后9行,并将其添加到/home/student/headtail.txt

         $ tail -n 9 /usr/bin/clean-binary-files >> /home/student/headtail.txt

    附MK博文摘要:

    rsync增量更新

    然后是文件的增量更新,主要解决的问题是现在有两台服务器A和B,要将A服务器上的test目录增量复制到B服务器上的test目录(所谓增量更新就是指B服务器原来已经有的文件不再传了,只传送那些A有的而B没有的),这样使得B服务器上的test文件夹保持与A同步

    这就需要用到rsync这个命令,这个命令的用法跟scp是一样的

    比如在A服务器下执行命令:rsync -r /home/test/ user@B:/home/test 即可实现增量更新

    注意:这里有一个问题需要详细说明一下:

    假如test目录下有1.txt,2.txt这两个文件

    如果命令中源目录那里写成这样:/home/test/

    那么rsync准备更新的文件列表就是

    1.txt

    2.txt

    然后就会在B机器的/home/test目录下找这两个文件并做增量更新,这样能够满足需求

    但如果源目录写成这样:/home/test

    那么rsync准备增量更新的文件列表就会是这样:

    test/1.txt

    test/2.txt

    然后在B机器的/home/test目录下寻找test/1.txt,发现没有test文件夹,于是又创建了test文件夹,所以这样执行的结果就是B机器的目录结构就会有这两个文件,而这不是希望看到的

    /home/test/test/1.txt

    /home/test/test/2.txt

    所以要注意这个问题。下面两种写法是正确的:

    rsync -r /home/test/ user@B:/home/test 

    或者

    rsync -r /home/test user@B:/home

    具体的关于rsync的详细参数的设置这里就不说了,这里只把一种推荐的命令运行方式记录下来:

    rsync -rtv /home/test/ user@B:/home/test

    -t是指判断文件是否已有的时候只判断文件的时间戳和文件的大小,如果都一样就把这个文件跳过(这是一种不够严谨但足够快的方法)

    -v是指输出一下执行的日志,其实可以加很多v,v越多,输出的日志越多

    免验证访问

    现在就可以将crontab和rsync结合一下了,当然首先需要解决两个机器之间rsync免验证的问题,也就是命令可以直接这样写(不需要B机器的用户名和密码):

    rsync -rtv /home/test user@B:/home/test

    关于这个网上看了一些rsync的配置,但是觉得太麻烦了,想到这个跟scp差不多,是不是也可以直接ssh免验证的那种方式解决,试了一下,可行

    关于ssh免验证登录,是这样做的(这里的用户全部用root,当然可以用其他的):

    在A机器下:

    首先生成秘钥文件

    ssh-keygen -t rsa -P ''

    注意‘’是两个单引号,表示密码为空

    然后将生成的id_rsa.pub文件复制到B服务器上(注意文件的位置为/root/.ssh,如果是其他用户应该是/home/user/.ssh,即为当前用户的主目录)

    scp /root/.ssh/id_rsa.pub root@B:/root/

    (因为操作还没有完成,这里还要输入密码)

    然后在B机器上操作:

    如果/root/.ssh/里没有authorized_keys这个文件,那么将从A机器scp过来的id_rsa.pub文件移动并重命名成authorized_keys即可

    mv /root/id_rsa.pub /root/.ssh/authorized_keys

    如果这个authorized_keys文件已经存在,那么将id_rsa.pub这个文件的内容追加到authorized_keys即可

    cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

    此时就可以在A机器上免密码访问B机器了,注意别搞反了

    在A机器上测试一下:

    ssh root@B

    如果不需要输入密码就可以登录,说明配置成功

  • 相关阅读:
    H264 RTP封包原理(转载)
    FFmpeg的H264编码有内存泄漏吗??!!!
    最近在研究FFmpeg编解码
    罗一迦
    健康导报
    Vivado生成edf文件
    VIVADO生成MCS
    网络变压器
    Zynq 在Ubuntu上搭建编译环境
    [转]TimeQuest之delay_fall clock_fall傻傻分不清楚
  • 原文地址:https://www.cnblogs.com/zhg1016/p/5571937.html
Copyright © 2011-2022 走看看