随笔分类 - bash shell
摘要:前言shell写脚本通常可以模块化,也可以功能化,例如test1.sh完成一个独立功能,test2.sh也完成一个独立的功能,但是需要test1.sh作为前提,因此为了节省执行时间,不是用crontab傻瓜似的等待,我们可以在test1.sh里调用test2.sh执行,效率会更高,这里仅仅介绍两种在一个脚本里调用另外一个脚本的方法脚本间调用首先,简单的写两个测试脚本test1.sh :#!/bin/bash echo "the first scripts"
test2.sh :#!/bin/bash 调用 test1.sh echo "second scripts
阅读全文
摘要:概述Linux Shell环境中支持输入输出重定向,用符号“<”和“>”来表示0表示标准输入1表示标准输出2表示标准错误信息输出0、1、2可以用来指定需要重定向的标准输入或输出,例如 2 > /tmp/error.txt表示将错误信息输出到文件/tmp/error.txt中/dev/nulllinux下有个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null上了如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null,例如
阅读全文
摘要:前言目前我掌握的基本语言,php(最为熟悉,项目里代码都是用其实现),bash shell(运维利器),c(acm专用),这里面能实现多线程的貌似只有c,但是我c只是用来学习和实现算法和数据结构,因此工作中我想要模拟多进程并发操作,就只能依靠bash shell脚本了技能点shell脚本里实现并发操作,需要用到for循环&后台运行符wait等待所有子进程结束思路我们可以通过写一个for循环,控制每次需要批量操作的次数,然后封装一个方法,方法里进行批量操作,并将此方法用&符号放在后台运行每个循环结束前用wait函数,确保当前批量处理操作全部完成示例我们准备批量的执行创建目录操作,
阅读全文
摘要:前言好久没写shell脚本了,今天看到群里有这么一个需求,截图如下:我也是复习一下shell脚本,就顺手写了个程序测试了一下,基本上通过了思路首先,用shell脚本按行读取文本,将每一行存入一个数组中每次选择一个随机数,来从数组中取数据注意,不能是重复的行,所以随机数有标记字段Shell脚本#!/bin/bash #文件位置
file="./test.txt"
#计数器
i=0 #按行读取文件内容,存入arr数组中
for line in $(awk '{print $0}' $file)
do arr[$i]=$line i=$(expr $i + 1)
阅读全文
摘要:定义方式下标数组直接赋值#!/bin/bash arr[0]="one"
arr[1]="two"
arr[2]="three" for num in ${arr[*]}
do echo $num
done
圆括号顺序赋值arr=("four" "five" "six") for num in ${arr[*]}
do echo $num
don执行结果关联数组前提:关联数组需要进行语法声明,参考链接:http://blog.csdn.net/zinss26914/artic
阅读全文
摘要:前言数组中判断元素是否存在的时间复杂度一般为O(n),是因为大家一般的做法都是遍历一遍数组看看所要找的数据是否存在。这里介绍一种利用key的唯一性来实现的时间复杂度为O(1)的判断元素是否存在的方法在c语言里这种方法经常使用,这里介绍在shell的语法中我们如何利用关联数组和key值唯一性来提高脚本的执行效率需求&&解决方法构建关键字数组和查找数组#构建关键字数组
for num in `seq 1 10`
do element[$num]="user_"$num
done #构建被搜索数组
for num in `seq 1 100`
do search[
阅读全文
摘要:前言用bash shell写程序时,经常会用到for循环,特别是从1到100这种需求,这里记录几种shell中从1到100的循环方法方法类c语言for ((i=1; i<=100; i ++))
do echo $i
done
in使用for i in {1..100}
do echo $i
done
seq使用作用seq - print a sequence of numbers代码for i in `seq 1 100`
do echo $i
done后记虽然这篇博客没什么技术含量,但是记录一下总是遗忘的shell语法,省得每次都去google,特别是现在FQgoogle服务都不稳定
阅读全文
摘要:前言今天qq群里有位挺厉害的大神提出了一个问题:“上海-redis-蛋疼(137795882) 17:39:37 有没有查找一个目录下面 有没有重名文件的 工具 啊”大家都知道,同一个目录下是不存在同名文件的,因此肯定要遍历子目录查找同名文件思路find命令查找所有的子目录find命令循环遍历子目录,获取所有的文件对所有的文件做去重因为是shell脚本,所以用好sort、uniq、awk等是非常方便的SHELL脚本#!/bin/bash #获取查找的目录名
if [ 'x' == 'x'$1 ]; then echo "Usage $0 search_
阅读全文
摘要:前言在线下做mysql数据分析的时候,会遇到执行shell脚本里导入sql文件到mysql数据库里或者连接mysql执行指定sql语句的情况,这里介绍一下我采用的方法导入sql文件到mysql数据库示例代码#变量定义
sqlname="test.sql"
dir="/sdb2/backup/mysql_db_backup/backup/databases"
host="127.0.0.1"
user="root"
passwd="123456"
dbname="test" #
阅读全文
摘要:需求shell脚本里我需要根据不同的ip地址做出不同的操作,因此我需要在shell脚本里获取当前主机的ip地址我需要获取到192.168.1.111这个ip地址方法1ifconfig |grep 'inet 地址'|grep '192.168.1' | grep -v 'grep' | awk '{print $2}'| tr -d "地址:"效果
阅读全文
摘要:需求临近年关整理一些脚本程序,发现一个mysql数据库备份的脚本可以和大家分享一下,基于环境是ubuntu10.04server思路获取mysql服务器所有数据库名称,过滤掉不需要备份的数据库通过mysqldump来for循环导出所有的数据库的sql文件用zip加密压缩所有的sql文件定期进行数据清理工作shell代码数据库导出代码#!/bin/bash #1.数据库信息定义
mysql_host="192.168.1.1"
mysql_user="root"
mysql_passwd="root" #sql备份目录
root_dir
阅读全文
摘要:需求今天做日志备份的时候,由于昨晚替换了备份脚本没有完全测试通过,导致了我的备份目录遭到污染,如果所示:我的需求是test1、test2、test3仅存在nginx、coreseek、apche,删除掉所有其他的文件。我可以选择手动的一个个删除,但是身为程序员,各位懂得,写了一个shell脚本,用了for+case,大家有更好的方法欢迎跟帖,肯定是有的,我提示一个find命令,哈哈,看看大家的积极程度了,有留言我肯定回复!shell脚本#!/bin/bash #1.变量定义
root="/backup/log"
dirarr=("test1" "
阅读全文
摘要:nginx日志格式access_log日志格式log_format main '$server_name$remote_addr$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$http_user_agent""$http_x_forwarded_for"';
日志参数server_name : 虚拟主机的主机名称
remote_addr :
阅读全文
摘要:前言运维是件很神奇的工作,牛逼的运维很轻松可以搞定很复杂的任务,sb的运维天天时间都耗上可能也解决不了问题(ps:因为他把时间都花在了可以重复执行的事情上)在写这篇博客之前,我google了一堆相关文章,大都是说修改/etc/sudoers,然后NOPASSWD:指定的cmd,但是真心不管用,没有远程虚拟终端这个方法就是浮云,ubuntu10.04 server 亲测!!ssh执行远程操作命令格式ssh -p $port $user@$p 'cmd' $port : ssh连接端口号
$user: ssh连接用户名
$ip:ssh连接的ip地址
cmd:远程服务器需要执行的操作
阅读全文
摘要:前言虽然是原创,毕竟自己对ubuntu的开机启动研究了整整两天,期间看鸟哥linux私房菜、研究/etc/init.d/下shell源码等等,但是不可否认看了很多国内国外的文章,最终搞定也是基于一篇不错的博客文章,这里首先进行推荐:通过update-rc.d管理ubuntu开机启动接下来,我会按照参考博客内容记录一些自己的收获(测试环境ubuntu10.04 && ubuntu12.04)Ubuntu系统运行级别0 系统停机状态1 单用户或系统维护状态2~5 多用户状态6 重新启动update-rc.d概要Linux services can be started, stopp
阅读全文

浙公网安备 33010602011771号