首页 > 代码库 > linux 基础

linux 基础

linux的文件系统

    根文件系统(rootfs)

    root filesystem

LSB, FHS:

    /etc ,/usr, /var, /root, /home, /dev

    /boot: 引导文件存放的目录:操作系统首先启动的内核文件(vmliuxz)、引导加载器(bootloader,grub)都存放在此目录

    /bin: 供所有用户使用的基本命令: 不能关联到独立分区。os启动即会用到的程序

    /sbin(system binary): 管理类的基本命令,不能关联到独立分区。os启动即会用到的程序

    /lib:基本共享库文件,系统启动会用的库文件,内核模块文件(/lib/modules)32位程序依赖

    /lib64: 64位程序依赖。辅助共享库件存放的位置

    /etc: 配置文件目录(大多数是纯文本文件),/etc/opt              /etc/X11图形界面的配置文件

    /home/IUSERNAME: 普通用户家目录、

    /root: 管理员的家目录

    /media:关联便携式移动设备  /usb   /cdrom

    /mnt:挂载临时的文件系统或者关联位置

    /dev : 特殊文件(软件)和设备文件存放位置     b:block device(可随机访问)    c:character   device(线性访问,有访问先后)

    /opt: 第三方应用程序(辅件类)安装位置。首次使用是空的

    /srv:系统上运行的服务用的中间数据存放的位置

    /tmp: 临时文件。

    /usr : 通常会关联到独立分区。

                /usr/bin:保证系统拥有完整功能而提供的应用程序  

                /usr/sbin:管理员可以使用的命令.配置文件在/etc下

               /usr/ib64  

                /usr/include:C程序的头文件(header file)  

                /usr/:share:结构独立化的数据。如:doc、man

                /local: 第三方应用程序安装位置   /bin    /sbin    /lib64   等

    /var: 可变数据文件。

                /cache : 应用程序缓存数据目录

                /lib: 应用程序状态信息数据

                /local:  专用天为/usr/local下的应用程序存储可变数据

                /lock: 锁文件

                /log: 日志目录及文件

                /opt:  专用于为/opt下的应用程序存储可变数据

                /run: 与运行中的进程相关的数据(进程的PID文件)

                /spool: 缓存池

                /tmp: 系统再次重启过程中产生的临时文件

    /proc: 伪文件系统。虚拟文件系统。用于输出内核与进程信息相关的虚拟文件

    /sys: 用于输出当前系统上硬件设备相关信息的虚拟文件系统

    /misc: 备用的杂项

    /lost+found: 格式化后产生的

    /selinux: selinux相关的安全信息策略等信息的存储位置

Linux上的应用程序的组成部分

    二进制:/bin, /sbin/ /usr/bin /usr/sbin /usr/local/bin /usr/lcoal/sbin

    库文件:/lib /lin64 、/usr/lib /usr/lib64  /usr/local/lib /usr/local/lib64

    配置文件: /etc  /etc/DIRECTORY  /etc/local/etc

    帮助文件: /etc/share/man /usr/share/doc   /usr/lcal/share/man /usr/local/share/doc

Linux下的文件类型

    -(file): 普通文件

    -d(dir): 目录文件

    -b(block): 块设备.

    -c(charater):  字符设备

    -l( symbol link): 软件连接。符号连接

    -p(pipe): 管道文件

    -s(socket): 套接字文件,接口文件。

    

Linux系统管理命令

    关机    halt reboot poweroff                                          

                    -f 强制不调用shutdown 

                    -p 切断电源

                shutdown -r重启   -h关机后会切断电源。 -c取消关机或重启操作、  TIME: now 立刻  +num 从命令提交开始之后num时间之后。 hh:mm。绝对时间表示

Linux 用户信息查询命令

    whoami: 显示当前登录的有效用户              who:显示当前所有的登录会话       w:系统当前所有登录会话及所做的操作。

目录管理类命令:

    命令行展开:

        ~: 展开为用户的主目录

        ~USERNAME:展开为指定用户的主目录

        {}: 可承载一个以逗号分隔的列表,并将其展开为多个路径

                /tmp/{a,b} = /tmp/a, /tmp/b

                /tmp/{a,b}/jea = /tmp/a/jea, /tmp/b/jea

    命令的执行结果:

      0:成功

      1-255:失败

        bash使用特殊变量$?保存最近一条执行状态结果

     命令的执行结果:命令的返回值。 命令的执行状态

 cd,pwd,ls,mkdir, rmdir       蓝色表示目录

    mkdir 创建目录

                -p: 递归创建目录。存在不报错。

                -v(verbose): 显示创建详细过程

                -m mode: 创建目录时直接指定权限

    tree: 显示目录树

            -d :只显示目录

            -l  level: 指定显示的层级数目

            -P :只显示匹配Pattern 的目录

    rmdir:删除目录(只能删除空目录)

            -v : 显示过程

            -f : 强制删除

            桌面

      文件查看类命令:

            cat,tac

            more, less , tail .head

            head tail :获取文件的前几行   后几行 (默认是10)

                -c: 指定获取前多少个字节

                -n: 指定获取前多少行

      文件的时间戳管理工具:

            touch

            文件:metadata , data

                查看文件的状态:stat

                 三个时间戳:

                        access time: 访问时间 atime , 读取文件内容

                        modify time: 修改时间 mtime 改变文件内容

                        change time :改变时间 ctime   元数据发生改变

            -a: 修改atime

            -m:修改mtime

            -c :如果不存在,则不创建

            cp:  复制, 源, 目标

                    -i 交互式

                    -r 递归复制

                    -a: 归档复制

            mv:移动

    nano :全屏幕的文件编辑器

     Bash的基础特性:

            1.命令别名(alias)(仅对当前shell有效,如果想要永久有效,仅对当前用户: ~/.bashrc   对所有用户:/etc/bashrc)

                alias ls="ls -l"    取消别名:unalias ls

                bash进程重新读取配置文件 两个种方式:source /path.to/config_file            ./path/to/config_file

            2.glob (globing)可在bash中实现文件名通配 例如:* (任意长度任意字符),?(任意单个字符), [](),  ^(取反,如[^0-9] 所有非数字的)

    bash的快捷键、

            ctrl + l 相当于clear

            ctrl + a 首部

            ctrl + e 尾部

            ctrl + w 按单词删除

            ctrl +c 终止当前命令

            ctrl +u 删除命令行首到光标所在处的所有内容

            ctrl + k 删除光标所在处到尾部的内容                      

    Bash中的I/O重定向及管理

            程序:指令 + 数据

                    读入数据:input

                    输入数据: output

            每一个打开的文件都有一个fd:文件描述符file descriptor

            标准输入:keyborad

            标准输出:monitor 显示器 文件描述符为1

            标准错误:monitor 显示器 文件描述符为2

            I/O重定向:改变标准位置

                输出重定向:command new_pos, command >> new_pos

                set -C 禁止输入重定向覆盖输入到文件

                2>:覆盖重定向错误输出数据流 (将错误输出输出到文件)

                标准输出和标准错误输出重定向

                    command >file 2>file_2

                合并标准输出和错误输出为同一个数据流进行重定向

                    &> file 把正确和错误都重定向到一个文件中

                    command >file 2>&1 把错误数据流重定向到第一个数据流之中

         tr: 转换或删除字符 transport

                 tr abc ABC  输入a123bc 输出A123BC            

                tr -d 删除指定字符  tr -d a 输入abc 输出bc         tr ‘a-z‘ ‘A-Z‘ 转换成大写

        <<此处文档

                例如 cat >> /tmp/test.out <<EOF        输入:hello   EOF结尾     输出:hello

         tee:一处输入。两处输出。   tee /tmp/test

 文本操作工具

            wc:

                    -c:字节数

                    -l:行数

                    -w:仅仅靠空白字符分开的单词

            sort: 排序  -f 忽略大小写  -r 逆序。 -k # :以指定字段为标准进行排序   -u去得   -n按数据排序

            cut:以指定字符对每一行进行切割。 cut -d: -f1,2 a.txt  输出root:x (原来的:root:x:0:root) 

                -d: 指定分隔符。decriptor

                -f: 第1个到第3个字段

            uniq :去重

                   连续且完全一样才是重复

                    -c:显示每行出现的次数

                    -d显示重复的行

用户和组管理

    Linux用户:Username/UID

        管理员:root  0,

        普通用户:1-65535

                    系统用户:1-499   守护进行获取资源进行权限分配

                    登录用户:500+    交互式登陆

    Linux组: Group/GID

        管理员组:root , 0

        普通组:

                系统组:1-499

                普通组:500+

        权限指派的一种方式。

    Linux的安全上下文:

        运行中的程序:进程(process)

                以程序发起者的身份运行

                                     root: cat

                                     cwb:cat

        Linux组的类别

        用户的基本组(主组):

                组名同用户名且仅包含一个用户:私有组。一个用户创建,系统自动给其分配私有组

                cwb:x:1000:1000:cwb:/home/cwb:/bin/bash

                用户名:密码(x:占位符):用户ID:组ID:主目录:默认shell

        用户的附加组(额外组):   

        Linux用户和组相关的配置文件:

            /etc/passwd 用户及其属性信息(名称。UID。基本组ID等)密码占位符

            /etc/group 组及其属性信息

            /etc/shadow 用户密码及相关属性

            /etc/gshadow 组密码及相关属性

       useradd 用户名:创建用户名

            -u :指定UID

            -g:基本组GID

            -c “comment”:注释内容

            -d:指定家目录  -d /path/to/home  用户名    

            -s: 指定 shell文件的路径,可能列表在/etc/shells文件

             -G:指定用户所属的附加组。可以有多个附加组用户‘,’隔开、组必须事先存在

             -r:创建系统用户  centos 6 ID<500 centos 7 ID<1000

    例如:useradd gentoo -s /bin/csh -c "Gentoo Distribution" -G linux


        组创建:groupadd

                -g:指明GID。       

                -r:创建系统组  centos 6 ID<500 centos 7 ID<1000

         查看用户相关的ID信息:id

                -u:UID

                -g:GID

                -G:groups

                -n: Name

        切换用户或以其他用户身份执行命令:su

            su UserName: 非登陆式切换,即不会读取目标用户的配置文件

            su - UserName: 登录式切换。会读取目标用户的配置文件。完全切换

            root su到其它用户无须密码, 非root用户需要密码

    用户属性修改:usermod

                 -u:新的UID

                -g:新的基本组GID

                -G:groups新附加组,原来的附加组会被覆盖,若保留原来的,需要使用-a选项。表示append

                -l login:修改为新的名字

                -c :新的注释

                -d Home :新的家目录

                -L锁定用户。锁定之后无法登陆, -U:解锁用户

                -e YY-MM-DD:设定用户过期日期

    给用户添加密码:passwd

                passwd UserName: 修改指定用户的密码。仅root可以

                passwd :用户修改自己的密码

                           -l(小写的): 锁定用户  -u:解锁用户

                           -n mindays :指定最短使用期限

                           -x maxdays:指定最大使用期限

                           -w warning:提前多少开始警告

                           --stdin : 从标准输入接收用户密码     echo "PASSWORD" | passwd --stdin USERNAME(把PASSWORD当作密码通过管道传入passwd 中)

                                /dev/null: 数据黑洞。

                                /dev/zero:

         删除用户:userdel:

                -r: 删除用户家目录

         组属性修改:groupmod

                -n group_name:新的名字

                -g GID:新的GID    

            组删除:groupdel

         组添加密码:gpasswd 组名

                    -a user :将user添加到指定组中

                    -d user:删除用户user的以当前组名的附加组

                    -A user1,user2,user3: 设置有管理权限的用户 gpasswd -A user1,user2,user3  root

            newgrp :临时切换基本组

                    如何用户本不属于此组,则需要密码

         修改用户属性:chage  更改用户密码过期信息

          其它命令:chfn (finger显示信息).chsh 修改shell.

    权限管理:

        ower    主u

        group   组g

        other    其它o

        r:readable 可读   可以使用文件查看类工具获取其内容   4

        w:writable 可写 。 2

        x:excutable 执行 1

         修改权限:chmod

                    -R :递归修改权限。父目录和子目录、文件等权限都会被修改

                    直接指定:Mode   u=rx     g=r-x  o=       或 ug=   

        chmod    --reference=RFILE FILE 参考RFILE文件的权限,修改为和RFILE权限一样

         chown:修改文件的属主 chown cwb  file    

                    OWNER:GROUP

                    :GROUP

            -R递归修改

        修改文件的属性:chgrp

        文件或创建时的遮罩码 :umask

                FILE:   666-umask    如果某类的用户的权限减得的结果中存在x权限,则将其权限+1

                DIR :   777-umask

                 umask :查看  0022:第一个0不要看,创建的目录权限都是666-022=644权限,如果有x行权限会+1、如果是目录别不会+1、只有文件会+1.

                umask # 设定

                





















本文出自 “祝融与火” 博客,请务必保留此出处http://notezr.blog.51cto.com/9424982/1917193

linux 基础