一. Linux特点
1.免费/开源;
2.支持多线程/多用户;
3.安全性好;
4.对内存和文件管理优越。
Linux最小只需4M ——> 嵌入式开发
二. 文件目录
Linux系统所有软硬件都是以文件的形式存在,可以*设置、挂载、卸载。了解Linux文件目录,是学习Linux的关键。
主要目录
/ :Linux文件系统的上层根目录,主目录。
/root :超级管理员的主目录,存放root用户相关文件。
/home :一般用户目录或FTP站点目录,存放普通用户文件。
/etc :存放系统配置相关文件。
/boot :存放Linux系统启动所需文件,相关引导文件。
/dev :系统设备文件,如:硬盘、打印机。
/mnt :装置文件系统的加(挂)载点。如:光驱、软盘等的挂载目录。
/proc :当前系统核心与程序执行的信息。(process,系统当前运行的进程信息。)
/usr :存放系统应用程序和相关文件,类似于win的Program Files。
/var :存放系统经常变动的文件,如日志文件、用户邮件。
/tmp :系统零时文件目录(如安装程序过程中产生的零时文件),每个用户都可以对他进行读写操作,一段时间不使用系统会自动删除该目录下的文件。
/bin :存放可执行命令的目录,系统任何用户均可执行该目录下的命令。
/sbin :存放系统启动时所需执行的命令的目录,该目录里的命令需要高级权限的用户才可使用。
swap :相当于windows的虚拟内存。
当前目录:pwd
相对路径:指从当前目录去访问某个文件(夹)
绝对路径:指从根目录(/)去访问某个文件(夹)
绿色 ---->代表可执行文件
红色 ---->代表压缩文件
深蓝色---->代表目录
浅蓝色---->代表链接文件
灰色 ---->代表其它的一些文件
三. Linux系统分区
Linux系统分区和windows一样,怎么分,分多大因人而异,基础分区如下:
/ 根目录分区(一般大小为分完其他分区后硬盘剩余的总量)
/boot 系统启动、引导分区,大小随意( 最好200+ M)。
swap 相当于win的虚拟内存,大小为内存两倍,最好1024M以上。
分好区后,需要安装软、硬件可直接通过/mnt 挂载上去,不需要的时候再卸载。
(文件挂载先将其转换成ISO格式)
四. Linux网络环境的配置
修改IP的三种方法
第一种(在gui视图模式下配置):
- 用root身份登录,运行setup 命令进入到text mode setup utility 对网络进行配置,可对IP,子网掩码,网关,DNS设置。
- 此操作网卡配置并未生效,需重启网络才生效。
命令:/etc/rc.d/init.d/network restart
第二种(快速修改):
- ifconfig eth0 x.x.x.x //对网卡进行设置
- ifconfig eth0 network x.x.x.x //设置子网掩码
广播地址和dns使用默认的。
注:此操作网络配置会立即生效,但只是临时生效,系统重启会恢复到之前的。
第三种(修改最底层的网卡文件内容):
- 修改/etc/sysconfig/network-scripts/ifcfg-eth0 这个文件,可修改IP,子网掩码,网关,DNS,广播地址等。
- 此操作网卡配置并未生效,需重启网络才生效。
命令:/etc/rc.d/init.d/network restart
设置系统日期
- data:直接执行,显示系统当前时间。
data MMDDHHMMCCYY.SS
//修改系统时间,后面字母代表:月月日日时时分分年年年年.秒秒
- 查看日历(calendar)
查看月历:cal 5 2016 //查看2016年5月的月历
查看年历:cal 2016 //查看2016年的整年日历
用户的环境变量:/home/用户/.bash_profile
系统环境变量:/etc/profile
配置.bashrc 文件可以指定某些程序在用户登陆的时候自动启动:
对系统某个用户在:/home/用户/.bashrc
整个系统(所有用户):/etc/bashrc
Linux启动过程分析
- BIOS自检;
- 启动GRUB/LILO;
- 运行Linux内核并检测硬件;
- 运行系统的第一个进程init;
- init读取系统引导配置文件/etc/inittab中的信息进行初始化;
- /etc/rc.d/rc,sysinit系统初始化脚本;
- /etc/rc.d/rcX.d/[KS]* 根据运行级别X配置服务;
终止以K开头的服务,启动以S开头的服务(如下图init为5)
- /etc/rc.d/rc/local 执行本地配置;
- 其他特殊服务。
五. 用户管理
添加用户:useradd 用户名(useradd aaa)
设置/修改密码:passwd 用户名(passwd aaa)
添加用户组:groupadd 用户组名(groupadd root123)
将用户添加到某用户组:
useradd –g 用户组 用户(useradd –g root123 aaa)
修改用户属性(需root权限)
usermod –g 用户组 用户
usermod –d 目录 用户名 //改变用户登陆的初始目录
usermod -s shell类型 用户名
usermod -c 注释 用户名
usermod -u 用户编号 用户名
删除用户:userdel aaa (删除用户,但/home下用户主目录文件信息仍存在)
userdel –r aaa (彻底删除用户及用户所有文件信息)
查看系统中所有用户:
cat /etc/passwd
查看系统所有用户组:
cat /etc/group
默认情况下新建一个用户,就会生成一个以该用户名命名的用户组。
六. 进程/网络状态管理
进程:
- 在Linux中,每个执行的程序成为一个进程,每个进程都分配一个ID号(PID)。
- 每一个进程都会对应一个父进程,父进程可以复制多个子进程,如www服务器。
- 每个进程都可能一两种方式存在,前台与后台。
- 一般系统服务都是以后台进程的方式存在,而且常驻系统中,直到关机才结束。
进程与线程:
进程:正在执行的程序。
线程:1. 轻量级的进程;
- 进程有独立的地址空间,线程没有;
- 线程不能独立存在,它是由进程创建的;
- 线程耗费的cpu和内存小于进程。
查看进程:1. ps –aux (当前运行进程,静态)
- top (动态监控进程)
终止进程:
kill 进程号( PID )
eg:kill 16251 //终止进程号为16251的进程
kill -9 16251 //某些进程不能被杀,使用 -9 参数强制终止进程
显示网络状态命令:netstat
此命令用来显示整个系统目前的网络情况。如连接、数据包、路由表内容。
netstat –an 显示所有端口和连接信息(包括远程链接到本机的ip)
netstat –anp 与上面想比,多显示进程号(PID),推荐使用此命令
显示数据包经过历程命令:traceroute
此命令用来检测数据包在网络上传输的过程,可显示本机到目标主机所经历路由的完整路径。
traceroute + 参数 + 目标IP或网址 //参数可忽略,相当于win下的tracert。
eg:traceroute www.baidu.com
route –n 显示本机网关、路由情况。
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
七. 文件管理
文件所有者:
文件是哪个用户创建的,它的所有者就是该用户。
ls –ahl 查看文件所有者
// a代表显示所有,包括隐藏文件;h代表输出文件大小;l代表用长列表显示,显示更详细内容。
修改文件所有者:chown 用户名 文件名
修改文件夹所有者:chown –r 用户名 文件夹目录 //Linux中-r 为递归的意思。
文件所在组:
文件是哪个用户创建的,它的所在组就是该用户所在组。
ls –ahl 查看文件所在组(如上)
修改文件所在组:chgrp 组名 文件名
文件和目录权限:
rwx = 421 //读写执行
chmod 777 aaa //赋予文件aaa最高权限
文件赋权执行上面格式即可,下面做详细诠释。
chmod u=rwx,g=rx,o=rx aaa
//相当于chmod 755 aaa;u代表user;g代表group;o代表other
chmod u-x,g+w aaa //给aaa去除用户执行权限,增加用户组写的权限
八. 常用命令
Linux运行级别 init [0123456]
运行级别 0:关机 //shutdown –h now也可立即关机
1:单用户
2:多用户状态没有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启 //reboot
常用运行级别是3和5,修改系统启动默认的运行级别:
/etc/inittab文件中的id:5:initdefault中的数字。
查看用户当前运行级别命令:runlevel 或 who -r
若不慎将默认运行级别设置为6,系统将不断重启。
解决:在启动界面按e,进入第二个界面选中第二行按e,然后输入1(以单用户启动,且进入不需要密码,也可用于忘记密码时进入然后重设密码),进入init 1级别用命令改回文件的默认运行级别。
Linux常用命令
有问题用man命令(manual指南,相当于dos下的help)
eg :#man grep(后直接接命令)
ls:查看文件目录,等于dir
ls –l 用长列表显示,显示更详细内容;
ls –a 显示隐藏文件;
ls –h 显示文件大小。
重定向命令:
ls –l > a.txt 将显示的内容写入a.txt(覆盖原内容)
ls –al > aa.txt 将现实的内容追加到文件aa.txt的末尾(不覆盖原内容)
lsb_release -a //查看版本信息
uname -a //可显示电脑以及操作系统的相关信息。
cat /proc/version //说明正在运行的内核版本。
cat /etc/issue // 显示的是发行版本信息
touch:创建空文件
mkdir:创建文件夹
vi:编辑文件,当文件不存在时可创建文件
cat:查看文件内容
cp:复制命令
cp –r aaa bbb (递归复制,将aaa文件及子文件复制到bbb)
mv:移动文件或重命名
rm:删除文件
rm –rf * 删除文件夹所有内容(包括目录及子文件)
r 递归 f 强制
ln:建立符号链接,相当于建立快捷方式link。
ln –s 源文件路径 目标文件路径
eg:ln –s /root/abc3.java toabc3
//建立后显示如下(文件属性前会多个l,代表ln命令建立的)
more:分页显示文件内容,按空格查看下一页,不可查看上一页内容
less:分页显示文件内容,空格查看下一页内容,上下键也可查看上/下一页内容
grep:显示文本中查找的内容(grep只显示查找的内容,cat显示文本所以内容)
grep –n 显示内容所在行数
|:管道命令,把上一个命令的结果交给 | 后面的命令处理。(一条命令可有多个管道命令)
find:文件查找
find 文件路径 –name 文件名
eg:find / -name aaa.txt 全目录查找aaa.txt (路径越详细查找越快)
★ 搜索一段时间内被存取/变更的文件或目录:
find /hoem –amin -10 //查找十分钟内存取的文件或目录
find /hoem –atime -10 //查找十小时内存取的文件或目录
find /hoem –cmin -10 //查找十分钟内更改过的文件或目录
find /hoem –ctime +10 //查找十小时前更改过的文件或目录
find /hoem –size +10k //查找/home目录下大于10k的文件
a:access 存取 c:change 更改
该查找多用于安全方面,查看黑客在一段时间内动过的系统文件。
pwd:查看当前路径
whereis:查找目标文件的路径
whereis ssh //查看ssh的路径
压缩与解压缩
zip(压缩)和unzip(解压缩)
zip(压缩):
- zip a.zip aaa //zip后直接接压缩后的文件名,将aaa压缩成a.zip
- zip –m a.zip aaa //压缩后删除原文件,将aaa压缩成a.zip并删除aaa
- zip –r a.zip aaa //将子目录一起压缩,文件夹aaa及其子目录一起压缩为a.zip(常用)
- zip -9 a.zip aaa //-9为压缩率(-1 — -9,-9压缩率最高)
压缩当前文件夹,两种方法:
(1)zip –r 111.zip . //.代表当前文件夹
(2)zip –r 111.zip 文件夹路径/*(eg:zip –r 111.zip /home/*)
unzip(解压缩):
- unzip a.zip //解压缩文件a.zip
- unzip a.zip –x bbb //不解压某文件,a.zip中除了bbb其他都解压
- unzip –z a.zip //查看压缩包内容,也可用“-l”、“-v”查看
将压缩文件解压扫某处:unzip *.zip –d /目录 (如果该目录下没某文件会自动创建)
gzip(压缩)和gunzip(解压):
- gzip a.gz aaa //压缩
- gzip –d a.gz //解压缩
3.gunzip a.gz //解压缩
tar.gz解压:tar -zxvf aaa.tar.gz
corntab:用于设置周期性被执行的指令,可用于任务调度。
终止任务调度:
conrtab –r :终止任务调度
conrtab –l :列出当前有哪些任务调度
其他常用命令:
http://www.oschina.net/translate/useful-linux-commands-for-newbies
http://www.tecmint.com/20-advanced-commands-for-middle-level-linux-users/
九. Shell
shell,壳,是指“提供使用者使用界面”的软件,将命令解析成机器语言。从作用上说,类似于cmd,接受用户命令然后调用相应应用;从功能上说又类似于bat批处理,可将程序编写成shell执行。
shell的分类:
shell名称 开发者 命令名称
Bourne S.R. Bourne /bin/sh
C Bill Joy /bin/csh
Kom David /bin/ksh
Shell的修改:chsh –s 输入新的shell //eg:chsh –s /bin/csh
不同shell的命令稍有差别
用户登陆后自动执行的shell脚本文件:
.bashrc 位于用户主目录下,它之前执行系统的脚本/etc/bashrc,主要是配置基础数据
.bash_profile位于用户主目录下,它之前执行系统脚本/etc/profile,主要是配置环境变量
alias(别名),可简化常用命令的输入,shell程序用经常使用
命令:alias 自定义命名=’想要替换的命令’
eg:alias cp=’cp -i’
alias ll=’ls –l –color=tty’
十. 软件的安装
RPM管理
rpm,RPM Package Manager(RPM软件包管理器)的缩写,一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.rpm扩展名的文件,与dpkg类似。这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。
如何查询linux中安装了哪些rpm软件:
rpm –q //查看有没有安装mysql
rpm –qa //查看所有rpm软件
rpm -qa|grep ntp* //查看所有ntp的rpm包
rpm常用命令:
安装rpm包:
rpm –ivh *.rpm // i=install安装;v=verbose提示;h=hash进度条
卸载rpm包:
rpm –e *.rpm
//如果其他软件包依赖于当前要卸载的包,会产生错误告警
rpm –e –nodeps *.rpm
//该命令用于强制卸载当前rpm包,但依赖于此包的软件可能无法运行
升级rpm包:
rpm –U *.rpm
文件共享:
1.Samba服务器安装:Linux下开发人员好像喜欢装这个。
2.FTP服务器安装:大多数Linux机器都是用的这个。
3.SCP命令:
scp [OPTIONS] file_source file_target
eg:scp ntp-4.2.8p7-0.10591.1.PTF.959243.x86_64.rpm boco4a@200.200.*.*:/home/boco4a
//将本机当前目录的ntp文件发送到目标主机的/home/boco4a目录。红色分别代表“用户、IP、目录”
OPTIONS:
-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接、认证、 或是配置错误
-C 使能压缩选项
-P 选择端口 . 注意 -p 已经被 rcp 使用
4.方便快捷的文件传输软件:sshClient
另外putty、xshell、secureCRT也可用于管理主机,但文件传输基于FTP或rz、sz命令。
Mysql数据库的安装
Mysql数据库由于免费、跨平台、轻、支持多并发,一直是中小型企业数据库的首选。
安装:
- 把安装文件拷贝到 /home 下
- 解压mysql文件.tar.gz 命令:tar –zxvf
- groupadd mysql //创建用户组
useradd –g mysql mysql //创建mysql用户,并放入到mysql组
进入/home下的mysql文件夹
sripts/mysql_install_db –user=mysql //初始化数据库
chown root . //修改文件所有者(.代表当前文件目录)
chown –R mysql data
//修改data文件夹所有者(R参数代表递归,表示当前文件夹下所有文件/文件夹)
chgrp –R mysql . //改变用户组
启动mysql
bin/mysqld_safe –user=mysql & // & 代表以后台方式启动
查看端口3306是否起来:netstat –anp | more
进入mysql:
cd bin
./mysql –uroot –p123
//登录mysql(此种方式只能在/home/mysql/bin下启动mysql)
如果想在任何目录都可以启动mysql,修改环境变量里面的路径PATH:
env //可以看到PATH路径
在root用户目录下 ls –al | more 找到 .bash_profile
(此文件存放用户变量,系统变量在/etc目录下)
vi .bash_profile在PATH路径后面加上mysql路径
注销/重启电脑,然后任意路径都能使用mysql –uroot –p123 进入mysql
(注:只能在此用户任意目录,其他用户照样修改。如要所有用户都可以,那就需要改系统变量,在/etc/profile下也存在该文件)
数据库备份与恢复
备份操作在mysql下的bin目录下,非在数据库中。
恢复的时候要先在数据库中新建个空数据库。
可以利用任务调度crontab,写个shell脚本将数据库自动备份。