Linux 常用命令

来源:互联网 发布:ubuntu kylin垃圾 编辑:程序博客网 时间:2024/06/10 00:02


Linux  常用命令整理

1. history

   1.1 history 列出以前用过的系统命令。

   1.2 history 列出的系统命令太多,如果项筛选请用下边命令组合。

       history | grep find

       ※即过去用过的包含[find]的命令

   1.3 按回车键,一行一行显示过去用过命令。

       history | more

       或

       history | less

2. find

  Linux中find常见用法示例

  find path -option  [-print -exec -ok command] {} \;

  find命令的参数:

  path: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
  -print:find命令将匹配的文件输出到标准输出。
  -exec:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;注意{ }和\之间的空格。
  -ok和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

  #-print 将查找到的文件输出到标准输出
  #-exec command {} \;    将查到的文件执行command操作,{}和\之间有空格
  #-ok 和-exec相同,只不过在操作前要询用户
  例:find . -name .svn | xargs rm -rf

2.1 xargs 与 -exec 使用区别
   ⑴ 在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。Find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。在有些系统中,使用  -exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
   ⑵ 使用例
      find . -name *.svn | xargs rm -rf
      find . -name *.svn -exec rm -rf {} \;
   ⑶ 缺省时-print
      find . -name [a-z]*.c -print
      和
      find . -name [a-z]*.c
      结果完全一样。
      find . -name "[a-z]*"  可以
      find . -name [a-z]*    不可以
2.2 按照文件权限查找 -perm   
    find . -perm 755 -print
    find . -perm 007 -print
    ※ -print可以不要
2.3 如果查找时排除不必要查找的项目 -prune
    find ./ -path "./test"  -prune -o -name "*.c" -print
2.4 按用户查找 -user
    find . -user root
    find ~ -user root   ※root 登录的路径下

3.0 用户和组管理
   3.1 用户及用户组的详细信息:
    ① cat /etc/passwd
    表示用户内容格式:注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序 。以root用户为例。root是用户注册名,X表示密码保存在/etc/shadow,用户ID为0,所在用户组ID为0,用户名是root,home目录为/root,解释程序/bin/bash。
    组:
    ② cat /etc/group
    表示用户内容格式: 组名:密码保存位置:组ID:组成员。以root用户组为例,即组名是root,密码保存位置为/etc/gshadow,root组的GID为0,组下面的用户是root用户。
    3.2 用户及用户组ID及PW查找方法:
       grep libaoan /etc/passwd /etc/shadow
       grep libaona /etc/group  /etc/gshadow
    3.3 组和用户追加操作:
       groupadd G_TEST
       useradd -g G_TEST u_TEST01
       passwd u_TEST01  ※回车后,输入密码 两次。
       ※以上创建的用户可以登录
       以下方法创建的用户不能登录:
       useradd -g group1名 -G group2名 -u 580 -s /sbin/nologin 用户名
       ※ -u 580 用户ID
          -s /sbin/nologin  不能登录
       创建用户时也可以指定组ID
       groupadd -g 600 用户名
       ------------添加用户时有以下规则文件设定规则------------------------------------------
    etc/default/useradd 通过useradd 添加用户时的规则文件
   [root@yufei ~]# vim /etc/default/useradd
    # useradd defaults file

    GROUP=100             #主组的GID也是从100开始的
    HOME=/home            #把用户的家目录建在/home中,这个目录也可以自己设定
    INACTIVE=-1             #是否启用密码过期后是否会失效,-1表示密码永远不会失效。如10,则代表过期10天后才失效。
    EXPIRE=                    #帐号终止日期,不设置表示不启用
    SHELL=/bin/bash       #所用SHELL的类型
    SKEL=/etc/skel           #用户家目录里面文件的参照位置。也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
    CREATE_MAIL_SPOOL=yes    #创建用户的邮件池。相当于一个用户的邮箱

-------------------------------------------------------------------------------------------------

     /etc/skel/ 增加用户时候,用户家目录下的文件来源。此目录下的文件都是隐藏文件。

    [root@yufei ~]# ls -la /etc/skel/
    total 36
    drwxr-xr-x.  4 root root  4096 Dec 15 22:41 .
    drwxr-xr-x. 96 root root 12288 Jan  7 13:40 ..
    -rw-r–r–.  1 root root    18 Jun 22  2010 .bash_logout
    -rw-r–r–.  1 root root   176 Jun 22  2010 .bash_profile
     -rw-r–r–.  1 root root   124 Jun 22  2010 .bashrc
    drwxr-xr-x.  2 root root  4096 Jul 14 23:55 .gnome2
    drwxr-xr-x.  4 root root  4096 Dec 15 22:35 .Mozilla

------------------------------------------------------------------

/etc/login.defs 创建用户时的一些规划。比如创建用户时,是否需要家目录,UID和GID的范围,用户的期限等等。
[root@yufei ~]# vim /etc/login.defs
MAIL_DIR        /var/spool/mail #创建用户时,要在目录/var/spool/mail中创建一个用户mail文件

PASS_MAX_DAYS   99999        #用户的密码不过期最多的天数
PASS_MIN_DAYS   0            #密码修改之间最小的天数
PASS_MIN_LEN    5            #密码最小长度
PASS_WARN_AGE   7            #警告时间

UID_MIN                   500    #UID从500开始
UID_MAX                 60000    #最大UID为60000

GID_MIN                   500    #GID从500开始
GID_MAX                 60000    #最大GID为60000

CREATE_HOME     yes            #是否创用户家目录

UMASK           077            #创建用户家目录时候的默认权限限制

USERGROUPS_ENAB yes            #用userdel删除用户的时候,如果这个主组中没有其他用户,那么也把这个组给删除
ENCRYPT_METHOD SHA512        #用户密码的加密方式为SHA512

-------------------------------------------------------------------------------------

passwd
格式:passwd [OPTION...] <accountName>
-l  :是Lock的意思,会将 /etc/shadow 第二栏最前面加上”!”使密码失效
-u :与-l相对,是Unlock的意思
-S :列出密码相关参数,即shadow文件的大部分信息
-n :后面接天数,shadow的第4字段,不可修改密码天数
-x :后面接天数,shadow的第5字段,多长时间内必须要修改密码
-w :后面接天数,shadow的第6字段,密码过期前的警告天数
-i  :后面接日期,shadow 的第7字段,密码失效日期
---------------------------------------------------------------------------------
[root@yufei ~]# usermod -h
Usage: usermod [options] 用户名   

-c :后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d :后面接账号的家目录,即修改/etc/passwd的第六栏
-e :后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八栏
-f :后面接天数,修改shadow的第七栏
-g :后面接主群组,修改/etc/passwd的第四个字段,即是GID的字段
-G :后面接附加群组,修改这个使用者能够支持的群组,修改的是/etc/group【附加群组只能有一个】
-a :与 -G 合用,可增加附加群组的支持而非设定
-l :后面接账号名称。修改账号名称,/etc/passwd的第一栏
-s :后面接Shell的文件,例如/bin/bash或/bin/csh等等
-u :后面接 UID 数字,修改用户的UID /etc/passwd第三栏
-L :暂时将用户的密码冻结,让他无法登入。其实就是在/etc/shadow的密码栏前面加上了“!”
-U :将/etc/shadow 密码栏的“!”去掉

例:

修改用户的说明信息

[root@localhost mail]# grep u_TEST01 /etc/passwd
u_TEST01:x:1001:1001::/home/u_TEST01:/bin/bash
[root@localhost mail]# usermod -c "message test" u_TEST01
[root@localhost mail]# grep u_TEST01 /etc/passwd
u_TEST01:x:1001:1001:message test:/home/u_TEST01:/bin/bash

修改过期日期:

[root@localhost mail]# grep u_TEST01 /etc/shadow
u_TEST01:$1$0VsklQ8e$etiB5KgRRTQ1NHOPgpz7B0:17099:0:99999:7:::
[root@localhost mail]# usermod -e "2018-01-01" u_TEST01
[root@localhost mail]# grep u_TEST01 /etc/shadow
u_TEST01:$1$0VsklQ8e$etiB5KgRRTQ1NHOPgpz7B0:17099:0:99999:7::17532:

-----------------------------------------------------------------------------------------

[root@localhost ~]# userdel -h
Usage: userdel [options] LOGIN

Options:
  -f, --force                       强制删除,谨慎使用。
  -r, --remove                   删除用户登录路径和mail信息

删除之前要确认下列信息: 

用户账号/密码相关参数:/etc/passwd, /etc/shadow
用户相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username

必要时要【find / -user username】检索用户所有信息进行确认。

---------------------------------------------------------------------------------------------------

[root@localhost ~]# groupmod -h
Usage: groupmod [options] GROUP

Options:
  -g, --gid GID                                   变更组ID
  -n, --new-name NEW_GROUP      变更组名

例:

[root@localhost ~]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST01:x:1003:
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST01:!::

[root@localhost ~]# groupmod -g 1003 -n G_TEST03 G_TEST01
[root@localhost ~]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST03:x:1003:
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST03:!::
[root@localhost ~]#
--------------------------------------------------------------------------------------------------------------------------------

[root@localhost CTECHNO]# gpasswd -h
Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                   向组里添加用户
  -d, --delete USER               从组里删除用户
  -r, --delete-password          删除组的PW
  -R, --restrict                        限制组员访问
  -M, --members USER,...     向组里加入成员列表(多个)

  -A, --administrators ADMIN,...设置则管理员列表(多个)

  例:

[root@localhost CTECHNO]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST03:x:1003:
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST03:!::
[root@localhost CTECHNO]# groupadd G_TEST00
[root@localhost CTECHNO]# useradd u_TEST00
[root@localhost CTECHNO]# passwd u_TEST00
Changing password for user u_TEST00.
[root@localhost CTECHNO]# gpasswd -a u_TEST00 G_TEST00
Adding user u_TEST00 to group G_TEST00
[root@localhost CTECHNO]# useradd u_TEST99
[root@localhost CTECHNO]# passwd u_TEST99
[root@localhost CTECHNO]# gpasswd -a u_TEST99 G_TEST00
Adding user u_TEST99 to group G_TEST00
[root@localhost CTECHNO]# grep G_TEST /etc/group /etc/gshadow
/etc/group:G_TEST:x:1001:
/etc/group:G_TEST02:x:1002:u_TEST02,u_TEST03,u_TEST06
/etc/group:G_TEST03:x:1003:
/etc/group:G_TEST00:x:1004:u_TEST00,u_TEST99
/etc/gshadow:G_TEST:!::
/etc/gshadow:G_TEST02:!::u_TEST02,u_TEST03,u_TEST06
/etc/gshadow:G_TEST03:!::
/etc/gshadow:G_TEST00:!::u_TEST00,u_TEST99
[root@localhost CTECHNO]#

[root@localhost CTECHNO]# gpasswd G_TEST00
Changing the password for group G_TEST00
New Password:
Re-enter new password:
[root@localhost CTECHNO]#

------------------------------------------------------------------------------------------------------------

1. 以下の例では、変数「TEST」の中身を「test1234」から「test5678」に置換している。
#!/bin/sh
TEST="test1234
test1234"
TEST=`echo "$TEST" | sed s/1234/5678/g`
echo "$TEST"

sed -e s/置換条件/置き換え条件/ 対象ファイル
         または
echo $変数名 | sed -e s/置換条件/置き換え条件/

のように記述する。たとえば,「.txt」を「.doc」に置換したい場合は,
$ file_name="linux.txt"
$ echo $file_name | sed -e "s/\.txt/.doc/"
linux.doc


テキスト・ファイル内の「Nikkei Linux」を「日経Linux」に変換する
$ sed -e "s/Nikkei Linux/日経Linux/g" source.txt
 

2.テキスト・ファイルの5~10行目を削除する
$ sed -e "5,10d" source.txt

3.「Error」がある行に,「### Check Line ###」という新しい行を追加する
$ $ sed -e "/Error/i #### Check Line ###" source.txt

4.cut Command
    cut -c2-8 ファイル名
 ※ファイル毎行の2から8まで文字
 cut -b2-8 ファイル名
 ※ファイル毎行の2から8までバイナリ文字
 cut -d' ' -f2-8 ファイル名
 ※ファイル毎行の2から8まで単語,切り分けはスペース
 例えば
 user and pw
   cat /etc/passwd | gawk -F \: '{print $1}'  //pw  -F 区きり文字指定フラグ;\:(\がなくでもいい);$1区きりリストのフィールドの1です。
   cut -d : -f 1 /etc/passwd                 //user
   ※ -d 区きり文字 デフォルトは<TAB>
    -f n  フィールドリスト デフォルト区切り文字は<TAB>; nはフィールドの順位番号 (-f 1-5)

   -s, --only-delimited
       -f と一緒に用いると、フィールドの区切り文字を含まない行を表示しない
    ※-sがない場合、区きり無の行は全て表示する、ある場合、表示しないです。


5. JUMP TO LINE nG
   n: 行数
6. tar
   圧縮 tar -cvzf archive.tar.gz file1 file2   // ./testfolder
  解凍 tar -xvzf archive.tar.gz

7. echo $環境変数名 //環境変数名表示

8. ps -aef | grep aucdrsearch
  /bin/ps -aef | /bin/grep 'aucdrsearch' | /bin/grep 'ch' | /bin/grep -cve grep -e sh
  全てプロセス  「aucdrsearch」を含む   更に「ch」を含む     grep 数「-e sh」がなくでも問題がないです。

9.Linux Command 連続実行 $ date; id ; uname -n ; whoami;

10. 設定環境半数:
export LANG=ja_JP.eucJP
export LANG=en_US.UTF-8

11. 表示環境変数:
 echo $LANG

  削除環境変数:
 unset LANG

12.os version
   cut /proc/version
   cat /etc/redhat-release
   cat /etc/issue





0 0
原创粉丝点击