1.mirror 目录名,用于下载ftp中的目录文件。
2./etc/profile.d配置环境变量
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
3.export
4.下载网络上的源码包,得到那个源码包的链接地址,然后用wget 链接地址。下载源码包。
5./etc/crontab 用于系统cron(周期性任务计划)
对于用户cron,使用crontab命令来实现。
-l 查看自己的cron任务列表。
-e 打开用户自己的cron配置文件进行编辑。
-r 移除crontab文件
如果是管理员,可以为别的用户配置crontab作业:使用 –u 选项
crontab –e –u xiezhao
1、 Service就是指常驻内存大一些程序,且可以提供一些系统或是网络功能。提供service的那个程序就成为daemon。Daemon和service可以视为等同,不必刻意去区分。
2、 Killproc专门杀掉deamon启动的服务,直接跟服务名。例:killpro named
3、 Daemon可以分为两类,一类是可独立启动的,成为stand alone;另一类是通过一支super daemon来统一管理的服务。
4、 Stand alone类型的daemon能够自动启动,常驻内存,对请求响应较快,如httpd、vsftpd等。
5、 Super daemon统一管理的是用户有请求,super daemon就唤醒响应daemon,如果用户请求结束,就kill掉该daemon。优点不用常驻内存,缺点装到内存需要时间。如telnet。这个super daemon早期是inetd,后来被xinetd取代。
6、 Super daemon与stand alone daemon的形象比喻:stand alone就像银行的专用窗口,某些窗口专门负责取钱,某些窗口专门负责兑换外币;super daemon就是一个综合性窗口,什么业务都受理。
7、 Linux中,daemon的命名规则通常是在所提供的服务名后面加d,如httpd。
8、 /etc/services文件中记录了service与port的对应关系。是网络服务文件,使用服务名称、端口名、协议名、以及别名来表示。
9、 Linux的端口号范围为0~65535:0,不适用;1-1023系统保留只能由root使用;1024-4999,客户端程序自由分配,5000-65535服务器端程序自由分配。
10、 一般的启动与关闭daemon都是写成一个shell script来完成。
11、 系统服务启动的script几乎全是放到/etc/init.d/目录下。CentOS实际上放到/etc/rc.d/init.d/中的,但是跟/etc/init.d/下一样,做了链接。
12、 几乎所有服务的初始化设定文档都是放在/etc/sysconfig/目录下,网络的初始化配置卸载/etc/sysconfig/network这个文件中。
13、 Super daemon的主要设定档写在/etc/xinetd.conf,它所管理的其它的daemon的设定档卸载/etc/xinetd.d/目录下。
14、 各服务的设定档都是放在/etc/目录下。
15、 /var/lib/放的都是各服务产生的数据。
16、 /var/run/放的是各服务的程序之PID记录处。
17、
18、 除了16中所描述的使用/etc/init.d/目录下的shell script来管理服务,启动关闭daemon以外,可以使用service这个script(可以直接查看/sbin/service这个文件,纯文本写成的script)来管理daemon,service这个script可以分析service后面的参数,到/etc/init.d/下去取得正确的服务来start或stop。如下:
19、 Super daemon本身也是一支stand alone的daemon。
19、partprobe 指令:告诉核心必须要重读新的分割表,指用fdisk进行分区后。
20、单向加密:用自己的私钥加密,别人用自己的公钥解密,来保证数据完整性和身份认证。
21、系统资源
# uname -a # 查看内核/操作系统/CPU信息# free -m # 查看内存使用量和交换区使用量
# head -n 1 /etc/issue # 查看操作系统版本# df -h # 查看各分区使用情况
# cat /proc/cpuinfo # 查看CPU信息# du -sh <目录名> # 查看指定目录的大小
# hostname # 查看计算机名# grep MemTotal /proc/meminfo # 查看内存总量
# lspci -tv # 列出所有PCI设备# grep MemFree /proc/meminfo # 查看空闲内存量
# lsusb -tv # 列出所有USB设备# uptime # 查看系统运行时间、用户数、负载
# lsmod # 列出加载的内核模块# cat /proc/loadavg # 查看系统负载
# env # 查看环境变量磁盘和分区网络
# mount | column -t # 查看挂接的分区状态# ifconfig # 查看所有网络接口的属性
# fdisk -l # 查看所有分区# iptables -L # 查看防火墙设置
# swapon -s # 查看所有交换分区# route -n # 查看路由表
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)# netstat -lntp # 查看所有监听端口
# dmesg | grep IDE # 查看启动时IDE设备检测状况# netstat -antp # 查看所有已经建立的连接进程# netstat -s # 查看网络统计信息
# ps -ef # 查看所有进程
# top # 实时显示进程状态用户服务
# w # 查看活动用户# chkconfig --list # 列出所有系统服务
# id <用户名> # 查看指定用户信息# chkconfig --list | grep on # 列出所有启动的系统服务
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务程序
# rpm -qa # 查看所有安装的软件包
如果是用rpm或者yum安装的软件包,那么其程序对应的服务可以通过service XXXX start,restart,status等进行启动服务,重启服务或者查看服务的运行状态。
如果是手动编译安装的,那么就不可以了,需要自己手动写这些配置文件,从而达到可以使用和上面一样的方式去启动,重启和查看,service XXXX start,restart,status.....其配置文件写在/etc/rc.d/init.d/中,名字自己起。
如何增加一个服务:
1.服务脚本必须存放在/etc/init.d/目录下;/etc/init.d只是/etc/rc.d/init.d的软链接;
2.chkconfig --add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig --level 35 mysqld on
修改服务的默认启动等级。加载内核完成后,执行init程序,由init执行的第一个脚本/etc/rc.d/rc.sysinit(设置主机名,开启网络,挂载设备),之后根据/etc/rc.d/rc的参数使系统运行在指定的运行级别上(可以在/etc/inittab中设置),根据运行级别然后启动对应脚本(/etc/rc.d/{rc0.d,rc1.d,rc2.d.....)这些脚本中都是到/etc/rc.d/init.d中的软链接,所以真正运行的服务都是在/etc/rc.d/init.d中的。
rc.sysinit(设置主机,网络,挂载设备)后,根据rc 参数指定运行的级别,然后进如对应的rc#.d中,读取需要启动和关闭的服务(这些服务都在init.d中,rc#.d中只是init.d中的软链接)
一般安装一个软件:配置文件都在/etc/xxx 与之同名的目录下。
程序在/usr/sbin /usr/bin /usr/local/sbin /usr/local/bin
Openssl : 格式为,例: openssl -enc
标准命令:enc(对称加密), dgst(单向加密), genrsa(生成密钥对), rsautl, req(生成证书签署请求), ca(签署证书), rsa(查看公钥), passwd(给密码生成加密后的乱码串)
FQDN:FQDN是Fully Qualified Domain Name的缩写, 含义是完整的域名
例如, 一台机器主机名(hostname)是www, 域后缀(domain)是example.com, 那么该主机的FQDN应该是www.example.com.
检查DNS设置:cat /etc/resolv.conf
检查网关设置:# route
检查主机名:# hostname
DNS的软件名称为BIND,安装完成后服务名为 named。
FQDN=主机名+域名
/etc/profile文件中修改环境变量,在这里修改的内容是对所有用户起作用的。
例子 export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH
文件的判断
-r 文件或目录对此(有效的)用户(effective user)或组是可读的
-w 文件或目录对此(有效的)用户或组是可写的 -x 文件或目录对此(有效的)用户或组是可执行的
-o 文件或目录由本(有效的)用户所有 -R 文件或目录对此用户(real user)或组是可读的
-W 文件或目录对此用户或组是可写的 -X 文件或目录对此用户或组是可执行的
-O 文件或目录由本用户所有 -e 文件或目录名存在
-z 文件存在,大小为0(目录恒为false) -s 文件或目录存在,大小大于0(值为文件的大小,单位:字节)
-f 为普通文本- -d 为目录 -l 为符号链接
-S 为socket -p 为管道(Entry is a named pipe(a“fifo”)) -b 为block-special 文件(如挂载磁盘)
-c 为character-special 文件(如I/O 设备)
-u setuid 的文件或目录 -g setgid 的文件或目录 -k File or directory has the sticky bit set
-t 文件句柄为TTY(系统函数isatty()的返回结果;不能对文件名使用这个测试)
-T 文件有些像“文本”文件 -B 文件有些像“二进制”文件
-M 修改的时间(单位:天) -A 访问的时间(单位:天) -C 索引节点修改时间(单位:天)
锁文件
/var/lock/subsys目录的作用的说明
很多程序需要判断是否当前已经有一个实例在运行,这个目录就是让程序判断是否有实例运行的标志,比如说xinetd,如果存在这个文件,表示已经有xinetd在运行了,否则就是没有,当然程序里面还要有相应的判断措施来真正确定是否有实例在运行。通常与该目录配套的还有/var/run目录,用来存放对应实例的PID,如果你写脚本的话,会发现这2个目录结合起来可以很方便的判断出许多服务是否在运行,运行的相关信息等等。
实际上,判断是否上锁就是判断这个文件,所以文件存在与否也就隐含了是否上锁。而这个目录的内容并不能表示一定上锁了,因为很多服务在启动脚本里用touch来创建这个加锁文件,在系统结束时该脚本负责清除锁,这本身就不可靠(比如意外失败导致锁文件仍然存在),我在脚本里一般是结合PID文件(如果有PID文件的话),从PID文件里得到该实例的PID,然后用ps测试是否存在该PID,从而判断是否真正有这个实例在运行,更加稳妥的方法是用进程通讯了,不过这样的话单单靠脚本就做不到了。
Linux下chkconfig命令详解
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
使用语法:
chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
参数用法:
--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。
运行级文件:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用\ 跨行注释。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.
使用范例:
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list #列出系统所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig --add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig --level 35 mysqld on
修改服务的默认启动等级。
/etc/init.d --> /etc/rc.d/init.d
在这里先解释一下init.d里面放的都是什么东西。这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本。系统在安装时装了好多rpm包,这里面就有很多对应的脚本。执行这些脚本可以用来启动,停止,重启这些服务。
前面说到,/etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行。程序运行到这里(init进程读取了运行级别),相信从命名的角度大家也能猜到该运行/etc/rc.d/init.d里面的脚本了,不然它为什么也叫init(.d)呢是吧。没错,是该运行init.d里的脚本了,但是并不是直接运行,而是有选择的因为系统并不需要启动所有的服务。
那么,系统是如何选择哪些需要启动哪些不要呢?这时刚才说的运行级别就起作用了。
在决定了系统启动的run level之后,/etc/rc.d/rc这个脚本先执行。在RH9和FC7的源码中它都是一上来就check_runlevel()(虽然实现的代码不一样,也大同小异),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本一些链接。每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在 rc5.d下,但是放在这个rc5.d下的都是一些链接文件,链接到init.d中相对应的文件,真正干活的init.d里的脚本。
resolv.conf的关键字主要有四个,分别是:
nameserver //定义DNS服务器的IP地址
domain //定义本地域名
search //定义域名的搜索列表
sortlist //对返回的域名进行排序
下面我们给出一个/etc/resolv.conf的示例:
domain 51osos.com
search www.51osos.com 51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69
最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。
nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。
domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。
search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。
domain和search不能共存;如果同时存在,后面出现的将会被使用。
sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序
编译安装软件包时 --enable-XXX :指定要启动什么功能
--with-XXX:指定把什么安装到哪个目录。不指定默认位置。
创建逻辑卷:
pvcreate /dev/sda3
vgcreate myvg /dev/sda3
lvcreate -L 10G -n mydata myvg
格式化:mke2fs -t ext4 /dev/myvg/mydata
开机自动挂载: /etc/fstab /dev/myvg/mydata/dataext4default00
配置环境变量:/etc/profile.d/httpd.sh
在了解/etc/ld.so.conf.d/目录下文件的作用之前,先介绍下程序运行是加载动态库的几种方法:
第一种,通过ldconfig命令
ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.
这里面涉及到的关键内容有命令:ldconfig,配置文件目录:/etc/ld.so.conf.d,配置文件在/etc/ld.so.conf内容由用户编辑,缓冲文件/etc/ld.so.cache。下面举个例子,比如你在部署软件时,有些动态库安装在/usr/local/httpd目录下,可以通过如下方法实现,
1)配置httpd.conf文件,里面加一行/usr/local/httpd/lib,然后将该文件放到/etc/ld.so.conf.d目录下;
2)在/etc/ld.so.conf文件中增加一行include ld.so.conf.d/httpd.conf
3)执行 ldconfig命令
之后程序运行时,会自动增加在httpd目录中搜索动态库。
第二种,通过LD_LIBRARY_PATH环境变量
可以通过在.bashrc或者.cshrc中配置该环境变量,LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开.
同样是上面的例子,可以通过以上的方法来实现
在.bashrc或.cshrc中增加一行,export LD_LIBRARY_PATH = ~/exe:$LD_LIBRARY_PATH即可。/etc/ld.so.conf.d/下面放的是动态库文件,即安装软件后生成的lib库文件。
设置系统环境变量:
对所有用户起作用的环境变量修改:/etc/profile
/etc/profile会首先执行/etc/profile.d/目录下的所有 *.sh文件在/etc/profile.d/中加入:/etc/profile.d/XXX.sh为软件包配置其所需的环境变量
/etc/rc.d/init.d/* -------------/etc/init.d
将服务脚本放入:/etc/rc.d/init.d/* 是将脚本加入服务列表中、而/etc/init.d只是/etc/rc.d/init.d的一个软链接、当运行service这个脚本运行服务时、service就会去/etc/init.d中去读取这个服务的服务。正确的服务来start或stop。service这个script(可以直接查看/sbin/service这个文件,纯文本写成的script)来管理daemon,service这个script可以分析service后面的参数,到/etc/init.d/下去取得正确的服务来start或stop
手动编译安装后(即: ./configure && make && make install 后)
①:修改配置文件 /etc/xxxd/xxxd.conf
②:提供服务脚本:/etc/rc.d/init.d/xxxd,还需要给脚本赋予执行权限
③:将服务添加至服务列表 chkconfig --add xxxd、启动脚本 chkconfig xxxd on
还需要添加环境变量 /etc/profile.d/xxx.sh 这样才能让软件命令生效
④:输出xxx的man手册至man命令的查找路径:
编辑/etc/man.config,添加如下行即可:
MANPATH /usr/local/xxx/man
⑤:输出xxx的头文件至系统头文件路径/usr/include:
这可以通过简单的创建链接实现:
# ln -sv /usr/local/xxx/include /usr/include/xxx(把软件中的include改名[即把include中的全部内容]放入到了系统的/include下。)
⑥:输出mysql的库文件给系统库查找路径:
# echo '/usr/local/xxx/lib' > /etc/ld.so.conf.d/xxx.conf
而后让系统重新载入系统库:
# ldconfig
各种端口
Apache--> httpd 端口:80 Mysql --> mysqld 端口:3306
Ssh ---> sshd 端口:22
usr/local:这里主要存放那些手动安装的软件
/usr/src:Linux源代码
/usr/include:系统头文件
LAMP linux apache mysql php/perl
RPM安装的apache,在/etc/httpd/中才有conf这个文件。建立虚拟主机在/etc/httpd/conf/httpd.conf中定义虚拟主机。
手动编译安装apache,在/etc/httpd/中没有conf这个文件。建立虚拟主机在 extra/ 中的http-vhosts.conf中定义虚拟主机。
route 路由相关: netmask:当添加一个网络路由时,需要使用网络掩码。
增加一个路由: route add -net IP netmask NETMASK dev eth#
route add -host IP netmask NETMASK dev eth#
删除一个路由: route del -net IP netmask NETMASK dev eth#
route del -net IP netmask NETMASK dev eth#