1.查看系统信息
- 硬盘大小
fdisk -l
/dev/sda 操作系统中第一块硬盘的名称以及所在路径
Linux系统中一切皆文件(文件名) sd(硬盘类型sata) a(第一块),例如第三块硬盘就叫sdc
分配20G却显示21.5GB=1000x20+24x20(在linux中1G=1000,但实际上还是1024)
[root@localhost okra]# fdisk -l
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b687f
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
- 内存大小
cat /proc/meminfo
Memtotal:995676kb 内存大小为1G
[root@localhost okra]# cat /proc/meminfo
MemTotal: 995676 kB
.
.
.
- CPU型号
cat /proc/cpuinfo
[root@localhost okra]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
stepping : 9
.
.
.
- 开机和关机
reboot 重启
poweroff 关机
2.Linux操作系统树状结构
目录==文件
cd change directory
.. 返回上一级目录
/ 根路径/起始路径
pwd 列出当前所在目录路径
ls list列出当前目录的内容
/bin 普通用户和管理员都可以执行的命令
/sbin 只有管理员才能执行的命令 关机重启
/boot 引导 主引导目录 独立的分区 启动菜单 内核
/dev device设备 设备文件存放目录
/etc 配置文件存放目录
/home 普通用户的家目录
/root 管理员的家目录
/media 光驱的挂载目录
/mnt 临时设备的挂载目录
/proc 里面的数据都在内存中,进程的所在目录
/tmp 临时文件存放目录
/usr 软件的安装目录
/var 常变文件存放 日志文件 邮件文件
安装VMwaretools,实现虚拟机和真机之间文件复制
进入VMwareTools所在目录,使用以下命令进行解压;也可以右键点击VMwareTools软件压缩包,解压
tar -zxvf VMwareTools-9.9.0-2304977.tar.gz
进入vmware-tools-distrib/文件夹
cd vmware-tools-distrib/
使用管理员权限安装软件,也可以在最后加上-d,这样在安装时就可以避免一直按回车;代表安装选项全部默认
sudo ./vmware-install.pl
sudo ./vmware-install.pl -d
之后让他自动重启即可,什么都别动
3.快捷键
- 自动补齐
Tab
- 清除屏幕内容
ctrl+l
- 终止快捷键
ctrl+c
4.Linux系统下如何区分文件类型
蓝色 ---目录
黑色 ---普通文件
浅蓝色 ---符号链接(快捷方式)
黑底黄字 ---设备文件(硬盘文件...)
绿色 ---带有执行权限的文件
红色 ---压缩包
紫色 ---图片、模块文件
5.增、删、改、查
查询:
- 查看目录下有哪些内容
ls
- 查看文件中的内容
cat
创建:
- 创建文件 创建目录
touch 文件名
- 例如在/tmp目录下创建class1.txt,且内部写入‘hello’
[okra@localhost tmp]$ touch class1.txt
[okra@localhost tmp]$ echo "hello" > /tmp/class1.txt
[okra@localhost tmp]$ cat /tmp/class1.txt
hello
- 创建且编辑文件
echo "内容" > 文件路径
如果echo后面不加 > 文件路径,也会自动生成文件
- 创建目录(make directory)
mkdir /tmp/class1(目录名)
修改:
- 剪切
mv
- 例如:将当前路径下的class1.txt剪切到当前路径下的class1目录下
[okra@localhost tmp]$ mv class1.txt class1
[okra@localhost tmp]$ cd class1/
[okra@localhost class1]$ ls
class1.txt
[okra@localhost class1]$ cat class1.txt
hello
- 重命名
mv 旧文件名 新文件名
- 例如:将class1.txt重命名为class11.txt
[okra@localhost class1]$ mv class1.txt class11.txt
[okra@localhost class1]$ ls
class11.txt
- 拷贝
cp
- 例如:将class11.txt拷贝回/tmp目录下
[okra@localhost class1]$ cp class11.txt /tmp
[okra@localhost class1]$ ls
class11.txt
[okra@localhost class1]$ cd /tmp/
[okra@localhost tmp]$ ls
anaconda.log
class1
class11.txt
- 符号链接
ln
- 例如:将/tmp/class1目录下的class11.txt文件符号链接到root用户的桌面和okra的桌面,点击桌面链接可以打开class11.txt
ln -s /tmp/class1/class11.txt /root/Desktop/
可以看见root桌面上已经有class11.txt文件
sudo ln -s /tmp/class1/class11.txt /home/okra/Desktop
可以看见okra桌面上已经有class11.txt文件
删除:
rm (文件名)
- 例如:删除tmp/class11.txt
[okra@localhost tmp]$ rm class11.txt
- 强制删除
rm -f (文件名)
- 删除目录
rm -rf (目录)
-r 代表递归
删除目录需要递归删除,因为目录中可能包含了文件
6.Linux目录字格式
命令字 【选项】 【文件或目录】
例如:查看/boot目录下的全部内容
[okra@localhost tmp]$ ls -a /boot
.
..
config-3.10.0-1160.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-e32d477fb0814a0c8c8c125208b4c935.img
initramfs-3.10.0-1160.el7.x86_64.img
symvers-3.10.0-1160.el7.x86_64.gz
System.map-3.10.0-1160.el7.x86_64
vmlinuz-0-rescue-e32d477fb0814a0c8c8c125208b4c935
vmlinuz-3.10.0-1160.el7.x86_64
.vmlinuz-3.10.0-1160.el7.x86_64.hmac
那么如何查看一个命令字的帮助手册?
例如:查看ls的帮助手册,这里man是菜单的意思
man ls
进入后按‘q’退出
进入后输入‘/+关键字’查找说明
-a ---显示文件隐藏信息
-l ---显示文件详细信息
-lh ---显示文件大小,以人类能够读懂的单位(M,Gb)
-R ---递归显示目录中子目录的内容
内部命令—命令解释器自带的命令
help 【命令】
外部命令—安装的第三方软件带的命令,基本都有帮助手册
man 【命令】
7.压缩、解压缩
在 /tmp目录下创建一个大小为100m的文件bigfile
dd if=/dev/zero of=/tmp/bigfile bs=1M count=100
DD是Linux/UNIX系统下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
Linux dd 命令用于读取、转换并输出数据。
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
参数说明:
if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swap:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
--help:显示帮助信息
--version:显示版本信息
gzip
gzip 【文件名】 ---压缩文件
gunzip 【压缩包】 ---解压缩
bzip2
bzip2 【文件名】 ---压缩文件
bunzip2 【压缩包】 ---解压缩
查看目录大下
du -sh 【目录】
如何对目录进行打包压缩
直接使用gzip和bzip2对目录进行压缩会报错,需要对目录先进行打包,需要用到tar工具
tar -cf 【打包后的包名以及路劲】 【需要打包的目录以及路径】
例如:
tar -cf /tmp/allfile.tar /tmp/allfile
在不打开包的情况下查看包内容
tar -tvf 【包名】
之后就可以直接用gzip进行压缩和解压缩了
gzip allfile.tar
gunzip allfile/tar.gz
解包
tar -xf 【包名】 -C 【解包路径】(可不写-C后的路径,就在当前路径下解压)
一条命令实现gzip的打包压缩
tar -zcf /tmp/allfile.tar.gz【压缩包名】 bigfile【文件】
tar -zxf 【包名】 -C 【解包路径】(可不写-C后的路径,就在当前路径下解压)
一条命令实现bzip2的打包压缩
tar -jcvf /tmp/allfile.tar.gz【压缩包名】 bigfile【文件】
tar -jxvf 【包名】 -C 【解包路径】(可不写-C后的路径,就在当前路径下解压)
8.vim编辑器
vim编辑器分为3种工作模式,命令模式、输入模式、末行模式。
命令模式----->输入模式 按ins键
输入模式----->命令模式 按esc键
输入模式--X-->末行模式 输入模式无法直接切换到末行模式,需要先返回命令模式再前往末行模式
输入模式----->命令模式----->末行模式 先按esc键,在按:键,输入wq保存退出
末行模式下常用命令:
:wq---保存退出
:q!---不保存退出
:w !sudo tee %命令来强制保存 会报警告,这是因为正在编辑的文件已经在别处被修改了,vim 询问是否要重载新文件进来,按L重载即可
:set nu---显示行号
:% s/old/new/g---每一行中的old替换成new
:50,55d---删除50到55行
命令模式下的快速编辑快捷键
2yy---复制当前行和下一行
p---粘贴到当前行下
dd---删除当前行
gg---回到第一行
G---回到最后一行
50G---回到50行
例如:在/tmp/目录下建立一个名叫test.txt的文件并写入hello
[okra@localhost tmp]$ vim /tmp/test.txt
[okra@localhost tmp]$ cat /tmp/test.txt
hello
[okra@localhost tmp]$
9.Linux操作系统的软件安装
软件的分类:源码包、封装后的软件包
源码包的特点:
1.开源
2.以压缩包的形式提供给用户
安装的注意事项
1.解包
2.进入解压路径,了解软件的作用以及安装方法
编译 可以指定安装的路径以及编译所需要的功能
软件包的分类:
rpm red hat package manager 红帽包管理
deb Debian德班
安装httpd源码包
请参考
Centos7源码安装Apache(httpd-2.4.53)及问题解决
1.首先将源码包拖入linux桌面,查看可以发现这个包的颜色不是我们常见的红色。这是因为window下载的包自带编译内容有所不同
2.解包解压缩,解压到/usr/src目录下
[okra@localhost 桌面]$ sudo tar -zxf /home/okra/桌面/httpd-2.4.54.tar.gz -C /usr/src/
cd /usr/src
[okra@localhost src]$ ls
debug httpd-2.4.54 kernels
[okra@localhost src]$ cd httpd-2.4.54/
[okra@localhost httpd-2.4.54]$ ls
ABOUT_APACHE CHANGES httpd.mak Makefile.in ROADMAP
acinclude.m4 changes-entries httpd.spec Makefile.win server
Apache-apr2.dsw CMakeLists.txt include modules srclib
Apache.dsw config.layout INSTALL NOTICE support
apache_probes.d configure InstallBin.dsp NWGNUmakefile test
ap.d configure.in LAYOUT os VERSIONING
build docs libhttpd.dep README
BuildAll.dsp emacs-style libhttpd.dsp README.CHANGES
BuildBin.dsp httpd.dep libhttpd.mak README.cmake
buildconf httpd.dsp LICENSE README.platforms
3.ReadMe文件,查看httpd说明,INSTALL文件,查看安装方法
vim INSTALL
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
4.设置脚本指定安装路径和功能,并且生成makefile编译脚本文件
[okra@localhost httpd-2.4.54]$ vim INSTALL
[okra@localhost httpd-2.4.54]$ ./configure --prefix=/usr/local/webserver
//安装路径为/usr/local/webserver
…..
安装tree
1.检查是否安装过tree
rpm -qa 列出所有安装了的rpm软件包
rpm -qa | grep "tree" 检查是否安装过tree
2.确认该软件
rpm -qpi tree...(tab补齐) 确认软件作用
rpm -qpl tree...(tab补齐) 确认软件安装路径
3.使用”sudo yum -y install tree”命令,安装tree命令
rpm -ivh tree...(tab补齐) 方法一
sudo yum -y install tree 方法二
4.使用tree命令。如下图:CentOS 7中安装tree之后,使用”tree”命令不能正常显示中文字符。需要使用”tree -N”命令。(”-N”选项:按原样打印不可打印字符。
5.卸载软件
rpm -e tree
yum安装方法
根据光盘中依赖关系列表进行软件安装卸载(yum源安装)
1.要告诉操作系统依赖关系列表的位置
vim /etc/yum.repos.d/dvd.repo
[dvdrom] 标签
name= "yum dvd rom" 描述
baseurl =file:/media/CentOS_6.9_Final(自己的文件名)
gpgcheck=0 是否做密钥对验证
2.通过yum工具进行软件的卸载与安装
10.Linux操作系统的用户分类
超级管理员
普通用户
程序用户
- 切换方法:
root——>okra su - okra(不需要密码)
okra——>root su(需要密码)
用户的分类和组
/etc/passwd 保存了操作系统中所有用户的信息
vim /etc/passwd
root:x:0: 0: root: /root: /bin/bash
okra:x:500:500:: /home/okra: /bin/bash
字段1:用户名
字段2:密码占位符
字段3:用户的uid 0表示超级用户,500—60000普通用户,1—499程序用户
字段4:基本组的gid 先有组才有用户
字段5:用户信息记录字段
字段6:用户的家目录
字段7:用户登录系统后使用的命令解释器
/etc/shadow 保存了用户密码信息
root: $6$hsPrPUKSv0fM6utT$Rv6YGho/: 18085: 0: 99999: 7: : :
字段1:用户名
字段2:用户的密码加密后的字符串
字段3:距离1970/1/1密码最近一次的修改时间
字段4:密码的最短有效期
字段5:密码的最长有效期90
字段6:密码过期前7天警告
字段7:密码的不活跃期
字段8:用户的失效时间
/etc/group 记录了系统中所有组的信息
创建组和用户
group
创建组class1
groupadd class1 ---默认组id
或者
group -g 2000 class1 ---在创建组时设置组id2000
[root@localhost 桌面]# groupadd class1
[root@localhost 桌面]# cat /etc/group
root:x:0:
...
class1:x:1001:
修改组class1的组id为2000
groupmod -g 2000 class1
[root@localhost 桌面]# groupmod -g 2000 class1
[root@localhost 桌面]# cat /etc/group
root:x:0:
...
class1:x:2000:
创建用户
创建用户tom
useradd tom
建立tom用户要求器基本组为class1组,附加组为class2组,tom用户uid为600
useradd -g class1 -G class2 -u 600 tom ---g为基本组G为附加组
查看用户信息
id
查看tom信息
id tom
[root@localhost 桌面]# useradd -g class1 -G class2 -u 600 tom
[root@localhost 桌面]# id tom
uid=600(tom) gid=2000(class1) 组=2000(class1),2001(class2)
建立一个程序用户uid为250,用户名为testuser,没有家目录
useradd -u 250 -M -s /sbin/nologin testuser
-u 设置uid
-M 设置没有家目录
-s /sbin/nologin 设置为程序用户,无法通过su - testuser切换用户
[root@localhost 桌面]# useradd -u 250 -M -s /sbin/nologin testuser
[root@localhost 桌面]# id testuser
uid=250(testuser) gid=2002(testuser) 组=2002(testuser)
[root@localhost 桌面]# su - testuser
su: 警告:无法更改到 /home/testuser 目录: 没有那个文件或目录
This account is currently not available.
设置密码
passwd [user]
设置密码最长有效期90天
chage -M 90 【user】
可以通过命令 cat /etc/shadow文件查看密码最长有效期是否设置成功
对用户密码进行锁定,使其无法登录
[root@localhost 桌面]# passwd -l tom
锁定用户 tom 的密码 。
passwd: 操作成功
[root@localhost 桌面]# passwd -S tom
tom LK 2022-10-16 0 99999 7 -1 (密码已被锁定。)
在shadow文件可以看见tom用户在锁定后在密码前多了两个!!,这也是判断用户密码是否被锁定的方法
对用户密码进行解锁,使其可以正常登录
[root@localhost 桌面]# passwd -u tom ---解锁
解锁用户 tom 的密码。
passwd: 操作成功
[root@localhost 桌面]# passwd -S tom ---查看
tom PS 2022-10-16 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
删除用户、删除组
userdel -r [user]
groupdel [组]
[root@localhost 桌面]# userdel -r tom
[root@localhost 桌面]# userdel -r testuser
userdel:未找到 testuser 的主目录“/home/testuser”
[root@localhost 桌面]# groupdel class1
[root@localhost 桌面]# groupdel class2
11.Linux文件及目录的权限
查看文件和目录的权限
ls -l [文件] - rw- r-- r--
ls -ld [目录] d rwx r-x r-x
r | w | x | |
---|---|---|---|
文件 | 可读 | 可写 | 可执行 |
目录 | 可以查看目录内容 | 可以增加删除文件 | 可以进入目录 |
- rw- r-- r-- test.txt文件的权限
d rwx r-x r-x
字段1:文件类型 -普通文件 d目录 l符号链接 b快设备
字段2:文件所属者对该文件的权限
字段3:文件所属组对该文件的权限
字段4:其他用户对该文件的权限(既不是文件所属者也不是文件所属组中的用户)
创建一个tom用户,没有添加到root组,可以查看test.txt文件,却不可以修改该文件。
修改文件权限
chmod 对象 算数运算符 权限 文件
对象:u(所属者)g(所属组)o(其他用户)a(all)
算数运算符:-+=
权限:rwx
r-- 4
-w- 2
--x 1
删除其他用户对test.txt文件的可读权限
chmod o-r /test.txt[文件路径]
或者
chmod 640 /test.txt[文件路径]
改变文件的所属者和所属组
chown 用户 文件
chgrp 用户 文件
改变test.txt文件所属者为tom,所属组为tom
chown tom /test.txt
chgrp tom /test.txt
粘滞位 sgid suid 权限
- 粘滞位针对目录赋权,目录中创建的
- 文件只有建立者可以删除
例如:创建用户tom和用户jerry,使用tom用户创建/test目录,分别在/test目录下创建tom.txt和jerry.txt文件,/test目录权限为777.这个时候tom可以删除jerry.txt文件,反之亦然。但是一旦修改test目录添加粘滞位,那么jerry用户就不可以删除tom.txt文件了。
chmod o+t test
t代表粘滞位
/tmp临时目录默认就开启了粘滞位
- sgid针对目录建立的权限,再该目录中建立的文件所属组继承父目录的属组
chmod g+s [目录]
- suid 对可执行文件建立。
谁允许该文件,具有文件所属者的权限
执行了以上命令后,再切换到tom用户就是可以查看/shado文件了,且ll查看权限还是000
撤销粘滞位、sgid、suid命令
chmod 对象 - 权限 文件
如何实现不允许添加新用户
chattr +i /etc/passwd /etc/shadow
lsattr /etc/passwd /etc/shadow
解除不允许添加新用户
chattr -i /etc/passwd /etc/shadow
umask简介
文件权限=0777-umask
rwxr-xr-x 755
目录的最高权限0777—0022=0755
文件 666—022=644
027 ——一般公司服务器规定umask为027,也就是其他用户没有权限
使用vim /etc/profile命令查看umask值
使用vim /etc/bashrc命令查看umask值
修改默认密码最长有效期,一般都是99999,建议改为90
vim /etc/login.defs
第25行
12.网络地址配置
1.确认系统的网卡信息和ip地址
ip addr
[okra@localhost ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:76:3e:10 brd ff:ff:ff:ff:ff:ff
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:76:3e:1a brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:af:68:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:af:68:5d brd ff:ff:ff:ff:ff:ff
可以看见本地换回地址和其他4张网卡信息
2.关闭natworkmanager服务
service NetworkManager stop
chkconfig --level 345 NetworkManager off
3.配置ip地址
ip addr add 172.20.149.107/24 dev eth0
我的centos的网络接口是ens33
dev---代表设备
4.开启网络接口eth0,不然光配地址是不行的
ip link set eth0 up
5.设置网关
ip route add default via 【网关ip】 dev eth0
6.访问百度
nslookup www.baidu.com
失败
在/etc/resolv.conf添加百度服务器地址
vim /etc/resolv.conf
在空行添加
servername 202.106.0.20
保存退出
访问百度成功
7.修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33(这是我的网络接口)
DEVICE=eth0网卡设备
TYPE=Ethernet 类型
ONBOOT=yes 是否允许network服务管理该文件
BOOTPROTO=static 静态获取
IPADDR=192.168.1.254
NETMASK=255.255.255.0
重启服务
/etc/init.d/network restart
13.日志的管理与分析
Linux的日志文件存放在/var/log目录下
日志分类
- 系统日志—messages
- 登录日志—secure
- 程序日志
【日志类型】.【日志级别】
日志级别:
debug, info, notice, warning, warn (same as warning), err, error (same as err), crit, alert, emerg, panic (same
|emerg)
14.Apache配置
1.启动服务
/usr/local/httpd/bin/apachectl start
/usr/local/httpd/bin/apachectl stop
service httpd start
2.验证
ss -antpl|grep 80
3.主页创建
vim /var/www/html/index.html
4.主配置文件分析
vim /usr/local/httpd/conf/httpd.conf
5.创建页面内容目录
mkdir /var/www/html/share
6.拷贝文件至/var/www/html/share
cp /etc/passwd /etc/shadow /var/www/html/share/
15.检查yum源
命令:
cat /etc/yum.repos.d/centos-Base.repo
一键去除注释
cat httpd.conf.bak | grep -v "#.*" > httpd.conf