文件系统 ls -lhi i inode 相当于文件在磁盘里的唯一标示,index node h 代表文件大小k,m [root@masters ~]# [root@masters ~]# ls -lhi total 98M 405228 -rw-------. 1 root root 2.6K Oct 18 2014 anaconda-ks.cfg 405304 drwxr-xr-x. 9 root root 4.0K Oct 31 2014 apache-tomcat-6.0.41 394809 -rwxrwxrwx. 1 root root 6.9M Oct 31 2014 apache-tomcat-6.0.41.tar.gz 408550 drwxr-xr-x 2 root root 4.0K Jan 12 2015 class 408546 drwxr-xr-x 2 root root 4.0K Mar 6 2015 Desktop 409555 -rw-r--r-- 1 root root 413 May 23 06:42 dir.txt 408552 drwxr-xr-x 2 root root 4.0K Mar 6 2015 Documents 408547 drwxr-xr-x 2 root root 4.0K Mar 6 2015 Downloads 408417 drwxrwxrwx 13 zp zp 4.0K Nov 14 2014 hadoop-0.20.2 第三列 文件的硬连接数,硬链接是文件的又一个入口 inode 存放文件的属性,rwxr-xr-x. 9 root root 4.0K Oct 31 2014 apache-tomcat-6.0.41 指向文件块 ---------------------------------------------------- 链接 ln localfile lkfile 硬链接 文件有两个入口,两个文件指向同一个inode,如果有多个硬链接,删除一个文件不会删除 硬链接以及源文件全删除之后,文件会被系统回收 rm 删除只是删除链接文件 如果进程在使用这个文件,删除之后实际上文件没丢 xx.log ln xx.log xx_link.log rm xx.log 删除这个之后,文件不会删除 再把xx_link.log删除之后实际文件才回删除 df -i 查看inode使用情况 以点开头的代表隐藏文件,ls -a 显示隐藏问价 .代表目录,就是因为.的inode和上级目录的一样,互为硬链接文件 ..也只同样道理 ----------------------------------------------------------- 软连接 类似于win的快捷方式,包含了源文件的绝对路径 ln -s localfile lnkfile 如果先把源文件删掉,软连接就会失效 目录可以创建软连接 ------------------------------------------------------------- 用户和用户组 uid 用户id gid 组id 用户分3类 1,root uid=0 gid=0 2,虚拟用户 存在linux中,满足程序运行的需要创建的 uid gid 1--499 3,普通用户,root创建的目录 uid gid 500开始 /etc /passwd /group /shadow --------------------------------------- ls -l --time-style=long-iso xx.log 显示友好的长格式 [root@masters shelltest]# ls -l --time-style=long-iso total 20 drwxr-xr-x 2 root root 4096 2016-05-23 06:41 image -rw-r--r-- 1 root root 292 2016-05-22 07:35 seq.txt lrwxrwxrwx 1 root root 9 2016-06-05 06:45 test -> lnkxx.log -rw-r--r-- 1 root root 35 2016-05-23 06:49 xx.txt -rw-r--r-- 1 root root 35 2016-05-23 06:49 xx.txtr Access:访问时间 -atime Modify: 修改时间 -mtime Change: -ctime stat 查看时间等属性,显示文件或文件系统的状态 netstat -an 查看端口 [root@masters shelltest]# stat xx.txt File: `xx.txt' Size: 35 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 409543 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-06-05 02:03:33.830049740 -0700 Modify: 2016-05-23 06:49:18.160567373 -0700 Change: 2016-06-05 06:49:50.471050109 -0700 ------------------------------------------ 日期 [root@masters ~]# date +%F -d "-3day" 2016-06-06 --------------------------- ctrl+u 清除光标之前的内容 ctrl+k 清除光标之后的内容 -------------------------------------------------------------------------- linux的文件系统的权限体系 r 4 w 2 x 1 - 0 groupadd grouphicloud 增加一个组 useradd -g grouphicloud hicloud 增加用户,指定组 chown hicloud grouphicloud test.sh 更改文件的文件用户和组 如果没有r的权限,vi无法编辑。强制执行的话会覆盖,echo可以追加 删除普通文件的时候,如果上层目录权限不够也是删不掉的 rm -f test.sh 因为test.sh 文件名保存在上一级目录的block里面,所以删除的时候受上一级目录的影响 inode inode(保存文件属性) | | --------- | | BLOCK(文件内容,下一级文件名,目录名) 生产上权限设置 目录 755 root root 文件 644 root root 默认权限: umask 控制文件和目录默认权限的值 [root@masters ~]# umask 0022 file 666-umask 就是文件的默认权限,umask第一个不算 如果umask是奇数,每个奇数要加1 666 032 1 624 dir 777-umask 就是目录的权限 [root@masters ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 25980 Feb 17 2012 /usr/bin/passwd ----- 特殊权限位(suid),其他用户在执行这个命令的时候,临时拥有这个目录所属用户的权限 ------------------------------------------------------------- chgrp (change group) chgrp grouphicloud test.sh chgrp +R grouphicloud /root chown 改变用户,也可以改变组 chown hicloud xx.sh chown hicloud:grouphicloud xx.sh 改变用户和组 chown :grouphicloud xx.sh chown -R :/grouphicloud /root [root@masters ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 506 506 25980 Feb 17 2012 /usr/bin/passwd 这里面显示数字是因为吧原来的用户删了 可以创建对应的用户和组,然后指定506 groupadd groupName -g 506 useradd userName -u 506 ======================================================================== 定时任务 crond 检查时间是每分钟 crontab -l 定时任务列表 crontab -e [root@masters shelltest]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 路径: [root@masters cron]# cd /var/spool/cron/ [root@masters cron]# pwd /var/spool/cron * 每的意思 - 范围 , 枚举的意思 30 17,18,19 * * * /bin/echo sss /n 每单位时间的意思,*/2 每2分钟或者每两小时 定时任务中一定要写绝对路径 定时任务后面要加上 >/dev/null 2>&1 &>/dev/null 1>/dev/null 2>/dev/null 如果不加的话,会给管理员发邮件,占满inode [root@masters shelltest]# cat print.sh #! /bin/sh echo $(date "+%Y-%m-%d %H:%M:%S") >> /root/shelltest/xd.log 系统环境变量问题 cronta执行shell的时候只能识别不多的环境变量,如果在编写的脚本中 使用这些变量,最好export重新声明这些变量 eg: export HADOOP_HOME=/root/hadoop-0.20.2 export PATH=$HADOOP_HOME/bin:$PATH export JAVA_HOME=/usr/java/jdk1.8.0_25 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin ---------------------------------------- 用户管理 usermod 修改用户 usermod -g root zp 把用户的组修改为root,会覆盖原来的 usermod -aG oldboy zp 把oldboy组追加给zp [root@masters skel]# usermod -g zp zp [root@masters skel]# id zp uid=500(zp) gid=500(zp) groups=500(zp),0(root) [root@masters skel]# usermod -aG oldboy zp [root@masters skel]# id zp uid=500(zp) gid=500(zp) groups=500(zp),0(root),503(oldboy) 新加用户的配置 [root@masters skel]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes SKEL=/etc/skel 改目录下的文件,新增用户的时候会copy到新用户home下面 修改密码: echo 123| passwd --stdin hicloud 修改密码,可以放在脚本里面 groups zp,查看zp所属的组,第一个是正房 [root@masters skel]# groups zp zp : zp root oldboy w 查看机器登陆用户 [root@masters skel]# w 02:06:25 up 1 day, 15:33, 4 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - 21May16 6days 0.36s 0.36s -bash zp pts/2 192.168.1.101 00:35 42:17 0.43s 0.43s -bash root pts/3 192.168.1.101 23:20 1.00s 0.32s 0.03s w root pts/4 192.168.1.101 23:26 2:20m 0.15s 0.02s tail -f xd.log last 曾经登陆的 [root@masters skel]# last zp pts/2 192.168.1.101 Sat Jun 11 00:35 still logged in root pts/2 192.168.1.101 Fri Jun 10 23:47 - 00:01 (00:13) root pts/4 192.168.1.101 Fri Jun 10 23:26 still logged in root pts/3 192.168.1.101 Fri Jun 10 23:20 still logged in root pts/2 192.168.1.101 Fri Jun 10 23:19 - 23:37 (00:18) root pts/0 192.168.1.101 Fri Jun 10 08:41 - 01:18 (16:37) lastlog 用户是否登陆过 [root@masters skel]# lastlog Username Port From Latest root pts/2 192.168.1.101 Fri Jun 10 23:47:21 -0700 2016 bin **Never logged in** daemon **Never logged in** adm **Never logged in** lp **Never logged in** sync **Never logged in** shutdown **Never logged in** h -------------------------------------- 用户切换 su - oldboy -c "/bin/sh /oldboy/start.sh" 使用某个用户运行服务 sudo : 首先root需要设置其他用户能够使用哪些命令 /etc/sudoers sudo -l 查看该用户可用哪些命令 sudo rm -rf /tmp/xx.log