由于平常开发主要是在Windows下进行,对于Linux的使用仅局限于服务器端虚拟机,所以初始分区这块一直使用的是默认配置,随着目前Windows Only开发收窄以及考虑今后跨平台开发,后期主力开发系统将逐渐迁移到Linux下,当然发行版肯定是基于Debian的,毕竟这个发行版较熟悉一些。如果主力开发系统迁移到Linux下那么分区又是一个绕不开的话题,所以我又将目前主流的LVM分区管理方式进行了学习,记录本文以备忘。 1 LVM 介绍 LVM 全称是逻辑卷管理(Logical Volume Manager),既然是逻辑卷就需要和传统的物理卷作出区分,传统物理卷一般在安装操作系统的时候进行分区划分,分区多少空间以后就是多少空间,空间不够怎么办?对不起,这个就麻烦了,就好比Windows下经常有人问C盘空间不够怎么办?能不能从其他分区划出一部分空间给C盘?以前我一般建议使用压缩卷或者一些第三 …

看门狗(Watchdog)应该是计算机世界中较为形象的一个动物化的特性,就好像光猫和鼠标一样,在那个混沌初开的计算机时代,技术专家和极客们总会给冷冰冰的机器赋予身边活物的灵性。看门狗的功能简要的来说就是侦测到设备异常并恢复设备状态,这里的恢复一般是重启,就好像公司IT部门在接到设备报障电话总是会问一句:“您尝试重启设备了吗?”,确实,重启能解决绝大部分故障,重启后的设备也能工作在较好的状态,随着时间的推移,待故障再次发生的时候怎么办?再重启一下呗。如果无法确认故障的原因或者无法解决故障,那么重启确实很好,但是这仍然需要有人值守,手动重启。看门狗的出现就是为了解决这个痛点,看门狗每间隔一段时间(Interval)会检测设备状态,检测的方式就是一系列测试(Test),如果测试不通过则自动重启。 第一次接触到看门狗(Watchdog)功能还是在树莓派(Raspberry Pi),当时硬件清单说明 …

经过一段时间的实践,目前我的IT基础设施基本上完成了向Docker容器化的迁移,通过容器的隔离大大减轻了运维的负担,尤其对于我个人来说,可以专注于业务代码的实现,在容器化的具体实践中也遇到一些问题,本文介绍的就是其中容器内进程管理和僵尸进程(Zombie Process)的消除。 1 Linux init进程 使用过Linux系统的同学可能对init这个进程并不陌生,此进程也是内核启动的第一个进程,PID为1,此进程包含多个任务,其中重要的任务之一:接管孤儿进程和消除僵尸进程。 孤儿进程指的是在其父进程执行完成或被终止后仍继续运行的一类进程,而僵尸进程是指子进程先于父进程结束,而父进程没有调用wait或者waitpid等待,这样结束的子进程将会变成僵尸进程,系统会自动将孤儿进程和僵尸进程过继给PID为1的init进程,这样init进程重新成为孤儿进程的父进程并给僵尸进程收尸(消除),避免大 …

日常运维中经常会接触到SSH(Secure Shell,安全外壳协议),通过SSH登录到要管理的服务器,通过各种命令完成整个服务器的维护,这个过程在内网中或者网络质量较高的时候总是很顺畅,但是当网络质量比较差的时候就会出现意外断开连接的情况了,比如比较常见的报错Socket error Event: 32 Error: 10053,这时候往往需要我们重新发起SSH连接,问题是新发起的连接无法继续上一个连接执行的命令,比如在断开连接前我们在虚拟终端执行了一个需要长时间等待的Shell命令,但是命令没执行完网络中断了,实际上此时的命令仍然在执行,如果遇到需要交互的部分还会停下来,只是我们新的连接将看不到命令的输出,可以通过ps aux | grep 进程名定位到进程。本文将介绍对于此类问题的应对方法供参考 1 终端的概念 1.1 什么是TTY TTY 是 Teletype 或 …

本网站自从3月上线以来已经有8个月时间,期间也有各种bug,也勉强修复了,最初网站运行在.NET 5.0平台上,后来一直关注着.NET 6.0的进展,在微软正式Release的时候立马开始适配新的6.0平台,期间也遇到过各种坑,留有这篇文章仅做记载。 1 安装Visual Studio 2022 因为Visual Studio 2019不再支持NET 6.0 SDK,如果想继续在VS平台下开发,必须升级到Visual Studio 2022,对于个人来说我们选择Community版本就可以了,安装完成后选择用最新的VS2022打开你的项目。 2 升级NuGet Package到最新版本 由于我是等到.NET 6.0正式版出来的时候升级的,大部分的第三方包(Package)已经适配了.NET 6.0,可以直接升级,但仍然建议各位查阅项目官方的文档,特别是breaking changes以及用 …

.NET Core多语言本地化支持可以让所开发的应用更加国际化,但是不同操作系统平台之间可能会遇到一些特有的部署问题,本文将介绍我在Linux环境下部署国际化应用过程中遇到的zh-CN中文资源丢失问题的解决方案,当然可能有其他更好的方案,这里不做推荐,本文操作使用的软件环境是Debian 11、ASP.NET 5.0、nginx,仅供参考。 1 多语言国际化应用的建立 .NET Core本地化方式参考《Globalization and localization in ASP.NET Core》,通常情况下,在Startup.cs的ConfigureServices部分会包含如下代码: services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() . …


2021年以前发表的部分文章已经被存档到,这些文章将不再进行更新维护。