? Linux起源
? Linux作用
? 访问Linux的工具
? Linux的基本命令
? Vi工具
? Linux变量设置
Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。在1991 年的10月,由一个名为 Linus Torvalds的年轻芬兰大学生带头开发的作业系统。
目前(2014年9月1日星期一),市面上对oracle支持得比较好的版本是:RedHat和SUSE
# uname –a
# lsb_release –a 或 # cat /etc/redhat-release
两个命令的区别:
uname查看内核版本
lsb_release查看分发版本(分发厂商),有的linux系统没有lsb_release命令,那么查看/etc目录下的redhat-release文件信息,其实lsb_release命令查看的就是此文件的信息
Linux其实就是一个操作系统。可以理解为和Windows一样。我们这里学习Linxu就是因为许多企业的Oracle部署在Linux上,我们学习的目的是要会简单的操作和使用Linxu,便于我们维护和排除Oracle问题。此次学习的目的仅此而已。
secureCRT
putty
VNC viewer
Xmanager
telnet
ssh
文件处理命令
ls
显示当前目录下有哪些文件
ls
以长文件方式显示文件
ls –l
按时间顺序显示
ls –ltr
按文件大小顺序显示
ls –lSr
pwd
显示当前目录
cd
进入或切换目录
需要注意两个特殊的目录“.”和“..”,分别代表当前目录和当前目录的父目录
# cd - 返回到上一次操作的目录命令;比如我操作了# cd /home/oracle ,然后# cd –那么将会返回到刚刚操作的# cd /home/oracle命令;
# cd 回车键 回到当前用户的宿主目录
mkdir
建立目录
例:
建立 test 目录
# mkdir test
同时建立两个目录
# mkdir app test
建立 一个目录树
mkdir -p /u01/app/test
rm/rmdir
删除文件/删除目录
例:
删除test目录
# rmdir test 或 # rm –r test
删除rm.txt文件
# rm rm.txt
删除app目录(注:app目录下有app1,app2……appn个目录,并且app1下有rm.txt文件)
# rm –fr app
注(选项“f”表示强制,如果不加“f”选择,那么系统会给你提示,一个目录或文件一个提示,很繁琐,所以“f”选项具有一定的危险性,使用前一定要确认清楚。
mv
移动文件、更名(重命名)
例:
移动app目录到oracle目录
# mv app oracle
注:这是一个剪切操作,执行这个命令后当前目录下就不存在app目录了,而是被移动到了oracle目录下。
把test目录改名为app
#mv test app
用法延生:移动并更改目录名称
如果当前目录下不存在test目录,只存在一个app目录,并且app目录下有app01目录
那需要把app目录下的app01目录移动到当前目录下,并变更目录名叫test
# mv app/app01 test
同理还可以把test拷贝会app目录下并且变目录名为app01
#mv test app/app01
cp
复制文件或目录
例:
把1.txt文件复制处理,命名为2.txt
# cp 1.txt 2.txt
复制目录u01下所有文件到当前目录(u01目录下无子目录,只有文件)
# cp u01/* .
复制目录app下所有文件到当前目录(注意app目录下有app1到appn个目录,并且目录下还有文件)
# cp –R app/* .
注:选项“R”的运用,表示将app目录下的所有文件和子目录复制到当前目录下
把app目录整个复制并命名为app02
# cp –a app app02
注:这种方式相当于克隆一个目录出来
cat
显示文件内容
注:cat适合查看内容比较短的文件,如果查看想/etc/services这样有很多内容的文件,cat会定屏到最后一屏,不是特别方便,所以查看长内容的文件,用more
例: # cat /etc/sysconfig/network-scripts/ifcfg-eth0
more
分页显示文件内容
语法:more [文件名]
(空格)或f 显示下一页
(Enter) 显示下一行
q或Q 退出
例: # more /etc/services
tail
查看文件的后几行
语法:tail -num [文件名]
-num 显示文件的后num行
-f 动态显示文件内容
例:
查看/etc下services文件的后30行
# tail -30 /etc/services
实时查看被添加到一个文件中的内容
# tail –f /etc/services
head
查看文件的前几行
语法:head -num [文件名]
-num 显示文件的前num行
例: # head -30 /etc/services 显示/etc目录下services文件的头30行
ln
创建链接文件
例:
为文件1.txt创建一个软链接文件1.txt.link
# ln -s 1.txt 1.txt.link
注:选项“s”表示创建软链接(相当于windows的快捷方式)
既然有软链接,必然有一个硬链接的概念,这里我稍微分析下软链接和硬链接的区别:
软链接文件和硬链接文件分别有什么特点,用在哪些方面
软链接 lrwxrwxrwx --> 10 时间值
类似于Windows快捷方式 跨文件系统生成
硬链接 cp –p+同步更新 与源文件有相同inode
硬链接不能跨文件系统
ls –i i-inode i节点
硬链接可以同步更新就是应为Linux只认得i节点,硬链接文件和原文件的i节点完全相同,所以每次更新的时候就同步更新了。
find
查找文件或目录
例:
在text目录下搜索文件名为u01的文件或目录(我的text目录实际是建立在/home下,绝对路径为/home/test)
# find /home/text –name u01
在当前目录下搜索文件名为u01的文件或目录
# find . –name u01
在当前目录下搜索后缀为“.txt”的所有文件或目录
# find . –name \*.txt (注意这个“\”的写法和我们linux用的“根目录/”正好是相反的)
通配符:
*:匹配任意字符,包括0字符。如查找当前目录下以init开头的文件 # find . –name init*
?:匹配单个字符,如查找一个以init开头含7个字符的文件,那么init???
在当前目录下搜索属于用户“root”的文件或目录
# find . –user root
在当前目录下查找大于100MB的文件(数据块block的换算: 100MB=102400KB=204800block +表示大于,-表示小于,什么都不写,直接204800就是等于)
# find . –size +204800
在当前目录下查找24小时(1天)内被修改过属性的文件或目录
# find . –ctime -1
注:
天 ctime、atime、mtime
分钟 cmin、amin、mmin
c-change改变,表示文件的属性被修改过,所有者,所属组,权限
a-access 访问
m-modify 修改,表示文件的内容被修改过
-表示之内,+表示超过多长时间,什么都不写,直接写上时间值表示刚好在时间上
在当前目录下搜索过去10天均未被使用过的文件
# find . –type f –atime +10
连接符:
1、连接符: -a and逻辑与,-o or 逻辑或
2、连接符:-exec, 格式:find…… -exec 命令 {} \;
-ok 命令 {} \; 询问确认
{}表示前面find查询的结果
\ 表示转义符(就是让使一些符合或命令使用本身的含义)
;结束
3、-type 文件类型 f 二进制文件 , l 软链接文件 , d 目录
在当前目录下查找大于180MB且小于100MB的文件或目录
# find . –size +163840 –a –size -201800
在/etc目录下查找inittab文件,然后显示inittab文件的详细信息
# find /etc –name inittab –exec ls –l {} \;
在当前目录下查找1.txt的文件,然后删除掉
# find . –name 1.txt –exec rm -fr {} \;
在当前目录下查找2.txt的文件,然后删除掉(用管道的方式)
# find . –name 2.txt | xargs rm
locate
查找文件或目录
(locate的查找速度非常快,但是如果没有更新系统目录文件的数据库,有些新建的文件是查找不到的,所以这个命令一般要和updatedb配合使用)
注:这个命令在UNIX系统里基本不提供,只在Linux系统中有提供
updatedb
建立整个系统目录文件的数据库
例: # updated
grep
在文件中搜寻字符串匹配行并输出
例:
在/etc/services文件中搜索含ftp的段
# grep ftp /etc/services
which
显示系统命令所在目录
例: # which ls
whereis
显示系统命令所在目录
例: # whereis ls
which和whereis命令的区别:
which和whereis都会找到命令的绝对路径。不同的是which会找到命令的别名机制(其实Linux目录或文件的不通颜色就是别名机制控制的),而whereis会找到命令的帮助目录
man
获得帮助信息
注:man在显示帮助信息时是调用more来显示,所有more的内置功能,[空格]或[Enter]等
例:
查看命令ls的帮助命令
# man ls
查看配置文件services的帮助信息
# man services
--help
获得简短帮助信息
例:
# ls –help
fdisk
划分分区
例:
查看磁盘信息
# fdisk –l
增加分区
# fdisk
n-->p-->w
注:虚拟机增加一块新盘后用这个命令需要重启系统
mkfs
创建文件系统
# mkfs -t ext3 /dev/sdc1
语法: Usage: mkfs [-V] [-t fstype] [fs-options] device [size]
mount/umount
挂载/卸载一个文件系统
挂载一个叫做hdc1的盘 –– 确定目录 '/ mnt/hdc1' 已经存在;linux下所有的设备都是文件
mount /dev/hdc1 /mnt/hdc1
卸载一个叫做hdc1的盘 –– 需要先从挂载点 '/ mnt/hdc1' 退出
umount /dev/hdc1
df
显示已经挂载的分区列表
# df –h
du
例:
以k为单位查看 'dir1' 已经使用的磁盘空间'
du -sk dir1
以容量大小为依据依次显示文件和目录的大小
du -sk * | sort -rn
groupadd
创建一个新用户组
# groupadd new_group_name
groupdel
删除一个用户组
# groupdel group_name
groupmod
修改用户组信息
例:
修改webadmin组名为apache
# groupmod -n new_group_name old_group_name 注:新组名称在前,老组名称在后
# groupmod -n apache webadmin
groups
查看用户隶属于哪些组
# groups oracle
useradd
创建一个新用户
例:
创建一个隶属于oracle用户组的用户Irving
# useradd –g oracle Irving
userdel
删除一个用户
# userdel –r Irving “r”选项表示同时删除用户的目录
usermod
修改用户属性
例:
修改本身属于oracle组的oracle用户为oinstall组
# usermod –g oinstall oracle
passwd
设定密码
例:
为新添加的用户Irving指定密码为rootroot
# passwd Irving (根据shell提示输入rootroot并且确定就可以)
chmod
改变目录权限
例: # chmod 777 Directory
chown
改名所用者
例:
改变原所用者为root的1.txt文件的所有者为oracle
# chown oracle 1.txt
改变一个目录的所有者为oracle并同时改变该目录下所有文件的所有者均为oracle
# chown –R oracle Directory
改变一个文件的所有人和群组属性
# chown user:group 1.txt
# ls –lr Directory (验证权限)
gzip
压缩解压命令:gzip
命令英文原意:GNU zip
命令所在路径:/bin/gzip
执行权限:所有用户
功能描述:压缩文件
语法:gzip [选项] [文件]
压缩后文件格式: .gz
现在常见的压缩格式
.gz
gzip
1、 只能压缩文件,不能压缩目录。
2、 不保留原文件。
gunzip
命令名称:gunzip
命令英文原意:GNU unzip
命令所在路径:/bin/gunzip
执行权限:所有用户
功能描述:解压缩.gz的压缩文件
语法:gunzip [选项] [压缩文件]
例:
# gunzip file1.gz
tar
命令名称:tar
命令所在路径:/bin/tar
执行权限:所有用户
功能描述:打包目录
语法:tar [选项] [目录]
-c 产生.tar打包文件
-x 解包.tar文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
压缩后文件格式: .tar.gz
例:
$ tar –zcvf dir1.tar.gz dir1
将目录dir1压缩成一个打包并压缩的文件
$ tar –zxvf dir1.tar.gz 解包
zip
命令名称:zip
命令所在路径:/user/bin/zip
执行权限:所有用户
功能描述:压缩文件或目录
语法:zip [选项] [压缩后文件名称] [文件或目录]
-r 压缩目录
压缩后文件格式: .zip
例:
$ zip services.zip /etc/services 压缩文件
$ zip –r test.zip /test 压缩目录
unzip
命令名称:unzip
命令所在路径:/user/bin/unzip
执行权限:所有用户
功能描述:解压.zip的压缩文件
语法:unzip [压缩文件]
例:
$ unzip test.zip
bzip2
命令名称:bzip2
命令所在路径:/user/bin/ bzip2
执行权限:所有用户
功能描述:压缩文件
语法:bzip2 [选项] [文件]
-k 产生压缩文件后保留原文件
压缩文件格式: .bz2
例:
$ bzip2 -k file1
bunzip2
命令名称:bunzip2
命令所在路径:/user/bin/ bunzip2
执行权限:所有用户
功能描述:解压缩
语法:bunzip2 [选项] [压缩文件]
-k 解压后保留原文件
例:
$ bunzip2 -k file1.bz2
ifconfig
查看网络设置信息
例:
显示一个eth0网卡信息
# ifconfig eth0
修改ip地址(单次生效)
# ifconfig eth0 192.168.0.51 netmask 255.255.255.0
启用一个 'eth0' 网络设备
# ifup eth0
禁用一个 'eth0' 网络设备
# ifdown eth0
hostname
显示主机名
# hostname
ethtool
显示网卡 'eth0' 的流量统计
# ethtool eth0
netstat
显示所有启用的网络连接和它们的 PID
# netstat -tup
chkconfig
列出所有服务
# chkconfig --list
启动,停止,查看服务
# service vsftpd start/stop/status
控制系统启动时,是否启动服务
# chkconfig --level 5 vsftpd on
验证修改
# chkconfig vsftpd –list
查看用户信息 w
w显示信息的含义
JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
PCUP:CPU执行程序耗费时间
WHAT:用户正在执行的操作
load average:分别显示系统在过去1、5、15分钟内的评价负载程度
from:显示用户从何处登录系统,“:0”的显示代表该用户是从 X Window打开文本模式窗口登录的
IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
查看个别用户信息:w 用户名
查看系统中的进程 ps
常用选项
a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的进程
e:显示所有进程,包括没有控制终端的进程
l:长格式显示
w:宽行显示,可以使用多个w进行加宽显示
ps常用输出信息的含义
PID:进程号
PPID:父进程的进程号
TTY:进程启动的终端
STAT:进程当前状态
S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止
NI:进程优先级
TIME: 进程自从启动依赖启动CUP的总时间
COMMAND/CMD: 进程的命令名
USER: 用户名
%CUP: 占用CPU时间和总时间的百分比
%MEM: 占用内存与系统内存总量的百分比
ps应用实例
# ps 查看隶属于自己的进程
# ps –u or –l 查看隶属于自己进程详细信息 显示信息基本差不多
# ps –le or –aux 查看所有用户执行的进程的详细信息
# ps –aux –sort pid 可按进程执行的时间、PID、UID等对进程进行排序
# ps –aux | grep sam
# ps –uU sam
查看系统中指定用户执行的进程
# ps –le | grep init
查看指定进程信息
查看特定进程
# ps –ef|grep ora_smon
# ps –ef|grep LOCAL=NO
杀死进程 kill
为什么要杀死进程
该进程占用过多的CUP时间
该进程锁住了一个终端,使其他前台进程无法运行
运行时间过长,但没有预期效果
产生了过多到屏幕或磁盘文件的输出
无法正常退出
……
关闭进程:kill 进程号
kill -9 进程号 (强行关闭)
kill -1 进程号 (重启进程)
关闭图形程序:xkill
结束所有进程:killall
查找服务进程号:pgrep 服务名称
关闭进程:pkill 进程名称
Vim/Vi简介
Vim/Vi 是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是创建、编辑、显示文本文件。
Vim/Vi 没有菜单,只用命令。
www.vim.org
Vi、 Emacs、 UltraEdit
缺省进入vim/vi就是 命令模式 ,这个时候输入任何命令系统都会当作命令处理;
输入i、a、o插入命令,就会进入插入模式,这个时候vi/vim编辑器就可以像记事本一样来操作;
(插入模式到命令模式的切换用 Esc 键)
输入 : ,就是进入编辑模式,这个模式下就对文件进行一下包括保存退出的操作;
(编辑模式的命令执行完成后会自动回到命令模式)
插入命令
i:在光标前插入文本;
I:在本行开始插入文本;
a:在光标后附加文本;
A:在本行行末附加文本;
o:在光标下插入新行;
O:在光标上插入新行;
定位命令
h:方向左键
j:方向下一行
k:方向上键
l:方向右键
$:移至行尾
0:移至行首
H:移至屏幕上段
M:移至屏幕中央
L:移至屏幕下端
删除命令
x:删除光标所在处字符;
Nx:删除光标所在处后N个字符;
dd:删除光标所在行;
Ndd:删除N行;
dG:删除光标所在行到末尾的内容;
D:删除光标所在处行尾;
:n1,n2d:删除指定范围行;(比如删除1—8行的内容:1,8d 回车)
复制和剪切命令
yy、Y:复制当前行
nyy、nY:复制当前行以下n行
dd:剪切当前行
ndd:剪切当前行以下n行
p、P:粘帖在当前光标所在行下或行上
替换和取消命令
r:取代光标所在处字符;
R:从光标所在处开始替换字符,按Esc结束;
u:取消上一步操作;
搜索替换命令
/string:向前搜索指定字符串(sting表示指定字符串,如/ftc),搜索时忽略大小写:set ic;关闭忽略大小写,set noic;
n:搜索指定字符串的下一个出现位置(从前向后找);N:搜索指定字符串一个出现位置(从后向前找);
:%s/old/new/g:全文替换指定字符串;
:n1,n2s/old/new/g:在一定范围内替换指定字符串;g(表示替换时不询问确认),c(表示替换时候需要询问确认)
保存退出命令
:wq 写入退出write quite。
快捷键: ZZ (shift+zz)=:wq
如果文件是个的只读的文件,就会出现这样的提示,这时候我们可以加个!,如:wq!可以强行保存退出。
应用实例
n 导入文件 :r 文件名
n 在Vi中执行命令: :!命令
应用小技巧
例:在文件services的光标所在处加入当前时间
:r !date
n 定义快捷键 :map 快捷键 触发命令
例: :map ^P I#<Esc>定义快捷键ctrl+p 实现在行首加上#号并回到命令模式
:map ^E awtq630@126.com<Esc>
:map ^B 0x 定义快捷键 ctrl+b 删除行首的字符(#号)
ps:
这“^”符号可不是直接shift+6上去的,而是“crtl+v”“ctrl+p”或者“ctrl+v+p”形成的,否则即使写得像但是是执行不了的。
需要注意的是定义Ctrl的快捷键,ctrl+v是不变的,后面是用哪个字母表示快捷键,P或者其他的,会有变化。
n 连续行注释 :n1,n2s/^/#/g 在行首加#号
:n1,n2s/^#//g 把行首的#号去掉(替换为空)
:n1,n2s/^/\/\//g
ps:
^ 这个符号在vi里表示行首。
n 替换 :ab Irvingmail Irving@qq.com :unab Irvingmail(取消ab定义)
n vi ~ /.vimrc (设置日常使用的快捷键,这样就可以永久保存,不会随vi 的关闭而失效)
root /root
users /home zhangsan /home/zhansan lisi /home/lisi
~/.vimrc = /root/.vimrc ~宿主目录
Linux变量分类
Linux变量可分为两类:
永久的:需要修改配置文件,变量永久生效。
临时的:使用export命令声明即可,变量在关闭shell时失效。
Linux设置变量的三种方法
1、在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例:
编辑/etc/profile文件,添加CLASSPATH变
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行# source /etc/profile,不然只能在下次重进此用户时生效。
2、用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑oracle用户目录(/home/oracle)下的.bash_profile
$ vi /home/oracle/.bash_profile
添加如下内容:
export ORACLE_SID=orcl
注:修改文件后要想马上生效还要运行$ source /home/oracle/.bash_profile
不然只能在下次重进此用户时生效。
3、在shell的命令行下直接使用[export 变量名=变量值] 定义变量,
该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,
变量也就失效了,再打开新shell时就没有这个变量,
需要使用的话还需要重新定义。
例:
export DISPLAY=192.168.133.1:0.0
变量的查看和设置方法
1 使用echo命令查看单个环境变量。例如:
# echo $PATH
2 使用env查看所有环境变量。例如:
# env
3 使用set查看所有本地定义的环境变量。
4 unset可以删除指定的环境变量。
欢迎光临 重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) | Powered by Discuz! X3.2 |