linux学习整理2
== 自己的整理 ============================================================================================
# ls|more ls|less 分屏显示
# ls|grep aaa 只看含有aaa的输出
# mv i386-redhat-linux7-gcc gcc 把i386-redhat-linux7-gcc 重新命名为 gcc
- 运行C程序 (linux 自带的c运行器 放在了/usr/bin中 gcc296。 命令改了新的名字 gcc)
gcc296 -o Hello Hello.c
./Hello
- 运行c++程序 (linux 自带的c++运行器 放在了/usr/bin中 i386-redhat-linux7-c++ 命令改了新的名字 g++)
i386-redhat-linux7-c++ -o w w.cpp
./w
- # rpm -ivh cdrom/RedHat/RPMS/gcc-3.2.2-5.i386.rpm 安装rpm类型程序
- gzip -d apache-tomcat-5.5.25.tar.gz 解压.gz类型的程序 -->这个将会生成 .tar文件
- tar -xvf 文件名
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:50:8D:7D:F9:44
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=172.16.106.155
USERCTL=no
PEERDNS=yes
GATEWAY=172.16.106.254
IPV6INIT=no
改IPADDR=后面的值..........
== 2 ===============================================================================================
分区的种类:
主分区 -> 装操作系统 C盘
扩展分区 D E F 总称为扩展分区(里面有各种逻辑分区D,E,F)
== 3 linux设备也当作文件,如何访问设备 =============================================================
# cd / 进根目录
# cd dev 进 dev 目录
# pwd 查看当前路径
# whoami 查看你是哪个user
# ls 当前目录下 所有文件 和 文件夹
- linux系统里 有分区这个概念,但是看不到像windows那样的 C D E盘这样的分区的具体体现
- linux系统里的分区 主分区 或 扩展分区 1~4 /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4
逻辑分区 5往后,永远从5开始 /dev/hda5 /dev/hda6 ....
(其中 字母a表示第一个磁盘,第二个磁盘上的分区那个字母为b)
- linux 直接 cd cdrom 并不能进入cdrom中,因为cdrom不是一个文件夹,而是一个块设备,是一个整体。
需要用到 挂载点;即把cdrom和一个目录名联系起来,通过访问那个目录来访问cdrom
# mount /dev/cdrom /mnt/cdr -> 把设备cdrom挂在到cdr目录文件夹下
然后
# cd /mnt/cdr
# ls
然后显示出来的 就是 光驱里的内容
# umount /dev/cdrom 或者 umount /mnt/cdr 都可以删除那个挂载点
- 硬盘 也是 一个设备,所以对硬盘的访问 也是用挂载点来做。
'/' 是根路径,即是根硬盘的挂载点
== 4 硬盘分区 =========================================================================================
- MBR (Master Boot Record) 位于硬盘 第一个 物理扇区,柱面0,磁头0,扇区1处。
包含 硬盘的 主引导程序,硬盘分区表
- 硬盘分区方案。两个必备分区: '/'根分区, SWAP分区(虚拟内存,硬盘当内存使用。linux下必须有,而且大小是物理内存的两倍)
------ 一个网友的例子 -----------
在安装Linux系统时候,我将硬盘分为四个分区:第一个分区挂载在“/”目录下,第二个分区挂载在“/boot”下,第三个分区挂载在“/home”下,第四个分区是交换分区(Swap分区)。
至于/dev/hda1,/dev/hda2 也是表示硬盘的分区。
理解如下:
/dev/cdrom 这表示一个物理上的设备。但是不能从这里进入cd,需要从挂载点进入, 一般是挂在 /mnt下的某个目录里
/dev/hda1 表示一个硬件,即硬盘的一个分区。也需要从挂载点进入。 主分区就挂在 目录'/'下。
------------------
== 5 文件夹 ============================================================================================
/:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中
/bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。
注:/etc/X11存放与x windows有关的设置。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
/lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found
/mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
/root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
/sbin:/usr/sbin:/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内
/usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间
== 6 linux的启动顺序 =========================================================================================
1.load bios(hardware informantion)
2.read MBR's config to find out the OS
硬盘上的数据由五大部分组成,它们分别是:MBR区、DBR区,FAT区,DIR区和DATA区。
MBR - Main Boot Record 主引导记录区,位于整个硬盘的0磁道0柱面1扇区。
3.load the kernel of the OS
4.init process starts...
5.execute /etc/rc.d/sysinit
rc - run command
d - 后台运行的进程
6.start other modules (/etc/modules.conf)
7.execute the run level scripts (这里有层次的概念)
0 - 系统停机状态
1 - 单用户工作
2 - 多用户状态(没有nfs-网络文件系统)
3 - 多用户状态(有nfs)
4 - 系统未使用,留给用户
5 - 图形界面
6 - 系统正常关闭并重新启动
8.execute /etc/rc.d/rc.local -> 很重要,比如需要开机自动启动tomcat,在这里配置
9.execute /bin/login
10.shell started...
# exit 退出当前shell
# shutdown 关机
# reboot 重启
# man shutdown 显示命令的具体解释
== 7 常用命令1 ============================================================================================
# ls 列出当前文件夹内容
# ls -l 文件/文件夹 细节
# ls -m
# ls --help 帮助命令
# cd .. 进入上一级文件夹
# cd / 进入根文件夹
# pwd 显示当前路径
# mkdir 文件夹名
# rmdir 文件夹名 只能删除空文件夹
# rm -r 文件夹名 删除有内容的文件夹,删除时内容需要确认
# rm -rf 文件夹名 删除有内容的文件夹,删除时内容不需要确认
# touch 1 创建一个文件。(linux里 后缀没有技术上的意义,只有约定俗成的讲究)
# rm 1 删除文件
# rm -f 1 删除文件
== 8 常用命令2 =============================================================================================
# ls -R 树形结构显示当前文件夹所有内容
# cp 1 2 拷贝文件。1是已经存在的文件,2是目标文件
# cp -r d1 d2 拷贝目录。d1是已经存在的文件夹,d2是目标文件夹。 -r表示递归,很多命令都有这个后缀
# mv d1 /home 移动文件夹 到绝对路径
# mv d1 ../ 移动文件夹到相对路径,这里是上一级目录
# mv -r d1 d2 移动文件夹,当文件夹里有很多东西的时候
# vi linux的文本编辑器(两种模式 命令模式,编辑模式),刚进去是命令模式
命令模式 输入 a 命令模式 ——> 编辑模式
编辑模式 输入 'esc' 编辑模式 -> 命令模式
命令模式 输入 : 在最下面一行显示出‘:’
:w 表示存盘
:q 表示退出
:q! 不存盘退出
:wq 存盘退出
命令模式 双击 dd, 删除光标所在的那一行
命令模式 dw, 删除一个词
命令模式 o, 插入一空行到光标下一行
命令模式 O, 插入一空行到光标上一行
# more 1.txt 查看文件的内容
== 9 常用命令3 ============================================================================================
# cat 1.txt 貌似和more一样,打开某个文件
# tac 1.txt 倒序 打开某个文件
# head -3 1.txt 打开 某个文件 前3行
# tail -3 1.txt 打开 某个文件 后3行
# clear 清屏
# find /etc -name *local 查找文件,在/etc目录下查找,文件名称为 *local
# whereis ls whereis后面跟命令,显示出命令的位置 等等 (和windows下的环境变量path是一个概念)
DOS下看某个环境变量: echo %path% echo %classpath%
# echo $path 查看环境变量 path
# ln 1.txt 4 创建 到 1.txt的一个链接 4 。复制了一份1.txt,但是他俩是同步的。
# ln 1.txt -s 5 创建 到 1.txt的一个链接 5, 软连接 (类似于快捷方式)。注意,这里不是拷贝
== 10 常用命令4 用户管理 ============================================================================================
# useradd testuser 添加一个用户,用户名testuser
# passwd testuser 为用户设定密码
# cd /etc # more passwd 进入etc文件夹,passwd文件,里面有所有的user信息
e.g. testuser:x:501:502::/home/testuser:/bin/bash
- 什么是shell
linux有一个内核,user和内核打交道 需要 借助于 shell。
shell 有各种不同的类型,不同的shell有各自的用途和命令;常用的命令可能会通用。
# csh 转换到c shell, 提示符变为$
# ksh k shell
# sh 最原始的 shell
# bsh b shell
# bash b again shell
# cd /etc # more group 用户组的信息。
当 添加 用户 而不指定这个用户组的时候,默认 创建一个和这个用户名 一样 的 组。
# groupadd testg 创建一个组,组名为 testg
# useradd testuser2 -g testg 把一个用户 加入 一个组
# usermod -g testg testuser 把一个用户testuser 改到 testg 组中
# userdel testuser # rm -rf testuser 删除用户分两步,先删用户,再删对应的主目录
# su testuser2 从当前用户 切换到 user testuser2 (当新用户登录时, 默认的目录是 该用户 主目录)
== 11 常用命令5 文件权限 ============================================================================================
- linux权限有4种:
r read
w write
x execute
- 没有权限
- 当运行 # ls -l的时候,输出很多信息,其中包含:
rw-r--r--
rwxrwxrwx
共9位,分为3组,
前3个,表示 这个 文件/目录 的所有者,有什么权限
中3个,表示 这个 文件/目录 的所有者,同组的其他人
后3个,剩下的人有什么权限
# chmod +x 4 表示 对文件/目录4,同时给3个权限组,x的权限
# chmod -x 4 和上面相反
# chmod u+x 4 只给当前user权限
# chmod g+x 4 只给用户组其他人加权限
# chmod o+x 4 只给其他用户加权限
# chmod 755 4 表示给文件/目录4 权限。 7表示 111 rwx, 5表示101 r-x, 5表示101 r-x
表示给权限 rwxr-xr-x.
# chown testuser2 4 把文件/目录4的所有者,变为testuser2
== 12 常用命令6 其他常用命令,管道 ============================================================================================
# wc 统计指定文本文件的 行数 字数 字符数
# grep b 1.txt 文件1.txt中,哪些行包含字符b,就输出这些行。
# date
# who , w
# id
# hostname
# uname
# dmesg
# du
# df
# free
# fdisk -l 磁盘信息
# locale
- 管道: 将一个命令的输出 传送给 另一个命令,做为另一个命令的输入
# ls -Rl /etc | more
# cat /etc/passwd | wc
# dmesg | grep eth0 看网卡启动信息是否正常
# man bash | col -b > bash.txt
# ls -l | grep "^d"
# ls -l | grep "^-" | wc -l
== 13 常用命令7 ============================================================================================
== 14 常用命令8 ============================================================================================
# wall date 每个登录系统的用户的shell都会显示信息 'aaa'. warning all
# wall `date` 把date做为命令运行,把运行结果发布给每一个人
- 重定向
# ls > cmd.txt 先在当前目录找到/创建 cmd.txt文件,再把ls的运行结果放到cmd.txt文件中。
# ls >> cmd.txt 运行结果append到cmd.txt中。上面是overwrite
# lssss 2> cmd.txt 错误重定向
- 作业:如何修改系统的默认启动级别?
== 15 16 17 18 vsftp redhat自带的程序 ============================================================================================
在root用户下测试。其他用户因为权限 可能会不一样
# service vsftpd start ftp服务启动
# ftp localhost
# bye ftp 退出
# service vsftpd stop ftp服务停止
# service vsftpd restart ftp重启
# ifconfig 显示ip地址
# ifconfig eth0 192.168.0.1 设置ip地址
# service iptables stop 关闭防火墙
------- 配置虚拟机ip --------
目的是:让windows和linux在同一个网段里。(同一网段指 ip地址 和 子网掩码 共同决定的 公网部分 )
同一网段的电脑是可以直接连接的。否则的话 就需要 类似路由器 那种设备。。
windows的 ip 通过 ipconfig/all可以看到。一般是两块虚拟网卡,一般用第一块网卡的ip。 比如192.168.126.1
linux 的 ip 通过 上面的命令配置。配成 192.168.126.6.
然后就直接在windows里 ping 192.168.126.6. 如果不通,可能是linux那边装有防火墙。 查查google看怎么关linux防火墙
---------------
- ftp的配置文件 /etc/vsftpd/vsftpd.conf
- windows里,连接linux ftp的命令是 ftp 192.168.126.6
- ftp # ls 查看ftp里的内容
- 在windows安装ftp客户端。并且默认anonymous用户可以登录 ,但是不可以上传。 (下载这块没讲,貌似应该默认就好用,没啥说的)
需要配置 允许root用户上传,步骤如下:
# more /etc/vsftpd.user_list 这里能看到哪些用户被deny访问,用vi把root用户注视掉就行。
- ftp服务 设置 开机启动
# chkconfig vsftpd on
----------- 用ftp的步骤----------------
1. 确定ftp start. in linux check: # ftp localhost
2. 确定linux配置了正确的ip。 in linux check : # ifconfig
如果ip不对,用 # ifconfig eth0 192.168.126.6 来配置 ==》 这是暂时的配置,还不知道如何永久配置ip
3. 确定windows和linux能ping通。 in windows: ping 192.168.126.6
如果不能ping通,检查 in linux check: # service iptables stop 关闭防火墙
in windows: ipconfig/all 检查 windows和linux是不是在一个网段
---------------------------
== 18 ssh 作用是 服务器远程操作 ============================================================================================
# more /etc/inittab 这里面配置 linux启动时,默认进入哪一个level,命令行 还是 图形界面 id:3:initdefault:
# service sshd start 启动ssh
# chkconfig sshd on 设置开机默认启动 (上网找ssh客户端)
- putty 安装这个软件,远程登录操作服务器 !!!!
== 19 20 安装JDK ============================================================================================
- jdk默认安装目录 /usr/java/jdk1.6.0.03
- 遗留的问题,如何配置 环境变量 ???
- 配置环境变量
修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
·用文本编辑器打开/etc/profile
·在profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
== 20 21 22 23 24 安装tomcat ============================================================================================