Android之Linux常见指令与内核关系

Android操作系统底层linux

2.6.x内核

Linux文件的访问权限:

rwx rwx rwx 111 111 111 r: 可读 w:可写 x:可执行

7 7 7 600 4755 755

Android操作系统的目录结构

data目录: 保存应用程序的数据

/data/app目录 用户安装的应用程序的apk /data/anr目录 开发人员使用定位anr异常 /data/system目录 系统配置信息,注册表

dev目录 : devices英文单词的缩写

linux操作系统所有的设备都是用文件表示的

mnt 外置的挂载上来的设备

sdcard u盘

proc 虚拟的文件系统 目录 配置(进程的信息),状态信息(cpuinfo meminfo)

sys 类似 /proc ,也是虚拟的文件系统 .里面主要表示硬件设备信息和设备驱动信息

sbin

system bin系统重要的二进制文件 adbd: adb调试桥的服务器端进程

system 系统目录文件夹(重要) Android系统标准目录结构

/system/app目录 系统应用程序目录 默认卸载不掉 /system/bin目录 可执行的二进制程序 /system/etc 扩展目录 /system/fonts 字体目录 /system/framework 框架平台中间件 /system/lib 类库 c/c++代码 /system/media 媒体资源 /system/tts 语音发声引擎 不支持中文 /system/usr 用户设备的配置信息 按键编码映射 /system/xbin 二进制文件,为开发人员提供的二进制文件

常见的linux指令

建议大家在练习操作指令时在:/data/local/tmp 临时目录中练习。目录里面的文件都是可以任意操作

su

superuser 切换到超级管理员,无所不能的 超级管理员 $ 一般用户

rm

remove 删除一个文件 rm 文件名 rm *.txt

ls

list 列出来所有的文件和文件夹 ls -l 列出来文件的详细信息 c驱动 d文件夹 -文件 ls -a 显示隐藏文件 文件名前缀带. 就是隐藏文件

cd

切换到某个目录 cd … 切换到上级目录

cat

猫,好奇害死猫 查看文件详细内容的指令 cat 文件名 注意: 一定不要cat 二进制程序

mv

move 移动 move 源地址 – > 目标地址 常用于文件的重命名 move 源文件名称 目标文件名称

cp

copy 拷贝文件 在Android操作系统并没有被引入进来,用cat命令代替

mkdir

make dir 创建文件夹

rmdir

删除文件夹 rm -f xxxx 删除一个非空文件夹的命令

chmod

change mode 更改文件的模式,权限 修改为最高权限 chmod 777 文件名

touch

创建文件 操作文件的指令 touch 文件名 如果文件不存在,直接创建文件,如果文件存在,什么事情都不发生

echo

回显数据, 数据的重定向 echo ‘abcdef’ > gaga.txt 向gaga.txt 文件里面写入内容 abcdef 可以利用重定向符号去实现文件的拷贝 cat gaga.txt > hoho.txt 将gaga.txt文件的内容复制到 hoho.txt文件中,如果没有hoho.txt文件,将会自动创建

sleep

.sh linux系统的下的批处理文件 sleep 睡眠函数 用于延迟多久执行命令

df

df /mnt/sdcard 列出来一个目录的空间状态信息

id

打印获取当前的用户组 android系统给不同的应用分配了不同的用户 uid, user id,用户id uid=0(root) 无所不能,非常强大 如来佛祖 uid=1000(system) 系统用户 比较强大 玉皇大帝 uid=2000(shell) 命令行窗体 执行adb指令 uid=(10000+) 一般应用程序的id 如果不声明权限,什么危险的操作都干不了

ps

列出来操作系统运行的所有的进程

kill

杀掉进程 kill 进程pid

reboot

重启 root权限下

chown

change owner 更改所有者 chown 当前文件所有者.当前文件所有者组(0.0 1000.1000 2000.2000 ) 文件名

mount

挂载,只有文件系统被挂载才可读可写 mount -o remount rw / 挂载当前目录为可读可写权限 mount -o remount ,rw /system 删除任意的文件

Android下特有的linux指令

am

activity manager am start -n top.lengzheng.linuxcommand/top.lengzheng.linuxcommand.MainActivity 开启一个应用程序 am force-stop top.lengzheng.linuxcommand 强行停止应用 am startservice 开启服务 am startservice -a xxxx (xxx表示action的值-a表示动作,就是你在Androidmanifest里定义的) am broadcast 发送广播 am broadcast –a XXX (xxx表示action的值)

pm

package manager 包管理器 pm clear PACKAGE 清除应用程序数据 pm disable PACKAGE_OR_COMPONENT 冻结应用程序(深度冻结) pm enable PACKAGE_OR_COMPONENT 解冻应用程序(深度解冻) pm install xxxxxx.apk pm unstall 包名

monkey

猴子 自动化压力暴力测试 monkey -p top.lengzheng.linuxcommand 1000

sendevent

sendevent /dev/input/event0 3 0 +pointX 水平方向坐标 sendevent /dev/input/event0 3 1 +pointY 垂直方向坐标

android与linux内核关系

最初学习android的时候,在网上经常看到的对于android的解释,经常是这样一句:“android是基于linux内核的”。我自己当初对于这句话的理解是,“android是在linux源码上改编的,是一种Linux”,当然现在看来,这是不对的。

要真正理解android和linux内核的关系,可以这样来看:

0: 烧录ubuntu镜像和android镜像和“最小文件系统”镜像:

android镜像文件包括:


bootloader:u-boot-iTOP-4412.bin(515KB)

kernel:zImage(3MB)

Android file system: ramdisk-uboot.img(901KB)和system.img(254MB)

Ubuntu镜像文件包括:

bootloader:u-boot-iTOP-4412.bin(444k)

kernel:zImage(3M)

Ubuntu file system:iTOP4412_ubuntu_12.04_for_LCD_20141230.tar.gz(500M)

“最小文件系统”镜像文件包括:

bootloader:u-boot-iTOP-4412.bin

kernel:zImage

最小文件系统file system:ramdisk-uboot.img(901KB)和system.img

在以上的三种操作系统的烧录中可以看到:

Android = uboot+linux内核(zImage)+Android文件系统(system.img)

Ubuntu = uboot+linux内核(zImage)+Ubuntu文件系统***.tar.gz)

最小文件系统= uboot+linux内核(zImage)+最小文件系统(system.img)

三者的界面是不同的,而界面就是分别由各自的文件系统决定的。

其中,最小文件系统的界面就是shell命令行。

所以现在我们应该知道了,android是一个文件系统,是由linux内核加载起来的,可以理解为一个巨大的应用程序。Ubuntu并不是Linux内核!原理上是跟android一样的,也是由linux内核加载起来的一个文件系统,也可以理解为一个巨大的应用程序。

我们可以用busybox制作一个最小文件系统。

以上为Android中的Linux内核学习,更多Android技术进阶自己可以前往《Android进阶技术手册》快速定位自己扫盲不足加以学习;正所谓学到老活到老。学无止境,不学习就意味着淘汰;以至于许多Android开发人员说Android不行了。确实Android的市场在下滑但没有那么糟糕;真正有技术的人,他的位置根本没有动摇过;因为他就是公司的核心人员。

文末

古人说:“书山有路勤为径, 学海无涯苦作舟”,只有付出了努力,才会有成功!不经历风雨,怎么见彩虹,成功等于一份天赋加百分之九十九的努力。

重视每一门学科,关注社会和时代的开展,并且坚持不懈,才能给自己的终身开展奠定坚持的根底,创造成功的时机。

猜你喜欢

转载自blog.csdn.net/m0_71524094/article/details/127435263