zoukankan      html  css  js  c++  java
  • 1125使用的命令行

    rz sz ssh crontab grep tree scp cp

    工作的第一天就是服务器上的各种命令行使用情况,自己感觉还不很熟悉。操作起来比较缓慢,不熟悉。使用比较多的就是vim编辑器,因为在服务器上直接操作比较多。

    先从简单的说起吧,个人感觉Linux各种命令的使用必须得非常的熟练才行。这样才会在工作中才会能够更快的解决问题,提高编程的效率!

    首先来一个理论概念:

    软链接也叫符号链接,对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。

    1.rz

    Receive Zmodem 接收文件传输协议,从本地上传文件到服务器。

    2.sz

    Send Zmodem 发送文件传输协议,从服务器发送文件到本地

    3.ssh

    在1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广。SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。

    用户名:user

    远程主机:host

    (1)ssh远程登录

    ssh user@host

    (2)如果本地用户名与远程用户名一致,登录时可以省略用户名

    ssh host

    (3)ssh的默认端口是22,也就是说,登录请求会送进远程主机的22端口。使用p参数,可以修改这个端口。

    ssh -p 80 user@host

    (4)ssh能够保证安全,原因在于它采用了公钥加密,具体过程如下

    a.远程主机收到用户的登录请求,把自己的公钥发给用户。

    b.用户使用这个公钥,将登录密码加密后,发送回来。

    c.远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

    不过,这个过程存在一个风险:中间人攻击,这里不再详述。感兴趣自己谷歌。

    4.crontab

    百度百科:常用于Linux,Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。

    (1)crond简介,crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类:系统任务调度用户任务调度

    系统任务调度:系统周期性所要执行的工作。比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

    用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

    使用者权限文件:

    (1)cron.deny该文件中所列用户不允许使用crontab命令.

    /etc/cron.deny

    (2)cron.allow该文件中所列用户允许使用crontab命令.

    /etc/cron.allow

    (3)所有用户crontab文件存放的目录,以用户名命名.

    /var/spool/cron/

    (4)crontab文件的含义:

    用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置。

    它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    minute hour day month week command

    其中:
    minute: 表示分钟,可以是从0到59之间的任何整数。
    hour:表示小时,可以是从0到23之间的任何整数。
    day:表示日期,可以是从1到31之间的任何整数。
    month:表示月份,可以是从1到12之间的任何整数。
    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    以上各个字段中,还可以使用以下特殊字符:

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    (5)命令格式

    crontab [-u user] file
    crontab [-u user] [ -e | -l | -r ]

    功能:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

    参数:

    1 -u user:用来设定某个用户的crontab服务,例如,“-u ricky”表示设定ricky用户的crontab服务,此参数一般有root用户来运行。
    2 file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
    3 -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
    4 -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
    5 -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
    6 -i:在删除用户的crontab文件时给确认提示。

    在开始crontab的操作的时候,我们首先要备份一下:

    crontab -l > $HOME/mycron

    一旦不小心误删了crontab文件,也能够迅速恢复。

    恢复方法:

    如果不小心误删了crontab文件,假设你在自己的$HOME目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:

     crontab <filename>

    <filename>是在$HOME目录中副本的文件名。

    在编辑crontab命令的时候,最好在crontab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。

    crontab -e命令添加、删除或编辑crontab文件中的条目
    crontab -l命令列出crontab的全部信息
    crontab -r命令删除crontab文件

    前辈经验注意点:

    有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。

    (6)crontab使用注意事项:

    a. 注意环境变量问题 

    1)脚本中涉及文件路径时写全局路径;
    2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量。

    3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题:

     0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh 

    b.注意清理系统用户的邮件日志
    每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。

    例如,可以在crontab文件中设置如下形式,忽略日志输出:
    0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

    c.系统级任务调度与用户级任务调度
    系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

    d.其他注意事项
    新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
    当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
    千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
    在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

     crontab参考:http://www.jb51.net/LINUXjishu/151805.html

    5.grep

    grepGlobal Regular Expression Print》(global search regular expression and print out the line)全面搜索正则表达式并把行打印出来,

    是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。

    常用用法:

    grep [options] “搜索的字符串” filename
    [options]主要参数:
    -c:只输出匹配行的计数。
    -I:不区分大 小写(只适用于单字符)。
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。
    pattern正则表达式主要参数:
    : 忽略正则表达式中特殊字符的原有含义。
    ^:匹配正则表达式的开始行。
    $: 匹配正则表达式的结束行。
    <:从匹配正则表达 式的行开始。
    >:到匹配正则表达式的行结束。
    [ ]:单个字符,如[A]即A符合要求 。
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    。:所有的单个字符。
    * :有字符,长度可以为0。

    (1)将/etc/passwd,有出现 root 的行取出来.

    grep root /etc/passwd
    1 root:x:0:0:root:/root:/bin/bash
    2 operator:x:11:0:operator:/root:/sbin/nologin

    或者

    cat /etc/passwd | grep root 
    1 root:x:0:0:root:/root:/bin/bash
    2 operator:x:11:0:operator:/root:/sbin/nologin

    感兴趣可以自己谷歌更多grep案例。

    6.tree

    语法:

    tree(选项)(参数)

    选项:

    -a:显示所有文件和目录; 
    -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
    -C:在文件和目录清单加上色彩,便于区分各种类型; 
    -d:先是目录名称而非内容; 
    -D:列出文件或目录的更改时间; 
    -f:在每个文件或目录之前,显示完整的相对路径名称; 
    -F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*""/""@""|"号; 
    -g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码; 
    -i:不以阶梯状列出文件和目录名称; 
    -l:<范本样式> 不显示符号范本样式的文件或目录名称; 
    -l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录; 
    -n:不在文件和目录清单加上色彩; 
    -N:直接列出文件和目录名称,包括控制字符; 
    -p:列出权限标示; 
    -P:<范本样式> 只显示符合范本样式的文件和目录名称; 
    -q:用“?”号取代控制字符,列出文件和目录名称; 
    -s:列出文件和目录大小; 
    -t:用文件和目录的更改时间排序; 
    -u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码; 
    -x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。

    7.scp cp

    Linux中cp和scp命令的使用方法:

    Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同。

    cp --- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件
    scp --- 主要是在不同的Linux系统之间来回copy文件 

    cp的具体用法:

    命令基本格式:

    cp [OPTIONS] SOURCE DEST --- 从源路径copy文件到目的路径
    cp [OPTIONS] SOURCE... DIRECTORY --- 将多个源文件copy到指定的目录(多个源文件用空格分隔)
    OPTIONS:
    -a same as -dpR 尽可能将源文件状态、权限等资料都照原装予以复制,并且是递归copy;
    -r 表示递归copy,若source中含有目录名,则将目录下之档案亦皆依序拷贝至目的地;
    -f 表示force,若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制; 

    具体案例多多谷歌。

    scp的具体用法:

    scp是有Security的文件copy,基于ssh登录。

    scp是有Security的文件copy,基于ssh登录。

    命令基本格式:

    scp [OPTIONS] file_source file_target
    OPTIONS:
    -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接、认证、 或是配置错误
    -C 使能压缩选项
    -P 选择端口 
    -4 强行使用 IPV4 地址 .
    -6 强行使用 IPV6 地址 .

    从本地复制到远程

    scp local_file remote_username@remote_ip:remote_folder 
    scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root 

    然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy了,复制目录加参数 -r 即可。

    从远程复制到本地

    scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3
    scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/ 
    scp root@172.19.2.75:/home/root/full.tar.gz /home/daisy/full.tar.gz

    注意两点

    1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
    scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
    2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。 

    cp scp 参考:http://www.jb51.net/LINUXjishu/70474.html

    暂时写着么多辣。:)

    tree命令以树状图列出目录的内容

    来自: http://man.linuxde.net/tree
    tree命令以树状图列出目录的内容。

    来自: http://man.linuxde.net/tree tree命令以树状图列出目录的内容。

     

  • 相关阅读:
    发布几个DNN模块自己写的,功能还不完善
    c#冒泡排序正解!
    74很多小学生在学习加法时,发现“进位”特别容易出错。你的任务是计算两个三位数在相加时需要多少次进位。你编制的程序应当可以连续处理多组数据,直到读到两个0(这是输入结束标记)。
    69 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?首行输入n,表示有多少组测试数据(n<10)随后n行每行输入一组测试数据 N( 0 < N < 1000000 )
    96已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n1位的数。第一行为M,表示测试数据组数。接下来M行,每行包含一个测试数据。
    101输入两点坐标(X1,Y1),(X2,Y2)(0<=x1,x2,y1,y2<=1000),计算并输出两点间的距离第一行输入一个整数n(0<n<=1000),表示有n组测试数据;随后每组占一行由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开 对于每组输入数据,输出一行结果保留两位
    266 给定一行字符,逆序输出此行(空格.数字不输出)
    98描述 输入一个百分制的成绩M,将其转换成对应的等级,具体转换规则如下:90~100为A;80~89为B;70~79为C;60~69为D;0~59为E;输入 第一行是一个整数N,表示测试数据的组数(N<10)
    50爱摘苹果的小明小明家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,小明就会跑去摘苹果。小明有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及小明把手伸直的时候能够达到的最大高度请帮小明算一下她能够摘到的苹果的数
    100 小南刚学了二进制,他想知道一个数的二进制表示中有多少个1,你能帮他写一个程序来完成这个任务吗?
  • 原文地址:https://www.cnblogs.com/xiaohaillong/p/6102697.html
Copyright © 2011-2022 走看看