Linux核心笔记.docx
- 文档编号:26844186
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:13
- 大小:21.45KB
Linux核心笔记.docx
《Linux核心笔记.docx》由会员分享,可在线阅读,更多相关《Linux核心笔记.docx(13页珍藏版)》请在冰豆网上搜索。
Linux核心笔记
wolves2014.3.20总结
Linux
前提:
1保证Linux和window可以ping通
(ps:
原因window上的防火墙没有关闭、或者Linux上的防火墙和强制安全策略)
2.保证安装Linux的时候选择了网络配置,现在定制
(gcc的默能安装)
3.命令分析:
tar-cvfa.tara和tar-czvfa.tar.gza
要是a是普通的文件那么a.tar和a.tar.gz的大小都会比a要大(物极必反).那么要是a文件的或那么a.tar的大小比a要大,但是a.tar.gz的大小比a要小.
4.-rw-r--r--:
第一个-表示是普通文件rw-表示当前账户的权限r--表示同一组的权限,最后一个r--表示不同组的用户的权限
chmod(u,g,o,a)+/-/=filename
或者chmod777filename
r=4w=2x=1
5.lnab表示的是硬连接(测试是往其中一个写代码)
ln-sac表示的是符号连接(c-->a)
6.ls-altftp*表示的是看tftp*的内容而ls-al|greptftp表示的是把前面的结果集中找出tftp文件不能和*连用.
Tftp服务
1.Linux和window可以ping通.
2.Setenforce0和serviceiptablesstop
3.在mnt下面mkdircdr再mount/dev/cdromcdr
4.cdServer再ls-al|greptftp(发现客户端和服务器)
5.安装tftp发现要先安装xinetd服务(tftp是xinetd的子类)
6.先安装xinted.语法:
rpm-ivhxinetd....再重启服务servicexinetdrestart
7.再次安装tftp.语法:
rpm-ivhtftp...再重启服务chkconfigtftpon(因为是小服务不能用service)
8.最后cd/看是否有个tftpboot的文件夹.进入里面创建一个down.txt。
9.在windows这边的dos中写入:
tftpLinux_ipgetdown.txt【e:
\1.txt】即可.
10.测试tftp客户端.在cd/下面建立day02.在day02里面创建up.txt.再tftp-->localhost-->putup.txt(发现错误是filenotfound是因为默能不支持tftp的上传.)解决方式:
cd/etc/xinetd.d里面有个tftp服务。
gedittftp&在tftpboot后面加上-c保存退出后一定要重启xinetd和tftp服务。
11.在putup.txt发现没有权限,解决方式修改该tftpboot权限chmod777tftpboot.再次上传即可.
12.卸载rpm-etftp-server-../rpm-etftp
NFS服务
1.测试Linux上面是否安装了nfs.语法:
rpm-qa|grepnfs结果是有的.但是没有启动.
2.进入cd下面的etc找exports,并打开写入:
3./home192.168.1.*(rw,sync,no_root_squash)
(home:
共享的目录,ip前面的路由ip).
4.保存之后要重启nfs语法:
servicenfsrestart
5.进入mnt下面新建mynfs.语法:
mkdirmynfs
6.挂载:
mount-tnfs自己或者人家的linux_ip:
/homemynfs
7.测试。
当在home中的东西存在和mynfs一样的时候那么成功.
SMB服务
1.VM--->installvmtools
(注意一定要卸载cdr不然进去就是乱码语法:
umountcdr)
2.在进cdrls一下发现有两个VM文件,安装一个一般安装rpm-ivhVM这个.
3.再运行最后出现的pl脚本:
/usr/bin/vmware-config-tools.pl
4.最后重启语法reboot.会发现分辨率和鼠标可以共享了即可.
IDE安装
1.利用上面的smb服务。
将window上面的eclipse和jdk放到Linux上面的/wp/tools下面.
2.重命名jdk-6u16-linux-i586.bin改成jdk6
3.再执行jdk发现没有执行权限.给上语法:
chmod+xjdk1.6再./jdk1.6
4.发现又出现一个蓝色的jdk1.6...改名为jdk1.6
5.进入jdk1.6里面的bin.pwd一下看当前自己的路径。
拷贝一下将这个路径放到cd/root下面的.bash_profile这里.语法:
gedit.bash_profile&
将PATH=$PATH:
$HOME/bin
改成PATH=/wp/tools/jdk1.6/bin:
$PATH:
$HOME/bin
6.重新加载.bash_profile.语法:
source.bash_profile.
7.在到wp/tools这里解压安装eclipse文件最后运行./eclipse但是发现没有权限。
解决办法setenforce0再次运行即可.
Vi(Vim)编辑器
1.vi(vim)hello.c(注意后面没有&)
2.按下a或者i或者o进入写入hellowepull.
3.想退出按esc键.在按下:
输入wq即可出来.
4.gcchello.c可以出现结果.
5.测试几种运行的方式并且带人gcc的语法,其中比较好的一种是PATH=$PATH:
.查询PATH的语法是echo$PATH
gcc语法
注意gccmain.c表示运行生成a.out
gccmain.o区别
而gcc-cmain.c表示连接成main.o
1状态:
预处理、编译、汇编、连接
预处理:
主要是处理#include不包含宏.
编译:
主要的是变量没有声明和使用了非标准的C库函数.例如用
sqrt.但是没有导入#include
汇编:
一般没有错误
连接:
该方法(add)没有使用gcc文档上的方案.
#include
intmain(){
doubled=sqrt(4);
printf(“hellowepull:
%lf\n”,d);
return0;
}
这个例子那么gcc-Shello.i-ohello.s是有问题的。
因为在生成汇编语言的时候。
找不到sqrt的函数。
所以在上面加上#include
语法gcc-Ehello.c-ohello.i
gcc-Shello.i-ohello.s
gcc-chello.s-ohello.o
gcchello.o-ohello
注意可以写成gcc-chello.c[-ohello.o]
[]可以默能生成.o文件。
表示的意思是只是编译没有连接.
2.说明””和<>这样的include的区别.””表示在当前的文件夹下面有个”add.h”这样的文件geditadd.h若是写成
gcchello.c-IOK或者在头文件前面加上#include<./OK/add.h>
静态链接库(.a)和动态链接库(.so)
1.所有的的动态库都会在/usr/lib和/lib这个找
2.生成静态的语法:
gcc-statichello.c体积大原因是把许多库的头文件都包含进去了
3.生成动态的语法:
gcchello.c
4.生成自己的静态连接库
例如:
第一步:
add.hadd.csub.hsub.cmain.c
第二步:
gcc-cadd.c、gcc-csub.c
第三步:
ar-crlibaddsub.aadd.osub.o
第四步:
gccmain.c-laddsub-L./
第五步:
./a.out
(l表示手动连接的库但是这个库不是标准的C库函数,L表示找自己写的函数的位子.)
5.生成自己的动态连接
例如:
第一步:
add.hadd.csub.hsub.cmain.c
第二步:
gcc-shared-fpic-olibaddsub.soadd.csub.c
第三步:
gccmain.c-laddsub-L./
第四步:
./a.out发现有问题。
因为所有的动态的链接库都会在/usr/lib或者/lib下面找。
解决办法:
Mvlibaddsub.so/usr/lib即可.
代码:
add.h==>intadd(inta,intb);
add.c==>intadd(inta,intb){returna+b;}
sub.h==>intsub(inta,intb);
sub.c==>intsub(inta,intb){returna-b;}
main.c:
#include
#include“add.h”
#include“sub.h”
intmain(){
intm=add(1,2);intn=sub(1,2);
printf(“%d,%d”,m,n);
return0;
}
Makefile
1.首写要知道这样的一个例子:
add.cmain.c
add.c==>intadd(inta,intb){returna+b;}
main.c==>
#include
intmain(){
intm=add(1,2);
printf(“%d”,m);
return0;
}
2.测试上面的代码:
gcc-cadd.c、gcc-cmain.c
gccadd.omain.o-omain
./main
3.定义
目标:
依赖
Tab键命令
4.列子
all:
add.ohello.o
gccadd.ohello.o-ohello
hello.o:
hello.c
gcc-chello.c
add.o:
add.c
gcc-cadd.c
clean:
rm-rfadd.ohello.ohello
改造:
#thisisademo
objs=add.ohello.o
all:
$(objs)
gcc$^-o$@
hello.o:
hello.c
@gcc-c$<
add.o:
add.c
@gcc-c$<
clean:
rm-rf$(objs)all
$^表示的是所有依赖文件
$@表示的是目标(一般是最终的可执行文件a.out)
$<表示的是第一个被依赖的文件(一般是.c文件)
注意:
作用域是当前的目标依赖和命令中.
Shell编程
Demo1:
测试基本的语法:
#!
/bin/sh
echo"thisisafirsttest"
var=wepull\hao\are\you
var2=welcome
echo"$var"
echo'$var'
echo"thisisa${var2}3"
echo$#
echo$*
echo$1
Demo2:
输入用户名和密码判断是否合法登入.
#!
/bin/sh
echo"inputyourname:
"
readname
echo"inputyourpass:
"
readpass
if[$name="zs"-a$pass="123"]
then
echo"loginsuccess~"
else
echo"loginerror~"
fi
Demo3:
输入两个数字比较大小
#!
/bin/sh
echo-n"inputtwonumbers:
"
readab
iftest$a-gt$b;then
echo"$a>$b"
eliftest$a-eq$b;then
echo"$a=$b"
else
echo"$a<$b"
fi
Demo4:
判断当前的账户是否是root
#!
/bin/sh
echo"inputcurrentrunname"
readuser
iftest$user=`whoami`;then
echo"currentnameisroot"
else
echo"currentnameisnotroot"
fi
Demo5:
统计当前的路径有多少个文件.
#!
/bin/sh
declare-im
forfilenamein$(ls)
do
iftest-d$filename;then
:
else
echo"filenameis$filename"
i=$(($i+1))
m=$m+1
fi
done
echo"$i,$m"
Demo6:
设计一个shell程序,添加一个新组为class1,然后添加属于这个组的10个用户,用
户名的形式为stdxx,其中xx从01到10。
(组的位置/etc/group)
#!
/bin/sh
groupaddclass1
i=1
while[$i-le10]
do
iftest$i-le9;then
username=std0$i
else
username=std$i
fi
useradd$username
chgrp-Rclass1/home/$username
i=$(($i+1))
done
Demo7.将读取的内容输出和写在某个文件里面
#!
/bin/sh
whilereadline
do
echo"输入的内容$line"
iftest$line="quit";then
break
fi
done
Demo8:
文件夹存在打印存在。
否则创建
#/bin/bash
while:
do
echo-n"pleaseinputfile'sname:
"
reada
iftest-e$a
then
echo"thefileisexisting!
"
else
mkdir$a
echo"youaresussesful!
"
break
fi
Done
Demo8:
case的用法:
#!
/bin/bash
clear
echo"inputanumfrom1to5"
whilereadnum
do
case$numin
1)echo"inputnumis1"
;;
2)echo"inputnumis2"
;;
3)echo"inputnumis3"
;;
4)echo"inputnumis4"
;;
5)echo"inputnumis5"
;;
*)echo"inputnumiserror"
break
;;
esac
done
Demo9:
找出Linuxip
ifconfig|grep"inetaddr:
"|awk'{print$2}'|sed's/addr:
//g'
Demo10:
查找当前网段内IP用户,重定向到ip.txt文件中
#/bin/bash
declare-ia=1
while:
do
a=$a+1
iftest$a-gt255
thenbreak
else
ip=$(ping-c1192.168.1.$a|grep"ttl"|awk'{print$4}'|sed's/:
//g')
iftest$ip
thenecho"pingok:
$ip"
echo$ip>>ip.txt
fi
fi
done
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 核心 笔记