分类目录归档:Linux

四、远程登录工具

一、SSH协议原理
1、对称加密算法
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
Symmetric encryption algorithm

2、非对称加密算法
非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
Asymmetric encryption algorithm

SSH secure shell protocol

3、SSH命令
ssh 用户名@ip
#远程管理指定Linux服务器

scp [-r] 用户名@ip:文件路径 本地路径
#下载文件

scp [-r] 本地文件 用户名@ip:上传路径
#上传文件

二、SecureCRT远程管理工具

三、Xshell工具和WinSCP文件传输工具

CentOS 6.x 安裝 nslookup 的步驟 (與 yum 如何查詢套件)

在Linode VPS佈署的 CentOS 6.x 已經沒有 nslookup 這個工具程式了!!

以下將藉由安裝 nslookup 的同時,順便也復習一下 yum 的查詢套件功能…

安裝步驟

1. 執行 nslookup,系統回應「沒有這個指令」:

$ nslookup
-bash: nslookup: command not found

2. 直覺地用 yum 安裝 nslookup,結果跟你說「套件不存在」:

$ yum install nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.kernel.org
 * elrepo: ftp.osuosl.org
 * epel: mirrors.kernel.org
 * extras: mirrors.kernel.org
 * rpmforge: mirror.hmc.edu
 * updates: mirrors.kernel.org
Setting up Install Process
No package nslookup available.
Error: Nothing to do

3. 我們可以加 provides 參數查詢 nslookup 存在哪個套件中:

$ yum provides nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirror.prgmr.com
* extras: mirrors.linode.com
* rpmforge: mirror.hmc.edu
* updates: mirrors.linode.com
Warning: 3.0.x versions of yum would erroneously match against filenames.
You can use "*/nslookup" and/or "*bin/nslookup" to get that behaviour
No Matches found

4. 雖然第一時間也是查不到,不過在上面遺留的訊息中, yum 有進一步顯示說檔案可能藏在 bin 目錄中。我們依樣畫葫蘆:

$ yum provides *bin/nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirror.prgmr.com
* extras: mirrors.linode.com
* rpmforge: mirror.hmc.edu
* updates: mirrors.linode.com
32:bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64 : Utilities for querying DNS name
                                            : servers
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup

皇天不復苦心人,原來是藏在 bind-utils 套件中。

5. 事不宜遲,咱們快點安裝吧:

$ yum install bind-utils

PS. 連帶的 dighost 也存在於 bind-utils 套件裡

VIM文本编辑器

一、概述
Visual Interface(VI)
#可视化接口
#类似Windows中的记事本
#VI相对于记事本强大的不是一星半点

VI->VIM
VIM相对于VI做了哪些提升
— VIM支持多级撤销
— VIM可以跨平台运行
— VIM支持语法高亮
— VIM支持图形界面

二、VI编辑器的操作模式
Commmand Mode – 命令模式
Insert Model – 输入模式
Last Line Mode – 底行模式(尾行,末行)

三、VIM编辑器的命令模式
例:
[root@localhost ~]# vim abc
[root@localhost ~]# vim + abc
[root@localhost ~]# vim +3 abc
[root@localhost ~]# vim +5 abc
[root@localhost ~]# vim +/xxx abc

四、底行模式和命令模式常用指令
1、底行模式常用指令
— :w 保存文件
— :q 退出编辑
— :! 强制执行
— :ls 列出所有打开的文件
— :n 切换到后一个文件
— :N 切换到前一个文件
— :15 光标快速定位到15行
— /xxx 从光标位置开始向后搜索’xxx’字符串第一次出现所在的行
— ?xxx 从光标位置开始向前搜索’xxx’字符串第一次出现所在的行

2、命令模式常用指令
— h 光标左移
— j 光标下移
— k 光标上移
— l 光标右移
— ctrl+f 向下翻页(front)
— ctrl+b 向上翻页(back)
— ctrl+d 向下翻半页(down)
— ctrl+u 向上翻半页(up)
— dd 删除光标所在行
— o 在光标所在行的下方插入一行并切换到输入模式
— yy 复制光标所在的行
— p 在光标所在行的下方粘帖
— P 在光标所在行的上方粘贴

八、Shell基础

一、Shell概述
1、Shell是什么
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

2、Shell的分类
Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
C Shell:C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名

Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh

Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。

3、Linux支持的Shell
/etc/shells :支持shell类型的记录文件

二、脚本执行方式
1、echo输出命令
echo [选项] [输出内容]
选项:
— -e:支持反斜线控制的字符转换
Control characters

例如:
[root@localhost ~]# echo -e “hell\bo”
#删除左侧字符

[root@localhost ~]# echo -e “h\te\tl\nl\to”
#制表符与换行符

[root@localhost ~]# echo -e “\x68\t\x65\t\x6c\n\x6c\t\x6f\t”
#按照十六进制ASCII码也同样可以输出

[root@localhost ~]# echo -e “\e[1;31m 嫁人就要嫁凤姐 \e[0m”

#输出颜色
— #30m=黑色,31m=红色,32m=绿色,33m=黄色
— #34m=蓝色,35m=洋红,36m=青色,37m=白色

2、第一个脚本
[root@localhost ~]# vi hello.sh
#!/bin/bash
#The first program

echo -e “\e[1;34m 天上掉下个林妹妹!\e[0m”

3、脚本执行
赋予执行权限,直接运行
— chmod 755 hello.sh
— ./hello.sh

通过bash调用执行脚本
— bash hello.sh

三、Bash的基本功能
1、命令别名与快捷键
1)什么是别名
— 命令别名==人的小名

2)查看与设定别名
alias
#查看系统中所有的命令别名

alias 别名=’原命令’
#设定命令别名

3)别名永久生效与删除别名
vi ~/.bashrc
#写入环境变量配置文件

unalias 别名
#删除别名

4)命令生效顺序
— 第一顺位执行用绝对路径或相对路径执行的命令。
— 第二顺位执行别名
— 第三顺位执行Bash的内部命令
— 第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令

5)常用快捷键
— ctrl+c 强制终止当前命令
— ctrl+l 清屏
— ctrl+a 光标移动到命令行首
— ctrl+e 光标移到到命令行尾
— ctrl+u 从光标所在位置删除到行首
— ctrl+z 把命令放入后台
— ctrl+r 在历史命令中搜索

2、历史命令
1)历史命令
history [选项] [历史命令保存文件]
选项:
— -c:清空历史命令
— -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改

历史命令的调用
— 使用上、下箭头调用以前的历史命令
— 使用”!n”重复执行第n条历史命令
— 使用”!!”重复执行上一条命令
— 使用”!字串”重复执行最一条以该字串开关的命令

2)命令与文件补全
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按”Tab”键就会自动进行补全

3、输出重定向
1)标准输入输出
The standard input and output

2)输出重定向
Output redirection
Output redirection-1

3)输入重定向
[root@localhost ~]# wc [选项] [文件名]
选项:
— -c 统计字节数
— -w 统计单词数
— -l 统计行数

命令 < 文件:把文件作为命令的输入
命令 << 标识符 … 标识符:把标识符之间内容作为命令的输入

4、多命令顺序执行
1)多命令顺序执行
Many command execution sequence

例子:
[root@localhost ~]# pwd;touch abc; ls; date
[root@localhost ~]# ls anaconda-ks.cfg && echo yes
[root@localhost ~]# ls anaconda-ks.cfg || echo no
[root@localhost ~]# 命令 && echo yes || echo nos

2)管道符
命令格式:
[root@localhost ~]# 命令1 | 命令2
#命令1的正确输出作为命令2的操作对象

例子:
[root@localhost ~]# ll -a /etc/ | more
[root@localhost ~]# netstat -an | grep “ESTABLISHED”

5、Shell中特殊符号
1)通配符
The wildcard

2)Bash中其他特殊符号
Bash other special symbols

七、其他常用命令

一、挂载命令
1、查询与自动挂载
[root@localhost ~]# mount
#查询系统中已经挂载的设置

[root@localhost ~]# mount -a
#依据配置文件/etc/fstab的内容,自动挂载

2、挂载命令格式
[root@localhost ~]# mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
选项:
— -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
— -o 特殊选项:可以指定挂载的额外选项
Special options

[root@localhost ~]# mount -o remount,noexec /home/
#重新挂载/home分区,并使用noexec权限
[root@localhost ~]# cd /home
[root@localhost ~]# vi hello.sh
[root@localhost ~]# chmod 755 hello.sh
[root@localhost ~]# ./hello.sh
[root@localhost ~]# mount – o remount,exec /home/
#记得要改回来,要不会影响系统启动

3、挂载光盘
[root@localhost ~]# mkdir /mnt/cdrom/
#建立挂载点

[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
#挂载光盘

[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/

4、卸载命令
[root@localhost ~]# umount 设备文件名或挂载点
[root@localhost ~]# umount /mnt/cdrom

5、挂载U盘
[root@localhost ~]# fdisk -l
#查看U盘设备文件名

[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/

注意:Linux默认是不支持NTFS文件系统的

二、用户登录查看和用户交互命令
1、查看登录用户信息
w 用户名
命令输出:
— USER:登陆的用户名
— TTY:登陆终端
— FROM:从哪个IP地址登陆
— LOGIN@:登陆时间
— IDLE:用户闲置时间
— JCPU:指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
— PCPU:是指当前进程所占用的时间
— WHAT:当前正在运行的命令

who 用户名
命令输出:
— 用户名
— 登录终端
— 登录时间(登录来源IP地址)

2、查询当前登录和过去登录的用户信息
last
— last命令默认是读取/var/log/wtmp文件数据
命令输出:
— 用户名
— 登录终端
— 登录IP
— 登录时间
— 退出时间(在线时间)

3、查看所有用户的最后一次登录时间
lastlog
— lastlog命令默认是读取/var/log/lastlog文件内容
命令输出:
— 用户名
— 登录终端
— 登录IP
— 最后一次登录时间

一、命令基本格式

命令提示符
[root@localhost ~]#
其中:
— root:当前登录用户
— localhost:主机名
— ~:当前所在目录(家目录)
— #:超级用户的提示符(普通用户的提示符是$)

命令格式
命令 [选项] [参数]
注意:个别命令使用不遵循此格式,当有多个选项时,可以写在一起简化选项与完整选项
— -a 等于 –all

查询目录中内容:ls
ls [选项] [文件或目录]
选项:
— -a:显示所有文件,包括隐藏文件
— -l:显示详细信息
— -d:查看目录属性
— -h:人性化显示文件大小
— -i:显示inode

文件权限
-rw-r–r–
— -:文件类型( – 文件 d 目录 l 软链接文件)
— rw-:u所有者
— r–:g所属组
— r–:o其他人

— r:读
— w:写
— x:执行

六、关机和重启命令

1、shutdown命令
[root@localhost ~]# shutdown [选项] 时间
选项:
— -c:取消前一个关机命令
— -h:关机
— -r:重启

2、其他关机命令
[root@localhost ~]# halt
[root@localhost ~]# poweroff
[root@localhost ~]# init 0

3、其他重启命令
[root@localhost ~]# reboot
[root@localhost ~]# init 6

4、系统运行级别
— 0 关机
— 1 单用户
— 2 不完全多用户,不含NFS服务
— 3 完全多用户
— 4 末分配
— 5 图形界面
— 6 重启

[root@localhost ~]# cat /etc/inittab
#修改系统默认运行级别
id:3:initdefault:

[root@localhost ~]# runlevel
#查询系统运行级别

5、退出登录命令
[root@localhost ~]# logout

五、压缩与解压缩命令

常用压缩格式: .zip .gz .bz2 .tar.gz .tar.bz2

1、.zip格式压缩
zip 压缩文件名 源文件
#压缩文件

zip -r 压缩文件名 源目录
#压缩目录

2、.zip格式解压缩
unzip 压缩文件
#解压缩.zip文件

3、.gz格式压缩
gzip 源文件
#压缩为.gz格式的压缩文件,源文件会消失

gzip -c 源文件 > 压缩文件
#压缩为.gz格式,源文件保留
例如:gzip -c cangls > cangls.gz

.gzip -r 目录
#压缩目录下所有的子文件,但不能压缩目录

4、.gz格式解压缩
gzip -d 压缩文件
#解压缩文件

gunzip 压缩文件
#解压缩文件

5、.bz2格式压缩
bzip2 源文件
#压缩为.bz2格式,不保留源文件

bzip2 -k 源文件
#压缩之后保留源文件

注意:bzip2命令不能压缩目录

6、.bz2格式解压缩
bzip2 -d 压缩文件
#解压缩,-k保留压缩文件

bunzip2 压缩文件
#解压缩,-k保留压缩文件

7、打包命令tar
tar -cvf 打包文件名 源文件
选项:
— -c:打包
— -v:显示过程
— -f:指定打包后的文件名

例如:
— tar -cvf longzls.tar longzls

8、解打包命令
tar -xvf 打包文件名
选择:
— -x:解打包

例如:
— tar -xvf longzls.tar

9、.tar.gz压缩格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式

tar -zcvf 压缩包名.tar.gz 源文件
选项:
— -z:压缩为.tar.gz格式

tar -zxvf 压缩包名.tar.gz
选项:
— -x:解压缩.tar.gz格式

10、tar.bz2压缩格式
tar -jcvf 压缩包名.tar.bz2 源文件
选项:
— -z:压缩为.tar.bz2格式

tar -jxvf 压缩包名.tar.bz2
选项:
— -x:解压缩.tar.bz2格式

四、帮助命令

1、帮助命令main
man 命令
#获取指定命令的帮助

man ls
#查看ls的帮助

查看命令拥有那个级别的帮助
man -f 命令
相当于
whatis 命令

举例:
— man -5 passwd
— man -4 null
— man -8 ifconfig

man的级别
— 1 查看命令的帮助
— 2 查看可被内核调用的函数的帮助
— 3 查看函数和函数库的帮助
— 4 查看特殊文件的帮助(主要是/dev目录下的文件)
— 5 查看配置文件的帮助
— 6 查看游戏的帮助
— 7 查看其它杂项的帮助
— 8 查看系统管理员可用命令的帮助
— 9 查看和内核相关文件的帮助

查看和命令相关的所有帮助
man -k 命令
相当于
apropos 命令

例如:apropos passwd

2、其他帮助命令
选项帮助
命令 –help
#获取命令选项的帮助

例如:
— ls –help

shell内部命令帮助
help shell内部命令
#获取shell内部命令的帮助

例如:
whereis cd
#确定是否是shell内部命令
help cd
#获取内部命令帮助

详细命令帮助info
info 命令
— – 回车:进入子帮助页面(带有*号标记)
— – u:进入上层页面
— – n:进入下一个帮助小节
— – p:进入上一个帮助小节
— – q:退出

三、文件搜索命令

1、locate命令格式
locate 文件名
— 在后台数据库中按文件名搜索,搜索速度更快
/var/lib/mlocate
— locate命令所搜索的后台数据库
updatedb
更新locate数据库

/etc/updatedb.conf配置文件
PRUNE_BIND_MOUNTS=”yes”
#开启搜索限制
PRUNEFS =
#搜索时,不搜索的文件系统
PRUNEPATHS =
#搜索时,不搜索的路径

2、搜索命令的命令whereis
whereis 命令名
#搜索命令所在路径及帮助文档所在位置
选项:
— -b:只查找可执行文件
— -m:只查找帮助文件

PATH环境变量
PATH环境变量:定义的是系统搜索命令的路径
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

3、find命令
find [搜索范围] [搜索条件]
#搜索文件

find / -name install.log
#避免大范围搜索,会非常耗费系统资源
#find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配

find /root -iname install.log
#不区分大小写

find /root -user root
#按照所有者搜索

find /root -nouser
#查找没有所有者的文件

find /var/log/ -mtime +10
#查找10天前修改的文件
— -10 10天内修改文件
— 10 10天当天修改的文件
— +10 10天前修改的文件
— atime 文件访问时间
— ctime 改变文件属性
— mtime 修改文件内容

find . -size 25k
#查找文件大小是25KB的文件
— -25k 小于25KB的文件
— 25k 等于25KB的文件
— +25k 大于25KB的文件

find . -inum 262422
#查找i节点是262422的文件

find /etc -size +20k -a -size -50k
#查找/etc/目录下,大于20KB并且小于50KB的文件
— -a and 逻辑与,两个条件都满足
— -o or 逻辑或,两个条件满足一个即可

find /etc -size +20k -a -size -50k -exec ls -lh {} \;
#查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
#-exec/-ok 命令 {} \;对搜索结果执行操作

Linux中的通配符
— * 匹配任意内容
— ? 匹配任意一个字符
— [] 匹配任意一个中括号内的字符

4、搜索字符串命令grep
grep [选项] 字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
— -i 忽略大小写
— -v 排除指定字符串

5、find命令与grep命令的区别
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配