V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zmqiang
V2EX  ›  程序员

有没有什么奇淫技巧防止 Linux 程序多开?

  •  
  •   zmqiang · 275 天前 · 3046 次点击
    这是一个创建于 275 天前的主题,其中的信息可能已经有所发展或是发生改变。

    除了文件(端口、数据文件等)占用互斥以外,有没有其他方式可以防止一个 Linux 可执行文件,被执行多次形成多个进程?

    22 条回复    2022-03-09 15:08:25 +08:00
    westoy
        1
    westoy  
       275 天前
    防多启的话锁一下 pid 文件就行了

    授权限制的话无解的吧, 别人可以放虚拟机里跑啊
    0o0O0o0O0o
        2
    0o0O0o0O0o  
       275 天前
    先默认你只是要实现这个功能,而不是用这个防破解,那就 shared memory
    lisongeee
        3
    lisongeee  
       275 天前   ❤️ 20
    不好意思偏个题,那叫 《奇技淫巧》不叫 《奇淫技巧》
    ivanshaoaz
        4
    ivanshaoaz  
       275 天前   ❤️ 2
    flock
    oneegg
        5
    oneegg  
       275 天前 via iPhone
    以前我们用过一个工具,根据网卡 Mac 生成授权(防止在多台机器上运行),然后单机上占用端口(其实单机也无所谓了,不会有太多性能)。或者参考下 oracle 根据 cpu 线程数授权?
    triptipstop
        6
    triptipstop  
       275 天前
    服务端授权
    Kilerd
        7
    Kilerd  
       275 天前
    file lock 或者 socket file lock
    ch2
        8
    ch2  
       275 天前
    用 flock 锁一个 session ,得不到锁的退出
    ETiV
        9
    ETiV  
       275 天前 via iPhone
    虚拟机太重了,放 docker 里就行
    3dwelcome
        10
    3dwelcome  
       275 天前 via Android
    列出 process tree ,查自己的名字。
    codehz
        11
    codehz  
       275 天前 via Android
    把内存吃满,cpu 跑满不就跑不了了?(划掉
    启动后把文件删掉(划掉
    还可以用抽象 socket (也就 unix socket 但是地址第一个字符是\0 )(也划掉
    WeiYuanStudio
        12
    WeiYuanStudio  
       275 天前
    @lisongeee 你不纠正这个,我都没发现,大脑语义已经自动进行纠错了。
    zmqiang
        13
    zmqiang  
    OP
       275 天前 via iPhone
    @lisongeee 学习了,没想到一直用错了🤦‍♂️
    LeeReamond
        14
    LeeReamond  
       274 天前
    @WeiYuanStudio 汉语顺序不响影读阅啊
    ffgrinder
        15
    ffgrinder  
       274 天前
    我看过一种实践,就是程序运行之后会写一个 lock 文件,退出的时候删除。然后第二次运行的时候会因为这个文件存在而报错?
    ohmycorolla
        16
    ohmycorolla  
       274 天前
    @lisongeee 我关注到的也是这个 哈哈哈哈
    Davic1
        17
    Davic1  
       274 天前
    在启动新进程之前 ,先 ps 检查一下有没有同名进程存在, 如果有, 先 kill 在启动.
    sadfQED2
        18
    sadfQED2  
       274 天前 via Android
    除非服务端授权,不然无解吧,因为可以放虚拟机或者 docker 里面跑啊
    nmap
        19
    nmap  
       274 天前
    flock 是正解,简单稳定可靠,生产环境都在用
    killva4624
        20
    killva4624  
       274 天前
    还是得上授权……不然我打个 Docker 镜像就随便用了
    wenzhonghu
        21
    wenzhonghu  
       274 天前
    奇淫技巧确实不好找。。。
    ghoul5426
        22
    ghoul5426  
       274 天前
    文件锁不挺好的么,现在 linux 里大把进程,也还是用这种方式。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2799 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 15:38 · PVG 23:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.