全网最全Linux 运行jar包的几种方式

一、Linux 运行jar包的几种方式

  • 方式一: java -jar xxx.jar

最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。

  • 方式二: java -jar xxx.jar &

&代表在后台运行 ,ctrl+c 后程序也会继续运行。

  • 方式三: nohup java -jar xxx.jar &

nohup 即 no hang up 不挂断 ,关闭SSH客户端连接,程序不会中止运行。

缺省情况下该作业的所有输出被重定向到nohup.out的文件中,如何让输出的内容重定向到指定的文件呢?

  • 方式四:nohup java -jar xxx.jar >aaa.log &

command >out.file 是将commandd 输出重定向到out.flie文件,即输出内容不打印到屏幕上,而是输出到out.file文件中

  • 方式五:nohup java -jar spring-boot-demo.jar > springboot.log 2>&1 &

 

  • 方式六:nohup java -jar spring-boot-demo.jar > /dev/null 2>&1 &

​ 不输出日志

二、nohup 和 &

使用&后台运行程序:

  • 结果会输出到终端
  • 使用Ctrl + C,程序免疫
  • 关闭session,程序关闭

使用nohup运行程序:

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C,程序关闭
  • 关闭session,程序免疫

平日线上经常使用nohup和&配合来启动程序

三、> /dev/null 2>&1

  • ​ > 标准重定向符,允许我们创建一个 0KB 的空文件。它通常用于重定向一个命令的输出到一个新文件中。在没有命令的情况下使用重定向符号时,它会创建一个文件。
  • ​ /dev/null 可以看作黑洞,等价于一个只写文件。所有写入它的内容都会永远丢失,尝试从它那儿读取内容则什么也读不到。也就是将所有产生的日志将被丢弃
  • ​ 2>&1 符号>&是一个整体代表将标准错误2重定向到标准输出1,如果是2>1的话,代表将标准错误输出到文件1,而不是重定向到标准输出流

​ 先了解下1和2在Linux中代表什么

​ 当Linux执行一个程序时,会自动打开三个流

​ 0:标准输入流(默认是键盘)
​ 1:标准输出流(默认是屏幕)
​ 2:标准错误流(默认是屏幕)

名称代码操作符java中表示Linux中文件描述符
标准输入(stdin)0< 或 <<System.in/dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
标准输出(stdout)1>, >>, 1> 或 1>>System.out/dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
标准错误输出(stderr)22> 或 2>>System.err/dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

​ 从上表看出,平常使用的 echo 'hello' > a.log 可以写成 echo 'hello' 1> a.log

​ 为什么2>&1要放在后面 ? 如下一条shell命令 nohup java -jar app.jar >log 2>&1 & 我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:

​ 本来1----->屏幕 (1指向屏幕)
​ 执行>log后, 1----->log (1指向log)
​ 执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

​ 再来分析下nohup java -jar app.jar 2>&1 >log &
​ 本来1----->屏幕 (1指向屏幕)
​ 执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
​ 执行>log后, 1----->log (1指向log,2还是指向屏幕)
​ 所以这就不是我们想要的结果。

​ 每次都写">log 2>&1"太麻烦,能简写吗?可以简写成 &>log 或 >&log

nohup java -jar app.jar 2>&1 >log & 简写成:nohup java -jar app.jar &>log &
参考原文章传送门

### 如何在 PyCharm 中设置和管理 Conda 虚拟环境 #### 设置 Conda 虚拟环境 为了在 PyCharm 中成功配置 Conda 虚拟环境,需遵循一系列操作指南: 找到并打开项目的 **Settings/Preferences** 对话框,在 Windows/Linux 上通过 `File` -> `Settings` 或者 macOS 上通过 `PyCharm` -> `Preferences` 访问[^2]。 导航至 **Project: <project_name>** 下的 **Python Interpreter** 页面。在此页面中,点击右上角齿轮图标旁边的加号 (+),选择 **Add...** 来添加新的解释器。 当弹出新窗口时,选择左侧列表中的 **System Interpreter** 选项卡,然后点击右侧的浏览按钮 (…)。此时应会展示计算机上的所有 Python 安装实例;如果未自动检测到 Conda 环境,则手动指定路径指向 Anaconda 的安装目录下的特定虚拟环境中 python.exe 文件的位置[^1]。 对于某些版本如 PyCharm 2024.3 版本,可能需要更具体的操作来使 Conda 环境被识别。这涉及到直接访问 Anaconda 安装位置内的 condabin 文件夹,并从中选取 conda.bat 文件作为激活脚本来触发环境刷新[^3]。 一旦选择了合适的 Python 解释器或 Conda 环境后,记得保存更改并重启 IDE 以便应用这些修改。 #### 使用 Conda 创建新虚拟环境 除了上述方法外,还可以利用命令行工具创建一个新的 Conda 环境供 PyCharm 使用。执行如下 shell 命令可以完成此过程: ```bash conda create --name myenv python=3.x ``` 替换 `myenv` 和 `python=3.x` 分别为你想要命名的新环境名称以及所需 Python 版本号。创建完成后按照前述指导将其加入到 PyCharm 当前项目之中[^4]。 #### 验证配置是否生效 确认所选解释器已被正确应用于当前工作区的方法之一是在终端内运行简单的测试程序验证库的存在性和可用性。例如打印 NumPy 库的信息可以帮助判断环境是否正常运作: ```python import numpy as np print(np.__version__) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值