您尚未登录。

#1 2018-03-15 17:36:32

xtricman
喵了个咪
注册时间: 2012-12-26
帖子: 327

pacman更新文件是什么方式?

删除掉文件系统中原来的名字,然后再创建新的文件?
如果这样,当前已经open的文件就都不会更新咯?

如果这样,那怎么做到热更新系统?就算内核可以kexec,但是systemd之类的服务进程,好像不会热更新的?

opera又是怎么感知到pacman更新了opera的?inotify检测文件系统改变么?

离线

#2 2018-03-15 18:12:21

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,592
个人网站

Re: pacman更新文件是什么方式?

已经打开的文件会继续用啊,所以更新之后 lsof -Pn | grep deleted 会有一堆结果。
systemd 的话,系统级那个会被执行 systemctl daemon-reexec 的。

离线

#3 2018-03-15 18:41:23

xtricman
喵了个咪
注册时间: 2012-12-26
帖子: 327

Re: pacman更新文件是什么方式?

依云 说:

systemd 的话,系统级那个会被执行 systemctl daemon-reexec 的。

啊,查了一下这个命令和安装脚本,那等于systemd --user就还是旧的了。

但是我就是想啊,如果本次Syu只有lib更新了,那那些已经被进程打开的lib就删不掉了,进程也感知不到,那这次更新不等到进程重启就没用了?

离线

#4 2018-03-15 18:51:06

xtricman
喵了个咪
注册时间: 2012-12-26
帖子: 327

Re: pacman更新文件是什么方式?

话说Wiki上说需要手工向kexec.target添加一个service,如果我不添加,systemctl kexec不会自动重新加载/boot/vmlinuz-linux么?

离线

#5 2018-03-15 18:52:55

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 4,592
个人网站

Re: pacman更新文件是什么方式?

xtricman 说:

啊,查了一下这个命令和安装脚本,那等于systemd --user就还是旧的了。

但是我就是想啊,如果本次Syu只有lib更新了,那那些已经被进程打开的lib就删不掉了,进程也感知不到,那这次更新不等到进程重启就没用了?

对。自己跑一下呗。
更新之后,火狐想打开新内容进程时会感知到的(BOOM!)。

离线

页脚