技术笔记:linux系统开发基础

简介: 技术笔记:linux系统开发基础

1.硬盘表示方法


1 主分区和扩展分区不能多于4个(<=),主分区不可少。扩展分区不能超过1个。


2 扩展分区不能直接使用,需要再分成逻辑分区,逻辑分区在理论数量上没有限制。


3.Window 采用文件挂在盘符下面,而linux下采用分区挂在文件下。


4.hd/(sd)a(bcd)1(123456) hd 表示 IDE, sd 表示SCSI, 字母a 表示第一块硬盘 ,b 表示第二块 依次类推。


1234 分别表示第1到第4块主分区/扩展分区,5-6分别表示第1-第2块逻辑分区。


2.关于发行版:


1 查看内核版本


uname -r


cat /proc/version


##################################################################################


1. ls


ls -l //ll


ls -a


ls -la


ls -la /home


2 pwd


3 cd


cd /home


4.文件的创建 删除 touch aa.c rm -rf aa.c


文件夹创建 删除 mkdir dir rm-rf dir rmdir dir(empty dir)


文件的拷贝 剪切 cp aa.c ./dir mv aa.c ./dir


r -- recursive 表示递归,f --force 表示强制册除


如何拷贝剪切文件夹


cp -r folder1 folder2


mv folder1 folder2


4.5 .. 表示上一级目录


cd /usr/share/vim


cd ..


/usr/share


cd ..


/usr


cd ..


/


.表示当前目录(当前目录可以省略)


cd ./myself cd myself


5.vim必会的常用命令


0.gedit /usr/share/vim/vim70/tutor/tutor.zh.euc


1.q q! wq


2.dd 2dd p


yy nyy p //copy


3.x


4.dw d$(shift + d)


5.cw c$(shift + c)


7. /find


8. :s/old/new/g


:#,#s/old/new/g


:%s/old/new/g


9. i, a , A, o, O


10 r R(exit esc)


11 u U ctrl + R


6.如何设置vim的行号,tablespace


1.cd //回家目录


2.vim .vimrc


3.set nu


set ts=4


set ai


7.相对路径和绝对路径。


相对是指相对于当前路径,./ 相对路径可以省略


绝对路径是以根目录为始的路径,如/home/wgl


/etc/samba


8.帮助选项:


1,pwd --help


2, help pwd


3, man ls


4, info ls


##################################################################################


2.文件的属性


_(d l c b) rwx r_x r_x 1 wgl class aa.c


文件件的性质 属主 属组 其它组操作权限 属主 属组 文件


改变文件的属性


1 文本模式表示


chmod u+x aa.c //u表示当前用户


chmod g+rw aa.c //g表示用户所属的组


chmod o+rwx aa.c //o表示其它组


chmod u=rw,g=r,o=r aa.c //条件可以并写


chmod +x aa.c //all get x


2 数字模式表示


chmod 644 aa.c


2.5 用户及组的创建与删除


useradd wgl


userdel wgl


userdel -r wgl


groupadd group


groupdel group


3.创建组,添加用户,实现同组与外组的访问


groupadd shenxian


groupadd yaoguai


useradd ts -g shenxian


useradd -g shenxian wk


useradd -g yaoguai bj


ts will goto wk


su root


chmod g+x /home/wk //dir x cd


chmod g+w /home/wk //dir w touch rm


//dir r ls


bj will goto wk


su root


chmod o+rwx /home/wk


创建用户的信息及密码包存在/组信息


/etc/passwd


/etc/shadow


/etc/group


系统默认创建用户的同时,创建与用户名相同的组,如何改变一个己创建的文件的用户和组。


chown wgl file


chown :wgl file


chown wgl:wgl file


5.u盘的使用


mkdir /mnt/usb


保证光标虚拟机内,插入u盘


df -h


mount /dev/sdb1 /mnt/usb


umount /dev/sdb1 或mount /mnt/usb


不要在挂载目录,试图对本目录进行卸载


5.5 iso 文件的使用


1.菜单栏 VM - setting 将iso 文件放到光盘中


2.mkdir /mnt/cdrom


3.mount /dev/cdrom /mnt/cdrom


4.umount /dev/cdrom umount /mnt/cdrom


5.6 如何按装vmtools


1.菜单栏 VM - setting 将vmtool.iso 文件放到光盘中


2.mkdir /mnt/cdrom


3.mount /dev/cdrom /mnt/cdrom


4.cp /mnt/cdrom/VM-----tool /root


5.cd /root


6.tar zxvf VM-------tool


6.5./xxx.pl


7.一路回车,至到出同enjoy.reboot重起。


**


shell常用功能


1.命令补全:tab


2.历史命令:history history -c


3.别名功能:


alias la='ls -a'


ualias la


4.输入输出重定向:


1.输入重定向 [br> wc

2.输出得定向 > ]


ls >file.bak


追加 ls ]file.bak


3.输出错误重定向 2> 2]


ls 2>err.bak


追加 ls 2]err.bak


4.输出与错误重定向 &>


ls afile bfile &> errfile


5.管道命令


rpm -qa|grep samba


ls |grep hell|.bak


shell编程


1.自定义变量和环境变量


自定义变量也叫临时变量,环境变量也叫永久变量


2.DAY=sunday (等号两侧不能用空格)


echo $DAY


DAYY=$DAY


echo $DAYY


TODAY='$DAY is a good day'


echo $TODAY


$DAY is a good day


TODAT="$DAY is a good day"


echo $TODAY


sunday is a good day


TIME=date (tab上面的标识符)


echo $TIME


#!/bin/sh


# comment


3.test 【 -d -x 】 【/etc】 【/opt/aa.c】


4.if text -d /etc ;then


echo "/etc/ is a dir"


fi


if 【 -d /etc 】


then


echo "/etc/ is a dir"


fi


5.if 【 $# -ne 2 】


echo "not enough para"


exit 0


fi


if 【 $1 -eq $2 】


echo "$1 == #2"


elif 【 $1 -gt $2 】


echo "$1 > $2 "


elif 【$1 -lt $2 】


echo "$1 < $2 "


fi


6.for do done


NUM=1


for NUM in 1 2 3 4 5 6


do


echo "The num is $NUM"


done


7.while do done


NUM=1


while 【 $NUM -le $1 】


do


echo "The num is $NUM"


touch file.$NUM


NUM = expr $NUM + 1


# NUM = $((NUM+1))


done


8 case esac


if 【 $# -le 1 】


echo "not enough para"


eixt 0


fi


case $1 in


a|A) echo '$1 = ' $1


;;


b|B) echo '$1 = ' $1


;;


c|C) echo '$1 = ' $1


;;


) echo "invalid input"


esac


*


5.7


1.rpm -qa 查询现有机算机中的rpm安装的软件 q-query a-all


2.rpm -qa |grep vim


3.rpm -e vim-common //注意依赖关系 e-erase


3.5 rpm -e --nodeps vim-common 不检查依赖关系。


4.rpm -ivh vim-common-7.0.109-7.el5.i386.rpm //i install v-verbose h-hash


6.yum源的使用(使用光盘)


1.mkdir /mnt/cdrom


2.mount /dev/cdrom /mnt/cdrom


3.cd /etc/yum.repos.d/


4.mv CentOS-Base.repo CentOS-Base.repo.bak //关闭网络源


5.vim CentOS-Media.repo


name=CentOS-$releasever - Media


baseurl=file:///mnt/cdrom


# file:///media/cdrom/


# file:///media/cdrecorder/


gpgcheck=0


enabled=1


6.yum update


7.yum search samba


8.yum install samba


9.yum erase samba


yum 文件锁:


rm -f /var/run/yum.pid


/sbin/service yum-updatesd restart


Stopping yum-updatesd: 【 OK 】


Starting yum-updatesd: 【 OK 】


7. nfs 使用


1.rpm -qa |grep nfs


nfs-utils-1.0.9-50.el5


nfs-utils-lib-1.0.8-7.6.el5


2.rpm -qa|grep portmap


portmap-4.0-65.2.2.1


3.vim /etc/exports


/opt (sync,ro) 192.168.1.105(sync,rw)


3.5 服务器与客户端相互ping的通。


4.service portmap restart (must start up before nfs)


5.service nfs restart


6.showmount -e 192.168.1.101


7.mkdir /mnt/nfs


8.mount 【-t nfs】 192.168.1.101:/opt /mnt/nfs


9.修改了配置文件一//代码效果参考:http://hnjlyzjd.com/hw/wz_24775.html

般要重起服务,也可以用命令重新加载配置

exportfs -rv


10.showmount –a ——显示挂载的共享目录列表和NFS客户机的地址


11.system-nfs-config 可以图形化配置


备注:客户端的访问权限,由两部分组成,1,配置文件中的权限,2 文件夹本身的权限


chmod o+w /opt


8 samba 的使用


用户认证服务


1.保证window和linux 相互ping的通。


2.添加linux 用户 useradd wgl


3.将linux用户作为smb的访问用户 首次添加用-a,smbpasswd -a wgl


如果没有-a 表示对己有用户修改密码


添加Samba用户帐号


# smbpasswd -a sambauser


禁用Samba用户帐号


# smbpasswd -d sambauser


启用Samba用户帐号


# smbpasswd -e sambauser


删除Samba用户帐号


# smbpasswd -x sambauser


4.重起smb服务 service smb restart 或 /ect/init.d/smb restart


5.关闭防火墙 service iptables stop


5.5 ifconfig 192.168.50.128


6.win中 开始->运行 \192.168.50.128


默认情况下,linux共享了/home/wgl这个目录。


去除己有的联接 net use /delete /y


开始共享服务区


vim /etc/samba/smb.conf


282 【public】


283 comment = kasd;lfkasldkfPublic Stuff //共享文件夹的描述


284 path = /opt //共享的文件


285 public = yes


286 writable = yes


287 printable = no


288 write list = +staff


用linux 挂载windows 共享文件夹


mount -o username=adminstrator //192.168.16.85/12 /mnt/win


9. tftp 的使用


1 【root@localhost test】# rpm -qa|grep tftp


tftp-server-0.49-2.el5.centos server


tftp-0.49-2.el5.centos client


2 【root@localhost test】# rpm -qa|grep xinetd


xinetd-2.3.14-10.el5


3 vim /etc/xinetd.d/tftp


disable = no


  server_args = -s /tftpboot -c (不加上-c就不能使用put)


3.5 cd /tftpboot


touch hello.c


4 service xinetd start


5 tftp 192.168.1.101


tftp-> get hello.c


tftp->q /quit


**


1.gcc


1,从源文件到可执行文件要经进4个阶段,预处理,编译,汇编,链接


gcc -E hello.c -o hello.i gcc -E hello.c 默认打到屏幕上(处理以#号开头的语句)


gcc -S hello.i -o hello.s gcc -S hello.c 默认生成hello.s


gcc -c hello.s -o hello.o gcc -c hello.c 默认生成hello.o


gcc hello.o -o hello gcc hello.c 默认生成a.out


2.到系统指定的头文件路径找头文件,""先在当前路径下找,如没有,再找系统路径


/opt


hello.c


#include


int main()


{


printf("hello.world!!\n");


return 0;


}


/opt/include


hello.h


#include


指定头文件路径:


gcc hello.c -o hello -I/opt/include


3.优化(4级优化选项)


gcc -O0 optimize.c -o wyh


gcc -O1 optimize.c -o yh1


gcc -O2 optimize.c -o yh2


gcc -O3 optimize.c -o yh3


time ./wyh


time ./yh1


time ./yh2


警告:在调试的时候最好不使用任何优化选项,只有当程序在最终发行的时候才考虑对其进行优化。


4.gcc -g gdb.c -o gdb 要想调试,必须加入调试信息-g


2 gdb gdb


l 1 查看源文件


b 6 断点所设的地方,即为程序执行的下一条语句


info b查看断点


s n 单步调试(仅在函数处有区别)


r 全速运行


c 从单步状态恢复运行


*


1 makefile


1.1 以学生管理系统为例


compile.sh脚本写法如下:


gcc -c common.c


gcc -c student.c


gcc -c teacher.c


gcc -c main.c


gcc common.o student.o teacher.o main.o -o aa


rm -rf .o


./aa


写成makefile


STU: common.o student.o teacher.o main.o


gcc common.o student.o teacher.o main.o -o STU


common.o:common.c


gcc -c common.c


student.o:student.c


gcc -c student.c


teacher.o:teacher.c


gcc -c teacher.c


clean:


rm -rf .o STU


改进1:


STU: common.o student.o teacher.o main.o


gcc common.o student.o teacher.o main.o -o STU


common.o:common.c


student.o:student.c


teacher.o:teacher.c


main.o:main.c


clean:


rm -rf .o STU


引进变量:


CC:=gcc


OBJECT := common.o student.o teacher.o main.o


STU:$(OBJECT)


CC $^ -o $@


clean:


rm -rf .o STU


*


1.svn


1.mkdir c:\svnrepos 创建仓库目录


2.svnadmin create c:\svnrepos 创建仓库


2.5.设置svnserve.conf


anon-access = write 设置匿名访问


3.start svnserve -d -r c:\svnrepos 启动服务


4 初始化导入仓库数据


5.设置svnserve.conf


# anon-access = write


auth-access = write //认证访问


password-db = passwd //设定秘码


authz-db = authz //设定访问权限


8.设置passwd


admin = admin


m1 = m1


m2 = m2


t1 = t1


9.设置权限


m1_m2 = m1,m2 分组


【/】


admin = rw


@m1_m2 = r


t1 = r


=


【/Market】


admin = rw


@m1_m2 = rw


=


【/Tech】


admin = rw


t1 = rw


=


(2)


mkdir /home/svnrepo ----Linux平台


svnadmin create /home/svnrepo


svnserve --daemon --root /home/svnrepos


**


烧鸡过程:


1.在windows上按装USB下载驱动


FriendlyARM USB Download Driver Setup_20090421.exe


2.在windows上按装USB转串口软件


usbtoserial


3.按装超级终端:


开始-->附件-->通信-->超级终端


(如出现中华人民共和国,取消,是)


连接描述->起个名字你爱听的名字,选个你喜欢的图片


连接到 com11(右键我的电脑,设备管理器,端口com11)


com11属性


每秒位数(波特率) 115200


硬件流: 无


确定


此时能看到一个终端:


4.打开dnw 显示USB OK 表示成功。


5.在串口终端中


1.输入x 格式化flash


2.输入v 下载bootloader


显示等待下载:


3.打开dnw USBPORT->Transmit/Restor


选择supervivi128


4.输入k 下载kernel 重复3,选择ZimageW(NX)35


5.输入y 下载根文件系统,重复3,选择 rootfs_qtopia_qt4.img


6.下载完毕。


7.关闭电源,刷机开关打到正常开机状态。重开电源,记得校正。


8.恭喜你,开始玩机。


2.1 umask 默认为0 022


touch 默认为0 666


gcc 所得编译文件为 0 777


1


umask 0


touch aa.c 0666


gcc -o a.out aa.c 0777


2


umask 022


touch aa.c 0644 (0666&~0022)


gcc -o a.out aa.c 0755(0777&~0022)

相关文章
|
22天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
69 4
|
11天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
32 5
linux系统服务二!
|
11天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
32 3
linux系统服务!!!
|
19天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
159 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
21天前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
40 5
Linux系统之安装OneNav个人书签管理器
|
20天前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
66 3
Linux系统之部署Linux管理面板1Panel
|
1天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
10 3
|
1天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
8 3
|
4天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
15 6
|
1天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
9 2