实际测试环境为: CentOS 6.x
客户端工具为: putty https://www.chiark.greenend.org.uk/~sgtatham/putty/
Linux 的常见文件系统
/ 根目录
/boot 一般 100 M
/home 用户数据
/var 日志
/var/log 系统日志
/user 系统文件(apache,mysql)
/opt
/dev 设备文件
/proc 进程状态
/etc 配置文件
Tips:
按 Tab 键可以补全 (或列出已输入字符串为前缀的) 命令和目录
在 Linux 下,一切皆文件,这里的 "一切" 确确实实意味着一切.硬盘,硬盘分区,并行口,连接,以太网卡,目录所有这些都是文件.
putty 中 Ctrl+Insert 为复制选中的文字, Shift+Insert 为粘贴复制的文字,点击鼠标右键也可以粘贴选中或复制的文字
常见符号
| 管道符
< 把后面的输入到前面,eg: mysql -uroot -ptest
> 将一条命令执行结果输出到后面指定的,覆盖原有内容.eg:grep"session" game_server.log > 1.txt
>> 将一条命令执行结果输出到后面指定的,是追加到后面.
&& 必须前一句成功才会执行下一句
; 不管前一句是否执行成功均会执行后一句
~/home/ 用户目录
./ 此目录本身
../ 此目录的上一级目录
基本命令
yum 自动下载安装软件包
man yum install man; man yum; man man;"有问题问男人","男人遇到问题自己解决".
more 可以按页来查看文件的内容
history 显示输入过的命令
文件命令
ls -l 目录名 查看目录
cd 目录名更改目录
pwd 查看当前目录
mkdir 目录名创建目录
rm 文件名删除文件
rm -r 目录名删除目录
cp 文件名文件名复制文件
cp -r 目录名目录名复制目录
mv 文件名文件名移动文件
cat 文件名输出文件内容
tail -f 文件名监控文件 (一般用来看日志)
vi 文件名编辑文件 i :q! :wq
find 路径 -name filename
ln 为文件或文件夹创建连接 (类似 windows 的快捷方式)
whereis 用于程序名的搜索
which 在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果.也就是说,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令.
echo 显示文字
mount umount 挂载和取消挂载 mount -t tmpfs-o size=100M none /$ramboot
用户管理
useradd 增加使用者 cat /etc/passwd
passwd 设置密码
用户权限管理
chmod 修改文件的属性,是否可读,写,执行
chown 修改文件的所属,属于哪个用户
进程管理
ps -aux|grep 进程名或程序名 查看指定进程的相关信息
kill 进程号关闭指定进程
fuser 列出 (也可关闭该进程) 使用了指定文件或端口号的进程号
查询
grep '查询内容 (不要包括特殊字符)' 文件名 查看文件中所有包括查询内容的文本 (以行为单位)
tail -f 日志文件 | grep 查询内容
grep -v 查询内容文件名 查看不包括指定内容的文本
系统信息
date 显示当前日期和时间
df -h 显示磁盘占用情况
free 显示内存占用情况
top 查看 cpu 和内存以及进程的当前情况
netstat -lnp 查看当前运行的服务和端口
ulimit -a 查看系统的资源限制,其中 "最大文件打开数",一般情况下默认是 1024, 而服务器常常用到远超这个值,因 "一切皆文件"
lsof |wc -l 查看所有进程的文件打开数; lsof -p pid |wc -l 查看某个进程打开的文件数
打包解包
tar -cvzf 想打包后的文件名 (必须是以. tar.gz 做为扩展名) 需要打包的目录或文件
tar -xvzf 需要解包的打包文件名(当前位置)相同文件名则直接覆盖,除非存在权限问题.
网络
zip
unzip
ifconfig -a 查看本机 ip
ping 指定的 ip 查看网络是否正常
telnet ip 端口 检查指定 ip 的指定端口是否正常
netstat -n|grep 80|grep -c EST 查看指定端口 (80) 的连接数
定时任务
crontab 定时任务
远程登录 & 传输命令
ssh 登录远程 linux 系统
scp 远程拷贝命令
wget 下载文件
wput 上传文件
curl http 命令行工具,支持文件的上传和下载
------------------------------------------ 以下为 Expect 脚本语言 ------------------------------------------
Expect 是基于 Tcl 语言开发的,并被广泛应用于交互式操作和自动化测试的场景之中.http://expect.sourceforge.net/
一些命令:
spawn 用于生成一个子进程运行命令
expect 用于期待一个字符串的出现
send 就是模拟人工输入一个字符串
登录服务器并在 / home/fun / 下建立 ww 目录
autoexpect: 这个脚本将根据自身在运行时用户的操作而生成一个 expect 脚本
#!/usr/bin/expect
#设置超时时间为 10 秒,expect 期待时间
set timeout 10
set host 192.168.1.10
set name root
set password 111111
spawn ssh $host -l $name
#是否永久保存 RSA
expect
{
"(yes/no)?"
{
send "yes\n"
expect "password:"
send "$pasword\n"
}
"password:"
{
send "$password\n"
}
}
expect "#"
send "sleep 1 &&cd /home/fun/&&mkdir ww && exit \r"
interact
exit
运行 autoexpect -p 就进入 autoexpect 创建的 shell 中,然后输入的命令交互都被记录下来,最后输入 exit 退出,expect 脚本被保存在 script.exp 中.
注: 用 root 登录 expect "#",用非 root 登录 expect "$".
来源: http://www.jianshu.com/p/382e9b94f15e