写一个shell脚本,脚本内容用nohup执行多个需要输入两个参数的存储,将参数写好。
时间: 2024-12-10 10:49:29 浏览: 17
在Shell脚本中,你可以使用`nohup`命令结合命令替换(command substitution)来执行多个需要输入两个参数的任务。首先,假设你有一个名为`task.sh`的脚本,它接受两个参数:
```bash
#!/bin/bash
# 这里是 task.sh 的具体内容
echo "参数1: $1, 参数2: $2"
```
然后在另一个脚本中,比如`run_tasks.sh`,你可以创建一个循环来运行这个任务并传递参数,每个任务都在`nohup`环境下执行,以便于后台运行并且忽略挂断信号:
```bash
#!/bin/bash
# 要运行的参数列表,这里仅做示例,实际应用需替换为你的参数对
PARAMS=("param1_1 param2_1" "param1_2 param2_2" "param1_3 param2_3")
# 使用 nohup 执行 task.sh 并传递参数
for params in "${PARAMS[@]}"; do
echo "开始执行任务: $params"
nohup ./task.sh "$params" > task_output_$params.out & disown
done
# 提示用户任务已启动
echo "所有任务已启动,日志文件位于当前目录下,如task_output_{param}*.out"
相关问题
写一个shell脚本,脚本内容用nohup调用一个需要输入两个参数的存储,调用很多次,将参数写好。
当然可以,下面是一个简单的Shell脚本示例,它使用`nohup`命令多次调用一个名为`my_storage_command`的程序,该程序需要接收两个参数。在这个例子中,我们假设参数已经保存在一个文本文件`params.txt`里,每行包含两个参数。
```bash
#!/bin/bash
# 参数文件路径
PARAMS_FILE="params.txt"
# 要调用的命令
COMMAND="nohup my_storage_command %1 %2 &"
# 读取参数文件并循环执行命令
while IFS= read -r line; do
# 使用read命令从文件行中提取参数
read param1 param2 <<< "$line"
# 将参数插入到命令中,并执行
$COMMAND "${param1}" "${param2}"
done < "$PARAMS_FILE"
# 如果有任何错误,这里会捕获它们
if [ $? -ne 0 ]; then
echo "An error occurred while running the commands."
fi
# 最后,关闭并忽略输出
exec </dev/null
echo "Nohup jobs started. Check nohup.out for output from each command."
用nohup执行多个需要输入参数的存储
使用`nohup`同时执行多个需要输入参数的存储任务,你需要将每个命令分别写入一个脚本文件,然后在这些脚本中使用`nohup`命令。这里有一个基本的例子:
假设你有两个需要输入参数的脚本,分别为`script1.sh` 和 `script2.sh`,它们接受参数`arg1`和`arg2`。你可以创建两个这样的脚本:
```bash
# script1.sh
#!/bin/bash
nohup your_command arg1 "$2" >> script1_output.log &
disown
# script2.sh
#!/bin/bash
nohup your_second_command "$1" arg2 >> script2_output.log &
disown
```
在这里,`your_command` 和 `your_second_command`是你要实际执行的命令,`arg1`和`arg2`是它们需要的参数。`&`符号将进程放到后台,并使用`disown`命令断开与该进程的连接,防止因为shell退出而终止进程。
执行这两个脚本时,比如你想在后台启动第一个脚本,你可以这样做:
```bash
nohup bash script1.sh param1 param2 &
```
同样的方法适用于`script2.sh`。
阅读全文