Linux 环境下,有没有超轻量管理 jar 包的工具?

2024-01-24 16:30:56 +08:00
 godleon

需求

想找一款,在 Linux 环境下,可以管理 jar 包的工具,例如 配置好 jar 的命令后,可以一个命令 启动或者停止,多个 jar 或者 单个 jar ;

有点类似,node 的管理 nvm, 例如 nvm install xxx 、nvm use xxx 、nvm list; 

例如工具命令行为 xxx

启动命令  xxx start jar1,jar2,jar3
停止命令  xxx stop jar1,jar2,jar3
设置某个 jar 的启动命令。xxx set jar1: java -jar -Xms -Xmx ...
查看运行的 jar 能看到端口 命令 pid

PS

只需要命令行就可以,不需要 GUI 页面

pass docker k8s ,
docker 还需要写 docker file compose ;
k8s 更不要说了,太重了;
只想要单纯的管理一些 jar

工具尽可能的不吃内存
1765 次点击
所在节点    程序员
18 条回复
xscanqianmeng666
2024-01-24 16:34:39 +08:00
自己写 shell 脚本就可以
derdct
2024-01-24 16:35:29 +08:00
写个脚本? :(
godleon
2024-01-24 16:36:30 +08:00
@xscanqianmeng666 奈何自己不太会写 shell ,想问问有没有类似封装好的~
jjx
2024-01-24 16:37:47 +08:00
supervisor
wxyrrcj
2024-01-24 16:39:16 +08:00
docker compose 不是很好写吗😪,你说的是 node 的 pm2 吧 nvm 是管理环境版本的。
superrichman
2024-01-24 16:40:20 +08:00
你都有 node 了,就用 pm2 管理
wxyrrcj
2024-01-24 16:40:29 +08:00
pm2 还写个配置文件呢

module.exports = {
apps : [{
name : "frps-server",
script : "./frpc -c ./frpc.ini"
}]
}

java 写个 compose 怎么了
wxyrrcj
2024-01-24 16:41:08 +08:00
@superrichman 对对 给 jar 写个 pm2 的配置不就可以一键启动 了
lzrainchen
2024-01-24 16:43:47 +08:00
1.可以使用 shell 脚本管理,简单看下语法或者搜索一下也可以比较简单。2.可以使用系统的 systemd 进行管理,例如启停 nginx 。systemctl start 服务名。不管使用什么都需要学习一下,学会了以后就不怕了
aweim
2024-01-24 16:45:59 +08:00
需要管理 jar 吗? 利用 Jenkins 直接构建,发布不就可以了吗? Jenkins 上面写个 20 行的 shell 脚本。
aweim
2024-01-24 16:48:48 +08:00
echo "ssh 连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no user1@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
EOF

echo "拷贝 jar 包到目标服务器的 tmp 目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar use1@${server_ip}:/xxx/xxx/${projectName}.jar
echo "ssh 远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no user1@${server_ip} <<EOF
mv /xxx/xxx/${projectName}.jar $DIR/${projectName}/${projectName}.jar

echo "copy jar success"
echo "开始部署远程服务器"
echo "先停止服务${projectName}"
sh $DIR/${projectName}/stop.sh
echo "启动服务${projectName}"
sh $DIR/${projectName}/start.sh
EOF
done
echo "success"
lstz
2024-01-24 16:49:59 +08:00
linux 写脚本随便怎么弄都可以,但是 windows 就不行了,光是命令行参数长度就够喝一壶了
cdlnls
2024-01-24 16:57:12 +08:00
自带的 systemd? 复制一份 service 配置文件,配置好目录和启动命令。
systemctl start/stop/status/edit xxx

缺点是看不到端口,不过你可以把端口写在备注里,使用 status 的时候一样也能看到。
wxyrrcj
2024-01-24 17:00:11 +08:00
@lstz windows 可以用这个 https://www.wxy97.com/archives/39
lstz
2024-01-24 17:19:06 +08:00
@wxyrrcj 谢谢分享
mylovesaber
2024-01-24 19:24:18 +08:00
巧了,这东西用 shell 来实现我正在写,快写完了,但估计是没法公开,给组里用的,然后我之前尝试过纯 java 来写,也是可以实现的,你不会 shell 会 java 也可以啊,只需要把
alias jsc='java -jar'
添加到环境变量中,然后就可以用命令的方式控制 jar 包管理器了比如:jsc -Dstart 这种造型的都是可以的
jifengg
2024-01-25 08:58:32 +08:00
工作上用过 supervisor 和 pm2 ,都能实现需求。而且都不仅仅是 jar ,任何进程都能管理
fengche361
2024-01-25 10:16:26 +08:00
jenv

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1011233

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX