08/13
2016

##linux、mac命令

  1. lsof
  2. ps
  3. 管道 xargs
  4. 讲一下linux下的用户、组、其他
  5. linux的标准输入、标准输出、标准error
  6. tr命令

###1. lsof 展示linux上所有opened files,在linux所有都是文件。lsof /test 默认显示包含test/下的打开的文件

注意:-uzhang-u zhang这两种是一样的

  1. lsof -uzhang:列出所有属于zhang的文件
  2. lsof -aUuzhang:-a是链接-U和-u两个命令
  3. lsof -g573:列出说有进程组(pgid)(progress group Id)是573的进程,在Linux中,所有的进程都有一个隶属的进程组
  4. lsof -i:8080:列出所有地址匹配:8080的文件。-i后面可以是这些[46][protocol][@hostname|hostaddr][:service|port](注意[46]代表ip version),-i只用于match
  5. lsof -d <文件描述符FD> 列出占用该文件号的进程,FD有cwd、txt、pd、0(标准输出)、1(标准输入)、2(标准错误)等等
  6. lsof +d <目录> 列出目录下被打开的文件
  7. lsof +D <目录> 递归目录下被打开的文件
  8. lsof -c Google:列出所有以Google为开头打开的进程
  9. losf -p : 列出所有pid进程打开的文件

###2. ps ps默认列出由终端控制的当前用户的进程,(即终端启动的进程)

  1. ps u:展示用户信息
  2. ps a:列出所有用户的终端进程
  3. ps x:列出当前用户的所有进程,不以终端进程来区分

a u x这三个可以自由组合

###3. 管道| 与 | xargs

  1. 管道 是指把上一个命令作为下一个命令的标准输入
  2. xargs是指将上一个命令作为下一个命令的参数
  3. 这就是标准输入和命令参数的区别;比如对于grep作为命令参数传入的话,会在参数这个文件里查找;若对于grep作为标准输入的话,只会查找上一个命令输入的内容,如文件名列表

###4. 讲一下linux下的用户、组、其他

####linux

    /etc/group保存了用户组信息
    root:x:0:root,linuxsir
    用户组名称:用户组密码(x表示没密码):用户组gid:用户组的下的用户(,分隔)以及其他gid=0的用户
    /etc/passwd保存了用户信息
    root:*:0:0:System Administrator:/var/root:/bin/sh
    用户名:密码:用户uid:组gid:主目录:登录shell

####mac下使用dscl命令

常用的包括:

    $ dscl . list /users
    $ dscl . list /groups
    $ dscl . readall /users
    $ dscl . readall /groups
    $ dscl -plist . readall /users
    $ dscl -plist . readall /groups

####关于用户、组、其他

  • 用户:当前用户
  • 组:当前用户所在的组
  • 其他:其他用户
  • 往往一些程序如mysql会创建_mysql用户组和_mysql用户,当进行mysql的操作是,mysql会以_mysql身份进行操作

####chmod命令:修改文件的访问权限

通用格式:chmod [ugoa][+-=][rwxXst][ugo]

  • [ugoa]:设置修改文件的哪一部分权限需要修改,u表示用户、g表示组、o表示其他,a表示所有,默认是a;可以选择这里面的1-3个
  • [+-=]:表示修改的权限,+表示增加、-表示删除、=表示设置
  • [rwxXstugo]:表示需要修改的权限类别:r是可读、w可写、x可执行,ugo表示ugo对应的权限

    • s:The set-user-ID-on-execution and set-group-ID-on-execution bits,对表示当前文件执行的时候,使用授予权限的用户或者组身份执行,一旦结束,退出授予权限的用户或者组身份;
    • t:粘性位,表示对于同一个目录,如果设置了粘性位,普通用户只能删除目录下属于自己的文件,即使被赋予了读写权限,也不能随意删除其他用户的文件。

#####采用4位8进制设置文件的模式abcd

  • a表示【s/t】(4表示set-uid,2表示set-gid,1表示粘性位)
  • b表示u的权限
  • c表示g的权限
  • d表示o的权限
  • 通常只要bcd三位,可以不设置a位。其中r=4,w=2,x=1,(可以自由相加)

eg:

    chmod a+x chx
    chmod 4775 chx
    chmod 644 chx

####chown:修改文件的拥有者为指定的用户或者组

通用格式: chown [选项] [owner][:[group]] files

  • 选项:-R:循环处理指定目录以及其目录下的所有文件
  • [owner][:[group]]:如果是owner,表示只修改属主属性;如果是owner:group,表示同时修改属主、用户组;如果是owner:,表示修改为owner为属主,owner的用户组为文件的组;如果是:group,表示只修改组;

eg:

chown root: test.cfg (按照root的属主,root的用户组设置组属性)

###5. linux的标准输入、标准输出、标准error

  • 标准输入:0
  • 标准输出:1
  • 标准error:2

      echo 'log' > /dev/null 2>&1 // /dev/null特殊的不存在的输出, `>&`表示重定向等同于
    

###6. tr命令 tr [-csd] [‘string1’] [‘string2’] < file

tr是一个转换字符的命令:

    tr 'abc' 'cde' < file // 替换file中所有的'abc'为'cde'
    -c: 用字string1中字符集的补集替换此字符集,要求字符集为ASCII。
    -d: 删除
    -s: 删除所有重复的字符序列,只保留第一个字符。(必须是字符)

####7. linux文件描述符

  1. 对于linux而言,一个文件描述符只能被使用一次,然后就要重新定义,文件描述符被打开-》被关闭,一次结束。
  2. 和 >这个模式的区别,只在于文件描述符被打开的时候,是否重新定义光标的位置。>会重置光标的位置为开始,»在文件描述符被打开的时候在尾部定义光标的位置。

  3. 有些命令如cat命令,会执行一次打开、关闭的命令,之后文件描述符就不能用;而echo这些命令会一直打开,并且echo会使光标处于尾部,不会关闭文件描述符。
  4. 当调用自定义文件描述符的时候,需要在上面都加上&,&还可以表示等同于
作者:teazean 文章地址: