linux基础总结

来源:互联网 发布:windows运行python脚本 编辑:程序博客网 时间:2024/05/07 21:31

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 distrogroupadd linuxuseradd -u 2002 -g distro -G linux mandrivausermod -u 4004 -g linux -G distro,fedora mandrivapasswd -n 2 -x 50 fedorausermod -s /bin/bash mandirvauseradd -r -s /sbin/nologin hbaseuseradd -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 testbc:计算器;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 | sorttee:从标准输入读取数据并且写到标出输出;[root@iZ233y80y23Z test]# echo "hello, world" | tee /data/test/tee.txthello, world使用管道来切换到所要的结果。[root@iZ233y80y23Z test]# wc /etc/passwd  35   65 1722 /etc/passwd[root@iZ233y80y23Z test]# wc -l /etc/passwd35 /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 -1tail -9 /etc/passwd | head -1 | cut -d: -f7 | tee /tmp/users    
0 2
原创粉丝点击