首页 > 代码库 > unix环境高级编程基础知识之第四章
unix环境高级编程基础知识之第四章
1.从当前用户转到root用户:直接输入su命令,然后输入root密码,如果之前没有设置root命令密码会登陆不成功,这里需要命令sudo passwd命令设置密码,然后按照上面输入就成;从root命令转普通用户:使用exit命令就可以。使用logout会有问题bash: logout: not login shell: use `exit‘,意思是你当前不是login shell,要用exit命令退出。当使用root下使用命令登陆login用户的时候,可以使用logout命令退出,已验证。
2.chown为改变文件用户Id,格式如下:chown root a.out 意思是把a.out的文件用户ID改为root,下面可以设置用户ID,当不在root权限下可以执行root权限文件;chmod改变文件模式,如:chmod u+s a.out 意识设置当前用户权限下(u)增加权限(+)并打开设置用户Id(s),当执行的时候具有文件所有者的权限。
3.cat主要有三大功能:1.一次显示整个文件。$ cat filename2.从键盘创建一个文件。$ cat > filename;只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件: $cat file1 file2 > file;警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
4.a、正常情况下,df和du输出结果都会有差距
du -s命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;
而df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。
文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为Meta Data。
du命令是用户级的程序,它不考虑Meta Data,而df命令则查看文件系统的磁盘分配图并考虑Meta Data。
因此正常情况下,df计算的USED空间会比du计算的结果要稍大。
b、异常情况下,df计算的USED空间会比du大很多
这也是Rocket说的之前碰到的问题,df查看结果文件系统100%使用了,而du的结果是还有6GB空闲的,就这么个问题硬件厂商一个SUPPORT居然不知道怎么解释,这也是让我好奇晚上回来查查看究竟的原因,结果GOOGLE一下就有了,呵呵。
原因在于du是以文件名、目录名为依据计算空间使用的,而df是以硬盘块使用情况来计算空间使用的。
当一个应用程序正在写一个大文件的时候,我们RM或者MV了这个文件(UNIX是允许这么干的,WINDOWS在这一点上傻有傻福),应用程序会占有句柄,并根据句柄所指磁盘位置直接写磁盘,而不会检查该文件是否被删除。
du /etc/ | sort -nr | more 命令意思显示目录/etc/,在查看目录的使用情形时,sort 的参数 -nr 表示要以数字排序法进行反向排序,因为我们要对目录大小做排序,所以不可以使用 human-readable 的大小输出,不然目录大小中会有 K、M 等字样,会造成排序不正确。
5.man 的时候很多命令后面带个括号,里面是数字,这个是什么意思呢?
1、用户可以操作的命令或可执行文件
2、系统核心可调用的函数与工具等
3、一些常用的函数与函数库
4、设备文件的说明
5、设置文件或者某些文件的格式
6、游戏
7、惯例与协议等,例如linux标准文件系统、网络协议、ASCII码等说明内容
8、系统管理员可用的管理命令
9、与内核有关的文件
6.环境变量
path=df/df;$$代表进程ID;echo $SHELL,打印当前shell,当前运行命令行接口程序。
7.tty
TTY设备包括虚拟控制台,串口以及伪终端设备。tty也是一个Unix命令,用来给出当前终端设备的名称。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。
unix环境高级编程基础知识之第四章