linux学习笔记(中级班)(精选4篇)
文件处理命令: ls list 命令所在路径:/bin/ls 选项:
-a 显示所有文件,包括隐藏-l 显示详细信息-d 查看目录属性
用户不同,拥有的命令也不同: Root:/sbin / usr/sbin All user: /bin /usr/bin 缩写:bin-binary usr-user sbin-super binary 命令:pwd 愿意:print working directory 创建空文件:touch 目录创建命令:mkdir 英文:make directory 复制命令:cp Cp –R 源 目的
移动和改名文件:mv Mv 源 目的 删除文件:rm 删除目录: rm –r 删除空目录:rmdir
软链接 ln –s 硬链接 ln Linux系统并不认字母,只认识数字,所以引出来i节点
ls –I 显示文件的i节点,设计到系统内核,每个文件都有一个i节点 硬链接不能跨文件系统 Ls –ld 显示目录权限
权限管理命令:chmod 更改文件UGO的权限,rwx权限
文件的
读命令:cat more head tail 写命令:echo vi X类:命令 脚本 目录的
读命令:ls
创建还删除权限:mv rm touch mkdir X类:cd
权限管理命令
改变所有者Chown 用户 文件或目录 改变所有组 chgrp 组名 文件或目录
修改文件或目录创建的默认权限Umask –S查看默认权限
Umask显示的0022 0特殊权限为 022ugo掩码显示方式,实际为777-022=755 Linux权限规则:缺省创建的文件,不能授予可执行的X权限。Umask 022(数字必须是掩码)这样才能修改默认权限
文件搜索命令:which whereis(只能查找命令)命令所在路径:/bin/which Find 可以查找文件、目录和命令 Find 搜索路径 搜索关键词
-name 根据文件名进行查找
-size 根据文件大小查找,大小用block数据块表示512字节=0.5KB 大于 + 小于 –
-user 根据文件所有者查找
根据时间查找:ctime、atime、mtime(以天为单位)
Cmin、amin、mmin(以分钟为单位)
C-change 改变(表示文件的属性修改过)
a-access访问(表示文件被看过,访问过)b-m-modify修改(表示文件的内容被修改过)
-时间之内,+超过多久时间(find /etc –mmin-120)Find应用的连接符:-a and 逻辑与 –o or 逻辑或 连接符-exec不需要询问,-ok是有询问的
{}find查询的结果 转义符,使符号命令使用本身的含义(例如rm时有提示,rm 就没提示了
-type 文件类型 f:二进制 l:软连接文件 d:目录
Find /etc –name init*-a –type l 根据i节点删除文件
Find –inum i节点数值
Find 目录 –inum 数值 –exec rm {};
Locate命令(linux独有的命令)根据文件数据库查找,对于新建立的文件查找不到
需要updatedb来配合locate来查找文件或目录,适合查找系统文件或命令 Grep文件中搜索指定的字串
Grep 指定字串 源文件
Grep ftp /etc/services 帮助命令:man 英文:manual 可以获得帮助信息(man 命令或配置文件)
只能查看配置文件的帮助
Man 1 词(命令)
man 5 词(配置文件)获得命令干什么用的:whatis 命令 Help 查看shell内置命令的帮助
压缩解压命令:gzip 英文:gun zip Gzip 选项(文件)压缩后为.GZ格式
只能压缩文件,不能压缩目录 不保留源文件
解压缩:gunzip 或gzip –d Tar 可以打包文件和目录
-c 产生打包文件.tar-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩 Tar –zcvf dirl.tar.gz dirl File 文件名(可以判定这个文件为什么类型的文件)
-x 解包.tar文件 Tar –zxvf dirl.tar.gz 压缩命令:zip Zip –r ;压缩目录 Zip 文件 ;压缩文件
压缩名称:bzip2(压缩比非常高)Bzip2 –k ;可以保留原文件 格式:.bz2 解压:bunzip2-k 压缩文件名;保留原压缩文件
网络通信指令:write 给在线的用户发信息,实施通信工具ctrl+D结束回话 Wall 网络发广播
Ping –s 包的大小(最大65507)ip地址
-c ping几个包 Shell应用技巧 快捷键:ctrl+l 清屏
Ctrl+u 光标前所有内容都删掉 定义别名:alias copy=cp
Alias xrm=“rm –r”组合命令必须要带“”
Alias 显示别名列表 Unalias 取消别名
输入/输出重定向
计划任务:每天定时发cpu系统使用情况例如TOP到指定邮箱,每天就收邮件查看系统状态就可以了,回头可以研究一下怎么做 2>在计划任务中应用比较广泛 管道
Wc计数器,算一下又多少行
文本编辑器:vim/vi
这些配置是临时的,没有保存
需要修改配置文件来保存自己设定的快捷键和功能 ~/.vimrc 这就是配置文件
Hwclock –hctosys Hwclock 硬件时钟 Mbr 主引导记录
Windows 的引导自举程序ntldr Linux的叫GRUB Kernel 叫内核
在系统启动时,内核只做两件事:驱动硬件 启动进程init
数字越小越优先启动 切换的时候K开头的文件被用到了
Linux系统启动步骤:
自举程序GRUB
Hd0,0 第一个硬盘,第一个分区
scp是Linux系统下基于SSH登陆进行远程文件拷贝的命令。
分两种,一种是从本地到远程,一种是从远程到本地。
1、从本地到远程
文件拷贝:
代码如下复制代码
scp local_file remote_user@remote_ip:remote_file
目录拷贝:
代码如下复制代码
scp -r local_folder remote_user@remote_ip:remote_folder
2、从远程到本地
文件拷贝:
代码如下复制代码
scp remote_user@remote_ip:remote_file local_file
例子:
代码如下复制代码
scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music
scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music
scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3
目录拷贝:
代码如下复制代码
scp -r remote_user@remote_ip:remote_folder local_folder
例子:
代码如下复制代码
scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/
一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。
内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。
在设计嵌入式应用的时候,可以不按照这种层次,应用程序越过C库直接和内核会话,或者把应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式linux将会是我们认识更清晰,简单可行并使应用具有弹性。
快速入门
最简单的建立嵌入式Linux应用的方法就是从我们使用的桌面Linux入手,安装一个喜爱的版本,把我们的某个应用作为初始化的一部分,框架就算完成了。
当然,嵌入式linux应用远比我们的桌面版本功能简单专一,它也许就是一个用于足彩的终端机,或是一个数码音频播放器,这些系统除了使用嵌入式CPU外,仅仅再需要一个串口,网口等少量的输入输出接口就可以完成它们特定的应用了。
在软件上,它可以按照三层的概念由内核装载器,定制的内核和较少的为特定任务设计的静态连接的应用程序组成。之所以使用静态连接的应用程序,是因为少量的静态连接程序所要的存储空间,比同样数量的动态连接的程序所占的空间小,这个平衡点需要我们在实际开发中去获取。也许你正在设计的是个PDA,它的应用程序较多,那么你很可能就要使用动态连接程序来减少存储空间。在你的/bin或者/sbin目录下,用厂列表看看bash,ifconfig,vi...,也许只用几十K,当你运行 ldd /bin/bash 时,你会看到它们都和好几个库文件相连。好了,这样看来,我们得把PC想像成一个嵌入式硬件平台,再重新制作一个特定功能的嵌入式linux。
基础知识
再进行实际操作之前,先来搞清楚几个基础知识。
内核装载器Loader,它的作用是把内核从外部存储器,移动到内存中。它只作这个事情,一旦完成了调入内核的工作,Loader就跳转到内核位置开始执行。不同架构有不同的 Loader,在x86结构的PC上,通常使用的loader有LILO,GRUB,syslinux,syslinux在嵌入式linux中也同样工作。其他非x86架构的应用中,你必须使用专门的loader,或者自己编写loader来装入内核。也有不使用loader的情况,系统加电以后,内核直接从烧录有映象的Flash上开始执行。
内核,一旦内核开始执行,它将通过驱动程序初始化所有硬件,这可以从我们的pc机监视器的输出看出来,每个驱动程序都打印一些有关它的信息。初始化完成后,计算机就准备运行嵌入式应用。也许一个,也许是多个应用程序组成了嵌入式应用,但通常首先调用的是init(通过loader 向核心传入init=/program 可以定制首先运行的程序)。桌面linux中,init会读取/etc/inittab文件,来决定执行级别和哪些脚本和命令。嵌入式应用中,可以根据实际的情况决定是否使用标准的init执行方式,也许这个init是个静态程序,它能够完成我们的嵌入应用的特定任务,那完全不用考虑inittab了。
initrd文件系统,initrd以一种把内核从存储介质装入到内存的相同的机制来装入一个小型文件系统。这个文件系统最好是以压缩的方式存储在介质上的,解压缩到RAM盘上。通过使用initrd,包含有核心驱动和启动脚本的小文件系统,就可以直接从介质上和内核一起启动起来,内核届压缩这个文件系统,并执行这个文件系统上叫做/linuxrc的脚本文件,这个脚本通常会把启动过程中所需要的驱动程序装入。脚本退出以后,initrd文件系统也卸下了,启动过程进入真正初始化过程。对于嵌入式来讲,可以将需要的应用软件都运行在这个initrd文件系统上,只要/linxrc文件不结束,内核启动过程的其他部分就不会继续。
做个试验:
cp /boot/initrd-2.4.20.img /tmp
cd /tmp
mv initrd-2.4.2-.img initrd.img.gz
gunzip initrd.img.gz
mount-o loop initrd.img /mnt
cd /mnt
ls
cat linuxrc 可以看到里面执行了加载了两个模块的操作,你在启动linxu的时候会看见屏幕打印信息。
入门试验,制作一个简单的应用
我们使用一张软盘启动一台假象的只有一个串口,键盘输入,显示输出的x86架构的linux系统,执行的特定应用就是运行minicom,通过串口拨号。需要软件: minicom-xx.src.tar.gz 和 syslinux-xx.tar.gz,xx代表版本号,开始之前,在主目录建立一个目录,来释放这两个软件包:
cd
mkdir-p project/minilinux
cd project/minilinux
tar zxvf minicom-xx.src.tar.gz
tar zxvf syslinux-xx.tar.gz1、裁减linux内核(需要系统安装内核文件包)
配置内核的时候,我们需要选择这些:摸块编入内核,386处理器、物理内存off、支持ELF、标准PC软盘、支持RAM盘(4096)、支持 initial RAM disk(initrd)、虚你终端、虚拟终端控制台、标准串口、ext2文件系统、控制台驱动,VGA text console、DOS FAT、MSDOS文件系统,其他的都可以不要,这样内核编出来较小。
步骤:
cd /usr/src/linux
make mrproper
make xconfig
make dep && make bzImage
得到 /usr/src/linux/arch/i386/boot/目录的内核文件bzIamge。
2、编译一个静态的minicom,把它作为将来的linuxrc
cd minicom-xx/src
vi Makefile
修改下面这行
minicom: $(minicom_OBJECTS)$(minicom_DEPENDENCIES)
rm-f minicom 下面的行加上-static,连接为静态程序
(LINK)-static $(minicom_LDFLAGS)$(minicom_OBJECTS)$(minicom_LDADD)$(LIBS)
vi minicom.c
找到 if(real_uid==0 && dosetup==0)删除这个判断条件语句,主要是用于权限判断的,因为这个嵌入应用不关注权限问题,否则会出错。
make
得到可执行程序,用ldd 检查一下是不是静态程序。
3、准备initrd压缩文件image.gz
dd if=/dev/zero of=image bs=1k count=4096
losetup /dev/loop0 image
mke2fs-m 0 /dev/loop0
mounmt-t ext2 /dev/loop0 /mnt/
mkdir-p /mnt/dev
mkdir-p /mnt/usr/share/terminfo/l/
cd /dev
cp-a consle null tty tty0 zero mem /mnt/dev
cp-P /usr/share/terminfo/l/linux /mnt/usr/share/terminfo/l/linux
cp ~/project/minilinux/mincom/src/minicom /mnt/linuxrc
umount /mnt
losetup-d /dev/loop0
sync
gzip-9 image4、制作软盘引导,并拷贝文件 bzimage image.gz 到软盘
A.使用grub
fdformat /dev/fd0
mke2fs /dev/fd0
mount /mnt/fd0 /mnt/floppy
mkdir-p /mnt/floppy/boot/grub
cp /boot/grub/stage1 /boot/grub/stage2 /mnt/floppy/boot/grub
执行 grub,在软盘上创建引导
grub > root(fd0)
grub > setup(fd0)
grub > quit
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
编辑 /mnt/floppy/boot/grub/grub.conf
default =0
timeout-=10
title minilinux
root(fd0)
kernel /bzImage
initrd /image.gz
卸下软盘
umount /mnt/floppy
B.使用syslinux
fdformat /dev/fd0
mkfs.msdos /dev/fd0
mount-t msdos /dev/fd0 /mnt/floppy
cp /usr/src/linux/arch/i386/boot/bzImge /mnt/floppy
cp ~/porject/minilinux/image.gz /mnt/floppy
cp syslinux-xx/ldlinxu.sys /mnt/floppy
cat > /mnt/floppy/syslinux.cfg
LABEL linux
KERNEL bzimage
APPEND initrd=image.gz
umont /mnt/floppy
syslinux-xx/syslinux /dev/fd0
sync5、用软盘启动计算机,如果幸运,minicom的运行画面出现在屏幕上。
mysql远程连接这个以前已经实践过了,依稀记得该死的空间商封了3306….
今天从早上一直研究到现在就为了搞定rsync同步
服务器1:同步源服务器
服务器2:同步服务器也就是新服务器
首先检查两个服务器有没有安装rsync
代码如下复制代码[root@localhost .ssh]# rpm -qa rsync#如果没有安装可以 yum install rsync接下来需要配置源服务器了
代码如下复制代码#vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[test] #rsync区段的设定名称,待会同步服务器会用到
path =/data/www/ #需要同步的数据存放路径
comment = test folder #注释
uid = apache #采用什么身份进行文件读取
gid = apache #同上,必须是有读取path权限的用户、组
ignore errors #忽略错误
read nly = yes #只读
list = no #不能列表
auth users = bak #连接rsync服务的帐号
secrets file = /etc/rsyncd.secrets #指定存放帐号密码的位置
接下来我们新建存放帐号用户名的文件
代码如下复制代码#vi /etc/rsyncd.secrets#格式:帐号:密码
bak:bac123
更改文件密码文件的权限
代码如下复制代码#chown root:root /etc/rsyncd.secrets
#chmod 600 /etc/rsyncd.secrets
启动rsync服务
代码如下复制代码#rsync --daemon
停止rsync服务器
代码如下复制代码kill `cat /var/run/rsyncd.pid` #kill 后是反引号
由于这里只是过渡备份使用所以就不加入自启动,加入自启动如下
修改/etc/xinetd.d/rsync文件,把其中的disable=yes改为disable=no
代码如下复制代码#sed -i -e “/disable/{ s/yes/no/ }” /etc/xinetd.d/rsync
#service xinetd.d restart
同步服务器配置
代码如下复制代码#rsync -azv --delete rsync://bak@192.168.1.2/test /var/www/html --password-file=/etc/rsyncpassword
#vi /etc/rsyncpassword #直接填写密码即可#
#chmod 600 /etc/rsyncpassword #修改文件的权限
#chown root:root /etc/rsyncpassword #修改文件的所属用户和组
定时更新
代码如下复制代码crontab -e
20 * * * * /data/rsync.sh #每20分钟同步一次,这里是增量备份所以不需要担心
至此rsync同步已经算搞定了,这样就搞定了我们的业务需求了,
下次买服务器还是得买个靠谱的,不然换个服务器真心难受。