我试图从Android应用程序运行一些类似LINUX的命令,我希望我的应用程序运行一些自定义命令pkg,dpkg等等.基本上我需要我的应用程序充当终端应用程序,为此,我创建了一个必要的Linux文件结构应用程序包中的库和二进制文件,即我将文件放在/data/data/com.example.root.app/files/usr/bin目录结构下.然后我从我的代码执行它们:
Process process;
try {
process = Runtime.getRuntime().exec(new String[]{"pkg","search","apache2"}, env, new File(cwd));
} catch (IOException e) {
// TODO: Visible error message?
}
Run Code Online (Sandbox Code Playgroud)
我使用变量env来设置环境变量PATH,LD_LIBRARY_PATH,HOME等..我将传递给上面的过程.另外,我从包含命令的目录开始进程,即
String cwd = "/data/data/com.example.root.app/files/usr/bin"
Run Code Online (Sandbox Code Playgroud)
我能够运行像env,等的基本命令ls -l,pwd但我无法运行自定义构建的命令,如pkg.
当我尝试执行该命令时,pkg它会抛出IOException错误= 13权限被拒绝
请注意,我已将可执行权限设置为777递归到整个目录,只是为了查找它是否运行,但事实并非如此.
此外,当我使用现有的终端应用程序时,我可以运行该pkg命令
我想在运行时安装依赖项后使用 MySQL 作为 apache 气流的后端数据库
airflow initdb
Run Code Online (Sandbox Code Playgroud)
Airflow 开始设置数据库,但随后失败并显示以下日志
shahbaz@OpenSource:~$ airflow initdb
[2019-07-11 12:01:13,726] {settings.py:182} INFO -
settings.configure_orm(): Using pool settings. pool_size=5,
pool_recycle=1800, pid=17492
[2019-07-11 12:01:13,917] {__init__.py:51} INFO - Using executor
LocalExecutor
DB: mysql+mysqldb://airflow:***@localhost:3306/airflow
[2019-07-11 12:01:14,276] {db.py:350} INFO - Creating tables
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> e3a246e0dc1,
current schema
INFO [alembic.runtime.migration] Running upgrade e3a246e0dc1 ->
1507a7289a2f, create is_encrypted
INFO [alembic.runtime.migration] Running upgrade 1507a7289a2f ->
13eb55f81627, maintain history for compatibility …Run Code Online (Sandbox Code Playgroud)