<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LinuxFix</title><link>https://linux.shenlijun.cn/</link><description>Recent content on LinuxFix</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 23 Oct 2026 16:00:00 +0800</lastBuildDate><atom:link href="https://linux.shenlijun.cn/index.xml" rel="self" type="application/rss+xml"/><item><title>ext4: No space left on device, but df -h shows free space</title><link>https://linux.shenlijun.cn/errors/ext4-no-space-left-inodes/</link><pubDate>Fri, 23 Oct 2026 16:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/errors/ext4-no-space-left-inodes/</guid><description>&lt;h2 id="what-you-see"&gt;What you see&lt;/h2&gt;&#10;&lt;p&gt;Writes fail, but &lt;code&gt;df -h&lt;/code&gt; insists there is room:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;$ df -h /var&#10;Filesystem Size Used Avail Use% Mounted on&#10;/dev/sda2 59G 41G 15G 74% /var&#10;&#10;$ echo hello &amp;gt; /var/spool/postfix/maildrop/test&#10;-bash: /var/spool/postfix/maildrop/test: No space left on device&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Nothing was ever deleted to make room, and &lt;code&gt;du -sh /var&lt;/code&gt; agrees there is space. The filesystem is not out of &lt;em&gt;blocks&lt;/em&gt; — it is out of &lt;em&gt;inodes&lt;/em&gt;, the fixed-size records that hold a file&amp;rsquo;s metadata. Every file, directory and symlink consumes exactly one inode, no matter how small it is.&lt;/p&gt;</description></item><item><title>Docker Socket Permission Checker</title><link>https://linux.shenlijun.cn/tools/docker-socket-permission-checker/</link><pubDate>Fri, 23 Oct 2026 14:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/tools/docker-socket-permission-checker/</guid><description>&lt;p&gt;&lt;code&gt;permission denied while trying to connect to the Docker daemon socket&lt;/code&gt; is not one error, it is four. This tool reads the two commands that separate them and tells you which one you have.&lt;/p&gt;</description></item><item><title>About LinuxFix</title><link>https://linux.shenlijun.cn/about/</link><pubDate>Fri, 23 Oct 2026 12:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/about/</guid><description>&lt;p&gt;LinuxFix is a small reference site for Linux errors that are hard to read from the message alone: a systemd exit code, a 502 with a truncated upstream, a permission denied on a socket, a cron expression that does not fire when you think it should.&lt;/p&gt;</description></item><item><title>Contact</title><link>https://linux.shenlijun.cn/contact/</link><pubDate>Fri, 23 Oct 2026 12:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/contact/</guid><description>&lt;p&gt;Email: &lt;strong&gt;&lt;a href="mailto:linux@shenlijun.cn"&gt;linux@shenlijun.cn&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Use it for:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A fix on this site that did not work on your system&lt;/li&gt;&#10;&lt;li&gt;A wrong path, flag, or default for your distribution&lt;/li&gt;&#10;&lt;li&gt;A dead link or a typo&lt;/li&gt;&#10;&lt;li&gt;A suggestion for an error that deserves a page&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="what-to-include"&gt;What to include&lt;/h2&gt;&#10;&lt;p&gt;The faster the report is actionable, the faster it gets fixed:&lt;/p&gt;</description></item><item><title>Cron Expression Generator</title><link>https://linux.shenlijun.cn/tools/cron-expression-generator/</link><pubDate>Fri, 23 Oct 2026 12:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/tools/cron-expression-generator/</guid><description>&lt;h2 id="how-the-five-fields-work"&gt;How the five fields work&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Field&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Values&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Minute&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0-59&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hour&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0-23&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;24-hour clock&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Day of month&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1-31&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Month&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1-12&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Day of week&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0-7&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;0 and 7 are Sunday&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Each field accepts &lt;code&gt;*&lt;/code&gt;, a number, a range (&lt;code&gt;1-5&lt;/code&gt;), a step (&lt;code&gt;*/15&lt;/code&gt;), a list (&lt;code&gt;1,15,30&lt;/code&gt;), or a combination (&lt;code&gt;10-20/2&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Privacy Policy</title><link>https://linux.shenlijun.cn/privacy/</link><pubDate>Fri, 23 Oct 2026 12:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/privacy/</guid><description>&lt;p&gt;Last updated: 23 October 2026&lt;/p&gt;&#10;&lt;p&gt;LinuxFix is a static website. There are no accounts, no comment forms, and no newsletter. This page explains the small amount of data that does pass through the site.&lt;/p&gt;</description></item><item><title>Docker: permission denied on /var/run/docker.sock</title><link>https://linux.shenlijun.cn/errors/docker-permission-denied-var-run-docker-sock/</link><pubDate>Fri, 23 Oct 2026 11:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/errors/docker-permission-denied-var-run-docker-sock/</guid><description>&lt;h2 id="what-you-see"&gt;What you see&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt; fails immediately with &lt;code&gt;permission denied&lt;/code&gt; on &lt;code&gt;/var/run/docker.sock&lt;/code&gt;, while &lt;code&gt;sudo docker ps&lt;/code&gt; works. Nothing is wrong with the daemon.&lt;/p&gt;&#10;&lt;h2 id="why-it-happens"&gt;Why it happens&lt;/h2&gt;&#10;&lt;p&gt;The socket is owned by &lt;code&gt;root:docker&lt;/code&gt; with mode &lt;code&gt;0660&lt;/code&gt;. Your user can read the file but cannot open it, because it is not in the &lt;code&gt;docker&lt;/code&gt; group. A re-login is required after the group is added; an open shell keeps the old group list.&lt;/p&gt;</description></item><item><title>nginx 502: upstream prematurely closed connection</title><link>https://linux.shenlijun.cn/errors/nginx-502-upstream-prematurely-closed/</link><pubDate>Fri, 23 Oct 2026 10:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/errors/nginx-502-upstream-prematurely-closed/</guid><description>&lt;h2 id="what-you-see"&gt;What you see&lt;/h2&gt;&#10;&lt;p&gt;The browser gets &lt;code&gt;502 Bad Gateway&lt;/code&gt;. &lt;code&gt;error.log&lt;/code&gt; contains &lt;code&gt;upstream prematurely closed connection while reading response header from upstream&lt;/code&gt;, and the &lt;code&gt;upstream:&lt;/code&gt; field tells you which socket nginx tried.&lt;/p&gt;</description></item><item><title>systemd: Failed to Start Service (exit code 203/EXEC)</title><link>https://linux.shenlijun.cn/errors/systemd-exit-code-203-exec/</link><pubDate>Fri, 23 Oct 2026 09:00:00 +0800</pubDate><guid>https://linux.shenlijun.cn/errors/systemd-exit-code-203-exec/</guid><description>&lt;h2 id="what-you-see"&gt;What you see&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;systemctl status myapp&lt;/code&gt; reports a failed unit, and the journal shows &lt;code&gt;status=203/EXEC&lt;/code&gt;. The service never reaches your application code, so there is no stack trace and no log line from the app itself.&lt;/p&gt;</description></item></channel></rss>