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

Linux学习笔记(Redhat)

2016-04-19 17:51 435 查看
一、开始

linux平台上的开发

vi、gcc、gdb、make、jdk、tomcat、mysql、 linux基本操作

c语言功底《c专家编程》和java语言

学习unix高级编程 《unix环境高级编程》

linux应用系统开发/linux嵌入式开发

二、vi使用

startx 启动图形界面

reboot 重启

shutdown -h now 立刻进行关机

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

普通用户登录后用“su -” 切换成系统管理员

logout注销

vi使用:

vi xx.php 创建并编辑一个名为xx.php的文件

i 输入字母i进入插入模式

esc 输入esc进入命令模式(退出编辑)

wq 输入":wq" 表示保存退出

q! 输入:q!表示退出不保存

pwd 输出当前工作目录

javac hello.java 编译java代码

java hello 运行

三、目录结构、用户管理

目录结构:

/root 存放root用户的相关文件

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

/bin 存放常用命令的目录

/sbin 要具有一定权限才可以使用的命令(系统命令),存放系统启动时所需执行的程序

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

/boot 存放引导相关的文件

/etc 存放配置相关文件

/var 存放经常变化的文件 (socket....),具有变动性质的相关程序目录,log

/usr 安装一个软件默认文件夹,类似windows下的program files 文件夹 ,存放用户使用的系统命令和应用程序等信息

/dev 接口设备文件目录,如had表示硬盘

/proc 目前系统核心与程序执行的信息。

用户管理:

添加用户:root用户或者具有root权限的用户才可添加

useradd 用户名 如:useradd xiaoming 添加用户xiaoming

passwd xiaoming 为用户xiaoming设置密码 ,passwd后不加用户名就是给当前用户设密码

userdel 用户名 删除用户

userdel xiaoming 删除用户xiaoming

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

常用命令:

指定运行级别

命令:init [0123456]

运行级别:

0/关机  1/ 单用户  2/多用户状态没有网络服务 3/多用户状态有网络服务 4/系统未使用保留给用户 5/图形界面  6/系统重启

常用运行级别是3和5,要修改默认的运行级别可改文件 /etc/inittab的id:5:initdefault:这一行中的数字

服务器通常使用运行级别3

例子:如果级别设置为6,机器反复重启,解决修改错误配置的方法如下

在进入grub引导界面的时候,输入字母小写e,选择高亮第二行“ kernel /vmlinuz-2.4.20-8 ro root=LABEL=/” 再输入e进入编辑输入数字1如“grub edit>kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ 1” ,这里的1表示1号运行级别,也就是单用户级别(写成其他数字不可以,因为只有写成1才会让系统启动时候读取该配置文件进行加载),这种方法也可以用于修改root密码。输入完1之后回车返回前一界面,接着输入b字母开始引导,直接进入单用户模式,且不需要输入密码。(如果在grub进入时候也有密码,那么这样就无法使用了,^_^)

然后修改vi /etc/inittab 修改id:6:initdefault:中的6为3保存退出reboot即可。

四、常用命令、 其他命令:

pwd 显示当前工作目录

cd 改变目录

ls 列出文件和目录 ls -a 显示所有包括隐藏文件 ls -l 显示长列表文件 ls -al 显示长列表所有文件含隐藏文件

mkdir 建立目录

rmdir 删除空目录

touch 建立空文件

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

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

ln 建立符号链接

ln -s 源 目标

ls -s /etc/inittab inittab 【inittab指向实际文件/etc/inittab】

more 显示文件内容带分页,按空格看下页,按ctrl+pageup 上页

    例如: ls -l /etc/ | more 列出/etc/下面的文件并分页显示

less 显示文件内容带分页

grep 在文本中查询内容

  grep -n "要查找的关键词" 待查文件名 解释:在“待查文件名”文件中查找“要查找的关键词”,-n参数表示结果显示行号

| 管道命令 ,linux和unix中都有 ,解释:“把上一个命令的结果交给管道命令后的命令处理”。

man 手册,类似于dos下的help,用法:man “命令名”

find 搜索

find / -name man 解释:在根目录/中搜索名称为man的文件或目录

搜索一段时间内被存取/变更的文件或目录

find /home -amin -10 解释:十分钟内存取的文件或目录

find /home -atime -10 十个小时内存取的文件或目录

find /home -cmin -10 十分钟内更改过的文件或目录

find /home -ctime -10 十个小时内更改过的文件或目录

搜索指定大小的文件

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

重定向命令(管道定向命令)

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

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

从文件中输入信息

database_program < database_data

五、文件权限、用户组

所有者

一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者。

可以用ls -ahl 命令查看到该文件的所有者,也可以用“chown 用户名 文件名” 来修改文件的所有者

所在组

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

可以用ls -ahl 命令查看到该文件的所在组,也可以用“chgrp 组名 文件名” 来修改文件所在的组

其它组

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

六:用户组2

举例:

#groupadd policeman 添加组 添加policeman组

查看linux中所有组的信息

#vi /etc/group 查看修改

#cat /etc/group 查看不修改,建议用该命令

例:policeman:X:503: 组名:加密说明:组号:

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

#useradd -g 组名 用户名

#useradd -g policeman aaa 创建一个用户aaa同时指定该用户所在组为policeman

查看linux中所有用户信息

#vi /etc/passwd 查看同时可以修改,有风险

#cat /etc/passwd 查看同时不修改,安全

例: aaa:x:503:503::/home/aaa:/bin/bash 用户名:密码加密:用户ID:用户所在组ID:注释,这里为空:用户主目录:用户所使用的shell

ls -l 中显示的内容如下,解释:

-rwxrw-r-- 1 root root 1212 Feb2 09:39 abc

表示链接的文件数 用户 组 文件大小(字节) 最好修改日期 文件名

- 第一个字符代表文件(-),目录(d),链接(l)

其余字符每3个一组(rwx),读r,写w,执行x

chmod 改变文件或目录的权限

chmod 755 abc 解释: 赋予abc权限rwxr-xr-x

chmod u=rwx,g=rx,o=rx abc 解释:同上u=用户权限 g=组权限 o=不同组其他用户权限

chmod u-x,g+w abc 解释:给abc去除用户执行的权限,增加组写的权限

chmod a+r abc 解释:给所有用户添加读的权限

改变拥有者(chown)和用户组(chgrp)命令

chown xiaoming abc 改变abc的拥有者为xiaoming

chgrp root abc 改变abc所属的组为root

chown root ./abc 改变abc这个目录的所有者是root

chown -R root ./abc 改变abc这个目录及其下面所有的文件和目录的所有者是root

七、j2ee配置,jdk,tomcat安装配置

jdk安装

挂载光盘 mount /mnt/cdrom

拷贝 cp 文件 /home

切换目录 cd /home

安装文件 ./xxxx.bin

修改环境配置 vi /etc/profile

安装解压缩 tar -zxvf xxx.tar.gz

进入图形界面 startx

八、软件安装、linux分区

后台运行 ./eclipse &

分区:主分区+扩展分区<=4

挂载命令

mount -参数 设备名称 挂载点

特别:挂载光驱时候,可以直接mount /mnt/cdrom

卸载命令

umount 设备名称

查看磁盘使用情况

df -参数 解释: disk free

df -h (磁盘容量显示xxxG容量)

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

df 目录全路径

查看linux系统分区具体情况

fdisk -l

九,linux安装

分区

/boot 分区 100M

swap 交换分区 一般是物理内存2倍 (早期机器为不大于256MB),目前机器内存已经很大了。

/ 根分区 尽可能大

生产环境分区的话需要另行设计

十、shell

/bin/sh /bin/csh /bin/ksh

ls -l /bin/*sh 查看/bin下的shell

查看目前使用的是哪种shell

env 该命令可以显示当前操作系统的环境变量

env | more 分页显示环境变量

修改shell

chsh -s 输入新的shell 如:/bin/csh

更改shell后logout注销登录生效

tab命令补全

tab两次可以列举出命令

history命令:查看最近使用的命令

history 显示最近使用执行成功的800条命令(条数可以修改设置)

history 5 显示最近使用的5个命令

!5 执行历史编号为5的命令

!ls 执行最后一次以“ls”打头的命令

十一、tcp,ip基础

unix、linux基础tcp/ip 协议

十二、ip地址、包路由、网络环境配置

A类地址 0 7位网络号 主机号 1.0.0.0-127.255.255.255

B类地址 10 14位网络号 主机号 128.0.0.0-191.255.255.255

C类地址 110 21位网络号 主机号 192.0.0.0-223.255.255.255

D类地址 1110 多点播送地址 224.0.0.0-239.255.255.255

E类地址 11110 留作将来使用 240.0.0.0-247.255.255.255

Ip地址共32位二进制组成

追踪路由 tracert 目标ip或者域名

测试网络 ping

查看ip情况 ipconfig

linux下查看ip情况 ifconfig

十三、rpm管理

linux下网络配置

方法1.用root身份登录,普通用户无法配置

运行setup命令进行配置,之后运行/etc/rc.d/init.d/network restart 重启网卡配置使之生效。

方法2.

ifconfig eth0 x.x.x.x 对网卡进行设置

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

这样配置网络将会立即生效,但是是临时生效,重启会还原,因为没有保存到配置文件

方法3.

修改/etc/sysconfig/network-scripts/ifcfg-eth0 这个文件里的各个属性,包括ip,子网掩码,广播地址,默认网关等,然后运行/etc/rc.d/init.d/network restart 重启网卡配置使之生效。

    rpm包管理:

rpm包的名称格式:apache-1.3.23-11.i386.rpm

apache 软件名称

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

i386 软件运行的平台

rpm 文件扩展名,代表rpm包

rpm常用命令:

rpm -qa 解释:查询所有安装的rpm软件包,例子:

rpm -qa | more

rpm -qa | grep X

rpm -q 软件包名 解释:查询软件包是否安装

rpm -q xinetd

rpm -q foo

rpm -q xinetd file bash

rpm -qi 软件包名 解释:查询软件包信息

rpm -qi file

rpm -ql 软件包名 解释:查询软件包中的文件

rpm -ql file

rpm -ql jdk

rpm -qf 文件全路径名 解释:查询文件所属的软件包

rpm -qf /etc/passwd

rpm -qf /root/install.log

rpm -qp 包文件名 解释:查询包的信息对这个软件包的介绍

rpm -qp jdk-1_5_0-linux-i586.rpm

rpm -qpi jdk-1_5_0-linux-i586.rpm

rpm -qpl jdk-1_5_0-linux-i586.rpm

安装rpm包

rpm  -i rpm包全路径名称 解释:安装包安装到当前系统

    i=install

rpm  -ivh rpm包全路径名称 解释:安装包安装到当前系统有提示信息

    i=install 安装 v=verbose 提示 h=hash 进度条

删除rpm包

    rpm -e rpm包的名称

    rpm -e jdk

如果其他软件依赖于要卸载的软件包,卸载时则会产生错误信息

如果忽略错误继续卸载可以使用参数 --nodeps 命令选项,但是不建议这样做,因为依赖于该软件包的程序可能无法运行。

samba服务器:

    1.检查是否安装samba

    rpm -qa | grep samba 检查是否安装,如果已经安装则会列出安装的软件包的具体名称

    2. mount /mnt/cdrom 挂载光驱

    cd /mnt/cdrom/

    rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm 客户端和服务器端均需要安装的文件

    rpm -ivh samba-2.2.7a-7.9.0.i386.rpm 服务器端软件

    rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm 客户端软件

    cd ~

    umount /mnt/cdrom

设置samba密码文件

    1.先在linux中建立一个普通用户aaa,并为aaa设置密码123

    useradd aaa

    passwd aaa

    2.将/etc/passwd中的用户都加到smbpasswd中

    cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd 将系统所有用户加入到samba用户中

    3.设置用户aaa使用samba的密码,如456

    smbpasswd aaa

    4.启动samba服务器

    service smb start

    service smb stop

    service smb restart

    5.访问samba服务器

    在win下运行\\linux服务器ip地址 输入创建的aaa用户和密码456,即可看到aaa用户主目录中的文件

十四、crontab详解

windows下的端口查看 netstat -an

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

包括:a.系统工作:有些重要的工作必须周而复始的执行,如病毒扫描。b.个别用户工作:个别用户可能希望执行某些程序。

以上两种情况下(不仅限于这两种情况)都需要用到任务调度crontab命令。

2.使用方法:

设置任务调度文件 /etc/crontab

输入命令#crontab -e 解释:参数-e 为编辑 e为edit

然后接着输入任务到调度文件,如 5 * * * * ls -l /etc/ > /tmp/to.txt 解释:每小时的第五分钟执行 ls -l /etc/ > /tmp/to.txt 命令。

3.例子:

每隔一定时间去执行 date > /home/mydate1

希望每天凌晨2:00执行 date >>/home/mydate2 可以在crontab -e 中加入 0 2 * * * date >> /home/mydate2

4.调度文件的规则说明:

字段名称说明范围
分钟每小时中的第几分钟执行0-59
小时每日的第几个小时执行0-23
日期每月的第几天执行1-31
月历每年的第几月执行1-12
星期每周的第几天执行0-6
命令名称欲执行的命令名称及其参数
5.对应关系:

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

分钟 小时 日期 月历 星期 命令名称

6.多任务的调度方法:

  a.在crontab -e中直接写多个任务用于执行。不推荐。

  b.把所有任务写入到一个可执行文件(shell编程)。推荐使用。

7.终止任务调度

crontab -r 终止任务调度 r为remove删除

crontab -l 列出当前有哪些任务调度

十五、进程管理

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

  线程:a.轻量级的线程 b。进程有独立的地址空间,线程没有 c。线程不能独立存在,它是由进程创建(fork),(thread) c。相对来说,一般而言线程耗费的cpu和内存比进程小。

  进程存在的两种方式,前台与后台。

1、linux下查看进程的命令ps,可以不加参数使用:

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

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

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

  可以一起使用如

  ps -aux 全面查看进程信息,信息显示全,看的全面

  结果中: 1号进程是所有进程的祖宗进程(祖宗),所有进程都从1号进程创建下来的。

2、如何结束进程kill/killall :

  kill 进程编号 如:kill 16666 杀掉进程号为16666的进程

  kill -9 进程编号 如:kill -9 16666 如果上面的方法杀不掉进程可以加参数-9 强制杀掉(踢出)。

  killall 进程编号 解释:把这个进程以及这个进程所开的子进程全部杀掉。

3、动态监控进程top:

    top和ps相似,都用来显示正在执行的进程,但是top可以在执行一段时间可以更新正在运行的进程。

  a。监视特定用户

    top:输入此命令,回车,查看执行的进程。

    u:然后输入“u”回车,再输入用户名即可。

  b。终止指定的进程。

    top:输入命令回车,查看进程

    k:然后输入k回车,再输入要结束的进程id号

  c。指定系统状态更新的时间:

    top -d 10 解释:指定系统更新进程的时间为10秒

十六、top详解,设置系统时间,监控网络状态。

1.top结果如图所示解释:



top -d 10 解释:10秒更新一次top信息

退出:ctrl+c 退出 或者直接敲q退出。

2.设置时间

  a.显示系统时间

    date

  b.设置系统时间

    date MMDDHHMMCCYY.SS 月月日日时时分分年年年年.秒秒

  c.查看月历

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

  d.查看年历

    cal 2008 查看2008的年历

3.监控网络状态

    命令: netstat (可以不加参数使用,显示部分连接)

netstat -an -a 显示所有协议的连接 n以服务所用端口号数字显示服务(例如,不加n显示http服务,加n显示80服务端口)

netstat -anp p显示进程号

   命令 ping

   命令 traceroute 路由追踪(从本机到远程主机的完整路径)

    命令 route 路由

十七、mysql数据库的安装和使用

  1.解压缩:tar -zxvf 文件名.tar.gz

  2.添加组: groupadd mysql 创建mysql组

  3.添加用户:useradd -g mysql mysql 创建mysql用户并加入mysql组中

  进入到的mysql数据库的解压缩文件夹

  4.初始化安装:scripts/mysql_install_db --user=mysql 初始化数据库

    下面三步不是必须的,但是建议操作一下(进入mysql解压缩目录然后操作)

    chown -R root . 修改当前文件及文件夹的所有者为root

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

    chgrp -R mysql . 改变用户组

  5.启动:启动mysql:

    bin/mysqld_safe --user=mysql & 解释:&符号表示以后台的方式启动。

    检查一下启动ok

  6、查看:  netstat -anp 查看端口号3306

    ./mysql -u root -p 空密码进入即可操作

    如果希望在任何一个目录下都可以进入mysql,可以修改/root/.bash_profile 添加path路径,仅在root用户下生效

    如果希望所有用户都生效,可以修改/etc/profile (谨慎操作)

  7. mysql数据库的使用

    a.建库建表加入数据

  create database spdb1;

  show database;

  use spdb1;

  create table users(userId varchar(8),userName varchar(8));

  show tables;

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

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

  select * from users;

  desc users; 查看数据表结构或者数据库结构

    b. 编写程序ShowUsers.java显示数据库中的数据

    vi ShowUsers.java

    输入如下图所示代码:



    注意:java连接mysql的驱动文件mysql-connector-java-3.1.10-bin.jar应放置在jdk目录子目录/jre/lib/ext/下面。

    编译 javac ShowUsers.java

    运行 java ShowUser

    结果:

    username=aaa

    username=bbb

8. 备份和恢复mysql数据库

    a。备份数据库

  mysqldump -u root -p123 spdb1 > /home/myspdb1 注意:-p123是-p参数加上数据库密码123,中间不加空格,如果没有密码可以留空。

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

     mysqldump -u root -p密码 数据库名.表名 > table.bak

  其中备份文件myspdb1其实就是sql语句。

    b。恢复数据库

mysql -u root -p spdb1 < /home/myspdb1 将备份数据库文件myspdb1恢复到数据库spdb1中

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

     mysql -u root -p密码 数据库名.表名 < table.bak

  注意:恢复数据库时候需新建一个空数据库,否则会报错!!!

     删除数据库 drop database 数据库名;

十八、SSh安装使用

下载地址:http://files.cnblogs.com/hongten/SSHSecureShellClient-3.2.9.zip

  远程登录和文件管理(前提是linux的sshd服务启动)

  缺点:不能正常显示中文。

  使用putty可以设置utf8编码显示中文,但是没有ftp功能。 

  如果使用SSHSecureShellClient要显示中文可以如下操作:

  使用linux,在用户根目录下有一个.bash_profile配置文件,该配置只对当前用户有效.若对所有的用户有效,修改/etc/profile文件

  使用ls -a命令可以查看到该文件.使用vi编辑器打开该文件后,在其中加入

LANG=zh_CN.GB2312
export LANG


  即可正常显示中文.更改 .bash_profile 配置文件后,该文件内容如下:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
LANG=zh_CN.GB2312
export PATH
export LANG
unset USERNAME


十九、补充部分

. 当前目录

..父目录

rmdir 删除空目录(目录中有文件就删不掉)

rm -rf 删除文件或目录(目录中有文件也可以删) -r 递归 -f 强制

touch 建立空文件

cp -r dir1 dir2 递归复制命令(复制子目录信息)覆盖会询问

cp -rf dir1 dir2 递归复制命令(复制子目录信息)覆盖不询问 -f 强制

ln 建立符号连接

  ln -s 源 目标

例如:cd /home

  ln -s /root/aaa.java abc 这样会在home中产生一个文件abc指向/root/aaa.java,在共享类库时常用到。

这样vi abc 和 vi /root/aaa.java 编辑的是同一个文件。

more less

grep 在文本中查询内容

| 管道

练习:

linux下自启动mysql

在mysql二进制包里面,有一个叫mysql.server的启动脚本程序,把它复制到/etc/rc.d/init.d目录里面:

cd /etc/rc.d/init.d

cp /usr/local/mysql/support-files/mysql.server mysql

接着把它的属性改为X 可执行

chmod +x mysql

最后,运行chkconfig 把mysql添加到你系统的启动服务组里面去。

/sbin/chkconfig --del mysql

/sbin/chkconfig --add mysql

二十、shell命令补充,linux启动过程分析

    bashrc 用户登录时执行的文件,如果需要root用户登录时执行某程序就需要将命令加入到用户的/root/.bashrc中,如果需要所有用户都执行可以修改/etc/bashrc加入命令

    .bash_profile 用户环境变量配置 /etc/profile系统环境配置

    $PATH 系统的PATH $HOME 工作主目录 :冒号 为路径分隔符

    echo 输出

    通配符: * 多个字母或者数字 ? 单个字母或者数字 [ ] 在一个范围内找,如ls f080[1-6].tif

    转义字符 \ ls /mnt/win1/My\ Documents

    单引号 echo 'welcome $NAME ,the date is date' shell不处理任何变量和命令

    双引号 echo "welcome $NAME, the date is date" shell处理变量但不处理命令

    反引号 echo "welcome $NAME,the date is `date` " shell把反引号中的每一个单词作为一个命令,如果是变量则先求值

    然后作为一个命令处理。

    alias 用法: 别名

      alias llh='ls -l /home' 别名llh表示后面的单引号括起来的命令用法。

    linux启动过程的分析:

    runlevel命令可以查看当前的运行级别

    linux系统启动过程如下:

    a。bios自检

    b。启动grub/lilo

    c。运行linux内核并检测硬件

    d。运行系统的第一个进程init

    e。init读取系统引导配置文件/etc/inittab中的信息进行初始化

    f。 /etc/rc.d/rc.sysinit 系统初始化脚本

    g。 /etc/rc.d/rcX.d/[KS] * - 根据运行级别X配置服务

        终止以“K”开头的服务

        启动以“S”开头的服务

    h。 /etc/rc.d/rc.local 执行本地特殊配置

    i。 其他特殊服务

二十一、压缩解压缩,java网络编程

   1.压缩 zip

    zip aa.zip 文件名 单个文件压缩成aa.zip

    zip aa.zip 文件名1 文件名2 多个文件压缩成aa.zip (空格隔开)

    zip -m aa.zip test.txt 压缩后自动删除原文件(test.txt压缩成aa.zip之后,test.txt会自动删除)

    zip -r aa.zip 文件夹路径 文件夹压缩成aa.zip

   2.解压缩unzip

    unzip aa.zip 将aa.zip中文件内容解压到当前文件夹

    unzip -Z file.zip 查看file.zip压缩包的内容。也可以使用-l 、-v 来查看压缩包的内容。

    gzip和gunzip

    解压 gunzip file.gz 或者 gzip -d file.gz

    linux下java网络编程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: