java项目启动内存配置或启动日志,杀死进程
nohup java -Xloggc:./wse-gc-%t.log -Xms512M -Xmx1024M -jar zdhyw20230410.jar > nohup.out 2>&1 &
nohup java -jar -Xms512M -Xmx1024M zdhyw20230410.jar > nohup.out 2>&1 &
-Xms128M -Xmx256M -XX:PermSize=64M -XX:MaxPermSize=128M
-Xloggc:./wse-gc-%t.log -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=1052906816 -XX:MaxHeapSize=16846509056 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
nohup java -jar -Xms128M -Xmx256M -XX:PermSize=64M -XX:MaxPermSize=128M xxxx.jar
Xms — 堆内存初始大小
Xmx — 堆内存最大值
PermSize — 永久内存初始大小
MaxPermSize — 永久内存最大值
linux通过jar包名称杀死对应的进程
kill -9 $( ps -ef | grep "youjar.jar" | grep -v "grep" | awk '{print $2}')
输出日志在当前目录:
nohup java -jar ace-auth.jar >> nohup`date +%Y-%m-%d`.out 2>&1 &
指定日志目录输出:
指定输出到当前目录log文件夹中
nohup java -jar ace-auth.jar >> ./log/nohup`date +%Y-%m-%d`.out 2>&1 &
发现无法自动切割日志,做一个定时脚本,凌晨时候kill掉进程然后再启动
kill -9 $(ps -ef |grep java |grep -w 'java'|grep -v 'grep'|awk '{print $2}')
或者
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
定时执行:
crontab -e
0 0 * * * /root/everyday.sh
补:现在使用的方案:
将原日志文件复制出来,然后清空原日志文件
登录后复制
cat *.out >> nohup`date +%Y-%m-%d`.out
echo " " > nohup.out
-----------------------------------
windows java 输出日志到文件 nohup java -jar输出日志
赋予文件执行权限
chmod 777 split_logs.sh
开启定时任务,执行split_logs.sh
vim /etc/crontab
wq保存退出,第二天查看前一天文件有没生成
我这边脚本已经执行了,说明定时任务已生效
但是别人好像也有失效的情况,使用第二种方式
crontab -l
说明没有生效,但是我这边其实也是这样的输出。。。
crontab -e
将前面的定时任务的指令,输入进入,wq保存退出
crontab -l
#!/bin/bash
# 脚本中只要出现执行不是true的语句,就退出不再往下执行
set -e
# 导入环境变量
export jar_PATH=/data/web
export APP_PATH=/home/
# 判断老的进程是否存在,若存在就杀掉
killjar()
{
pid=`ps -ef|grep supplier-center |grep java |awk '{print $2}'`
echo "supplier-center Id list :$pid"
if [ "$pid" = "" ]
then
echo "no supplier-center pid alive"
else
kill -9 $pid
fi
}
# 调用函数
killjar
# 判断老的jar包是否存在,若存在就删除
[ -f $APP_PATH/supplier-center-1.0.0-SNAPSHOT.jar ] && \
rm -rf $APP_PATH/supplier-center-1.0.0-SNAPSHOT.jar
# 更新最新的jar包
mv $jar_PATH/supplier-center-1.0.0-SNAPSHOT.jar $APP_PATH
# 重新启动
nohup java -jar $APP_PATH/supplier-center-1.0.0-SNAPSHOT.jar > \
$APP_PATH/admin.log &
# sleep 10秒, 等待java进程完成起来
sleep 10s
echo 'Start success!'
或
#!/bin/bash
while true
do
pid=$(ps -ef | grep myiar.jar | grep -v grep | awk '{print $2}')
if[ -n "$pid" ]
then
echo "Killing process $pid"
kill -9 $pid
else
echo "Process not found"
fi
sleep 360 # 每时检套一次
done