第一章 Unix/Linux使用技巧
1.1 环境变量
1. 连接服务器
- 中文显示
- locale -a:查看中文字符集
- export LANG = zh_CN.gb18030
- locale -gen(LINUX):生产字符集
- 乱码恢复
- echo -e ‘\xf’:乱码恢复
- echo -e ‘\xe’:变成乱码
- 使用Zmodem协议传输文件
- sz发送,rz接受
- yun install -y lrzsz
2. shell
- bash使用技巧:
- “tab”见补全
- 上下箭头回朔历史命令
- 左右箭头移动光标
- History查看实例命令
- ![number]直接执行历史命令
- ^old^new替换刚才命令中的字符
- clear 或者 CTRL+L
- cd or cd ~:回到home
3. 环境变量
- 生命周期
- 永久:文件中
- 临时:当前session中export
- 范围
- 系统全局
- 用户自定义
- 设置环境变量
- export JAVA_HOME=/home/app/jdk 1.6/ (=号前后不能有空格)
- /etc/profile、/etc/bash.bashrc (全局)
- ~/.bash_profile、~/.bash_login、./profile、/~.bashrc
- /~.bash_logout
- source 文件名:文件生效
- 显示
- echo $
- env
4. 环境变量PATH
- 提供命令的搜索路径
- which java
- 自己的脚本放进PATH
- $HOME/bin
- ln -s
- export PATH=$JAVA_HOME/bin:$PATH
5. 环境变量LD_LIBRARY_PATH
- 动态库的查找路径
- LD_LIBRARY_PATH/SHLIB_PATH
- man ld.so:看自己的系统依赖哪个环境变量
- /etc/ld.so.conf / ldconfig
- ldd:显示动态库依赖
6. 环境变量PS1
- shell提示符
- #:root
- $:普通用户
- PS1="[\u@\h \w]$"
- 当前是在哪台主机上,使用哪个用户,在哪个目录下
- echo $PS1
- man bash:搜索PSI获取变量定义
7. 别名alias
- alias:显示当前定义的别名
- alias tomcat_start=’ sh /home/app/ tomcat/bin/start.sh’
- tomcat_start
- alias tomcat_start
- alias rm=’ rm -i’
- alias ll=’ ls -l’
1.2 基础命令
1. 认识自己
- id
- id root
- pwd
2. 认识命令
- man
- help
3. 了解系统概况
- 系统版本:cat /etc/redhat-rdlease ; uname -a
- CPU信息:cat /proc/cpuinfo ; lscpu
- 内存信息:cat /proc/meminfo ; free
- 网卡信息:ifconfig ; ip addr ; ethtool eth0
- 磁盘信息:df -h ; df -k
- 主机名:hostname
- cpu性能:superpi
- 磁盘性能:fio
- 网络性能:iperf
4. ulimit
- 用来限制进程对资源的使用情况
- ulimit -a:列出当前用户的限制情况
- -n size:设置内核可以同时打开的文件描述符的最大值,单位:n
- -f size:设置创建文件的最大值,单位:blocks
- -m size:设置可以使用的常驻内存的最大值,单位:kbytes
- -u size:设置用户的最大进程数,单位:n
- /etc/security/limits.conf
5. 软件的安装卸载
- rpm:软件之间有依赖
- rpm -ivh:安装
- rpm -e:卸载
- rpm -qa:查是否装
- yum
- yum install
- yum remove
- yum search
- yum repolist:仓库
- /etc/yum.repos.d/
6. su
- 切换用户
- su root
- su -root --切换用户,改变环节变量
- su -username
- su -username -c command
- sudo
- visudo -root执行
7. ps
8. kill
9. date
10. 网络
- netstat -pan
- ping
- telnet ip port
- ssh user@host
11. 系统负载
- top
- iostat
- vmstat
- nmon
- atop
- dstat
- sar
1.3 文件类型
- 文件类型:普通、设备、管道、网络接口。。。
- 文件时间属性
- modification time(mtime,修改时间)
- access time (atime,访问文件)
- change time(ctime,属性或位置修改时间)
- 确认文件类型
- ls -l
- ls -a
- file file_name
- stat file_name
- 权限变更
- chown --chown [-R] user [:grp] file…
- chmod [ugoa]*([-+=])[rwxXst]* | [ugo]))+
- 700\755
1.4 文本文件操作
1.5 文本编辑和crontab
第二章 shell脚本(B shell)
1. shell语法
1. 基本变量
- 普通变量:
var=1:赋值
echo $var:$表示引用 - 数组:
a=(1 2 345 abc)
$(a[0]) - 操作
- a=123; b=abc
- c=KaTeX parse error: Expected '}', got '#' at position 2: {#̲a}; 【取a的值的长度】 …{a:2:1} 【从a中第二个位置取一个元素】
- d=$((a*2))
- c=" abc $a" 【字符串拼接】
2. 分支
- 语法
if [ 比较运算 ]
then
...
elif [ 比较运算 ]
then
...
else
...
fi
case 变量 in
表达式1) ...
;;
表达式2) ...
;;
*) ...
;;
esac
- 比较运算
- 字符串:等于或不等于
- [ “$a” = “abc” ]
- [ “$a” != “abc” ]
- [[ “$a” > ‘def’ ]] # ksh 2.0后扩展支持字符串比较和正则表达式
- [[ $a =~ ^a ]]
- 数组:-eq、-ne、-gt、-ge、-lt、-le
- 逻辑:&&、||
- 文件比较
- 字符串:等于或不等于
3. 循环
# for循环
for 变量名 in [ 数值列表 ]
# do循环
do
...
done
# while循环
while(until)
do
...
done
# 控制
break
continue
4. 函数
- 数学运算,只支持整型(浮点型自动取整,字符串取0)
$((…)) - 内置函数
echo 输出、shift 删除命令行参数第一个、read 读输入、exit 退出 - 自定义
function name
{
…
} - UNIX命令
cut、sed、awk、wc、grep、expr - 引号
- 双引号:转化变量,避免命令行解析特殊字符
- 单引号:不转换,直接用字符串本身
- 执行:符号为``,作用是执行,返回结果。包含在双引号内也可以被执行
5. 输入输出
- 输出输入
- >:输入到一个文件,没有就创建、有就覆盖
- <:从一个文件读数据
- >>:追加到一个文件,没有就不操作,有就追加
- <<:一直读到后面的字符串
6. 特殊变量
2. 案例:get_cdr.sh
# 从etl主机取(话费)详单
# 详单文件小而且多,有些被压缩了
# 取到本地后还有后续进程继续处理
# 取一个时间段(天)的详单文件
# 话单文件提取核心语句
# 方式一
ftp -n $host_name << EOF
User $ftp_user $ftp_pass
bin
cd $cdr_dir
prom
mget $file_name
Quit
EOF
# 方式二
wget ftp://$host_name//$cdr_dir/$file_name
第三章 MySQL
3.1 安装
3.2 sql命令
- show databases;
- use 表名;
- show tables;
- desc 表名:显示表结构
3.2 日期数据类型
- select date_format(now(),"%Y-%m-%d %H:%i:%s"):转换日期类型,now()表示当前时间,后面的表示显示方法为“年月日 时分秒”