<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[linux-man.cn]]></title> 
<atom:link href="https://www.linux-man.cn/blog/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[Linux爱好者，嗯，只是爱好者！]]></description>
<link>https://www.linux-man.cn/blog/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
    <title>安利是直销还是传销？</title>
    <link>https://www.linux-man.cn/blog/?post=16</link>
    <description><![CDATA[<p>好吧，事情是这样子的。</p>
<p>前些天老婆认识了一个做直销的人，卖的正是安利的产品，我不知道他们这些天发生了些什么，鬼使神差的我老婆在她那里买了大大小小好几罐保健品，更准确的说是食品，因为包装盒上连保健品的标志都没有。更诡异的是我老婆说吃了很有效果，还让我吃，我内心非常抗拒，后来陆陆续续又对我软磨硬泡了几次，都被我拒绝了。直到今天(2025年8月2号)被老婆拉去听了一场安利的什么表彰大会，其实哪是什么表彰大会，就是一群人在台上作秀。台上的那些人让我非常反感，所以决定把他们割韭菜的花招整理发出来，能救一个算一个。</p>
<p>花招一、人性的弱点</p>
<p>1、羡慕强者<br />
台上的那些演员(这样称呼他们是对演员的侮辱，但是我也想都到用其他的词来形容这帮畜生，那接下来都将他们简称为畜生吧。)个个都自爆是高学历，如何自己白手起家创业，现在住的都是江景房，开的都是豪车。这些都利用了人羡慕强者的心理，人会潜意识的以这些外在的条件，去判断这个人是否值得信任。很多真专家和真学者受人尊敬，就是这个道理。</p>
<p>2、贪小便宜</p>
<p>这帮畜生轮番表演如何被他们的老畜生一句话点醒，从此踏上了获取财富的快车道。而且老畜生不记回报的帮助他们，这是利用了人爱贪小便宜的心理，有个成功人士教你，还不收学费，多好啊。</p>
<p>3、恐惧<br />
没错，是恐惧，其中一个畜生巴拉巴拉讲了一堆宏观经济，反正围绕的就是房地产已经成为过去式，未来是高科技，强调他们安利的产品都是高科技产品。我TMD你一个保健食品算哪门子高科技！长沙臭豆腐制作过程都比你们的产品复杂。畜生对宏观经济的理解不还不如大A的散户们，说了一大堆有的没的，无非就是为了让台下的人恐惧，畜生狰狞的表情仿佛在喊：还不加入我们又将错过一次暴富的机会。</p>
<p>花招二、大道理</p>
<p>讲着讲着畜生们突然放了一个视频，画面上有该视频的标题水印，叫《贫穷真相》在网上随便搜了一下也能找到，反正讲的都是一些大道理，想想还很难反驳，只能微笑。但视频里讲的那些道理和畜生们的生活方式以及做法是自相矛盾的，他们播放视频的原因是为了告诉台下的人，资本家都是坏蛋，设计好了游戏规则不让在座的各位赚到钱，但是他们和资本家不同，不是来割韭菜而是来帮助你们的，还是无偿帮助你们的。</p>
<p>花招三、画大饼</p>
<p>畜生们介绍他们的产品海纳百川什么都有，而且从不降价售卖，跟着他们干，不需要启动资金、不需要行业背景，只要努力干，几年就能像他们一样豪车豪房全球旅行，还有个畜生说他二三十年没上过班了，对台下的人来说是多大的诱惑啊，我左看看右看看我身边的人此时听得热血澎湃。</p>
<p>花招四、心理暗示</p>
<p>这招最毒，从开场到结束全是心理暗示，畜生们搭建好的梦境真牛掰，《盗梦空间》都看过呗，台下的人手里没个陀螺都不知道自己在做梦。说一个具有代表性的心理暗示，上台过几组发言的畜生，他们有个共同的流程，1、介绍以前的不堪 2、展示当前的富有和幸福 3、感谢带他们的老畜生。既然是心理暗示，那就是只字不提的地方——他们都是一家人。想一想为什么是这样的组合？对，有点那什么传什么销的内味了吧，是暗示要台下的人拉上家人一起干呢！</p>
<p>两个多小时听下来，就像吃了坏东西，想吐又吐不出来，十分恶心。本来想写一下怎么识别出他们的花招，毕竟畜生们打的都是组合拳，一不小心就会中招，甚至干过安利很多年的人真的不知道自己是在骗人。想了想还是不写了。</p>
<p>少数人来到世界是为了改变世界的，大多数人只要不被世界改变就行了，我也想努力赚钱实现财富自由，实在不行就做个好人，等我老了，我的家人、我的朋友，至少会说我是个好人，这样也不错。</p>
<hr />
<p>安利是直销还是传销？是传销，并且还是演员，是一帮畜生演员在搞传销。</p>]]></description>
    <pubDate>Wed, 06 Aug 2025 10:40:36 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=16</guid>
</item>
<item>
    <title>大模型毁了互联网</title>
    <link>https://www.linux-man.cn/blog/?post=15</link>
    <description><![CDATA[<p>大模型毁了互联网？一场“囚徒困境”的思考与破局</p>
<p>当AI大模型的浪潮席卷而来，其强大的信息整合与生成能力令人惊叹，但随之而来的，却是互联网世界深层的焦虑与不安。一个日益清晰的指控摆在我们面前：大模型毁了互联网。这并非危言耸听，而是基于一个残酷现实的考量：大模型在疯狂爬取互联网海量数据的同时，却鲜有流量反哺给那些辛勤生产内容的网站，导致原本赖以生存的流量枯竭，网站无力盈利，最终走向消亡。然而，讽刺的是，大模型赖以进化的“高质量内容”却恰恰来自这些正在消亡的网站。这无疑是一个正在形成的恶性循环，我们该如何理解并破解它？</p>
<p>恶性循环的形成：流量黑洞与内容枯竭<br />
我们先来细数这个恶性循环的症结所在。</p>
<p>流量的“黑洞”效应： 大模型的核心功能之一便是“问答”。用户通过大模型可以直接获得整合后的信息，而无需跳转至原始网站。这无疑极大地提升了用户获取信息的效率，但代价却是网站流量的急剧流失。以往，用户为了获取信息，会通过搜索引擎进入各个网站，为网站带来广告收入、品牌曝光，甚至用户转化。如今，大模型像一个巨大的“流量黑洞”，将这些原本属于网站的流量尽数吸走，却未提供等价的回报。</p>
<p>盈利模式的崩溃： 对于绝大多数内容型网站而言，广告收入是其主要的生命线。流量的减少直接导致广告点击率下降、广告位价值缩水，进而使网站的盈利能力大打折扣。当维护一个网站的成本高于其所能带来的收益时，关闭便成了唯一的选择。我们已经看到一些小型、中型，甚至一些大型内容网站，正面临前所未有的生存危机。</p>
<p>高质量内容的消逝： 网站的关闭并非孤立事件，它意味着大量高质量原创内容的停止更新，甚至永久性消失。这些内容是互联网的基石，是人类知识和经验的积累。大模型能够生成看似完整流畅的文本，但其内容的“原创性”和“深度”仍需依赖于互联网上已有的高质量语料进行训练和学习。当原创内容生产者无法生存，大模型的“学习材料”便会枯竭，最终导致大模型生成内容的质量也随之下降，形成一个“劣币驱逐良币”的局面。</p>
<p>解决之道：共赢生态的构建与价值重塑</p>
<ol>
<li>大模型所在公司主动给所爬取论文作者版权费</li>
<li>建立内容创作平台例如公众号这样的，一旦被大模型所用可根据流量等等给予相应报酬。</li>
<li>流量反哺给内容网站，例如，在提供整合信息的同时，显著地标注信息来源，并提供直接跳转至原网站的链接，或者在某些特定场景下，引导用户访问原始网站以获取更详细、更具互动性的体验。</li>
</ol>]]></description>
    <pubDate>Mon, 16 Jun 2025 16:27:21 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=15</guid>
</item>
<item>
    <title>crictl images和ctr images的区别是什么？</title>
    <link>https://www.linux-man.cn/blog/?post=14</link>
    <description><![CDATA[<p>crictl images 和 ctr images 都用于列出容器镜像，但它们的使用场景和侧重点有所不同，主要区别在于：</p>
<p>面向的对象不同：</p>
<p>crictl images：是 Kubernetes Container Runtime Interface (CRI) 的命令行工具。CRI 是 Kubernetes 与各种容器运行时（如 containerd, CRI-O 等）进行通信的标准接口。因此，crictl 是为了方便 Kubernetes 管理员和开发者调试 Kubernetes 集群中的容器和镜像而设计的。它反映的是 Kubernetes &quot;看到&quot; 的镜像。<br />
ctr images：是 containerd 容器运行时的命令行工具。containerd 是一个核心容器运行时，负责管理镜像、容器生命周期、存储和网络等。ctr 直接与 containerd 交互，用于直接管理 containerd 中的镜像。</p>
<p>默认命名空间不同：</p>
<p>crictl images：默认情况下，crictl 操作的镜像是存储在 k8s.io 这个命名空间下的。这是 Kubernetes 内部使用的命名空间，确保 Kubernetes 可以识别和使用这些镜像。<br />
ctr images：默认情况下，ctr 操作的镜像是存储在 default 命名空间下的。如果你想让 ctr 看到 crictl 拉取的镜像，或者让 crictl 看到 ctr 拉取的镜像，需要指定命名空间，例如 ctr -n k8s.io images ls。</p>
<p>功能侧重：</p>
<p>crictl：更专注于 Kubernetes 生态系统内的操作，比如列出由 kubelet 管理的 Pod 和容器所使用的镜像。它主要提供 Kubernetes 环境下的调试和管理功能。<br />
ctr：提供更底层、更直接的 containerd 镜像管理功能，包括导入、导出、删除等。对于直接使用 containerd 或进行 containerd 开发和调试的用户来说，ctr 更为实用。</p>
<p>总结来说：</p>
<p>如果你在管理 Kubernetes 集群，并且想查看或操作 Kubernetes 使用的镜像，应该使用 crictl images。 它是 Kubernetes 推荐的工具，因为它会确保镜像在正确的命名空间下，能够被 kubelet 正确识别。<br />
如果你直接使用 containerd，或者需要对 containerd 中的镜像进行更底层的管理（例如导入/导出镜像文件），则可以使用 ctr images。 但请注意命名空间的问题，如果是在 Kubernetes 环境下，通常需要指定 -n k8s.io 参数。</p>
<p>简单来说：crictl 是 Kubernetes 的视角，ctr 是 containerd 的视角。</p>]]></description>
    <pubDate>Sat, 07 Jun 2025 18:12:48 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=14</guid>
</item>
<item>
    <title>Linux crontab防止重复执行任务的办法</title>
    <link>https://www.linux-man.cn/blog/?post=13</link>
    <description><![CDATA[<p><strong>问题</strong></p>
<p>思考一个问题，如下Linux计划任务，假设1分钟内ls -a还没执行完，有什么办法能让crontab在下个周期内不执行ls -a命令？</p>
<pre><code class="language-shell">*/1 * * * *  ls -a</code></pre>
<p>答案是: flock命令</p>
<p>crontab任务改为以下写法：</p>
<pre><code class="language-shell">*/1 * * * * flock -xn /tmp -c "ls -a"</code></pre>
<p><strong>flock命令扩展例子</strong></p>
<p>flock命令它可以用来确保一个命令或脚本只有一个进程在运行，看几个列子：</p>
<p>1、只要其他人不需要锁，就运行带有文件锁的命令：</p>
<pre><code class="language-shell">flock {{path/to/lock.lock}} -c "{{command}}"</code></pre>
<p>2、运行带有文件锁的命令，如果锁不存在则退出：</p>
<pre><code class="language-shell">flock {{path/to/lock.lock}} -n -c "{{command}}"</code></pre>
<p>3、运行带有文件锁的命令，如果锁不存在，则以特定的错误代码退出：</p>
<pre><code class="language-shell">flock {{path/to/lock.lock}} -n -E {{error_code}} -c "{{command}}"</code></pre>
<p><strong>flock命令主要选项</strong></p>
<p>1、 -s  --shared<br />
获得共享锁<br />
2、 -x  --exclusive<br />
获得排他锁(默认)<br />
3、 -u  --unlock<br />
移除锁<br />
4、 -n  --nonblock<br />
失败而不等待<br />
5、 -w  --timeout &lt;秒数&gt;<br />
等待一段时间<br />
6、 -E  --conflict-exit-code &lt;数字&gt;<br />
冲突或超时后的退出代码<br />
7、 -o  --close<br />
在运行命令前关闭文件描述符<br />
8、 -c  --command &lt;命令&gt;<br />
通过 shell 运行一条命令</p>
<p>相关命令</p>
<p>lslocks，列出本地系统锁，用法很简单，感兴趣可以man下。</p>
<pre><code class="language-shell">[root@linuxtime]# lslocks 
COMMAND           PID  TYPE SIZE MODE  M      START        END PATH
tracker-store    3157 POSIX   7M READ  0 1073741826 1073742335 /root/.cache/tracker/meta.db
...省略N行...</code></pre>]]></description>
    <pubDate>Thu, 22 May 2025 16:59:51 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=13</guid>
</item>
<item>
    <title>kafka 不能自动创建__consumer_offsets topic问题</title>
    <link>https://www.linux-man.cn/blog/?post=12</link>
    <description><![CDATA[<p>以前没有部署过单节点的kafka,所以习惯性的将配置文件的副本数设置为3，但是kafka单节点副本数只能为1，导致kafka不能自动创建__consumer_offsets topic。简单记录下这个问题。</p>
<p>下面是kafka日志的一些相关记录<br />
server.log</p>
<pre><code class="language-shell">[2025-05-16 18:31:07,166] INFO [GroupMetadataManager brokerId=1] Finished loading offsets and group metadata from __consumer_offsets-2 in 15 milliseconds for epoch 0, of which 15 milliseconds was spent in the scheduler. (kafka.coordinator.group.GroupMetadataManager)</code></pre>
<p>controller.log</p>
<pre><code class="language-shell">[2025-05-16 18:00:00,520] INFO [QuorumController id=1] CreateTopics result(s): CreatableTopic(name='__consumer_offsets', numPartitions=50, replicationFactor=3, assignments=[], configs=[CreatableTopicConfig(name='compression.type', value='producer'), CreatableTopicConfig(name='cleanup.policy', value='compact'), CreatableTopicConfig(name='segment.bytes', value='104857600')]): INVALID_REPLICATION_FACTOR (Unable to replicate the partition 3 time(s): The target replication factor of 3 cannot be reached because only 1 broker(s) are registered.) (org.apache.kafka.controller.ReplicationControlManager)</code></pre>]]></description>
    <pubDate>Fri, 16 May 2025 18:44:36 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=12</guid>
</item>
<item>
    <title>正则表达式速查卡</title>
    <link>https://www.linux-man.cn/blog/?post=11</link>
    <description><![CDATA[<p><img src="https://www.linux-man.cn/blog/content/uploadfile/202505/a3f41747377682.png" alt="" /></p>
<p>正则表达式速查卡</p>]]></description>
    <pubDate>Fri, 16 May 2025 14:40:58 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=11</guid>
</item>
<item>
    <title>职业病</title>
    <link>https://www.linux-man.cn/blog/?post=10</link>
    <description><![CDATA[<p>IT这个行业干久了，不仅身体上有职业病，精神上也有职业病，我经常认为自己是台服务器，午睡感觉是重启下系统，下午运行速度确实要快很多。晚上睡觉是关机，省电(抗饿)，连续熬夜是系统负载过高，最极端的是连续熬夜后不敢睡觉，怕系统起不来。如果有快照功能就好了。</p>]]></description>
    <pubDate>Fri, 16 May 2025 14:36:23 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=10</guid>
</item>
<item>
    <title>很多人不知道这是个合法的IP</title>
    <link>https://www.linux-man.cn/blog/?post=9</link>
    <description><![CDATA[<p>根据IPv4的规范，一个IP地址由四个字节组成，每个字节可以是0-255之间的任意整数。每个字节之间用点号分隔。</p>
<p>在这个规范中，127.1是一个合法的IP地址。因为它实际上是127.0.0.1的简写。在IPv4地址中，如果地址的某一部分或多个部分是0，那么在没有引起混淆的情况下，可以省略这部分或多个部分的0。因此，127.1实际上是127.0.0.1的简写。</p>
<p>另外，127.0.0.0/8的所有地址都被保留为环回地址，用于在同一台机器上的网络通信。这意味着127.X.X.X（其中X可以是0-255之间的任意整数）的所有地址都是有效的，并且都指向本地机器。所以说，127.1，或者说完整的形式127.0.0.1，是一个完全合法的IP地址。</p>
<p>那么思考下:</p>
<p>192.168.1是192.168.0.1的简写还是192.168.1.0简写?或者这是个错误的简写?</p>
<p>你能例举出其它可以简写的IP吗？</p>]]></description>
    <pubDate>Fri, 16 May 2025 14:31:19 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=9</guid>
</item>
<item>
    <title>Shell基础教程04 数组</title>
    <link>https://www.linux-man.cn/blog/?post=8</link>
    <description><![CDATA[<p>数组是将多个独立的数据存储为一个集合</p>
<p><strong>索引数组</strong></p>
<p>一般用数字作为键的数组叫做索引数组</p>
<p>1、定义一个数组：</p>
<pre><code class="language-shell">ss@ANDROID:~$ array=(a b c d e f)</code></pre>
<p>这些值将会存储在以0为起始索引的连续位置上，对应关系如下：</p>
<pre><code class="language-shell">a  b  c  d  e  f
|  |  |  |  |  |
0  1  2  3  4  5</code></pre>
<p>2、打印特定元素的内容：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${array[2]}
c
ss@ANDROID:~$</code></pre>
<p>看上面的对应关系，索引为2对应的刚好是c</p>
<p>3、打印出数组中所有的值：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${array[*]}
a b c d e f
ss@ANDROID:~$</code></pre>
<p>将索引数字位置改为&quot;*&quot;号或&quot;@&quot;符将打印出数组内所有的值，你试下&quot;@&quot;符吧。</p>
<p><strong>关联数组</strong></p>
<p>一般用字符串作为键的数组叫做关联数组</p>
<p>1、在定义关联数组前需要使用declare命令声明为关联数组，这是bash4.0(shell的一种)后才引入的功能。</p>
<p>将变量arr声明关联数组：</p>
<pre><code class="language-shell">ss@ANDROID:~$ declare -A arr</code></pre>
<p>注意：声明前arr不能是索引数组</p>
<p>2、定义一个关联数组：</p>
<pre><code class="language-shell">ss@ANDROID:~$ arr=([a]="小米" [b]="锤子" [c]="华为")</code></pre>
<p>3、打印特定元素：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${arr[b]}
锤子
ss@ANDROID:~$</code></pre>
<p>4、打印数组中所有的值：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${arr[@]}
小米 锤子 华为
ss@ANDROID:~$</code></pre>
<p>和索引数组一样也&quot;*&quot;、&quot;@&quot;都行</p>
<p><strong>补充</strong></p>
<p>打印数组有多少个元素(数组长度)的语法：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${#array[*]}</code></pre>
<p>打印数组全部索引的语法：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${!array[*]}</code></pre>
<p>更改数组指定索引的值，我们还以上面定义的arr数组为例：</p>
<pre><code class="language-shell">ss@ANDROID:~$ echo ${arr[*]}
小米 锤子 华为
ss@ANDROID:~$ arr[c]="oppop"
ss@ANDROID:~$ echo ${arr[*]}
小米 锤子 oppop
ss@ANDROID:~$</code></pre>
<p>“华为”被换成了“oppop”(没用过oppop手机，应该是拼错了^_^)</p>
<p>索引数组和关联数组以上语法通用，赶快试下吧！</p>
<p><strong>总结</strong></p>
<ul>
<li>数组分为索引数组和关联数组</li>
<li>定义关联数组前需要使用&quot;declare -A 变量名&quot;声明变量为关联数组</li>
<li>封面图片是一个带格子的盒子，有多少个格子就可以放多少个东西，是不是有点类似我们的数组。这也许是程序员都爱穿格子衬衫的原因吧。</li>
<li>我等下搜索下oppop怎么拼</li>
</ul>]]></description>
    <pubDate>Tue, 13 May 2025 17:51:26 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=8</guid>
</item>
<item>
    <title>vim里隐藏的一个小彩蛋</title>
    <link>https://www.linux-man.cn/blog/?post=7</link>
    <description><![CDATA[<p><a href="https://www.linux-man.cn/blog/content/uploadfile/202505/78cf1746865835.png"><img src="https://www.linux-man.cn/blog/content/uploadfile/202505/78cf1746865835.png" alt="" /></a><br />
在末行模式输入smi就能看到一个扮鬼脸的图片</p>]]></description>
    <pubDate>Sat, 10 May 2025 16:29:05 +0800</pubDate>
    <dc:creator>Linux-man.cn</dc:creator>
    <guid>https://www.linux-man.cn/blog/?post=7</guid>
</item></channel>
</rss>