使用du命令查看文件/目录大小
例:要显示一个目录树及其每个子树的磁盘使用情况
du -h .
#-h 自动根据大小以k、m、g为单位显示,提高信息的可读性。kb、mb、gb是以1024为换算单 位, -h以1000为换算单位;
#若省略/home/linux路径目录,则显示当前目录的;
#“.”代表当前目录下。也可以换成一个明确的路径
du -sh /etc
#-s 仅显示总计,即显示路径目录或当前目录的总大小。
语法:du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>] [--max-depth=<目录层数>][--help][--version][目录或文件]
常用参数:
-a或-all 为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或–total 除了显示目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或–dereference-args 显示指定符号连接的源文件大小。
-h或–human-readable 以K,M,G为单位,提高信息的可读性。
-H或–si 与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
-k或–kilobytes 以1024 bytes为单位。
-l或–count-links 重复计算硬件连接的文件。
-L<符号连接>或–dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或–megabytes 以1MB为单位。
-s或–summarize 仅显示总计,即当前目录的大小。
-S或–separate-dirs 显示每个目录的大小时,并不含其子目录的大小。
-x或–one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或–exclude-from=<文件> 在<文件>指定目录或文件。
–exclude=<目录或文件> 略过指定的目录或文件。
–max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
–help 显示帮助。
–version 显示版本信息。
****************************************************************************************************************************************
使用ls ll查看文件权限,用户和所属组
root@bao-vm:/test/a# cd /
root@bao-vm:/# ls -lh
总用量 104K
drwxr-xr-x 2 root root 4.0K 6月 4 17:15 bin
drwxr-xr-x 3 root root 4.0K 7月 17 14:08 boot
lrwxrwxrwx 1 root root 32 7月 17 00:02 initrd.img -> boot/initrd.img-4.4.0-31-generic
lrwxrwxrwx 1 root root 32 7月 3 20:42 initrd.img.old -> boot/initrd.img-4.4.0-28-generic
drwxr-xr-x 2 root root 4.0K 6月 4 17:15 bin
b 的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主 设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字 节)
c 表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最 小单位为一个字节
p 表示该文件为命令管道文件。与shell编程有关的文件
s 表示该文件为sock文件。与shell编程有关的文件
链接文件分为硬链接或符号链接两种。
硬链接:多个指向同一文件。硬链接文件大小完全相同,如有多个硬链接,所链接的文件只是一个文件大小。
同一个文件所有的文件都是等价的,操作系统不区分链接创建的先后顺序,若一个文件存在两个链接,那么除去一个文件还可以通过另外一个文件来 访问该文件,也可以除去 创建链接时用到的文件,但只要还有一个链接存在,就可通过该连接访问文件。
建立硬链接方法:ln a b是建立硬链接
符号链接(软链接):建立一个独立的文件,这个文件会让数据的读取指向它链接的文件内容。类似windows快捷方式。
建立软链接: ln -s a b
a 是源文件,b是链接文件名,其作用是进入b目录,实际上是链接进入了a目录
如:ln -s /usr/local/mysql/bin/mysql /usr/local/bin
实际上是在/usr/local/bin目录创建了个mysql文件,地址指向/usr/local/mysql/bin/mysql文件,相当于windows中的快捷方式
drwxr-xr-x 2 root root 4.0K 6月 4 17:15 bin
这行表示,bin目录所对应的相关权限。
lrwxrwxrwx 1 root root 32 7月 17 00:02 initrd.img -> boot/initrd.img-4.4.0-31-generic
第3字段:文件(目录)拥有者
该字段表示该文件拥有者是谁。只有文件的拥有者才具有改动文件属性的权利。root具有改动任何文件属性的权利。对于目录,只有拥有该目录的用 户,或者具有写权限的用户才有在目录下创建文件的权利。
前ID号的数字。
第4字段:文件(目录)拥有者所在的组
一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。
第5字段: 文件所占用的空间(以字节为单位)
第5字段表示文件大小,如果是目录,表示该目录大小。注意是目录本身大小,而非目录及其下面的文件的总大小。
第6字段:文件(目录)最近访问(修改)时间
第7字段:文件名
2.文件名颜色的含义
如果某一用户被删除,而该用户家目录还存在,ls -l 查看该文件将显示一个代表用户存在
默认色代表普通文件。例:install.log
绿色代表可执行文件。例:rc.news
红色代表tar包 文件。
蓝色代表目录文件。
水红代表图象文件。
青色代表链接文件。
黄色代表设备文件。
ls(list) 功能说明:列出目录内容。
语 法:ls [-1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX][-I <范本样式>][-T <跳格字数>][-w <每列字符数>][--block-size=<区块大小>][--color=<使用时机>][--format=<列表格式>][--full-time][--help][--indicator-style=<标注样式>][--quoting-style=<引号样式>][--show-control-chars][--sort=<排序方式>][--time=<时间戳记>][--version][文件或目录...]
补充说明:执行ls指令可列出目录的内容,包括文件和子目录的名称。
参 数:
-1 每列仅显示一个文件或目录名称。
-a或--all 下所有文件和目录。
-A或--almost-all 显示所有文件和目录,但不显示现行目录和上层目录。
-b或--escape 显示脱离字符。
-B或--ignore-backups 忽略备份文件和目录。
-c 以更改时间排序,显示文件和目录。
-C 以又上至下,从左到右的直行方式显示文件和目录名称。
-d或--directory 显示目录名称而非其内容。
-D或--dired 用Emacs的模式产生文件和目录列表。
-f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。
-F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。
-g 次参数将忽略不予处理。
-G或--no-group 不显示群组名称。
-h或--human-readable 用"K","M","G"来显示文件和目录的大小。
-H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。
-i或--inode 显示文件和目录的inode编号。
-I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。
-k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。
-l 使用详细格式列表。
-L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。
-m 用","号区隔每个文件和目录的名称。
-n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。
-N或--literal 直接列出文件和目录名称,包括控制字符。
-o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。
-p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。
-q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。
-Q或--quote-name 把文件和目录名称以""号标示起来。
-r或--reverse 反向排序。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-s或--size 显示文件和目录的大小,以区块为单位。
-S 用文件和目录的大小排序。
-t 用文件和目录的更改时间排序。
-T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。
-u 以最后存取时间排序,显示文件和目录。
-U 列出文件和目录名称时不予排序。
-v 文件和目录的名称列表以版本进行排序。
-w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。
-x 以从左到右,由上至下的横列方式显示文件和目录名称。
-X 以文件和目录的最后一个扩展名排序。
--block-size=<区块大小> 指定存放文件的区块大小。
--color=<列表格式> 培植文件和目录的列表格式。
--full-time 列出完整的日期与时间。
--help 在线帮助。
--indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。
--quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。
--show-control-chars 在文件和目录列表时,使用控制字符。
--sort=<排序方式> 配置文件和目录列表的排序方式。
--time=<时间戳记> 用指定的时间戳记取代更改时间。
--version 显示版本信息。
****************************************************************************************************************************************
linux用户组及用户相关操作(增删改查)
1.linux系统用户组管理
①增加一个新的用户组使用groupadd命令。 格式:groupadd 选项 用户组
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例,添加新用户组:groupadd testgroup
②如果要删除一个已有的用户组,使用groupdel命令。格式:groupdel 用户组
例,删除用户组:groupdel testgroup
③修改用户组的属性使用groupmod命令。 格式:groupmod 选项 用户组
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字
例1:groupmod -g 102 group2 此命令将组group2的组标识号修改为102。
例2:groupmod –g 10000 -n group3 group2 此命令将组group2的标识号改为10000,组名修改为group3。
④如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
例:newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管 理工具来完成。
2.Linux系统用户账号的管理
①添加新的用户账号使用 useradd命令。格式:useradd 选项 用户名
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
-r 表示用户是系统用户,不可用于登录系统。
例1:useradd test 此命令创建一个新用户,用户名为test
例2: useradd -s /bin/sh -g group –G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
②删除帐号
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主 目录。删除一个已有的用户账号使用userdel命令,其格式如下:userdel 选项 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
③修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用 如下选项:
-l 新用户名 这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例:usermod -s /bin/ksh -d /home/z –g developer sam 此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
④用户口令的管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指 定空口令。
指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
命令的格式为:passwd 选项 用户名
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超级用户,可以用下列形式指定任何用户的口令:
# passwd sam
New password:*******
Re-enter new password:*******
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用 户;而超级用 户为用户指定口令时,就不需要知道原口令。
为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:# passwd -d sam 此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
useradd -d /usr/hadoop -u 586 -m hadoop -g hadoop
1 Creating mailbox file: 文件已存在
删除即可 rm -rf /var/spool/mail/用户名
2 useradd: invalid numeric argument 'hadoop'
这是由于hadoop组不存在 请先建hadoop组
通过cat /etc/passwd 可以查看用户的pass
cat /etc/shadow 可以查看用户名
cat /etc/group 可以查看 组
chown/chgrp/chmod 修改文件所属用户和组
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。