hi 感恩节——Linux基础教程之mysql和php
感恩节。虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面。愿大家安好!
学习Linux的前言
选择了Linux发行版本,你就会想如何开始学习Linux了。
1.当然是安装Linux了,请上网自行google或者百度,下载redhatlinux5的安装光盘,然后再安装vmware,自行安装
2.多动手,多敲命令。只看书,不实践,一切都是浮云。默认安装redhat5,启动redhat5是带有图形界面的,但是图形界面最好少用,对学习Linux不利,一定要尽量用字符界面,慢慢习惯。而工作中,使用Linux,使用图形界面的概率几乎是0。所以你去学习图形界面的技术价值,几乎为0,性价比不高。
如何学习Linux
1.学习Linux的第一件事情是学习Linux基础,这方面我推荐鸟哥的私房菜的Linux基础文件,里面讲解了Linux的文件,磁盘,网络,进程等,看懂了这本书,并且一个个命令去实践,你就开始入门Linux了。
2.学习Linux的第二事情就是用Linux。前面说过,Linux的最大用处是服务器领域,所以你要学的第二步是学会架设服务器,这方面我推荐鸟哥的私房菜Linux架站文件,这本书介绍了很多服务器的假设,没有必要把全部服务器的架设步骤都看完。个人觉得可以先看完架设服务器的基础,然后再看看如何搭建web服务器,ftp服务器,telnet服务器,ssh服务器。学会这几个服务器的搭建,管理,再根据个人兴趣和需要选择其他服务器的搭建。
3.进阶——编程。到了这里,你只是会用Linux而已,或许学会少许shell编程,能够学会简单的shell,编写脚本。但是你要进一步熟悉Linux,就要学会Linux编程。例如,Linux的管道是怎么做,Linux的deamon进程是如何实现的,为什么nohub可以让一个进程可以以daemon形式运行,即使关闭了shell也不会让这个进程也被关闭。这些,你学会了Linux环境编程,你就豁然开朗了。这里我推荐《UNIX环境高级编程》,此书是Linux/Unix编程的圣经,堪称惊世之作。
4.到了这里,你就可以对Linux/Unix有所了解,已经有一定的基础了,接下来你就要根据你的兴趣去选择你感兴趣的方向去学习,或许要根据你的工作方向去学习(很多时候工作不是自己的兴趣),师父领进门,修行在个人,以上的学习步骤是我能想到的最简化的步骤,学习的东西越多,只会让初学者更迷茫。
下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了。
一、Linux基础(二)
-----Linux常用命令(二)-----
3、文件搜索命令
3.1文件搜索命令locate
--优点:
搜索速度快(在学习中,要把眼光放远、放大一点,设想数据量很大的情况或是规模很大的问题的情况)
locate文件名
--工作原理:
在后台数据库按文件名搜索
所以,新创建的文件往往搜索不到(缺点)
解决办法:等(1天);updatedb命令更新数据库
--缺点:
只能按照文件名搜索(功能弱)——理解就是,牺牲功能提升速度
--搜索/更新配置:
vi/etc/updatedb.conf
得到
PRUNE_BIND_MOUNTS="yes"
PRUNEFS="9pafsanon_inodefsautoautofsbdevbinfmt_misccgroupcifscodaconfigfscpusetdebugfsdevptsecryptfsexofsfusefusectlgfsgfs2hugetlbfsinotifyfsiso9660jffs2lustremqueuencpfsnfsnfs4nfsdpipefsprocramfsrootfsrpc_pipefssecurityfsselinuxfssfssockfssysfstmpfsubifsudfusbfs"
PRUNENAMES=".git.hg.svn"
PRUNEPATHS="/afs/media/net/sfs/tmp/udev/var/cache/ccache/var/spool/cups/var/spool/squid/var/tmp"
第一行就是说,是否执行下列的更新规则
后面是不搜索这些文件夹/文件
所以有时候有些目录中的内容搜索不到的——比如常用的/tmp
3.2命令搜索命令whereis和which
3.2.1whereis
--基本
[root@andy~]#whereisls ls:/bin/ls/usr/share/man/man1p/ls.1p.gz/usr/share/man/man1/ls.1.gz
能搜索到命令的目录以及其帮助文档的目录(所以命令所在位置whereis,同时要牢记,linux中一切皆文件)
--选项
-b只查找可执行文件
-m只查找帮助文件
[root@andy~]#whereis-bmkdir
mkdir:/bin/mkdir
3.2.2which
--基本
[root@andy~]#whichls
aliasls='ls--color=auto'
/bin/ls
还会查到别名(如果有的话)。
这里ls会自动显示不同的颜色
[root@andy~]#whichpwd
/bin/pwd
没有别名就还是这样,但没有帮助文档
3.2.3其他说明
--找不到的命令
[root@andy~]#whichcd /usr/bin/which:nocdin(/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) [root@andy~]#wherecd -bash:where:commandnotfound
有些类型是找不到的,原因是shell自带的(以后学)
--path环境变量
环境设定的基本路径,比如上述(/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
它使我们可以不用绝对路径来输入命令——windows也是这样的
还是那句话,都是文件
path环境变量的定义:系统搜索命令的路径
自己写的程序,要么命令都写绝对路径,要么放在这些path路径中
3.3find命令
最强大的搜索命令——这里只学习基本的、常用的用法
--基本
find[搜索范围][搜索条件]文件名
[root@andy~]#find/-nameinstall.log /root/install.log
会发现速度很慢——范围太大
而且真实情况会更加复杂,有可能速度更慢,压力更大
——尽量缩小范围!
而且,如果打算进行模糊匹配,比如install.log.syslog。这个命令是查不到的,要进行通配符匹配,通配符是完全匹配
--通配符
*匹配任意内容
[root@andy~]#find/root-name"install.log*" /root/install.log.syslog /root/install.log
?匹配任意一个字符
[]匹配中括号中的任意一个字符
[root@andy~]#find/root-name"*[asdf]?" /root/anaconda-ks.cfg /root/.viminfo /root/japan /root/japan/anaconda-ks.cfg
要注意,find是完全匹配,要小心
--搜索条件
-
find/root-name install.log 按照文件名搜索
find/root-innameinstall.log 不区分大小写
-
find/root-userinstall.log 按照所有者搜索(不常用)
find/root-nouser搜索所有没有所有者的文件(常用)——这种文件很多是垃圾文件,但是有两种情况除外——内核创建的(sys中);外来文件(比如U盘)
-
find/var/log-mtime+10 查找10天前修改的文件——atime文件访问时间,mtime修改文件时间,ctime改变文件属性;+1010天前修改的文件,-1010天内,1010天当天(注意没有10天后,哈哈)——常用于日志的删除/筛选中的(默认按天)
-
find.-size25k在当前目录下搜索25k大小的文件——+25或-25也可以
[root@andy~]#find.-size25k [root@andy~]#ll 总用量48 -rw-------.2rootroot127311月2605:32anaconda-ks.cfg -rw-r--r--.1rootroot011月2606:05cangls -rw-r--r--.1rootroot2642011月2503:55install.log -rw-r--r--.1rootroot757211月2503:52install.log.syslog drwxr-xr-x.3rootroot409611月2605:43japan [root@andy~]#find.-size+25k ./install.log [root@andy~]#find.-size-25k . ./.tcshrc ./anaconda-ks.cfg ./cangls ./install.log.syslog ./.bash_profile ./.bash_logout ./.bash_history ./.bashrc ./.viminfo ./.cshrc ./japan ./japan/anaconda-ks.cfg ./japan/cangls [root@andy~]#find.-size-25m find:无效的-size类型“m” [root@andy~]#find.-size-25M . ./.tcshrc ./anaconda-ks.cfg ./cangls ./install.log.syslog ./.bash_profile ./.bash_logout ./.bash_history ./install.log ./.bashrc ./.viminfo ./.cshrc ./japan ./japan/anaconda-ks.cfg ./japan/cangls [root@andy~]#
注意Mb是大写的M,kb是小写的k
-
find.-inum213123在当前目录按照i节点搜索213123的文件——常常搭配ls-i使用
-复杂操作
find/etc-size+20k-a-size-50k这里的-a是与,-o是或 [root@andy~]#find/etc-size+20k-a-size-50k /etc/selinux/targeted/modules/active/modules/unprivuser.pp /etc/selinux/targeted/modules/active/modules/xguest.pp /etc/selinux/targeted/modules/active/modules/virt.pp /etc/selinux/targeted/modules/active/modules/postfix.pp /etc/selinux/targeted/modules/active/modules/unconfineduser.pp /etc/selinux/targeted/modules/active/modules/nagios.pp /etc/selinux/targeted/modules/active/modules/cups.pp /etc/selinux/targeted/modules/active/modules/rhcs.pp /etc/selinux/targeted/modules/active/modules/apache.pp /etc/selinux/targeted/modules/active/modules/staff.pp /etc/selinux/targeted/modules/active/modules/samba.pp /etc/mime.types /etc/sysconfig/network-scripts/network-functions-ipv6 /etc/postfix/main.cf /etc/ld.so.cache /etc/libreport/events/report_RHTSupportAttach.xml /etc/libreport/events/report_RHTSupport.xml /etc/makedev.d/01linux-2.6.x /etc/sound/events/gnome-2.soundlist - find/etc-size+20k-a-size-50k-execls-lh{}\; [root@andy~]#find/etc-size+20k-a-size-50k-execls-lh{}\; -rw-------.1rootroot37K11月2503:46/etc/selinux/targeted/modules/active/modules/unprivuser.pp -rw-------.1rootroot26K11月2503:46/etc/selinux/targeted/modules/active/modules/xguest.pp -rw-------.1rootroot24K11月2503:46/etc/selinux/targeted/modules/active/modules/virt.pp -rw-------.1rootroot31K11月2503:46/etc/selinux/targeted/modules/active/modules/postfix.pp -rw-------.1rootroot29K11月2503:46/etc/selinux/targeted/modules/active/modules/unconfineduser.pp -rw-------.1rootroot21K11月2503:46/etc/selinux/targeted/modules/active/modules/nagios.pp -rw-------.1rootroot21K11月2503:46/etc/selinux/targeted/modules/active/modules/cups.pp -rw-------.1rootroot26K11月2503:46/etc/selinux/targeted/modules/active/modules/rhcs.pp -rw-------.1rootroot27K11月2503:46/etc/selinux/targeted/modules/active/modules/apache.pp -rw-------.1rootroot42K11月2503:46/etc/selinux/targeted/modules/active/modules/staff.pp -rw-------.1rootroot24K11月2503:46/etc/selinux/targeted/modules/active/modules/samba.pp -rw-r--r--.1rootroot43K9月232011/etc/mime.types -rw-r--r--.1rootroot30K7月222014/etc/sysconfig/network-scripts/network-functions-ipv6 -rw-r--r--.1rootroot27K2月202014/etc/postfix/main.cf -rw-r--r--.1rootroot40K11月2503:52/etc/ld.so.cache -rw-r--r--.1rootroot23K10月162014/etc/libreport/events/report_RHTSupportAttach.xml -rw-r--r--.1rootroot22K10月162014/etc/libreport/events/report_RHTSupport.xml -rw-r--r--.1rootroot28K11月112010/etc/makedev.d/01linux-2.6.x -rw-r--r--.1rootroot27K11月122010/etc/sound/events/gnome-2.soundlist
这里是用-exec加入第二条命令,执行前面的结果,而且必须加{}/;
------总结
就是find很强大,功能很多,灵活多变;同时带来了,使用复杂,速度不好定
3.4grep命令
--基本
搜索字符串:grep[选项]字符串文件名
[root@andy~]#grep"size"anaconda-ks.cfg #part/boot--fstype=ext4--size=200 #partswap--size=4000 #part/home--fstype=ext4--size=2000 #part/--fstype=ext4--grow--size=200
注意,搜索到的不是符合字符串的文件,而是文件中相应的字符串——与find区分
--选项
-v取反,即不包含字符串的
-i不区分大小写
--与find
find:找文件+完全匹配+使用通配符匹配
grep:找字符串+包含匹配+使用正则表达式匹配
-------------------------------------------------------------------
二、PHP与MySQL
-----文章发布系统实践(一)-----
理解php操作mysql的方法,熟悉掌握php的mysql函数
1、需求分析
1.1后台管理系统
管理-列表
发布,修改,删除-程序
1.2前台展示系统
文章列表,文章内容页
1.3数据库设计
一个表即可,用于存放文章
(我不想画表格,直接写数据库命令好了,但愿以后的我看得懂)
CERATETABLEarticle( idINT(11)PRIMARYKEYAUTO_INCREMENT, titleCHAR(100)NOTNULL, authorCHAR(50)NOTNULL, descriptionVARCHAR(255)NOTNULL, contentTEXTNOTNULL, datelineINT(11)NOTNULLDEFAULT0 );
1.4项目规划
项目需要什么文件
2、后台管理系统
2.1创建配置文件和初始化文件