我正在尝试运行一个Shell脚本,该脚本在电话开机时将文件复制到特定位置,并将以下内容添加到init.rc文件中:
service test_copy /system/bin/sh /system/bin/test_copy.sh
class pre-zygote_services
oneshot
user system
group system
Run Code Online (Sandbox Code Playgroud)
当服务名称(test_copy)与脚本名称相同时,test_copy在这种情况下,它不会执行脚本,但是如果我将服务名称更改为另一个名称,例如start_test_copy,它将起作用。我只是想知道为什么服务名称与脚本名称相同时它不起作用或我错了的原因?
要启动Diaspora服务器,需要运行以下命令:
cd/home/diaspora
./script/sever
我的服务器(Ubuntu 11.10)每天都重启.我需要配置服务器(Ubuntu 11.10)以允许在我的服务器启动时启动diaspora服务器.怎么做?
我试过了:
以运行diaspora的用户身份登录,打开crontab编辑器(crontab -e),滚动到结尾并输入:
@reboot cd/home/diaspora; ./script/sever
然后保存,但在我的服务器启动后它仍然无法启动.
并且,如果crontab -e不能这样做,是否可以编写一个init脚本来执行此操作?如果init脚本能够执行此操作,如何编写脚本来执行此操作?
我有一个在启动完成后运行的服务.此服务需要互联网连接.等待设备连接到互联网的最佳做法是什么?移动wifi并不重要.
我目前的解决方案涉及一个while循环,只检查ConnectivityManager,直到其中一个网络可用,但这感觉很粗俗.
有一个更好的方法吗?
我正在尝试创建一个引导脚本来设置EC2实例.我希望实例在引导期间自动从S3存储桶下载源代码.我最近阅读了有关为我的EC2实例分配IAM角色的信息,以便他们可以从元数据服务器获取临时凭证.这样,我就不必在我的映像上存储AWS凭据或在引导期间传递它们.
我编写了一个Python脚本,通过使用boto连接到S3来执行下载.我将该脚本连接到init.d配置.当我在远程SSH会话中手动运行它时,我的脚本运行正常,但由于某种原因,它在启动时执行时失败.
我的代码以下列方式使用boto:
import boto
try:
conn = boto.connect_s3()
except:
# log error
exit(-1)
Run Code Online (Sandbox Code Playgroud)
理论上,使用boto 2.6,该代码应联系AWS元数据服务器,以根据当前EC2实例的IAM角色获取临时安全凭证.
出于某种原因,在启动时,boto.connect_s3()引发了一个boto.exception.NoAuthHandlerFound: "没有处理程序准备好进行身份验证.检查了1个处理程序.['HmacAuthV1Handler']检查您的凭据".
我将错误追溯到boto.auth模块,在get_auth_handler函数中(引发此异常的唯一地方).创建HmacAuthV1Handler对象时,如果访问密钥ID或密钥为None,则HmacKeys基类构造函数将失败.实际上,经过我的脚本中的一些实验,我发现如果我显式创建了一个名为='aws'并且没有凭据的boto.provider.Provider类的实例,那么Provider实例的access_key/secret_key字段都保持为None(但是仅在引导期间;如果我之后手动运行脚本,则初始化凭据).然而,我知道元数据服务器不是罪魁祸首(即使在启动期间,GET确实会返回预期的凭据).
那么......有什么不对的?这可能是博托的一个问题吗?配置问题?或者我只是做错了什么?哎呀,Ubuntu在启动时是不是处于这种操作的"正常状态"?
---编辑---
感谢下面的garnaat的回答,我发现问题是python路径(sys.path)在启动期间与远程SSH会话期间完全不同.
启动时:
['/home/bitnami',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
Run Code Online (Sandbox Code Playgroud)
从SSH会话运行时:
['/home/bitnami',
'/opt/bitnami/python/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/opt/bitnami/python/lib/python2.7/site-packages/MySQL_python-1.2.3c1-py2.7-linux-i686.egg',
'/opt/bitnami/python/lib/python2.7/site-packages/html5lib-0.90-py2.7.egg',
'/opt/bitnami/python/lib/python2.7/site-packages/boto-2.6.0-py2.7.egg',
'/opt/bitnami/python/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg',
'/opt/bitnami/apps/django/lib/python2.7/site-packages',
'/home/bitnami/deploy',
'/opt/bitnami/python/lib/python27.zip',
'/opt/bitnami/python/lib/python2.7',
'/opt/bitnami/python/lib/python2.7/plat-linux2',
'/opt/bitnami/python/lib/python2.7/lib-tk',
'/opt/bitnami/python/lib/python2.7/lib-old',
'/opt/bitnami/python/lib/python2.7/lib-dynload',
'/opt/bitnami/python/lib/python2.7/site-packages',
'/opt/bitnami/python/lib/python2.7/site-packages/PIL']
Run Code Online (Sandbox Code Playgroud)
(我使用32位BitNami DjangoStack 1.4.2-1图像作为我的基本图像.)
我正在构建一个应用程序,它将定期监视电池状态,wifi连接和位置数据,并将结果写入文件(然后将其发送到服务器).在安装应用程序时,应禁用监视 - 但启用它的用户应在重新启动后继续运行.经过大量阅读后,我意识到我基本上有两种选择:
Service并从我的活动中解雇它.将它设置在前景,STICKY和什么不是,并希望它不被android杀死 - 并注意如果android重新创建它(实际上应该有3个服务,因此它们之间的同步可能是凌乱的).在服务中启动一个线程(我猜不需要Executors)并拥有它Thread.sleep(REGULAR_INTERVAL).唤醒,收集数据将它们写入文件.广播收集的信息并将其显示在我的活动中(如果它正好在运行(将注册广播接收器)).冲洗并重复while(true).有办法打断这个我想我必须在两种情况下注册启动接收器以检查共享首选项(已经完成此操作),并且在情况1启动服务的情况下,在案例2中为注册事件注册接收器并设置警报管理器 - 这是我需要一些骨架代码的部分.
所以 - 在我开始构建之前 - 这将是首选方法?
在概述中 - 应用程序应监视某些手机属性并将其写入文件,直到用户选择将其关闭.
我在Ubuntu上工作beanstalkd(对我来说很新),我想知道哪个是在ubuntu启动时启动beanstalkd服务的好方法.
总之,我想执行,
beanstalkd -b/path/to/binlog/directory -l 127.0.0.1 -p 11300
使用/ etc/default/beanstalkd.我添加了以下代码并重启系统(不工作)
BEANSTALKD_LISTEN_ADDR=127.0.0.1
BEANSTALKD_LISTEN_PORT=11300
BEANSTALKD_BINLOG_DIR=/var/www
DAEMON_OPTS="-l $BEANSTALKD_LISTEN_ADDR -p $BEANSTALKD_LISTEN_PORT -b $BEANSTALKD_BINGLOG_DIR"
START=yes
Run Code Online (Sandbox Code Playgroud)sudo nano /etc/init/beanstalkd.conf以及粘贴和重启系统(不工作)
description "simple, fast work queue"
start on filesystem stop on runlevel [!2345]
respawn respawn limit 5 2
exec su nobody -c 'exec /usr/local/bin/beanstalkd'
Run Code Online (Sandbox Code Playgroud)通过编辑/ etc /文件夹下的rc.local文件.粘贴我的命令在退出0之前执行 (对我来说工作正常)
我有一个带有二进制Linux 2.6.18的旧设备内核可以正常启动到它的 rootfs。但是,如果我尝试从源代码编译此内核,则生成的内核二进制文件将在引导期间冻结。我没有用于构建当前正常启动的先前内核二进制文件的 .config 文件。
启动冻结,没有提供错误输出。这是启动日志:
Linux version 2.6.18-6.2 (myuser@host) (gcc version 4.2.0 20070124 (prerelease) - BRCM 10ts-20080721) #10 SMP Sun Apr 28 18:25:24 BRT 2013
Fetching vars from bootloader... OK (E,d,B,C)
Detected 512 MB on MEMC0 (strap 0x23430310)
Board strapped at 512 MB, default is 256 MB
Options: sata=1 enet=1 emac_1=1 no_mdio=0 docsis=0 ebi_war=0 pci=1 smp=1
CPU revision is: 0002a044
FPU revision is: 00130001
Primary instruction cache 32kB, physically tagged, 2-way, linesize 64 bytes.
Primary data …Run Code Online (Sandbox Code Playgroud) 重置向量的维基百科页面说(对于 386+ 处理器):
复位时CS寄存器的选择器部分的值为F000h,CS寄存器的基址部分的值为FFFF0000h,复位时IP寄存器的值为FFF0h,形成实模式下的分段地址FFFFF000h:FFF0h .
我对计算机启动的所有阅读都说处理器以实模式启动,因此“选择器”不应该出现。那为什么要在这里提到呢?另外,这里提到的“基本部分”是什么,它存储在哪个寄存器中?基本上,我不明白 386 处理器与以前的处理器的重置向量设置有何不同。
由于我的bootgrid中有更多列,因此列的宽度已经减少,使得数据部分可见.所以我想有一个用户设施可以拖动列大小增加或减少,或者像用户悬停列值和标题时,数据应该作为工具提示可见..请问是否可以使用此功能bootgrid?
我正在寻找内核如何进行 PCI/PCIe 枚举和 BAR 分配。
我以为内核会在启动时分配BAR的PCI基地址,但是当我尝试pci earlydump(在内核初始PCI子系统之前)查看BAR值时,我发现所有基地址都已经分配了!?这是否意味着 BIOS 进行 PCI/PCIe 枚举和 BAR 分配?BIOS 如何知道每个 pci 设备的基地址并在没有冲突的情况下分配这些地址?
如果是这样,嵌入式系统(没有 BIOS )如何为 PCI/PCIe 设备枚举和分配基地址?
顺便说一下,我的电脑是 Ubuntu 14.04.1 LTS (x86_64)
boot ×10
android ×3
linux-kernel ×2
service ×2
ubuntu ×2
alarmmanager ×1
amazon-ec2 ×1
amazon-iam ×1
amazon-s3 ×1
beanstalkd ×1
boto ×1
connectivity ×1
debugging ×1
diaspora ×1
grid ×1
jquery ×1
linux ×1
pci ×1
real-mode ×1
startup ×1
x86 ×1