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