背景

在Python上开发在Linux上运行的脚本,有三个控制台:

  • 主操作台:操作(输入)和打印很重要的信息
  • 调试输出台:打印进度和琐碎的信息
  • 报错输出台:打印错误提示

有一个退出功能,结束后关闭所有控制台。

顺序

因为另外两个输出台,是主操作台启动的,所以一般在纯净环境下,主操作台的tty是n(0),报错台是n+1(1),调试台n+2(2)。
获取当前设备的所有tty列表后,是有空值和重复值的,我有一个已有的List处理函数会去重并升序排列。
那么列表会是 [0, 1, 2]。
所以如果需要Kill所有的tty,第一个Kill的会是0

虚拟环境 - Python没发现

当我在Python调试运行时,主操作台并不是tty设备,而是Python调试器,所以需要Kill的列表不包括主操作台。

真实环境 - 运行效果不对

运行了好多遍都没有问题,好家伙一到真实环境就点链子——清理的时候先杀自己。

😰😰😰

这不是我自己随手锻炼的脚本,是领导要用的代码。
还好我提前自己跑了一下,解决了问题,如期顺利交付。
而且也不是很重要的问题,就是有点有碍观瞻。但是万一是个重要的功能,那就变成了:

  • “啊不会吧,在我这里都很顺利的呀”
  • “(给客户说)稍等我重新运行一下脚本……(尴尬的沉默后)……我们先讲PPT吧”

    重要的事情

  • 真实环境开发,或者真实环境测试。

  • 提前完成工作,多测试几遍。

    优化逻辑

    第一次-降序

    第一个认为是排序的问题,讲升序改为了降序,也顺利完成了自己的预期一阵子。

    再次踩坑

    但是降序的逻辑是,自身,一定是最小的。可这条件也挺苛刻,有时候其他的代码或者其他的操作,使逻辑无法达成。
    简单的解释就是:不可能说运行Python控制台tty是第0个,Linux不只是为了运行Python脚本才开机的。

    第二次-删除后添加,使自身在列表末尾

    删除了第一次的降序,先把原始列表中的自身删除(remove),然后再(append)。
    目前能完成自己预料的效果。希望这个逻辑是无懈可击的了🙏🙏🙏😭😭😭😡😡😡

    总结

    一开始想删除的时候,觉得很简单,删除代码+需要删除的对象,结束。
    而且在Python里面运行调试也完全没有问题,还挺信心满满的,万万没想到,真实环境给了我一个大耳瓜子。
    慢慢踩坑,慢慢进步吧~