当前位置: 首页 > news >正文

【Linux】正确的关机方法

1. Linux正确的关机方式

        如何关机呢?我想,很多朋友在DOS年代已经有在玩计算机了。在当时我们关闭DOS的系统时,常常是直接关闭电源开关,而Windows 在你不爽的时候,按着电源开关四秒也可以关机,但是在Linux则不建议这么做。

        为什么?在Windows(非NT内核)系统中,由于是单人假多任务的情况,所以即使你的计算机关机,对于别人应该不会有影响才对。

        不过,在Linux下面,由于每个程序(或说是服务)都是在后台执行,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页、发送邮件以及FTP传输文件等,如果你直接按下电源开关来关机时,则其他人的数据可能就此中断,那可就伤脑筋了。

        此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损(因为来不及将数据回写到文件中,所以有些服务的文件会有问题)。所以正常情况下,要关机时需要注意下面几件事。

1.观察系统的使用状态

        如果要看目前有谁在线,可以执行【who】这个命令,而如果要看网络的联机状态,可以执行【 netstat -a】这个命令,而要看后台执行的程序可以执行【ps -aux】这个命令,使用这些命令可以让你稍微了解主机目前的使用状态。当然,就可以让你判断是否可以关机。

我们先看看who 

我们开启另外一个账号来看看

我们再来看看netstat -a

我们再看看ps -aux 

2.通知在线用户关机的时刻

要关机前总得给在线的用户一些时间来结束它们的工作,所以,这个时候你可以使用shutdown
 -k来达到此功能。

我们看个例子

我在bcq_113账号下执行这个关机警告命令,同一服务器下的zs_108就立刻收到了警告 

 

3.正确的关机命令使用

例如shutdown与reboot两个命令。
所以下面我们就来谈一谈几个与关机或重新启动相关的命令。

  • 将数据同步写入硬盘中的命令:sync
  • 常用的关机命令:shutdown
  • 重新启动,关机:reboot、halt、powerof

        由于Linux系统的关机或重新启动是很重大的系统操作,因此只有root才能够执行例如shutdown、reboot 等命令。

2.数据同步写入磁盘:sync

        所有的数据都得要被读入内存后才能够被CPU所处理,但是数据又常常需要由内存写回硬盘当中(例如保存的操作)。

        由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入或读出,系统的性能就不会太好。

        因此在Linux系统中,为了加快数据的读取速度,所以在默认的情况中,某些已经加载内存中的数据将不会直接被写回硬盘,而是先暂存在内存当中,如此一来,如果一个数据被你重复改写,那么由于它尚未被写入硬盘中,因此可以直接由内存当中读取出来,在速度上一定是快很多的。

        不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机(例如停电或是不小心碰到电源)时,由于数据尚未被写入硬盘当中,所以就会造成数据的更新不正常。那要怎么办!

        这个时候就需要sync这个命令来进行数据的写入操作。直接在命令行模式下输入sync,那么在内存中尚末被更新的数据,就会被写入硬盘中。

        所以,这个命令在系统关机或重新启动之前,最好多执行几次。

        虽然目前的shutdown、reboot、halt等命令均已经在关机前进行了sync这个程序的调用,不过多做几次总是比较放心点。
 

2.关机——shutdown

我们使用Xshell来连接我们的云服务器的时候,我们不想使用了,我想很多人的做法是直接关闭Xshll的运行,但是事实上我们的linux真的关机了吗?

答案是肯定没关机啊

那我们怎么来正确的关机呢?

只有root才有关机的权利

我们用man手册查询一下 

shutdown的语法如下

shutdown [选项] 时间

 选项:

  • -k:不要真的关机,只是发送警告信息出去
  • -r:在将系统的服务器停掉之后就立刻重新启动(常用)
  • -h:将系统的服务停掉之后,立即关机(常用)
  • -c:取消已经在进行的shutdown命令内容
  • 时间 :指定系统关机的时间。如果没有填,则默认1分钟后自动进行。

我们看个例子

 执行shutdown后,系统会提醒你这台机器将在10分钟后关机,并把信息显示出来。

我们可以使用shutdown -c来取消这次的关机命令。

我们多看几个例子

shutdown -h now
//立刻关机,其中now相当于时间为0的状态shutdown -h 20:25
//在今天的20:25关机,如果在21:25执行的这条命令,则在隔天的20:25关机shutdown -h +10
//在10分钟后关机shutdown -r +30 'The system will reboot'
//再过30分钟系统会自动重启,并显示后面的信息给在线使用者shutdown -k now 'This system will reboot'
//仅发出警告邮件的参数,系统不会关机,只是吓唬人

3.2.reboot,half,poweroff

还有3个命令可以进行重新启动和关机任务,那就是reboot,half,poweroff

这3个函数调用的函数库基本相同,所以我们使用man去查询reboot的时候,就会显示3个函数的

事实上这3个命令的本质是一样的,我们只需记住其中一个即可

我一般只记poweroff和reboot这两个命令

half
//系统停止,屏幕可能会保留系统已经停止的信息poweroff
//系统关机,所以没有提供额外电力,屏幕空白

相关文章:

  • 通过代理从ARDUINO IDE直接下载开发板包
  • LLMs之gpt_academic:gpt_academic的简介、安装和使用方法、案例应用之详细攻略
  • 板凳----Unix 网络编程卷1: 第三章: 套接字编程简介
  • Leetcode秋招冲刺--(专题7-9)
  • 原生js如何播放m3u8文件的视频,并且实现切换视频源
  • 现代智能宠物喂食器方案定制
  • Node.js的应用场景
  • Java面试题系列 - 第2天
  • 【docker】运行阶段遇到的问题
  • 前端代码生成辅助工具
  • 量化实例分析初探
  • 【linux】网络基础(3)——tcp协议
  • [数据集][目标检测]电缆钢丝绳线缆缺陷检测数据集VOC+YOLO格式1800张3类别
  • labview技巧——AMC框架安装
  • Spring自带的持久层模板类:JdbcTemplate+Spring框架声明式事务管理实战
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 4个实用的微服务测试策略
  • Android开源项目规范总结
  • Android系统模拟器绘制实现概述
  • IDEA 插件开发入门教程
  • iOS | NSProxy
  • Java超时控制的实现
  • JAVA之继承和多态
  • linux学习笔记
  • Magento 1.x 中文订单打印乱码
  • MobX
  • Next.js之基础概念(二)
  • nodejs调试方法
  • 阿里云Kubernetes容器服务上体验Knative
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 给新手的新浪微博 SDK 集成教程【一】
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 怎么将电脑中的声音录制成WAV格式
  • 阿里云服务器如何修改远程端口?
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​决定德拉瓦州地区版图的关键历史事件
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (¥1011)-(一千零一拾一元整)输出
  • (0)Nginx 功能特性
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附源码)springboot教学评价 毕业设计 641310
  • (六)激光线扫描-三维重建
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)u-boot-nand.bin的下载
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • 、写入Shellcode到注册表上线
  • .bashrc在哪里,alias妙用
  • .net core 的缓存方案
  • .NET Micro Framework初体验
  • .NET 动态调用WebService + WSE + UsernameToken
  • .net 发送邮件
  • .NET 中让 Task 支持带超时的异步等待