Linux 疑难杂症
Linux 疑难杂症
主要记录些在 linux 下碰到的问题,如果某一方面比较多了会单独抽出来写一篇博客
我刚装的 NV 驱动啊!怎么就识别不到了
首先要确定你的驱动是否加载进内核模块了,可以运行 lsmod|grep nvidia
如果没有返回,说明确实没加载
(要是有返回但是驱动不正常请出门左转 google/baidu/bing,一路走好(´з`))
接着要确定你确实安装过驱动,方法是运行
ls /usr/src | grep nvidia
如果像我一样有内容,就说明确实曾经安装过
nvidia-545.23.08
nvidia-open-565.57.01
那这时候有很大概率是因为没有对于的 kernel-modules,linux 下 kernel module 和 kernel 的依赖关系很严格,比如说你在 5.14.0-514 下安装了驱动,然后升级到 5.14.0-522 之后驱动对应的 kernel module 不会被复制到新的内核模块文件夹下。所以这是我们需要重新编译 kernel module。当然了我们不需要下载源代码去重新编译,直接使用 dkms 就行了。
什么是 dkms?dkms(8) - Linux man page
下面以 RHEL 为例捏
sudo dnf install kernel-headers kernel-devel
sudo dkms install -m {MODULE} -v {VERSION}
对于上面 MODULE
就是 nvidia-open,VERSION
就是 565.57.01
chmod 的千层套路
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
MODE 组成:目标+模式
目标可以选择 ugoa
分别为拥有文件的用户(u),与文件拥有者同一组的用户(g),其他用户(o),所有用户(a)
模式可以选择,如果不加的话除了 umask 以外的位都会设置(可以理解成少了几位的 a)
在一般的系统上默认 root umask=0022 / 普通用户 umask=0002
比如说,普通用户 chmod +w FILE
,结果是 -rw-rw-r--
(注意到其他用户的写位并没有设置)
- r 可读
- w 可写
- x 可执行(文件)/ 可搜索(文件夹)
- X 仅当是文件夹时设置可搜索 / 仅当是可执行文件设置为可执行
- s 当文件被读写将 uid/gid 设置为当前用户 uid/gid
- t 删除保留(文件夹)/ 粘滞(文件)
OCTAL-MODE 组成:
4 7 7 7
│││└ 其他用户(o)
││└─ 与文件拥有者同一组的用户(g) (4) 写 (2) 读 (1) 执行
│└── 拥有文件的用户(u)
└─── (4) 设置用户 id (2) 设置组 id (1) 设置保留/粘滞
s 属性
其中 s 属性仅能设置 uga,u 代表设置 uid,g 代表设置 gid,a 代表全都设置
看看设置 s 属性时 ls
有什么区别吧
设置 u
---S------ 1 root root 0 Nov 12 11:35 test # 文件不可执行 (u)
---s------ 1 root root 0 Nov 12 11:35 test # 文件可执行 (u)
设置 g
------S--- 1 root root 0 Nov 12 11:35 test # 文件不可执行 (g)
------s--- 1 root root 0 Nov 12 11:35 test # 文件可执行 (g)
设置 a
---S--S--- 1 root root 0 Nov 12 11:35 test # 文件不可执行 (a)
---s--s--- 1 root root 0 Nov 12 11:35 test # 文件可执行 (a)
那设置 o 呢?默认被忽略了
但其实事实上如上图 OCTAL-MODE 所示,s 属性并不是加在三个类别用户的执行位上的,下文的 t 也是,但是这两个属性在 ls 输出中会分别分布在 u/g/o 的第三(执行)位。
t 属性
对于文件夹
drwxrwxrwt 15 root root 4096 Nov 12 09:45 tmp # 文件夹可搜索 (o)
drwxrwxrwT 15 root root 4096 Nov 12 09:45 tmp # 文件夹不可搜索 (o)
不妨来看下我们最常见的 /tmp,我们会发现这个文件夹被加了 t,这是因为 /tmp 需要所有用户都能读写,但是开放权限下有用户删掉文件夹的可能性,而 t 可以避免何种情况,在没有解除的情况下,除了 root 和拥有者都删不掉。
对于文件,因为已经不怎么使用了,所以不展开了,就介绍下以前的用途吧
The sticky bit was introduced in the Fifth Edition of Unix (in 1974) for use with pure executable files. When set, it instructed the operating system to retain the text segment of the program in swap space after the process exited. This speeds up subsequent executions by allowing the kernel to make a single operation of moving the program from swap to real memory. (From Wikipedia)
千 ls 万色
来源 https://itsfoss.com/ls-color-output/
fortran 编译器的奇怪错误
undefined reference to `main__'
大概发生在 c 中使用 fortran 产物的情况,会默认寻找入口,可以使用 -noformain
禁用