通过串口关闭Linux服务器

简介:
简介 

一个真正的服务器一般往往不需要连接键盘、显示器或鼠标等外设。而仅仅需要一个性能稳定的操作系统如Linux和一个网卡。诸如鼠标、键盘等外部设备则往往不必要连接。在运行Linux的机器上,通过网络进行远程管理是最好和最方便的解决方法。 

在买服务器时应该确保在开机BIOS中有设定不需要检测键盘的选项。目前市场上大多数主板厂商的BIOS版本都有这样的选项。但是仍然有一些主板认为自己的的服务器将只运行windows,因此一定会在启动时需要一个键盘,因此不推荐使用这种机器作为服务器使用。 

没有键盘和监视器的计算机非常适合于作为防火墙、web服务器、NFS服务器、邮件服务器的、ADSL网关、DNS服务器的概念等等。而且该机器不一定是功能非常强大的机器。即使一个老的Pentimu100机器,只要拥有足够的内存就可以同时服务数百个客户服务请求。 

服务器不连接键盘、鼠标和显示器的好处是非常方便,因为服务器将只是一个简单的主机箱,可以放在任何适合的地方。但有时候你可能希望能有一个按键来实现安全的关闭服务器而无需首先远程登录服务器运行shutdown命令来实现关闭机器。也可能你现在就在服务器机房,而最近的工作站离你有100多米远;或者你希望某个没有root密码的普通用户关闭服务器。当然直接关闭电源并不是一个好的想法,因为这样可能导致丢失数据并且在下次启动时需要很长时间的文件系统检测。 

解决方法是按照本文的方法安装一个很小的、便宜的串口设备实现安全关机。 

设备 

我们将制作一个小小的、由两个LED和一个按键式开关组成的设备。其中绿色的LED亮表示当前按键式开关是处于激活状态,缓慢闪烁的黄色LED灯表示服务器正在启动或者仍然处于关闭状态。为了实现安全关闭服务器需要持续按下开关3秒钟。 
如果你按了按键开关,亮着的绿色的LED将熄灭,表示正在关机,这时候命令"/sbin/shutdown -t2 -h now"被执行。在服务器关闭过程中黄色的LED将连续闪烁以进行指示。当黄色LED不再闪烁时,你仍然需要等待10秒钟才能关闭服务器电源。当所有的进程被杀掉,磁盘被卸载以后黄色LED将不再闪烁。若你的服务器支持自动关机则你不需要考虑10秒的等待时间,因为服务器会自动关闭电源。 

串口 



关于串口令人感兴趣的是我们可以通过ioctl系统调用来控制其中的几个管脚。这意味着你不需要修改任何内核代码就可以控制连接到串口的LED或这读取按键式开关的状态。串口有足够的电压来驱动两个低电压LED。我们将使用RTS和DTR针来连接LED,并且"Carrier Detect line"被用来读取按键开关的状态。 

串口母头连接器的管脚定义: 

9 PIN-connector 25 PIN-connector Name Dir Description 
1 8 CD input Carrier Detect 
2 3 RXD input Receive Data 
3 2 TXD output Transmit Data 
4 20 DTR output Data Terminal Ready 
5 7 GND -- System Ground 
6 6 DSR input Data Set Ready 
7 4 RTS output Request to Send 
8 5 CTS input Clear to Send 
9 22 RI input Ring Indicator 

电路 

用户需要下面元器件来制作这个串口关机设备: 

1 绿色低电压LED (一个普通LED同样可以工作,但是亮灯过低) 
1 黄色低电压LED 
2 1.5K欧姆的电阻 
1 6.8K欧姆的电阻 
1 小按键开关 
1 串口母头连接器 
这些元器件按照如下的电路图连接在一起。串口电压范围是+/- 10伏特。1.5K电阻适合于低电压的LED,但是普通LED同样适合。不推荐修改电阻器电压和使用外部电源,因为串口控制芯片是主板的一部分,一旦你烧了其中的芯片,你只有修改整个主板。 

 
 


上图是实际的电路板样品图。最后的设备如文章开始图片所示。 

软件 

软件部分是一个小的守护进程。它可以通过/etc/rc.d/rc3.d/的脚本被启动。它通过使用ioctl(fd, TIOCMSET,...)和ioctl(fd, TIOCMGET, ...)函数来读取和写串口。你可以从这里下载程序。软件中包含一个Makefile和安装指示。
















本文转自starger51CTO博客,原文链接: http://blog.51cto.com/starger/18521,如需转载请自行联系原作者




相关文章
|
3月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
5月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
941 21
|
4月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
523 13
|
4月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
1281 0
|
4月前
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
388 0
|
6月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
363 24
|
6月前
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
5月前
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
270 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
|
6月前
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
|
7月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
597 28