linux个人笔记
1,解压
tar-xvzfphp-5.2.13.tar.gz
2.编译
cdphp-5.2.13
./configure--prefix=/usr/local/php--with-config-file-path=/usr/local/php/conf--
with-apxs2=/usr/local/apache/bin/apxs
说明:
--prefix=/usr/local/php安装路径
--with-config-file-path=/usr/local/php/conf/指定php配置文件存放路径,待安装完毕后
,要把php.ini复制到该路径内.
--with-apxs2=/usr/local/apache/bin/apxs指定apache中DSO模块的位置
3,安装
make
makeinstall
4.cpconf/php.ini-dist/usr/local/php/conf/php.ini
至此,php安装完毕,下面是修改apache相关配置来和php协作.
1.修改apache配置文件,寻找含有#AddTypeapplication的行,在其下面加入一行,注意前面没有#号。
AddTypeapplication/x-httpd-php.php
2.重启apache
/usr/local/apache/bin/apachectlstop
/usr/local/apache/bin/apachectlstart
3.在相应的目录下编写php文件,并修改php文件属性为755,如:
chmod755test.php
Linux操作系统学习线路图如果你正在学习Linux操作系统,不知从哪里入手,可以参考下面给出的9点
建议,还有一点是本人附加的,Linux程序工程师非常吃香,以后肯定是个火红职业。不管怎样,只要
努力的学,后果很美好。
统文件
文件扩展名说明
.conf 一种配置文件。配置文件有时也使用.cfg
.lock 锁(lock)文件;用来判定程序或设备是否正在被使用
.rpm RedHat用来安装软件的软件包管理器文件
脚本文件
文件扩展名说明
.c C程序语言的源码文件
.cpp C++程序语言的源码文件
.h C或C++程序语言的头文件
.o 程序的对象文件
.so 库文件
.sh shell脚本
.java Java程序源代码文件
.lcss Java程序源代码编译后的中间代码文件
1.掌握至少50个以上的常用命令。
比如:安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh
文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln
系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、
tar、unzip、gunzip、last
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger
、mail、nslookup
系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho
2.熟悉Gnome/KDE等X-windows桌面环境操作。
3.掌握.tgz、.rpm等软件包的常用安装方法。
4.学习添加外设,安装设备驱动程序(比如网卡)。
5.熟悉Grub/Lilo引导其及简单的修复操作。
6.熟悉Linux文件系统和目录结构。
7.掌握vi,gcc,gdb等常用编辑器,编译器,调试器。
8.理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。
9.学习Linux环境下的组网。
权限不够chmod777文件或目录
访问xpsmb://ip
wget网上下载
/要查找的字符向下vim工具查找
?要查找的字符向上
蓝色表示目录;
绿色表示可执行文件;
红色表示压缩文件;
浅蓝色表示链接文件;
灰色表示其它文件;
红色闪烁表示链接的文件有问题了;
黄色是设备文件,包括block,char,fifo。
查询当前Linux版本:uname-a
重启apache,servicehttpdrestart
vim下跳到第几行
:数字
显示行号:setnu
如果要取消行号,使用:setnonu
用户主目录:/root,/home/username
用户可执行程序目录:/bin,/usr/bin,/usr/local/bin
系统可执行程序:/sbin,/usr/sbin,/usr/local/sbin
挂载点:/media,/mnt
常用的配置文件目录:/etc
临时文件目录:/tmp
内核及引导目录:/boot
服务器目录:/var
系统信息目录:/proc,/sys
共享库目录:/lib,/usr/lib,/usr/local/lib
[roo@localhost~]#
user:root主机名:rhel5目录:/root
如果我想切换会我的家目录有什么方法?
总结下
cd回当前用户家目录
cd~也是回当前用户家目录
cd-回上一次所在的目录
还有两种方法
cd/root使用绝对路径
cdroot使用相对路径
.代表当前目录
..代表上一级目录
vi或vim是Linux最基本的文本编辑工具
ls-a显示所有文件包括隐藏文件
ls-l以长列表方式显示文件
LINUX里只要文件名前有一个点的就是隐藏文件
-rw-------
drwxr-xr-x
-rw-r--r--
在linux中,所有东西都被当成文件。
文件权限前的第一个字母用来标识文件类型:
-:一般文件
d:目录文件
b:块设备文件
c:字符设备文件
l:链接文件
p:人工管道
234位代表文件所有者的权限。
567位代表文件所属组的权限。
8910代表其他用户的权限。
r是读的意思
W是写的意思
X是执行的意思
硬连接就像一个文件有多个文件名,
软连接就是产生一个新文件,这个文件指向另一个文件的位置,
硬连接必须在同一文件系统中,而软连接可以跨文件系统.
ls-l/root看不到/root目录的长列表,你在文件名那里找不到/root
我们需要加一个d参数,ls-ld/root
注意,在打命令和目录的时候,你们一定要用TAB键来补全,这样比较轻松,也能检查命令是否正确。
如果不能补全就证明你的命令有问题
用命令补全,TAB,他会自动加上最后那个/符号,证明这是个目录,如果后面没有/的话,这个可能是
目录,也可能是文件
由于linux中的文件名中没有扩展名,所以可能需要用file来查看文件类型
touch创建文件
file来查看文件类型
将所有的C语言程式拷贝至Finished子目录中:
cp*.cFinished
Kernel系统内核用于在计算机启动时载入基本内存、管理基本输入输出、管理进程初始化和进程的调
度。
Shell系统的命令解释器,翻译成中文也就叫壳,外壳的意思,就是最表面的,用于操作系统与用户的
通信
想知道你们系统中有哪些shell,可以用这个命令:cat/etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
这是我系统中的所有的shell,不过我们一般使用的是第二种,bash
一个用户使用什么shell可以在/etc/passwd中查看
用户可以用set或env查询当前的环境变量
常用的预定义变量:
HOME:当前用户的主目录
PATH:当前用户的可执行文件搜索路径
LANG:程序应该使用的默认语言
PS1:行提示符
可以用echo$变量名字来查看变量
echo$PATH这是可执行程序的搜索路径
命令进入图形
修改文件就可以开机自动到XWINDOS
/etc.inittabid:3:initdefault:把3该5就可以了
用户变量是用户在编写shell过程中,可以在shell程序内任意使用和修改的变量。(以字母或下划线开
头,通常字母是大写母)
赋值:变量名=变量值
获取变量值${变量名}
例:VAR=hellorhce;赋值
echo${VAR};显示变量值
也可以使用printf来产生各种格式的输出
read从标准输入读取数据来为var1这个变量赋值
-p输出提示字符
read-p"Enterafilename:"FILE
[root@localhost~]#read-p"Enterafilename:"FILE
Enterafilename:nihao
[root@localhost~]#echo$FILE
nihao
使用!来调用过往指令:
!l:重复执行上一条以l为首的指令
!c:重复执行上一条以c为首的指令
!!:重复执行上一条指令
!number:重复执行上一条在history表中记录号码为number的指令
!23
!-number:重复执行前第number条指令
!$:表示获得前面命令行中的最后一项内容
命令行输出——“”将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义
。
命令行输出——‘’将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义
。
以上跟php语法一样
执行引用符——``引用命令的执行结果
``是Tab键上面那个键
[root@localhost~]#echo"Thistimeis:date"
Thistimeis:date
[root@localhost~]#echo"Thistimeis:`date`"
Thistimeis:TueNov421:11:55CST2008
[root@localhost~]#VAR=$[2*5]
[root@localhost~]#echo$VAR
10
脱逸符——\
用于取消命令行中字符的特殊含义
用于表示一行未结束
命令行结束符——;
用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键
[root@localhost~]#pwd;ls-l
子shell激活——()
在小括号内的命令行表示激活一个子shell后在子shell中运行
&&:当前一条指令执行成功时再执行后一条指令
||:当前一条指令执行失败时再执行后一条指令
键入alias可以查询当前alias列表。
用户可以alias来为一条命令取一个简单的别名
用户也可以用unalias来取消一条别名记录
我们可以把很长的命令或者参数,用一个别名来表示,方便我们输入
这种方法是临时的,如果使你的更改永久生效,需要把他写入一个配置文件
vim.bashrc
.bashrc文件内容aliasrm='rm-1'aliascp='cp-1'
.o,是目标文件,相当于windows中的.obj文件
.so为共享库,是sharedobject,用于动态连接的,和dll差不多
.a为静态库,是好多个.o合在一起,用于静态连接
cat是concatenate的缩写,所以它的作用其实是连接文件
比如我要看install.log的内容就可以使用catinstall.log
More文件名
当一个文件的内容超过一屏后,我们可以用more这个指令来逐屏察看文件内容。
使用方法,more文件名,然后使用空格键,他会一页一页的往下翻,使用回车键,他会一行一行的往下翻.
按b可以往上翻页.
如果会vim的会员可以使用v,他会在当前一页进入vi编辑模式。
Less文件名
less在more的基础上,更可以逐行察看,前后翻页。
他相对与more来说,他的优势是可以一行一行的看。而more是一页一页的查看,个人感觉两个命令功
能差不多。
还有less这个命令都可以输入/关键字进行搜索
递归拷贝就是如果那个目录里面还有目录,都会一层一层的全部拷贝
cp-r333333.bk备份
mv是move的缩写,可以用来将一个文件移动到另一个位置
当目标文件名与源文件名不一致时,mv就起到了rename的作用
rm是remove的缩写,可以用来删除一个文件。如果你是删除目录的话,也要使用-r,递归删除
rm-r333不提示rm-ir333提示rmdir333删除目录提示
如果是目录,需要递归删除。大家发现了吗?不使用-i他也会提示问你是否删除
使用cat和重导向把/etc/passwd>passwd复制到用户主目录
这个命令可以代替cp使用,而且通常使用这个命令比较多,要求大家掌握
wc用来统计一个文件的行数(-l)、词数(-w)、字符数(-c)并送到标准输出。
做统计的时候很方便????????????
grep用来从一个文件中找出匹配指定关键字的那一行,并送到标准输出,结合管道,我们通常用它来过
滤搜索结果.
catpasswd|greproot通常可以使用这种方法,查找passwd文件里和root有关系
grep支持用扩展的正则表达式来进一步定义关键字,具体如下:
.替代任何一个单一字符
.*替代零个或任意个字符
[abc]替代a、b或c
[^abc]替代除了a、b、c以外的字符
a*替代空、a、aa、aaa、乃至更多个a
a?替代一个或零个单独的a
a+替代a、aa、aaa乃至更多个a
a\{n\}替代重复了n次的a
^a替代以a为首的行
a$替代以a为尾的行
head显示文件开头部分内容,默认显示十行参数--lines或者–n指明显示行数
tail显示文件结尾部分内容,参数-f显示文件的即时更新,用于监视日志文件这个命令很常用了
tail-f命令一般用来监控日志文件
sort用来按各种需要重新排列文本,一般运用在一个管道之后如:ls-a|grepbash|sort
默认情况下sort按照字母顺序排列文本。
-n按照数字排序
-r反向排序
-u将重复的行去除
diff用于比较两个文件之间的区别
difffile1file2
1,2c1,36字母(a、d、和c)之前的行号(n1,n2)是针对file1的,其后面的行号(n3,n4)是
针对file2的
字母a,b,c分别表示附加、删除和修改操作
uniq用于去除文本中重复的行。-u参数可以只显示那些没有被重复过的行。-d显示有被重复过的行。
cut可以根据一个指定的标记(默认是tab)来为文本划分列,然后将此列显示
把PASSWD的第一列显示出来,导入到file文件里
cut-f1-d:/etc/passwd>file进入file文件查看
这个命令在以后的服务器架设中很有用处的,一定要记住,-d后面跟的是分割符号-f后面是第几行
然后重定向
我们查看passwd文件,看他的规律,都是用:分分隔的,所以-d后面是:,然后用户是第一列,所以
我们用-f1,passwd最后一个标签是该用户默认使用的shell.
paste将几份文集那按照列的方式拼接。默认情况下,新文件的列分隔符是tab,也可以用-d参数指定分
隔符
流编辑器sed(StreamEditor)
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“
模式空间”(patternspace),
接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样
不断重复,直到文件末尾。
文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件
使用>>让系统将一次键盘的全部输入,先送入虚拟的‘当前文档’,然后一次性输入
需要一对字母、符号或字符串作为起始终结标识符
可以选择任意符号作为起始终结标识符
使用>改变数据输出目标
使用>进行输出重定向,文件的原内容会被覆盖
使用>>可以将输出追加入文件
catfile1>file2
拷贝file1到file2
catfile*>file
将数个小文件合并成一个文件
网卡配置
网卡设备名字:eth0,eth1,…
eth0代表第一块网卡
配置命令:
system-config-network
system-config-network-tui
system-config-network-gui
上面三个命令都可以配置网卡,第一个要求有图形界面的才能
修改配置文件来完成网卡配置
网卡设备配置结果存放在:/etc/sysconfig/network-scripts/ifcfg-ethX
大家记住这个路径
新的网络配置生效:servicenetworkrestart
查看网卡的配置情况ifconfig网卡名字如:ifconfigeth0
如果有inetaddr的话,那就ping自己看能不能通。如果没有inetaddr,那证明你的配置没有成功,
有ip,但是不能ping通其他主机的IP地址话就证明的的网络不能到达,或者WINDOWS防火墙不允许ICMP
包通过。
禁用某个网卡ifdown网卡名
激活某个网卡ifup网卡名
网络的其他配置vim/etc/sysconfig/network文件该文件用来指定服务器上的网络配置信息
mesg命令设定是否允许其他用户用write命令给自己发送信息。如果允许别人给自己发送信息,输入命
令:
#mesgy
否则,输入:
#mesgn
如果mesg后不带所有参数,则显示当前的状态是y还是n
wall命令是对所有在线的用户进行广播的
write:命令的功能是向系统中某一个用户发送信息。
write用户帐号[终端名称]
所谓的用户帐号,我想大家都应该知道,就是你登录Linux系统的用户名,(如root或/home目录下的用
户名)。但注意,这里要的不是你的帐号,而是对方的帐号。
终端名称,就是系统发配给你的一个终端号,要知道,一台机子同一个用户(如root),能有多个用户
在用,能多个人用root用户名登录在远程操作Linux系统,所以不得不给每个人(终端)分配一个号来差
别。你能还不知道这个东西是什么,那么输入ps命令吧,一切就明白了
DNS客户端配置/etc/resolv.conf这是DNS的配置文件
nameserver就是DNS服务器在后面就可以跟DNS服务器的IP,你可以在这个文件里定义多个DNS,解析
顺序是从上至下。
每行只能写一个哈,这个要记住
下面就是网关,LINUX网关分全局和局部
vim/etc/sysconfig/network
network这个配置文件里设置的网关就是全局的,对所有网卡都有效。要在GATEWAY这指定,添加或修
改这行就可以了
硬链接
硬链接文件完全等同于原文件,原文件名和连接文件名都指向相同的物理地址。不可以跨文件系统,也
不可以建立目录的硬链接。文件在磁盘中只有一个拷贝,节省硬盘空间;由于删除文件时要删除唯一
的索引连接时才能成功,因此可以防止不必要的误删除。
passwd文件
vim/etc/passwd
michael:x:500:500:michael:/home/michael:/bin/bash
用户名:密码:UID:GID:用户描述:用户主目录:用户登录Shell
shadow文件
vim/etc/shadow
mysql:!!:14530:0:99999:7:::
用户名:密码:自1970/1/1起,密码被修改的天数:两次修改口令间隔最少的天数:密码过期最多多少
天:口令过期之后多少天禁用此用户:
用户过期日期(距1970/1/1的天数):保留字段
新建useraddredhat
在passwd和shadow文件查看
usermod-c描述内容redhat修改用户描述即家目录前那个
usermod-d/home/rehat修改家目录原来是/home/rehat
usermod-e时间redhat设置用户密码过期时间格式20080808
usermod-e7redhat
usermod-e8redhat
usermod-lredhatredhat修改登录名
usermod-g用户组redhat改变用户gid
usermod-G用户组redhat将用户添加人一个新组
usermod-snologinredhat改变用户的登陆shell在/etc/shells查看
usermod-Lredhat锁住密码,使账号不能用
usermod-Uredhat解锁加锁在shadow文件中密码那行的第一个字符多了个!这就是加
锁的标志,MD5加密也有个!
cat/etc/group查看用户组
groupadd添加一个组
groupdel删除一个已存在的组
groupmod-n新组名原组名
gpasswd-a用户名用户组,将一个用户添加入一个组
who查看当前在线的用户
who:查询当前在线的用户
w:查询当前在线用户的详细信息
groups:查询用户所属的组
id:显示当前用户信息
finger:查询用户信息
last:列出最近的用户登录
lastlog:列出每一个用户的最近登录情况
系统默认权限
文件的基数为:666
文件夹的基数为:777
useradd名创建用户
userdel名删除用户
passwd用户名修改用户密码
chmod文件权限文件名字
只有root用户可以用chown来改变文件的拥有者。
chmod后可以用三个数字来表示用户权限
第一位代表文件拥有者权限
第二位代表文件所属组成员权限
第三位代表其他用户权限
一个文件权限分成U,G,O三部分。每部分又分为R,W,X三种权限。那么我们用三组数字来表示,三种
用户的权限。
4(读)
2(写)
1(执行)
用数字表示,比如777
如果是7,就证明他有那三种权限,如果是5就证明那个位置的用户只有4和1的权限,也就是没有2,写
的权限。
文件的拥有者与root用户,可以用chgrp来改变文件所属的组
语法:chgrp组名文件名
一般普通用户的用户ID与组ID的值大于等于500,而系统用户ID与组ID小于500
我们创建一个用户的时候,会自动创建用户主目录,会分配UID,还有密码策略,是在/etc/login.defs
文件规定的
login.defs此文件是新建用户的配置文件
MAIL_DIR/var/spool/mail意思是建立用户的时候同时也在规定这个目录建立邮件目录
PASS_MAX_DAYS99999密码有效期
PASS_MIN_DAYS0密码最小更改时间,单位是天。为0,就是没有限制
PASS_MIN_LEN5密码的最小长度
PASS_WARN_AGE7密码过期前几天提醒用户,默认是7天
UID_MIN新建用户的最小UID是500
UID_MAX新建用户的最大UID是60000
GID_MIN
GID_MAX
CREATE_HOMEyes是否给新建用户建立家目录
UMASK077给用户建立家目录的权限掩码
USERGROUPS_ENAByes在建立一个用户的时候也建立相应的组
MD5_CRYPT_ENAByes使用MD5或DES加密的密码?红帽默认使用的MD5
目录的初始权限是777
文件的初始权限是666
然后用初始权限减去权限掩码得到的就是新建文件或者目录的权限
可以用umask命令查看当前用户的权限掩码
普通用户的掩码是002
root的掩码是0022
新建目录的权限就是777-022=755
新建文件的权根就是666-022=744
用户家目录的掩码是077
用户家目录的权限是777-077=700
权限0755最前一位是2和4叫强制位,1叫冒险位,2代表的是GID,4代表UID,1代表sticky(这里的GID
和UID和以前的不一样)
GID的作用:默认情况下,用户建立的文件属于用户当前所在的组,但是设置了GID以后,表示在此目录
中,任何人建立的文件,都会属于目录所属的组。注意:GID只能对目录设置
UID的作用:当一个文件设置了UID,那么所有用户执行这个文件的时候,都以这个用户的所有者的权限
来执行的。
mkdirredhat
chmod2755redhat/设置GID
查看文件权限时有个s这个就是强制位的标志
chmod0755redhat/把权限改回
这个在文件权限和团队使用文件目录很有用处
sticky
这个功能就更强了,当你们公司有一个交换目录的时候,大家都要对这个目录有写入权限,这样,别人
就可以删除你的文件了,有什么办法不让别人删除你的文件呢?当然sticky可以满足
一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者与系统管理员可以删
除文件。
查看权限最后一个X变成了t,
ACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限
getfacl文件名获取文件的访问控制信息
setfacl-mu:用户名:权限文件名
setfacl-mg:用户名:权限文件名
setfacl-x用户名文件名
setfacl-xg:用户名文件名
如:setfacl-mu:redhat:rwxfile
setfacl-mg:redhat:rwfile
setfacl-xredhatfile
setfacl-xg:redhatfile
which显示一个可执行文件的完整路径
whichls
whereis搜索一个可执行工具及相关配置、帮助
whereisls
ls:/bin/ls/usr/share/man/manlp/ls.lp.gz/usr/share/man/manl/ls.l.gz
ls:表示查找的这个命令
/bin/ls是可执行文件位置
后面两个是帮助文件
find
-user:根据文件拥有者寻找文件
-group:根据文件所属组找文件
-name:根据文件名找文件
-perm:根据文件权限寻找文件
-size:根据文件大小寻找文件
-type:根据文件类型寻找文件,参数对应c、b、l、f、d
-o:表达式或
-not:表达式非
查找/home下所有者的root文件:find/home-userroot
查找/etc下面与root有关的文件:find/etc-userroot
找/boot目录下root组的文件:find/boot-grouproot
find/-nameifcfg-eth0
find/-perm725
find/-size+40M
find/-size-40M
find/-size40M
单位k小写,M和G大写
locate是在数据库中查找,所以速度快,但是数据库是有个计划任务来管理更新
touch123321
locate123321
updatedb
/root/123321
uname:显示系统信息
-a系统所有信息
-r系统内核版本
hostname:显示主机名
关于修改主机名字需要修改3三个地方:
1.hostname命令
2.修改/etc/hosts
3.修改/etc/sysconfig/network
last最近用户的登录
lastlog:列出每一个用户的最近登录情况
free:显示内存使用情况
Linux内核的命名机制:
num.num.num
其中第一个数字是主版本号,第二个数字是次版本号,第三个数字是修订版本号.如果次版本号是偶
数,那么该内核就是稳定版的;若是奇数,则是开发版的.头两个数字合在一齐可以描述内核系列.如稳定
版的2.6.4,它是2.6版内核系列.