<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post/13290/</link>
<title><![CDATA[[实践OK]rpmbuild的打包技术在install 安装写成多行时的右斜杠后面不能有空格是特别要注意的点～]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Mon, 09 Mar 2026 08:02:31 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13290/</guid> 
<description>
<![CDATA[ 
	```<br/># credential example<br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/><br/><br/>========================================<br/>正确格式（必须紧贴）<br/>正确写法：<br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/>注意：<br/>&#92; 后 不能有空格 :是指：ql_backup/config/ldmgr.cnf &#92;的&#92;后面不能有空格，有就会报错：/root/rpmbuild/tmp/rpm-tmp.MVnKem: line 65: /root/rpmbuild/BUILDROOT/etc/mysql_backup/.ldmgr.cnf: No such file or directory<br/>下一行必须紧接<br/>```<br/><br/>```<br/>Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql-backup<br/>Version:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.0<br/>Release:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1%{?dist}<br/>Summary:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MySQL multi-instance backup tool<br/><br/>License:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GPL<br/>URL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;internal<br/>BuildArch:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noarch<br/><br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bash<br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gzip<br/>Requires:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; util-linux<br/><br/>%description<br/>MySQL backup tool for multi-project and multi-instance environments.<br/><br/>Features:<br/>- Multiple instance backup<br/>- Credential isolation<br/>- Project based configuration<br/>- Automatic cleanup of old backups<br/>- Cron scheduling<br/>- Log rotation support<br/>- flock based concurrency protection<br/><br/><br/>%prep<br/># nothing required<br/><br/><br/>%build<br/># nothing required<br/><br/><br/>%install<br/>rm -rf %{buildroot}<br/><br/>#<br/># Program directory<br/>#<br/><br/>install -d %{buildroot}/usr/local/mysql_backup<br/><br/>#<br/># Config directory<br/>#<br/><br/>install -d %{buildroot}/etc/mysql_backup<br/><br/>#<br/># Runtime directories<br/>#<br/><br/>install -d %{buildroot}/var/lib/mysql_backup<br/>install -d %{buildroot}/var/lock/mysql_backup<br/>install -d %{buildroot}/app/mysql_backup<br/>install -d %{buildroot}/data/logs/mysql_backup<br/><br/>#<br/># Cron and logrotate directories<br/>#<br/><br/>install -d %{buildroot}/etc/cron.d<br/>install -d %{buildroot}/etc/logrotate.d<br/><br/>#<br/># Install program<br/>#<br/><br/>install -m 750 %{_sourcedir}/mysql_backup/mysql_backup.sh &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/usr/local/mysql_backup/<br/><br/>install -m 640 %{_sourcedir}/mysql_backup/db.cfg &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/usr/local/mysql_backup/<br/><br/>#<br/># Credential template<br/>#<br/><br/>install -m 600 %{_sourcedir}/mysql_backup/config/ldmgr.cnf &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;%{buildroot}/etc/mysql_backup/.ldmgr.cnf<br/><br/>#<br/># Cron job<br/>#<br/><br/>cat &gt; %{buildroot}/etc/cron.d/mysql_backup &lt;&lt; &#039;EOF&#039;<br/>SHELL=/bin/bash<br/>PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin<br/>MAILTO=&quot;&quot;<br/><br/>40 03 * * * mysql_backup /usr/local/mysql_backup/mysql_backup.sh ldmgr 10.75.17.10 3306 &gt;&gt; /data/logs/mysql_backup/backup.log 2&gt;&amp;1<br/>EOF<br/><br/>chmod 644 %{buildroot}/etc/cron.d/mysql_backup<br/><br/>#<br/># Logrotate<br/>#<br/><br/>cat &gt; %{buildroot}/etc/logrotate.d/mysql_backup &lt;&lt; &#039;EOF&#039;<br/>/data/logs/mysql_backup/*.log {<br/>&nbsp;&nbsp;&nbsp;&nbsp;daily<br/>&nbsp;&nbsp;&nbsp;&nbsp;rotate 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;compress<br/>&nbsp;&nbsp;&nbsp;&nbsp;delaycompress<br/>&nbsp;&nbsp;&nbsp;&nbsp;missingok<br/>&nbsp;&nbsp;&nbsp;&nbsp;notifempty<br/>&nbsp;&nbsp;&nbsp;&nbsp;create 640 mysql_backup mysql_backup<br/>}<br/>EOF<br/><br/><br/>%pre<br/><br/>#<br/># Create system group<br/>#<br/><br/>getent group mysql_backup &gt;/dev/null &#124;&#124; groupadd -r mysql_backup<br/><br/>#<br/># Create system user<br/>#<br/><br/>if ! getent passwd mysql_backup &gt;/dev/null; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;useradd -r &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-g mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d /var/lib/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-s /sbin/nologin &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-c &quot;MySQL Backup Service&quot; &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_backup<br/>fi<br/><br/><br/>%post<br/><br/>#<br/># Ensure runtime directories exist<br/>#<br/><br/>mkdir -p /var/lib/mysql_backup<br/>mkdir -p /var/lock/mysql_backup<br/>mkdir -p /app/mysql_backup<br/>mkdir -p /data/logs/mysql_backup<br/><br/>#<br/># Ownership<br/>#<br/><br/>chown mysql_backup:mysql_backup /var/lib/mysql_backup<br/>chown mysql_backup:mysql_backup /var/lock/mysql_backup<br/>chown mysql_backup:mysql_backup /app/mysql_backup<br/>chown mysql_backup:mysql_backup /data/logs/mysql_backup<br/><br/>#<br/># Permissions<br/>#<br/><br/>chmod 750 /var/lock/mysql_backup<br/>chmod 750 /app/mysql_backup<br/>chmod 750 /data/logs/mysql_backup<br/><br/>#<br/># SELinux compatibility<br/>#<br/><br/>if command -v restorecon &gt;/dev/null 2&gt;&amp;1; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;restorecon -R &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/lib/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/var/lock/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/app/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/data/logs/mysql_backup &#92;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&gt;/dev/null &#124;&#124; true<br/>fi<br/><br/>echo &quot;mysql-backup installed successfully.&quot;<br/><br/><br/>%preun<br/># nothing required<br/><br/><br/>%files<br/>%defattr(-,root,root,-)<br/><br/>#<br/># parent directories<br/>#<br/><br/>%dir /app<br/>%dir /data<br/>%dir /data/logs<br/><br/>#<br/># runtime directories<br/>#<br/><br/>%dir %attr(0750,mysql_backup,mysql_backup) /var/lib/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /var/lock/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /app/mysql_backup<br/>%dir %attr(0750,mysql_backup,mysql_backup) /data/logs/mysql_backup<br/><br/>#<br/># program<br/>#<br/><br/>%dir %attr(0750,root,root) /usr/local/mysql_backup<br/>/usr/local/mysql_backup/mysql_backup.sh<br/>%config(noreplace) /usr/local/mysql_backup/db.cfg<br/><br/>#<br/># configuration<br/>#<br/><br/>%dir %attr(0750,root,mysql_backup) /etc/mysql_backup<br/>%config(noreplace) /etc/mysql_backup/.ldmgr.cnf<br/><br/>#<br/># cron<br/>#<br/><br/>%config(noreplace) /etc/cron.d/mysql_backup<br/><br/>#<br/># logrotate<br/>#<br/><br/>%config(noreplace) /etc/logrotate.d/mysql_backup<br/><br/><br/>%changelog<br/><br/>* Mon Mar 09 2026 DevOps Team<br/>- Enterprise initial release<br/>- Multi-instance MySQL backup support<br/>- Cron scheduling<br/>- Logrotate integration<br/>- flock lock protection<br/>```
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13181/</link>
<title><![CDATA[[一定注意]在 MacBook 上使用了 /var/data/... 这种“伪路径”，它其实被 macOS 透明重写成 /private/var/data，再被 Docker Desktop 映射到容器时权限/安全层被拒。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 12 Dec 2025 01:44:48 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13181/</guid> 
<description>
<![CDATA[ 
	实践：https://jackxiang.com/post/13175/ 发现的问题。解决如下：<br/><br/>问题：<br/>确定是目录问题： docker logs 2bb9832099fb metaPropertiesEnsemble=MetaPropertiesEnsemble(metadataLogDir=Optional.empty, dirs=&#123;/var/data/logs/kafka: EMPTY&#125;) Formatting /var/data/logs/kafka with metadata.version 3.7-IV4. Error while writing meta.properties file /var/data/logs/kafka: /var/data/logs/kafka/bootstrap.checkpoint.tmp Creating SCRAM user: admin 目录目前如下： ls -ld /var/data/logs/kafka drwxrwxrwx@ 2 1000 1000 64 12月 11 17:34 /var/data/logs/kafka 不知道为何写入不进去，还是macbook下面的/var/data 是软链接？<br/><br/><br/>回复：<br/>在 MacBook 上使用了 /var/data/... 这种“伪路径”，它其实被 macOS 透明重写成 /private/var/data，再被 Docker Desktop 映射到容器时权限/安全层被拒。<br/>你遇到的这个问题 100% 是 macOS 的挂载点权限机制导致的，和 Kafka、脚本、docker-compose 完全无关。<br/>核心结论：<br/>这是因为你在 MacBook 上使用了 /var/data/... 这种“伪路径”，它其实被 macOS 透明重写成 /private/var/data，再被 Docker Desktop 映射到容器时权限/安全层被拒。<br/>Docker Desktop 在 macOS 上对所有 根路径 /var/ 有非常严格的限制。<br/>这类目录：<br/>/var<br/>/usr<br/>/bin<br/>/sbin<br/>/etc<br/>被 macOS 视作 系统保护目录（SIP 保护），大部分情况下 不能作为 Docker volume 挂载点。<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/13085/</link>
<title><![CDATA[[实践OK]升级macbook之后，鼠标在钉钉中上滚动时有些不听使唤不能及时停下，请问如何设置能解决此问题 ？]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Thu, 25 Sep 2025 06:56:19 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/13085/</guid> 
<description>
<![CDATA[ 
	选择：------------------------------------------------<br/>一、最快方案（免费，2 分钟） &lt;==这个方案一旦用习惯加速度再用它，有些呆板，又切换了回来。钉钉这个企业用的办公APP得与时俱进才行呐。<br/><a href="http://www.jackxiang.com/attachment.php?fid=1160" target="_blank"><img src="http://www.jackxiang.com/attachment.php?fid=1160" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0" width="720"/></a><br/><br/><br/>问题本质&nbsp;&nbsp;<br/>macOS 升级后，系统把「滚动加速度」算法改了，钉钉 8.x 本身又是 Electron 套壳，结果就出现&nbsp;&nbsp;<br/>「手指离开滚轮后，页面还继续滑一段，甚至停不下来」的感觉。&nbsp;&nbsp;<br/>把加速度关小、让滚动变成「行距式」就能立竿见影。<br/><br/>------------------------------------------------<br/>一、最快方案（免费，2 分钟）<br/><br/>1. 装开源小工具 LinearMouse&nbsp;&nbsp;<br/>&nbsp;&nbsp; GitHub 直接搜 LinearMouse → Releases 下载 `LinearMouse.dmg` 拖进 Applications 即可。<br/><br/>2. 打开后只做 3 处勾选&nbsp;&nbsp;<br/>&nbsp;&nbsp; - 左侧选你的鼠标（蓝牙/有线都会列出来）&nbsp;&nbsp;<br/>&nbsp;&nbsp; - 关闭 「Scrolling → Acceleration」&nbsp;&nbsp;<br/>&nbsp;&nbsp; - Scrolling → Distance 选 「Line」并填 3 行（钉钉里刚好一屏聊天记录）&nbsp;&nbsp;<br/>&nbsp;&nbsp; 立即生效，不用重启钉钉。<br/><br/>------------------------------------------------<br/>二、如果已经在用 Mos / BetterMouse<br/><br/>- Mos 里把 「Smooth Scrolling」强度降到 30 % 以下，&nbsp;&nbsp;<br/>&nbsp;&nbsp;再把 DingTalk 加入 「例外列表」→ 平滑模式选 「Disable」即可。&nbsp;&nbsp;<br/>- BetterMouse 同理，把 Accel 曲线调成 Linear，行距 3 行。<br/><br/>------------------------------------------------<br/>三、临时不改软件，也能缓解<br/><br/>- 系统设置 → 鼠标 → 把 「滚动速度」左边再降 1 格；&nbsp;&nbsp;<br/>- 钉钉内按 ⌘ + 0 先恢复 100 % 缩放，防止滚轮被当成缩放指令。<br/><br/>------------------------------------------------<br/>四、仍不满意<br/><br/>- 回退钉钉：卸载当前版 → 官网下载 7.5.2 旧版（64 bit 仍能登录），&nbsp;&nbsp;<br/>&nbsp;&nbsp;7.x 没有新版滚动滞后问题。<br/><br/>按上面任意一步做完，钉钉里滚轮就能「指哪停哪」了。祝使用愉快！
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12995/</link>
<title><![CDATA[[NAS盘多]Centos7.9四块硬盘，但是每次启动 sda sdb sdc sdb 对应的硬盘总是不确定的，怎么把硬盘跟你序号绑定呢?]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Wed, 09 Jul 2025 06:54:38 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12995/</guid> 
<description>
<![CDATA[ 
	加个nofail的原因是：<br/>防止磁盘有块挂了，再重启的时候会进入single user模式哩。<br/><br/><br/>用udev 肯定能解决。<br/>/dev/sda&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xfs&nbsp;&nbsp;&nbsp;&nbsp; defaults,nofail 0 2<br/><br/>UUlD=b0252554-ae09-457d-9022-0b44b68cc28c/disk2 ext4 defaults,nofail 0 2<br/>UUlD=bd3bf106-35d8-4640-ba61-3524fc7c6408 /disk1 ex4 defaults,nofail 0 2<br/>UUID=026bc351-1047-40c3-88bf-9a33eb47fd70 /disk3 ext4 defaults,nofail 0 2<br/><br/><br/> mount -a 一下<br/>记得加UPS<br/>我之前R720XD， 装了5、6块硬盘，也就是当个NAS没什么处理任务，再加个UPS，也就是100多w<br/>一块盘10W左右了<br/>二手730XD 一两千随便搞了<br/>买的二手服务器 挂过一次<br/>打算弄个10盘位机箱，弄个大存储，装个freenas之类的
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12538/</link>
<title><![CDATA[FreeBSD from 14.0 Upgrading to 14.1]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 16 Aug 2024 01:40:43 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12538/</guid> 
<description>
<![CDATA[ 
	1. Made sure everything was updated and did; freebsd-update fetch &amp; freebsd-update install (nothing to do becuase I was up to date).<br/>2. freebsd-update -r 14.1-RELEASE upgrade<br/>3. freebsd-update install<br/>4. shutdown -r now<br/>5. freebsd-update install<br/>6. shutdown -r now (maybe overkill)<br/>7. pkg-static upgrade -f<br/>8. freebsd-update install (nothing to do)<br/>9. shutdown -r now<br/><br/>freebsd-version -kru gave me;<br/>14.1-RELEASE<br/>14.0-RELEASE<br/>14.1-RELEASE<br/><br/>Then I did freebsd-update fetch &amp; freebsd-update install and the system reverted back to 14.0<br/>来自：https://forums.freebsd.org/threads/upgrading-to-14-1.93700/<br/><br/>实践如下：<br/>freebsd-update fetch &amp; freebsd-update install <br/><br/>[root@core ~]# sudo freebsd-update install<br/>No updates are available to install.<br/>Run &#039;/usr/sbin/freebsd-update fetch&#039; first.<br/>[root@core ~]# uname&nbsp;&nbsp;-rasp<br/>FreeBSD core.hatch.l.lw4.cn 14.0-RELEASE-p9 FreeBSD 14.0-RELEASE-p9 #0: Tue Aug&nbsp;&nbsp;6 19:52:06 UTC 2024&nbsp;&nbsp;&nbsp;&nbsp; root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 amd64<br/>[root@core ~]# freebsd-update fetch<br/>Looking up update.FreeBSD.org mirrors... 3 mirrors found.<br/>Fetching metadata signature for 14.0-RELEASE from update1.freebsd.org... done.<br/>Fetching metadata index... done.<br/>Inspecting system... done.<br/>Preparing to download files... done.<br/><br/>No updates needed to update system to 14.0-RELEASE-p9.<br/>You have new mail in /var/mail/root<br/>[root@core ~]# freebsd-update -r 14.1-RELEASE upgrade<br/>Looking up update.FreeBSD.org mirrors... 3 mirrors found.<br/>Fetching metadata signature for 14.0-RELEASE from update1.freebsd.org... done.<br/>Fetching metadata index... done.<br/>Fetching 1 metadata files... done.<br/>Inspecting system... done.<br/><br/>The following components of FreeBSD seem to be installed:<br/>kernel/generic kernel/generic-dbg src/src world/base world/lib32<br/><br/>The following components of FreeBSD do not seem to be installed:<br/>world/base-dbg world/lib32-dbg<br/><br/>Does this look reasonable (y/n)? y<br/><br/>Fetching metadata signature for 14.1-RELEASE from update1.freebsd.org... done.<br/>Fetching metadata index... done.<br/>Fetching 1 metadata patches. done.<br/>Applying metadata patches... done.<br/>Fetching 1 metadata files... <br/>6490....6500....6510....6520....6530....6540....6550....6560....6570....6580....6590....6600....6610....6620....6630....6640....6650....6660....6670....6680....6690....6700....6710....6720....6730....6740....6750....6760....6770....6780....6790....6800....6810....6820....6830....6840....6850....6860....6870....6880....6890....6900....6910....6920....6930....6940....6950.Timeout, server 10.10.0.1 not responding.<br/><br/><br/>Freebsd升级到这一步，不想升级了，清理掉产生的内容，怎么弄？<br/>freebsd-update rollback<br/>rm -rf /var/db/freebsd-update/*<br/>rm -rf /usr/freebsd-update/*<br/><br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12475/</link>
<title><![CDATA[[实践OK]远程桌面连接linux/centos服务器时，画面突然放大，画面随光标移动]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Thu, 04 Jul 2024 03:18:04 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12475/</guid> 
<description>
<![CDATA[ 
	远程桌面连接linux服务器时，画面突然放大，且画面随光标移动。<br/>解决方法<br/>Alt + 鼠标滑轮<br/>Alt + 鼠标滑轮可以进行画面的放大、缩小。有的时候不注意按到键盘，可能出现这种情况。特此记录。<br/>摘自：https://blog.csdn.net/ykwjt/article/details/127451351<br/><br/>macbook下面是option+鼠标滑轮（苹果鼠标二手指前后移动=远程屏幕放大缩小）
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12366/</link>
<title><![CDATA[[实践OK]CentOS7下面screen is very slow when it opens new window。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Wed, 17 Apr 2024 09:41:11 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12366/</guid> 
<description>
<![CDATA[ 
	除开strace外还有一款性能分析工具：<br/>sudo yum install perf<br/>perf record -F max -a -g -- screen -ls<br/><br/>perf record -F max -a -g -- screen -ls<br/>info: Using a maximum frequency rate of 11,000 Hz<br/>There is a screen on:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16882.abc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Detached)<br/>1 Socket in /var/run/screen/S-root.<br/><br/>[ perf record: Woken up 14 times to write data ]<br/>[ perf record: Captured and wrote 4.143 MB perf.data (34888 samples) ]<br/>可在不同设备上读取的perf.data 文件. 您可以使用 perf 工具将性能数据记录到 perf.data 文件中，以便在不同的设备上分析。<br/><br/><br/>echo Soft: $(ulimit -Sn)<br/>echo Hard: $(ulimit -Hn)<br/>Soft: 1024000<br/>Hard: 1024000<br/><br/>立即生效的解决办法(重启配置失效)：<br/>ulimit -Sn 10000<br/>ulimit -Hn 50000<br/><br/>重启后永久生效实操：<br/>要在 CentOS 7 上永久设置 `ulimit`，您需要修改 `/etc/security/limits.conf` 文件。这个文件允许您设置系统级别的资源限制。您可以按照以下步骤进行修改：<br/><br/>1. 打开终端并以 root 用户身份登录。<br/>2. 使用文本编辑器（如 `vi` 或 `nano`）打开 `/etc/security/limits.conf` 文件：<br/><br/>```bash<br/>sudo vi /etc/security/limits.conf<br/>```<br/><br/>3. 在文件末尾添加以下行：<br/><br/>```<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soft&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;10000<br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hard&nbsp;&nbsp;&nbsp;&nbsp;nofile&nbsp;&nbsp;50000<br/>```<br/><br/>这里，`soft` 代表软限制，`hard` 代表硬限制。软限制是系统允许的最大值，超过此限制时会发出警告。硬限制是系统允许的绝对最大值，超过此限制时会导致操作失败。通常情况下，软限制和硬限制是相同的。<br/><br/>4. 保存并关闭文件。在 vi 中，您可以按 `Esc` 键输入 `:wq` 然后按 `Enter` 保存并退出。<br/><br/>5. 重新启动系统或重新登录以使更改生效。<br/><br/>现在 `ulimit` 的设置应该在系统重新启动后生效，并且将永久保持。<br/><br/>fix: Normalize RLIMIT_NOFILE (LimitNOFILE) to sensible defaults：<br/>https://github.com/moby/moby/pull/45534<br/><br/>gnu screen run extremely slow when using &#039;root&#039; user in container since docker 23.0.1 #45380:<br/>https://github.com/moby/moby/issues/45380<br/><br/><br/>=============================================================<br/><br/>火焰图<br/>on-cpu火焰图可以用于分析cpu是被哪些线程、哪些函数占用的，可以方便的找到热点代码便于后续分析优化。下面我们介绍下火焰图的生成和使用方法。<br/><br/>使用方法<br/>准备FlameGraph工具。<br/>git clone https://github.com/brendangregg/FlameGraph.git<br/>用perf record采集CPU信息。<br/>perf record -e cpu-clock -g&nbsp;&nbsp;./perf_test<br/>Ctrl+c结束执行后，在当前目录下会生成采样数据perf.data。<br/><br/>用perf script工具对perf.data进行解析。<br/>perf script -i perf.data &amp;&gt; perf.unfold<br/>将perf.unfold中的符号进行折叠。<br/>./stackcollapse-perf.pl perf.unfold &amp;&gt; perf.folded<br/>最后生成svg图。<br/>./flamegraph.pl perf.folded &gt; perf.svg<br/>perf.svg 用浏览器就可以打开<br/><br/>来自：https://github.com/moby/moby/pull/45534
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12110/</link>
<title><![CDATA[[实践OK]在FreeBSD上安装使用unzip]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Thu, 16 Nov 2023 03:21:50 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12110/</guid> 
<description>
<![CDATA[ 
	Mac下面压缩是zip的，放FreeBSD下面怎么解压呢？<br/>FreeBSD下面安装unzip的方法是：<br/>pkg install&nbsp;&nbsp;-y unzip #注意：-y是安装在unzip的前面才行<br/><br/>二是：Port方式安装：<br/>--&gt;whereis unzip&nbsp;&nbsp;查找port源<br/>一般是/usr/ports/archivers/unzip<br/>cd /usr/ports/archivers/unzip<br/>make install clean<br/>rehash&nbsp;&nbsp;&nbsp;&nbsp;---在不重启服务器的条件使安装了的命令生效<br/>就可以用unzip命令了 。。<br/>然后通过ftp上传PHPWind_GBK_5[1].3.zip<br/>用unzip PHPWind_GBK_5[1].3.zip<br/>在服务器上解压。。<br/><br/>===&gt; Options unchanged<br/>/!&#92; WARNING /!&#92;<br/><br/>You have security/openssl installed but do not have<br/>DEFAULT_VERSIONS+=ssl=openssl set in your make.conf<br/><br/>===&gt;&nbsp;&nbsp;License Info-ZIP accepted by the user<br/>===&gt;&nbsp;&nbsp; unzip-6.0_8 depends on file: /usr/local/sbin/pkg - found<br/>=&gt; unzip60.tar.gz doesn&#039;t seem to exist in /usr/ports/distfiles/.<br/>=&gt; Attempting to fetch https://downloads.sourceforge.net/project/infozip/UnZip%206.x%20%28latest%29/UnZip%206.0/unzip60.tar.gz<br/>===&gt;&nbsp;&nbsp; Generating temporary packing list<br/>install&nbsp;&nbsp;-s -m 555 /usr/ports/archivers/unzip/work/unzip60/unzip&nbsp;&nbsp;/usr/ports/archivers/unzip/work/stage/usr/local/bin<br/>cd /usr/ports/archivers/unzip/work/unzip60 &amp;&amp;&nbsp;&nbsp;install&nbsp;&nbsp;-s -m 555 funzip unzipsfx /usr/ports/archivers/unzip/work/stage/usr/local/bin<br/>/bin/ln -sf unzip /usr/ports/archivers/unzip/work/stage/usr/local/bin/zipinfo<br/>install&nbsp;&nbsp;-m 555 /usr/ports/archivers/unzip/work/unzip60/unix/zipgrep /usr/ports/archivers/unzip/work/stage/usr/local/bin<br/>install&nbsp;&nbsp;-m 444 /usr/ports/archivers/unzip/work/unzip60/man/unzip.1&nbsp;&nbsp;/usr/ports/archivers/unzip/work/stage/usr/local/share/man/man1<br/>cd /usr/ports/archivers/unzip/work/unzip60/man &amp;&amp; install&nbsp;&nbsp;-m 444 funzip.1 unzipsfx.1 zipgrep.1 zipinfo.1&nbsp;&nbsp;/usr/ports/archivers/unzip/work/stage/usr/local/share/man/man1<br/>cd /usr/ports/archivers/unzip/work/unzip60 &amp;&amp; install&nbsp;&nbsp;-m 0644 README WHERE /usr/ports/archivers/unzip/work/stage/usr/local/share/doc/unzip<br/>====&gt; Compressing man pages (compress-man)<br/>===&gt;&nbsp;&nbsp;Installing for unzip-6.0_8<br/>===&gt;&nbsp;&nbsp;Checking if unzip is already installed<br/>===&gt;&nbsp;&nbsp; Registering installation for unzip-6.0_8<br/>Installing unzip-6.0_8...<br/>===&gt;&nbsp;&nbsp;Cleaning for unzip-6.0_8<br/><br/>来自：https://dude6.com/article/182115.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/12043/</link>
<title><![CDATA[[实践OK]MacBook下面查看系统日志的步骤。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Tue, 26 Sep 2023 03:30:05 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/12043/</guid> 
<description>
<![CDATA[ 
	1、命令行直接打开「控制台」应用程序：/System/Applications/Utilities/Console.app<br/>2、手工打开「控制台」应用程序步骤：使用 Spotlight 搜索：点击屏幕右上角的放大镜图标或按下 Command + 空格键，然后在弹出的搜索栏中输入 &quot;控制台&quot;（Console）。<br/><br/>在搜索结果中，你应该会看到 &quot;控制台&quot; 应用程序的图标。点击它以打开应用程序。<br/><br/>一旦打开 &quot;控制台&quot; 应用程序，你将看到左侧的导航栏，其中包含不同类型的日志。你可以选择 &quot;日志报告&quot; 以查看系统日志文件。<br/>==============================================================================================<br/>崩溃报告（Crash Reports）：这些报告通常包含有关应用程序或进程崩溃的信息。如果 WindowServer 或其他进程崩溃，相关信息可能会出现在这些报告中。<br/><br/>Spin报告（Spin Reports）：Spin 报告包含关于进程的信息，可能会显示进程卡住的情况。这些报告可能提供一些线索，说明哪个进程可能导致了问题。<br/><br/>日志报告（Log Reports）：日志报告通常包含系统和应用程序的日志信息。虽然它们不是系统日志，但可能包含有关 WindowServer 或其他进程活动的记录。<br/><br/>诊断报告（Diagnostics Reports）：诊断报告通常是系统生成的详细报告，用于识别和解决问题。你可以查看这些报告以获取更多信息。<br/><br/>请打开这些报告，查看是否有与 WindowServer 或其他进程相关的信息，以便更好地了解问题的根本原因。如果你不确定如何解释报告中的信息或需要进一步的帮助，建议联系 Apple 支持或专业人员进行更详细的故障排除。感谢你的耐心和理解。
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/11921/</link>
<title><![CDATA[[实践OK]mac中的软链接文档，如何打包时打包成真实文档路径。2是拷备时直接拷原文件]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Tue, 11 Jul 2023 03:42:22 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/11921/</guid> 
<description>
<![CDATA[ 
	在Mac上，软链接（symbolic link）是一种特殊类型的文件，它指向另一个文件或目录的路径。默认情况下，当你使用打包工具（例如tar命令）打包软链接时，会将软链接本身打包进去，而不是它所指向的实际文件。<br/><br/>如果你想要在打包时将软链接解析成实际文件路径并打包实际文件，可以使用-L选项来强制解析软链接。这样，打包工具会将软链接解析成实际文件，并将实际文件打包进去。<br/><br/>下面是使用tar命令打包时解析软链接的示例命令：<br/><br/><textarea name="code" class="php" rows="15" cols="100">
tar -czLf archive.tar.gz /path/to/symlink
</textarea><br/>这个命令会将/path/to/symlink软链接解析成实际文件，并将实际文件打包到archive.tar.gz中。<br/><br/>另外，如果你想要直接拷贝软链接所指向的原始文件，而不是拷贝软链接本身，可以使用cp命令的-L选项。这样，cp命令会拷贝软链接所指向的实际文件而不是软链接本身。<br/><br/>下面是使用cp命令拷贝软链接指向的原始文件的示例命令：<br/><textarea name="code" class="php" rows="15" cols="100">
cp -L /path/to/symlink /path/to/destination
</textarea><br/>这个命令会拷贝/path/to/symlink软链接所指向的实际文件到/path/to/destination目录中。<br/><br/>请注意，tar命令和cp命令中的-L选项可能在不同的操作系统和版本中略有不同，请根据你的系统和命令版本来查阅相关文档以确保正确使用。<br/><br/><br/>=========<br/>在 CentOS 7 中，systemctl 会根据服务的名称在 /var/run 目录下的 systemd 子目录创建对应的 PID 文件。具体来说，对于服务名称为 pdfwatcher 的服务，systemctl 会在 /var/run/systemd/ 目录下创建一个名为 pdfwatcher.service 的 PID 文件。<br/><br/>你可以通过以下命令查看该 PID 文件的内容：<br/><br/>bash<br/>Copy code<br/>cat /var/run/systemd/pdfwatcher.service<br/>该文件中只包含一个数字，即 pdfwatcher 服务的进程号。这样，systemctl 就可以根据 PID 文件来跟踪服务的进程，并执行相应的管理和控制操作。<br/><br/>请注意，/var/run 目录通常在系统启动时自动挂载，并用于存储运行时的变量数据和进程相关信息。因此，当服务启动时，systemd 会自动在这个目录下创建 PID 文件。<br/><br/><br/><br/><br/>User<br/>我没有找到对应的pid文件，我的systemctl的service文件是写成这样的，为何没有生成呢？<br/>cat /usr/lib/systemd/system/pdfwatcher.service <br/># It&#039;s not recommended to modify this file in-place, because it<br/># will be overwritten during upgrades.&nbsp;&nbsp;If you want to customize,<br/># the best way is to use the &quot;systemctl edit&quot; command.<br/><br/>[Unit]<br/>Description=pdfwatcher is a real-time monitoring pdf file chmod value is no longer 400 and alarm daemon<br/>After=network.target<br/><br/>[Service]<br/><br/>Type=forking<br/><br/>ExecStart=/usr/local/pdfwatcher/bin/pdfwatcherd -d<br/><br/>ExecStop=/usr/local/pdfwatcher/bin/pdfwatcherd stop<br/><br/>PrivateTmp=true<br/><br/>[Install]<br/>WantedBy=multi-user.target
]]>
</description>
</item>
</channel>
</rss>