技术笔记: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)

相关文章
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
89 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
80 2
|
10天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
129 78
|
13天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
52 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
2天前
|
安全 Linux KVM
Linux虚拟化技术:从Xen到KVM
Xen和KVM是Linux平台上两种主要的虚拟化技术,各有优缺点和适用场景。通过对比两者的架构、性能、安全性、管理复杂性和硬件依赖性,可以更好地理解它们的适用场景和选择依据。无论是高性能计算、企业虚拟化还是云计算平台,合理选择和配置虚拟化技术是实现高效、稳定和安全IT环境的关键。
26 8
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
140 48
|
9天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
62 13
|
1月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
39 3
|
10天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
28 0
|
1月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
65 4