[实践OK]Linux系统下的stderr和stdout详细解说。
Unix/LinuxC技术 jackxiang 2019-6-13 17:58
#cat stdouterr.c
解答:这段代码的输出是什么呢?你可以快速的将代码敲入你电脑上(当然,拷贝更快),然后发现输出是
World!Hello
果然:
./stdouterr
World!Hello
这是为什么呢?在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出,举例来说就是printf(stdout, "xxxx") 和 printf(stdout, "xxxx\n"),前者会憋住,直到遇到新行才会一起输出。而printf(stderr, "xxxxx"),不管有么有\n,都输出。
stdout憋住,证明换行才会输出:
#cat stdouterr.c
#./stdouterr
Hello Hello #stdout换行输出
World! Hello #World!是stderr输出,会立即输出,在它上面Hello的前面输出。
make stdouterr
cc stdouterr.c -o stdouterr
./stdouterr
Can't open it!
Can't open it!
Can't open it!
./stdouterr > tmp.txt
Can't open it!
这3句效果不是一样啊,有什么区别吗?
有区别。
stdout -- 标准输出设备 (printf("..")) 同 stdout。
stderr -- 标准错误输出设备
两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
cat tmp.txt
Can't open it!
Can't open it!
实践来自:https://blog.csdn.net/qingzhuyuxian/article/details/80391143
解答:这段代码的输出是什么呢?你可以快速的将代码敲入你电脑上(当然,拷贝更快),然后发现输出是
World!Hello
果然:
./stdouterr
World!Hello
这是为什么呢?在默认情况下,stdout是行缓冲的,他的输出会放在一个buffer里面,只有到换行的时候,才会输出到屏幕。而stderr是无缓冲的,会直接输出,举例来说就是printf(stdout, "xxxx") 和 printf(stdout, "xxxx\n"),前者会憋住,直到遇到新行才会一起输出。而printf(stderr, "xxxxx"),不管有么有\n,都输出。
stdout憋住,证明换行才会输出:
#cat stdouterr.c
#./stdouterr
Hello Hello #stdout换行输出
World! Hello #World!是stderr输出,会立即输出,在它上面Hello的前面输出。
make stdouterr
cc stdouterr.c -o stdouterr
./stdouterr
Can't open it!
Can't open it!
Can't open it!
./stdouterr > tmp.txt
Can't open it!
这3句效果不是一样啊,有什么区别吗?
有区别。
stdout -- 标准输出设备 (printf("..")) 同 stdout。
stderr -- 标准错误输出设备
两者默认向屏幕输出。
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。
cat tmp.txt
Can't open it!
Can't open it!
实践来自:https://blog.csdn.net/qingzhuyuxian/article/details/80391143
cannot get uid of 'rpc': Success
Unix/LinuxC技术 jackxiang 2019-6-12 23:25
systemctl status rpcbind -l
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit) since Wed 2019-06-12 22:54:51 CST; 27min ago
Process: 7679 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
Main PID: 7680 (code=exited, status=1/FAILURE)
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Starting RPC bind service...
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Started RPC bind service.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 rpcbind[7680]: cannot get uid of 'rpc': Success
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: rpcbind.service: main process exited, code=exited, status=1/FAILURE
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Unit rpcbind.service entered failed state.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: rpcbind.service failed.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: start request repeated too quickly for rpcbind.service
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Failed to start RPC bind service.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: rpcbind.service failed.
先删除rpcbind
rpm –e –nodeps rpcbind
再重新安装一次
yum install rpcbind
http://www.it610.com/article/4385613.htm
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit) since Wed 2019-06-12 22:54:51 CST; 27min ago
Process: 7679 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
Main PID: 7680 (code=exited, status=1/FAILURE)
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Starting RPC bind service...
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Started RPC bind service.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 rpcbind[7680]: cannot get uid of 'rpc': Success
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: rpcbind.service: main process exited, code=exited, status=1/FAILURE
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Unit rpcbind.service entered failed state.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: rpcbind.service failed.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: start request repeated too quickly for rpcbind.service
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: Failed to start RPC bind service.
Jun 12 22:54:51 mother_virtualbox_bj_sjs_10_10_0_108 systemd[1]: rpcbind.service failed.
先删除rpcbind
rpm –e –nodeps rpcbind
再重新安装一次
yum install rpcbind
http://www.it610.com/article/4385613.htm
[实践OK]Linux 下修改用户的UID和所在组的GID,重命名用户名称。
Unix/LinuxC技术 jackxiang 2019-6-6 15:30
Linux 下修改用户的UID和所在组的GID实践如下:
useradd jackX -u 798
usermod -u 863 jackX
groupmod -g 863 www
修改UID
Usage:
usermod -u NEW-UID username
1
Examples:
## original UID is 1007
root@pts/0 $ id newjames
uid=1007(newjames) gid=1008(james) 组=1008(james)
## change 1007 to 2007
root@pts/0 $ usermod -u 2007 newjames
## modified to 2007
root@pts/0 $ id newjames
uid=2007(newjames) gid=1008(james) 组=1008(james)
修改GID/group-name
Usage:
groupmod -g NEW-GID groupname
1
Examples:
## james to newjames, but james's group is still 'james'
root@pts/0 $ groupmod -g 2007 newjames
groupmod:“newjames”组不存在
root@pts/0 $ id newjames
uid=2007(newjames) gid=1008(james) 组=1008(james)
root@pts/0 $ groupmod -g 2007 james
修改群组名称:
## try to rename group
root@pts/0 $ groupmod --help
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
root@pts/0 $ groupmod -n newjamesgroup james
## find that group was renamed
root@pts/0 $ id newjames
uid=2007(newjames) gid=1008(newjamesgroup) 组=1008(newjamesgroup)
## try to change GID
root@pts/0 $ groupmod -g 2007 james
root@pts/0 $ id newjames
uid=2007(newjames) gid= 2007(newjamesgroup) 组= 2007(newjamesgroup)
修改用户名称
Usage:
usermod -l login-name old-name
1
修改用户的名称 old-name 改成 login-name,别的都没有改变。其实我们也应该考虑是否把用户的HOME目录也改成新的用户。
另外这里有个问题需要注意
如果出现如下报错
root@pts/0 $ usermod -l newjames james
usermod: user James is currently used by process 12345
1
2
说明有用james用户运行的程序,需要把相关的程序停掉之后再执行上面的命令
Examples:
## add user 'james' for test
root@pts/0 $ useradd james
## check original id
root@pts/0 $ id james
uid=1007(james) gid=1008(james) 组=1008(james)
## check HOME directory
root@pts/0 $ ls -ld /home/james/
drwx------ 2 james james 4096 12月 23 11:46 /home/james/
## try to change or rename and verify
root@pts/0 $ usermod -l newjames james
root@pts/0 $ id james
id: james: no such user
root@pts/0 $ id newjames
uid=1007(newjames) gid=1008(james) 组=1008(james)
## check HOME folder
root@pts/0 $ ls -ld /home/james/
drwx------ 2 newjames james 4096 12月 23 11:46 /home/james/
root@pts/0 $ ls -ld /home/newjames
ls: 无法访问/home/newjames: 没有那个文件或目录
Dev-web-solr [~] 2016-12-23 11:47:22
从上面可以看出,变化只仅仅是username,UID/GUID/HOME目录都没有改变
---------------------
原文:https://blog.csdn.net/eagle5063/article/details/53842528
useradd jackX -u 798
usermod -u 863 jackX
groupmod -g 863 www
修改UID
Usage:
usermod -u NEW-UID username
1
Examples:
## original UID is 1007
root@pts/0 $ id newjames
uid=1007(newjames) gid=1008(james) 组=1008(james)
## change 1007 to 2007
root@pts/0 $ usermod -u 2007 newjames
## modified to 2007
root@pts/0 $ id newjames
uid=2007(newjames) gid=1008(james) 组=1008(james)
修改GID/group-name
Usage:
groupmod -g NEW-GID groupname
1
Examples:
## james to newjames, but james's group is still 'james'
root@pts/0 $ groupmod -g 2007 newjames
groupmod:“newjames”组不存在
root@pts/0 $ id newjames
uid=2007(newjames) gid=1008(james) 组=1008(james)
root@pts/0 $ groupmod -g 2007 james
修改群组名称:
## try to rename group
root@pts/0 $ groupmod --help
用法:groupmod [选项] 组
选项:
-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录
root@pts/0 $ groupmod -n newjamesgroup james
## find that group was renamed
root@pts/0 $ id newjames
uid=2007(newjames) gid=1008(newjamesgroup) 组=1008(newjamesgroup)
## try to change GID
root@pts/0 $ groupmod -g 2007 james
root@pts/0 $ id newjames
uid=2007(newjames) gid= 2007(newjamesgroup) 组= 2007(newjamesgroup)
修改用户名称
Usage:
usermod -l login-name old-name
1
修改用户的名称 old-name 改成 login-name,别的都没有改变。其实我们也应该考虑是否把用户的HOME目录也改成新的用户。
另外这里有个问题需要注意
如果出现如下报错
root@pts/0 $ usermod -l newjames james
usermod: user James is currently used by process 12345
1
2
说明有用james用户运行的程序,需要把相关的程序停掉之后再执行上面的命令
Examples:
## add user 'james' for test
root@pts/0 $ useradd james
## check original id
root@pts/0 $ id james
uid=1007(james) gid=1008(james) 组=1008(james)
## check HOME directory
root@pts/0 $ ls -ld /home/james/
drwx------ 2 james james 4096 12月 23 11:46 /home/james/
## try to change or rename and verify
root@pts/0 $ usermod -l newjames james
root@pts/0 $ id james
id: james: no such user
root@pts/0 $ id newjames
uid=1007(newjames) gid=1008(james) 组=1008(james)
## check HOME folder
root@pts/0 $ ls -ld /home/james/
drwx------ 2 newjames james 4096 12月 23 11:46 /home/james/
root@pts/0 $ ls -ld /home/newjames
ls: 无法访问/home/newjames: 没有那个文件或目录
Dev-web-solr [~] 2016-12-23 11:47:22
从上面可以看出,变化只仅仅是username,UID/GUID/HOME目录都没有改变
---------------------
原文:https://blog.csdn.net/eagle5063/article/details/53842528
使用注册表
当然,大家也可以更改注册表配置来实现 Windows 10 自动登录,步骤如下:
1 在运行中执行 regedit 打开注册表
2 浏览到如下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
3 在右侧窗口中找到名为 AutoAdminLogon 的字符串值,并将其设置为 1
AutoAdminLogon
4 在右侧窗口中找到名为 DefaultUserName 的字符串值,在里面填入要自动登录的默认账户
DefaultUserName
5 在右侧窗口中找到名为 DefaultPassword 的字符串值(如果没有就新建一个),将其值设置为所选账号的默认密码。
DefaultPassword
注册表更改完成后,下次重启 Windows 10 就会无需密码自动登录了。以上两种方式我都测试过,可以正常使用。相对来说比较推荐大家使用第一种方式,配置起来比较简单。
来自:https://www.sysgeek.cn/auto-login-windows-10/
当然,大家也可以更改注册表配置来实现 Windows 10 自动登录,步骤如下:
1 在运行中执行 regedit 打开注册表
2 浏览到如下路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
3 在右侧窗口中找到名为 AutoAdminLogon 的字符串值,并将其设置为 1
AutoAdminLogon
4 在右侧窗口中找到名为 DefaultUserName 的字符串值,在里面填入要自动登录的默认账户
DefaultUserName
5 在右侧窗口中找到名为 DefaultPassword 的字符串值(如果没有就新建一个),将其值设置为所选账号的默认密码。
DefaultPassword
注册表更改完成后,下次重启 Windows 10 就会无需密码自动登录了。以上两种方式我都测试过,可以正常使用。相对来说比较推荐大家使用第一种方式,配置起来比较简单。
来自:https://www.sysgeek.cn/auto-login-windows-10/
[实践OK]vim diff寄存器使用 Vim 寄存器实现vimdiff多个文件的粘贴,防止dd命令后影响粘贴的内容为删除行的内容的方法。
Unix/LinuxC技术 jackxiang 2019-5-27 14:57
把光标停留在第一行上,按下yy命令,将第一行复制,然后再移到第二行,按下dd命令,删除第二行。此时如果我们想要粘贴第一行的内容的话,直接按p是不行的,因为此时的p将引用无名寄存器中的内容,而它的内容已经被第二行的内容给覆盖了,所以此时就轮到复制专用寄存器大显身手了,此时如果按下这个命令:
"0p <===它是0,不是O,是数字0,别搞错了!!
这时,将会粘贴复制专用寄存器中的内容。
============ChatGPT说===============================================
在 Vim 中,理解寄存器的工作原理对于有效地操作文本非常重要。你提到的步骤是正确的,但可能有一些细节需要注意,尤其是在不同系统(如 macOS)上可能存在的细微差异。下面是详细解释和操作步骤:
### 理解 Vim 寄存器
1. **无名寄存器 (`""`)**:默认的寄存器,用于存储最后一次删除或复制的内容。
2. **复制寄存器 (`"0`)**:用于存储最近一次用 `y` 或 `yy` 命令复制的内容。
3. **删除寄存器 (`"1`, `"2`, 等)**:用于存储最近的删除操作内容。
### 操作步骤
#### 1. 复制第一行
将光标移动到第一行,按 `yy` 命令,将第一行复制到寄存器 `0` 和无名寄存器 `""`。
```vim
yy
```
#### 2. 删除第二行
将光标移动到第二行,按 `dd` 命令,删除第二行,并将其内容存储到无名寄存器 `""` 和删除寄存器 `1`。
```vim
dd
```
#### 3. 粘贴第一行的内容
现在,如果你直接按 `p`,将会粘贴无名寄存器 `""` 中的内容,也就是刚刚删除的第二行的内容。要粘贴之前复制的第一行的内容,你需要引用复制寄存器 `0`。
```vim
"0p
```
### 完整步骤示例
1. **移动到第一行并复制:**
```vim
gg (移动到第一行)
yy (复制第一行)
```
2. **移动到第二行并删除:**
```vim
j (移动到第二行)
dd (删除第二行)
```
3. **粘贴第一行的内容:**
```vim
"0p (粘贴复制寄存器中的内容)
```
### 解释
- `gg`:移动到文件的第一行。
- `yy`:复制当前行。
- `j`:移动光标到下一行。
- `dd`:删除当前行。
- `"0p`:使用寄存器 `0` 粘贴内容。
### 常见问题
1. **命令未生效**:确保在正常模式下执行这些命令。按 `Esc` 确保你在正常模式下。
2. **寄存器内容被覆盖**:确认每个步骤都按正确的顺序执行,且没有意外的命令干扰寄存器的内容。
通过正确理解和使用寄存器,你可以更高效地进行文本操作。如果还有问题,尝试通过 `:registers` 命令查看当前寄存器的内容,以确保你理解每个寄存器中的数据。
================遇到的问题=======================
我先把光标停留在第一行上,按下yy命令,将第一行复制,然后再移到第二行,按下dd命令,删除第二行。此时如果我们想要粘贴第一行的内容的话,直接按p是不行的,因为此时的p将引用无名寄存器中的内容,而它的内容已经被第二行的内容给覆盖了,所以此时就轮到复制专用寄存器大显身手了,此时如果按下这个命令:
"0p
这时,将会粘贴复制专用寄存器中的内容。这里直接贴结果图可能看不出什么效果,那我就贴一下用dd删除了第二行后所有寄存器的内容给大家看看吧:
l "" ddline^J 当前寄存器是",里存的是删除的内容。
l "0 yyline^J 0 是复制专用寄存器
从这里可以看出,无名寄存器保存的是dd命令删除的内容,而复制专用寄存器(0)保存的是y命令复制的内容。
"0p 就能打印出yyline,而直接p就会打印删的内容ddline。
阅读全文
"0p <===它是0,不是O,是数字0,别搞错了!!
这时,将会粘贴复制专用寄存器中的内容。
============ChatGPT说===============================================
在 Vim 中,理解寄存器的工作原理对于有效地操作文本非常重要。你提到的步骤是正确的,但可能有一些细节需要注意,尤其是在不同系统(如 macOS)上可能存在的细微差异。下面是详细解释和操作步骤:
### 理解 Vim 寄存器
1. **无名寄存器 (`""`)**:默认的寄存器,用于存储最后一次删除或复制的内容。
2. **复制寄存器 (`"0`)**:用于存储最近一次用 `y` 或 `yy` 命令复制的内容。
3. **删除寄存器 (`"1`, `"2`, 等)**:用于存储最近的删除操作内容。
### 操作步骤
#### 1. 复制第一行
将光标移动到第一行,按 `yy` 命令,将第一行复制到寄存器 `0` 和无名寄存器 `""`。
```vim
yy
```
#### 2. 删除第二行
将光标移动到第二行,按 `dd` 命令,删除第二行,并将其内容存储到无名寄存器 `""` 和删除寄存器 `1`。
```vim
dd
```
#### 3. 粘贴第一行的内容
现在,如果你直接按 `p`,将会粘贴无名寄存器 `""` 中的内容,也就是刚刚删除的第二行的内容。要粘贴之前复制的第一行的内容,你需要引用复制寄存器 `0`。
```vim
"0p
```
### 完整步骤示例
1. **移动到第一行并复制:**
```vim
gg (移动到第一行)
yy (复制第一行)
```
2. **移动到第二行并删除:**
```vim
j (移动到第二行)
dd (删除第二行)
```
3. **粘贴第一行的内容:**
```vim
"0p (粘贴复制寄存器中的内容)
```
### 解释
- `gg`:移动到文件的第一行。
- `yy`:复制当前行。
- `j`:移动光标到下一行。
- `dd`:删除当前行。
- `"0p`:使用寄存器 `0` 粘贴内容。
### 常见问题
1. **命令未生效**:确保在正常模式下执行这些命令。按 `Esc` 确保你在正常模式下。
2. **寄存器内容被覆盖**:确认每个步骤都按正确的顺序执行,且没有意外的命令干扰寄存器的内容。
通过正确理解和使用寄存器,你可以更高效地进行文本操作。如果还有问题,尝试通过 `:registers` 命令查看当前寄存器的内容,以确保你理解每个寄存器中的数据。
================遇到的问题=======================
我先把光标停留在第一行上,按下yy命令,将第一行复制,然后再移到第二行,按下dd命令,删除第二行。此时如果我们想要粘贴第一行的内容的话,直接按p是不行的,因为此时的p将引用无名寄存器中的内容,而它的内容已经被第二行的内容给覆盖了,所以此时就轮到复制专用寄存器大显身手了,此时如果按下这个命令:
"0p
这时,将会粘贴复制专用寄存器中的内容。这里直接贴结果图可能看不出什么效果,那我就贴一下用dd删除了第二行后所有寄存器的内容给大家看看吧:
l "" ddline^J 当前寄存器是",里存的是删除的内容。
l "0 yyline^J 0 是复制专用寄存器
从这里可以看出,无名寄存器保存的是dd命令删除的内容,而复制专用寄存器(0)保存的是y命令复制的内容。
"0p 就能打印出yyline,而直接p就会打印删的内容ddline。
阅读全文
find的文件通过管道给vim编辑
Php/Js/Shell/Go jackxiang 2019-5-27 14:30
find . -name "jack.txt" -exec vim {} \; # 这个没有问题
s |xargs vim
Vim: Warning: Input is not from a terminal #终端卡了,应该是标准输入被截断了。
3 files to edit
失败:
find . -name "jackxiang.txt" |vim - #里面是文件名,不是读取文件。
=======================================
vim 本身没有直接从 stdin 读入信息。而 - 参数相当于一个开关,表示从标准输入读入信息。而管道的功能就是把前一个程序的 stdout 作为下一个程序的 stdin
Many commands use a hyphen (-) in place of a filename as an argument to indicate when the input should come from stdin rather than a file.
man vim
- The file to edit is read from stdin. Commands are read from stderr, which should be a tty.
Cmd | vim -
参考 VIM USER MANUAL 26.4 Using Vim from a shell script
cmd | vim -
- 表示vim开启从stdin读数据 #我想作为文件名传入呢???
====================================================================================
ls | xargs vim # 同时打开多个文件
:n [file_name] #切换文件
From:https://www.v2ex.com/t/61163
s |xargs vim
Vim: Warning: Input is not from a terminal #终端卡了,应该是标准输入被截断了。
3 files to edit
失败:
find . -name "jackxiang.txt" |vim - #里面是文件名,不是读取文件。
=======================================
vim 本身没有直接从 stdin 读入信息。而 - 参数相当于一个开关,表示从标准输入读入信息。而管道的功能就是把前一个程序的 stdout 作为下一个程序的 stdin
Many commands use a hyphen (-) in place of a filename as an argument to indicate when the input should come from stdin rather than a file.
man vim
- The file to edit is read from stdin. Commands are read from stderr, which should be a tty.
Cmd | vim -
参考 VIM USER MANUAL 26.4 Using Vim from a shell script
cmd | vim -
- 表示vim开启从stdin读数据 #我想作为文件名传入呢???
====================================================================================
ls | xargs vim # 同时打开多个文件
:n [file_name] #切换文件
From:https://www.v2ex.com/t/61163
Mac 10.12安装7zip/rar解压/压缩工具7zip-Keka
Unix/LinuxC技术 jackxiang 2019-5-27 14:05
说明:Keka支持解压和压缩,基本这个软件全部格式都搞定。
下载:
(链接: https://pan.baidu.com/s/1kVmsj8z 密码: pydh)
官方网站:https://www.keka.io/en/
https://www.keka.io/en/
Keka,使用 p7zip(7-zip 在类 UNIX 系统上的移植版本)压缩内核。经年累月,在美丽优雅的 Mac 平台上,你一如既往,霸道地,丑!Keka 不光丑,压缩要用手,文件拖图标,很难不粗口。
语言已经不能表达我对这款软件的畏惧(珍爱视力,拒绝 Keka 的软件截图)。基本上,它只有三项优势,就是免费,免费和免费。支持压缩:7z, Zip, Tar, Gzip, Bzip2。支持解压:RAR, 7z, Lzma, Zip, Tar, Gzip, Bzip2, ISO, EXE, CAB, PAX, ACE (PPC)。雪豹系统可以加入右键菜单。
下载:
(链接: https://pan.baidu.com/s/1kVmsj8z 密码: pydh)
官方网站:https://www.keka.io/en/
https://www.keka.io/en/
Keka,使用 p7zip(7-zip 在类 UNIX 系统上的移植版本)压缩内核。经年累月,在美丽优雅的 Mac 平台上,你一如既往,霸道地,丑!Keka 不光丑,压缩要用手,文件拖图标,很难不粗口。
语言已经不能表达我对这款软件的畏惧(珍爱视力,拒绝 Keka 的软件截图)。基本上,它只有三项优势,就是免费,免费和免费。支持压缩:7z, Zip, Tar, Gzip, Bzip2。支持解压:RAR, 7z, Lzma, Zip, Tar, Gzip, Bzip2, ISO, EXE, CAB, PAX, ACE (PPC)。雪豹系统可以加入右键菜单。
俗话说:欲成大事,先了心病。《道德经》就是一本根治心病的奇书,自古治愈无数能人,其中就包括曾国藩。曾国藩大悟老子《道德经》,改变了他为人处世的态度、脾性,助他走上了人生的巅峰。
阅读全文
阅读全文
[实践OK]Docker里的php-fpm 错误日志级别由notice修改为warning
虚拟云与Docker jackxiang 2019-5-24 16:05
Docker里的php-fpm 错误日志级别由notice修改为warning 不指定,原因是默认的notice日志太多关于PHP-FPM接受设置的请求数后通出的notice:
[24-May-2019 16:22:58] NOTICE: [pool www] child 281 exited with code 0 after 5.861800 seconds from start
[24-May-2019 16:22:58] NOTICE: [pool www] child 282 started
[24-May-2019 16:23:01] NOTICE: [pool www] child 282 exited with code 0 after 2.919651 seconds from start
[24-May-2019 16:23:01] NOTICE: [pool www] child 283 started
1、php-fpm 错误日志
#默认位置 安装目录下的 log/php-fpm.log
error_log = log/php-fpm.log
#错误级别 alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
log_level = notice
来自:https://www.cnblogs.com/siqi/p/3656823.html
[24-May-2019 16:22:58] NOTICE: [pool www] child 281 exited with code 0 after 5.861800 seconds from start
[24-May-2019 16:22:58] NOTICE: [pool www] child 282 started
[24-May-2019 16:23:01] NOTICE: [pool www] child 282 exited with code 0 after 2.919651 seconds from start
[24-May-2019 16:23:01] NOTICE: [pool www] child 283 started
1、php-fpm 错误日志
#默认位置 安装目录下的 log/php-fpm.log
error_log = log/php-fpm.log
#错误级别 alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
log_level = notice
来自:https://www.cnblogs.com/siqi/p/3656823.html
lshw 可以从各个 /proc 文件中提取出硬件信息,比如:CPU、内存、usb 控制器、硬盘,lspci 列出所有 PCI 总线lsusb 列出与本机相连的所有 USB 设备的信息。
Unix/LinuxC技术 jackxiang 2019-5-22 14:56
yum install lshw
lshw 这个命令是一个比较通用的工具,它可以详细的列出本机的硬件信息。但这个命令并非所有的发行版都有,比如 Fedora 就默认没有,需要自己安装。
lshw 可以从各个 /proc 文件中提取出硬件信息,比如:CPU、内存、usb 控制器、硬盘等。如果不带选项的话,列出的信息将很长,加上 -short 选项时,将只列出概要信息。
lshw -short
H/W path Device Class Description
======================================================
system NF5280M2 (To Be Filled By O.E.M.)
/0 bus 2U
/0/0 memory 64KiB BIOS
/0/4 processor Xeon (To Be Filled By O.E.M.)
/0/4/5 memory 256KiB L1 cache
/0/4/6 memory 1MiB L2 cache
/0/4/7 memory 12MiB L3 cache
/0/8 processor Xeon (To Be Filled By O.E.M.)
/0/8/9 memory 256KiB L1 cache
/0/8/a memory 1MiB L2 cache
lspci 列出所有 PCI 总线,以及与 PCI 总线相连的所有设备的详细信息,比如 VGA 适配器、显卡、网络适配器、usb 端口、SATA 控制器等。
lspci
00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 22)
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 22)
00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 22)
00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 22)
00:09.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 (rev 22)
00:13.0 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller (rev 22)
00:14.0 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub System Management Registers (rev 22)
lsusb 列出与本机相连的所有 USB 设备的信息。默认情况下,只列出概要信息,使用 -v 选项可以列出每一个 USB 口的详细信息。
lspci
00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 22)
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 22)
00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 22)
00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 22)
lshw 这个命令是一个比较通用的工具,它可以详细的列出本机的硬件信息。但这个命令并非所有的发行版都有,比如 Fedora 就默认没有,需要自己安装。
lshw 可以从各个 /proc 文件中提取出硬件信息,比如:CPU、内存、usb 控制器、硬盘等。如果不带选项的话,列出的信息将很长,加上 -short 选项时,将只列出概要信息。
lshw -short
H/W path Device Class Description
======================================================
system NF5280M2 (To Be Filled By O.E.M.)
/0 bus 2U
/0/0 memory 64KiB BIOS
/0/4 processor Xeon (To Be Filled By O.E.M.)
/0/4/5 memory 256KiB L1 cache
/0/4/6 memory 1MiB L2 cache
/0/4/7 memory 12MiB L3 cache
/0/8 processor Xeon (To Be Filled By O.E.M.)
/0/8/9 memory 256KiB L1 cache
/0/8/a memory 1MiB L2 cache
lspci 列出所有 PCI 总线,以及与 PCI 总线相连的所有设备的详细信息,比如 VGA 适配器、显卡、网络适配器、usb 端口、SATA 控制器等。
lspci
00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 22)
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 22)
00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 22)
00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 22)
00:09.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 (rev 22)
00:13.0 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller (rev 22)
00:14.0 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub System Management Registers (rev 22)
lsusb 列出与本机相连的所有 USB 设备的信息。默认情况下,只列出概要信息,使用 -v 选项可以列出每一个 USB 口的详细信息。
lspci
00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 22)
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 22)
00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 22)
00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 22)
[实践OK]ls只显示文件名之man ls 之后 你 /-1 搜索 ls -1,将目录里的文件按文件名内容进行显示。
Php/Js/Shell/Go jackxiang 2019-5-21 19:09
用ls直接显示文件名称和grep -rl .一样,
man ls 之后 你 /-1 搜索 , -1 list one file per line :
ls -1
/tmp/yaml
$ls -1
jack.txt
jackxiang.txt
xiang.txt
/tmp/yaml
$for i in $(ls -1); do echo $i;cat $i;done
jack.txt
jack
jackxiang.txt
jackxiang
xiang.txt
xiang
加一个换行:
for i in `ls -1`;do echo $i;cat $i;echo;done
查找所有:touch "PROCESSED.txt"的文件,再列出文件名后读取:
man ls 之后 你 /-1 搜索 , -1 list one file per line :
ls -1
/tmp/yaml
$ls -1
jack.txt
jackxiang.txt
xiang.txt
/tmp/yaml
$for i in $(ls -1); do echo $i;cat $i;done
jack.txt
jack
jackxiang.txt
jackxiang
xiang.txt
xiang
加一个换行:
for i in `ls -1`;do echo $i;cat $i;echo;done
查找所有:touch "PROCESSED.txt"的文件,再列出文件名后读取:
[转]Linux tmp目录自动清理总结
Unix/LinuxC技术 jackxiang 2019-5-15 15:17
在Linux系统中/tmp文件夹下的文件是会被清理、删除的,文件清理的规则是如何设定的呢? 以Redhat为例,这个主要是因为作业里面会调用tmpwatch命令删除那些一段时间没有访问的文件。
那么什么是tmpwatch呢?其实tmpwatch是一个命令或者说是一个包。如下所示
tmpwatch - removes files which haven’t been accessed for a period of time
[root@DB-Server ~]# rpm -qa | grep tmpwatch
tmpwatch-2.9.7-1.1.el5.5
[root@DB-Server ~]# whereis tmpwatch
tmpwatch: /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz
[root@DB-Server ~]# file /usr/sbin/tmpwatch
/usr/sbin/tmpwatch: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@DB-Server ~]#
关于tmpwatch命令的参数,不同版本可能有所不同,下面以Red Hat Enterprise Linux Server release 5.7下TMPWATCH(8)为列
作用:
删除一段时间没有被访问的文件。
参数:
-u 按照文件的最后access时间,即最后访问时间为参考。默认选项。可通过ls -lu查看。
-m 按照文件的最后modified时间,即最后修改时间为参考。可通过ls -l查看。
-c 按照文件的-ctime时间做参考,ctime更新的条件为写入、更改属主、权限。可通过ls -lc查看。
-M 按照目录的修改时间来删除目录而不是访问时间。
-a 删除所有类型文件。包括目录和symbolic links
-d --nodirs 排除目录文件,即使是空目录。
-d --nosysmlinks 排除symbolic links类型文件。
-f 强制删除那些root没有写权限的文件。比如root的readonly文件
-q 只报告错误信息。
-x /PATH 排除特定目录,即不删除该子目录里的文件。
-U user_name 排除属于特定用户的文件,即不删除该用户的文件。
-v 显示删除过程。默认是不显示删除了什么文件,直接删除的。
-t 用于测试,并不真正删除文件,能显示出要删除文件的过程。
-d 不删除文件里的子目录,但是子目录里面的文件还是会被删除。
参数后加时间,默认是hours。也可以使用30d表示30天,但是有些版本只支持hours。 时间后是要检查的目录。可以多个目录用空格分开。如下所示表示720小小时~=30天。
[root@DB-Server ~]# more /etc/cron.daily/tmpwatch
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 240 /tmp
/usr/sbin/tmpwatch "$flags" 720 /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 720 "$d"
fi
done
[root@DB-Server ~]#
如果你想将强制删除30天没有访问的文件改为7天,只需"/usr/sbin/tmpwatch "$flags" 720 /var/tmp"和"/usr/sbin/tmpwatch "$flags" -f 720 "$d" 里面的720改为189即可。
来自:http://www.cnblogs.com/kerrycode/p/5759941.html
==========================实践================================
rpm -qa | grep tmpwatch
tmpwatch-2.9.16-6.el6.x86_64
whereis tmpwatch
tmpwatch: /usr/bin/tmpwatch /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz
cat /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \
-X '/tmp/pymp-*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
那么什么是tmpwatch呢?其实tmpwatch是一个命令或者说是一个包。如下所示
tmpwatch - removes files which haven’t been accessed for a period of time
[root@DB-Server ~]# rpm -qa | grep tmpwatch
tmpwatch-2.9.7-1.1.el5.5
[root@DB-Server ~]# whereis tmpwatch
tmpwatch: /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz
[root@DB-Server ~]# file /usr/sbin/tmpwatch
/usr/sbin/tmpwatch: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@DB-Server ~]#
关于tmpwatch命令的参数,不同版本可能有所不同,下面以Red Hat Enterprise Linux Server release 5.7下TMPWATCH(8)为列
作用:
删除一段时间没有被访问的文件。
参数:
-u 按照文件的最后access时间,即最后访问时间为参考。默认选项。可通过ls -lu查看。
-m 按照文件的最后modified时间,即最后修改时间为参考。可通过ls -l查看。
-c 按照文件的-ctime时间做参考,ctime更新的条件为写入、更改属主、权限。可通过ls -lc查看。
-M 按照目录的修改时间来删除目录而不是访问时间。
-a 删除所有类型文件。包括目录和symbolic links
-d --nodirs 排除目录文件,即使是空目录。
-d --nosysmlinks 排除symbolic links类型文件。
-f 强制删除那些root没有写权限的文件。比如root的readonly文件
-q 只报告错误信息。
-x /PATH 排除特定目录,即不删除该子目录里的文件。
-U user_name 排除属于特定用户的文件,即不删除该用户的文件。
-v 显示删除过程。默认是不显示删除了什么文件,直接删除的。
-t 用于测试,并不真正删除文件,能显示出要删除文件的过程。
-d 不删除文件里的子目录,但是子目录里面的文件还是会被删除。
参数后加时间,默认是hours。也可以使用30d表示30天,但是有些版本只支持hours。 时间后是要检查的目录。可以多个目录用空格分开。如下所示表示720小小时~=30天。
[root@DB-Server ~]# more /etc/cron.daily/tmpwatch
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' 240 /tmp
/usr/sbin/tmpwatch "$flags" 720 /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 720 "$d"
fi
done
[root@DB-Server ~]#
如果你想将强制删除30天没有访问的文件改为7天,只需"/usr/sbin/tmpwatch "$flags" 720 /var/tmp"和"/usr/sbin/tmpwatch "$flags" -f 720 "$d" 里面的720改为189即可。
来自:http://www.cnblogs.com/kerrycode/p/5759941.html
==========================实践================================
rpm -qa | grep tmpwatch
tmpwatch-2.9.16-6.el6.x86_64
whereis tmpwatch
tmpwatch: /usr/bin/tmpwatch /usr/sbin/tmpwatch /usr/share/man/man8/tmpwatch.8.gz
cat /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \
-X '/tmp/pymp-*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
php函数名后带个 ?string是什么用法啊?
Php/Js/Shell/Go jackxiang 2019-5-5 15:38
Q:public function getLabel(): ?string;
弱弱的问一下,php函数名后带个 ?string是什么用法啊?
A:这个是7.1 加入的类型声明,指示返回类型是string,问号表示可null。
https://www.php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration
弱弱的问一下,php函数名后带个 ?string是什么用法啊?
A:这个是7.1 加入的类型声明,指示返回类型是string,问号表示可null。
https://www.php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration
[实践OK]resolv.conf:search、domain、nameserver解释 发表评论 A+ 所属分类:Linux
Unix/LinuxC技术 jackxiang 2019-4-26 14:40
resolv.conf是resolver类库使用的配置文件,每当一个程序需要通过域名来访问internet上面的其它主机时,需要利用该类库将域名转换成对应的IP,然后才可进行访问.
resolv.conf文件的配置选项不多,从man文档中看了半天,不理解domain和search使用来干嘛的。这里做个解释,防止以后忘了(环境:ubuntu12.04):
nameserver x.x.x.x该选项用来制定DNS服务器的,可以配置多个nameserver指定多个DNS。
domain mydomain.com这个用来指定本地的域名,在没有设置search的情况下,search默认为domain的值。这个值可以随便配,目前在我看来,domain除了当search的默认值外,没有其它用途。也就说一旦配置search,那domain就没用了。
search google.com baidu.com该选项可以用来指定多个域名,中间用空格或tab键隔开。它是干嘛的呢?
如:在没有配置该选项时,执行
#ping new
sping: unknown host news
配置search google.com baidu.com后,再执行
#ping news
PING news.google.com (74.125.128.101) 56(84) bytes of data.
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=1 ttl=47 time=78.9 ms
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=2 ttl=47 time=63.6 ms
它就去ping news.google.com了。原来当访问的域名不能被DNS解析时,resolver会将该域名加上search指定的参数,重新请求DNS,直到被正确解析或试完search指定的列表为止。
由于news不能被DNS解析,所以去尝试news.google.com,被正常解析。如果没有被解析还会去尝试news.baidu.com。
来自:http://www.ttlsa.com/linux/resolv-conf-desc/
实践如下:
google 在前:
#ping news
PING news.google.com (172.217.24.14) 56(84) bytes of data.
baidu在前:
ping news
PING news.n.shifen.com (202.108.23.82) 56(84) bytes of data.
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=1 ttl=55 time=1.97 ms
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=2 ttl=55 time=2.01 ms
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=3 ttl=55 time=1.99 ms
resolv.conf文件的配置选项不多,从man文档中看了半天,不理解domain和search使用来干嘛的。这里做个解释,防止以后忘了(环境:ubuntu12.04):
nameserver x.x.x.x该选项用来制定DNS服务器的,可以配置多个nameserver指定多个DNS。
domain mydomain.com这个用来指定本地的域名,在没有设置search的情况下,search默认为domain的值。这个值可以随便配,目前在我看来,domain除了当search的默认值外,没有其它用途。也就说一旦配置search,那domain就没用了。
search google.com baidu.com该选项可以用来指定多个域名,中间用空格或tab键隔开。它是干嘛的呢?
如:在没有配置该选项时,执行
#ping new
sping: unknown host news
配置search google.com baidu.com后,再执行
#ping news
PING news.google.com (74.125.128.101) 56(84) bytes of data.
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=1 ttl=47 time=78.9 ms
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=2 ttl=47 time=63.6 ms
它就去ping news.google.com了。原来当访问的域名不能被DNS解析时,resolver会将该域名加上search指定的参数,重新请求DNS,直到被正确解析或试完search指定的列表为止。
由于news不能被DNS解析,所以去尝试news.google.com,被正常解析。如果没有被解析还会去尝试news.baidu.com。
来自:http://www.ttlsa.com/linux/resolv-conf-desc/
实践如下:
google 在前:
#ping news
PING news.google.com (172.217.24.14) 56(84) bytes of data.
baidu在前:
ping news
PING news.n.shifen.com (202.108.23.82) 56(84) bytes of data.
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=1 ttl=55 time=1.97 ms
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=2 ttl=55 time=2.01 ms
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=3 ttl=55 time=1.99 ms
Mac上挂载U盘或移动硬盘出现"Read-only file system"问题,Mac不能复制拷贝写入文件到移动硬盘。EXFat格式。
参考:[url=https://jingyan.baidu.com/article/a3aad71aa1dde7b1fb0096ab.html]https://jingyan.baidu.com/article/a3aad71aa1dde7b1fb0096ab.html[/url]
前置:任何一块新的盘,一定要用fdisk -l 后,再用lsblk -f 查看其磁盘格式和sdb1,sdb2这样的,它可能不止是一个整个盘,所以挂载的时候得mount -t exfat /dev/sdb2 /mnt/。
下载 两个包:
rpm -ihv http://li.nux.ro/download/nux/dextop/el7/x86_64/exfat-ut
ils-1.2.7-1.el7.nux.x86_64.rpm
Retrieving http://li.nux.ro/download/nux/dextop/el7/x86_64/exfat-utils-1.2.7-1.el7.nux.x86_64.rpm
warning: /root/rpmbuild/tmp/rpm-tmp.oiRNim: Header V4 RSA/SHA1 Signature, key ID 85c6cd8a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:exfat-utils-1.2.7-1.el7.nux ################################# [100%]
You have new mail in /var/spool/mail/root
rpm -ihv http://li.nux.ro/download/nux/dextop/el7/x86_64/fuse-exfa
t-1.2.7-1.el7.nux.x86_64.rpm
Retrieving http://li.nux.ro/download/nux/dextop/el7/x86_64/fuse-exfat-1.2.7-1.el7.nux.x86_64.rpm
warning: /root/rpmbuild/tmp/rpm-tmp.1Y5XtE: Header V4 RSA/SHA1 Signature, key ID 85c6cd8a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:fuse-exfat-1.2.7-1.el7.nux ################################# [100%]
然后直接挂载就好了
mount.exfat /dev/sdb /mnt/
mount -t exfat /dev/sdb /mnt/
mount.exfat /dev/sdb /mnt/
FUSE exfat 1.2.7
ERROR: exFAT file system is not found.
不对,于是再看一下,得是sdb2
lsblk -f|grep sdb #-f 就是显示磁盘类型,当然,如果是已经挂载好了可以用:df -Th | grep "^/dev"
sdb
├─sdb1 vfat EFI 67E3-17ED
└─sdb2 exfat 18810765108 619D-E9EE
mount -t exfat /dev/sdb2 /mnt/
成功挂载:
mount -t exfat /dev/sdb2 /mnt/
FUSE exfat 1.2.7
ls /mnt/ #实践有内容了,不宜列出。
是已经挂载好了可以用:df -Th | grep "^/dev",再实践一下sdb是否挂好了:
df -Th | grep "^/dev"|grep sdb
/dev/sdb2 fuseblk 932G 408G 524G 44% /mnt
怎样在MAC上读写NTFS格式的U盘?这个安装一个驱动后,容易导致磁盘变慢,于是放弃了。
diskutil info /Volumes/Untitled
[codes=php]
Device Identifier: disk2s1
Device Node: /dev/disk2s1
Whole: No
Part of Whole: disk2
Volume Name:
Mounted: Yes
Mount Point: /Volumes/Untitled
Partition Type: Windows_NTFS
File System Personality: NTFS
Type (Bundle): ntfs
[/codes]
hdiutil eject /Volumes/Untitled
"disk2" ejected.
sudo mkdir /Volumes/MYHD
sudo mount_ntfs -o rw,nobrowse /dev/disk2s1 /Volumes/MYHD/
来自:https://blog.csdn.net/Beyond_TJU/article/details/88125617
参考:[url=https://jingyan.baidu.com/article/a3aad71aa1dde7b1fb0096ab.html]https://jingyan.baidu.com/article/a3aad71aa1dde7b1fb0096ab.html[/url]
前置:任何一块新的盘,一定要用fdisk -l 后,再用lsblk -f 查看其磁盘格式和sdb1,sdb2这样的,它可能不止是一个整个盘,所以挂载的时候得mount -t exfat /dev/sdb2 /mnt/。
下载 两个包:
rpm -ihv http://li.nux.ro/download/nux/dextop/el7/x86_64/exfat-ut
ils-1.2.7-1.el7.nux.x86_64.rpm
Retrieving http://li.nux.ro/download/nux/dextop/el7/x86_64/exfat-utils-1.2.7-1.el7.nux.x86_64.rpm
warning: /root/rpmbuild/tmp/rpm-tmp.oiRNim: Header V4 RSA/SHA1 Signature, key ID 85c6cd8a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:exfat-utils-1.2.7-1.el7.nux ################################# [100%]
You have new mail in /var/spool/mail/root
rpm -ihv http://li.nux.ro/download/nux/dextop/el7/x86_64/fuse-exfa
t-1.2.7-1.el7.nux.x86_64.rpm
Retrieving http://li.nux.ro/download/nux/dextop/el7/x86_64/fuse-exfat-1.2.7-1.el7.nux.x86_64.rpm
warning: /root/rpmbuild/tmp/rpm-tmp.1Y5XtE: Header V4 RSA/SHA1 Signature, key ID 85c6cd8a: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:fuse-exfat-1.2.7-1.el7.nux ################################# [100%]
然后直接挂载就好了
mount.exfat /dev/sdb /mnt/
mount -t exfat /dev/sdb /mnt/
mount.exfat /dev/sdb /mnt/
FUSE exfat 1.2.7
ERROR: exFAT file system is not found.
不对,于是再看一下,得是sdb2
lsblk -f|grep sdb #-f 就是显示磁盘类型,当然,如果是已经挂载好了可以用:df -Th | grep "^/dev"
sdb
├─sdb1 vfat EFI 67E3-17ED
└─sdb2 exfat 18810765108 619D-E9EE
mount -t exfat /dev/sdb2 /mnt/
成功挂载:
mount -t exfat /dev/sdb2 /mnt/
FUSE exfat 1.2.7
ls /mnt/ #实践有内容了,不宜列出。
是已经挂载好了可以用:df -Th | grep "^/dev",再实践一下sdb是否挂好了:
df -Th | grep "^/dev"|grep sdb
/dev/sdb2 fuseblk 932G 408G 524G 44% /mnt
怎样在MAC上读写NTFS格式的U盘?这个安装一个驱动后,容易导致磁盘变慢,于是放弃了。
diskutil info /Volumes/Untitled
[codes=php]
Device Identifier: disk2s1
Device Node: /dev/disk2s1
Whole: No
Part of Whole: disk2
Volume Name:
Mounted: Yes
Mount Point: /Volumes/Untitled
Partition Type: Windows_NTFS
File System Personality: NTFS
Type (Bundle): ntfs
[/codes]
hdiutil eject /Volumes/Untitled
"disk2" ejected.
sudo mkdir /Volumes/MYHD
sudo mount_ntfs -o rw,nobrowse /dev/disk2s1 /Volumes/MYHD/
来自:https://blog.csdn.net/Beyond_TJU/article/details/88125617
[实践OK]Linux centos vpn软件下载成功安装地址,/usr/bin/vpnd 2>&1是由vpn生成的,VPNClient工具,在MacBook/Iphone7/CentOS7均以安装的安装vpn软件之MotionPro。
Unix/LinuxC技术 jackxiang 2019-4-25 06:09
下载地址:
http://client.arraynetworks.com.cn:8080/zh/troubleshooting
点击上述链接,下载合适的版本:
https://support.arraynetworks.net/prx/000/http/supportportal.arraynetworks.net/downloads/motionpro/Linux/Fedora/1.1.1/MotionPro_Linux_RedHat_x86-64_1.1.1.sh
安装
sudo ./MotionPro_Linux_Ubuntu_x86-64_1.2.1.sh
https://blog.csdn.net/yitengtongweishi/article/details/86378026
实践如下:
wget https://support.arraynetworks.net/prx/000/http/supportportal.arraynetworks.net/downloads/motionpro/Linux/Fedora/1.1.1/MotionPro_Linux_RedHat_x86-64_1.1.1.sh
[root@mainboard_kvmops_10_10_0_103 src]# chmod +x MotionPro_Linux_RedHat_x86-64_1.1.1.sh
[root@mainboard_kvmops_10_10_0_103 src]# ./MotionPro_Linux_RedHat_x86-64_1.1.1.sh
Verifying archive integrity... 100% All good.
Uncompressing MotionPro Setup 100%
installing vpnd...
starting vpnd...
installing MotionPro...
creating desktop shortcut for MotionPro...
install MotionPro successfully.
[实践OK]修改错fstab后出现无法个性/etc/fstab出现无法读取磁盘的问题,centos进入救援模式,修复fstab错误
Unix/LinuxC技术 jackxiang 2019-4-21 19:07
在centos数秒启动页面,按e,进入编辑模式
找到2步中的ro,修改成:rw init=/sysroot/bin/sh,然后按ctrl+x重启
执行chroot /sysroot获取root权限,使用vi /etc/fstab编辑fstab配置文件
来自:https://blog.csdn.net/laotoumo/article/details/82746131
找到2步中的ro,修改成:rw init=/sysroot/bin/sh,然后按ctrl+x重启
执行chroot /sysroot获取root权限,使用vi /etc/fstab编辑fstab配置文件
来自:https://blog.csdn.net/laotoumo/article/details/82746131