• linux学习笔记--文件


    文件系统
    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
  • 相关阅读:
    spring boot 在windows下安装为service(转)
    win7安装Anaconda+TensorFlow+配置PyCharm(转)
    IDEA中Spring boot配置热部署无效问题解决方式(转)
    WEB后台--基于Token的WEB后台登录认证机制(转)
    selenium之使用chrome浏览器测试(附chromedriver与chrome的对应关系表)(转)
    开源巨献:Google最热门60款开源项目(转)
    反射获取一个方法中的参数名(不是类型)(转)
    ELK原理与介绍(转)
    Linux下Redis的安装和部署(转)
    webpack+ES6+less开发环境搭建(转)
  • 原文地址:https://www.cnblogs.com/zpitbolg/p/5679447.html
Copyright © 2020-2023  润新知