您的位置:首页 > 运维架构 > Linux

linux听课笔记(入门篇)

2010-12-19 22:16 381 查看

linux听课笔记(入门篇)


注:本文属本人原创,转载请注明出处。linux服务器配置篇正在学习中。。。。。。会慢慢推出。

第一天

--------------------------------------------

shutdown -h now 立刻关机

shutdown -r now 现在重新启动计算机

reboot 现在重新启动计算机

su - 切换成系统管理员身份

logout 注销用户

vi编辑器

示例:使用vi开发一个简单的java程序Hello.java,

并在linux下运行成功。

开发步骤:

1、输入 vi Hello.java

2、输入 i 进入到插入模式,输入以下代码:

public class Hello{

public static void main(String []args){

System.out.printIn("hello,word");

}

}

3、输入Esc键 进入到命令模式

4、输入 :wq 保存并退出

:q! 不保存并退出

ls 显示目录和文件

ls -l 显示文件的详细列表

5、输入javac Hello.java 编译Hello.java

6、输入java Hello 运行它

开发一个C程序:

vi Hello.cpp

include <stdio.h>

int main(){

printf("hello!");

return 0;

}

gcc Hello.ccp 编译Hello.cpp

ls 发现生成了一个a.out,如果下次编译另一个C程序的话,

它还是会生成a.out,这样就覆盖了之前的。解决:

在编译时加参数-o后面跟文件名:

gcc -o my1 Hello.cpp

./a.out 运行a.out

目录结构

root 存放root用户相关文件

home 存放普通用户的相关文件

bin 存放常用命令的目录

sbin 要具有一定权限才可以使用的命令

mnt 默认挂载光驱和软驱目录

boot 存放引导相关的文件

etc 存放配置相关文件

var 存放经常变化的文件

usr 安装软件等的默认文件夹

显示当前在哪个路径下: pwd

用户管理

添加用户xiaoming:

useradd xiaoming

设置密码:

passwd xiaoming 注意:要指明是对哪个用户修改密码(本例为xiaoming)

根据提示输入密码

删除用户:

userdel xiaoming 删除用户xiaoming

userdel -r xiaoming 删除用户以及用户主目录

指定运行级别

命令:init [0123456]

运行级别:0:关机

1:单用户

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用,保留给用户

5:图形界面

6:系统重启

常用运行级别是3和5。要修改默认的运行级别可改文件

/etc/inittab 的id:5:initdefault:这一行中的数字

解决错误配置的方法:

在出现GRUB引导界面时,按e,选择第二行(高亮的),输入e,再输入1 (1代表单用户级别)

最后在按b.这样系统就进入到了单用户级别。然后修复错误。

常用命令

pwd 显示当前工作目录

cd 改变目录

ls 列出文件和目录

ls -a 显示隐藏文件

ls -l 显示长列表格式

mkdir 建立目录

rmdir 删除空目录

touch 建立空文件

cp 复制

cp a.out /home/xiaoming/ 将当前目录下的a.out复制到/home/xiaoming/下

cp -r dir1 dir2 递归复制命令(复制子目录信息)

mv 移动文件和改文件名

rm 删除文件和目录

rm a.out 删除a.out

rm -rf * 删除所有内容(包括目录和文件) r递归 f强制

ln 建立符号连接 ----(相当于快捷方式)

ln -s 源 目标

ln -s /etc/inittab inittab inittab指向实际文件/etc/inittab

more 显示文件内容,带分页

more install.log 分页显示install.log 按空格翻页

less 显示文件内容带分页

grep 在文本中查询内容

grep "shunping" aaa.java 查找aaa.java中有没有shunping。还可以加参数-n 显示行号

| 管道命令(理解管道:把上一个命令的结果交给|的后面的命令处理)

ls -l /etc/ | more 分页显示/etc/目录下的内容

find 搜索文件及目录

find / -name aaa.java 从根目录开始按文件名查找aaa.java文件

find /root/ -name aaa.java 从root目录下按文件名查找aaa.java文件

find /home -size +10K 查找/home目录下大小为10K的文件

重定向命令:

ls -l > a.txt 将列表的内容写入文件a.txt中(覆盖写)

ls -al >> aa.txt 将列表的内容追加到文件aa.txt的末尾

grep "shunping" aaa.java > kkk.bak 将查找到的内容写入文件kkk.bak中

文件权限、用户组

文件的所有者:一般为文件的创建者

文件的所在组:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

文件的其他组:除开了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

groupadd policeman 添加组policeman

cat /etc/group | more 查看所有组的信息

groupadd tufei 添加组tufei

创建用户并同时指定将该用户分配到哪个组:

useradd -g 组名 用户名

useradd -g policeman along

useradd -g policeman panpan

useradd -g tufei ashuai

查看所有用户信息:

cat /etc/passwd

passwd along

passwd panpan

passwd ashuai 分别设置密码

用along用户登陆,并创建文件mytest1.java (略)

ls -l

显示:

-rw-r--r-- 1 along policeman 11 Dec 9 09:32 mytest1.java

//说明:along前面的1代表后面mytest1.java是文件,如果后面是文件夹,它

在这里将显示这个文件夹中文件的个数。

-rw-r--r-- 表示是各类用户对这个文件的操作权限,下面讲解:

它可以分为四部分:- rw- r-- r--

第一部分 - 代表文件类型,- 代表普通文件 l代表链接文件

第二部分 rw- 代表文件的所有者对该文件的权限

权限分为三种:

r 可读 也可用4表示

w 可写 也可用2表示

x 可执行 也可用1表示

本例表示文件的所有者along对这个文件具有可读可写的权限

第三部分 r-- 代表文件所在组的用户对该文件的权限

本例中比如panpan对这个文件只有读权限

第四部分 r-- 代表其他组的用户对该文件的权限

这时如果用panpan登陆,panpan是进不了along文件夹的。

cd ..

ls -l

drwx------ 3 along policeman 4096 Dec 9 09:42 along

//说明:d代表是文件夹。along具有可读可写可执行的权限,其他用户不具有

任何权限。所以panpan是进不了along文件夹

修改文件的访问权限:(登陆为along用户修改即可)

chmod 770 along (第一个7代表对所有者访问权限进行修改 4+2+1=7,第二个7代表对文件所在

组访问权限进行修改)

ls -l

drwxrwx--- 3 along policeman 4096 Dec 9 09:42 along

(用root的权限)改变某个用户所在的组:

usermod -g 组名 用户名

usermod -g policeman ashuai 将ashuai由tufei组变为policeman组

修改文件所有者:

chown 用户名 文件名

修改文件所在的组:

chgrp 组名 文件名

第二天

----------------------------------------------------------------

linux下搭建javaee开发环境

jdk的安装:

1、将安装的ISO(本例中为mypackage.iso)挂载到linux操作系统上

mount /mnt/cdrom/ 挂载光驱

cd /mnt/cdrom/

ls 这样可以查看光驱上的内容

cd /

umount /mnt/cdrom/ 卸载光驱

2、安装时建议把要安装的程序拷贝到/home目录下

cp j2sdk-1_4_2_07-linux-i586.bin /home (这个文件名很长,可用TAB键补全,不用一个个输入)

cd /home/

ls 可以看到已经拷贝成功。

3、cd /home

4、安装

./j2sdk-1_4_2_07-linux-i586.bin

输入yes后开始安装

安装好后,ls,可以看到多了个j2sdk1.4.2_07的目录

cd j2sdk1.4.2_07

ls 可以看到有个bin目录

cd /bin

ls

5、/etc/profile (环境配置文件)

vi /etc/profile

用#来注释掉原来的java的配置文件

#JAVA_HOME=...........(省略)

#PATH=...........(省略)

#CLASSPATH=...........(省略)

#CATALINA_HOME=...........(省略)

#export JAVA_HOME PATH CLASSPATH CATALINA_HOME

然后重新登陆一下,就发现原来的java没有用了

6、配置刚才自己安装的jdk

vi /etc/profile

#JAVA_HOME=...........(省略)

#PATH=...........(省略)

#CLASSPATH=...........(省略)

#CATALINA_HOME=...........(省略)

#export JAVA_HOME PATH CLASSPATH CATALINA_HOME

JAVA_HOME=/home/J2sdk1.4.2_07

PATH=$PATH:/home/J2sdk1.4.2_07/bin

CLASSPATH=. :/home/J2sdk1.4.2_07/jre/rt.jar

export JAVA_HOME PATH CLASSPATH

保存,然后重新登陆一下,生效。

安装集成开发环境Eclipse(略)

tar -zxvf xxxxxx.tar.gz 安装以.tar.gz结尾的文件

./eclipse 运行eclipse

安装myEclipse(略)

java ee的服务器用的较多是的tomcat

安装tomcat

tar -zxvf xxxxxx.tar.gz

& 代表要以后台方式运行

realplay的安装

1、把安装文件拷贝到/home

2、安装:

./RealPlayer10GOLD.bin

3、运行realplay

cd RealPlayer

./realplay

Linux分区

一块硬盘上主分区+扩展分区不能超过4个

查看linux系统分区具体情况:

fdisk -l

hdx~ 其中hd代表IDE硬盘,X为盘号(a为第一块,b为第二块,c为第三块等),

~代表分区,主分区或扩展分区用1-4表示,从5开始是逻辑分区

hda3表示第一块IDE硬盘上的第三个主分区或扩展分区

sd代表SCSI硬盘

sda1代表第一块SCSI硬盘的第一个分区

查看某个目录是在哪个分区:

df [目录全路径]

df /boot/

可以看到sda1分区是挂载到/boot目录下的

可以卸载:

cd /

umount /boot/

我们可以将sda1分区挂载到/test目录下

mount /dev/sda1 /test/

挂载命令格式:

mount [-参数] [设备名称] [挂载点]

查看磁盘使用情况

df [-参数]

df -h -h:以可读性较高的方式显示文件系统当前的使用情形

linux安装

linux手动分区:

/boot分区,100M

swap交换分区,一般是物理内存的2倍,但不要大于256

/ 根分区,尽可能的大

第三天

----------------------------------------------------------------

linux下的shell

常用的shell:

/bin/sh即/bin/bash

/bin/csh

/bin/ksh

ls -l /bin/*sh 可查到系统中的shell

env 查看目前使用的是哪种shell,该命令可以显示当前操作系统的环境变量

修改shell:

chsh -s 新的shell

chsh -s /bin/csh

history 查询历史记录命令

history 10 查询最近使用的10个命令

linux下查看IP情况的命令:

ifconfig

linux网络环境配置

第一种方法:

(以root用户登陆)

setup→Network configuration

配置好后,这时网卡的配置没有生效的,要运行

/etc/rc.d/init.d/network restart 命令才生效

第二种方法:

ifconfig eth0 x.x.x.x 设置IP

ifconfig eth0 network x.x.x.x 设置子网掩码

注:这样配置网络将立即临时生效。当重启或关机后,将还原设置前的配置。

第三种方法:

修改/etc/sysconfig/network-scripts/ifcfg-eth0 这个文件里的各个属性

配置好后,这时网卡的配置没有生效的,要运行

/etc/rc.d/init.d/network restart 命令才生效

在linux中,所有的设备都是文件

RPM包的管理

RPM包的名称格式:

apache-1.3.23-11.i386.rpm

apache 是软件名称

1.3.23-11是软件的版本号,主版本号,和次版本

i386是软件所运行的硬件平台

rpm是文件扩展名,代表RPM包

查询安装了哪些rpm软件

rpm -qa

查询软件包是否安装

rpm -q 软件包名

rpm -q mysql 查询mysql是否安装

安装RPM包:

rpm -i RPM包全路径名称

rpm -ivh RPM包全路径名称 (有提示信息)

参数说明:

i=install 安装

v=verbose 提示

h=hash 进度条

卸载RPM软件包:

rpm -e RPM包的名称

升级RPM软件包:

rpm -U RPM包全路径名称

samba服务器的安装与配置

1、看看是否已经安装了samba

rpm -q samba

2、如果有,就卸载

rpm -e samba

但提示,有一个包要依赖这个,删除不了,

rpm -e --nodeps samba (--nodeps可以连同依赖的包一起删除)

3、开始安装

rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm

rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm

rpm -ivh samba-2.2.7a-7.9.0.i386.rpm

4、创建一个用户youyou

useradd youyou

passwd youyou

5、给youyou设置samba密码

先将/etc/passwd中的用户都加到smbpasswd中:

cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

再设置密码:

smbpasswd youyou

6、启动samba服务器,测试

service smb start

在windows的运行中,输入\\192.168.222.88 (这个是samba的服务器地址)

然后传个文件到samba中,在linux下查看

cd /youyou/

ls

第四天

--------------------------------------------------------------------

任务调度命令crontab

任务调度:是指系统在某个时间执行的特定命令或程序。

例:每天凌晨2:00去执行date >> /home/mydate2

1、设置任务

crontab -e

2、输入:

0 2 * * * date >> /home/mydate2

说明:

第一个代表是分钟,每小时中的第几分钟执行,这里是0

第二个代表是小时,每日的第几个小时执行,这里是2

第三个代表是日期,每月的第几天执行,*代表每天

第四个代表是月,每年的第几月执行,*代表月

第五个代表是星期,每周的第几天执行 *代表每星期

3、退出,保存

esc

:wq

怎样去调度多个任务?

(1)在crontab -e 中直接写 这种方法是比较传统的。不推荐。

(2)可以把所有的任务写入到一个可执行文件(shell编程)

例:

vi mytask.sh (一般以.sh结尾)

date >> /home/mydate3

cp /home/mydate3 /root

这个可执行文件保存成功,。但它只有rw的权限,没有可执行X的权限

所以,要修改权限:

chmod 744 mytask.sh

下面就可以把mytask.sh文件交给crontab去执行了:

crontab -e

* * * * * /root/mytask.sh

终止任务调度:

crontab -r

列出当前有哪些任务调度:

crontab -l

进程的概念和管理

进程:就是正在执行的程序

线程:(1)是轻量级的进程;(2)进程有独立的地址空间,线程没有

(3)线程不能独立存在,它是由进程创建的。

ps 显示系统正在执行的进程信息

ps -a 显示当前的所有进程信息

ps -u 以用户格式显示进程信息

ps -x 显示后台进程运行的参数

终止进程:

kill 进程号

kill -9 进程号 (如果不能结束进程,加参-9

动态监控进程top

top 直接输入top,按q退出

14:06:22 up 4min (系统启动了4分钟),1 user(当前有1个用户正在使用),

load average:0.02,0.12,0.07(当前系统负载情况,这三个相加除以3,如果大于0.6时,说明负载很大)

37 processes(进程数):36 sleeping 1 running ,0 zombic(这个是僵尸进程数),0 stopped

cpu states(cpu状态):0.0% user 0.1% system 0.0% nice 0.0% iowait 99.8% idle(99.8% idle说明

有99.8%的cpu处于空闲状态)

Mem: 255264K av,(内存总数) 39428k used(正在使用的内存) ,215836k free(空闲内存),0k shrd,5528k buff

30632k actv, 140k in_d ,292k in_c

Swap:257032K av,0k used,257032 free 19376k cached

监视特定用户

top ,按回车然后输入u,回车,输入用户名

date 显示系统的时间

date MMDDHHMMyyyy.ss 月月日日时时分分年年年年.秒秒

cal 3 2002 查看2002年3月的月历

cal 2008 查看2008年的年历

监控网络状态

netstat -an 显示整个系统目前的网络情况

netstat -anp -P参数可以显示进程号

traceroute 追踪路由。检测数据包在网络上传输的过程

route 查看本机路由的情况

Mysql数据库在linux下的使用

安装mysql

1)把安装文件拷贝到/home

cp mysql-* /home/ (因为有两个文件,这样用通配符,两个文件就一同拷贝过去了)

mysql-connector-java-3.1.10-bin.jar (这个是驱动文件)

mysql-standard-4.0.26-pc-linux-gnu-i686.tar.gz

2)把安装文件解压缩

cd /home/

tar -zxvf mysql-standard-4.0.26-pc-linux-gnu-i686.tar.gz

这时会生成一个mysql-standard-4.0.26-pc-linux-gnu-i686的文件夹,我们对它重命名:

mv mysql-standard-4.0.26-pc-linux-gnu-i686 mysql

3)继续安装

group add mysql (创建一个mysql组)

useradd -g mysql mysql (创建一个名叫mysql的用户并放入到mysql组)

cd mysql (进入mysql的文件夹,这样下面初始化数据库命令可以运行)

scripts/mysql_install_db --user=mysql ( 初始化数据库)

chown -R root . (修改文件的所有者, . 代表当前目录,把当前目录及子目录下的文件(-R参数)的所有者改为root用户)

chown -R mysql data (修改data文件夹的所有者为mysql)

chgrp -R mysql . (改变用户所在组为mysql组)

bin/mysqld_safe --user=mysql & (启动mysql,用mysql用户来启动它)

ctrl+c退出

运行mysql:

cd bin/ 要先进入/bin目录下,才能运行

./mysql -u root -p

输入密码,当前为空

show databases

quit退出

修改环境变量,在任意路径下,输入./mysql -u root -p 都能运行mysql:

env | more 查看环境变量

cd /root/

在root目录下,存放有root的用户变量:.bash_profile

vi .bash_profile

在PATH=$PATH:$HOME/bin后面添加mysql程序的路径:

:/home/mysql/bin/

logout注销用户,重新登陆root,生效

mysql数据库的使用

1)运行mysql

2)建立数据库

creat database spdb1;

show databases; 可以看到刚才建立的数据库spdb1

3)建表

use spdb1; 在数据库spdb1中建表

create table users(userId varchar(8),userName varchar(8)); 建一张名为users的表

添加数据:

insert into users values('0001','shunping');

insert into users values('0002','xiaoming');

查询:

select * form users

如果进行java开发,要注意mysql驱动的位置:

放在jdk的主目录下/jre/lib/ext/

备份和恢复mysql数据库

备份:./mysqldump -u root -p密码 数据库名>data.bak

恢复:./mysql -u root -p密码 数据库名<data.bak

例:

cd /home/mysql 进入到mysql的安装目录

cd /bin

./mysqldump -u root -p123456 spdb1 > /home/myspdb1 备份到/home/下,备份的文件名为myspdb1

注:在恢复时如果报错:ERROR 1049:Unknown database 'spdb1'

新建成一个空的数据库spdb1即可:

create database spdb1;

第五天

------------------------------------------------------------------------

ssh

1、windows下安装ssh客户端

SSHSecureShellClient-3.2.9.exe

linux默认安装sshd服务,默认是启动的。监听的端口是22

2.在windows下使用ssh客户端登录到linux

可以上传下载文件

补讲linux重要内容

linux目录结构

/bin 普通用户的可执行命令,系统的任何用户都可以执行该目录中的命令

/boot 存放linux操作系统启动时所需使用的文件

/dev 系统中的所有设备文件

/etc 系统中的配置文件

/home 普通用户的宿主目录,每个用户在该目录下都有一个与用户名同名的目录

/mnt中的子目录用于系统中可移动设备的挂载点

/root 超级用户root的宿主目录

/sbin 系统的管理命令,普通用户不能执行他们

/tmp 系统的临时目录

/usr 系统应用程序和相关文件

/var 系统中经常变化的文件如日志文件和用户邮件

从当前目录去访问某个文件(夹), 就是相对路径

从根目录(/)去访问某个文件(夹),就是绝对路径

cd 后面什么都不写,进入当前用户的主目录

复制文件夹的问题:

cp /workspace /home 这样是复制不成功的,提示这是个文件夹不能复制

cp -rf /workspace /home -r复制子目录,-f强制。这样就成功复制了。

shell使用

配置.bashrc文件可以指定某些应用程序在用户登陆的时候就自动启动:

vi /root/.bashrc

在最后添加:

/home/tomcat/bin/startup.sh start 当root用户登陆后,自动启动tomcat

注:要进入用户主目录下,修改。每个用户目录下都有这个文件

/etc/profile 配置系统的环境变量

/home/用户名/.bash_profile 配置用户的环境变量

当你希望临时加入一个路径时,使用export

export PATH=$PATH:/root 临时加入/root路径 $PATH引用原来的值 :是路径分隔符

runlevel 查看当前的运行级别

使用zip和unzip压缩和解压

zip aa.zip 要压缩的文件名

zip aa.zip 要压缩的文件名1 要压缩的文件名2

zip -r aa.zip 要压缩的文件夹路径 ,-r子目录

例:

zip bb.zip kkk.bak 把kkk.bak压缩为bb.zip

zip -r aa2.zip ./workspace/ 压缩当前目录下的workspace文件夹 .代表当前目录

unzip aa.zip 直接解压缩aa.zip


本文出自 “WEIFENGKEJI” 博客,请务必保留此出处http://nqawen96.blog.51cto.com/489677/459703
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: