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表递归,-f表force(我认为的,没查)
但是不建议linux下面是用这个命令,一旦操作失误的话就惨了!!!
5.
管理文件与目录
查看文件和目录 ls
ls
[-aAdfFhilRS] 目录名
ls
[--color={none,auto,always}] 目录名
ls
[--full-time] 目录名
参数
-a :全部文件,包括隐藏文件一起列出来
-A :全部文件,但不包括.与..这两个目录
-d :进列出目录本身,而不是列出目录内的文件数据
-f :直接列出结果,而不进行排序(默认会按照文件名排序)
-F :根据文件、目录等信息,附加数据结构,
例如:*表示可执行文件,/表示目录,=表示套接字文件;|表示FIFO文件
-h :列出文件大小
-i :列出inode位置,而非列出文件属性
-l :列出长数据串,包含文件的属性
-n :列出UID与GID而非用户与用户
-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:若源文件为链接文件属性,则复制链接文件属性,而非文件本身
-f:force,有问题不会询问用户,强制执行
-i:若目标文件已经存在,在覆盖时会先询问
-l:建立硬连接的连接文件,而非复制文件本身
-p:与文件属性一起复制,而不是使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件,也就是“快捷方式”
-u:若目标文件比源文件就,则更新目标文件
删除文件或目录 rm
rm [-fir] 文件或目录
-f:force,强制删除
-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 file:file为一个存在的文件,列出比file新的文件
与用户或用户组名称有关的参数
-uid n :n为数字,这个数字是用户的帐号ID,即UID,这个UID是记录在/etc/passwd里与帐号对应的数字
-gid n :用户组
-user name:name为用户帐号名称
-group name:name为用户组名称
-nouser:查找文件的拥有者不再/etc/passwd中的文件
-nogroup:查看文件的拥有用户组不再/etc/group中的文件
与文件权限及名称有关的参数
-name filename:搜索文件名为filename的文件
-type TYPE:搜索文件类型为TYPE,类型主要有:一般正规文件(f),设备文件(b,c),目录文件(d),连接文件(l),套接字(s),及FIFO(p)等属性
-size [+-]SIZE:搜索比SIZE还要大[+]或小[-]的文件。 SIZE规格有c:byte;k
-perm mode:搜索文件属性“刚好等于”mode的文件,这个mode类似于chmod的属性值,比如-rwxr-xr-x的属性值为4755
-perm -mode:搜索文件属性“必须全部包括mode的属性”,比如-rwxr--r--的属性值为0744,使用-perm
-0744
-perm +mode:搜索文件属性“包含任一mode的属性”
附加操作
-exec command:command为其他命令,-exec后面可在接额外的命令来处理搜索到的结果
eg:
find / -mtime 0 #0代表当前时间,所以是从现在起24小时前
6.
文件系统
磁盘与目录容量
df
df [-ahikHTm] [目录或文件名]
-a:列出所有的文件系统,包括系统特有的/proc等文件系统
-k:以KB为单位列出各文件系统
-m:以MB为单位
-h:以GB、MB、KB等格式显示
-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/passwd第5栏的说明内容,可以随便设置
-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 -l(L的小写)
-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 |