安卓13 /system/bin/init更新之后推进去不生效
时间: 2023-07-18 18:28:47 浏览: 68
在 Android 系统中,`/system/bin/init` 是 `system/core/init` 进程的主要可执行文件。如果你更新了 `/system/bin/init` 后发现没有生效,可能是以下原因:
1. 文件权限问题:在 Android 系统中,文件的权限非常重要,如果你的 `/system/bin/init` 文件权限设置不正确,可能导致它无法被执行。你可以通过使用 `adb shell` 命令进入到设备的 shell 环境,然后使用 `ls -l /system/bin/init` 命令查看该文件的权限设置,确保其权限设置正确。
2. 文件系统只读问题:在某些情况下,Android 系统的文件系统可能会被挂载为只读模式,这时候你无法修改 `/system/bin/init` 文件。你可以通过使用 `mount` 命令查看当前文件系统的挂载状态,如果发现 `/system` 目录被挂载为只读模式,你需要先将其挂载为可读写模式,再进行文件更新操作。
3. 缓存问题:在 Android 系统中,一些文件可能会被缓存在内存中,如果你更新了 `/system/bin/init` 文件,但是缓存中的文件没有被更新,可能导致你看不到新的变化。你可以尝试重启设备,或者使用 `sync` 命令将缓存写入磁盘,以确保新的文件生效。
希望以上解决方案可以帮助你找到问题所在。
相关问题
执行完exec的结果能使用管道放到/dev/kmsg中嘛
在Android的init.rc文件中,可以使用管道将命令的输出写入到/dev/kmsg文件中,以便将输出信息记录在内核日志中。具体操作步骤如下:
1. 执行命令,并将结果通过管道写入到/dev/kmsg文件中。例如:
```
exec /system/bin/ls -l | tee /dev/kmsg
```
这条语句会执行ls -l命令,并将输出结果通过管道写入到tee命令中,然后tee命令将输出同时写入到终端和/dev/kmsg文件中。
2. 重启Android设备,让修改后的init.rc文件生效。
当你重启Android设备后,init进程会自动执行ls -l命令,并将输出结果写入到/dev/kmsg文件中。你可以使用dmesg命令来查看/dev/kmsg文件中的日志信息,例如:
```
$ dmesg | grep "ls -l"
```
这条命令会查找包含"ls -l"字符串的日志信息,并将其打印在终端上。
需要注意的是,在使用管道将命令的输出写入到/dev/kmsg文件中时,应该遵循一定的规范,以避免对系统造成不必要的影响。同时,应该谨慎使用exec命令和管道符号,因为它们都可能会导致系统崩溃或者数据丢失。
android系统中如何执行init 文件可以执行ls -l
在Android系统中,init是系统的第一个进程,它会在系统启动时自动运行,并负责启动其他所有的进程。如果你想在Android系统中执行ls -l命令,可以将该命令写入到init.rc文件中,让init进程在启动时自动执行。
具体操作步骤如下:
1. 打开Android设备的终端或者Android Studio的终端窗口,进入到Android系统的根目录下。
2. 编辑init.rc文件,该文件位于/system/core/rootdir/init.rc。可以使用vi命令编辑该文件,例如:vi /system/core/rootdir/init.rc。
3. 在文件的末尾添加如下一行:exec /system/bin/ls -l。这条语句会在系统启动时执行ls -l命令,并将输出结果打印在终端上。
4. 保存并退出init.rc文件。
5. 重启Android设备,让修改后的init.rc文件生效。
当你重启Android设备后,init进程会自动执行ls -l命令,并将输出结果打印在终端上。
需要注意的是,在修改init.rc文件时,应该遵循一定的规范,以避免对Android系统造成不必要的影响。同时,应该谨慎使用exec命令,因为它会替换掉当前进程的代码和数据段,可能会导致系统崩溃或者数据丢失。