[work] Shell 同时运行多个脚本

1、背景是

有三个脚本a.py, b.py, c.py
三个都是爬虫,里面都是while(true)方式运行的,不会主动运行结束。

每次启动他们,就需要:

python a.py > logs/a.log
python b.py > logs/b.log
python c.py > logs/c.log

2、上linux批处理:

有点麻烦,想搞个批处理:

#!/bin/sh
python a.py > logs/a.log
python b.py > logs/b.log
python c.py > logs/c.log

3、发现有问题

运行发现只有一个python进程,看日志发现只有a运行了,b和c都没跑起来。
估计因为shell是顺序执行的,a没执行完,所以不会去执行b和c,查了一下果然。

4、同时运行方案

不过shell也提供了一个同时运行多个命令的方式:&符号。

于是修改为:

#!/bin/sh
python a.py > logs/a.log & python b.py > logs/b.log & python c.py > logs/c.log

就可以同时运行三个脚本了。

5、再加工一下

再加工一下,启动前先停止所有py进程:

#!/bin/sh
ps -ef | grep python | cut -c 9-15| xargs kill -s 9
python a.py > logs/a.log & python b.py > logs/b.log & python c.py > logs/c.log

保存为restart.sh
可执行权限:chmod +x restart.sh



作者:胡晓的简书
链接:https://www.jianshu.com/p/0f72afb513ab
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你好!我可以帮你写一个简单的shell脚本来模拟人生重开模拟器游戏。下面是一个示例: ```shell #!/bin/bash # 初始化玩家信息 name="" age=0 job="" money=0 # 定义函数:创建新角色 create_character() { echo "欢迎来到人生重开模拟器游戏!" echo "请创建你的新角色。" read -p "请输入你的名字: " name read -p "请输入你的年龄: " age read -p "请输入你的职业: " job echo "角色创建成功!" echo "角色名字: $name" echo "角色年龄: $age" echo "角色职业: $job" } # 定义函数:游戏主循环 game_loop() { while true; do echo -e "\n请选择你要进行的操作:" echo "1. 查看角色信息" echo "2. 工作赚钱" echo "3. 休息" echo "4. 退出游戏" read -p "请输入操作编号: " choice case $choice in 1) echo -e "\n角色名字: $name" echo "角色年龄: $age" echo "角色职业: $job" echo "当前金钱: $money" ;; 2) read -p "请输入工作时长(小时): " work_hours # 这里可以自定义工作赚钱的逻辑 # 根据职业、工作时长等因素计算赚得的金钱 echo "你工作了 $work_hours 小时,赚得了一些钱!" money=$((money + work_hours * 10)) ;; 3) echo "你休息了一段时间,感觉精力恢复了!" ;; 4) echo "感谢你玩人生重开模拟器游戏!再见!" exit 0 ;; *) echo "无效的操作,请重新选择。" ;; esac done } # 游戏开始 create_character game_loop ``` 这个脚本实现了以下功能: 1. 创建新角色:玩家输入名字、年龄和职业,创建一个新角色。 2. 游戏主循环:玩家可以选择不同的操作,包括查看角色信息、工作赚钱、休息和退出游戏。 3. 工作赚钱:根据输入的工作时长,模拟赚取一定数量的金钱。 4. 休息:简单地输出一条信息表示休息。 你可以根据自己的需求修改和扩展这个脚本,添加更多的功能和事件。祝你玩得开心!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值