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命令以树状图列出目录的内容。

 

 

 

 

 

 

posted @ 2016-11-25 18:47  我要做李白  阅读(296)  评论(0编辑  收藏  举报