shell 中的job管理

本文介绍在Shell环境中如何管理和控制后台任务。包括使用&符号将任务置于后台运行、使用jobs命令查看后台任务状态、通过Ctrl+Z将前台任务转为后台暂停、使用fg和bg命令在前后台间切换任务,以及如何利用nohup命令或screen工具保持后台任务持续运行。
shell中job管理
   http://www.cnblogs.com/ggjucheng/archive/2012/10/21/2733028.html
   在命令后添加一个&,如firefox &:后台执行。
   jobs -l 命令列出当前有多少在后台运行的命令
   Ctrl+z或者发送信号17 : 用于将当前正在运行的前台进程暂停,变成后台进程
   fg :将后台中的命令调至前台继续运行,如fg 1 ,1是编号
   bg :将后台暂停的进程继续运行,如bg 1,1是编号
     以远程连线方式连接到你的 Linux 主机,并且将工作以 & 的方式放到背景去(ssh),断开ssh连接后,背景中的工作会中断,详细:http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
       可用 【 nohup [命令与参数]   <==在终端机前景中工作 】方式保持不中断
       或者 使用伪终端screen,默认job的bash是sshd的子进程,修改后成为screen伪终端的子进程。pstree -H pid可查看进程的父子关系
<think>我们正在讨论XXL-JOB如何调用Shell脚本。根据引用[1]和[2],我们可以知道,即使我们只想调度Shell脚本,仍然需要在Java项目中部署一个执行器(Executor)。这是因为XXL-JOB的调度中心需要通过执行器来触发任务的执行,而执行器可以配置运行模式为Shell脚本。 步骤概述: 1. 部署一个执行器(Executor)项目,这个项目可以是基于Spring Boot的,类似于引用[4]中提到的`xxl-job-executor-sample-springboot`。 2. 在XXL-JOB调度中心的管理界面中,添加一个执行器,指向我们部署的执行器项目。 3. 在调度中心创建一个任务,并指定该任务由我们添加的执行器执行,运行模式选择“Shell”,并填写Shell脚本的路径和参数。 具体步骤: 第一步:部署执行器 我们需要创建一个Spring Boot项目(或者使用已有的项目),并集成XXL-JOB执行器。具体步骤可参考引用[4]中的“6. 在SpringBoot项目中接入XXL-JOB”。 在项目中引入依赖(如引用[4]中6.3): ```xml <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>${最新版本}</version> </dependency> ``` 配置执行器(如引用[4]中6.4和6.5): 在`application.properties`中配置: ```properties # 调度中心部署地址 xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin # 执行器名称 xxl.job.executor.appname=xxl-job-executor-sample # 执行器端口,默认为9999,注意不要和调度中心端口冲突 xxl.job.executor.port=9999 ``` 然后编写一个配置类(可选,因为新版可能通过配置文件即可): ```java @Configuration public class XxlJobConfig { ... // 具体配置可参考官方示例 } ``` 第二步:在调度中心添加执行器 1. 登录调度中心(如引用[4]中4.7访问调度中心)。 2. 在“执行器管理”中添加执行器: - 执行器名称:与配置文件中`xxl.job.executor.appname`一致(如xxl-job-executor-sample) - 注册方式:通常选择“自动注册”,这样执行器启动后会自动注册到调度中心(也可以手动录入机器地址) 第三步:创建任务并配置Shell脚本 1. 在调度中心的“任务管理”中,点击“新增”按钮。 2. 填写任务信息: - 执行器:选择我们刚才添加的执行器 - 任务描述:自定义 - 运行模式:选择“SHELL” - JobHandler:不需要填写(因为运行模式是Shell,不是Java的Bean模式) - 脚本:填写需要执行的Shell脚本的绝对路径(例如:`/home/user/script.sh`) - 任务参数:可以传递参数给Shell脚本,在脚本中通过`$1`、`$2`等获取 - 其他配置(如调度类型、Cron表达式等)根据需求配置 注意: - 执行Shell脚本的服务器必须是执行器所在服务器(因为执行器会启动一个进程来执行Shell脚本)。 - 确保执行器运行的用户有权限执行该脚本,并且脚本具有可执行权限(`chmod +x script.sh`)。 引用[1]中提到:“即便你只想调度shell,java代码中并没有要调度的任务,仍然需要这个执行器”。因此,我们只需要部署一个执行器,然后通过调度中心配置Shell任务即可。 问题解答: 用户问题:XXL-JOB如何调用Shell脚本? 答:通过部署执行器项目,并在调度中心创建运行模式为Shell的任务,指定脚本路径即可。 相关问题: 1. 如何确保Shell脚本在多个执行器节点上执行时只执行一次? 2. 如何传递参数给Shell脚本? 3. 如何查看Shell脚本的执行日志? 4. 如果Shell脚本执行时间较长,如何设置超时时间? 5. 如何监控Shell脚本的执行状态? 根据用户的问题,我们生成以下相关问题: §§相关问题§§ 1. 在XXL-JOB中,如何配置Shell脚本任务? 2. 如何确保Shell脚本在多个执行器节点上执行时只执行一次? 3. 如何传递参数给Shell脚本? 4. 如何查看Shell脚本的执行日志? 5. 如何设置Shell脚本执行的超时时间?</think>### XXL-JOB 调用 Shell 脚本的方法 在 XXL-JOB 中调用 Shell 脚本,需通过**执行器(Executor)** 配置 Shell 运行模式实现。以下是具体步骤: --- ### 步骤 1:部署执行器(Executor) 即使仅调度 Shell 脚本,仍需部署执行器(Java 服务),用于接收调度中心的指令并执行脚本[^1][^2]。 1. **创建 Spring Boot 项目** 引入依赖(参考官方示例): ```xml <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.4.0</version> <!-- 使用最新版本 --> </dependency> ``` 2. **配置执行器参数** 在 `application.properties` 中配置: ```properties # 调度中心地址 xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin # 执行器名称(需与调度中心一致) xxl.job.executor.appname=shell-executor # 执行器端口 xxl.job.executor.port=9999 ``` --- ### 步骤 2:在调度中心配置 Shell 任务 1. **添加执行器** 登录 XXL-JOB 调度中心 → 进入「执行器管理」→ 新增执行器: - **AppName**:与配置文件中的 `xxl.job.executor.appname` 一致(如 `shell-executor`) - **注册方式**:推荐「自动注册」(执行器启动后自动注册到调度中心)[^4] 2. **创建 Shell 任务** 进入「任务管理」→ 点击「新增」: - **运行模式**:选择 `SHELL` - **JobHandler**:无需填写(仅 Java 任务需要) - **脚本**:填写 Shell 脚本的**绝对路径**(如 `/home/user/backup.sh`) - **参数**:可选,通过 `$1` `$2` 在脚本中引用(如 `-d /data`) ```shell #!/bin/bash echo "参数: $1" # 输出任务参数 ``` - **调度类型**:选择 CRON 表达式(如 `0 0 * * * ?` 表示每日执行) --- ### 步骤 3:权限与脚本配置 1. **确保脚本可执行** 在服务器上为脚本添加执行权限: ```bash chmod +x /home/user/backup.sh ``` 2. **执行器用户权限** 执行器进程需有权限运行脚本(建议使用非 root 用户部署执行器)。 --- ### 原理说明 - 调度中心向执行器发送任务触发请求。 - 执行器通过 `Runtime.getRuntime().exec()` 启动 Shell 进程执行脚本[^1]。 - 执行结果和日志由执行器上报至调度中心。 --- ### 注意事项 1. **脚本路径** 必须使用**绝对路径**,避免因工作目录问题导致执行失败。 2. **超时控制** 在任务配置中设置「任务超时时间」,避免脚本卡死影响调度。 3. **日志查看** 执行日志可在调度中心的「调度日志」中实时查看。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值