当前位置: 首页 > article >正文

linux ubuntu系统运行python虚拟环境,启用端口服务和定时任务

查找当前系统python虚拟环境
find ~ -name “activate” -type f

删除虚拟环境
rm -rf /path/to/virtualenv

创建一个python虚拟环境
python -m venv venv

激活某一个虚拟环境
source /home/mine/pyproject/congesstion/venv/bin/activate

退出某一个虚拟环境
deactivate

查看crontab运行日志
grep CRON /var/log/syslog

查看crontab打印的脚本日志
tail -n 100 /home/mine/pyproject/congesstion/cron.log (只看最近100行) 加上-f可以一值看
tail -n 100 -f cron.log

cat /home/mine/pyproject/congesstion/cron.log (看所有)

创建crontab
crontab -e

查看当前crontab任务
crontab -l

例如,如果您在 crontab 中设置了一个任务如下:

bash

          • /path/to/your_script.sh
            这个任务会每分钟运行一次 /path/to/your_script.sh,无论上一次执行是否完成。

crontab 的运行机制是定时执行任务,不管上一次任务是否完成。这意味着,如果您设置了一个每分钟运行的任务,该任务将每分钟被执行一次,即使上一个任务尚未完成。

如果您希望确保上一个任务完成后才开始下一个任务,您可能需要在脚本中自行添加检查机制,或者使用 flock 命令来确保同时只运行一个实例。例如:

bash

          • /usr/bin/flock -n /tmp/your_script.lock /path/to/your_script.sh

flock 命令会创建一个锁文件,以确保同时只有一个实例在运行。

创建任务示例
*/10 * * * * cd /home/mine/pyproject/congesstion && /home/mine/pyproject/congesstion/venv/bin/python /home/mine/pyproject/congesstion/abnormal_congestion_info_multiprocessing.py >> /home/mine/pyproject/congesstion/cron.log 2>&1

查看当前运行的python程序
ps aux | grep python

启动一个接口服务,让窗口关闭不影响服务
nohup python info2db.py > output.log 2>&1 &
nohup:忽略挂断信号
> output.log:将标准输出重定向到 output.log 文件。
2>&1:将标准错误输出也重定向到 output.log 文件。
&:让进程在后台运行。

查看某一py脚本运行情况
ps aux | grep info2db.py

(mypyproject) mine@mine:~/pyproject/APIdata$ ps aux | grep info2db.py 
mine 2188105 0.0 0.8 43588 33868 pts/0 T 12:28 0:00 python info2db.py 
mine 2188115 0.0 0.8 117372 33920 pts/0 Tl 12:28 0:00 /home/mine/pyproject/mypyproject/bin/python info2db.py 
mine 2248556 0.0 0.0 6680 2304 pts/0 S+ 13:12 0:00 grep --color=auto info2db.py

从你提供的输出看,有两条关于 info2db.py 的进程记录,但它们的状态(STAT 列)都是 TTl。在 ps 命令的输出中:

  • T 表示 “Stopped”,即进程已暂停(通常是由于接收到停止信号,如 Ctrl+Z)。
  • Tl 中的 T 同样表示进程被停止,而后面的 l 是额外的标志(例如反映出该进程是多线程等)。

也就是说,虽然这些进程还存在于进程列表中,但它们目前并没有处于“运行”状态,而是被挂起了。


如何验证和处理

  1. 确认状态
    你可以使用以下命令确认进程状态:

    ps -o pid,stat,cmd -p 2188105,2188115
    

    如果状态仍然显示为 T,说明它们正处于暂停状态。

  2. 恢复运行(如果需要)
    如果你希望让它们继续运行,可以通过如下方式恢复:

    • 通过终端控制:如果这些进程是你当前终端的作业,可以试试 bg 命令来让暂停的作业在后台继续运行。
    • 或者直接发送继续信号:
      kill -CONT 2188105
      kill -CONT 2188115
      
      这样会发送 CONT 信号,使进程从停止状态恢复执行。
  3. 终止进程(如果你想退出)
    如果你的目标是关闭这个脚本,你可以发送 SIGTERM:

    kill 2188105
    kill 2188115
    

    如果进程迟迟不响应,可再使用 SIGKILL 信号(-9)强制终止:

    kill -9 2188105
    kill -9 2188115
    

小结

  • 是否在运行?
    你看到的两个 info2db.py 进程都处于 停止(suspended) 状态,而不是正在正常运行。

  • 如何恢复/关闭?
    如果想继续运行,可用 kill -CONTbg 命令恢复;如果想终结这个脚本,则用 kill 命令结束进程。

如果你在使用 nohup 启动脚本时,本不希望它进入暂停状态,请检查是否在启动时意外按下了 Ctrl+Z 或其他导致进程停住的操作。更多关于后台运行和作业控制的细节,我们可以进一步讨论。


关闭所有python进程
【当用定时任务的时候,会出现上一个任务没完成,后面的任务又开始的情况,有时会用到】
pkill -f python

ubuntu服务器进入root用户
sudo passwd root 设置root初始密码
su -
exit 退出root用户


http://www.kler.cn/a/571558.html

相关文章:

  • 解锁MacOS开发:环境配置与应用开发全攻略
  • 算法--贪心
  • [绘图机器]
  • 2024四川大学计算机考研复试上机真题
  • 使用R包ellmer接入Deepseek
  • [51 单片机] --串口编程
  • 每日定投40刀BTC(6)20250227 - 20250302
  • 浅谈开发环境
  • 004build在设计页面上的使用
  • Linux | Ubuntu 与 Windows 双系统安装 / 高频故障 / UEFI 安全引导禁用
  • JAVA实战开源项目:安康旅游网站(Vue+SpringBoot) 附源码
  • 端到端自动驾驶——cnn网络搭建
  • Go语言--语法基础2--基本编程概念--语法单词说明
  • 基于RAG的法律条文智能助手
  • 增删改查 数据下载 一键编辑 删除
  • AI数据分析:deepseek生成SQL
  • nn.Identity 单位矩阵,同一矩阵
  • vue+elementui 实现上传文件/导入文件的功能
  • Golang的性能分析指标解读
  • Docker概念与架构