Linux 基本操作命令

以下为《鸟哥的Linux私房菜》的学习总结

1.     转换语系

LANG=en

LANGUAGE=en

LC_ALL=en

LC_CTYPE=en

LC_TIME=en

2.     显示日期命令     date

           [root@sun ~]# date

Tue Aug  2 10:28:08 CST 2011

           date +%Y/%m/%d

           [root@sun ~]# date +%Y/%m/%d

2011/08/02

显示日历 cal

[root@sun ~]# cal

     August 2011   

Su Mo Tu We Th Fr Sa

 1  2  3  4  5  6

 7  8  9 10 11 12 13

14 15 16 17 18 19 20

21 22 23 24 25 26 27

28 29 30 31

cal [month] [year]

3.     Linux 文件属性与目录配置

更改所属用户组

chgrp [-R] dirname/filename …   -R 参数递归修改

更改文件拥有者

chown [-R] 用户名    文件名

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

更改文件属性

chmod [-R] filename  -rwx 对应4 2 1

           eg: chmod 777 filename // filename文件赋予 rwxrwxrwx权限

 

4.     Linux文件与目录管理

相对路径与绝对路径,不做过多解释;绝对路径是由根目录”/”写起的路径(我的理解)

.         表示当前目录

..        表示上一层目录

-         表示前一个工作目录

~        表示当前用户所在的家目录

~account   表示account用户的家目录

cd 切换目录

(我当前用户使root,计算机名sun

显示当前所在的目录    pwd

建立新目录      

mkdir [-mp] 目录名

           -m     设置文件的权限

           -p     帮助直接建立所需要的目录递归

删除“空”目录

rmdir [-p] dirname

           -p       与上层“空”目录一起删除

如果想删除非空的目录的话可以用 rm –rf test        -r表递归,-fforce(我认为的,没查)

但是不建议linux下面是用这个命令,一旦操作失误的话就惨了!!!

5.     管理文件与目录

查看文件和目录       ls

ls [-aAdfFhilRS] 目录名

ls [--color={none,auto,always}] 目录名

ls [--full-time] 目录名

参数

-a       :全部文件,包括隐藏文件一起列出来

-A      :全部文件,但不包括...这两个目录

-d       :进列出目录本身,而不是列出目录内的文件数据

-f        :直接列出结果,而不进行排序(默认会按照文件名排序)

-F       :根据文件、目录等信息,附加数据结构,

                     例如:*表示可执行文件,/表示目录,=表示套接字文件;|表示FIFO文件

-h       :列出文件大小

-i        :列出inode位置,而非列出文件属性

-l        :列出长数据串,包含文件的属性

-n       :列出UIDGID而非用户与用户

-r        :将排序结构反向输出

-R       :与子目录内容一起列出来

-S       :按文件大小

-t        :按时间排序

--color=never                           :不要按照文件属性用不同的颜色显示

--color=always                         :显示颜色

--color=auto                             :让系统自行按照设置来判断是否使用颜色

--full-time                       :以完整时间模式输出

--time={atime,ctime}           :输出访问时间或改变权限属性的时间(ctime)而不是改变内容的时间

复制文件或目录       cp

cp [-adfilprsu] source destination

cp [option] source1 source2 … directory

-a:相当于-pdr

-d:若源文件为链接文件属性,则复制链接文件属性,而非文件本身

-fforce,有问题不会询问用户,强制执行

-i:若目标文件已经存在,在覆盖时会先询问

-l:建立硬连接的连接文件,而非复制文件本身

-p:与文件属性一起复制,而不是使用默认属性

-r:递归复制,用于目录的复制操作

-s:复制成符号连接文件,也就是“快捷方式”

-u:若目标文件比源文件就,则更新目标文件

删除文件或目录       rm

rm [-fir] 文件或目录

-fforce,强制删除

-i:交互模式,在删除前会询问用户是否操作

-f:递归删除,用于目录的删除

移动文件、目录或重命名

mv [-fiu] source destination

mv [option] source1 source2 … directory

-f force

-i :若目标文件已经存在,询问是否覆盖

-u update

eg:mv mvtest mvtest1                  ç这样就重命名了

查看文件内容

cat    :由第一行开始显示文件内容

tac    :从文件的最后一行开始显示文件内容

nl     :显示的时候输出行号

more  :一页一页地显示文件内容

less   :与more相似,但可以向前翻页

head  :只看前几行

tail    :只看后几行

od    :以二进制方式读取文件

修改文件时间与创建文件:touch

与文件相关的时间

modification time(mtime, 修改时间):文件内容修改时(不是文件属性),便会改变这个时间

status time(ctime, 状态时间):当前文件的“状态”改变时,就会更新这个时间,比如更改权限与属性

access time(atime, 访问时间):当读取这个文件内容时,就会更新这个读取时间

touch [-acdmt] filename

-a :仅修改access time

-c :仅修改时间,而不建立文件

-d :后面可以接日期,也可以使用 --date=”日期或时间

-m :仅修改mtime

-t :后面可以接时间,格式为[YYMMDDhhmm]

搜索文件

寻找执行文件 which

which [-a] cmd

-a:将所有可找到的命令均列出,而不仅仅列出找到的第一个命令

寻找特定文件 whereis

whereis [-bmsu] 文件或目录名

-b:只找二进制文件

-m:执照有帮助文件manual路径下的文件

-s:只找源文件

-u:没有帮助文件的文件

locate

locate filename,完整路径中含有filename的全部选出来

find

find [PATH] [option] [action]

参数:

与时间有关的参数

-atime n n为数字,在n天之前的一天内访问过(access)的文件

-ctime n n为数字,在n天之前的一天内修改过状态(change)的文件

-mtime n n为数字,在n天之前的一天内访修改的(modification)文件

-newer filefile为一个存在的文件,列出比file新的文件

与用户或用户组名称有关的参数

-uid n  n为数字,这个数字是用户的帐号ID,即UID,这个UID是记录在/etc/passwd与帐号对应的数字

-gid n   :用户组

-user namename为用户帐号名称

-group namename为用户组名称

-nouser:查找文件的拥有者不再/etc/passwd中的文件

-nogroup:查看文件的拥有用户组不再/etc/group中的文件

与文件权限及名称有关的参数

-name filename:搜索文件名为filename的文件

-type TYPE:搜索文件类型为TYPE,类型主要有:一般正规文件(f),设备文件(b,c),目录文件(d),连接文件(l),套接字(s),及FIFO(p)等属性

-size [+-]SIZE:搜索比SIZE还要大[+]或小[-]的文件。    SIZE规格有cbytek

-perm mode:搜索文件属性“刚好等于”mode的文件,这个mode类似于chmod的属性值,比如-rwxr-xr-x的属性值为4755

-perm -mode:搜索文件属性“必须全部包括mode的属性”,比如-rwxr--r--的属性值为0744,使用-perm -0744

-perm +mode:搜索文件属性“包含任一mode的属性”

附加操作

-exec commandcommand为其他命令,-exec后面可在接额外的命令来处理搜索到的结果

eg

find / -mtime 0                                                 #0代表当前时间,所以是从现在起24小时前

 

6.     文件系统

磁盘与目录容量

df

df [-ahikHTm] [目录或文件名]

-a:列出所有的文件系统,包括系统特有的/proc等文件系统

-k:以KB为单位列出各文件系统

-m:以MB为单位

-h:以GBMBKB等格式显示

-H:以M=1000K取代M=1024K

-T:连同该分区的文件系统名称(例如ext3)一起列出

-i:不用硬盘容量,而以inode的数量显示

du

du [-ahskm] 文件或目录名称

-a:列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已

-h:以人们易读的容量格式(G/M)显示

-s:列出总量,不列出每个目录占用的总量

-k:以KB列出容量显示

-m:以MB列出容量显示

7.     磁盘的挂在与卸载(看我的linux 挂载外部存储设备 (mount)

8.     Linux系统常见的压缩命令


9.     Linux用户管理

帐号管理

添加删除用户

useradd [-u UID] [-g initial_group] [-G other_group] -[Mm] [-c 说明栏] [-d home] [-s shell] username

-u:后面接UID

-g:后面接用户组名称为初始用户组,该groupID会放到/etc/passwd的第四个字段内

-G:后面接的用户组称是这个帐号还可以支持的用户组。会修改/etc/group内的相关数据

-M:强制。不要建立用户家目录

-m:强制。要建立用户家目录

-c/etc/passwd5栏的说明内容,可以随便设置

-d:制定某个目录为家目录,而不是用默认值

-r:建立一个系统帐号,这个帐号的UID会有限制(/etc/login.defs

-s:后面接一个shell。默认为/bin/bash

修改密码passwd

passwd [useraccount]

root用户可以直接修改其他用户的密码

用户要修改自己的密码则必须给出原有密码

删除用户  userdel

相关文件 /etc/passwd/etc/shadow/home/username

userdel [-r] username #连同用户的家目录一起删除

查询UID/GID的相关信息  id

id [username]

[root@sun Desktop]# id sun

uid=500(sun) gid=500(sun) groups=500(sun)

[root@sun Desktop]# id                  

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

增加删除用户组 groupadd

groupadd [-g gid] [-r]

-g :后面接某个特定的GID,用来直接给予某个GID

-r :建立系统用户组。与/etc/login.defs内的GID_MIN相关

[root@sun Desktop]# groupadd group1

[root@sun Desktop]# grep group1 /etc/group /etc/gshadow

/etc/group:group1:x:506:

/etc/gshadow:group1:!::

[root@sun Desktop]# groupadd -r group2

[root@sun Desktop]# grep group2 /etc/group /etc/gshadow

/etc/group:group2:x:487:

/etc/gshadow:group2:!::

有没有 –r,结果与/etc/login.defs中的设置有关。而且以groupadd新增的帐号,默认都不能使用密码方式登录,也就是说,默认是私有用户组,无法私用newgrp来的登录。

groupmod

usermod相似,用于group相关参数的修改

groupmod [-g gid] [-n group_name]

-g :修改已有的GID数字

-n :修改已有的用户组名称

[root@sun Desktop]# groupmod -g 103 -n groupname group2

[root@sun Desktop]# grep groupname /etc/group /etc/gshadow

/etc/group:groupname:x:103:

/etc/gshadow:groupname:!::

删除用户组  groupdel

gpasswd groupname

   :没有任何参数,表示给groupname一个密码(/etc/gshadow)

-A :将groupname的主控权交给后面的用户管理(改用户组的管理员)

-M :将这些帐号加入这个用户组中

-r :将groupname 的密码删除

-R :让groupname的密码栏失效,所以newgrp就不能使用了

关于用户组管理员做的操作

gpasswd [-ad] user groupname

-a :将某用户加入到groupname用户组中

-d :将某用户从groupname中删除

 

切换用户身份

su [-lcm] [username]

-  :如果执行su –时,表示该用户想要成为root身份,且使用root环境设置的参数文件

-l :后面可以接用户,使用 -l的好处是可以使变换身份者的所有相关的环境的配置文件

-m -m-p是一样的,表示“使用当前环境设置,而不重新读取新用户的设置文件”

-c :仅进行一次命令,所以-c后面可以加上命令

sudo

10. 作业进程管理

将命令放到后台“执行”, &

eg tar –zpcf /tmp/etc.tar.gz /etc &

将“当前”作业放到后台“暂停”[Ctrl]-z

观察当前后台作业状态jobs

jobs [-lrs]

-l :除了列出作业号之外,同时列出PID

-r :仅列出正在后台运行(run)的作业

-s :仅列出正在后台暂停(stop)的作业

将后台作业拿到前台处理:fg

fg %jobnumber        # %可有可无,jobnumber作业的号码

让作业在后台运行:bg

管理后台作业:kill

kill -signal %jobnumber

kill -lL的小写)

-l:列出当前kill能够使用的信号

signal:表示给后面的作业什么指示

-1(数字1)重新读取一次参数的设置文件

-2:表示与由键盘输入[Ctrl]-c同样的动作

-9:立刻强制删除一个作业

-15:以正常的程序方式终止一项作业。

进程管理

ps

ps aux
ps -lA
ps axjf
-A 所有进程均显示
-a 与终端无关的进程
-u 有效用户的相关进程
l 较长
较详细的显示PID的信息
j 作业的输出格式
-f 更完整地输出

PID 进程ID
USER 进程的所属所属用户
PR priority,进程执行顺序,越小越先执行
NI Nice,Priority有关,越小越先执行
%CPU cpu使用率
%MEM mem使用率
TIME+ CPU使用时间累加  

[root@sun Desktop]# ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.2  19244  1144 ?        Ss   Aug01   0:02 /sbin/init

root         2  0.0  0.0      0     0 ?        S    Aug01   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    Aug01   0:00 [migration/0]

root         4  0.0  0.0      0     0 ?        S    Aug01   0:00 [ksoftirqd/0]

root         5  0.0  0.0      0     0 ?        S    Aug01   0:00 [watchdog/0]

root         6  0.0  0.0      0     0 ?        S    Aug01   0:00 [events/0]

……省略N

 

[root@sun Desktop]# ps -lA

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD

4 S     0     1     0  0  80   0 -  4811 poll_s ?        00:00:02 init

1 S     0     2     0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd

1 S     0     3     2  0 -40   - -     0 migrat ?        00:00:00 migration/0

1 S     0     4     2  0  80   0 -     0 ksofti ?        00:00:00 ksoftirqd/0

5 S     0     5     2  0 -40   - -     0 watchd ?        00:00:00 watchdog/0

1 S     0     6     2  0  80   0 -     0 worker ?        00:00:00 events/0

1 S     0     7     2  0  80   0 -     0 worker ?        00:00:00 cpuset

1 S     0     8     2  0  80   0 -     0 worker ?        00:00:00 khelper

…… 省略N

 

[root@sun Desktop]# ps -axjf

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

    0     2     0     0 ?           -1 S        0   0:00 [kthreadd]

    2     3     0     0 ?           -1 S        0   0:00  \_ [migration/0]

    2     4     0     0 ?           -1 S        0   0:00  \_ [ksoftirqd/0]

……

   1  1769  1769  1769 ?           -1 Ssl      0   0:00 automount --pid-file /var/run/autofs.pid

    1  1792  1792  1792 ?           -1 Ss       0   0:00 /usr/sbin/sshd

 1792 16070 16070 16070 ?           -1 Ss       0   0:01  \_ sshd: root@pts/0

16070 16090 16090 16090 pts/0    29910 Ss       0   0:00      \_ -bash

16090 27386 27386 16090 pts/0    29910 S        0   0:00          \_ su sun

27386 27387 27387 16090 pts/0    29910 S      500   0:00              \_ bash

27387 27530 27530 16090 pts/0    29910 S        0   0:00                  \_ su root

27530 27534 27534 16090 pts/0    29910 S        0   0:00                      \_ bash

27534 29910 29910 16090 pts/0    29910 R+       0   0:00                          \_ ps -axjf

 

top

top [-d] top [-bnp]

-d :后面接秒数,进程画面更新的描述,默认是5s

-b :以批处理方式执行top,还有更多的参数可用,通常会搭配数据流重定向,将批处理的结果输出为文件

-n :与-b搭配,意义是,需要基尼险那个几次top的输出结果

-p :制定某些个PID来进行观察监测

top执行过程中

      ?:显示在top中可以输入的命令

      P :按CPU的使用资源排序显示

      M:按内存使用资源排序

      N:按PID来排序

      T:按该进程使用的CPU时间积累排序

      k:给某个PID一个信号

      r:给某个PID重新确定一个值

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                   

29975 root      20   0 14940 1196  892 R  1.0  0.2   0:00.08 top                                        

   19 root      20   0     0    0    0 S  0.5  0.0   4:29.16 ata/0                                      

    1 root      20   0 19244 1144  944 S  0.0  0.2   0:02.51 init                                       

    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                    

    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                

    4 root      20   0     0    0    0 S  0.0  0.0   0:00.15 ksoftirqd/0                                

    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                 

    6 root      20   0     0    0    0 S  0.0  0.0   0:00.76 events/0                                   

    7 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cpuset                                                   

   省略N多              

 

pstree [-Aup]

-A:各进程树之间以ASCII字符来连接。

-p:同时列出每个进程的PID

-u:同时列出每个进程的所属帐号名称

 

查看系统资源

[root@sun Desktop]# free

             total       used       free     shared    buffers     cached

Mem:        503312     454164      49148          0      35212      40140

-/+ buffers/cache:     378812     124500

Swap:      2916344      18840    2897504

 

[root@sun Desktop]# uname -a      # 所有系统信息

Linux sun 2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

[root@sun Desktop]# uname -s      # 系统核心名称

Linux

[root@sun Desktop]# uname -r      # 核心的版本

2.6.32-71.el6.x86_64

[root@sun Desktop]# uname -m     # 本系统的硬件名称

x86_64

[root@sun Desktop]# uname -p      # CPU的类型

x86_64

[root@sun Desktop]# uname -i      # 硬件的平台

x86_64

netstat

netstat 用于网络监控方面,不过,在进程管理方面也需要了解。netstat 的输出分为两部分,上面是网络接口相关的联机,下方是与unix进程有关的项目

netstat [-atunlp]

-a :将当前系统上所有的联机、监听、套接字数据都列出来

-t :列出tcp网络包的数据

-u :列出udp网络包的数据

-n :不以进程的服务名称,以端口号(port number)来显示

-l :列出当前正在网络监听(listen)的服务

-p :列出网络服务的进程PID

 

dmesg | more 输出所有内核开机时的信息

[root@sun Desktop]# dmesg  | grep -i sd           #搜索开机时硬盘的相关信息

ACPI: RSDP 00000000000f6940 00024 (v02 PTLTD )

ACPI: XSDT 000000001fef0804 0004C (v01 INTEL  440BX    06040000 VMW  01324272)

ACPI: DSDT 000000001fef09bc 0E4DC (v01 PTLTD  Custom   06040000 MSFT 03000001)

ACPI: EC: Look up EC in DSDT

sd 0:0:0:0: [sda] 31457280 512-byte logical blocks: (16.1 GB/15.0 GiB)

sd 0:0:0:0: [sda] Write Protect is off

sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00

sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

 sda: sda1 sda2

sd 0:0:0:0: [sda] Attached SCSI disk

dracut: Scanning devices sda2  for LVM logical volumes vg_sun/lv_root vg_sun/lv_swap

sd 0:0:0:0: Attached scsi generic sg0 type 0

EXT4-fs (sda1): mounted filesystem with ordered data mode

SELinux: initialized (dev sda1, type ext4), uses xattr

 

[root@sun Desktop]# dmesg | grep -i eth                # 查看网卡代号是eth的信息

udev: renamed network interface eth0 to eth2

eth2: no IPv6 routers present

 

posted on 2011-08-04 23:29  nnusun  阅读(3326)  评论(0编辑  收藏  举报

导航