zoukankan      html  css  js  c++  java
  • Linux命令收集

     以下内容皆收集于网络

    1.rpm -qa 和 rpm -q

    查询一个包是否被安装# rpm -q < rpm package name>

    列出所有被安装的rpm package
    # rpm -qa
    e.g. rpm -qa|grep jdk

    2.grep

    在文本中查找字符串
    -i:搜索的时候忽略大小写
    -n:显示结果所在行号
    -c:统计匹配到的行数
    -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
    -v:输出不带关键字的行(反向查询,反向匹配)
    -w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配
    -Ax:在输出的时候包含结果所在行之后指定行数,这里是x行,A是after
    -Bx:之前的x行
    -Cx:之前和之后的x行
    -e:实现多个选项的匹配,逻辑or关系
    -q:静默模式,不输出任何信息,当只关心有没有匹配到而不关心匹配的内容时可以使用,然后用“echo $?”查看,0表示匹配到,1表示没匹配到
    -P:表示兼容perl的正则引擎
    -E:使用扩展正则表达式,而不是基本正则表达式,相当于使用egrep

    3.tar

    常用:tar -zxvf 压缩文件 -C 目标目录

    -c: 建立压缩档案
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件

    这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出

    下面的参数-f是必须的

    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

    # tar -cf all.tar *.jpg
    这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

    # tar -rf all.tar *.gif
    这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

    # tar -uf all.tar logo.gif
    这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

    # tar -tf all.tar
    这条命令是列出all.tar包中所有文件,-t是列出文件的意思

    # tar -xf all.tar
    这条命令是解出all.tar包中所有文件,-t是解开的意思

    压缩

    tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar 

    tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

     tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

    tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

    rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

    zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

    解压

    tar -xvf file.tar //解压 tar包

    tar -xzvf file.tar.gz //解压tar.gz

    tar -xjvf file.tar.bz2   //解压 tar.bz2

    tar -xZvf file.tar.Z   //解压tar.Z

    unrar e file.rar //解压rar

    unzip file.zip //解压zip

    -C

     在打包的时候 -C 指定目录,从而不把目录打包进文件名字里

    用这个命令:tar zcvf chao.tar.gz /chao/*  打包文件的时候,在压缩包里把  /chao/这个路径也打包进去了。

    复制代码
    [root@yunwei-test chao]# ls /chao/
    01.txt  02.txt  03.txt  04.txt  05.txt  06.txt  07.txt  08.txt  09.txt  10.txt
    
    [root@yunwei-test chao]# tar zcvf /tar/chao.tar.gz /chao/*
    tar: Removing leading `/' from member names
    /chao/01.txt
    /chao/02.txt
    /chao/03.txt
    /chao/04.txt
    /chao/05.txt
    /chao/06.txt
    /chao/07.txt
    /chao/08.txt
    /chao/09.txt
    /chao/10.txt
    
    [root@yunwei-test chao]# ls /tar/
    chao.tar.gz
    
    #解压
    [root@yunwei-test chao]# cd /tar/
    [root@yunwei-test tar]# ls
    chao.tar.gz
    [root@yunwei-test tar]# tar xf chao.tar.gz 
    [root@yunwei-test tar]# ls
    chao  chao.tar.gz
    [root@yunwei-test tar]# cd chao/
    [root@yunwei-test chao]# ls
    01.txt  02.txt  03.txt  04.txt  05.txt  06.txt  07.txt  08.txt  09.txt  10.txt
    复制代码

    我想不要路径,我不想切换目录过去,而又只想打包指定目录下的文件。 使用 -C 参数。 

    复制代码
    ##打包
    [root@yunwei-test chao]# tar zcvf /tar/chao.tar.gz -C /chao . ./ ./01.txt ./02.txt ./03.txt ./04.txt ./05.txt ./06.txt ./07.txt ./08.txt ./09.txt ./10.txt [root@yunwei-test chao]# ls /tar/ chao.tar.gz [root@yunwei-test chao]# cd /tar/ [root@yunwei-test tar]# ls chao.tar.gz

    #解压 [root@yunwei-test tar]# tar xvf chao.tar.gz ./ ./01.txt ./02.txt ./03.txt ./04.txt ./05.txt ./06.txt ./07.txt ./08.txt ./09.txt ./10.txt [root@yunwei-test tar]# ls 01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt 08.txt 09.txt 10.txt chao.tar.gz
    复制代码

     在解压的时候 -C 是解压到指定目录中。

    4.软连接

    ln  -s  源文件 软链接文件

    软链接是创建的,就意味着软链接文件不可以在创建之前存在

    要使用绝对路径

    ln -s /bigdata/application/jdk1.8.0_231/ /usr/local/jdk

    5.chown

    指令名称 : chown 使用权限 : root(一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限可以自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。) 
    使用方式 : chown [-cfhvR] [--help] [--version] user[:group] file… 
    利用 chown 可以将档案的拥有者加以改变。这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 
    参数:

    -c或-change:作用与-v相似,但只传回修改的部分 
    -f或–quiet或–silent:不显示错误信息 
    -h或–no-dereference:只对符号链接的文件做修改,而不更改其他任何相关文件 
    -R或-recursive:递归处理,将指定目录下的所有文件及子目录一并处理 
    -v或–verbose:显示指令执行过程 
    –dereference:作用和-h刚好相反 
    –help:显示在线说明 
    –reference=<参考文件或目录>:把指定文件或目录的所有者与所属组,统统设置成和参考文件或目录的所有者与所属组相同 
    –version:显示版本信息 
    chown命令使用举例:(像我用的vps,就要先ssh登录)

    # chown [-R] [用户名称] [文件或目录] 
    # chown [-R] [用户名称:组名称] [文件或目录]

    范例1:将test3.txt文件的属主改为test用户。 
    # ls -l test3.txt 
    -rw-r–r– 1 test root 0 2009-10-23 9:59 test3.txt 
    # chown test:root test3.txt 
    # ls -l test3.txt 
    -rw-r–r– 1 test root 0 2009-10-23 9:59

    范例2:chown所接的新的属主和新的属组之间可以使用:连接,属主和属组之一可以为空。如果属主为空,应该是“:属组”;如果属组为空,“:”可以不用带上。

    # ls -l test3.txt 
    -rw-r–r– 1 test root 0 2009-10-23 9:59 test3.txt

    # chown :test test3.txt <==把文件test3.txt的属组改为test 
    # ls -l test3.txt 
    -rw-r–r– 1 test test 0 2009-10-23 9:59 test3.txt

    范例3:chown也提供了-R参数,这个参数对目录改变属主和属组极为有用,可以通过加 -R参数来改变某个目录下的所有文件到新的属主或属组。 
    # ls -l testdir <== 查看testdir目录属性 
    drwxr-xr-x 2 usr root 0 2009-10-56 10:38 testdir/ <==文件属主是usr用户,属组是 root用户 
    # ls -lr testdir <==查看testdir目录下所有文件及其属性 
    total 0 
    -rw-r–r– 1 usr root 0 2009-10-23 10:38 test1.txt 
    -rw-r–r– 1 usr root 0 2009-10-23 10:38 test2.txt 
    -rw-r–r– 1 usr root 0 2009-10-23 10:38 test3.txt 
    # chown -R test:test testdir/ <==修改testdir及它的下级目录和所有文件到新的用户和用户组 
    # ls -l testdir 
    drwxr-xr-x 2 test test 0 2009-10-23 10:38 testdir/ 
    # ls -lr testdir 
    total 0 
    -rw-r–r– 1 test test 0 2009-10-23 10:38 test1.txt 
    -rw-r–r– 1 test test 0 2009-10-23 10:38 test2.txt 
    -rw-r–r– 1 test test 0 2009-10-23 10:38 test3.txt

    6.用户组和文件权限

    原文链接:https://www.cnblogs.com/123-/p/4189072.html

    用户组

    在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念

    - 所有者

    - 所在组

    - 其它组

    - 改变用户所在的组

     

    所有者

    一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

    用ls ‐ahl命令可以看到文件的所有者

    也可以使用chown 用户名 文件名来修改文件的所有者

     

    文件所在组

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

    用ls ‐ahl命令可以看到文件的所有组

    也可以使用chgrp 组名 文件名来修改文件所在的组

     

    其它组

    除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

     

    文件权限

    ls

     -l中显示的内容如下:

    -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc

    - 10个字符确定不同用户能对文件干什么

    - 第一个字符代表文件(-)、目录(d),链接(l)

    - 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

    - 第一组rwx:文件所有者的权限是读、写和执行

    - 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

    - 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行

    也可用数字表示为:r=4,w=2,x=1  因此rwx=4+2+1=7

    - 1 表示连接的文件数

    - root 表示用户

    - root表示用户所在的组

    - 1213 表示文件大小(字节)

    - Feb 2 09:39 表示最后修改日期

    - abc 表示文件名

     

    改变权限的命令

    chmod 改变文件或目录的权限

    chmod 755 abc:赋予abc权限rwxr-xr-x

    chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限

    chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限

    chmod a+r abc:给所有用户添加读的权限

     

    改变所有者(chown)和用户组(chgrp)命令

    chown xiaoming abc:改变abc的所有者为xiaoming

    chgrp root abc:改变abc所属的组为root

    chown root ./abc:改变abc这个目录的所有者是root

    chown ‐R root ./abc:改变abc这个目录及其下面所有的文件和目录的所有者是root

     

    改变用户所在组

    在添加用户时,可以指定将该用户添加到哪个组中,同样用root的管理权限可以改变某个用户所在的组

    - usermod ‐g 组名 用户名

    你可以用

    - usermod ‐d 目录名 用户名,改变该用户登录的初始目录

     

    【综合案例】

    【题1.1】建立两个用户组group1和group2,以及三个用户dennis、daniel、abigale,并且将前2个用户分配在group1用户组下,后一个分配在group2用户组下

     

    【题1.2】以dennis用户登录,创建一个Hello.java文件

    【题1.3】以daniel用户登录,观察是否可以访问/home/dennis目录以及读或写其创建的Hello.java文件

    【题1.4】以dennis用户登录,修改目录/home/dennis及Hello.java文件的读写权限(更正:修改目录权限的时候,应该使用770,而不是760,否则权限不足)

     

    【题1.5】重复【题1.3】

    【题1.6】改变abigale的用户组由group2变为group1

     

    然后,可以使用cat /etc/passwd查看并确定

     

    【参考】

    - groupadd 组名,在linux中添加组

    - vi /etc/group,查看linux中所有组信息,可以看可以编辑

    - cat /etc/group,查看linux中所有组信息,只可以看不可以编辑

    - useradd ‐g 组名 用户名,创建用户的同时指定将该用户分配到哪个组下

    - vi /etc/passwd,查看linux中所有用户信息,可以看可以编辑

    - cat /etc/passwd,查看linux中所有用户信息,只可以看不可以编辑

     

    7.chatter

     常见命令参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
    S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
    a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
    b:不更新文件或目录的最后存取时间。
    c:将文件或目录压缩后存放。
    d:当dump程序执行时,该文件或目录不会被dump备份。
    D:检查压缩文件中的错误。
    i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
    s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
    u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
    t:文件系统支持尾部合并(tail-merging)。
    X:可以直接访问压缩文件的内容。

        常用的命令展示

      chatter: 锁定文件,不能删除,不能更改
            +a:  只能给文件添加内容,但是删除不了,
                  chattr +a  /etc/passwd
            -d:      不可删除
            加锁:chattr +i  /etc/passwd       文件不能删除,不能更改,不能移动
            查看加锁: lsattr /etc/passwd      文件加了一个参数 i 表示锁定
            解锁:chattr -i /home/omd/h.txt    - 表示解除
            隐藏chattr命令:

    which chattr
    mv /usr/bin/chattr  /opt/ftl/
    cd /opt/ftl/ 
    mv chattr h    -->更改命令,使用别名h隐藏身份
    /opt/ftl/h +i /home/omd/h.txt   -->利用h 行驶chattr命令
    lsattr /home/omd/h.txt    -->查看加密信息
     

    恢复隐藏命令

     
    mv h /usr/bin/chattr
    chattr -i /home/omd/h.txt
    lsattr /home/omd/h.txt
     
     
     

    8.$#,$@,$0,$1,$2,$*,$$,$?

    脚本内容

     #!/bin/sh
    
    echo "number:$#"
    echo "scname:$0"
    echo "first :$1"
    echo "second:$2"
    echo "argume:$@"
    
    echo "show parm list:$*"
    echo "show process id:$$"
    
    echo "show precomm stat: $?"

    保存退出

     赋予脚本执行权限

     # chmod +x test

     执行脚本

     # ./test aa bb
    
    number:2
    scname:./test
    first:aa
    second:bb
    argume:aa bb
    
    show parm list:aa bb
    show process id:24544
    
    show precomm stat:0

    通过显示结果可以看到:

    $# 是传给脚本的参数个数

    $0 是脚本本身的名字

    $1 是传递给该shell脚本的第一个参数

    $2 是传递给该shell脚本的第二个参数

    $@ 是传给脚本的所有参数的列表

    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

    $$ 是脚本运行的当前进程ID号

    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

     

    linux /etc/rc.d/目录及rc.local的详解

    https://blog.51cto.com/efoni/2147018

    centos 系统禁止普通用户使用crontab命令

    cron计划任务默认root用户与非root用户都可以执行,当然如果在安全方面想禁用这部分用户,则可以通过两个文件来解决:

    cron.allow
    cron.deny
    cron.allow:定义允许使用crontab命令的用户
    cron.deny:定义拒绝使用crontab命令的用户

    这两个文件有优先级,普通用户在执行crontab命令的时候
    1、系统先检测cron.allow文件是否存在;如果存在,则检测文件中存在的用户中是否有当前用户,检测通过则开始执行,检测不通过直接提示该用户没有执行权限

    2、当系统没有检测到cron.allow文件存在的时候,则接下来检测cron.deny文件,看当前用户是否被deny掉,如果没有在cron.deny文件中检测到当前运行crontab的用户,则该命令可以成功执行,如果有检测到该用户在cron.deny文件中,则直接提示该用户没有执行权限

    案例1:只允许root和www用户执行crontab命令,其他用户则禁止执行
    在需要定义该策略的主机上面执行:
    echo “www” > /etc/cron.allow

    案例2:只拒绝anonymous用户执行crontab命令,其他用户都可以执行该命令:
    rm -f /etc/cron.allow
    echo “anonymous” > /etc/cron.deny

  • 相关阅读:
    Javascript FP-ramdajs
    微信小程序开发
    SPA for HTML5
    One Liners to Impress Your Friends
    Sass (Syntactically Awesome StyleSheets)
    iOS App Icon Template 5.0
    React Native Life Cycle and Communication
    Meteor framework
    RESTful Mongodb
    Server-sent Events
  • 原文地址:https://www.cnblogs.com/aidata/p/11703053.html
Copyright © 2011-2022 走看看