su - 切换到root用户并使用一个新的运行环境
sudo 使用管理员身份运行命令
id 显示当前用户信息
在命令后添加一个 & 符号 ,在后台运行进程
jobs 查看后台作业列表
bg 1 继续执行后台任务1
fg 1 将后台任务调1到前台运行
file命令: 查看文件信息
root@iZ23totlue9Z:/alidata/www/default/test/qiniu# file js_index.html
js_index.html: HTML document, UTF-8 Unicode text
lsusb命令: 查看USB信息
root@iZ23totlue9Z:/alidata/www/default/test/qiniu# lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd locate命令: 快速查文件
root@iZ23totlue9Z:/alidata/www/default# locate test.php
/alidata/www/default/rbac-codeigniter/system/libraries/Unit_test.php
/alidata/www/default/weiphp20141015/ThinkPHP/Library/Vendor/phpRPC/pecl/xxtea/test/test.php
/alidata/www/default/wxtest/20141204_lockscreengenerate_joeteddy_v0/image-master/vendor/phpunit/phpunit/Tests/_files/BankAccountTest.test.php
find命令: 高级查文件
-name 按名称查找
-perm 按权限查找
-user 按所有者查找
-group 按所属用户组查找
-ctime 按创建时间查找
-type 按文件类型查找
-size 按文件大小查找
柱面(cylinder):每个层叠磁盘盘片相同的圆环所形成的柱面环
扇区(sector):从中心到边缘的一个扇形区域
磁头(header):单位一般是512字节
所有的设备都被当作文件,在/dev目录下
hda, hdb,..., hdz -> IDE设备,即老硬盘(很长的排形接口)
sda, sdb,..., sdz -> SATA设备、SCSI设备或USB设备 (目前主流)
所以,硬盘在linux系统下就是形如:
/dev/hda
/dev/sda
分区就是把物理磁盘分成几个可被当作独立磁盘的分区,比如:
/dev/sda 可被分解成:/dev/sda1 和 /dev/sda2 这两个分区 (相当于windows下的C盘、D盘)
其中,sd表明了磁盘类型是SATA、SCSI或USB的一种,
a代表是第1块物理硬盘,1和2代表该硬盘上的分区号
主分区和扩展分区
- 主分区就比如: sda1, sda2, sda3 直接能用
- 扩展分区就比如:sda4 单单这个扩展分区不能用哦,必须里面放逻辑分区才行
- 逻辑分区就比如:sda5, sda6, sda7 这些都是基于sda4这个扩展分区所创建的逻辑分区,这个能用
分区是软件概念,不是硬件概念,分区机制有两种:
- MBR(比较老,基于BIOS引导的PC用的,苹果不行,最大支持2T硬盘,且只支持有限的分区数量)
- GPT(比较新,基于UEFI引导的才行,苹果都是这个,兼容MBR,支持超过2T硬盘,仅支持64位系统)
fdisk: 分区工具(仅支持基于MBR的分区机制)
fdisk -l 查看硬盘分区信息
fdisk /dev/sdb 对该硬盘执行分区操作,进入交互式分区界面
逻辑分区的分区号永远是从5开始
还可以这样列出分区信息
cat /proc/partitions
文件系统: 刚分完区不能马上用,必须要创建一个文件系统才行,创建文件系统俗称“格式化”
windows的文件系统: fat32、ntfs
linux的文件系统: ext2、ext3、ext4
mke2fs -t ext4 /dev/sda3 创建文件系统 (参数较多)
mkfs.ext4 /dev/sda3 创建文件系统 (参数较少)
挂载磁盘: 必须把分区挂载到一个目录后才能用
mount /dev/sda3 /mnt 把要挂载的分区挂载到/mnt目录,也可以是其他目录的
mount 显示已经挂载上的文件系统
/dev/xvda1 on / type ext4 (rw,errors=remount-ro) 比如这个磁盘被挂载到了根分区上
umount /dev/sda3 或者 umount /mnt 相当于windows的安全弹出
lsof 查看系统打开了/在使用哪些文件
配置 /etc/fstab 文件,设置开机时自动挂载
用户 和 组
- 每个用户都有一个用户ID(userid)
- 每个用户都属于一个主要组,并属于一个或多个附属组
- 每个组都有一个组ID(groupid)
- 每个进程都以某个用户id执行, 其访问资源的权限受到该用户的权限限制
- 每个用户都有一个shell
- 每个文件都有一个所属用户和用户组
用户
- 用户id为32位,所以理论上支持2^32个用户,但一般在60000以下
- root用户 (id 为 0, root用户不一定叫root, 只要id为0它就是超级管理员用户)
- 系统用户 (id为1-499)
- 普通用户 (id大于等于500)
- 用id命令查看当前用户信息
root@iZ23totlue9Z:~# id
uid=0(root) gid=0(root) groups=0(root) -> groups指附属组
- 用passwd命令修改当前用户密码
- /etc/passwd 保存用户信息
root:x:0:0:root:/root:/bin/bash
root代表用户名
x代表密码保存在shadow文件中
0代表用户id
0代表组id
root代表描述信息
/root 用户的home目录的位置
/bin/bash 用户的登录shell, /sbin/nologin表示用户无法登录
- /etc/shadow 保存用户密码
两个感叹号代表用户没有创建密码
root:$6$DOqlw17L$Wd2s2kHnWCN9ybexKpt1CKtMiPh5tQcjOPIDMcfYaq1dhR31eI2ShgatCsQ4Y2uvISwiBbSAVmng4z5DwqNXQ1:16468:0:99999:7:::
加密密码段分三部分,用$分开,第一部分的6表示加密类型,第二部分代表salt,第三部分代表密码
- /etc/group 保存组信息
www-data:x:33:
x代表组密码,现在已经不用这个了,仅作向后兼容保留
- whoami
root@iZ23totlue9Z:~# whoami
root
- root@iZ23totlue9Z:~# who
root pts/0 2015-02-15 11:38 (103.15.38.12)
- root@iZ23totlue9Z:~# w (不光显示哪些用户登录进来了,还能显示他们在干嘛)
12:01:22 up 12 days, 19:38, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 103.15.38.12 11:38 0.00s 0.18s 0.00s w
* 一般命令越短,显示内容越多!
- 创建用户
useradd phx
tail /etc/passwd
phx:x:1003:1003::/home/phx:/bin/sh
tail /etc/shadow
phx:!:16481:0:99999:7:::
passwd phx
tail /etc/shadow
phx:$6$B5dVHyE9$hZyVXGMUlWtZ6DmKvFCoR/3n.aCDju8bZRnvKgOg.S/NQ7.0y3.8XVAXQ46DHqFJXcBqXPXToEu12HKySbBoq1:16481:0:99999:7:::
默认创建用户后所属的组名就是用户名
- 修改用户
usermod phx
- 删除用户
userdel phx
组
创建组
groupadd 组名
修改组
groupmod -n 新组名 旧组名
groupmod -g 新组id 旧组id
删除组
groupdel 组名
权限(读、写、执行,可限定到用户或用户组)
权限 | 对文件 | 对目录 |
r | 可以读取 | 可以列出里面的文件 |
w | 可以修改 | 可以修改里面的文件 |
x | 可以执行 | 可以查看里面的文件? |
默认以哪个用户创建的文件,该文件就是所属该用户和该用户组
默认创建文件时的文件权限是:
-rw-rw-r--
默认创建文件夹时的文件夹权限是:
drwxrwxr-x
文件的默认权限是777减去umask, 文件夹的默认权限是666减去umask
用umask命令查看umask值,普通用户一般是002,root用户一般是022
因此,
新建文件的权限是: 666 - 002 = 664 即: -rw-rw-r--
新建文件夹的权限是: 777 - 002 = 775 即: drwxrwxr-x
修改文件所属用户
chown 旧用户 新用户
修改文件所属用户组
chgrp 旧组 新组
修改权限(a代表ugo全部)
chmod u+rw 文件名称
chmod g-x 文件名称
chmod go+r 文件名称
chmod a-x 文件名称
特殊权限: suid、sgid、sticky 略
chmod u+s filename # 设置suid权限
chmod g+s filename # 设置sgid权限
chmod o+t filename # 设置sticky权限
suid = 4, sgid = 2, sticky = 1
chmod 4755 filename
root用户不受任何权限限制!!!
ip地址: 192.168.1.168 子网掩码: 255.255.255.0
子网掩码定义了网络部分,所以192.168.1是网络部分(即网段),168是主机部分
192.168.1.0/24, 24是简写,代表前24位是网络部分,即子网掩码是:255.255.255.0
操作系统是通过比较ip地址中的网络部分来确定是否属于同一网络的
而在同一个网络之内,主机通过mac地址(网卡的硬件地址)通信(arp协议)
不同网络之间的通信
路由器/网关根据路由表来转发数据
要配置一个局域网通信的计算机,需要设置: ip地址、 子网掩码
要配置一个跨网段通信的计算机,需要设置: ip地址、 子网掩码、 网关
要配置一个可上网的计算机, 需要设置: ip地址、 子网掩码、 网关、 DNS
以太网接口: eth0 代表第一块网卡, eth1 代表第二块网卡
用 lspci 或 lsusb 可查看网卡硬件信息 ( 但我在阿里云上执行却看不到 )
ifconfig -a 查看所有接口
ifup eth0 启用eth0接口
ifdown eth0 禁用eth0接口
用setup命令设置网卡
网卡信息保存在: /etc/sysconfig/network-scripts/ifcfg-eth0等里, 可通过直接编辑文件修改配置
DNS配置保存在: /etc/resolv.conf, 可通过直接编辑文件修改配置
主机名配置保存在: /etc/sysconfig/network
测试
测连通性: ping
测DNS: host 和 dig
root@iZ23totlue9Z:~# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 180.149.131.98
www.a.shifen.com has address 180.149.132.151
root@iZ23totlue9Z:~# dig www.baidu.com
; <<>> DiG 9.8.1-P1 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37338
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 917 IN CNAME www.a.shifen.com.
www.a.shifen.com. 241 IN A 180.149.131.98
www.a.shifen.com. 241 IN A 180.149.132.151
;; AUTHORITY SECTION:
a.shifen.com. 540 IN NS ns3.a.shifen.com.
a.shifen.com. 540 IN NS ns1.a.shifen.com.
a.shifen.com. 540 IN NS ns4.a.shifen.com.
a.shifen.com. 540 IN NS ns2.a.shifen.com.
a.shifen.com. 540 IN NS ns5.a.shifen.com.
;; Query time: 4 msec
;; SERVER: 10.202.72.118#53(10.202.72.118)
;; WHEN: Mon Feb 16 11:38:15 2015
;; MSG SIZE rcvd: 180
显示路由表
root@iZ23totlue9Z:~# ip route
default via 115.29.251.247 dev eth1
10.0.0.0/8 via 10.162.79.247 dev eth0
10.162.64.0/20 dev eth0 proto kernel scope link src 10.162.67.250
100.64.0.0/10 via 10.162.79.247 dev eth0
115.29.248.0/22 dev eth1 proto kernel scope link src 115.29.249.189
172.16.0.0/12 via 10.162.79.247 dev eth0
追踪网络路径
traceroute www.baidu.com
网络质量测试
mtr www.baidu.com
名称 | 说明 | 编号 | 默认 |
STDIN | 标准输入 | 0 | 键盘 |
STDOUT | 标准输出 | 1 | 终端 |
STDERR | 标准错误 | 2 | 终端 |
分类 | 关键字 | 定义 | 例子 |
重定向 | > | 把标准输出重定向到文件(会覆盖) | echo 'test' > filename |
重定向 | >> | 把标准输出重定向到文件(会追加) | date >> filename |
重定向 | 2> | 把标准错误重定向到文件(会覆盖) | ls nowhere 2> filename |
重定向 | 2>&1 | 把标准错误和标准输出两种数据流都要 | ls nowhere 2>&1 filename |
重定向 | < | 重定向标准输入 | grep phx < /etc/passwd |
管道 | | | 把一个命令的标准输出,当作另一个命令的标准输入 | ls -l | grep file find / -user phx | grep video |
把标准错误丢弃掉
find / -user phx 2> /dev/null | grep video
tail 命令: 看文件末10行
grep 搜索文本
cut 基于列处理文本(这个很厉害)
wc 文本统计(可统计行数、单词、字符、字节等) , wc -l 表示统计多少行数
sort 排序文本(不支持中文) -u参数可以去重(真正去重)
uniq 去重(只能去重相邻重复行)
tr 转换文本内容,比如删除关键词、转换大小写等
sed 用正则搜索替换文本
启动流程
BIOS(PC架构),保存在主板芯片里 -> MBR, 到硬盘了 -> 操作系统的引导程序 GRUB -> 加载内核 -> 执行init 第一个进程 pid为1 -> runlevel
init进程是linux中第一个运行的进程,也是所有进程的父进程,它负责调用/etc/rc.d/rc.sysinit对系统初始化、挂载文件系统、根据运行级别启动服务等
linux的运行级别(runlevel):
0 关机
1 单用户模式
2 不带网络的单用户模式
3 多用户模式
4 未使用
5 X11图形化模式
6 重启
3和5的区别就是有没有图形界面, 一般的运行级别就是3或5
init 3 切换到纯文本的界面(上面第三个级别)
从源码编译安装的基本流程:
./configure 检查编译环境、配置、库等,生成makefile
make 编译源代码,生成可执行文件
make install 将可执行文件安装到计算机
软件管理方式: RPM
.rpm文件,就是一个软件
安装: rpm -i test.rpm
卸载: rpm -e test(不需要写版本号之类)
升级安装: rpm -U test-new.rpm
在线安装: rpm -ivh http://site.com/test.rpm
列出已安装的rpm软件: rpm -qa
软件包管理方式: YUM (基于rpm的前端程序,用来管理依赖关系)
rpm是软件管理方式,不是依赖管理方式,rpm仍然需要手动解决依赖关系,yum就是解决这些依赖的~~~
仓库(repo/repository): 存放所有的rpm包的地方
仓库配置路径: /etc/yum.repos.d/ 配置文件后缀为.repo, 可以放多个配置文件
安装: yum install software-name
卸载: yum remove software-name
升级: yum update software-name
搜索仓库: yum search keyword
列出软件: yum list(all|installed|recent|updates)
软件信息: yum info software-name
清除缓存: yum clean all