查看运行中的所有端口和pid
netstat -tulnp
终止指定pid运行
kill 881 # 881为pid
后台运行 和 将命令放入后台
如果你想在后台运行 poetry run uvicorn main:app --reload --port 7001 命令,你可以使用 nohup(no hangup)命令来确保即使在退出终端会话后,命令也能继续在后台运行。
同时,你可以结合 & 符号将命令放入后台。
nohup poetry run uvicorn main:app --reload --port 7000 &
在你使用 & 符号将命令放入后台时,如果你的 shell 配置正确,并且你的系统配置允许,后台进程可能会被一个叫做 disown 的机制自动分离,这就是为什么在某些情况下,即使没有使用 nohup,后台进程也能在终端关闭后继续运行。
总的来说,nohup 提供了一个确保后台进程在终端关闭后继续运行的机制,特别是在你的 shell 或系统配置可能不会自动提供这种保护的情况下。
定时脚本保证服务启动
脚本监控指定端口,并在端口没有运行时启动一个服务;
注意终端和宝塔环境是分隔的,不要用宝塔的定时任务,来执行终端的脚本;
#!/bin/bash
# 定义要监控的端口
PORT=7000
# 定义 poetry 的绝对路径,通过命令获取:which poetry
POETRY_PATH="/user/python3.12/bin/poetry"
# 定义启动服务的命令
START_COMMAND="$POETRY_PATH run uvicorn main:app --reload --port $PORT"
# 使用 ss 命令检查端口是否被监听
if ss -lntup | grep -q ":$PORT "; then
echo "端口 $PORT 已在运行"
else
echo "端口 $PORT 未运行,正在启动服务..."
# 执行启动服务的命令
$START_COMMAND &
fi
- 编辑crontab:使用
crontab命令编辑当前用户的定时任务配置。
crontab -e
- 设置定时规则:在打开的编辑器中,你需要添加一个定时规则,这个规则告诉
cron何时执行你的脚本。规则格式如下:
# minute hour day-of-month month day-of-week command
0 2 * * * /path/to/my_script.sh
手动运行此脚本
当前目录下执行 ./name.sh
vim下 按 Esc 键确保你处于普通模式
- 输入
:wq并按Enter。这会保存你的更改并退出编辑器。 :w是写入(保存)命令,:q是退出命令。
重启cron服务以应用更改(如果需要):
systemctl restart crond
其他
pipenv安装项目遇到问题
1、使用pipenv install安装报错:'NoneType' object is not callable
pipenv --rm //清除原有安装
pipenv install //重新安装
//遇到过还是不行的,删除了pipenv 重新安装就好了;推荐配置下国内镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip uninstall pipenv
pip install pipenv
gunicorn运行
一个flask小项目,想用gunicorn运行,配置了gunicorn_conf.py文件,运行命令
gunicorn index:app --config=gunicorn_conf.py
//index是index.py文件 app是index.py文件里的主变量
执行命令后没报错,但项目没跑起来,监听了端口,不存在。还是改用flask自带的运行方式