Shell【常用知识总结】
一.常用知识总结
1.特殊变量($0,@,#,*,?)
$0:当前脚本的文件名。
$n:n是一个数字,表示第几个参数。
$#:传递给脚本或函数的参数个数。
$*:传递给脚本或函数的所有参数。当被双引号""包含时,会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
$@:传递给脚本或函数的所有参数。当被双引号""包含时,仍然将每个参数都看作一份数据,彼此之间是独立的。。
$?:上个命令的退出状态,或函数的返回值。
$$:当前Shell的进程ID。对于Shell脚本,就是这些脚本所在的进程ID。
2.将date转为指定格式:date +%F
3.常用的字符(,'',"",``)
反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
单引号(’’):转义其中所有的变量为单纯的字符串。
双引号(""):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。
4.流程控制语句(if,for,case,while)
# if判断
if [[ condition ]]; then
do some thing;
elif [[ condition ]]; then
do some thing;
else
do some thing;
fi;
#判断 if 条件的`[ "3" = "3" ]`是否正确,
#在黑窗口可以使用 `&&`命令看控制台:[ "3" = 3 ] && echo ok
# for循环
for i in $(seq 10); do
do some thing;
done;
# while循环
i=10;
while [[ $i -gt 5 ]];do
echo $i;
((i--));
done;
# case匹配
case $1 in
start | begin)
echo "start something"
;;
stop | end)
echo "stop something"
;;
*)
echo "Ignorant"
;;
esac
5.文件、文件夹是否存在
#判断文件夹是否存在
if [ -d "/data/" ]
#判断文件是否存在
if [ -f "/data/filename" ]
6.经验之谈
①在过滤的时候会用到grep, 但是如果不忽略自身脚本继而执行某些(删除)命令,会把当前脚本杀掉
ps -ef | grep mysqld | grep -v grep | awk '{print $2}' | xargs kill -9
②不想在终端看到命令的输出可以把输出重定向到/dev/null
命令行 > /dev/null 2>&1 &
③前台、后台任务
& 标识将命令放入后台执行,不占用终端显示。
jobs 能看到所有前、后台命令。
ctrl + z 可以把任务转移到后台,并且暂停执行。
fg 将后台的命令调至前台。
bg 将一个后台的命令变成继续执行。
④输入、输出的重定向
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
符号 作用 命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
符号 作用 命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件
二.脚本总结
1.jar启停脚本
#!/bin/bash
# 群起nginx和日志服务器 停止
log_home=/opt/module/gmall-logServer/
case $1 in
"start")
# 启动nginx
echo "在hadoop102启动nginx"
sudo /usr/local/webserver/nginx/sbin/nginx
for host in hadoop102 hadoop103 hadoop104 ; do
echo "在$host 启动日志服务器"
ssh $host "source /etc/profile; nohup java -jar $log_home/gmall-log-0.0.1-SNAPSHOT.jar >${log_home}/logs/server.log 2>&1 &"
done
;;
"stop")
echo "在hadoop102停止nginx"
sudo /usr/local/webserver/nginx/sbin/nginx -s stop
for host in hadoop102 hadoop103 hadoop104 ; do
echo "在$host 停止日志服务器"
ssh $host "source /etc/profile; jps | awk ' /gmall-log-0.0.1-SNAPSHOT.jar/ {print \$1}' | xargs kill -9"
done
;;
*)
echo "你启动的姿势不对"
echo " log.sh start 启动nginx和日志服务器"
echo " log.sh stop 停止nginx和日志服务器"
esac
2.分发脚本
xsync
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
3.常用技能
1.脚本中kill进程
java进程可以用jps过滤kill
jps | awk ' /gmall-log-0.0.1-SNAPSHOT.jar/ {print \$1}' | xargs kill -9
其他进程可以用ps过滤kill
ps -ef | grep bigdata-kafkasource-hdfs | grep -v grep |awk '{print \$2}'|xargs -n1 kill -9
注意:ps -ef | grep “过滤关键词” 不要和 脚本.sh的名称一样,不然会把脚本也杀掉,脚本的命令也就无法执行了
2.后台启动jar
nohup java -jar $log_home/gmall-log-0.0.1-SNAPSHOT.jar >${log_home}/logs/server.log 2>&1 &"
3.启动脚本前最好执行下“source /etc/profile”
Shell【常用知识总结】的更多相关文章
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- Linux Shell 基础知识(一)
1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【shell 大系】Linux Shell常用技巧
在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...
- Linux系统重要快捷键& Shell 常用通配符
[Tab]:使用Tab键来进行命令补全: [Ctrl+c]:强行终止当前程序: [Ctrl+d]:键盘输入结束或退出终端: [Ctrl+s]:暂定当前程序,暂停后按下任意键恢复运行: [Ctrl+z] ...
- shell 常用正则
shell常用正则表达式 “^\d+$” //非负整数(正整数 + 0) “^[0-9]*[1-9][0-9]*$” //正整数 “^((-\d+)|(0+))$” //非正整数(负整数 ...
- Hbase Shell常用命令
hbase shell常用的操作命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,通过h ...
- (转)Hbase shell 常用命令(1)
Hbase shell 常用命令(1) link:http://blog.csdn.net/scutshuxue/article/details/6988348 下面我们看看HBase Shell的一 ...
- hbase基本概念和hbase shell常用命令用法
1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...
随机推荐
- CPU使用率和平均负载
转载: https://mp.weixin.qq.com/s?__biz=MzU4NzU0MDIzOQ==&mid=2247487782&idx=3&sn=3f04bb053d ...
- Shooting Bricks题解
题目传送门 以后我绝对不会一直磕着一道题磕几个小时了...感觉还是自己节奏出了问题,不知为啥感觉有点小慌... 算了,其实再回头仔细看一下这个题dp的思路还是比较好想出来的,打代码之前一定要做好足够的 ...
- hdu 4771 Stealing Harry Potter's Precious (BFS+状压)
题意: n*m的迷宫,有一些格能走("."),有一些格不能走("#").起始点为"@". 有K个物体.(K<=4),每个物体都是放在& ...
- 从ACID到CAP及BASE
从ACID到CAP及BASE ACID 说到事务,肯定想到事务的ACID特性,即原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durabilit ...
- 原生css实现fullPage的整屏滚动贴合
目录 1,前言 2,效果展示 3,属性说明 3.1 scroll-snap-type 3.2,scroll-snap-align 4,实际使用 4.1,兼容性 1,前言 今天摸鱼的时候,发现一个很有意 ...
- vue事件绑定
事件绑定 vue官方文档:<https://cn.vuejs.org/v2/guide/events.html#%E4%BA%8B%E4%BB%B6%E4%BF%AE%E9%A5%B0%E7%A ...
- 解决tomcat的404问题
遇到的问题 点击startup.bat启动tomcat启动成功,但在网页上输入local:8080却显示Access Error: 404 -- Not Found Cannot locate doc ...
- 大白话讲解Mybatis的plugin(Interceptor)的使用
mybatis提供了一个入口,可以让你在语句执行过程中的某一点进行拦截调用.官方称之为插件plugin,但是在使用的时候需要实现Interceptor接口,默认情况下,MyBatis 允许使用插件来拦 ...
- [bzoj1177]Oil
考虑将三个矩形按某种方式划分为再三个大矩形中找最大值,容易发现只有6种划分方式,分为两类:1.4种,考虑第一条横/竖和第二条在第一条的两侧,这一类情况只需要预处理出左上/左下/右上/右下的最大子矩阵即 ...
- [Git专题] 环境搭建
环境搭建 在正式使用 Git 之前,首先应当安装 Git 并完成一些基础配置,本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法. 安装 Git 客户端 如果你使用的是基于 D ...