linux基础总结

linux学习总结

linux U盘安装报错:

centos7 /dev/root does not exist;由于找不到U盘所以安装失败了;
sda 是我的硬盘对应的文件名(我机子只有一块硬盘),所以sdb就是U盘对应的文件名了,可以看到是sdb4。
查看U盘设备名称,在install centos 7 选项上按下e键进行编辑;修改启动的引导内容即可完成;
至此我们重启一下,回到第一个图片所示的界面处,然后按下Tab键
将vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet 
改为:vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quite

操作系统基础

硬件----》kernel内核---》library,API接口-----》应用程序;
application program interface;不同的操作系统库是不一样的;
CPU有四个级别,最内层是特权级别,只有内核才能运行。应用程序是无法直接操作0级别的。    

linux系统基础

shell:shell,bash shell,csh,ksh,zsh,tcsh;不同shell操作命令可能不同。一般是bash。
用户登陆:有个UID进行标识,系统是根据UID来进行识别不同用户的。
注意:为了最大化发挥应用程序的性能,最好是不要用别人已经编译好的进行安装,由于编译过的应用程序
      可能无法很好的结合你现有的硬件,所以,为了最大化发挥软件效果最好使用源码进行编译安装、运行。
       gentoo这个系统很多是需要进行重新编译的。
发行版:fedora,redhat,centos,suse,debian(ubuntu,mint),gentoo,LFS(构建一个linux)    

linux文件管理命令

目录管理:
    ls:
    cd:
    pwd:
    mkdir:
    rmdir:
    tree:
文件管理:
    touch:
    stat:
    file:
    rm:
    cp:复制一个文件到一个文件或者多个文件到一个目录。如果是链接文件默认复制是链接的那个文件,而并非该链接默认-l。
    选项:-r:复制目录。-a:复制该文件及其属性,常用于备份。-f:强制复制。-d:保持链接。
    注意:一般来说谁复制的一般归属在该用户下的。-p来保留原来文件的归属属性。
    eg:# cp anaconda-ks.cfg /opt/my  
    mv:命令,移动一个文件或者目录到目标位置(重命名功能)。
    install:复制一个文件并且可以指定其中属性。创建目录
    选项:-d:用来创建目录。
    nano:
日期时间:
    date:
    clock:
    hwclock:
    cal:
文本查看:
    cat:连接并显示文件,多个文件可以进行连接。从标准输入读取内容,从标准输出进行输出。
        选项:-n:显示行号;-E:end显示每一行的行结束符,linux结束符$,windows为$\n
              -A:显示所有内容。
    tac:内容与cat相反,从尾部显示到头部。
    more:查看文件内容,可以使用;
    less:经常使用查看文件的命令。可以向前向后翻。
    head:查看前n行,默认是10;
         选项:-n num:加行数;
    tail:查看文件末尾n行,默认是10;
        选项:-f:显示文件内容并不马上退出,(可以实时查看尾部新内容进行显示的);
                非常有用的命令,日志什么的都可以使用这个进行实时操作。
文本处理:
    cut:文本处理,连接使用join。文本切割。
        选项:-d 分隔符:使用什么进行分隔的,指定分隔符,默认是空格;
              -f 字段值:显示第几个字段。-f 1,3:显示第一列和第三列;-f 1-3:显示从第一列到第三列。

        eg:文本文件内容:tom:123:程序员:未婚:/bin/bash;cut -d : -f 1-3 /etc/passwd
文本排序:
    sort:默认为升序,sort 文本文件。根据ascii码进行排序的。可以指定分割符然后进行字段排序。
    选项:-r:反向排序。-n:按照数字大小进行排序。
         -t:指定分隔符。-k:表示以哪个字段为关键字进行排序。
         -u:相同内容相同行只是显示一个。
        -f:排序时忽略字符大小写。
         sort -t -k3 /etc/passwd      sort -t -k3 -n /etc/passwd:按照第三个字段进行数字方式排序。
    uniq:报告或者忽略相同的行。(只有相邻的相同的行才叫重复行)
    选项:-d:只显示重复的行。-D显示所有的重复的行。
         -c:显示每一行重复的次数。
文本统计:
    wc:(word count)文本统计命令。 wc /etc/fstab;   
    选项:-c:字节数;-m:字符数;-l:行数。-w:单词数。
    tr:转换或者删除字符。eg:tr 'ab' 'AB';使用输入重定向进行字符替换。tr 'ab' 'AB' < /etc/passwd
        tr 'a-z' 'A-Z' < /etc/passwd;
    选项:-d:删除出现在字符集中的所有字符。逐个字符进行处理的。     

bash特性

不同的shell运行,每个shell就是一个进程。在每个进程看来,当前主机上只存在内核和当前进程,看不到其他进程。
进程是程序的副本,进程是程序执行的实例。可以在shell进程中启动另一个shell进程。shell有父子进程。
可以使用“pstree”来查看进程之间的关系。

命令别名:为命令启用一个命令别名。在shell中定义的别名,仅仅在当前生命周期有效。
    alias查看别名。
    alias:alias cmdalias=command [options] [arguments]
            help alias
    eg:alias cls=clear alias ll="ls -l"

$(命令):将命令执行结果返回。命令替换。反引号:`命令`
    eg:echo "the current dir is $(pwd)"   返回当前目录的路径。
       touch ./file-$(date +%F-%H-%M-%S).txt   

bash支持的引号:
    ``:反引号,命令替换。
    "":弱引用,可以实现变量替换。
    '':强引用,不完成变量替换。

文件名通配:globbing。
    *,?,[],
命令行编辑:
ctrl+a:跳到命令行首。
ctrl+e:跳到行尾。    
ctrl+u:删除光标至命令行首的内容。
ctrl+k:删除光标至命令行尾的内容。
ctrl+l:直接清除屏幕;
命令历史
history:查看历史命令功能。命令历史在内存缓存中。退出shell后面就没有了,在内存中的命令会保存到文件中。
        在用户的根目录下:.bash_history文件中,存放着用户的命令历史。默认缓存保存1000条;
选项:-c:清空命令历史。
     -d 500:删除第500个。
     -d 500 10:删除从第500个接下来的10个。-d offset [n]
     -w:将缓冲区的命令写到文件中。
     echo $HISTSIZE  1000条。
     !n:执行命令历史中的第N条命令。
     !-n:执行命令历史中倒数第N条命令。
     !!:执行上一条命令;
     !string:执行命令历史中最近一个以指定字符串开头的命令。
     !$:引用前一个命令最后一个参数。
用户权限管理
机器识别用户根据每个用户的UID进行识别。识别用户组有个gid;
进程的安全上下文:每个用户发起操作计算机,就是发起进程,进程就是用户操作计算机的代理。
这个进程能访问那些权限,取决于操作这个用户的权限。

权限:rwx;
文件:r:可读,类似cat等命令查看文件内容。w:可写,可以编辑或者删除文件。x:可执行,可以命令提示符下当做命令提交给内核。

目录:
    r:可以对目录执行ls列出内部文件。w:可以创建文件。x:可以使用cd切换到次目录,可以使用ls -l查看内部文件详细信息;
用户:UID :数据库/etc/passwd;(用户名:密码:用户ID:基本组ID:家目录;执行shell)可以使用man /etc/passwd
    mysql:x:1000:1001::/home/mysql:/bin/bash
    memcache:x:1001:1002::/home/memcache:/bin/bash
    nginx:x:1002:1003::/home/nginx:/bin/bash
组:GID,/etc/group查看组的数据库;

影子口令:用户密码在/etc/shadow;组密码在/etc/gshadow

用户类别UID:
    管理员: 0 ; 普通用户: 1-65535 系统用户:1-499;一般用户:500 - 60000
用户组类别:
    私有组:创建用户时,如果没有指定所属组,系统会自动为其创建一个用户同名的组;
    基本组:用户的默认组;
    附加组:额外组,默认组以外的其他组;

程序执行的权限判断:
    进程运行:tom tom 使用该进程运行的用户和用户组来匹配对象(文件)中:rwxrw-r-- jerry tom a.txt
    tom用户执行:ls ,匹配到了其他用户权限,r-x;执行后进程ls 运行用户tom 组tom;
    对象:rwxr-xr-x root root /bin/ls
    使用ls a.txt;检测发起者tom的所属组;来匹配a.txt的权限。

whatis passwd查看passwd可以看出这个有几个级别的man;
    passwd (1)           - update user's authentication tokens
    sslpasswd (1ssl)     - compute password hashes
    passwd (5)           - password file(这个级别的就是用户密码文件)
man 5 passwd    可以查看/etc/passwd这个文件帮助信息;

查看密码文件:
    /etc/shadow     
    mysql:!!:16923:0:99999:7:::
    登陆账户:加密密码crypt(3):最后一次密码修改日期:1970年到现在的天数。
    最小密码天数:这个表示这个密码修改最小周期,这个周期内只能修改一次。
    最大密码天数:
    密码提醒警告;
    密码宽限期:在密码过期的情况下,宽限期,一定要修改密码后才能进行操作。
    账户到期日期;锁定账户。
    备用字段;

    whatis shadow;man 5 shadow查看密码文件帮助信息

加密方法:md5:128位定长。 sha1:160位定长。sha256;sha512;
    对称加密:同一个密码;
    公钥加密:非对称加密,公钥私钥对;
    单向加密:散列加密,提取数据特征码。常用语数据完整性校验。 

添加用户:
    [root@iZ233y80y23Z ~]# ls -l `which useradd`
    -rwxr-x--- 1 root root 114056 Mar  6  2015 /usr/sbin/useradd
    [root@iZ233y80y23Z ~]# ll `which adduser`
    lrwxrwxrwx 1 root root 7 May  2 12:17 /usr/sbin/adduser -> useradd  

    [root@iZ233y80y23Z ~]# cd /etc/default/
    [root@iZ233y80y23Z default]# ls
    grub  nss  useradd
    [root@iZ233y80y23Z default]# file useradd
    useradd: ASCII text
    [root@iZ233y80y23Z default]# cat useradd 
    # useradd defaults file
    GROUP=100   
    HOME=/home  //如果没有给用户指定家目录就是这个默认目录底下创建家目录
    INACTIVE=-1  //定义宽限期限
    EXPIRE=      //定义默认的过期期限
    SHELL=/bin/bash   //定义默认的shell
    SKEL=/etc/skel    //
    CREATE_MAIL_SPOOL=yes

用户组:
    cat /etc/group(用户组:密码:组ID:附加组)
    memcache:x:1002:

用户管理:
    useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage
组管理:
    groupadd,groupdel,groupmod,gpasswd
权限管理:
    chown,chgrp,chmod;
用户管理
useradd [option] USERNAME 用户添加。
【option】选项:
    -u UID:指定用户uid,记得要大于500,useradd -u 1000 userA
    -g 用户组:指定将要创建的用户的所属组,组名必须存在;useradd -g mygroup userA
    -G GID,... 可以为将要创建用户添加多个附加组,多个使用逗号隔开;
    useradd -G mygroup,group user3; tail /etc/group来查看组信息;
    -c "COMMENT":备注信息;
    -d /path/to/somedirectory 指定某个家目录;
    useradd -c "Tony blare" -d /home/bare user4;
    -s 指定shell路径。这个shell最好是/etc/shells底下的shell;一定是这个文件中的某一行。

    SKEL:运行shell中的骨架;环境配置文件。-m 指定skel骨架;
    [root@iZ233y80y23Z ~]# ll -a /etc/skel/
        -rw-r--r--   1 root root    18 Nov 20  2015 .bash_logout
        -rw-r--r--   1 root root   193 Nov 20  2015 .bash_profile
        -rw-r--r--   1 root root   231 Nov 20  2015 .bashrc
    -M :不给用户创建家目录。
    -r:添加一个系统用户。
环境变量:
    PATH  HISTSIZE SHELL;echo $SHELL查看当前用户shell;


userdel [option] USERNAME ;默认不会删除用户家目录 
    -r:同时删除用户家目录;

id [option] [USERNAME]:查看用户信息;不加任何信息展示当前用户信息;
finger USERNAME:查看用户账户信息;

usermod [option] USERNAME:修改用户账户属性,参数是跟useradd基本一样的。
    -L:锁定用户账户;
    -U:解锁用户账户;

chsh USERNAME:修改用户shell,默认shell;
chfn USERNMAE:修改备注信息的。
passwd USERNAME:密码修改。
    --stdin:标准的输入,从标准输入读取密码;
pwck:检查密码文件的完整性;pwck;pwcheck;

groupadd:创建组;
    -g:指定gid    -r 添加为系统组;
groupmod:-g GID:设置GID;-n GRPNAME:
groupdel删除一个组;
gpasswd:给组加上相关的密码;对于切换组的时候如果有设置密码需要输入密码;
newgrp:临时切换新的组作为当前用户的组;exit退出组;
chage:
    -d:最近一次修改时间
    -E:过期时间
    -I:非活动时间
    -m:最短使用期限。
    -M:最长使用期限。
    -W:警告时间。
eg:
groupadd -g 3003 distro
groupadd linux
useradd -u 2002 -g distro -G linux mandriva
usermod -u 4004 -g linux -G distro,fedora mandriva
passwd -n 2 -x 50 fedora
usermod -s /bin/bash mandirva
useradd -r -s /sbin/nologin hbase
useradd -c "Fedora Community" -s /bin/tcsh fedora
用户权限
u:拥有者;g:所属组;o:其他用户
chown:改变文件所属用户。chown feddora nohup.c;文件和目录都可以直接操作。
    -R:修改目录及其内部文件的所属主。
    --reference=/path/to/somefile file,...:参照权限,参照某个文件的权限来设置文件权限。
    chown USERNAME:GROUPNAME file,...修改拥有者和所属组。
    chown USERNAME.GROUPNAME file,...同上。
chgrp:修改用户所属组;
        -G:修改目录及其内部文件的所属组。
chmod:修改文件权限。       
    -R ,--reference=/path/to/somefile file,...
    修改某类用户权限;u,g,o,a
    chmod u=rwx,g=rw,o=r-x file;修改用户权限。
    chmod u-x,g-w,o+w file:修改用户的某位权限。+-符号。
    a选项:表示三类用户的权限统一设置。
练习:
    新建一个没有家目录用户test  #useradd -M test
bc:计算器;scale=2:保留两位的精度。
whatis passwd:查看命名相应的帮助信息。

umask:权限掩码。创建文件就是666-umask  目录就是777-umask
注意:文件默认不能具有执行权限,如果算得的结果中有执行权限,会将其权限加1;默认一定不会有执行权限。

在用户登录的角度来说,shell的类型:
    登录式shell:正常通常某终端登录,su - USERNAME su -l USERNAME;
    非登录式shell:su USERNAME,图形终端下打开命令窗口,自动执行的shell脚本。

bash的配置文件:
    全局配置:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc;对所有用户生效。
    个人配置:~/.bash_profile,~/.bashrc;个人用户生效。

profile类的文件:
    设定环境变量。放在全局对所有用户生效。放在个人只对个人有用。
    运行命令或者脚本。
bashrc类的文件:
    设定本地变量。
    定义命令别名。

登录式shell如果读取配置文件:
    /etc/profile---->/etc/profile.d/*.sh--->~/.bash_profile--->~/.bashrc--->/etc/bashrc
非登录式shell读取配置文件:
    ~/.bashrc--->/etc/bashrc-->/etc/profile.d/*.sh
    由于非登录shell不读取用户环境配置文件等配置文件。所以,相当于半切换。
修改配置文件并使用命令:source来重新加载配置文件。
bash. 脚本解释器。
管道与IO重定向
程序:指令和数据。
控制器:运算器;存储器;
地址总线:内存寻址。数据总线:传输数据;控制总线:控制指令;
寄存器:CPU暂时存储器。   
系统设定:
    默认输出设备,标准输出,stdout,1;默认键盘
    默认输入设备,标准输入,stdin,0:显示器
    标准错误输出,stderr,2:显示器
I/O重定向:
    改变数据的输出、输入来源。
linux:重定向>:覆盖输出,>>追加输出,<来表示。

set:linux的设置命令。设置某些功能开关。set -C,set +C;
 type set
    set is a shell builtin

输出重定向:
    ls /varr > /tmp/var.out 2> /tmp/err.out对正确或者错误的都输出到文件中。
    &>:重定向标准输出或者错误输出到同一个文件中;
    ls /var6 &> /tmp/var5.out
输入重定向:
    cat < /etc/fstab
    tr 'a-z' 'A-Z' < /etc/fstab
<<:此处文档,没有什么追加输入的。  
cat << END
    the first line
    the second line
    END
[root@iZ233y80y23Z test]# cat >> /data/test/input.txt << EOF
> this is first line
> this is second line
> EOF
[root@iZ233y80y23Z test]# cat input.txt 

管道:
把前面的结果作为后一个命令的输入;前一个命令的输出作为后一个命令的输入。、
# echo 'hello world' | tr 'a-z' 'A-Z'
# cut -d: -f3 /etc/passwd | sort

tee:从标准输入读取数据并且写到标出输出;
[root@iZ233y80y23Z test]# echo "hello, world" | tee /data/test/tee.txt
hello, world
使用管道来切换到所要的结果。
[root@iZ233y80y23Z test]# wc /etc/passwd
  35   65 1722 /etc/passwd
[root@iZ233y80y23Z test]# wc -l /etc/passwd
35 /etc/passwd
[root@iZ233y80y23Z test]# wc -l /etc/passwd | cut -d' ' -f1     
file *:查看该目录下所有文件的属性;

tee.txt:   ASCII text
[root@iZ233y80y23Z test]# file `ls /var/log`
agent.log:         cannot open (No such file or directory)
anaconda:          cannot open (No such file or directory)  

head -6 /etc/inittab | tail -1
tail -9 /etc/passwd | head -1 | cut -d: -f7 | tee /tmp/users    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值