脚本内容:
state="$1" case "$state" in 'start') echo 'Starting install mr ramdisk' > /root/ramdisk.log zpool destroy ramrpool >> /root/ramdisk.log ramdiskadm -a mrramdisk 46g >> /root/ramdisk.log rm -rf /export/home/omcrftp/mrdata/mrfile >> /root/ramdisk.log zpool create -m /export/home/omcrftp/mrdata/mrfile ramrpool /dev/ramdisk/mrramdisk >> /root/ramdisk.log chown -R omcrftp:omcg /export/home/omcrftp/mrdata >> /root/ramdisk.log chmod -R 777 /export/home/omcrftp/mrdata >> /root/ramdisk.log ;; 'stop') echo 'Stopping process accounting' ;; *) echo "Usage: $0 { start | stop }" exit 1 ;; esac exit 0
脚本放在/etc/init.d,再通过硬连接,在/etc/rc3.d建立对硬链接:
root@lnltedmr-tds:/etc/rc3.d# ls -il
total 15
98580 -rw-r--r-- 1 root sys 1233 Aug 17 2018 README
103659 -rwxr-x--- 2 root root 821 May 22 01:18 S16settcp
102690 -rwxr-x--- 2 root sys 1126 May 21 08:50 S33installramdisk
102689 -rwxr-x--- 2 root sys 736 May 16 17:52 S66runmr
命令:ln /etc/init.d/installramdisk /etc/rc3.d/S33installramdisk
硬链接不是简单复制,而是指向同一数据区域的两个指针,
软连接如硬链接稳定。
理解 Linux 的硬链接与软链接
https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(见 图 2.hard link 就是 file 的一个别名,他们有共同的 inode)。硬链接可由命令 link 或 ln 创建。如下是对文件 oldfile 创建硬链接。
1
2
|
link oldfile newfile ln oldfile newfile |
由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
- 文件有相同的 inode 及 data block;
- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建;
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见 图 2.)。因此软链接的创建与使用没有类似硬链接的诸多限制:
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
图 2. 软链接的访问
Solaris软链接和硬链接及ls常用参数解释
在学习Solaris的目录继承结构的时候,很多东西大家都知道了,每个目录什么功能,就不细说了。通过阅读,发现了一个以前没有注意到的问题:软链接和硬链接的问题。
链接即link,在Unix和Linux系统中用ln命令,软链接需要加参数 -s。
在说软硬链接之前需要提到的是文件的存储方式,在Solaris中,文件的存储方式是由Inode和Data Blocks组成(包括目录,在Unix系统中,一切皆文件)。Inode是一个标号,每一个Inode标号对应一个Data Blocks。每一个文件其实就是与Inode标号相关联,从而获得数据的内容。下面就简单表示了一下file1的关联模式。file1对应的Inode为3561,其内容就为相对应的Data Blocks中存储的内容。
file1
——————
|Inode 3561|
——————
| |
|Data Blocks|
| |
——————
软链接其实就像一个指针,例如本地的文件名为Link1,对应的Inode是1228,其Data Bloacks中存储的内容就是一个指向另一个文件的指针。例如指向另一个文件为file1,Inode是3561。
软链接命令为:ln -s pathname target。
例如实现上例命令为:ln -s link1 file1
硬链接与软链接有比较大的不同。硬链接是指两个文件都指向同一个Inode。所以如果软链接把link删掉的话,原文件file是不会受到影响的,但是如果原文件file删掉了,链接link就会失效,因为找不到target了。而硬链接由于两个文件都能找到Inode,所以删掉其中的一个对于另一个没有任何影响。
Inode是整个文件系统中很关键的部分,它就像一个指针一样。换句话说,Inode就是一个入口。
我们在用ls命令查看目录结构的时候,如果使用-l参数就会看到很多详细信息,例如:
#ls -l
total 2
drwxr-xr-x 77 root sys 4096 Sep 23 08:36 dir
-rwxr-xr-x 1 user user 10000 Sep 23 19:11 file
前面是权限,应该都清楚,不细说。权限后面跟着的数字就是表示这个文件和目录有多少个硬链接。换句话说就是有多少个文件指向这个Inode。
我们加上参数-i可以看到Inode:
#ls -il dir
21449 drwxr-xr-x 77 root sys 4096 Sep 23 08:36 dir
在权限前面的数字就是Inode了。
由此可知,一个文件最少有一个硬链接,而一个目录则至少有2个硬链接,一个是目录本身的入口,另一个是目录内部的 ".",是在目录内表示本目录的入口。所以在目录内每多一个目录,就会多一个硬链接,因为子目录的".." 表示的父目录的入口。大家可以尝试一下。
下面列出ls命令常用的参数及功能:
ls
-l 显示详细参数
-a 显示全部文件,包括隐含文件
-L 显示软链接的目标目录信息
-i 显示Inode
-R 显示包括继承的子目录的信息
-d 后面根目录名,只显示目录名称和信息,不显示目录内的信息。