普通视图

发现新文章,点击刷新页面。
昨天以前首页

BASH: 如何使用 cURL 命令获取 HTTP 响应代码?

2025年4月18日 05:38

检查运行 curl命令 后的HTTP响应代码,您可以使用 curl 的 -w` 选项,这样可以指定自定义输出格式。以下是命令:

curl -o /dev/null -s -w "%{http_code}\n" <URL> 

您可以将HTTP响应代码保存到BASH变量中,如下所示:

resp=$(curl -o /dev/null -s -w "%{http_code}\n" <URL>) 

解释:

  • -o /dev/null: 丢弃响应体的输出。
  • -s: 以静默模式运行curl(不显示进度或错误信息)。
  • -w “%{http_code}\n”: 仅输出HTTP响应代码。

将 <url> 替换为您正在检查的实际URL。

如何获取HTTP响应代码和输出?

如果您想同时获取HTTP输出,您需要使用 `-o` 来重定向输出。例如:

resp=$(curl -s -w "%{http_code}" -o /tmp/curl_output.txt <URL>) 

然后,BASH 变量 $resp 包含HTTP响应代码,而文件 /tmp/curl_output.txt 则会保存请求的输出文本。

BASH小技巧

英文:How to Get HTTP Response Code using cURL Command?

本文一共 176 个汉字, 你数一下对不对.
BASH: 如何使用 cURL 命令获取 HTTP 响应代码?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c BASH: 如何使用 cURL 命令获取 HTTP 响应代码? BASH BASH LINUX 小技巧
The post BASH: 如何使用 cURL 命令获取 HTTP 响应代码? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. 比特币钱包线上和线下有啥区别? 我玩比特币比较晚, 最近1比特币能到1900多英镑, 真是吓人. 之前有一个线下的比特币钱包, 最近又在 CoinBase 开了一个线上的比特币钱包. 线上和线下的比特币钱包都是一长串的字母数字组合, 很像随机字符串 比如: 1J88t5UAgKBHhMgzkyH9bpY5mPdCYAe5XQ 这个明显是唯一的, 可以在 BlockChain 上查到所有交易记录和余额:...
  7. LOGO 海龟作画 系列 一 之 给孩子最好的编程启蒙语言 – Logo Turtle Graphics – Series 1 – Best Introductory Programming for Kids I think the LOGO turtle graphic is the best introductory programming language for the kids....
  8. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...

如何使用 GDB 或 LLDB 调试器重复运行程序直到错误

2025年3月21日 04:35

gdb-debugger 如何使用 GDB 或 LLDB 调试器重复运行程序直到错误 gdb / lldb 小技巧 程序员 编程 计算机 计算机 调试

GDB Debugger 调试器

如何使用 GDB 或 LLDB 调试器重复运行程序直到发生错误

在调试程序时,有时候我们希望一直运行程序直到遇到错误。GDB(GNU 调试器)和 LLDB(LLVM 调试器)都提供了自动化此过程的方法。

这在调试一些不稳定的程序非常有用,例如有时候写的一些单元测试可能随机崩溃SegFault。最近我在调试一个测试每跑1000次就有一次崩溃的时候就发现gdb/lldb调试器非常有用。

简介:GDB vs LLDB

GDB(GNU 调试器)和 LLDB(LLVM 调试器)是用于低级别应用程序调试的强大工具。GDB 传统上用于由 GCC 编译的程序,而 LLDB 是 LLVM 项目的一部分,与 Clang 无缝配合。两者都提供强大的功能,但 GDB 在 Linux 环境中更常见,而 LLDB 在 macOS 上以及处理 Swift 时更受青睐。

自动化执行直到发生错误

调试重复性任务可能很乏味。通过自动化这些任务,直到发生错误,可以节省大量时间和精力。以下是如何在 GDB 和 LLDB 中设置重复执行直到遇到错误的步骤。

GDB 脚本

下面是一个 GDB 脚本,它会重复执行,直到发生错误:

repeat_until_error.gdb

while 1
  run
  if $_exitcode != 0
    echo "发生错误,退出码:$_exitcode\n"
    break
  end
end

要运行此脚本,将其保存为 repeat_until_error.gdb,然后使用以下命令执行 GDB:

gdb -q -x repeat_until_error.gdb ./your_program

或者,当你处于 gdb 提示符时,运行:

source repeat_until_error.gdb

“run” 命令用于启动程序,你可以为它添加参数,例如:

run param1 param2 ...

你也可以使用 “r” 作为 “run” 的简写。

LLDB 脚本

类似地,在 LLDB 中,你可以使用以下脚本实现相同的效果:

repeat_until_error.lldb

while (1)
  run
  process launch
  if (process status != 0)
    script print("发生错误,退出码:", lldb.process.GetExitStatus())
    break
  end
end

要运行此脚本,将其保存为 repeat_until_error.lldb,然后运行:

lldb --source repeat_until_error.lldb ./your_program

或者,在 lldb 提示符处运行:

source repeat_until_error.lldb

在 “run” 命令之后,你还可以通过附加参数来启动程序,例如:

run param1 param2

总结

GDB 和 LLDB 都提供了方便的方法来自动化调试任务,选择使用哪种工具通常取决于你所使用的平台和工具链。GDB 与 GCC 的集成使其成为 Linux 开发者的首选,而 LLDB 在与 Clang 和 macOS 的无缝配合方面同样强大。

自动化重复的调试命令可以为你节省大量时间和精力 —— 无论你使用 GDB 还是 LLDB,这些脚本都能帮助你简化工作流程。

gdb / lldb 调试

英文:How to Repeat Until Errors using GDB or LLDB Debugger?

本文一共 603 个汉字, 你数一下对不对.
如何使用 GDB 或 LLDB 调试器重复运行程序直到错误. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 如何使用 GDB 或 LLDB 调试器重复运行程序直到错误 gdb / lldb 小技巧 程序员 编程 计算机 计算机 调试
The post 如何使用 GDB 或 LLDB 调试器重复运行程序直到错误 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  4. 比特币最近波动有点大: 一天牛市一天熊 比特币10万美金以内都是最后上车的机会! 比特币近期的价格波动可以归因于多个关键因素,包括地缘政治动态、监管变化以及加密行业内的重大安全事件。其中一个主要影响因素是美国前总统唐纳德·特朗普对乌克兰和加密货币监管的立场变化。据报道,特朗普再次当选,他可能会推动减少美国对乌克兰的支持,这可能会影响全球金融市场和风险偏好。同时,特朗普正在将自己塑造为亲加密货币的候选人,表示有意让美国成为一个更加友好的加密货币环境。这一立场引发了市场对监管政策可能发生变化的猜测,导致市场情绪在乐观和不确定性之间波动。 特朗普对俄乌战争的态度 美国第43届总统唐纳德·特朗普已经在2025年1月当选并正式上任(第二次),那么他的政策可能会对比特币价格的波动产生更加直接和显著的影响。他政府对乌克兰和加密货币监管的立场已经不再是猜测,而是正在实际塑造市场的关键力量。 特朗普(Donald Trump)减少美国对乌克兰的支持,全球投资者可能会预期地缘政治稳定性发生变化,从而增加对比特币作为避险资产的需求。同时,他的亲加密货币立场可能正在推动市场的乐观情绪。如果他的政府推出有利于加密行业的监管政策,例如明确的合规指南或减少监管审查,可能会吸引更多机构投资者进入市场,并促进更广泛的加密货币采用。然而,政策的快速变化也可能导致短期市场剧烈波动,因为市场需要时间来消化新的政策动向。 朝鲜黑客盗取Bybit交易所15亿美元的ETH 另一个显著影响比特币价格的事件是近期涉及朝鲜黑客组织“Lazarus”的15亿美元以太坊被盗案件。据报道,Bybit交易所(全球第二)这些被盗的ETH已经被清洗,此次大规模黑客攻击引发了人们对加密行业安全性的担忧。此类安全事件不仅会削弱投资者信心,还可能引发更严格的监管审查,导致短期市场动荡。此外,被盗资金的大规模流动和出售可能对市场流动性造成冲击,进一步加大价格波动。随着这些事件的持续发酵,比特币价格正受到政治决策、监管预期以及安全挑战等多重因素的影响。 与此同时,与朝鲜黑客组织 Lazarus 相关的 15 亿美元以太坊被盗事件仍在影响加密市场。由于这些被盗 ETH 已被清洗,人们对加密行业安全漏洞的担忧持续存在,同时也可能引发更严格的监管审查。政治、监管和安全等多重因素交织在一起,共同导致了比特币近期的剧烈价格波动。...
  5. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...
  6. 5美元的 Raspberry PI – Zero 树莓PI Raspberry PI 来自于英国, 从第一代模型 A, 到后来的 B, B+ 甚至 是2代, 休积都很小 价钱也一直在 30美元左右. 当然在英国会贵一点 大概在...
  7. 英国硬盘数据恢复失败的经验和教训 上一周, 不小心触碰了机箱后面的电源线, 接触不良, 结果机器再也开不起来了. 显示 Invalid Disk, Replace. 大概就是主硬盘MBR区坏了. 我以为是接触不良, 于是反复插把硬盘卡槽好几次, 机器认不出, 硬盘也没声音, 于是便网上搜索了一个剑桥评价最高的 硬盘数据恢复公司...
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...

Chromebook折腾之2025

2025年3月5日 14:40

最近淘了一台洋垃圾Chromebook,折腾了一段时间,目前已经基本在日常使用了。在折腾过程中查找了许多的网上资料,解决了不少中文环境使用ChromeOS的问题,这里就分享一下Chromebook的选购和软件安装。

ChromeOS是什么

ChromeOS是Google从2009年开始开发的项目,可以简单理解为在Linux内核上运行的,以Chrome浏览器作为桌面环境,主要功能也是运行Web应用程序的一个操作系统。在之后,该系统也支持了运行Android应用程序,以及通过容器运行Linux程序,这样一套组合下来,我们就获得了一个原生支持运行Android应用,Linux应用和Web应用的系统,这比在Windows下面折腾Linux子系统,Android子系统要流畅得多。

目前为止,想要运行ChromeOS有两种方式,第一种就是购买ChromeBook,也就是搭载了ChromeOS的笔记本电脑或者触屏电脑。第二种方式,Google在2022年发布了ChromeOS Flex,让用户可以在经过认证的设备上安装ChromeOS Flex,包括一些Mac电脑也是支持的。

而想要激活ChromeOS,你需要有可以顺畅访问Google服务的网络。如果你没有这个条件,来自中国的fydeOS它是一个本地化的ChromeOS,内置了本地化定制和国内可以使用的网络服务,感兴趣可以去他们的官网看看。

Chromebook适合谁

ChromeOS最初设计出来也主要是方便云端办公,提供简单、快速、安全的环境,因此它更适合于对于性能没有要求,而希望简单吗体验的人。比如说:使用在线文档的文字工作者,得益于Google doc,飞书文档,语雀等文字和表格类在线工具,Chromebook简单的功能以及比较长的续航是一个性价比比较高的选择。除此之外,对于性能没有要求的开发者和数码极客或许也会考虑由于一台自己的Chromebook。

最新的Chromebook有两档标准,普通的Chromebook,以及Chromebook Plus,普通的Chromebook可能只搭载Intel Celeron处理器以及4GB的ROM, Plus也只是它性能的两到三倍。目前Chromebook在国内没有销售,通过天猫国际等平台平台购买的新机器一般也都比较贵没有性价比。对于普通用户国内平台在销售的平板电脑或者笔记本都比它有性价比的多。

而对于我所说的极客用户来说,在闲鱼淘一台洋垃圾Chromebook可能是一个比较有性价比的选择。比如我这台Lenovo Duet5,骁龙7C,8GB内存,256GB存储,13寸的OLED屏幕,搭配触控笔加键盘,支持平板模式和桌面模式,只要不到1500块钱,相比于iPad,看起来还是有点性价比的。

Chromebook选购指南

再次强调一下选择Chromebook需要保证有能够激活Google服务的网络环境。不具备的可以考虑fydeos,以及他们的Fydetab Duo设备。

在淘设备的时候,因为我们可能买到的是2019年或者更早发布的设备,我们需要关注设备的自动更新到期时间(简称AUE),所有ChromeOS设备都能够借助于Chrome浏览器几乎同步的更新节奏收到Google的定期更新。因此决定购买之前可以在Google的这个页面看一下该产品型号的AUE日期。

其次,电池健康度也是选择二手Chromebook产品时候值得关注的信息。本身购买Chromebook就是为了优秀的能耗和续航体验,电池不行这些就没办法完全达成了。购买前最好和商家沟通让对方打开「关于 ChromeOS > 诊断」界面并提供截图,可以在这个界面中清楚地看到当前设备的电池寿命、循环计数等信息。从这里可以大概预估该设备之前的运行时长,并且电池寿命高于90%应该是比较好的。我在这里就踩到了坑,因为是专门的二手商家,说了是库存设备,并且说没法激活设备不愿意提供截图导致我收到的设备实际上电池已经循环过了300多次,电池寿命只有86%,同时因为运行时间过长oled屏幕也有一点烧屏了。

最后,屏幕这块OLE屏幕可以让卖家把屏幕亮度跳到最低拍照这样也能看到一部分屏幕的缺陷,以及全白页面拍照测试等。关于型号的话,考虑到Android应用的兼容性,我选择的是ARM芯片的Duet设备,如果更加关注Linux应用的兼容性或许可以考虑X86芯片的设备。设备的型号这块,除了我提到的Duet,Google推出的Pixelbook Go, Pixelbook也是可以考虑的型号。

最后的最后,实际购买之前可以考虑使用现有设备刷如ChromeOS Flex或者fydeOS体验一下再做决定。

ChromeOS 初始化

ChromeOS本身的内核是Linux,但是为了安全,我们是没办法在上面安装Linux应用的,同时Android应用的安装也必须通过Play store才能安装,因此如果想要获得系统的完全控制权是需要开启开发者模式的。开启开发者模式后可以直接安装Android APK文件,同时也拥有了Root权限,可以在系统做修改,比如安装类似Mac下面homebrew的chromebrew工具等。但是代价是,每次启动电脑都会先跳出一个60s的警告页面(可以跳过),而在普通模式和开发者模式之间切换,所有的系统数据都会被清除,需要提前做好备份。

在我体验完开发者模式之后,决定还是回到安全模式。对于大部分人也都不需要开发者模式,我们通过Linux子系统开启Linux子系统的开发者模式,也就可以通过ADB来安装Android应用。因此如果想要开启开发者模式可以查看网上的资料。 初始化,可以通过家庭的软路由,或者手机上面开启Clash作为代理服务,在连接完网络后,修改网络中的代理服务,把手机或者软路由作为Chromebook的代理服务器,从而可以激活服务。同时要系统更新和安装Linux子系统需要稳定的翻墙服务,不然可能会失败。

ChromeOS初体验

ChromeOS内已经内置了一部分Web应用,包括了Google全家桶和一些工具应用。在未连接键盘鼠标前是平板模式,连接了之后为桌面模式。

以上为桌面模式,打开两个应用平铺,左下角为应用列表。

以上为平板模式的桌面

很多场景也可以通过浏览器进行,对于一些提供了PWA的网站,可以点击地址栏的安装按钮,这样就会生成一个桌面图标方便下次使用。也可以在Chrome应用商店安装扩展程序。

因为登录了Google账号,Chrome浏览器上安装的扩展程序,一些设置,书签等也都会同步过来。

同时ChromeOS还支持与Android手机连接,能够对手机进行简单的控制,包括手机的静音,地理位置权限开关,控制手机的热点并连接上网,查看手机最近的照片,打开的Chrome标签页等,如下图所示。

对于中文输入,Chrome内置了拼音输入法,如果使用双拼的话可以考虑使用fydeos提供的真文韵输入法,不过真文韵输入法没有软键盘,在平板模式还是没法使用,另外真文韵在Linux应用也无法使用,解决方法后面再说。

配置Linux子系统

Linux系统模式是未开启的,需要首先到「关于 ChromeOS 」中开发者部分开启,最新版本默认安装的是Debian 12,因为需要到Google的服务器上下载Linux镜像文件,这个过程可能非常慢,我这里差不多半个小时才完成。

有了Linux系统,我们首先需要安装中文环境,执行如下命令安装中文字体:

1
sudo apt install fonts-wqy-microhei fonts-wqy-zenhei fonts-noto-cjk

Linux上面是没法使用系统的输入法的,我们需要安装Linux的中文输入法,我这里就是安装的fcitx5,可以使用如下命令安装:

1
sudo apt install zenity fcitx5 fcitx5-rime

安装之后在 /etc/environment.d/ 文件中创建一个im.conf文件,并且写入如下内容:

1
2
3
4
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx

之后手动打开fcitx5,并且配置好自己的输入法选项就可以在Linux中使用应用了。

除此之外,就跟正常使用linux一样,安装的Linux应用如果是有桌面图标的也会在Chrome的应用列表中展示,同样对于deb文件,也可以直接在chrome的文件管理器中直接点击安装。

现在ChromeOS也支持了安装多个容器,也就是说可以运行多个不同的Linux,感兴趣的可以看看这位博主的这篇安装ArchLinux的文章

安装微信

微信算是每个人都必须有的通信工具了,在ChromeOS中有两种方式可以安装,一个是安装到Android子系统,直接在Google play下载就行了,另一种则是安装Linux版本的桌面微信。

但既然有这么大的屏幕,当然是桌面版使用体验更好了。我这里介绍一下在我的Debian12下面安装arm版本的微信的过程吧,因为微信的有一些依赖系统内是没有的组件需要安装。

1
sudo apt install libatomic1 -y && wget -O libwebp6.deb https://security.debian.org/pool/updates/main/libw/libwebp/libwebp6_0.6.1-2.1+deb11u2_arm64.deb && sudo dpkg -i libwebp6.deb

除了这个之外还缺少一个libtiff5,debian12上面已经有libtiff6了,我们创建一个链接就可以了。

1
sudo ln -s /usr/lib/aarch64-linux-gnu/libtiff.so.6 /usr/lib/aarch64-linux-gnu/libtiff.so.5

之后我们应该就可以使用Linux版本的微信了。

另外还推荐在Linux子系统安装stalonetray,这样就可以展示Linux的软件的托盘,比如去查看输入法状态,和切换输入选项等。可以参考这篇文章

对于Linux直接在Chrome点击deb文件安装的应用,虽然安装完了但是有可能点击图标打开的时候总是在转圈却打不开,这可能是因为程序出错了,可以在命令行中手动运行,这样错误日志就可以查看了。

配置安装非Google play的Android应用

如果想要安装国内的应用,可能很多都无法在Google play商店下载,一种方式是打开ChromeOS的开发者模式,但是那样每次开机就要忍受开机警告。我这里选择通过Linux子系统来安装。

首先打开「关于 ChromeOS -> Linux开发环境 -> 开发Android应用」,将其中的启用ADB调试打开。

点击启用的时候会有如下提示:

并且如果停用的话也会将Chromebook恢复出厂设置,所有数据被清空,使用这个功能需要谨慎。

再打开Linux命令行,执行如下命令安装adb工具。

1
sudo apt install adb

之后打开「设置 -> 应用 -> 管理Google Play 偏好设置 -> Android设置」,这样就进入Android系统的设置应用中了,可以在关于设备中多次点击版本号,开启Android子系统的开发者模式,在然后到系统,开发者选项中打开ADB调试。之后在linux命令行执行如下命令并显示正常就说明配置好了。

1
adb devices

之后就可以通过ADB安装程序了,当然也可以选择使用adb安装一个国内的应用商店,之后通过应用商店安装应用。

ChromeOS的体验介绍

使用了一段时间之后来说,作为一个轻量化的Linux 本来说,这台设备还是符合期望的。Linux,Android子系统都和宿主系统有着很好的深度绑定,使用子系统的应用也和使用宿主一样有着很好的体验。而在我这里一大缺陷为,因为Linux子系统和Android子系统都被划分到了私有网络,因此它们实际上网络是和Chromeos宿主共享的,但是和局域网的其他设备不是在同一个子网里面的,因此类似LocalSend这种工具是不能使用的。这里目前我的解决办法是使用fydeOS提供的fyDrop工具和其他局域网进行文件传输。

这个设备同时还支持通过usb typec接口连接外接显示器,chromeos有着不错的窗口管理,桌面分屏,这些功能都为使用体验加分许多。

如果只是轻办公我感觉这是一台很棒的设备,但是得益于这个性能,想要在这上面做Android开发,去编译程序那就不敢想象了。而至于要不要入坑,还是要你自己决定。

最后照例来推荐一些可以参考的资料:

  1. fydeOS源于chromeOS,这边的中文资料都可以参考:https://community.fydeos.com/t/topic/40986
  2. Chrome 官方的文档: https://chromeos.dev/en/linux
  3. 解锁开发者模式和一些折腾,可以参考这边文章和博主的其他文章: 打造一台适合生产的Chromebook

看完评论一下吧

删除Debian的旧内核,清理Debian的/boot分区

2025年3月3日 22:00

Linux系统在分区的时候一般不会分配过多的磁盘空间给启动分区/boot,通常情况下是300MB左右。在升级内核(kernel)后,Debian并不会自动删除旧内核,在启动选项中会有多个内核选项,会出现/boot分区逐渐减小、空间不足、无法更新内核的情况。如果出现这些问题,可以手动使用以下命令删除多余的内核,清理/boot分区。方法如下:

1.查看系统当前使用的内核(kernel)版本。

uname -a

可以看到内核的版本和更新的日期等信息。

或者使用

uname -r

仅查看内核版本。

2.查看系统已经安装的内核版本。

dpkg --get-selections | grep linux-image

3.卸载旧的内核版本

apt-get remove linux-image-6.1.0-27

或者

apt-get purge linux-image-6.1.0-27

注:此命令仅为举例说明,请以系统中实际存在的内核包(如6.1.0-27)为准。

4.更新启动配置文件。

update-grub

5.重启系统。

reboot

6.使用命令df -h 查看/boot分区的使用情况。

注:不需要手动修改/boot/grub/menu.lst

强大的壳-Shell Script

2024年12月26日 13:45

Shell脚本我们经常会使用,平时自己折腾Nas会用到,工作中为了配置CI会用到,自己的电脑上最近为了配置自己的命令行环境也要使用shell来进行配置。不过之前的shell功力都来自每次使用的时候网上搜索,于是最近就找了一本《Linux命令行与shell脚本编程大全》看了看,看完之后更加感受到Shell的强大,特地写个文章来分享一下。

首先呢,shell它也是一种语言,不过因为使用到的shell环境不同语法会有一些差异,在Linux上我们常用的shell是Bash,在Mac上面常用的shell为zsh,大体的语法相似的。编程语言的基本要素,Shell都是支持的,它支持变量,支持if判断,case选择,循环等结构化的编程逻辑控制,也支持基本的算数运算,同时还支持使用函数来复用代码。 简单介绍一下它的语法,首先是变量。系统为我们已经提供了很多的变量,同时在我们的配置文件中定义的那些变量也是可以读取到的。定义变量语法如下:

1
2
3
4
5
var=value #注意等号两边不能加空格
echo $var #使用的时候前面要加上$符号
echo ${var}

export varb=b #导出成为环境变量

以上方式定义的变量默认是全局的,比如你在一个函数中定义的,外面也能访问,这是时候可以定义局部变量:

1
local local_var=x #只能在函数中使用

除了普通的变量之外,shell中也是支持数组和Map的,当然要bash 4.0以上才能完整支持,使用如下:

1
2
declare -A info # 声明一个map
declare -a array #声明一个数组

而如果只是有这些东西的话,还不至于说Shell强大。而shell中可以直接调用命令以及Linux中的一些程序这才是它的强大之处。在python等其他语言中我们也是可以调用的,但是是都需要通过语言的系统调用才能调用,而shell中则是可以直接调用那些命令,只要这些程序的可执行文件在PATH环境变量中就可以。

而配合Shell的很多特性,又进一步强大了。第一大神器是重定向,重定向支持重定向输入和重定向输出,以下为一些示例:

1
2
3
4
5
6
7
date > test.txt #重定向输出到test.txt文件中,覆盖文件
ls >> test.txt #重定向,但是追加而不是覆盖文件
wc < test.txt #输入重定向
wc << EOF #内敛输入重定向
test a
test b
EOF

因为有了输入输出重定向,我们会有很多的玩法,可以方便的命令的输入写入到我们的文件中,而linux系统中,万物皆为文件,因此理论上可以写入或者读取所有东西。比如,有一个Null设备,我们可以通过以下的命令,来不展示任何运行输出。

1
2
ls >/dev/null 2>&1
ls 1>/dev/null 2>/dev/null

1为标准输出,2为错误输出,未指定的时候默认是把标准输出重定向,这里重定向到null则不会有任何输出,而第一行我们将错误输出又通过&绑定到了标准输出。当然除了这个还有更多的用法。

除了重定向之外的另一大特性则是 管道 。在某些场景重定向已经可以解决了很多功能,但是管道实现会更优雅。管道可以将前一个命令的输出直接传给另一个命令,并且管道的串联没有数量的限制,并且前一个命令产生输出就会传递到第二个命令,不用使用缓冲区或者文件。比如:

1
ls | sort | more

甚至我们还可以将刚刚的输出继续重定向保存到文件

1
ls | sort > files.txt

在很多命令的参数之类的都提供了正则表达式的支持,正则表达式能够让我们更加方便的进行数据匹配,Linux中常用正则为POSIX正则表达式,而它又有两种,基础正则表达式(BRE)和扩展正则表达式(ERE),大部分的Linux/Unix工具都支持BRE引擎规范,仅仅通过BRE就能完成大部分的文本过滤了,但是ERE提供了更强的功能,而有些工具为了速度,也仅仅实现了BRE的部分功能。

BRE支持的语法符号包括,.匹配任意一个字符,[]字符集匹配,[^]字符集否定匹配,^匹配开始位置, $匹配结束位置,()子表达式,*任意次数量匹配(0次或多次),而ERE在BRE的基础上,还支持?最多一次匹配,+匹配至少一次。而它们的更多功能可以参看这篇文章:https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions

有了正则表达式以及许多的处理工具我们就可以做很多的事情了,比如说查找文件,我们可以使用find,查找某个文件夹下面为指定后缀的文件:

1
find . -type f -name "*.java" #find支持的只是通配符,非正则

而配合管道,又可以对find之后的结果进行进一步的处理,比如配合上grep可以进一步对文件的内容进行过滤。

1
2
find . -type f -name "*.sh" |xargs grep "bash" #find 不能通过管道直接传递可以使用xargs或者通过如下方式
find . -type f -name "*.sh" -exec grep "bash" {} \;

对于文本的处理,Linux中又有sed和awk两大杀器,而关于他们的使用已经可以被写成书了。sed全名为Stream editor,也就是流编辑器,通过它可以方便的查找文件内容并替换后输出,awk则是一种模式匹配和文字处理语言,通过他们可以方便的处理文本。比如说我们可以使用sed对一份CSV文件中的手机号码进行打码处理:

1
sed -E 's/([0-9]{3})[0-9]{4}([0-9]{4})/\1**\2/g' input.csv

以上关于命令的介绍只是抛砖引玉,关于他们的使用,我们的电脑中已经给我们提供了详细的介绍,只需要在命令行中输入man commandname就可以了,除此之外,很多的命令也也提供了简单的帮助,只需要输入commandname help, command --help之类的就可以看到。

如果仅仅是语言层面的功能的话,shell相比python是没什么优势的,但是它能够和其他的命令无缝的使用,并且被Mac,Linux,Unix内置可直接使用也是它的一大优势。此外我们还可以通过shell脚本来增强我们的Linux终端,比如说可以定义自己的函数,通过.bashrc引用,可以在终端中直接调用方法名执行。

通过Shell,在Linux下面的体验得到很好的提升,工作效率也可以获得很大的提高,本文只是略微提到其皮毛,希望能够引起你对Shell的兴趣,如果想要更加深入的了解,还是需要去阅读手册或者书籍。

以下是推荐的一些资料可供参考:

  1. Bash脚本编程入门 by阮一峰
  2. Bash脚本进阶指南
  3. Grep,Sek和awk的区别
  4. 《Linux命令行与Shell脚本编程大全》(可以在微信读书中看电子书)
  5. awesome-shell (值得看看的各种资料,也可以去看看别人写的shell脚本)

看完评论一下吧

Linux重装与dotfile整理分享

2024年12月15日 20:05

最近把电脑上面的Linux系统给重装了,同时呢也要配置新的MacBook,就整理了一个个人的dotfile,这里分享一下linux上的我主要使用的软件,以及我的dotfile内容。

什么是Dotfile

dotfile字面意思就是以.开头的文件,在Linux当中就是隐藏文件,我们大家说的一般指的就是配置文件,比如shell的.bashrc.profile文件等。我在整理自己的dotfile的时候参考了一些网上大神的dotfile文件,这里我主要是包含我的shell的一些配置文件,vimgitrime相关的文件。

我的 Dotfile

为了保持Linux和Mac系统的统一, 我将Linux的Shell也换成了zsh,同时为了简单并没有使用oh-my-zsh,只是添加了一些自己常用的aliases

而Vim则使用neovim,它相当于是重新开发的,我想比vim应该代码上面更加高效,毕竟少了很多的历史包袱。另外它的配置文件可以使用Lua进行编写,而不是使用vim script,这样也是它的一大优点。

除了配置之外,还增加了脚本用用于将这些配置文件自动拷贝到对应的目录,使用以下代码判断是Linux系统还是Mac系统:

1
2
3
4
5
if [ "$(uname -s)" == "Darwin" ]; then
 //action for mac
else
 //action for linux
fi

另外呢,对于Mac系统,在初始化脚本中还添加了homebrew的安装,并且通过使用Brewfile在定义需要安装的一些软件,这样在执行brew bundle的时候可以把这些软件都安装上去。

对于Linux的目前还没做啥,都是通过自己手动安装的,不过一些操作也记录到了shell文件当中了。

Linux上的软件

既然写了文章,就顺便分享一下我的Linux上面还在用的软件吧。 首先是Shell,为了跟Mac保持统一,也改用了zsh,如果你也想要设置zsh为你的默认shell,可以执行如下命令并重启(前提你已经安装的zsh):

1
 sudo chsh -s $(which zsh) $USER

编辑器目前在用的有三款,主要在用neovim,同时代码文件还会使用vscode,因为有些场景neovim操作比较麻烦(对于快捷键不太熟悉),最近也在使用阮一峰老师之前推荐过的zed,据说比vscode性能更高,目前体验是对于很多语言的支持是已经内置了,不需要在安装插件,这点是好评的。

输入法在使用Fcitx5,输入方案则是使用了Rime,Rime的配置则是参考了雾凇拼音,而我主要使用小鹤双拼。

其他还在使用的软件包括:

项目开发: Android studio

截图软件:Flameshot

启动器: ULauncher, 使用简单,支持的插件数量也比较多

文档搜索: Zeal doc,mac 上面dash的window和linux平台开源版本,支持dash的文档。

文件同步: Syncthing

局域网文件传输: LocalSend

聊天软件: Weixin, telegram

文档和博客编辑: Obsidian

网页浏览器: Edge

Linux 开启zram

我的电脑已经有32G的内存了,大部分时候是够用的,但是编译Android系统的时候就不够用了。因此需要想办法,一种方式是弄一个swap空间,但是swap的速度不是很快,经过查询资料了解到现在linux已经有了一种新的虚拟内存技术,也就是zram,它主要功能是虚拟内存压缩,它是通过在RAM中压缩设备的分页,避免在磁盘分页,从而提高性能。

而想要启用它其实很简单,在我们的Ubuntu中,只需要首先关闭原先的swap空间,编辑/etc/fstab文件,将其中的swapfile条目注释掉。之后调用如下命令:

1
sudo swapoff /swapfile

如果你本来就没有设置swap,那就不需要做上面的操作,直接安装zram-config:

1
2
3
sudo apt install zram-config
systemctl enable zram-config //设置开机启动开启zram的服务
systemctl start zram-config //启动zram服务

之后可以调用如下命令验证:

1
cat /proc/swaps

我们在系统监控里面也能看到,不过还是swap。 以上方式开启的zram为物理内存的一半大小,当然也是可以修改的。 修改/usr/bin/init-zram-swapping文件中的mem大小即可。

如果对于我的dotfile感兴趣,可以查看我的repo, 地址为: https://github.com/sangmingming/dotfiles,其中我提到的初始化脚本为script/bootstrap文件。

看完评论一下吧

Linux版微信出来了

2024年11月8日 22:25

前几天就有消息称微信给deepin和麒麟上应用了。没想到Linux版微信就都有了。应该是随4.0公测版一起放出来的吧。虽为测试版,但用起来未见明显bug。这个版本跟QQ好像啊,越来越有苹果风了。自此Linux生态越来越好了。

wechat_2024 11 08_215941_629.png
微信Linux版

我比较喜欢Debian和Fedora系统,Debian安装deb版本,Fedora安装rpm版本,虽然都是Linux,但还是不太一样的。我的笔记本早就安装了Debian 桌面版了,Gnome桌面环境现在是越来越好了。

通过下面命令直接安装deb文件:

apt install ./WeChatLinux_x86_64.deb
2024 11 08_220414_626.png
apt命令安装

虽然后面这个有错误信息,但是可以忽略。

2024 11 08_220011_257 scaled.jpg
Linux微信

搞不懂,为什么现在越来越离不开微信了呢?其实我挺讨厌它的。我们办公基本上不是微信就是钉钉,更多的还是微信。为什么换iPhone16?就是因为XR微信太卡了。现在换iPhone16之后,丝滑多了,貌似也没那么讨厌了。

正在用Linux系统的你,赶紧下载试试吧!

版权声明: 本文采用 BY-NC-SA 协议进行授权,如无注明均为原创,转载请注明转自 皇家元林
本文链接: Linux版微信出来了

威联通NAS购入初体验以及设置记录

2024年10月29日 21:57

之前是用树莓派连个两盘位硬盘盒运行一些服务,由于它的稳定性加上容量不够,一直想弄一个NAS,趁着双十一到来,就入手了威联通的NAS,本文介绍 一下购入的抉择以及NAS的初始化和相关的设置。

缘起

NAS这个东西知道了很多年了,一直想要搞一个,迫于家里花费的紧张,之前一直是使用一台树莓派4B,其中刷了Openwrt系统,挂载了两块盘的硬盘盒,其中开启了Webdav, Samba,Jellyfin相关的东西。不过因为Jellyfin挂载阿里云盘速度不太理想,有不少视频还是下载到自己的硬盘里面的。同时内,硬盘也出现了拷贝大文件就出现问题,需要重启硬盘盒和系统的问题,这个后续会继续说。

DIY NAS硬件或者成品的NAS也关注了有挺长一段时间,迫于以上问题,以及文件越来越多,当时买的这两块2T的硬盘,容量已经不够用了,想要购买一个NAS的想法更加加强,终于决定今年双十一搞个NAS。

剁手

购买NAS是有两个选择,自己组装硬件,安装飞牛或者黑群晖等NAS系统,又或者购买群晖、威联通等成品NAS。在V2EX发帖求助,以及自己的纠结中,最终在性价比和稳定性等各种因素比较之后,选择入手了威联通TS464C2。

威联通的系统虽然被大家诟病许久,但是它也算是市场上除了群晖之外NAS系统做的最久的厂家了,考虑到文件的安全可靠在文件系统和系统稳定性上面,这两家还是要比国内的新起之辈更加值得信赖的。而我选择的这一款,支持内存扩展,如果以后服务比较多,可以再增加一根内存。4个3.5寸硬盘位加上两个NVME 硬盘位,对于容量的扩展应该很多年都不存在问题了。双十一这块机器只要2000块钱就拿下,而群晖同配置的4盘位差不多要四千,只能说高攀不起。

另外下单了一块国产的NVME 2T硬盘,加入Qtier存储池,希望能提高一些速度。为了拥有更大的容量,经过一些研究,淘宝购入了一块2手服务器硬盘,型号为HC550, 16TB,回来看Smart信息,已经运行了786天,不过其他信息看着都不错。

上电

收到机器,插上硬盘,参照指南开始初始化。威联通提供了比较友好的初始化方法,可以通过网页或者应用对它进行初始化,不过一定要插上硬盘才能开始这一切。

根据指南初始化之后,开始了硬盘的初始化和存储池的设置。之前使用的openwrt中对于硬盘的管理是比较简单的,基本就是实现了基础的Linux功能,把磁盘挂载到指定的目录,硬盘初始化之类的。而QNAP中,“存储与快照总管应用”中,对于硬盘和存储卷的设置则全面,可以设置各种raid的存储池,Qtier,快照,卷等等,也有硬盘的运行情况的显示。我想这就是选择大厂成品NAS的原因,毕竟docker之类的东西大家都很容易做,但是这种积累了很多年的东西不是那么快能够做出来的。

安装软件

在威联通NAS中安装软件可以选择从QNAP的应用中心安装应用,也可以安装Container Station之后通过docker来安装。不过官方的应用中心中的应用中主要是一些官方提供的应用,这个时候我们可以选择第三方的应用中心,这里我推荐一个: https://www.myqnap.org/repo.xml,官方应用商店没有的可以来这里试试。不过这个应用商店中的部分应用是收费的,比如Jellyfin,它提供的版本需要依赖Apache,这个时候你需要去它的网站上面购买,价格还不便宜,当然我是不会去购买的。

除了应用中心安装之外,我们还可以去网上找QPKG文件,比如Jellyfin,我就是使用的pdulvp为QNAP定制的版本,下载地址在:https://github.com/pdulvp/jellyfin-qnap/releases。Jellyfin我不使用官方的docker版本有两个原因,一是使用这个定制版本,可以方便的使用英特尔的集成显卡进行视频的硬解,另一方面是使用docker的化,默认只能映射一个媒体目录到Docker中,想要映射多个目录会麻烦一点,因此使用QPKG更方便。

对于其他的应用,比如FreshRss, VaultWarden则是选择了使用Docker进行部署,Container Station的Docker部署为先写一个compose文件,之后软件会帮助下载相关的容器进行启动,这个有个问题就是创建完compose之后,容器启动起来之后,在web界面上就没法编辑compose文件了,想要编辑的需要用ssh进终端去看,比如我创建的app-freshrss它的compose文件就在/share/Container/container-station-data/application/app-freshrss当中。

另外威联通自带的一些应用,文件管理,QuMagie,特别要说一下QuMagie,它已经可以帮我把相片按照人物,地点,物品等等分类好了,配合上手机App使用流畅很多,再也不用之前那样使用SMB手动同步了。

其他

目前用了这个二手服务其硬盘加上新买的固态硬盘组了一个Qtier池作为主要存储区,家里有块旧的sata固态硬盘就把他搞成高速缓存加速了。原来的两块酷狼硬盘都是EXT4格式,但是插到QNAP上却不能识别,只好放在原来的设备上,新NAS通过Samba访问原先的设备,把文件拷贝过来。

之后把旧的硬盘插上来使用才发现,其中一个硬盘出现了坏道,数量还不少,感觉它应该命不久矣,不敢放什么东西上来了。 而另一块好的硬盘,准备把它作为备份盘,相片,笔记和其他的一些重要文件都定期备份到这个盘上面。因为硬盘数量优先,并没有组RAID还是空间优先,只把重要的文件备份但愿以后不会踩坑。

以上就是这个新NAS的初体验了,后面还要继续增加新的应用,仍然需要摸索,外网访问仍然沿用家里的DDNS和端口转发。目前才用了不到一个星期,还有很多东西没有用到没有涉及,后面有新的体验来再继续写文章分享,也欢迎玩NAS网友一起交流分享,如果有好玩的应用也欢迎评论推荐给我。

看完评论一下吧

通过dd命令测试硬盘读写速度/性能

2024年10月27日 21:44

要使用 dd 命令测试磁盘速度,可以写入一个临时文件并测量写入和读取速度。以下是一些示例:

测试写入速度

此命令将 1GB 文件写入磁盘,并提供写入速度

dd if=/dev/zero of=testfile bs=1G count=1 oflag=dsync
  • if=/dev/zero 使用空字节源。
  • of=testfile 指定输出文件。
  • bs=1G 设置块大小为 1 GB。
  • count=1 指定只写入一个块。
  • oflag=dsync 确保数据实际写入磁盘,从而提供更准确的速度测量。

示例输出:

1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.58025 s, 679 MB/s

测试读取速度

首先,清除文件系统缓存/Cache以避免缓存影响:

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

然后,将文件读回:

dd if=testfile of=/dev/null bs=1G count=1
  • if=testfile 从刚写入的文件读取。
  • of=/dev/null 丢弃输出,以确保仅测试读取速度。

清理

测试完成后,删除临时文件:

rm testfile

这些命令提供了近似的磁盘速度,但对于更准确的结果,建议使用专用的基准工具,如 fio 或 hdparm。

英文:How to Use dd Command to Test the Hard Disk Speed?

本文一共 234 个汉字, 你数一下对不对.
通过dd命令测试硬盘读写速度/性能. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 通过dd命令测试硬盘读写速度/性能 I.T. LINUX 硬盘
The post 通过dd命令测试硬盘读写速度/性能 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  4. 比特币钱包线上和线下有啥区别? 我玩比特币比较晚, 最近1比特币能到1900多英镑, 真是吓人. 之前有一个线下的比特币钱包, 最近又在 CoinBase 开了一个线上的比特币钱包. 线上和线下的比特币钱包都是一长串的字母数字组合, 很像随机字符串 比如: 1J88t5UAgKBHhMgzkyH9bpY5mPdCYAe5XQ 这个明显是唯一的, 可以在 BlockChain 上查到所有交易记录和余额:...
  5. Naked 红酒 前几天在网上订车票加了1镑钱让送票上门,然后发现了一张 nakedwines 的优惠,买100镑红酒减 60 镑.然后就果断订了12瓶. 在提交订单的时候没看仔细点了一个确定,后来才知道那个是答应每个月成为会员,需要交会费 20 镑钱,然后好处就是每次买酒的时候能享受更大的优惠 (25% – 50%), 并且每个月都会送你一瓶红酒.后来我第一时间就发邮件取消了,但是可能已经下单了,所以第一次还是多送了我一瓶红酒,还有两个漂亮的杯子. 这样算下来, 13瓶红酒(2011, 2012年)+两个杯子,一共花了...
  6. GoPro运动相机可以拿来做什么? 自从新年打折入了GoPro Hero+运动相机以来, 也没怎么用上, 基本上是几天的热性就和其它电子产品一样被冷落到一旁. GoPro运动相机可以拿来做什么, 主要的几个用途是: GoPro 不太适合拍人像 拍孩子孩子容易动, 特别容易就糊了, GoPRO的摄像参数可以调的很少, 所以不要期望有大光圈能背景虚化, 唯一能拍的可能是大长腿, GoPro是广角镜头, 能拍出细长的身段和大长腿,...
  7. C++ 编程练习题 – 最多水容器 (递归) 题意: 给定一个数组, 每个数值代表柱子的高度, 那么求出这些柱子最多可以装多少水. 水的体积由较短的长度乘以两个柱子的距离. 上面的图的输入为 . 蓝色区域最可以装水为49. 最简单的方法就是暴力穷举, 那么复杂度为 O(n^2) , 需要穷举n*(n-1)/2对高度. 可以用递归来实现, 但是递归需要额外O(n)...
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...

判断服务器的硬盘类型: 是否是固态硬盘/NVMe

2024年10月27日 06:47

拿到服务器,想看是否是固态硬盘(SSD/NVMe),可以用以下几种方法,还有另一种方法是使用“dd”命令来测试硬盘的读写速度。

检查磁盘类型:SSD(固态硬盘)

要检查 VPN 服务器上的磁盘是否为 SSD固态硬盘,您可以根据操作系统使用以下方法之一:

Linux

在 Linux 上,您可以使用以下命令检查磁盘是否为 SSD

方法 1:使用 lsblk

lsblk -d -o name,rota

示例输出:

NAME ROTA
loop0 1
loop1 1
loop2 1
loop3 1
sda 1

ROTA 列显示设备是否为旋转式(1)或非旋转式(0)。
如果 ROTA 为 0,则设备可能是 SSD。

方法 2:使用 cat 查看 /sys/block

cat /sys/block/sdX/queue/rotational

将 sdX 替换为您的实际磁盘(例如,sda、sdb)。
如果输出为 0,则该磁盘为 SSD/固态硬盘。如果为 1,则为 HDD。

方法 3:使用 lsblk 的 -D 选项(用于丢弃/Discord功能)

lsblk -D

示例输出:

NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
loop0 0 4K 4G 0
loop1 0 4K 4G 0
loop2 0 4K 4G 0
loop3 0 4K 4G 0
sda 0 32K 2G 0
├─sda1 0 32K 2G 0
├─sda14 0 32K 2G 0
├─sda15 0 32K 2G 0
└─sda16 0 32K 2G 0

SSDs 通常支持“丢弃”功能,因此在“DISC-GRAN”列中有非零值通常表示具有 SSD 功能。

Windows

如果您使用基于 Windows 的 VPN 服务器,可以使用 PowerShell 检查磁盘类型:

Get-PhysicalDisk | Select-Object -Property DeviceID, MediaType MediaType 列将显示 SSD 表示固态硬盘,HDD 表示硬盘驱动器。

MacOS

在 MacOS 上,您可以使用 diskutil:
diskutil info diskX | grep "Solid State"

将 diskX 替换为实际磁盘标识符(例如 disk0)。
如果磁盘为 SSD,它将显示“Solid State: Yes”。

这些方法中的每一种都可以帮助您确定 VPN 服务器上的磁盘类型。

检查磁盘类型:NVMe SSD

上述方法也适用于 Linux、Windows 和 MacOS 上的 NVMe/Non-Volatile Memory Express(非易失性存储器标准)驱动器,但在文件路径和命令输出方面存在一些差异:

Linux

在 Linux 上,NVMe 驱动器通常显示为 /dev/nvme0n1、/dev/nvme1n1 等。以下是针对 NVMe 调整的方法:

方法1:使用 lsblk

lsblk -d -o name,rota

NVMe 驱动器通常会显示 ROTA 为 0,表示非旋转(SSD)。

方法2:使用 /sys/block

cat /sys/block/nvme0n1/queue/rotational

将 nvme0n1 替换为您的 NVMe 设备。
输出应为 0 表示 NVMe 驱动器。

方法3:使用 nvme 工具

如果您安装了 nvme CLI 工具,还可以检查驱动器信息:

nvme list

您可以在 Ubuntu 上安装 nvme-cli 包,例如:

sudo apt install nvme-cli

这将显示所有 NVMe 设备的详细信息,包括型号、容量和序列号,有助于识别它是否为 NVMe SSD。

Windows

在 Windows 上,PowerShell 命令也可以识别 NVMe 驱动器:

Get-PhysicalDisk | Select-Object -Property DeviceID, MediaType, Model

在输出中,MediaType 显示为 SSD 表示 NVMe 驱动器。Model 字段可以帮助确认驱动器是否基于 NVMe。

示例输出:

DeviceID MediaType Model
-------- --------- -----
1        HDD       Elements 25A3
2        HDD       Elements 25A3
0        SSD       MZVL22T0HBLB-00BMV SAMSUNG

macOS

在 macOS 上,diskutil 命令对 NVMe 驱动器也适用:

diskutil info diskX | grep "Solid State"

将 diskX 替换为 NVMe 磁盘标识符(例如 disk0)。如果是 SSD,您将看到“Solid State: Yes”,并且可以通过制造商提供的附加信息确认是否为 NVMe。

英文:How to Check Hard Disk Type (NVMe SSD) on Servers/VMs?

本文一共 689 个汉字, 你数一下对不对.
判断服务器的硬盘类型: 是否是固态硬盘/NVMe. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 判断服务器的硬盘类型: 是否是固态硬盘/NVMe LINUX 小技巧 服务器 硬件 硬盘
The post 判断服务器的硬盘类型: 是否是固态硬盘/NVMe first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. LOGO 海龟作画 系列 一 之 给孩子最好的编程启蒙语言 – Logo Turtle Graphics – Series 1 – Best Introductory Programming for Kids I think the LOGO turtle graphic is the best introductory programming language for the kids....
  3. WordPress 更新服务站点列表 当你发表一篇博文的时候, wordpress 会自动把文章提交到几个更新服务站点里 当然提交的越多 文章被第一时间推送更新可能性就越大. 在设置 – 撰写 – 更新服务里 每一行就是一个站点推送地址. http://rpc.pingomatic.com/ http://api.moreover.com/RPC2 http://api.my.yahoo.com/RPC2 http://api.my.yahoo.com/rss/ping...
  4. 英国硬盘数据恢复失败的经验和教训 上一周, 不小心触碰了机箱后面的电源线, 接触不良, 结果机器再也开不起来了. 显示 Invalid Disk, Replace. 大概就是主硬盘MBR区坏了. 我以为是接触不良, 于是反复插把硬盘卡槽好几次, 机器认不出, 硬盘也没声音, 于是便网上搜索了一个剑桥评价最高的 硬盘数据恢复公司...
  5. 测测你的幸运 – Linux Fortune-Teller LINUX 下有很好很好玩的命令,之前已经介绍过: figlet, rig, curl. 现在推荐另一个 命令 fortune 是用来随机显示一段(句)话的.fortune 在英文里就是幸运的意思. 这个命令可以不需要 参数 如果没有 可以通过 apt-get...
  6. 在波场上最简单的被动收入: 质押TRX投票见证人获取奖励(年化4.8%)! 波场上最简单的被动收入: Stake & Earn 质押获取收益 在波场(Tron)区块链上获得被动收入(TRX)的方法很简单, 如下只要3步: 质押或锁定 TRX. 需要14天才能解锁(质押模型v2.0). 您可以在 tronlink 钱包(Chrome 扩展程序)或 tron-cli...
  7. 国内现在的外卖真是又快又便宜 这次回国感触最深的就是国内的外卖。第一天去颐和园回到我姐家5-6点很累,不想出门,所以就在家点了外卖。手机微信小程序(美团)选了支付下单,半小时内就送到了。 一开门,就见外卖小哥的一只手把食物送了过来,人的正脸都没见到,外卖小哥转身就走,走太快在拐角处还差点滑倒了。 我姐说,现在平台算法优化很厉害,送晚了,平台会罚钱,所以外卖小哥争分夺秒一刻也不敢多逗留。 撇开外卖食物是否干净健康,中国现在的外卖真是又快又便宜,比如那天和我姐一起去北京的环球影城,在回家的路上(坐地铁7号钱坐一个小时到菜市口站),我姐快到家的时候点了两碗粥,到家一会儿就送到了,你猜多钱?也才19元。19元也就2英镑多一些,在英国都不够小费的。 在国内真是幸福,怪不得国内房子的厨房大多不大,我姐二环2居室,厨房真是一点点,只够一人进去的,两人在厨房就很挤了。我估计是国内(打工)人吃饭大多外卖/餐馆,一年下厨房的次数估计一个手就能数过来。 望京小腰-这店名取得真不错。 本文一共 398 个汉字, 你数一下对不对. 国内现在的外卖真是又快又便宜. (AMP 移动加速版本) 赞赏我的几个理由. ¥...
  8. 和孩子到英国Suffolk进行复活节Easter Egg Hunt 去年复活节刚好因为疫情 只能待在家里, 于是在院子里和家里藏好复活节Egg然后孩子找蛋. 前年去了到 Beth Chatto 花园找复活节彩蛋 今年疫情好转, 政府允许在室外活动, 于是驱车到了Suffolk进行复活节Easter Egg Hunt. 地址是: The Rotunda,...

获得最新Apache服务器访问记录的脚本

2024年7月21日 19:40

apache 服务器将访问请求记录在 /var/log/apache2 中,因此我们可以分析这个日志文件来找出最后的几个请求。

下面解析 apache2 服务器日志,并逐行打印请求。它基于 BASH 命令:tail 和 awk

#!/bin/bash 

NUMBER_OF_REQUESTS=50
LOG_FILES_PREFIX=/var/log/apache2/access

tail -n $NUMBER_OF_REQUESTS $LOG_FILES_PREFIX* | awk -F'"' '
    # 确保 IP 地址、请求和用户代理字段存在
    $1 ~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ && $2 ~ /^(GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH)/ && $6 != "" {
        split($1, part1, " ")
        ip = part1[1]
        split($2, request, " ")
        method = request[1]
        path = request[2]
        user_agent = $6
        print ip, path, user_agent
    }
'

示例输出(每行包含 IP 地址、URI/URL 和用户代理字符串):

last-few-access-apache2-logs 获得最新Apache服务器访问记录的脚本 BASH LINUX 程序设计 运维

通过 IP、URL 和用户代理向 Apache2 发送的最后几个请求

有了它,我们可以集成到 BASH 脚本中,当 CPU 平均负载较高时发送电子邮件通知,以帮助我们了解导致峰值的原因。

英文:How to Get the Last Requests to Apache2 Server?

本文一共 198 个汉字, 你数一下对不对.
获得最新Apache服务器访问记录的脚本. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 获得最新Apache服务器访问记录的脚本 BASH LINUX 程序设计 运维
The post 获得最新Apache服务器访问记录的脚本 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 在币圈第一次被骗1355 USDT(1000英镑)的惨痛经历(Wirex) 今天回家,在帮媳妇干活的时候,收到一邮件,手机上打开,以为是来自Wirex的,要我验证手机号,我想也没想,就打开验证了,然后不到2分钟,里面的钱就被转走了。 手机上打开没细看,电脑上打开该邮件 其实很容易发现是诈骗邮件的。因为邮件不是来自于官方,而且我的姓名前是加了一些乱码。一眼假。只不过当时在干活,也没多想,才被骗。 损失1355 USDT(1000多英镑),因为在Wirex上有X-Account,我锁定了XX个大饼,还好锁定了(30天才能解锁),后怕啊,不然全被搞走了,真得上天台了。 X-Account帐号锁定解锁需要30天,骗子马上启动解锁了。但钱还在,我立马联系客服,客服回得也挺快(以前不太重要的邮件就得好几天才回),客服立马把我的帐号锁定了,然后进行调查。 庆幸当初为了高1%的利息锁定币30天,要不然今天估计就全丢了。 Wirex通过手机短信就可以把钱搞走,而且登陆/更改资料都需要SMS验证码,实在是不合理,我要改回我手机号,则需要向骗子手机要验证码。虽然我开通了更为安全2FA二维码验证,但是貌似一个手机SMS验证码就可以关闭。 这个假期本来很完美,结果因这事搞得很不愉快。惨痛的教训,就当学费了。骗子不得好死。 Wirex客服这次回得挺快: I am truly sorry you...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  5. 英国博士毕业答辩是怎样一个过程? 坛子发了篇 “欧洲博士毕业答辩是怎样一个过程?” 但是英国不太一样, 请听我细细道来. 我是2006年9月开始博士课程的, 当时很不容易 争取到免学费, 第二第三年学费免不免得看研究进度. 确定导师 如果你是中规中矩的进去 一般院里会给你安排个一导, 也可能是你跟着导师, 导师有钱, 这时候有钱给你生活费的就是一导, 一般至少需要2个导师,...
  6. WordPress 最简单的过滤垃圾评论的方法 WordPress 很多垃圾评论都是由程序直接调用访问 wp_comments.php 造成的. 所以我们可以在 functions.php 文件里加入以下代码 新增一个过滤 简单的检查是否是直接调用. 1 2 3 4 5 6...
  7. 穷举算法的应用 – 去除EXCEL文件中的保护 EXCEL 是可以用密码来保护的. 比如 这个EXCEL 就用了密码保护. 打开EXCEL文件 你会注意到 无法编辑 无法查看宏(VBA)的代码. 去除保护很简单 第一步先编辑宏 VBA 把下面的VBA代码拷贝到VBA编辑器里 并按下F5运行 1...
  8. 在LINUX下循环备份的方法 备份是我们常需要做的事, 你可以在服务器上有一个文件夹专门用于存放备份.然后定期删除(可以是一个脚本定期执行),这样就比较麻烦,因为如果你想每次删除比较旧的备份, 你就得对备份进行时间倒序. 其实可以完全利用LINUX下的 date命令来生成想要的文件名用于备份.比如你想保留过去的 24 小时备份,那么,你可以用: 1 2 H=`date +"%H"` ls > backup_$H  #...

解决Ubuntu下Sublime text 3中文输入的问题

2014年3月15日 00:24

好久之前便听朋友说起Sublime Text这款软件很好用,终于这几天有空折腾,把软件给装起来了。用起来确实很不错,写代码很爽。
但是用了一段时间之后,我需要输入中文了,无论怎么切换输入法,都无法切换到中文。

网上搜索了一下,原来这是Bug。找解决方法吧。下面介绍我的解决方案,是大神cjacker解决成功的啦,我只是copy一下,方便大家在遇到这个问题的时候可以方便解决。

 我的系统:ubuntu 13.04
我的输入法:fcitx
sublime版本:3059

理论上支持 sublime text2/3

1.保存代码sublime-imfix.c

/*
sublime-imfix.c
Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.
By Cjacker Huang <jianzhong.huang at i-soft.com.cn>
gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC
LD_PRELOAD=./libsublime-imfix.so sublime_text
*/
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
typedef GdkSegment GdkRegionBox;
struct _GdkRegion
{
long size;
long numRects;
GdkRegionBox *rects;
GdkRegionBox extents;
};
GtkIMContext *local_context;
void
gdk_region_get_clipbox (const GdkRegion *region,
GdkRectangle *rectangle)
{
g_return_if_fail (region != NULL);
g_return_if_fail (rectangle != NULL);
rectangle->x = region->extents.x1;
rectangle->y = region->extents.y1;
rectangle->width = region->extents.x2 - region->extents.x1;
rectangle->height = region->extents.y2 - region->extents.y1;
GdkRectangle rect;
rect.x = rectangle->x;
rect.y = rectangle->y;
rect.width = 0;
rect.height = rectangle->height;
//The caret width is 2;
//Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.
if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {
gtk_im_context_set_cursor_location(local_context, rectangle);
}
}
//this is needed, for example, if you input something in file dialog and return back the edit area
//context will lost, so here we set it again.
static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)
{
XEvent *xev = (XEvent *)xevent;
if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {
GdkWindow * win = g_object_get_data(G_OBJECT(im_context),"window");
if(GDK_IS_WINDOW(win))
gtk_im_context_set_client_window(im_context, win);
}
return GDK_FILTER_CONTINUE;
}
void gtk_im_context_set_client_window (GtkIMContext *context,
GdkWindow *window)
{
GtkIMContextClass *klass;
g_return_if_fail (GTK_IS_IM_CONTEXT (context));
klass = GTK_IM_CONTEXT_GET_CLASS (context);
if (klass->set_client_window)
klass->set_client_window (context, window);
if(!GDK_IS_WINDOW (window))
return;
g_object_set_data(G_OBJECT(context),"window",window);
int width = gdk_window_get_width(window);
int height = gdk_window_get_height(window);
if(width != 0 && height !=0) {
gtk_im_context_focus_in(context);
local_context = context;
}
gdk_window_add_filter (window, event_filter, context);
}

2.安装C/C++的编译环境和gtk libgtk2.0-dev

sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev

3.编译共享内存

gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config --libs --cflags gtk+-2.0` -fPIC

4.启动测试

LD_PRELOAD = ./libsublime-imfix.so sublime_text

正常的话这样是没有问题的。

然后我们在修改我们的desktop文件,使图标也可以使用

sudo vi /usr/share/applications/sublime-text.desktop

先将so文件移动到sublime text的目录

然后按照如下替换(主要是每次执行之前,去预加载我们的libsublime-imfix.so库)

[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
GenericName=Text Editor
Comment=Sophisticated text editor for code, markup and prose
Exec=bash -c 'LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text' %F
Terminal=false
MimeType=text/plain;
Icon=sublime-text
Categories=TextEditor;Development;
StartupNotify=true
Actions=Window;Document;
[Desktop Action Window]
Name=New Window
Exec=bash -c 'LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text' -n
OnlyShowIn=Unity;
[Desktop Action Document]
Name=New File
Exec=bash -c 'LD_PRELOAD=/opt/sublime_text/libsublime-imfix.so /opt/sublime_text/sublime_text' --command new_file
OnlyShowIn=Unity;

看完评论一下吧

编译安装启动器 Synapse

2015年5月9日 08:00

Synapse 是一个类似 Gnome-Do 的语义型启动器(sementic launcher),只要输入部分字符就可以匹配相应的文件或程序,能够有效地提高工作效率 —— 特别是对于 Emacs/Vim 用户来说

synapse.png

网上能找到关于该软件的更多介绍以及安装方法,不过大都是介绍如何通过 PPA 来安装,我不太喜欢这种方式,加上 Debian 因为 Synapse 的不稳定而把它移出了软件仓库,所以我只有选择编译安装了。所以本文只是一篇水文啦,在这里简单地把自己编译过程里遇到的坑分享出来,如果有人也编译安装的话,希望能有所帮助。

源代码下载链接在此

Synapse 的依赖有:

  • libnotify-dev
  • libjson-glib-dev
  • libkeybinder-3.0-dev
  • libgee-0.8-dev
  • libzeitgeist-2.0-dev
  • valac

前面 lib 开头的是 Synapse 依赖的库,从软件仓库安装即可,另外 Synapse 还依赖 gtk 的几个库,但是没记录下来,所以不记得对应的库的名称了。不过这些依赖都在源代码包中的 configure 这个脚本里面写了。在 Synapse 0.2.99.1 (我用的版本) 中,configure 中的依赖列表是这样的:

  • glib-2.0
  • gdk-x11-3.0
  • gtk+-3.0
  • gio-2.0
  • gio-unix-2.0
  • gobject-2.0
  • gthread-2.0
  • gee-0.8
  • json-glib-1.0
  • keybinder-3.0
  • libnotify

除了这些库依赖外,由于 Synapse 是 Vala 语言编写的,还需要安装 Vala 编译器 valac。

在完成以上依赖安装后,就可以进行 Synapse 的编译安装了:

./configure --prefix=/opt/synapse
make
make install

Done!

自定义Git

2014年8月2日 08:00

配置及配置文件

Git可以使用命令

git config

来进行自定义设置,而这些设置,最终都会被写入对应的配置文件中,然后在适当的时候加载这些配置文件,来确定Git被使用时的一些表现。

Git会在三个可能的地方寻找配置文件

  1. 系统级全局配置文件:/etc/gitconfig,对操作系统上所有用户都起作用
  2. 用户级全局配置文件:~/.gitconfig,对用户的所有代码仓库起作用
  3. 代码仓库级配置文件:<repo>/.git/confg,只对当前对应的代码仓库起作用

Git按照上面的顺序依次寻找配置文件并用其设置Git。

第一个配置文件可能存在也可能不存在,在我的Debian上它是不存在的,可以通过命令:

git config --system

来进行读写。

第二个配置文件可以通过命令:

git config --global

来进行读写。

第三个配置文件可以在相应的代码仓库目录下,通过命令:

git config

来进行读写(注意,不带 –global 选项)。

以上命令都是用于在命令行中对Git的某个设置项进行设置,如果需要打开文件直接编辑,除了在编辑器中来直接打开文件,还可以通过命令:

git config -e

来进行。在其后加上 –system 则会打开/etc/目录下的gitconfig;加上 –global 则会打开用户HOME目录下的配置文件.gitconfig;而在某个代码仓库目录下执行且不加 –system 也不加 –global 选项时,则会打开该代码仓库下的配置文件进行编辑。

在配置文件中,以 '#' 或 ';' 开始的的行会被忽视,即这两个符号被用作注释符。

配置文件的内容形式如下:

[user]
    name = linusp
    email = linusp1024@gmail.com
[credential]
    helper = cache --timeout=3600
[color]
    ui = true

被中括号括起的内容被称为Section,其下有许多

xxx = xxx

的内容,其中等号前面的部分就是实际的配置项,后面的则是该配置项的值。要设置某个Section下面的项的值,以Section user下的name为例,可以通过如下命令:

git config --global user.name linusp

Git 提供了很多的可配置项,具体可以执行

git config --help

然后到 "Variables" 一节查看。

配置: Section user

user下的配置项主要是用于在线认证的,比如说Github。

  • user.name

    设置用户名,比如我在Github上的用户名是'Linusp',那么就设置:

    git config --global user.name Linusp
    

    如果公司使用Git进行代码管理,这一步也是需要的.

  • user.email

    设置邮箱,同上,用于认证。

配置: Section core

  • core.filemode

    设置是否检查文件权限,其值默认为'true',对同样内容、名字的文件,如果其文件权限发生了改变,则会认为发生了'修改'。如果要忽略文件权限的检查,可以将该项的值设置为'false':

    git config core.filemode false
    
  • core.ignorecase

    设置是否忽略文件名大小写的区别,默认为'false',即默认情况下是大小写敏感的。在Windows的文件系统上,将这个项的值设置为'true'可能会比较常见

  • core.autocrlf

    设置Git对行尾的换行符的处理方式。这个设置项主要是为了解决跨平台开发时Windows操作系统与*nix系统上换行符不一致的矛盾。其值有三个可能:

    1. true

      设置为该值时,代码仓库里的代码会保证以*nix的换行符结尾,在用户提交时会把Windows的换行符替换为*nix的换行符,但在用户checkout后将会替换成Windows的换行符。在Windows环境下开发但其合作者中在*nix系统下开发的用户可以将'core.autocrlf'项的值设置为'true':

      git config core.autocrlf true
      
    2. input

      设置为该值时,代码仓库里的代码和checkout的结果都会保证以*nix的换行符结尾,如果提交时的文件中存在Windows的换行符,Git会将其替换为*nix的换行符。

    3. false

      设置为该值时,Git不对文件行结尾的换行符进行检测和处理。

  • core.excludesfile

    设置一个文件,文件中包含一些文件名或者正则表达式,代码仓库中被匹配到的文件将会被视为不是代码仓库中的文件,既不会检查其改动,在执行'git add'的时候也会自动忽略它们。

    在代码仓库中建立名为.gitignore的文件能起到相同的作用。

  • core.editor

    设置'git commit'时编辑提交信息的编辑器,如要设置为vim,则:

    git config --global core.editor vim
    
  • core.pager

    设置在执行'git log'等包含大量输出的命令时的分页器,默认为'less',通过这个项可以将其设置为'more',或者设置为空以关闭分页输出:

    git config core.pager ''
    

配置: Section color

该组配置可以让Git在输出时进行着色——默认情况下都是不着色的,而着色有助于阅读,比如在执行'git diff'和'git log'的时候。

以下命令将会使'git diff'、'git log'、'git status'等带输出的命令对输出进行着色。

git config --global color.ui true

当然也可以打单独对某个命令的输出进行着色设置:

git config --global color.diff true

Bash 3.x 与 Bash 4.x中declare命令的区别

2014年7月28日 08:00

问题

今天下午的时候,测试的妹子说我写的脚本出了问题,跑过去一看,出错提示是:

declare: -A: invalid option

我写的脚本里有两处使用

declare -A

分别定义了一个关联数组

一开始很诧异,这你的'declare'和我的'declare'还能不一样了?尝试了一下,还确实是不一样,妹子机器上的'declare'命令压根就没有'-A'这个选项。

Bash 版本

'declare' 是 Bash内建的命令,既然两台机器上的'declare'不一样,那应该Bash也会不一样吧?抱着这样的心理,分别看了下两台机器的Bash版本。

果然,出问题的机器上,Bash版本是3.x,而我的机器上的Bash版本是4.x。在网上搜了一下相关信息,才知道关联数组是在Bash 4.x中才支持的。这就是问题的原因了。

也懒得继续用关联数组了,毕竟要适配不同的Bash版本,工作量还是略大。反正两个关联数组是用来存中间结果的,于是索性写到两个临时文件里去了,稍微多做了一点处理就OK了。

后记

这么短的博客难道不是在凑数吗?

真没有啊!_(:3」∠)_

在Gnome-Shell中关闭Hot-Corner

2014年7月26日 08:00

烦人的Hot Corner

在Gnome Shell这个桌面环境中,存在一个叫做"Hot Corner"的特性。默认的位置是屏幕左上角,当鼠标移到那里的时候就会弹出一个界面,如下所示:

hot-corner.png

而如图所示,我的面板是放在顶端的,左上角的位置正好是菜单的位置,所以经常发生这种事情:我将鼠标移动到左上角想打开菜单,结果却弹出来这么一个界面。

因为位置非常接近,每次想打开菜单,我都得小心翼翼,但经常还是会点到Hot Corner上。非常烦躁。

computer-crack.jpg

所以下定决心要干掉它。

系统设置:失败

系统设置里压根就没设置这个东西的选项!Linux Mint的桌面环境 Cinnamon 就是从Gnome Shell中衍生出来的,然后在其设置中就提供了对Hot Corner的设置。在Google上搜索"hot corner gnome shell",出来的结果全都是抱怨这个功能不方便和寻找关闭Hot Corner的帖子。真不知道Gnome Shell的开发团队在想什么……

Gnome Shell 扩展:失败

Gnome Shell扩展网站 上下载了No Topleft Hot Corner 这个扩展,然后在gnome-tweak-tool中启用了它。

然后还是没效果。

holy-shit.jpg

改代码吧混蛋

Hot Corner的实现是在 /usr/share/gnome-shell/js/ui/layout.js 中实现的,要关闭Hot Corner,只需要对下面的部分代码做出修改:

this._corner = new Clutter.Rectangle({ name: 'hot-corner',
                                       width: 1,
                                       height: 1,
                                       opacity: 0,
                                       reactive: true });

将最后的 "reactive" 的值修改为 "false" ,就OK了。

搞定!没了烦人的东西真是开心啊……

asciinema: 便捷的终端录制与分享工具

2014年5月7日 08:00

asciinema简介

Asciinema 是一款便捷的终端录制与分享工具,五一假期和两个朋友在五道口的咖啡厅喝咖啡聊天的时候,乌鸦 把这个工具分享给了我,这是一个非常赞的玩意,当然要进行分享了。

下面是它在网站上对自己的介绍:

asciinema.png

它有以下几个特性:

  1. 操作简单,分享便捷

    要开始录制,运行:

    asciinema rec
    

    即可,当要结束录制时,输入 exit 或者在终端中按下 <ctrl-d> 就可以。在结束时,它会提示 ”是否上传“ ,选择是后它会上传记录,并且返回一个 URL ,通过这个 URL ,可以非常方便的进行分享。

    当然了,和 ttyrec 或者 screen 相比,也是各有优劣, ttyrec 是会生成一个文件,用 ttyplay 可以播放它,在没有网络的情况下 ttyrec 会更好一些。而在同一台主机上, screen 那就是首选了。

    但现在的人们基本上都处在网络环境中,所以使用 asciineme 还是很方便的。

  2. 自由拷贝

    在播放记录时,可以自由地拷贝正在播放的记录中的命令,这一点上 ttyrecscreen 是无法相比的。

    当你在观看别人的记录时,如果有一些非常炫酷的命令,当然会心痒难耐想要自己亲手试一试,这个时候这个特性实在是不要太赞!

  3. 网页嵌入

    对于产生的记录,可以方便地嵌入到网页中,方法是在记录播放页面,在记录的右下方有一个 Embed 字样的链接,点击一下,会弹出一个小框,显示出能嵌入到网页中的一行 html 代码,如下所示:

    embed.png

    下面是我的一个简单的录制:

    <script type="text/javascript" src="https://asciinema.org/a/9415.js" id="asciicast-9415" async></script>

安装与使用

虽然 Asciinema 的安装与使用在其网站上都说得很清楚了,不过还是总结一下吧。

  1. 安装

    Asciinema 是用 python编写的工具,可以用 pip 安装,如果机器上没有 pip ,请先安装,用各自发行版的包管理器即可安装。然后执行

    sudo pip install --upgrade asciinema
    
  2. 录制

    咦,好像之前说过了?那就不再说了。

  3. 帐号连接

    Asciinema 的网站上,可以用自己的邮箱进行登录,同时,可以在本地通过运行:

    asciinema auth
    

    来和帐号进行连接,这样你录制并上传的终端记录会被保存在你的帐号下面

录制!分享!社交!

由于 Asciinema 将用户录制的终端记录上传并在网站上展示,同时还提供了和帐号连接的功能,所以也就成了一个非常好的社交平台,大家在上面展示自己的炫酷技巧,也不断地发现别人的与众不同,实在是非常之赞。

还等什么,我已经用上了 :)

在Linux系统中屏蔽独立显卡

2013年11月4日 08:00

问题

对于Linux系统来说,显卡驱动一直都是一个很头疼的问题,更别说双显卡了。但是很不幸的,我的笔记本是双显卡,更不幸的是,还是Intel核心显卡+AMD独立显卡这种及其蛋疼的组合。

在我还没有处理这个问题时,每次开机后,经常能够听到独立显卡风扇狂转的声音,但是实际上当时我并没有运行什么需要显卡进行大量计算的程序。这个问题不仅带来噪声问题(你说这声音要是一直在响,听习惯了也没什么,问题时它一会响一会不响,声音也一会大一会小),还对机器的散热带来了不好的影响。

所以要解决它!

解决方案

一种办法是安装独立显卡驱动,同时要做一些处理使得系统能够在独立显卡和集成显卡之间智能切换。这种方法能够彻底解决问题,也能够发挥独立显卡的性能,但这种方法非常费力,而且不一定能够成功。

另外一种方法是屏蔽独立显卡——说真的,我在Linux下并没有太多需要用到独立显卡的时候——当然在Windows下玩盗版大型游戏的时候就需要了。屏蔽独立显卡也有两种方式,一种是通过BIOS屏蔽,另外一种是通过系统实现软屏蔽。

很遗憾的是,笔记本的BIOS功能被阉割过,没有提供屏蔽独显的操作,而且BIOS进行了屏蔽的话,Windows系统同样也不能使用独立显卡了,这就不太满足期望了。所以最好的选择就是通过系统进行软屏蔽了。

办法就是通过内核提供的 vgaswitcheroo 组件来关闭独立显卡的电源。

  • 首先切换到root用户(普通用户即使用sudo也不方便操作)
  • 查看当前双显卡使用状态

    这一步要通过 /sys/kernel/debug/vgaswitcheroo/switch 这个文件来进行。

    cat /sys/kernel/debug/vgaswitcheroo/switch
    

    这步是要读出 /sys/kernel/debug/vgaswitcheroo/switch 这一文件的信息。不出意外您可能会看到类似下面(但不完全相同)的内容:

    0:IGD:+:Pwr:0000:00:02.0
    1:DIS: :Pwr:0000:01:00.0
    

    其中 IGD 表示集成显卡, DIS 表示独立显卡, + 号表示当前连接上的显卡, Pwr 表示正在供电(若不供电则为 Off )。

  • 关闭独立显卡

    如果确实是上面所述的状态,那么执行:

    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    

    关闭未连接的显卡(即独显)的电源即可,不过这种方法只是暂时的方法,一旦重启就又会听到显卡风扇狂转了。

  • 开机关闭独立显卡

    将关闭独立显卡的命令写入系统启动时加载的脚本就能够在开机的时候关闭独立显卡的电源。如我的发行版是Linux Mint,将这三条命令写入/etc/init.d/rc.local中:

    echo ON > /sys/kernel/debug/vgaswitcheroo/switch
    echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
    echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
    

    前两条命令是为了保证系统能够连接上集成显卡并供电。

实际上也可以使用本文提供的方法对集显进行屏蔽。

开始使用Debian

2024年8月1日 19:00
任何事物,没有对比就没有伤害。对Linux也适用… 上一篇我说要测试新版Linux,经过反复的测试RockyLinux 和 AlmaLinux,最后我还是选择了Debian。 最近一直在测试前面两款Linux发行版,结果编译软件总是失败,搞的我很恼火,VPS商家估计也被我搞无语了,内存显示只有1.7G,MySQL死活安装不成功,要不然就是安装成功多少有点兼容问题,我是用于生产环境,所以必须稳定。尝试了无数次只能放弃。我以为商家给的内存缩水… 真心不想在测试了! 我目前使用机器配置都显得太低… 用上面两款Linux发行版机器配置最少需要2H3G才能满足运行需要。 新的发行版主要还是太占内存了,这 […]

测试新的Linux发行版

2024年7月2日 05:00
CentOS使用了这么多年,现在该是说拜拜的时候了,官方都不更新了,再使用下去也是有点风险的。虽然有时候懒的折腾这些东西,过时的东西还是要淘汰的。7月1号又新出了一个SSH漏洞,换系统是势在必行。 目前看了两个不错的Linux发行版 RockyLinux 和 AlmaLinux RockyLinux: https://rockylinux.org/ AlmaLinux: https://almalinux.org/ RockyLinux:由 CentOS 的创始人 Gregory Kurtzer 发起,旨在填补 CentOS 留下的空白。作为一个社区企业操作系统,Rocky Linux 承诺提 […]

CentOS8部署postfix

2024年5月9日 15:04

本文参照centos8电子邮件服务—1.基于Postfix的邮件发送(超级详细)_centos8 启动postfix-CSDN博客配置并记录。感谢原博主2301_77831574的详细和认真,本文仅复现。

本次环境OS:

1.修改主机名并修改/etc/hosts

#hostnamectl set-hostname test.latiao.org
#vim /etc/hosts 

2.安装postfix

#yum -y install postfix
#systemctl enable postfix --now

3.安装mailx邮件客户端

#yum -y install mailx

4.配置 Postfix 邮件服务器

#vim /etc/postfix/main.cf
# cat /etc/postfix/main.cf  | egrep -v '^$|^#'
compatibility_level = 2
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
myhostname = mail.test.latiao.org
mydomain = test.latiao.org
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.137.0/24, 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/
 

debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix/samples
readme_directory = /usr/share/doc/postfix/README_FILES
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_security_level = may
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_security_level = may
meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix

5.重启

systemctl restart postfix

6.测试postfix

[root@test roundcube]# telnet 0 25
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
220 mail.test.latiao.org ESMTP Postfix
helo main.test.latiao.org   # (向服务器表明身份)
250 mail.test.latiao.org 
mail from:a@test.latiao.org  #(设置发件人)
250 2.1.0 Ok
rcpt to:wordpress@latiao.org
250 2.1.5 Ok
#(设置邮件内容,用data命令编辑邮件内容,以“.”结束)
data
354 End data with <CR><LF>.<CR><LF>
hello world!!!
.
250 2.0.0 Ok: queued as 6C8EF10D74A1
quit    #(quit时退出telnet命令)
221 2.0.0 Bye
Connection closed by foreign host.

7.发送完毕。可以去收件箱看看,大概率会进垃圾箱。

换了大盘机

2024年4月25日 23:11
气温升的太快,真是大起大落让人难以接受。 灰常记忆这台机器马上就使用第七个年头,中间重装了一次系统,后面就没怎么管过,除了速度有点“慢”剩下就是稳定了。 今天上来看了一眼硬盘都快爆了,怎么删除多余的文件都不够用。只能拿出大盘鸡顶上,目前所有网站都在大盘鸡上,瓦工的机器用来做备份数据(瓦工有自动快照),实时增量同步文件、数据库每天定时备份发送到vps。做完这些基本上就安逸了。 已经24小时没有睡觉了,真的有点撑不住…… 记得我第一次用vps就没考虑命令那种操作,一是怕有误操作、二是我对linux命令一知半解。多亏选对了,现在看来我搞得这些服务真的有点太多…… 增量同步是个好东西,希望各位都能用起 […]

从Debian系统中删除某个版本的PHP

2024年4月8日 21:10

首先,你需要知道安装的PHP版本的完整包名。可以使用dpkg命令列出所有安装的包,然后找到PHP的版本。

dpkg -l | grep php

找到要卸载的PHP版本对应的包名后,使用apt-get remove命令进行卸载。例如,如果要卸载PHP 8.2,可以执行以下命令:

sudo apt-get remove php8.2*

如果你还想删除配置文件,可以使用apt-get purge命令:

sudo apt-get purge php8.2*

最后,运行autoremove来自动删除不再需要的依赖包:

sudo apt-get autoremove

温馨提示:确保在卸载PHP版本之前,不要影响到系统运行或其他服务依赖PHP的运作。如果你不确定,可以先进行测试卸载,通过添加–dry-run选项来模拟执行卸载命令:

sudo apt-get remove --dry-run php8.2*
❌
❌