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
grep《Global 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
暂时写着么多辣。:)