2019.3.18 severus.va
软链接
ln -s
创建软链接ls -s f2 f2_link
软链接和原始链接不是同一个文件,但是原文件删除后所有软链接皆失效,但是如果有新的文件文件名与软链接指向名相同就会被顶替。
软链接可以跨分区创建,文件路径决定软链接文件大小。
软链接连接数增加不会影响原文件连接数。
软链接可以对文件夹(目录)进行创建。
- 软链接时相对路径一定要相对于软链接而非工作目录
软、硬链接定义
硬链接:一个文件多个名字
软链接:一个文件对应的快捷方式
软、硬链接区别:
硬链接会增长连接数,软链接不会
硬链接不支持跨分区,软链接支持
硬链接对目录创建,软链接支持
原始文件和链接文件的关系:
硬链接:原始文件与链接文件无差异
软链接:软链接文件依赖于原始文件
删除原文件:
硬链接:硬链接不受任何影响
软链接:软链接皆失效,但是如果有新的仅同名文件会被新的同名文件顶替
readlink + 软链接
可以直接看软链接原始文件路径
软链接生产中经常用作软件升级、调试
mv和inode
• 在同一个文件系统内进行mv相当于换个文件名,inode表不会有任何改动,磁盘上的位置也没有任何法改动
• 如果mv目标和源不在同一个文件系统,相当于先cp到源然后再rm
标准I/O和管道
程序:指令+数据
- 三种I/O设备
标准输入(STDIN) - 0 默认接受来自键盘的输入
标准输出(STDOUT) - 1 默认输出到终端窗口
标准错误(STDERR) - 2 默认输出到终端窗口 - I/O重定向:改变默认位置
支持的操作符号包括:
> 把标准输出重定向到文件
2> 把标准错误重定向到文件
&> 把所有输出重定向到文件
符号 > 文件内容会被覆盖
set -C
禁止将内容覆盖已有文件内,但可以追加
>|file
强制覆盖
set +C
允许覆盖
符号 >> 原有内容基础上追加内容
pts/1 将内容重定向到 pts/2
[root@CentOS7 ~]# tty
/dev/pts/1
[root@CentOS7 ~]# tty
/dev/pts/2
[root@CentOS7 ~]# ls
anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
[root@CentOS7 ~]# ls > /dev/pts/2
[root@CentOS7 ~]#
[root@CentOS7 ~]# tty
/dev/pts/2
[root@CentOS7 ~]# anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates
Desktop Downloads Music Public Videos
符号 >> 可以将标准输出追加到文件内而不是覆盖
[root@CentOS7 data]# hostname > va.txt
[root@CentOS7 data]# cat va.txt
CentOS7
[root@CentOS7 data]# uname -r >> va.txt
[root@CentOS7 data]# cat va.txt
CentOS7
3.10.0-957.el7.x86_64
具有标准输出/标准错误的cmd > 文件
标准输出cmd > 文件
> FILE
此命令将会清空文件cmd > /dev/null
/dev/null 相当于垃圾桶cat /dev/null > FILE
与清空文件相同,但是这条比较通用>> 空文件
可以创建空文件,且比> 空文件
更安全些标准错误cmd 2> 文件
- 执行命令时既有标准输出也有标准错误
[root@CentOS7 data]# ls /rrr /boot
ls: cannot access /rrr: No such file or directory
/boot:
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-d4dfbc62a3aa42a88abe0d0e43d8b817.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-d4dfbc62a3aa42a88abe0d0e43d8b817
vmlinuz-3.10.0-957.el7.x86_64
[root@CentOS7 data]# ls /rrr /boot > va.txt 2> vv.txt
[root@CentOS7 data]# cat va.txt
/boot:
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-d4dfbc62a3aa42a88abe0d0e43d8b817.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-d4dfbc62a3aa42a88abe0d0e43d8b817
vmlinuz-3.10.0-957.el7.x86_64
[root@CentOS7 data]# cat vv.txt
ls: cannot access /rrr: No such file or directory
&>
该cmd将标准输出和标准错误归到一个文件内
[root@CentOS7 data]# ls /rrr /boot &> vz.txt
[root@CentOS7 data]# cat vz.txt
ls: cannot access /rrr: No such file or directory
/boot:
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-d4dfbc62a3aa42a88abe0d0e43d8b817.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-d4dfbc62a3aa42a88abe0d0e43d8b817
vmlinuz-3.10.0-957.el7.x86_64
以下四个选项哪个结果不同:
- cmd &> file
- cmd > file 2>&1
- cmd 2>&1 >file xxx 顺序不同
- cmd 2>file 1>&2
- 也可以用(cmd;cmd;cmd)来同时执行输出多个命令
[root@CentOS7 data]# hostname
CentOS7
[root@CentOS7 data]# uname -r
3.10.0-957.el7.x86_64
[root@CentOS7 data]# (hostname;uname -r) > vb.txt
[root@CentOS7 data]# cat vb.txt
CentOS7
3.10.0-957.el7.x86_64
打开的文件都有一个fd:filedescriport(文件描述符)
tail -d FILE
持续打开不关闭文件
查看/var/log/massages的fd(文件描述符)
[root@CentOS7 ~]# tail -f /var/log/messages
Mar 12 16:49:08 CentOS7 systemd: Unit iscsi.service cannot be reloaded because it is inactive.
Mar 12 16:49:17 CentOS7 dbus[6181]: [system] Failed to activate service 'org.bluez': timed out
Mar 12 16:49:17 CentOS7 pulseaudio: GetManagedObjects() failed: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Mar 12 16:50:01 CentOS7 systemd: Started Session 2 of user root.
Mar 12 16:50:15 CentOS7 systemd-logind: New session 3 of user root.
Mar 12 16:50:15 CentOS7 systemd: Started Session 3 of user root.
Mar 12 16:51:15 CentOS7 systemd: Started Session 4 of user root.
Mar 12 16:51:15 CentOS7 systemd-logind: New session 4 of user root.
Mar 12 16:54:13 CentOS7 journal: JS WARNING: [resource:///org/gnome/shell/ui/popupMenu.js 717]: reference to undefined property "_delegate"
Mar 12 16:54:23 CentOS7 journal: g_simple_action_set_enabled: assertion 'G_IS_SIMPLE_ACTION (simple)' failed
[root@CentOS7 ~