精华内容
参与话题
问答
  • 背景:redis启动服务,需要每次进入redis安装目录:redis-server /etc/redis/redis.conf,有不便,不如写shell脚本,加入chkconfig服务列表,设置开机自启,或是便捷的随处皆可启动服务:service redisd start/...

    背景:redis启动服务,需要每次进入redis安装目录:redis-server  /etc/redis/redis.conf,多有不便,不如写shell脚本,加入chkconfig服务列表,设置开机自启,或是便捷的随处皆可启动服务:service redisd start/stop。

    #!/bin/sh
    # chkconfig:   234 90 10
    # Simple Redis init.d script conceived to work on Linux systems
    
    #redis服务器监听的端口,默认内网接口6379,如果是redis集群,可以更改避免冲突
    REDISPORT=63790
    
    #服务端所处位置
    EXEC=/data/redis/bin/redis-server
    
    #客户端位置
    CLIEXEC=/data/redis/bin/redis-cli
    
    #redis的PID文件位置,需要修改
    PIDFILE=/var/run/redis_${REDISPORT}.pid
    
    #redis的配置文件位置,需将${REDISPORT}修改为文件名
    CONF="/etc/redis/${REDISPORT}.conf"
     
    case "$1" in
        start)
            if [ -f $PIDFILE ]
            then
                    echo "$PIDFILE exists, process is already running or crashed"
            else
                    echo "Starting Redis server..."
                    $EXEC $CONF
            fi
            ;;
        stop)
            if [ ! -f $PIDFILE ]
            then
                    echo "$PIDFILE does not exist, process is not running"
            else
                    PID=$(cat $PIDFILE)
                    echo "Stopping ..."
                    $CLIEXEC -p $REDISPORT shutdown
                    while [ -x /proc/${PID} ]
                    do
                        echo "Waiting for Redis to shutdown ..."
                        sleep 1
                    done
                    echo "Redis stopped"
            fi
            ;;
        *)
            echo "Please use start or stop as first argument"
            ;;
    esac

    Tips:设置开机自启,在脚本头加入如下配置
    !/bin/sh
    # chkconfig:   234 90 10
    chkconfig  --add redisd
    service redisd  on  / off  开机自启/关闭
    service redisd stop /start

    Redis清理缓存:
    1.访问redis根目录    cd  /usr/local/redis-2.8.19
    2.登录redis:redis-cli -h 127.0.0.1 -p 6379
    3.查看所有key值:keys *
    4.删除指定索引的值:del key
    5.清空整个 Redis 服务器的数据:flushall 
    6.清空当前库中的所有 key:flushdb 

    展开全文
  • 公司接了一个项目,给了外包来做,从做好到提测,终于要部署环境,可是问题也来了,竟然不能docker镜像部署,并且依赖的jar包运行还...下面是shell脚本示例:从中学到了命令、文件、变量、文件夹等if条件判断,以及&...

    公司接了一个项目,给了外包来做,从做好到提测,终于要部署环境,可是问题也来了,竟然不能docker镜像部署,并且依赖的jar包运行还会报错,好在是一个maven的项目,那么只能自己手动打包,初期bug比较多,每次回归都要敲一堆重复的命令,很是繁琐,不得已还是得想一个一劳永逸的方案,这时shell的亮点就突出了。 

    下面是shell脚本示例:从中学到了命令、文件、变量、文件夹等if条件判断,以及>日志从定向输出,还有&后台执行jar:

    #!/bin/sh
    
    propid=`ps -aux|grep 项目jar名 |grep -v grep| awk ' {print $2} '`
    
    # $?判断上一个命令是否成功, 成功返回0,其他则失败,其实就是有数据返回
    # -n "${var}" 判断非空字符
    
    if [ -n "${propid}" ];then
    	echo "存在进程: ${propid}"	
    	kill -9 ${propid}
    	echo "杀死进程:${propid}"
    else
    	echo "进程不存在"
    fi
    
    # shell脚本的命令最好不要使用别名命令
    dirnum=`ls /tmp/ |grep tomcat |wc -l`
    
    if [ ${dirnum} -gt 0 ];then
    	echo "存在${dirnum}个tomcat目录"
    	cd /tmp
            ls |grep tomcat |xargs rm -fr
    	echo "删除tomcat*目录"
    else
            echo "不存在tomcat目录"
    fi
    
    if [ -d "/data/git clone下的工程目录" ];then
       echo "存在并进入目录:/data/git clone下的工程目录"
       cd /data/git clone下的工程目录
    else
       echo "目录不存在,不必创建,只需要在/data/目录下git clone git地址"
    fi
    
    # 进入木查看当前git分支,如果不是要pull的分支,则重新拉取,也可以使用命令直接切换需要的分支
    # read -p
    
    git pull > /data/git.log 
    
    if [ $? -eq 0 ];then
    	echo "进入目标目录mvn构建项目"	
    	cd  "工程目录"
    	mvn clean package -Dmaven.test.skip=true
    	echo "打包完成"
    else
    	echo "代码为最新"
    fi
    
    if [ -f "/data/项目路径target下的xxx.jar" ];then
    	echo "jar文件存在,进入目标目录启动应用"
    	cd  直接进入存在的target目录下
    	nohup java -jar xxx.jar >/data/logsserver.log 2>&1 &
    	pidnum=`ps -aux|grep 项目jar名 |grep -v grep |awk '{print $2}'`
    	echo "启动进程为:${pidnum}"
    
    else
    	echo "执行mvn package,可能打包失败,jar文件不存在"
    fi

     

    展开全文
  • 1."" '' ``的区别,“”中的变量会被解析 ‘’中所有的都被当成字符串 ``执行系统命令 2....父Shell中要使用子Shell中的变量,必须用export将变量设置为全局变量 5.常用的环境变量 6.用户工作环境,一种是...

       1."" '' ``的区别,“”中的变量会被解析    ‘’中所有的都被当成字符串    ``执行系统命令

       2.自定义的变量默认是局部变量,环境变量是全局变量。

       3.export可以把一个或者多个变量设置为全局变量

       4.父Shell中要使用子Shell中的变量,必须用export将变量设置为全局变量

       5.常用的环境变量

       203203177.png

       6.用户工作环境,一种是系统环境设置文件,一种是个人环境设置文件。系统中用户工作环境设置文件有    (1)登录环境设置文件:/etc/profile    (2)非登录环境设置:/etc/bashrc

           用户设置的环境设置文件,登录环境设置文件$HOME/.bash_profile    非登录环境设置文件:$HOME/.bashrc。系统环境设置文件对所有用户生效,而用户环境设置文件只对指定用户生效。

       7.Shell脚本中锁包含的有注释,命令,Shell变量以及结构控制语句

       8.执行shell脚本的方法(1)$bash script_file        (2)chmod u+x script_file script_file

       9当执行一个脚本的时候,Shell就会产生一个子Shell去执行文件。

       10.sShell脚本的开头,#!/bin/bash        告诉系统用什么解释器去执行脚本

       11变量替换扩展

       ${var-DEFAULT}    如果var没有声明,则用DEFAULT作为其值

       ${var:-DEFAULT}    如何var未声明或者为空,则其值为DEFAULT

       ${var=DEFAULT}     同${var-DEFAULT}

       ${var:=DEFAULT}    同${var:-DEFAULT}

       ${var+OTHER}        如果var被声明了,则值为OTHER,否则为空

       ${var:+OTHER}    如果var被声明或者不为空,则值为OTHER

       ${!varprefix*}        匹配之前所有以varprefix开头的变量

       ${!varprefix*}        同${!varprefix*}

       12.变量的字符串操作

           204841915.png


       13.Shell数值计算符号((...))

       14.read    [参数] [<变量名>...]read是在Shell弹出一个询问的语句,将回答保存在指定的变量中。-p设置提示信息 -t设置输入等待秒数

       15.条件测试,bash允许在一个命令行上执行多条命令,;间隔每条命令,&&前面的名称执行成功才执行后面的命令,||前面的命令执行失败则执行后面的命令,


    footer.jpg

    转载于:https://blog.51cto.com/a3147972/1283835

    展开全文
  • 在window环境,在pycharm中写python脚本,执行shell脚本命令,但因为是window操作系统,语法稍有变化,这是我在做向kafka中发送短信信息时发现的小坑,在window上测试发现的,测试好了后,才改成liniux版本,发布到...
  • 批量备份个数据库#!/bin/bashBACKUP_HOST="localhost"BACKUP_USER="root"BACKUP_PASS="123456"BACKUP_DIR="/backup/mysql"BACKUP_DBNAME="one two three"COPIES=10MYSQLDUMP="mysqldump"TIMEPOINT=$(date +%Y-%m.....

    批量备份多个数据库

    #!/bin/bash

    BACKUP_HOST="localhost"

    BACKUP_USER="root"

    BACKUP_PASS="123456"

    BACKUP_DIR="/backup/mysql"

    BACKUP_DBNAME="one two three"

    COPIES=10

    MYSQLDUMP="mysqldump"

    TIMEPOINT=$(date +%Y-%m-%d)

    MYSQLDUMP_OPTS="-h $BACKUP_HOST -u$BACKUP_USER -p$BACKUP_PASS"

    umask 0077

    test ! -d "$BACKUP_DIR" && mkdir -p "$BACKUP_DIR"

    test ! -w $BACKUP_DIR && echo "Error: $BACKUP_DIR is un-writeable." && exit 0

    for dbname in $BACKUP_DBNAME

    do

       test ! -d "$BACKUP_DIR/$dbname" && mkdir -p "$BACKUP_DIR/$dbname"

       $MYSQLDUMP $MYSQLDUMP_OPTS $dbname | gzip > $BACKUP_DIR/$dbname/$dbname.$TIMEPOINT.sql.gz

    done

    find $BACKUP_DIR -type f -mtime +$COPIES -delete


    网站目录备份

    #!/bin/bash

    BACKUP_DIR=/backup/website

    WEBSITE_DIR=/www

    TIMEPOINT=$(date +%Y-%m-%d)

    COPIES=10

    test ! -d "$BACKUP_DIR" && mkdir -p "$BACKUP_DIR"

    test ! -w $BACKUP_DIR && echo "Error: $BACKUP_DIR is un-writeable." && exit 0

    umask 0077

    tar -zcf $BACKUP_DIR/www.$TIMEPOINT.tar.gz $WEBSITE_DIR

    find $BACKUP_DIR -type f -mtime +$COPIES -delete


    目录rsync同步(需先安装配置rsync)

    #!/bin/sh

    srcdir1=/www/example1.com

    srcdir2=/www/example2.com

    dstdir3=jszb@111.111.111.111::example1

    dstdir4=jszb@222.222.222.222::example2

    rsync -avz --delete --progress --password-file=/backup/bash/rsync.pas $srcdir1 $dstdir3 &

    rsync -avz --delete --progress --password-file=/backup/bash/rsync.pas $srcdir2 $dstdir4 &


    nginx日志切割

    #!/bin/bash

    logs_path="/usr/local/webserver/nginx/logs/"

    mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/

    mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log

    kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`


    转载于:https://blog.51cto.com/4259679/2400935

    展开全文
  • 还是来一句牢骚:虽然用得不是很熟练,但好在有笔记啊,脑海里有印象,然后翻笔记,也好去问东问西、问度娘,做自己的百科全书!闲话少叙...... 1、scp远程服务器拷贝文件 scp file username@serverid:path,...
  • shell脚本一键安装JDK及配置环境变量

    千次阅读 2019-07-25 09:19:17
    然而每次都要安装JDK,配置环境变量,这样的事情对于刚接触linux的人来说是很乐意做的,但是接触了,总是做这样的事情没有意思,同时,这个简单的脚本最主要的是练习一下自己的shell编程。 只需要执行一条命令...
  • 问题描述:这几天室友遇到一个麻烦,他写的一个shell脚本在事件触发时总是被执行次而出错,他想要控制脚本的执行次数,即每次触发仅执行一次就行了。懒得去研究为什么被次触发,希望仅仅在脚本内部写几行代码便...
  • 思路:通过shell脚本 1、新建bash_test.sh 2、编辑 #!/bin/bash nohup python3 -u run0001.py >./out/0001.out & nohup python3 -u run0002.py >./out/0002.out & 说明:nohup加在一个命令的最前面,...
  • 在网上针对shell脚本ping监控主机是否存活的文档很,但大多都是ping一次就决定了状态,误报率会很高,为了精确判断,ping三次不通再发告警,只要一次ping通则正常。于是,今天中午抽出点时间总结了下面脚本。脚本...
  • 开发过程中,很时候需要shell脚本的支持某些系统层面的命令执行,譬如生成RSA秘钥文件等,这时候往往需要从高级语言中直接调用Shell脚本,完成命令执行,本文以一个例子为线索简单介绍一下如何实现在java中对系统...
  • 日志系统 linux系统如何查看日志? 查看日志命令有常用的tail、more、less、grep、cat等都能查看日志,各有千秋 ...1、tail命令带参数-f logfile 默认输出10行,...4、grep与上面的命令组合使用,过滤关键字日志...
  • Linux环境使用Shell脚本安装Mysql5.6

    千次阅读 2019-04-03 23:27:48
    之前在Linux上安装Mysql总是花费很时间,一行一行执行命令,很是繁琐,所以决定写个脚本提升下效率,这个脚本是基于Mysql5.6版本写的,后续版本不适用,但是如果自己能看懂脚本的可以稍加修改,如果有需要其他版本...
  • 主要介绍了一个简洁的全自动安装LNMP服务器环境Shell脚本分享,本文脚本在生产环境上使用了一年,脚本代码简单唯美,需要的朋友可以参考下
  • 当一个Shell脚本启动时,一些变量可以通过环境变量进行初始化。这些环境变量通常都是大写的,用于和脚本中的变量(通常都是小写)区分。 环境变量的值可以由用户设定,下面是一些常用的环境变量: $HOME: 当前用户...
  • 维护个数据库,又没有EM,在各个数据库之间来回切换很是麻烦, ... 今天参照一些资料写了如下的shell脚本。主要来讲dba的账户密码,ORACLE_SID都以环境变量的形式注入,然后在当前session中可以灵活的...
  • 以Linux系统为例,linux系统里面有很个命令,脚本可以是一个或者个命令的集合,通过运行...shell与批处理的比较:Linux环境下有个脚本语言叫做shell,一般的,shell脚本文件以.sh结尾,.sh并没有什么实际作用...
  • 高级Shell脚本编程

    2013-10-28 10:08:19
    32.1. 非官方的Shell脚本编写风格 33. 杂项 33.1. 交互与非交互式的交互与非交互式的shell和脚本 33.2. Shell包装 33.3. 测试和比较: 一种可选的方法 33.4. 递归 33.5. 将脚本"彩色化" 33.6. 优化 33.7. ...
  • shell脚本实现进程

    2019-05-27 00:25:09
    从事Linux主机建设和运维的同事们在工作中应该经常会遇到批量修改配置信息或部署应用环境的需求,需要根据需求依次登录目标主机执行一些命令或脚本,使用shell脚本的循环语句是实现这一需求最直观方式。但是普通的...
  • 1.背景----在日常的工作中,为了设置一大批环境变量,我们通常编辑了一个shell程序,包含了个的变量设置,然后运行它。如何运行它呢?通常我们用$.cbpsprofile命令,确实改变了当前shell环境变量;而直接运行该shell...
  • 背景 目前团队刚组,环境部署一片...反正为了自己方便花了1个小时搭建了一个临时环境shell脚本。 准备工作 jdk运行环境 gitlab安装 maven安装 项目 编写脚本 #!/bin/bash DEPLOY_PATH="/home/micro-pool/" APP
  • Linux环境下c语言程序执行shell脚本

    千次阅读 2013-12-27 16:08:29
    同一个Linux服务器上,多人在同时使用,假如开发了一个shell脚本(名字为getcode.sh),大家在任何目录下都有可能会需要使用到,那么这种情况最好考虑写一个linux c语言的可执行程序(名为getcode),由这个c程序来...
  • Mac环境Shell脚本编译最新版ffmpeg-4.2.1 FFmpeg简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序 FFmpeg是一个多媒体视频处理工具,有非常强大的功能,包括视频采集功能、...

空空如也

1 2 3 4 5 ... 20
收藏数 1,306
精华内容 522
关键字:

多环境shell脚本