- 主题:问几个 kbs 代码的问题
在看 atppp 的那篇 kbsIntro.txt,写的挺好,有些疑问,版上有人知道的话
指点一下,省的我去看代码了。
* 版面文章索引文件有 .DIR, .JUNK,那么删除一个帖子时是把 .DIR 中
对应的 fileheader 去掉,后头索引项往前挪吗?我觉得不大可能是这样,
但 fileheader 里头 FILE_DEL 注释说“版主标记删除 X”,那么不是“已删除
标记”了。
* 我原先以为用户登录就是用的 login 或者 ssh,然后派生个 bbs 作为 shell,
看 INSTALL.debian 后才知道有 bbsd, sshbbsd,请问自己写 telnetd 和 sshd
有什么好处?
* kbsIntro.txt 里提到代码里用了 sysv shm,这个跟 tmpfs + mmap 相比
有什么好处?apue 里提到 sysv shm 有数目和大小限制,而且 sysv 的那套
IPC 机制在进程退出时是不会自动释放的,所以我觉得尽量不用为好。
BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
--
修改:Dieken FROM 123.113.62.*
FROM 123.113.62.*
我随便说说,不知道对不对。。。
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 在看 atppp 的那篇 kbsIntro.txt,写的挺好,有些疑问,版上有人知道的话
: 指点一下,省的我去看代码了。
: * 版面文章索引文件有 .DIR, .JUNK,那么删除一个帖子时是把 .DIR 中
: 对应的 fileheader 去掉,后头索引项往前挪吗?我觉得不大可能是这样,
应该是吧。。好像从FB开始就是这样了。
: 但 fileheader 里头 FILE_DEL 注释说“版主标记删除 X”,那么不是“已删除
: 标记”了。
这个不是已删除标记。
: * 我原先以为用户登录就是用的 login 或者 ssh,然后派生个 bbs 作为 shell,
: 看 INSTALL.debian 后才知道有 bbsd, sshbbsd,请问自己写 telnetd 和 sshd
: 有什么好处?
用于的登陆界面是需要bbs自己做啊。。。如果用login的话,
登陆界面就得和系统一个界面了,或者改login,但是没有这个必要。。。
: * kbsIntro.txt 里提到代码里用了 sysv shm,这个跟 tmpfs + mmap 相比
不知道,我猜测可能是当时没有tmpfs?或者tmpfs不可移植?
: 有什么好处?apue 里提到 sysv shm 有数目和大小限制,而且 sysv 的那套
: IPC 机制在进程退出时是不会自动释放的,所以我觉得尽量不用为好。
就是不能在进程退出的时候释放吧。。。。
: BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
: 的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
--
FROM 211.151.248.*
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 在看 atppp 的那篇 kbsIntro.txt,写的挺好,有些疑问,版上有人知道的话
: 指点一下,省的我去看代码了。
: * 版面文章索引文件有 .DIR, .JUNK,那么删除一个帖子时是把 .DIR 中
: 对应的 fileheader 去掉,后头索引项往前挪吗?我觉得不大可能是这样,
: 但 fileheader 里头 FILE_DEL 注释说“版主标记删除 X”,那么不是“已删除
: 标记”了。
: * 我原先以为用户登录就是用的 login 或者 ssh,然后派生个 bbs 作为 shell,
: 看 INSTALL.debian 后才知道有 bbsd, sshbbsd,请问自己写 telnetd 和 sshd
: 有什么好处?
可以自定义身份验证机制。不过你也可以用bbsd -i(inetd模式)配合ssh
: * kbsIntro.txt 里提到代码里用了 sysv shm,这个跟 tmpfs + mmap 相比
: 有什么好处?apue 里提到 sysv shm 有数目和大小限制,而且 sysv 的那套
: IPC 机制在进程退出时是不会自动释放的,所以我觉得尽量不用为好。
所以有clearipc.sh这个脚本。大概是历史问题?
: BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
: 的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
--
FROM 124.207.144.*
【 在 minux (:(){:|:&};:) 的大作中提到: 】
: 标 题: Re: 问几个 kbs 代码的问题
: 发信站: 水木社区 (Tue Apr 8 01:15:02 2008), 转信
:
: 我随便说说,不知道对不对。。。
:
: 【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: : 在看 atppp 的那篇 kbsIntro.txt,写的挺好,有些疑问,版上有人知道的话
: : 指点一下,省的我去看代码了。
: : * 版面文章索引文件有 .DIR, .JUNK,那么删除一个帖子时是把 .DIR 中
: : 对应的 fileheader 去掉,后头索引项往前挪吗?我觉得不大可能是这样,
: 应该是吧。。好像从FB开始就是这样了。
我找到 delete_record 那个函数了,确实是 mmap 后把索引项往前 memcpy 的,
这样如果突然断电,.DIR 岂不是要坏掉了?
: : 但 fileheader 里头 FILE_DEL 注释说“版主标记删除 X”,那么不是“已删除
: : 标记”了。
: 这个不是已删除标记。
: : * 我原先以为用户登录就是用的 login 或者 ssh,然后派生个 bbs 作为 shell,
: : 看 INSTALL.debian 后才知道有 bbsd, sshbbsd,请问自己写 telnetd 和 sshd
: : 有什么好处?
: 用于的登陆界面是需要bbs自己做啊。。。如果用login的话,
: 登陆界面就得和系统一个界面了,或者改login,但是没有这个必要。。。
似乎改 /etc/issue 可以修改登录画面,只是提示符那里貌似得修改 login 了,
普通用户登录也这个画面我觉得也没啥不好,反正登录后是正常的 shell,而且
改 login 比改 telnetd、sshd 容易多了,我看了下 sshbbsd 代码,是从 sshd
修改过来的。
: : * kbsIntro.txt 里提到代码里用了 sysv shm,这个跟 tmpfs + mmap 相比
: 不知道,我猜测可能是当时没有tmpfs?或者tmpfs不可移植?
: : 有什么好处?apue 里提到 sysv shm 有数目和大小限制,而且 sysv 的那套
: : IPC 机制在进程退出时是不会自动释放的,所以我觉得尽量不用为好。
: 就是不能在进程退出的时候释放吧。。。。
服务器突然崩溃后这些资源不会自动释放,需要设置 atexit 钩子。
: : BTW,问这些不是说 kbs 的实现不好怎么的,我其实是 unix 编程初手,kbs
: : 的做法跟我凭空想的很不一样,不知道里头藏了什么玄机。
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 211.151.248.*]
--
FROM 211.157.41.*
修改了之后是同步写入还是等unmmap的时候才写入?
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 我找到 delete_record 那个函数了,确实是 mmap 后把索引项往前 memcpy 的,
: 这样如果突然断电,.DIR 岂不是要坏掉了?
: 似乎改 /etc/issue 可以修改登录画面,只是提示符那里貌似得修改 login 了,
: 普通用户登录也这个画面我觉得也没啥不好,反正登录后是正常的 shell,而且
: 改 login 比改 telnetd、sshd 容易多了,我看了下 sshbbsd 代码,是从 sshd
: 修改过来的。
: 服务器突然崩溃后这些资源不会自动释放,需要设置 atexit 钩子。
--
FROM 124.207.144.*
【 在 JulyClyde (七月) 的大作中提到: 】
: 可以自定义身份验证机制。不过你也可以用bbsd -i(inetd模式)配合ssh
不知道 login 用 pam 能否达到 bbs 组的用户跟普通用户的身份验证机制
不一样的效果。
: 所以有clearipc.sh这个脚本。大概是历史问题?
哦,可能是这个原因。
--
FROM 211.157.41.*
没有显式的刷新操作,写完后 munmap 了,依赖 OS 的刷新吧。
kbsbbs.10283/libBBS/record.c:569:delete_record
【 在 JulyClyde (七月) 的大作中提到: 】
: 修改了之后是同步写入还是等unmmap的时候才写入?
--
修改:Dieken FROM 211.157.41.*
FROM 211.157.41.*
kbs没有提供pam模块。呵呵
【 在 Dieken (风催草低 - 明月何尝不照人) 的大作中提到: 】
: 不知道 login 用 pam 能否达到 bbs 组的用户跟普通用户的身份验证机制
: 不一样的效果。
: 哦,可能是这个原因。
: ...................
--
FROM 124.207.144.*
用sysv的原因是,mmap在linux上的实现,在进程退出的时候,会强制dirty page
进行一次flush,这个会造成很多无谓的i/o。所以对于读写频繁的.PASSWDS采用了
sysv定时flush的方式,控制不必要的i/o
既然有一个ipc,有些其他地方就懒得改成mmap了....
【 在 JulyClyde (七月) 的大作中提到: 】
: 可以自定义身份验证机制。不过你也可以用bbsd -i(inetd模式)配合ssh
: 所以有clearipc.sh这个脚本。大概是历史问题?
--
FROM 61.135.179.14
既然是dirty page,总得有明确的指示是保存还是放弃吧?
【 在 KCN (毒中之毒~strongest) 的大作中提到: 】
: 用sysv的原因是,mmap在linux上的实现,在进程退出的时候,会强制dirty page
: 进行一次flush,这个会造成很多无谓的i/o。所以对于读写频繁的.PASSWDS采用了
: sysv定时flush的方式,控制不必要的i/o
: 既然有一个ipc,有些其他地方就懒得改成mmap了....
--
FROM 124.207.144.*