在C语言编程中,volatile关键字被用来告知编译器某个变量的值可能会在意料之外被改变,从而避免编译器对该变量进行优化的情况。尽管volatile在多线程编程中应用广泛,但其高级用途不容忽视。在本文中,我们将深入探讨volatile关键字的高级应用,提供详细的C语言代码示例并进行详细解释。
通过使用volatile关键字,程序员可以明确告知编译器某些变量的值可能会在未知时刻被外部因素修改,从而确保编译器不会对这些变量进行优化处理。在多线程编程中,volatile通常用于标记多线程共享的变量,以确保这些变量可能被其他线程修改,从而避免出现意外行为。
除了多线程编程中的常见用法之外,volatile关键字还可以用于一些高级应用场景,例如与硬件进行交互时的变量标记,处理中断服务程序中的外部中断信号等。通过具体的C语言代码示例,我们可以更好地理解volatile关键字的使用方法以及它在不同场景下的作用机制,进一步提高对C语言编程中关键概念的理解和应用能力。
每个值均以秒为单位,并可使用以下命令轻松检查。
% cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
linuxmi@linuxmi ~/www.linuxmi.com
% cat /proc/sys/net/ipv4/tcp_keepalive_probes
9
linuxmi@linuxmi ~/www.linuxmi.com
% cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75
这意味着什么呢?保活时间为7200秒,即120分钟(2小时)。但是,这并不意味着您的SSH会话将保持活跃2小时,因为以下两个参数至关重要。
系统的默认设置在75秒间隔内发送9个探测包,总计675秒,之后会认为会话失败并关闭。
换句话说,在大约11分钟后,如果您没有在终端中输入任何内容,您的SSH会话将因不活动而被终止。
当然,您可以调整这些设置,但这并不是正确的方法。SSH提供了保持会话活动的机制,我们将在下面向您展示。
如何保持SSH会话活动
保持SSH会话活动是一个涉及客户端和服务器双方配置的过程。
Linux****客户端配置
在客户端,即您的Linux桌面系统中,在您的主目录中创建一个文件(如果不存在)“~/.ssh/config”。
linuxmi@linuxmi ~/www.linuxmi.com
% touch ~/.ssh/config
linuxmi@linuxmi ~/www.linuxmi.com
% mkdir ~/.ssh
mkdir: 无法创建目录 "/home/linuxmi/.ssh": 文件已存在
linuxmi@linuxmi ~/www.linuxmi.com
% chmod 700 ~/.ssh
linuxmi@linuxmi ~/www.linuxmi.com
% nano ~/.ssh/config
以下是每个选项的含义:
-
Host:指定的配置仅适用于跟在“Host”关键字后面列出的主机。因为我们使用了通配符(*),它们适用于所有主机。 -
ServerAliveInterval:设置一个超时间隔(以秒为单位),如果在该间隔内未从服务器收到任何数据,SSH将通过加密通道发送一条消息以请求服务器响应。默认值为0,表示不会向服务器发送这些消息。 -
ServerAliveCountMax:设置可发送的服务器活动消息数,而SSH未从服务器收到任何消息。如果在发送服务器活动消息时达到此阈值,SSH将与服务器断开连接,终止会话。默认值为3。
换句话说,客户端将每120秒(2分钟)向服务器发送一条保活消息,共30次。120 * 30 = 3600秒,即1小时。即使没有活动,这是我们的SSH会话保持活跃的总时间。
Windows 客户端配置
为保持他们的 SSH 会话活跃,使用 PuTTY 进行远程 SSH 访问的 Windows 用户必须将“保持活动间隔秒数”选项在“连接”选项卡中设定为大于零的数值。
在下面展示的示例中,我们将该数值设定为 60,这意味着每分钟 PuTTY 客户端将向服务器发送一个保持活动消息以保持 SSH 连接处于活动状态。
在 PuTTY 上更改保持活动设置
当然,不要忘记保存您对 PuTTY 会话所做的更改(“类别” > “保存的会话” > “保存“ “Category” > “Saved Sessions” > “Save“)。
服务器端配置
更改服务器的超时选项会影响所有连接到服务器的客户端。您需要编辑“/etc/ssh/sshd_config”文件来执行此操作。
sudo nano /etc/ssh/sshd_config
然后设置以下三个选项:
TCPKeepAlive yes
ClientAliveInterval 120
ClientAliveCountMax 30
在 SSH 服务器上更改保持活动设置
这三个选项的含义如下:
-
TCPKeepAlive:指定系统是否应向客户端发送 TCP 保持活动消息。 -
ClientAliveInterval:设置超时间隔(以秒为单位)。如果从客户端未收到数据,则 SSH 服务器会通过加密通道发送消息,请求客户端的响应。默认值为 0,表示不会向客户端发送这些消息。 -
ClientAliveCountMax:设置可以在没有从客户端收到任何消息的情况下发送的客户端活动消息的数量。如果在发送客户端活动消息时达到了此阈值,则 SSH 服务器将断开客户端连接,终止会话。默认值为 3。
就像上面客户端配置的情况一样,SSH 服务器会保持连接活跃一个小时(120 * 30 = 3600 秒)。
最后,重新启动 SSH 服务器:
sudo systemctl restart ssh
总结
实施 SSH 超时和保持活动呈现了增强安全性和确保可靠连接之间微妙的平衡。
SSH 超时和保持活动的好处在于它们自动终止空闲会话,从而减轻未经授权访问和潜在攻击的风险,有助于网络安全。
另一方面,过于激进的超时和保持活动设置会导致意外断开连接,影响生产力并引起用户的沮丧。
因此,为了找到合适的平衡,管理员必须仔细考虑他们的网络基础设施和用户行为。这样做可以为远程通信创造一个安全有效的环境,促进用户满意度和数据保护。
有关其他配置文件选项的更多信息,请参阅客户端 client-side 或服务器端 server-side 的手册文件。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !