假设有一个脚本A名为 a.py,另一个脚本B名为 b.py,请问怎么用shell 先打开 A,再关闭A打开B?python 实现
时间: 2023-05-23 09:00:45 浏览: 70
可以使用以下 shell 脚本命令实现:
```
#! /bin/bash
# 打开 a.py
python3 a.py &
# 获取 a.py 的 PID,并关闭它
PID=$(ps -ef | grep "python3 a.py" | grep -v grep | awk '{print $2}')
kill $PID
# 打开 b.py
python3 b.py &
```
解释一下代码:
- `python3 a.py &`:在后台打开 a.py 脚本。
- `ps -ef | grep "python3 a.py" | grep -v grep | awk '{print $2}'`:查找所有运行中的进程,找到关键字为 `python3 a.py` 的进程,并输出它的进程 ID (PID)。`grep -v grep` 是为了过滤掉 `grep "python3 a.py"` 命令本身的输出。
- `kill $PID`:根据进程 ID (PID),关闭 a.py 进程。
- `python3 b.py &`:在后台打开 b.py 脚本。
至于 Python 实现,以下是一个简单的脚本:
```python
import os
import time
# 打开 a.py
os.system("python3 a.py &")
# 等待 3 秒,模拟 a.py 运行时间
time.sleep(3)
# 打开 b.py
os.system("python3 b.py &")
```
需要注意的是,Python 的 `os.system()` 函数会阻塞进程,即在打开 a.py 后,必须等待 a.py 结束才能执行后面的代码。所以,需要使用 `time.sleep()` 函数来模拟 a.py 运行的时间,使其结束后再打开 b.py。