sshd -D选项,sshd will not detach and does not become a daemon。该如何理解

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
头像
s1978256
帖子: 55
注册时间: 2015-08-24 22:17
系统: ubuntu20.04.4

sshd -D选项,sshd will not detach and does not become a daemon。该如何理解

#1

帖子 s1978256 » 2021-04-04 8:18

ubuntu18.04桌面版,启用sshd服务时,发现unit文件中sshd是以sshd -D方式运行的。说是以不脱离不成为守护进程的方式运行服务。不太明白不成为守护进程是什么意思,服务不都是以守护进程的方法运行于后台来提供服务吗?not detach又是什么意思?服务还能脱离终端以前台方式运行吗?请指点下,谢谢。
头像
astolia
论坛版主
帖子: 6489
注册时间: 2008-09-18 13:11

Re: sshd -D选项,sshd will not detach and does not become a daemon。该如何理解

#2

帖子 astolia » 2021-04-05 23:24

s1978256 写了: 2021-04-04 8:18 ubuntu18.04桌面版,启用sshd服务时,发现unit文件中sshd是以sshd -D方式运行的。说是以不脱离不成为守护进程的方式运行服务。不太明白不成为守护进程是什么意思
用-D的原因很简单,systemd会自动帮你弄成守护进程,不需要sshd自己去做。

s1978256 写了: 2021-04-04 8:18 not detach又是什么意思?服务还能脱离终端以前台方式运行吗?
所谓前台,就是能够接收响应用户鼠标键盘之类的输入事件,后台就是不接收。not detach就是不脱离前台环境。在纯终端环境下,脱离终端=后台
s1978256 写了: 2021-04-04 8:18 服务不都是以守护进程的方法运行于后台来提供服务吗
从传统定义上讲,只要运行于后台等待外部请求来调用的进程就叫服务,也没有特别区分服务和守护进程,很多时候是等价的。但从代码实现上来讲,守护进程除了运行于后台之外还需要满足其他的一些要求,比如要有独立的session和process group。在图形界面环境下,你开个终端模拟器,在里面跑sshd -D xxxx,然后取消窗口输入焦点不再去管它,在这种情况下它虽然不是守护进程,但它也没有接收用户的输入,称它为服务我觉得也没问题。
头像
s1978256
帖子: 55
注册时间: 2015-08-24 22:17
系统: ubuntu20.04.4

Re: sshd -D选项,sshd will not detach and does not become a daemon。该如何理解

#3

帖子 s1978256 » 2021-04-06 8:45

多谢版主,感觉作为操作员,如果能够看懂程序的源代码会对常遇到的概念有更深的理解。不过太难了
头像
astolia
论坛版主
帖子: 6489
注册时间: 2008-09-18 13:11

Re: sshd -D选项,sshd will not detach and does not become a daemon。该如何理解

#4

帖子 astolia » 2021-04-06 9:39

s1978256 写了: 2021-04-06 8:45 多谢版主,感觉作为操作员,如果能够看懂程序的源代码会对常遇到的概念有更深的理解。不过太难了
就我个人的经验来看,对这类概念的深入理解,需要对内核有一定的了解。我当年看的是这本书 https://book.douban.com/subject/3907181/ 看完受益匪浅。需要一定的C语言编程基础,有条件最好直接看英文原版,中文版据说有不少翻译错误。
头像
lilydjwg
论坛版主
帖子: 4250
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: sshd -D选项,sshd will not detach and does not become a daemon。该如何理解

#5

帖子 lilydjwg » 2021-04-13 15:20

s1978256 写了: 2021-04-06 8:45 多谢版主,感觉作为操作员,如果能够看懂程序的源代码会对常遇到的概念有更深的理解。不过太难了
可以读一下《UNIX 环境高级编程》。
回复