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

2022-03-08 18:34:14 +08:00
 zmqiang

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

3881 次点击
所在节点    程序员
22 条回复
westoy
2022-03-08 18:36:47 +08:00
防多启的话锁一下 pid 文件就行了

授权限制的话无解的吧, 别人可以放虚拟机里跑啊
0o0O0o0O0o
2022-03-08 18:38:11 +08:00
先默认你只是要实现这个功能,而不是用这个防破解,那就 shared memory
lisongeee
2022-03-08 18:42:24 +08:00
不好意思偏个题,那叫 《奇技淫巧》不叫 《奇淫技巧》
ivanshaoaz
2022-03-08 19:38:57 +08:00
flock
oneegg
2022-03-08 19:40:02 +08:00
以前我们用过一个工具,根据网卡 Mac 生成授权(防止在多台机器上运行),然后单机上占用端口(其实单机也无所谓了,不会有太多性能)。或者参考下 oracle 根据 cpu 线程数授权?
triptipstop
2022-03-08 20:06:00 +08:00
服务端授权
Kilerd
2022-03-08 20:28:49 +08:00
file lock 或者 socket file lock
ch2
2022-03-08 20:31:13 +08:00
用 flock 锁一个 session ,得不到锁的退出
ETiV
2022-03-08 20:33:44 +08:00
虚拟机太重了,放 docker 里就行
3dwelcome
2022-03-08 22:15:27 +08:00
列出 process tree ,查自己的名字。
codehz
2022-03-08 22:17:17 +08:00
把内存吃满,cpu 跑满不就跑不了了?(划掉
启动后把文件删掉(划掉
还可以用抽象 socket (也就 unix socket 但是地址第一个字符是\0 )(也划掉
WeiYuanStudio
2022-03-08 22:45:46 +08:00
@lisongeee 你不纠正这个,我都没发现,大脑语义已经自动进行纠错了。
zmqiang
2022-03-08 23:19:04 +08:00
@lisongeee 学习了,没想到一直用错了🤦‍♂️
LeeReamond
2022-03-09 07:22:53 +08:00
@WeiYuanStudio 汉语顺序不响影读阅啊
ffgrinder
2022-03-09 09:06:58 +08:00
我看过一种实践,就是程序运行之后会写一个 lock 文件,退出的时候删除。然后第二次运行的时候会因为这个文件存在而报错?
ohmycorolla
2022-03-09 09:29:04 +08:00
@lisongeee 我关注到的也是这个 哈哈哈哈
Davic1
2022-03-09 09:42:34 +08:00
在启动新进程之前 ,先 ps 检查一下有没有同名进程存在, 如果有, 先 kill 在启动.
sadfQED2
2022-03-09 09:58:53 +08:00
除非服务端授权,不然无解吧,因为可以放虚拟机或者 docker 里面跑啊
nmap
2022-03-09 11:04:00 +08:00
flock 是正解,简单稳定可靠,生产环境都在用
killva4624
2022-03-09 11:34:14 +08:00
还是得上授权……不然我打个 Docker 镜像就随便用了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX