本文将带您了解关于如何从python代码调用shell脚本?的新内容,同时我们还将为您解释python怎么调用shell脚本的相关知识,另外,我们还将为您提供关于androidJNI实现C代码调用、A
本文将带您了解关于如何从 python 代码调用 shell 脚本?的新内容,同时我们还将为您解释python怎么调用shell脚本的相关知识,另外,我们还将为您提供关于android JNI 实现 C 代码调用、Ansible 如何从 shell 注册的输出构造数组,包括各自的主机名、bash – 如何从/ etc / inittab启动linux shell、CMake 不断从 cygwin python 中获取 Python,如何从 Windows 安装的 Python 中获取的实用信息。
本文目录一览:- 如何从 python 代码调用 shell 脚本?(python怎么调用shell脚本)
- android JNI 实现 C 代码调用
- Ansible 如何从 shell 注册的输出构造数组,包括各自的主机名
- bash – 如何从/ etc / inittab启动linux shell
- CMake 不断从 cygwin python 中获取 Python,如何从 Windows 安装的 Python 中获取
如何从 python 代码调用 shell 脚本?(python怎么调用shell脚本)
如何从 python 代码调用 shell 脚本?
答案1
小编典典子流程模块将帮助您。
明目张胆的例子:
>>> import subprocess>>> subprocess.call([''sh'', ''./test.sh'']) # Thanks @Jim Dennis for suggesting the []0 >>>
Wheretest.sh
是一个简单的 shell 脚本,并且0
是它在这次运行中的返回值。
android JNI 实现 C 代码调用
由于 android 项目中要使用 C 写的代码,因此也就需要用到 JNI,首先想到就是用 NDK 方式显现。
参考教程《Android 应用开发揭秘》,这是我的入门教程,觉得不错。不过今天还是要鄙视下,2011 版但有些内容却太旧了。
首先参考教程搭建 NDK 环境
Eclipse 早已完成
Cygwin 说是 window 下需要的
NDK
NDK 方便,官网下个解压就 OK 了,Cygwin 就头大了,一对功能选项不知道该选什么,搞多次不成功,后来还是群里朋友提醒新 NDK 已经不用 Cygwin 了,一查果然自 NDK-r7 以来就不用了,而我下的是 NDK-r9。下了 8G 的垃圾 Cygwin,不管了直接 baidu 个 NDK-build.cmd 有不少介绍如何针对 NDK-r7 以上如何进行配置(不在重复)。
配置完后把 NDK 下 jni 文件夹下的两个文件拷贝到自己的工程的 jni 文件夹中,编译生成:libhello-jni.so 文件
运行错误
- 找不到 libhello-jin 库文件
baidu 下原因,原来如果使用 system.loadLibrary ("xxx"); 参数中不能有 lib
如果用 system.load 加载需要用绝对路径(没有测试),立马去掉参数中的 lib,库正常载入。感觉优点弱智
- 找不到函数
继续 baidu 看他人用例,感觉是接口命名问题,接口命名如下:
java_com_example_hellojni_mytest_stringFromJNI(JNIEnv* env, jobject thiz )
java: 头 固定不变
com_example_hellojin:包名
mytest:类名
调用是时可以通过对象调用如:mytest test = new mytest ();
test.stringFromJNI()
也可以直接调用如:stringFromJNI
有什么区别????未知
这样看来感觉库加载后并不属于整个工程,而只属于某一个对象,而其他对象如果也想使用该接口时必须自己去加载,这也就要求 java 与 C 之间的接口竟可能集中,最好能用一个对象来管理.
接下来就是进行参数传递的测试了,这是我想要的...
Ansible 如何从 shell 注册的输出构造数组,包括各自的主机名
如何解决Ansible 如何从 shell 注册的输出构造数组,包括各自的主机名?
我正在尝试从特定组的每个主机获取进程的状态,并以表格格式打印主机名和进程状态。
[Nginx]
172.1.0.1
172.1.0.2
---
hosts: all
tasks:
- name: Get process status
shell: ps -ef| grep [n]ginx
register: Nginx_status
when: ''"Nginx" in group_names''
期望的数组/表格格式如下(我在这里使用 shell 命令返回码来定义 UP 或 DOWN)。
例如:
jinja2 template to capture output:
{% for output in Nginx_status.stdout_lines %}
{{ output.hostname }} {{ if output.rc == 0 UP else DOWN }}
{% endfor %}
模板不是强制性的,最终输出是我所期待的。
Final output:
HOST Nginx
172.1.0.1 UP
172.1.0.2 DOWN
最后,每个组的合并输出应该是这样的。
HOST Nginx Some-x Some-Y
172.1.0.1 UP DOWN UP
172.1.0.2 DOWN UP NA(Not Applicable)
解决方法
如果目标是将输出打印到控制台,则尝试过滤运行剧本的输出。有一些方法可以完全在 ansible 中做到这一点,但它更多地涉及使用 map
。
test.yml
:
---
- hosts: nginx
tasks:
- name: Get process status
command: pgrep nginx
register: proc_status
changed_when: false
failed_when: false
- debug:
msg: "###HOST NGINX###"
run_once: true
- debug:
msg: "###{{ ansible_host }} {{ (proc_status.rc == 0) | ternary(''UP'',''DOWN'') }}###"
运行:ansible-playbook test.yml | grep "###" | cut -d''#'' -f4
应该导致类似:
HOST NGINX
192.168.15.101 UP
192.168.15.102 DOWN
您的用例可能因 ###
标记和表格列布局(使用 Linux column
命令?)而异,但这应该提供解决问题的基础知识。
请注意,您的原始 ps -ef | grep ...
不会从结果中过滤自身,因此始终会匹配。如果您沿 ps -ef | grep -v grep | grep [n]ginx
上的路线行驶,则需要使用 pgrep
之类的东西进行调整。
我回答是因为我没有足够的代表来评论。
“如果我使用 localhost 的委托附加在同一个文件中,那么 {{ ansible_host }} 将成为 localhost 而不是每个主机 IP。– SNR”
"{{inventory_hostname }}" 仍然是它在罐头上所说的,即使在 "delegate_to: localhost" 任务中也是如此。
bash – 如何从/ etc / inittab启动linux shell
::sysinit:/etc/init.d/rcS ttyS0::respawn:-/bin/sh
rcS是一个shell脚本,它通常启动我们的应用程序,但在特殊情况下我们调用“return”来终止它,这显然让/ bin / sh接管了tty,因为我们得到了一个shell提示符,我们可以在那里进行一些维护.
现在inittab看起来像这样:
::once:/etc/init.d/rcS
我们现在通过在rcS脚本中执行“/ bin / bash -i”来启动shell,因为我们不希望总是运行通常从不使用的第二个shell(由于内存限制).
但是创建的bash没有作业控制功能,这是非常有限的.
所以我的问题是,我可以创建一个shell(也许可以终止rcS脚本),就像我们之前的解决方案中init处理的那样,这样我再次获得一个带有作业控制的shell吗?
解决方法
6:2345:respawn:/sbin/mingetty --autologin root tty6
以下是其他人为类似技巧所做的事情.
openvt -f -c 12 -w -- sh -c "unicode_start; echo -e '$norPT'; exec $LOGINSH" >/dev/tty1
CMake 不断从 cygwin python 中获取 Python,如何从 Windows 安装的 Python 中获取
如何解决CMake 不断从 cygwin python 中获取 Python,如何从 Windows 安装的 Python 中获取
我有一个看起来像这样的 CMake 脚本:
find_program(PYTHON_COMMAND NAMES python3 python)
问题是它检测到安装在 Cygwin 安装中的 python。 输出总是:
-- PYTHON_PATH:C:/cygwin64/bin/python3
我希望它取自:
c:\\python36-64\\python
在windows PATH变量中,Cygwin bin在路径的最后一个,windows安装在第一个
但它只检测到 Cygwin python,
怎么改?
今天关于如何从 python 代码调用 shell 脚本?和python怎么调用shell脚本的讲解已经结束,谢谢您的阅读,如果想了解更多关于android JNI 实现 C 代码调用、Ansible 如何从 shell 注册的输出构造数组,包括各自的主机名、bash – 如何从/ etc / inittab启动linux shell、CMake 不断从 cygwin python 中获取 Python,如何从 Windows 安装的 Python 中获取的相关知识,请在本站搜索。
本文标签: