- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我写了一个脚本作为 Ubuntu 启动服务(位于/etc/init.d 并在启动时运行)有一条线
HOMEDIR=`getent passwd username1 | cut -d: -f6`
问题是,当我在 shell 中运行脚本时,被记录为 username1 甚至 root,命令返回
/home/username1
当脚本在启动时运行时,该命令不返回任何内容。为什么会这样?也许,用户(或 super 用户)没有访问 /usr/bin/passwd 文件的权限?
更新:问题是 username1 存储在远程服务器中,因此 LDAP 在启动时加载它。当上面提到的命令执行时,LDAP 状态是activating (start) 但不是active (running)。似乎是因为它没有完全启动,所以 username1 帐户没有加载到主机系统。
我仍然未能解决问题,现在我正在尝试,感谢任何帮助/提示。
最佳答案
问题解决了!
这是一个固定脚本,包含与问题相关的行(此脚本服务于 dropbox daemon start | stop):
#!/bin/sh
# dropbox service
# Replace with linux users you want to run Dropbox clients for
### BEGIN INIT INFO
# Provides: dropbox
# Required-Start: $local_fs $remote_fs $network $syslog $named slapd
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: false
# Short-Description: dropbox service
### END INIT INFO
sleep 10s
DROPBOX_USERS="username1"
DAEMON=.dropbox-dist/dropboxd
start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -x $HOMEDIR/$DAEMON &> /dev/null
fi
done
}
stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
/sbin/start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}
status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
正如我所发现的,该脚本需要启动 LDAP 服务器,因此在第 7 行中,我在 $named
设施之后添加了 slapd
:
# Required-Start: $local_fs $remote_fs $network $syslog $named slapd
其中 slapd
是 LDAP 的服务,在文件 /etc/init.d/slapd
中提供,它在第 3 行(init info
block ):
# Provides: slapd
因此,在我添加它之后,我在 50% 的情况下成功地在启动时运行了 dropbox。所以我添加了一个 hack:
sleep 10s
现在它可以正常工作了。
关于ubuntu - getent passwd 用户名在启动时不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39634315/
我写了一个脚本作为 Ubuntu 启动服务(位于/etc/init.d 并在启动时运行)有一条线 HOMEDIR=`getent passwd username1 | cut -d: -f6` 问题是
我有一些关于 getent group 的问题。 getent group A从哪里得到A组的信息? 是否只能从 /etc/group 获取? 是否有可能我可以通过 getent group A 找到
public InputStream getInputStream() { AndroidHttpClient client = AndroidHttpClient.newInstance(U
我正在使用 Jersey Client 进行 REST 服务调用。现在,当我收到响应时,我想记录 json 响应,并且我还想让实体填充到我的响应 bean 中。 Client client = Cli
我有以下问题: 在我的带有 Hibernate 的 Java Spring Boot 应用程序中,我有 Service 实现类。它看起来像这样: package eu.barz.familykurse
我想检查某个用户是否存在于特定组中。 getent passwd user_name &> /dev/null 上面的命令检查用户是否在那里。但我还想看看它是否属于一个名为 example suppo
我正在使用 jq 来尝试将 bash 命令输出转换为 json。但是,转换失败了。 使用这一行: hostname && getent passwd | egrep -v '/s?bin/(nolog
我在使用 jeresy ClientRespone.getEntity 反序列化时遇到问题 我尝试遵循一些教程和问题,包括: http://jersey.576304.n2.nabble.com/Ho
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: NetworkOnMainThreadException 很长一段时间以来,我一直在使用在 AsyncTas
我正在使用 getent group 命令获取 groups 以及 linux 中的用户名。但它没有显示某些我知道存在的 groups 的任何 usernames。 我需要这个信息,还有其他办法吗?
在我的逻辑应用中,第一步从 Azure 表存储中获取一些已筛选的实体。过滤器由两个条件组成: 一个字段必须等于某个常量值 其他字段(日期时间)必须小于或等于当前时间减 10 分钟 它一直工作正常,直到
在 Symfony 中创建 Doctrine postPersist EventListener 后,我的 IDE 指向 $args->getEntity() 行;由于已被弃用,我不知道如何解决这个问
在配置 LDAP 身份验证时,我遇到了以下问题。 我已经在 nsswitch.conf 文件中配置了 nss,如下所示: 密码:ldap文件 组:文件 阴影:文件 当我给出以下命令时:获取密码列出所有
我想知道为什么一方面从 id 和 group 得到不同的结果,另一方面从 getent group 得到不同的结果。重现步骤: $ sudo usermod -a -G libvirt eric $
我想使用 javax.ws.rs.core.Response 来发送和接收 Card 实体对象。但我不知道如何将内容转换回 Card 对象。 我的 testCreate() 方法应该执行 create
我的代码 /* * To change this template, choose Tools | Templates * and open the template in the editor.
我需要 IP 地址的前 3 个八位字节和 myhosts 名称,而我尝试通过 cut 命令进行但无法加入主机名 $ getent hosts myhosts 172.10.2.32 myhost
当我调用下一个代码时: Response response = target.request(MediaType.APPLICATION_JSON_TYPE) .pos
我有这个异常(exception)。 我的对象看起来像这样: @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Ob
当我向特定 URL 发出 get 请求时,将下载一个文件。我可以从两种方式获取InputStream。 方法一 使用java.net包中的URL类。 java.net.URL url = new UR
我是一名优秀的程序员,十分优秀!