zpitblog

导航

 
文件系统
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

 

posted on 2016-07-17 21:35  zpitblog  阅读(278)  评论(0编辑  收藏  举报