By: 胶纸
Date: 2012-10-18
Email: zhwqiang@126.com
Copyright: 该文章版权由胶纸所有。可在非商业目的下任意传播和复制。
对于商业目的下对本文的任何行为需经作者同意
————————————————————————————————————————————————————————————————————————————
写在前面
1、本文只简单地介绍一下linux的环境搭建和部分常用命令,作为后续嵌入式linux开发的学习基础
2、初学者,欢迎大家指正和交流
————————————————————————————————————————————————————————————————————————————
一、linux简介
1、优点:真正的多任务多用户(可同时登陆)
网络协议丰富,是从网络发展而来的,适合作为服务器
开源无后门,广泛用于嵌入式系统,安全性高
2、分类: rehat系列:rehat、fedora等
debain系列:debain、ubuntu等
二、linux环境搭建
1、平台:Vmware
镜像:ubuntu-11.04-desktop-i386.iso
2、要点
1)网络设置:网桥(虚拟机与主机同个网段,NAT是下一级)
2)怎么快速打开终端:Ctrl + Alt + T
3)如何root:sudo passwd rooot -u (可能被 -l 了)
sudo passwd root
su - root
4)怎么支持中文:system--administration--language support中安装或者拖拽到第一个
5)ubuntu下怎么快捷安装软件:新立德软件包管理
6)如何修改网卡ip:
ifconfig
ifconfig eth0 192.168.1.111
ping 192.168.1.107(主机windows ip)可以ping通(发送ICMP包)
ping 127.0.0.1
7)一些系统维护的windows工具:
putty:输入ip,选择协议SSH(早期是telnet,明文),SSH的端口号是22,telnet是21。
SecureCRT
SSH、vnc:图形化管理
三、linux常用命令
1、文件操作命令
文件命名规则:除了/外都合法、空格等最好别用,大小写敏感,.开头的隐藏
命令格式:命令 –选项 参数
特殊目录:.当前目录 ..父目录 ~家目录
命令所在目录:/bin,/usr/bin,/sbin,/usr/sbin(命令本质是一个文件)
1)ls
-a : all
-l : 详细信息
-d: 查看目录
-i: 查看i节点
2)文件类型
d : 目录
- : 二进制文件
l : 软链接文件
/**********************************软链接和硬链接的区别***************************************************
软链接:仅仅是快捷方式,权限属性等完全取决于实际文件,创建格式:ln -s 源文件 软链接文件
硬链接:是一个二进制文件,拷贝+同步更新(i节点一样),创建格式:ln 源文件 硬链接文件
*************************************************************************************************************/
3)
cd : 切换路径
pwd :当前路径
touch : 创建文件
mkdir : 创建目录
cat : 查看文件内容
ctrl + c : 中止命令
4)cp
cp 源文件 目标文件
cp -R 源文件1 源文件2 ... 目标目录
5)mv
剪切:mv 源文件 目标目录
更名:mv 源文件 目标文件
6) rm
-r : 删除目录
-i : 询问
-f : 强制
7)more
空格:下一页
Enter:下一行
Q/q:退出
8)chmod : 修改文件的权限
chmod 777 filename
chmod u+w
/**********************************文件权限***********************************
文件权限:rwx
权限组别:u(user),g(group),o(other)
文件权限与目录权限的区别:(要访问 目录下的文件,首先要对目录有相应的权限)
目录:
r:可列出目录中的内容,就是可执行ls
w:可以在目录中创建、删除文件
x:可以进入目录,所以x是必须的权限
文件:
r:可查看文件内容
w:可修改文件内容
x:可以执行文件,命令、脚本等
*******************************************************************************/
9)chown,chgrp
格式:chown 用户名 文件名/目录名
10)whatis, whereis,which,--help
whatis : 显示命令用途简介
--help : 显示命令选项
whereis : 显示命令所在目录,还显示帮助文档路径
which : 显示命令所在目录,还显示别名记录
11)man : 获取命令或配置文件的帮助
格式:man [命令/配置文件]
man 5 配置文件的帮助
man 1 命令的帮助(默认)
/******配置文件一定是放在/etc目录下的,而且每个配置文件都有帮助文件,用于说明配置文件的格式*****/
12)find
格式:find [路径] [选项] [关键字]
[选项]:
-name:可以结合匹配字符*,??
-size:数据块为单位;+大于,-小于
-user 文件所有者
-时间:ctime(天)cmin change改变,改变权限
atime amin access 访问
mtime mmin modify修改,修改内容
-type 文件类型,f二进制文件,d目录,l链接文件
-inum i节点
-o :或
-a :与
-exec: find ….. –exec 命令 {}\; 查找到的结果进一步处理
-ok:询问确认
在文件中搜索匹配行输出
grep [制定字符串] [源文件]
grep tftp /etc/inittab
14)文件压缩解压命令(主要是.tar.gz文件)
gzip : 只能压缩文件,不能压缩目录,而且不保留源文件
格式:gzip 文件名(自动添加.gz后缀)
gzip -d 文件名(解压缩)
gunzip 文件名 (解压缩)
tar : 打包目录
格式:tar -cf 打包后的文件名 要打包的目录组
tar -xf 压缩包
选项: -c [打包后的目标文件名] [目录] //产生.tar文件,打包时必须选项
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩(ubuntu不支持此选项)
-x 解包,解包时必须选项
15)其它命令shutdown -h now
reboot
16)重点:grep的使用
2、shell命令技巧
1)<tab>命令补全,也可以补全文件名等
<tab>:只有一个命中的时候
<tab><tab>:不止一个命中的时候,会把满足的列出来
2)clear
清屏=ctrl+l
清行:ctrl+u
3)上下翻可以得到命令历史
4)alias
定义别名
alias 显示所有别名记录
alias copy=cp
alias xrm=“rm –f” 带选项的加上双引号
unalias copy
5)、输入输出重定向
< 输入重定向
> 输出重定向
2> 错误输出重定向
>> 两个表示不覆盖,追加
例如:
wall</etc/motd
cp /usr /usr.bak 2>/bak.err
6)管道 |
将一个命令的结果输入给另一个命令,即接在下一个命令作为参数
ls –l /etc | grep int
7)命令替换符’’
ls –l ‘which touch’
8)连接符
; 让命令顺序执行
&& 逻辑与,注意短路
|| 逻辑或,注意短路
3、文件编辑
/*我一般喜欢用gedit编辑,简单方便,以后有需要再学,先贴上之前的笔记*/
命令模式:
/string
:wq :q :q!
:%s/old/new/g :n1,n2 s/old/new/g
如::n1,n2s/^/#/g 连续行注释,^表示行首
:set nu
:set nonu
:n
:r 导入文件名
:r !命令名
插入模式:
iao IAO
x nx 删除字符
dd ndd 删除行,剪切
dG D
:n1,n2d
yy nyy复制
pP
rR 替换字符,esc结束
u 撤销
$ 移到行首
0 移动行尾
gg G
定义快捷键map
:map ^P I#<ESC> //ctrl+v,ctrl+P
:map ^B 0x
:ab mymai http://www.baidu.com
:unab mymail
快捷键放在哪里?
写入到vi的配置文件:~/.vimrc
四、系统启动流程
1、启动过程:开发板上电后会运行固件进行加点自检检查硬件是否正常,接着读取MBR(可理解为硬盘的头部,主要包括bootloader+partition+magic number);可以理解为就是(hd0,0),在文件系统中就是/boot或者/root/boot(所有与启动相关的文件都放在/boot中,包括内核可执行文件、bootloader等;内核源代码文件放在/user/src中);首先读取/boot/grub.conf 配置,根据该配置运行grub自举程序,根据自举程序引导加载内核,启动init进程,根据init进程的配置文件启动内核的任务。
2、系统启动流程
1)加电自检:固件BIOS
2)Grub:相当于自举程序bootloader,配置文件放在/etc/grub.conf(->/boot/grub.conf),Grub指定内核存放位置以及启动画面等
3)载入内核:编译好的内核文件一般放在/boot目录下
4)启动init进程:读取inittab文件执行缺省运行级别从而继续引导
(init进程PID为1,内核调度为0)
5)执行/etc/inittab:根据/etc/inittab(可以通过 man inittab来获得配置文件的帮助)执行/etc/rc.d/rcN.d 的软链接文件,K表示不启动,S表示启动。实际指向的服务文件存放在/etc/rc.d/init.d目录下,可以直接在命令行执 行/etc/rc.d/init.d/serviceName start | stop | restart 等;
3、如何添加自启动服务?
1)比如在rc.d/init.d中添加服务文件msgscrip,内容为date >> /root/msg,文件添加可执行权限x
2)在rc.d/rcN.d中生成软链接,同时用S开头命名
4、如何快速设置自启动程序?
chkconfig:
--list [name]
--add <name>
--del <name>
--levels <name> on
ntsysv图形化管理
4、如何编写shell服务脚本?
请关注后续章节
5、如何切换当前运行级别?
runlevel:查看当前级别,有:单用户、多用户、reboot等7个运行级别
init N:切换运行级别
6、怎么查看设备驱动是否已经识别到?
dmesg | grep eth0
如果有信息输出即识别到硬件了,否则需要检查硬件设备或者重新加载驱动
7、Grub命令
1)grub.conf和Grub程序都是放在/boot目录下,主要指定内核、镜像文件等
2)root命令忘记了怎么办?进入单用户模式:启动时按e使用Grub的e命令输入1进入单用户模式
五、软件包管理
Debain系列http://apps.hi.baidu.com/share/detail/11444195
APT包管理
apt–cache search 搜索软件包 注意-左右没有空格的哦
apt–cache show 软件包信息
apt–get install 安装
apt–get remove 删除
apt–get update 更新软件源
apt–get upgrade 更新已安装包
1、ubuntu怎么安装软件?
apt-get install <name>
2、怎么查看软件是否已经安装?
3、怎么卸载软件?
4、怎么启动服务?
5、怎么查看服务是否启动?
6、怎么停止服务?
六、用户管理
1、用户分类
超级用户:root(UID == 0)
普通用户:500 - 60000
伪用户:0 - 499
2、配置文件
/etc/passwd 用户信息文件,包括密码位、UID、GID、描述信息、宿主目录、shell
/etc/shadow 密码文件
/etc/group 组信息文件
/etc/gshadow 组密码文件
/etc/login.defs /etc/default/useradd 用户登录配置文件:宿主目录,密码周期,用户失效等
/etc/skel
/etc/motd
3、如何手动添加一个用户1)修改/etc/passwd,添加新用户信息
2)创建宿主目录,并修改权限chown,并拷贝/etc/skel目录下的文件到宿主目录
3)修改/etc/shadow,
4、su 和 su - 的区别?
su - 连环境都切换过去了
5、useradd和userdel
1)useradd 用户名 //按照/etc/default/useradd文件缺省添加
【选项】
-u 指定UID
-g 指定组
-G 指定用户所属多个组,可多个组
-d 宿主目录
-s 命令解释器shell
-c 描述信息
-e 指定用户失效时间
2)userdel –r 用户名6、useradd 和 adduser的区别
案例:使用useradd添加用户没有创建宿主目录
解决:方法 1 修改配置/etc/login.defs /etc/default/useradd,默认创建
方法 2 使用-m选项
方法 3 使用adduser
7、粘着位
SetUID:s位,当前用户执行该命令时以该命令所有者身份执行(瞬间);chmod u + s 或者chmod 4755
SetGID:组s位,当前用户执行该命令时以该命令所属组执行
粘着位t:针对777目录,当设置了t位之后,该目录下的文件只受所有者操作
8、组管理
groupadd new
groupadd –g GID 指定组ID
gpasswd 设置密码,还可以管理组内人员
【选项】
-a 添加用户到组
-d 删除用户
-A 设置管理员
-r 删除密码
-R 禁止用户切换为该组
9、usermod
用法:usermod usrname 【选项】
-D:查看缺省信息
-u:修改UID
-G:指定用户所属组
-d:修改宿主目录
10、授权
1) 禁止非指定用户su(含有s位)到root
去掉s位,修改su的所属组chgrp,修改权限chmod,把授权的用户添加到组即可
2)管理服务器一般授权一个普通用户一些权限就可以了
>>1安装sudo软件包,
/etc/bin/sudo
/etc/sbin/visudo
>>2 root用visudo编辑
用户名(组名) 主机名=命令绝对路径【可更具体到选项】
使用时,要先写sudo,再加上命令绝对路径
sudo /usr/sbin/useradd liming
11、查看用户信息
finger usrname
12、案例学shell
案例:批量创建10个用户。
1、 fork
创建进程
2、 前台进程
后台进程:加上后台执行符&,如find / -nameinit > /initfind &
3、 用户进程
who
4、ps 查看属于自己的进程,信息少,最常用的是ps -aux或者ps -le
ps –u or -l
ps –le or –aux 查看所有用户执行的进程的详细信息
ps –aux --sort pid 排序
ps –aux | grep sam
ps –uU sam 查看指定用户的进程
ps –le | grep init 查看指定进程
pstree | more
kill 杀死进程
kill 进程号
kill -9 进程号(强制关闭)
kill –1 进程号(重启进程)
使用方法:
1、/etc/rc.d/init.d/httpd stop
2、一个服务会开很多进程
ps le | grep httpd
kill 父进程号
3、killall httpd
4、pgrep
pgrep httpd //输出PID
kill -1 `pgrep httpd`
5、pkill
pkill pgrep
6、top 任务管理器,动态
计划任务
at:一次性计划任务
batch
crontab:周期性计划任务
at例子:
at now +5 minutes
at> 命令(绝对路径)
ctrl+d保存退出
查询计划任务atq或者at –l
删除 at –d 任务标志
写完的计划任务存放在:/var/spool/at
/etc/at.allow
/etc/at.deny
crontab 例子:
时间格式编写
crontab –e 编辑
crontab –l 查询
crontab –r 删除
保存在/var/spool/crontab中,可以直接编辑
/etc/crontab配置文件
八、文件系统
1、文件系统
/usr/bin、/bin :存放所有用户可执行命令
/usr/sbin、/sbin:存放只有root可以执行的命令
/home:用户缺省宿主目录
/proc:虚拟文件系统,存放当前内存镜像
/dev:存放设备文件
/lib:存放系统程序运行所需的共享库
/lost+found:存放系统出错的检查结果
/tmp:存放临时文件
/etc:系统配置文件
/var:存放经常变动的文件,如日志,计划任务,邮件等
/usr:存放所有命令、库、手册页
/mnt:临时文件系统的安装点
/boot:内核文件及自举程序文件保存位置
常用命令:
df 查看分区信息
df -h
du 查看文件、目录大小
file 判断文件类型
挂载光驱:
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
ls /mnt/cdrom
卸载光驱:
umount /mnt/cdrom
添加硬盘或分区
>>1 划分分区(fdisk)
>>2 创建文件系统(mkfs)
>>3 尝试挂载(mount)
>>4 写入配置文件(/etc/fstab)
例子:
在虚拟机中添加新的硬盘,重启
dmsg | grep sdb //显示sdb:未分区
fdisk –l /dev/sdb 查看硬盘信息
fdisk /dev/sdb
重启,下面创建文件系统,即格式化,管理数据的方式ext3
mkfs 格式化:mkfs.ext3 /dev/sdb1
尝试挂载:
mount /dev/sdb1 /web
重启又要挂载?自启动时自动挂载,写配置文件/etc/fstab文件系统列表
(第27、28、、讲没看)
九、shell 编程
1、语法
1)shell结构:其实直接把命令序列写入脚本(绝对路径)即可执行(sh scripname或者./scripname)
#!指定执行脚本的shell
# 注释行
命令主体
2)