-
运行BAT批处理脚本,运行目录切换到脚本所在目录
2019-09-21 09:08:57目的:为WorkstationTimeService.exe 系统服务安装设计了一个安装脚本,安装系统服务,然后启动服务。 安装该脚本必须使用管理员权限。 运行的结果如下: 可以看到当前运行的目录是系统的system32目录...安装系统服务,必须使用到系统管理员权限才能进行安装注册。运行bat批处理安装脚本,需要将bat的运行目录切换到脚本文件所在的目录。这是可以使用命令:cd /d %~dp0
目的:为WorkstationTimeService.exe 系统服务安装设计了一个安装脚本,安装系统服务,然后启动服务。
安装该脚本必须使用管理员权限。
运行的结果如下:
可以看到当前运行的目录是系统的system32目录,必须将当前运行目录切换到安装脚本的所在目录。需要在脚本最前面添加一行:cd /d %~dp0
运行结果如下:
cd /d %~dp0命令是切换运行目录到脚本所在的目录。
参数解释1:关于“/d”参数
关于cd的/d参数,在cmd中敲入cd /? ,可以看到/d参数的解释如下:
使用 /D命令行开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。
参数解释2:关于“ %~dp0 ”的批处理命令的详细解释
%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录。
选项语法:
~0 - 删除任何引号("),扩充%0,
%~d0 - 仅将%0扩充到一个驱动器号,
%~p0 - 仅将%0扩充到一个路径。 -
linux脚本监控nginx服务并设置自动启动
2020-06-10 12:57:09linux脚本监控nginx服务并设置自动启动一、 编写脚本nginx_check.sh二、设置定时任务 一、 编写脚本nginx_check.sh 本次nginx通过源代码编译...脚本所在目录:/etc/nginx 日志所在目录:/etc/nginx/nginx.check.lolinux脚本监控nginx服务并设置自动启动
一、 编写脚本nginx_check.sh
-
本次nginx通过源代码编译安装,nginx运行程序所在位置为:/usr/local/nginx/sbin/nginx
-
nginx使用的端口是8080,通过判断端口8080是否存在,从而判断nginx是否正常运行,如果服务停止,则启动nginx
-
脚本所在目录:/etc/nginx
-
日志所在目录:/etc/nginx/nginx.check.logs/
-
编写脚本:vim nginx_check.sh,脚本内容如下:
vim nginx_check.sh
#!/bin/bash date=`date +%Y-%m-%d` date_time=`date +%Y-%m-%d_%H:%M:%S` logs_back=/etc/nginx/nginx.check.logs logs_file=$logs_back/$date.nginx.check.logs mkdir -p /etc/nginx/nginx.check.logs touch $logs_file nginx_port=`netstat -nlt |grep 8080 |awk '{print $4}'| cut -d : -f 2` echo "" >> $logs_file echo "------------------Time Now: $date_time--------------------" >> $logs_file echo "nginx_port:$nginx_port" >> $logs_file if [ "$nginx_port" = "8080" ];then echo "------------------Time Now: $date_time--------------------" >> $logs_file echo "------------------ps -ef |grep nginx --------------------" >> $logs_file ps -ef |grep nginx >> $logs_file echo "------------------result------------------" >> $logs_file echo 'nginx server is running!!' >> $logs_file echo "------------------result------------------" >> $logs_file else echo "------------------Time Now: $date_time--------------------" >> $logs_file echo "------------------result------------------" >> $logs_file echo 'Nginx server is stopped!!' >> $logs_file echo "------------------result------------------" >> $logs_file echo '------------------start nginx : /usr/local/nginx/sbin/nginx------------------' >> $logs_file /usr/local/nginx/sbin/nginx >> $logs_file nginx_start_port=`netstat -nlt |grep 8080 |awk '{print $4}'| cut -d : -f 2` echo "nginx_start_port:$nginx_start_port" >> $logs_file if [ "$nginx_start_port"="8080" ];then echo "------------------Time Now: $date_time--------------------" >> $logs_file echo "------------------ps -ef |grep nginx --------------------" >> $logs_file ps -ef |grep nginx >> $logs_file echo "------------------result------------------" >> $logs_file echo 'Nginx service started Successfully!' >> $logs_file echo "------------------result------------------" >> $logs_file else echo "------------------Time Now: $date_time--------------------" >> $logs_file echo "------------------result------------------" >> $logs_file echo 'Nginx service started Failed!' >> $logs_file echo "------------------result------------------" >> $logs_file fi fi
-
设置脚本权限:chmod 777 nginx_check.sh
chmod 777 nginx_check.sh
二、设置定时任务
- 使用crontab定时任务,使用root用户,编写定时任务,该任务每隔两分钟执行一次
crontab -e
- 添加内容
*/2 * * * * sh /etc/nginx/nginx_check.sh
- 查看日志:
重启nginx服务器日志:cat nginx.check.logs/2020-06-10.nginx.check.logs
nginx服务运行中日志:
- 使用crontab定时任务,使用root用户,编写定时任务,该任务每隔两分钟执行一次
-
-
Springboot项目maven包工程打包linux服务器启动、停止、重启shell脚本
2019-01-10 19:16:17# Java程序主体所在的目录,即classes的上一级目录 APP_NAME=teleinfo-doi-web.jar # JVM启动参数 # -server:一定要作为第一个参数,多个CPU时性能佳 # -Xloggc:记录GC日志,建议写成绝对路径,如此便可在任意...搭建项目
- src
- bin
- run.sh
- main
- pom.xml
- bin
配置pom文件
<build> <finalName>${project.artifactId}</finalName> <plugins> <!--拷贝依赖 copy-dependencies--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${project.build.directory}/deploy/lib/ </outputDirectory> </configuration> </execution> </executions> </plugin> <!-- 拷贝资源文件 copy-resources--> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources> <resource> <directory>src/bin</directory> </resource> </resources> <outputDirectory>${project.build.directory}/deploy/bin</outputDirectory> </configuration> </execution> <execution> <id>copy-classes</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources> <resource> <directory>${project.build.directory}/classes</directory> </resource> </resources> <outputDirectory>${project.build.directory}/deploy/classes</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
配置启动脚本run.sh
- 创建脚本run.sh,内容如下
- 修改MAIN_CLASS为启动类名称
常用执行命令
./run.sh start 启动
./run.sh stop 停止
./run.sh restart 重启
./run.sh status 查看启动状态#!/bin/bash # 根目录 PACKAGE_HOME=$(cd "$(dirname "$0")";cd ..;pwd) # Java程序主体所在的目录,即classes的上一级目录 MAIN_CLASS=cn.teleinfo.bussiness.embed.NbmsWebApp # PID文件位置 PID_LOCATION=$PACKAGE_HOME/bin/.pid PID_LOCAL=0 # 日志的默认输出目录 LOG_DIR=$PACKAGE_HOME/logs LOG_BASE_NAME=debug.log # JVM启动参数 # -server:一定要作为第一个参数,多个CPU时性能佳 # -Xloggc:记录GC日志,建议写成绝对路径,如此便可在任意目录下执行该shell脚本 JAVA_OPTS=${JVM_OPTS:-"-server -Xms1024m -Xmx2048m -Xloggc:$LOG_DIR/gc.log"} # classpath CLASSPATH="${PACKAGE_HOME}/classes:${PACKAGE_HOME}/lib/*" # 初始化全局变量,用于标识交易前置系统的PID(0表示未启动) tradePortalPID=() # 获取Java应用的PID # ------------------------------------------------------------------------------------------------------ # 说明:通过JDK自带的jps命令,联合Linux中的grep命令,可以准确查找到Java应用的PID # [jps -l]表示显示Java主程序的完整包路径 # awk命令可以分割出PID($1部分)及Java主程序名称($2部分) # 例子:[$JAVA_HOME/bin/jps -l | grep $MAIN_CLASS]命令执行,会看到[5775 com.cucpay.tradeportal.MainApp] # 另外:这个命令也可以取到程序的PID-->[ps aux|grep java|grep $MAIN_CLASS|grep -v grep|awk '{print $2}'] # ------------------------------------------------------------------------------------------------------ function getTradeProtalPID(){ tradePortalPID=(`ps x | grep $MAIN_CLASS | grep -v grep | awk '{print $1}'`) } # 启动Java应用程序 # ------------------------------------------------------------------------------------------------------ # 1、调用getTradeProtalPID()函数,刷新$tradePortalPID全局变量 # 2、若程序已经启动($tradePortalPID不等于0),则提示程序已启动 # 3、若程序未被启动,则执行启动命令 # 4、启动命令执行后,再次调用getTradeProtalPID()函数 # 5、若步骤4执行后,程序的PID不等于0,则打印Success,反之打印Failed # 注意:[echo -n]表示打印字符后不换行 # 注意:[nohup command > /path/nohup.log &]是将作业输出到nohup.log,否则它会输出到该脚本目录下的nohup.out中 # ------------------------------------------------------------------------------------------------------ function startup(){ getTradeProtalPID if [ ! -d $LOG_DIR ]; then mkdir -p $LOG_DIR fi echo "===============================================================================================" if [ ${#tradePortalPID[@]} -ne 0 ]; then read -t 5 -p "$MAIN_CLASS already started(PID=${tradePortalPID[*]}), do want need create a new server? [y/n]" flag case $flag in [yY]*) rm -f $PID_LOCATION echo -n "Starting $MAIN_CLASS" nohup java $JAVA_OPTS -classpath $CLASSPATH $MAIN_CLASS >/dev/null 2>&1 & echo $! > $PID_LOCATION PID_LOCAL=`head -n +1 $PID_LOCATION` echo "(PID=$PID_LOCAL)...[Success]" echo "===============================================================================================" sleep 1 tail -f $LOG_DIR/$LOG_BASE_NAME ;; [nN]*) echo "[Canceld]" echo "===============================================================================================" ;; *) echo "please enter : y or n" echo "===============================================================================================" ;; esac else nohup java $JAVA_OPTS -classpath $CLASSPATH $MAIN_CLASS >/dev/null 2>&1 & echo $! > $PID_LOCATION PID_LOCAL=`head -n +1 $PID_LOCATION` echo "(PID=$PID_LOCAL)...[Success]" echo "===============================================================================================" sleep 1 tail -f $LOG_DIR/$LOG_BASE_NAME fi } function shutdown(){ getTradeProtalPID echo "===============================================================================================" if [ -f "$PID_LOCATION" ];then PID_LOCAL=`head -n +1 $PID_LOCATION` fi if [ $PID_LOCAL -ne 0 ]; then echo -n "Stopping $MAIN_CLASS(PID=$PID_LOCAL) waiting 5s ..." kill $PID_LOCAL sleep 5 getTradeProtalPID if echo "${tradePortalPID[@]}" | grep -w "$PID_LOCAL" &>/dev/null; then echo "[Failed]" echo "===============================================================================================" shutdown fi rm -f $PID_LOCATION echo "[Success]" echo "===============================================================================================" else if [ ${#tradePortalPID[@]} -ne 0 ]; then read -t 5 -p "$MAIN_CLASS already started(PID=${tradePortalPID[*]}), do want stop all server? [y/n]" flag case $flag in [yY]*) for item in ${tradePortalPID[*]} do echo "[Kill PID=$item waiting 5s ...]" kill $item sleep 5 done echo "===============================================================================================" shutdown ;; [nN]*) echo "[Canceld]" echo "===============================================================================================" ;; *) echo "please enter : y or n" echo "===============================================================================================" ;; esac else rm -f $PID_LOCATION echo "[Success]" echo "===============================================================================================" fi fi } function docker(){ if [ ! -d $LOG_DIR ]; then mkdir $LOG_DIR fi nohup java $JAVA_OPTS -classpath $CLASSPATH $MAIN_CLASS >/dev/null 2>&1 & echo $! > $PID_LOCATION } function status(){ if [ -f "$PID_LOCATION" ];then PID_LOCAL=`head -n +1 $PID_LOCATION` fi echo "===============================================================================================" if [ $PID_LOCAL -ne 0 ]; then echo "$MAIN_CLASS already started(PID=$PID_LOCAL)" echo "===============================================================================================" tail -f $LOG_DIR/$LOG_BASE_NAME else echo "$MAIN_CLASS is not running" echo "===============================================================================================" fi } case "$1" in start) startup ;; stop) shutdown ;; status) status ;; docker) docker ;; restart) shutdown startup ;; *) echo "please use : ./run.sh {start|stop|restart|status}" ;; esac exit 0
打包部署
-
执行打包命令
mvn clean package -Dmaven.test.skip=true
-
打包后将deploy文件夹部署即可
- src
-
Linux下Weblogic 8.1自启动脚本
2005-09-28 14:45:00设置为自启动服务, 因为startWebLogic.sh必须在所在的目录下执行才能生效(cd /usr/services/bea/user_projects/domains/mydomain ) 所以如果想在非当前目录下执行,则需要另外建立一个脚本来执行它 service...设置为自启动服务, 因为startWebLogic.sh必须在所在的目录下执行才能生效(cd
/usr/services/bea/user_projects/domains/mydomain )
所以如果想在非当前目录下执行,则需要另外建立一个脚本来执行它
service.sh 内容:(加上可执行权限 chmod +x servic.sh )
cd /usr/bea/wlserver6.1/config/mydomain
. startWebLogic.sh& > null
cd –
修改 /etc/rc.d/rc.local 文件, 在末尾加上
/usr/services/bea/user_projects/domains/mydomain/service.sh&
由于自启动不在xwindow下运行, 所以java处理图片时会有X11的异常, 解决方法是, 在java运行参数上
加-Djava.awt.headless=true转载于:https://www.cnblogs.com/josson/archive/2005/09/28/245921.html
-
linux服务启动
2011-05-02 01:18:13linux中的每个服务都有相应的运行脚本,可用于设置启动...各运行级别的脚本目录所在位置为:/etc/rc.d当中可以看到以0~6加在RC的后面,构成了相应的运行级别服 务脚本目录.可进入相应级别的脚本目录,查看其有什么设置.... -
针对上一步生成的日志,我们的启动脚本为: from visualdl.server import app app.run(logdir="./log") 在使用任意一种方式启动VisualDL面板后,打开浏览器访问VisualDL面板,即可查看日志的可视化结果,如图: ...
-
无法在Web服务器上启动调试。未将项目配置为进行调试
2006-06-24 22:53:00解决方法:进入 计算机管理 服务和应用程序 INTERNET信息服务 网站 默认网站,找到 工程所在目录,点击鼠标右键,进入属性 菜单,目录 应用程序设置 应用程序名 创建按钮;执行权限 选择 脚本和可执行文件 可能的... -
Shell脚本
2020-09-09 09:24:001.新建一个文件test.sh,扩展名为sh(sh代表shell) 2.打印 Hello World echo "Hello World !" 3.启动Linux上的Java包 nohup java -jar xxx.jar --spring.profiles.active=prod &...#启动命令所在目录 HOME='/ho -
linux 自动运行的服务设定
2009-03-26 10:35:00所有的服务脚本 都写在"/etc/rc.d/init.d"中,脚本名称和服务器名称相对应,大都有说明,大家可自己查看,各运行级别的脚本目录所在位置为:/etc/rc.d当中可以看到以0~6加在RC的后面,构成了相应的运行级别服务脚本目录.... -
定时执行linux上sh脚本方法,使用crontab
2020-05-11 12:58:56其内容如下: (注意: /temp/ 为要删除的文件所在的目录 0.00347222 为每5分钟执行一次的含义, 那个+后面是 数字是天为单位,如 : 1 标示为 1天执行一次) find /nas/share/file/upload/histran/ -type f -mmin +5... -
GBase 8s 通过systemd实现自启动与关闭
2020-05-14 20:31:11在RHEL7/CENTOS7/SUSE12及最新的Ubuntu等linux发行版本中, 均使用systemd进行服务控制管理(Service Control Manager)。...###systemd需要的两个配置文件目录为 1,service 文件所在位置(CentOS7/RHEL7) -
linux为什么没有产生core 文件 问题分析
2017-07-27 10:12:27但如果是通过脚本启动,则脚本可能会修改当前目录,这时进程真正的当前目录就会与当初执行脚本所在目录不同。这时可以查看"/proc//cwd"符号链接的目标来确定进程真正的当前目录地址。通过系统服务启动的进程也可通过... -
微软活动目录管理管理简明手册
2010-12-08 11:04:17b+ v+ T d/ R在活动目录中每个对象都有一个标识名,标识名确定了对象所在的域和可以找到对象的完整路径。比如,典型的标识名包括: ) v( ^# h2 Q% P ) k( @' h3 e4 k* G+ s" i7 `CN=TOM,OU=Manager,DC=Tech,DC=... -
应用服务器方面
2014-03-20 15:25:27答:在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200MEJB需直接实现它的业务接口或Home接口吗,请简述理由。... -
应用服务器方面
2009-12-25 16:24:00答:在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200MEJB需直接实现它的业务接口或Home接口吗,请简述理由。... -
迷你版SQL2000服务器
2015-01-23 17:32:37^优化启动服务的代码,默认实例或指定实例运行时更加稳定; ^优化数据库页右键菜单显示,允许对系统库进行操作。 1.1.0 +增加同个目录只允许运行一个实例的自动处理; *修正开启服务过程中碰到异常时,没有修改... -
Linux下MySQL数据库使用coredump注意事项
2020-03-04 12:38:07但如果是通过脚本启动,则脚本可能会修改当前目录,这时进程真正 的当前目录就会与当初执行脚本所在目录不同。若程序调用了seteuid()/setegid()改变了进程的有效用户或 组,则在默认情况下系统不会为这些进程生成... -
经典面试题-如何给weblogic 指定大小的内存
2019-11-23 14:30:19在启动Weblogic 的脚本中(位于所在Domian 对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M。 -
weblogic的几个基础问题(转)
2009-07-29 18:49:00在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M2、 如何设定的weblogic的热启动模式(开发模式)与产品发布模式... -
weblogic的几个基础问题
2007-01-16 20:19:00在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M2、 如何设定的weblogic的热启动模式(开发模式)与产品发布... -
weblogic的几个基础问题
2005-04-18 11:16:00在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M2、 如何设定的weblogic的热启动模式(开发模式)与产品发布... -
如何给weblogic指定大小的内存?
2008-06-23 11:21:44在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M -
给weblogic指定大小的内存
2014-02-17 09:48:29如何给weblogic指定大小的内存? (这个问题不作具体...在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M ... -
weblogic的几个基础问题 (转)
2005-04-21 00:35:00weblogic的几个基础问题document.title="weblogic的几个... 在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M2、 -
WebLogic及其他
2019-10-03 00:39:38在启动WebLogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS= -Xms32m -Xmx200m,可以调整最小内存为32M,最大200M。 如何设定的WebLogic的热启动模式(开发模式)与产品发布...
-
x86-64框架下的寄存器
-
华为1+X——网络系统建设与运维(高级)
-
Apache Solr 远程命令执行漏洞 CVE-2017-12629 漏洞复现
-
scrapy_settings.py
-
Unity 热更新技术-ILRuntime
-
OpenCV-学习历程21- 霍夫变换2-圆检测(HoughCircles)
-
浅谈用户引导设计
-
CSRFTester:一款CSRF漏洞的安全测试工具
-
MySQL NDB Cluster 负载均衡和高可用集群
-
MMM 集群部署实现 MySQL 高可用和读写分离
-
使用 Linux 平台充当 Router 路由器
-
PAT 1010 一元多项式求导 (25 point(s))
-
移动界面隐喻设计
-
jquery如何判断滚动条是否到底部
-
FastDFS 分布式文件系统部署
-
PlutoniumEnergy:用于Factorio的Plutonium Energy mod-源码
-
谈谈对于企业级系统架构的理解
-
Docker从入门到精通
-
项目经理成长之路
-
PHP SOCKET编程