Saturday, July 20, 2013

Linux 基础学习

Everything is a file.

/dev/sda      /dev 设备文件 sda第一块硬盘 sda1 第一个分区   hd sd vd
sda5 扩展分区的第一个逻辑分区
文件系统
/  
/boot 系统启动信息
/home 用户信息
/swap 交换分区
硬盘  每个扇区512Byte 第一个扇区MBR 最重要
MBR Master Boot Record 硬盘的主引导记录
MBR由三部分组成: 主引导程序 boot loader 446字节
硬盘分区表 DPT Disk Partition table  64字节
magic number 2字节 固定为55AA
1.   MBR    446+64+2
命令;
CTRL+ALT+F1 F2 F3 F4 F5 F6
passwd
su  
ld
uid=500(tom) gid=500(tom) groups=500(tom)
history 存在于/home/tom/.bash_history  history –c 清除历史记录  !2 执行history记录里第二条记录
ctrl+a 光标跳到最左边  ctrl+e 最右边
红色-压缩 蓝色-目录 黑色-普通文件 绿色-可执行文件
ls –l –d dir  列出当前目录下的dir文件的详细信息
man手册里查找 / 然后输入要查找的内容
home :  /root, /home/username
user executable: bin, /usr/bin, /usr/local/bin
system executables: /sbin,/user/sbin,/user/local/sbin
other mountpoints: /media, /mnt
configuration: /etc
temporary files: /tmp       定期删除里面的信息
kernels and bootloader:/boot
server data: /var, /srv
system information: /proc, /sys
shared libraries: /lib, /usr/lib, /usr/local/lib
/proc是虚拟的,不占用实际存储空间    cd /proc   more cupinfo
cd 立刻回到家目录 pwd 显示当前绝对路径  
cd – 回到上一次工作目录
cd .. 回到上一级目录  .当前 .. 上级
cp –r –p –I
cp –r 拷贝目录
cp –p 保留权限 copy后属性不变
cp –I 交互式提问
mv 剪切或者重命名
cp file /tmp/FILE
touch 建立空文件
mkdir 建立目录
rm –r –I –f  rm用于删除文件
rm –r 删除目录,递归删除
rm –I 交互式提问
rm-f 强制删除文件
rmdir 删除空目录, 非空不能删
mkdir –p  mkdir –p /a/b/c 建立目录  一次性建立
alias别名



用户 群组 权限
用户: 管理员 普通用户 系统内置账户
uid 0 root用户 普通用户uid500开始
用户信息存于/etc/passwd 密码信息 /etc/shadow
passwd内容:  7 6个冒号
user name :X: uid : gid : 说明信息 :家目录 : shell环境   X原来存放密码 现在无内容 只是占位
useradd XX; passwd XX
userdel –r XX 删除用户 –r表示家目录也删掉
群组: 主要组 次要组
gid 信息存于 /etc/group
组名:组密码:组号:组成员       组密码 X
ls –l 10个字符标识一个文件的详细信息
r w x
对于文件和目标 其含义是不同的
文件  r 查看内容 w 修改其中内容 但不能对文件本身做修改,比如删除  x 执行
目录  r 浏览目录 w 修改其中的子目录子文件  x 进入目录  要想添加子目录,必须有X权限
修改权限 chmod
chmod u/g/o/a  +/-/=  r/w/x            chmod o+w rhce other添加w权限到rhce文件
chown 修改拥有人/拥有组
chgrp 修改拥有组
file 命令可以查看文件类型
shell 环境
type 用于查看命令是内部命令还是外部命令 type ls
cat /etc/shells 这么多种shell环境
其中有一个 /sbin/nologin 不可登录shell
ftp的用户shell环境就是上面的/sbin/nologin
/bin/bash shell环境的优点
通配符
*  匹配任意字符
匹配单个字符
[0-9] 范围中的任意一个
[abc] 范围中的任意一个字母
[^abc] 除了abc其他任意字母
~ 家目录 
``=$()
hostname  输出rhce
echo “this pc is $(hostname)”
或者 echo “this pc is `hostname`”
touch rhce{1,2,3} 建立rhce1 rhce2 rhce3 3个文件
vim 命令模式 插入模式 末行模式
   I 插入模式 o 跳到下一行插入 O 跳到上一行插入
       esc 末行模式 : wq! 保存退出
hjkl 可以代替上下左右键
wb  单词左边/右边
数字+G 立刻跳到第几行  G直接跳到最后一行 gg 立刻跳到第一行
命令行模式
 dd 删除整行 u 撤销 yy复制 7y复制7 p复制到光标下一行 P复制到上一行
末行模式
:set nu 显示行号  :set nonu 取消显示行号
在家目录下 建立一个文件  .vimrc 里面写入 set nu 那么打开任何文件 都会显示行号
q 退出vim q! 强制退出
标准输入输出 0 正确输入 1 正确输入 错误输出
ls  > abc ls输出信息保存到abc
dffdffd >abc 输出的错误信息仍然显示到当前终端
dfddffd  2> abc 将错误信息显示到abc
>覆盖原来的信息
   >> 链接到原来信息的后面
&>重定向所有文件
ping –c 3 执行3
黑洞 /dev/null 所有进入的东西立即删除
管道符号 |
cat /etc/passwd | grep root 筛选  
mail –s “snow” snow < /etc/passwd /etc/passwd里面的信息发送给snow 标题为 snow                     点 . 代表结束



tee命令  -a追加保存
cat /etc/password | tee all |grep root
先保存password的内容到all 再筛选其总的信息root输出
tr 转换  tr ‘a-z’ ‘A-Z’ < /etc/passwd passwd 里所有小写转换为大写
mail.sh
#!/bin/bash
mail –s “hello”  tom <<OP 结束标志
hello tom
hello world!
OP  结束标志 表示到此结束


test process
less 按行 more 按屏  支持搜索
head   tail  -n 9 显示9
tailf /var/log/messages 滚动显示日志   =tail -f
cut grep
cut –d 指定分隔符 –f 指定字段 –c 用字符串分隔
cut –d: -f3 /etc/passwd 只要passwd里面的第三个字段 :分隔
没有d选项时 默认用TAB分隔符  -d’ ‘ 空格作为分隔符
grep关键词筛选 –I 忽略大小写 –v 取反
grep –c root /etc/passwd 统计包含root的有几行
grep –n root /etc/passwd 详细列出第几行包含root 及其内容
grep –A2 root /etc/passwd 上面2
grep –B2 root /etc/passwd 下面2
wc –lw /etc/passwd 统计里面行数 单词数
diff abc abc.bak 对比2个文件的差异
sort 排序默认按字母排序  –n 按数字排序 –k 字段 –t 分隔符
sort –n –k3 –t: /etc/passwd passwd里按数字排序 第三个字段 按照:分隔
-r 反向排序 –u 删除重复行 显示的时候 
对比:
uniq 连续相同的行只显示一行
sort –u 只要是相同的行都只显示一行 不管是否连续
uniq –c abc  -c  重复的次数
uniq –d abc    只显示重复的行

进程;
ps 当前终端的进程 –l  
aux 显示所有进程
pstree 显示进程树
ps -ef 显示所有进程
top监控进程信息 PR优先级 top –d 10s 刷新一次

pgrep –u root 只显示root产生的进程
pidof  显示某一个进程的进程号
kill –l 显示所有64种信号
1 15 9 18
1 重新加载
15 完全退出
9 强制杀死
18 继续
19 stop
kill -1 1828 向进程号1发送信号1
killall -9 httpd 关于http的进程全部杀死
进程优先级  -20 – 19  数字越小 优先级越大 只有root可以调节,普通用户只能将优先级调大
nice –n 5 command 开启一个进程是 给予优先级
renice  5 pid  已经存在的进程 重新赋予优先级
& 将进程放到后台执行 jobs 显示当前作业
bg %1 作业号继续放到后台运行  ctrl+z 进程挂起
fg %1 作业号 1 放到前台运行
kill -9 %1 强制杀死作业1
ctrl+z 信号19  ctrl+c 信号?
echo $? 显示上次命令的执行返回值 0 代表正确 127代表此命令找不到 其他非零表示命令没有正确执行
test 语句
= eq
< lt
>gt
>=ge
<=le
&&  ||
test –f –d –e –r –w –x –n –z
-f 文件 –d 目录 –e 不知道是目录还是文件 –r 是否可读 –w是否可写 –x是否可执行 –n 是否非空值  -z 是否空值
  网络配置信息 vim /etc/sysconfig/network-scripts/ifcfg etho
ifconfig                          ip a
ifconfig eth0 down

ifconfig eth0 up 重启单个网卡