如何在Fedora上实现Firefox启停时自动运行/停止指定Bash脚本?
基于Bash实现Firefox状态监控并控制脚本运行
1. 可以用Bash实现,以下是示例脚本
创建一个监控脚本(比如firefox_monitor.sh),它会持续检查Firefox的运行状态,自动启停你的bash_script.sh:
#!/bin/bash # 要控制的目标脚本路径 TARGET_SCRIPT="/path/to/your/bash_script.sh" # 存储目标脚本PID的临时文件 PID_FILE="/tmp/bash_script.pid" # 循环监控Firefox状态 while true; do # 检查Firefox是否在运行(精准匹配进程名) if pgrep -x "firefox" > /dev/null; then # 检查目标脚本是否未运行 if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2>/dev/null; then # 启动目标脚本并保存PID "$TARGET_SCRIPT" & echo $! > "$PID_FILE" echo "已启动目标脚本,PID: $(cat $PID_FILE)" fi else # Firefox未运行,检查目标脚本是否在运行 if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then # 停止目标脚本 kill $(cat "$PID_FILE") rm "$PID_FILE" echo "已停止目标脚本" fi fi # 每2秒检查一次,可按需调整间隔 sleep 2 done
使用说明:
- 将
/path/to/your/bash_script.sh替换为你实际的脚本路径 - 给监控脚本添加执行权限:
chmod +x firefox_monitor.sh - 直接运行监控脚本:
./firefox_monitor.sh,后台运行可加&:./firefox_monitor.sh &
2. 不需要设置777权限和crontab
- 权限方面:不需要给脚本设
777(权限过于开放,有安全风险),只需给执行权限即可:chmod +x 脚本名,若脚本需读写特定文件,再按需调整对应权限。 - crontab方面:crontab是定时任务工具,只能按固定间隔执行检查,无法实时响应Firefox的启停状态,不适合这种持续监控场景。
3. 更可靠的替代方案:Systemd服务
如果需要监控脚本随系统启动自动运行,或更稳定地后台执行,推荐用Fedora自带的systemd配置服务:
步骤1:创建systemd服务文件
创建~/.config/systemd/user/firefox-monitor.service(用户级服务,无需root权限):
[Unit] Description=Monitor Firefox and control bash_script.sh After=graphical.target [Service] Type=simple ExecStart=/path/to/your/firefox_monitor.sh Restart=always RestartSec=5 [Install] WantedBy=default.target
步骤2:启用并启动服务
# 重新加载systemd配置 systemctl --user daemon-reload # 设置开机自启 systemctl --user enable firefox-monitor.service # 启动服务 systemctl --user start firefox-monitor.service
查看服务状态/日志:
# 查看状态 systemctl --user status firefox-monitor.service # 实时查看日志 journalctl --user -u firefox-monitor.service -f
内容的提问来源于stack exchange,提问作者CTB
相关产品推荐
相关产品推荐

