我有一个简单的脚本来启动一个独角兽实例(在 Ubuntu 12.04LTS 上)。
#!/bin/sh
case "$1" in
start)
echo "starting"
cd /path && bundle exec unicorn -c /path/config/unicorn.rb -D -E production
;;
stop)
echo "Stopping Unicorn Instances"
kill `cat /tmp/unicorn.pid`
;;
restart)
echo "sending USR2 to all unicorns"
kill -s USR2 `cat /tmp/unicorn.pid`
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
调用时它的行为正确: /etc/init.d/unicorn_boot.sh start
我希望它在启动时启动,所以我跑了:
update-rc.d -f unicorn_boot.sh defaults
当我现在重新启动时,出现以下错误:
/etc/rc2.d/S20unicorn_boot.sh: 10: /etc/rc2.d/S20unicorn_boot.sh: bundle: not found
我检查了bundle命令,它安装在 中/usr/local/bin,与ruby命令相同。
似乎在启动PATH时还没有包含/usr/local/bin. 我怎样才能解决这个问题?
我最近在 Mac 上从 GNOME 源安装了一堆库。他们使用 pkg-config。
每次我运行配置时,它都会抱怨找不到库 XYZ,我将其安装到 /usr/local/lib。我可以完成配置过程的唯一方法是使用 MacPorts 重新安装软件包。
如何让 pkg-config 查看默认的 /usr/local/lib?设置 PKG_CONFIG_PATH 似乎不起作用。
这是我认为的基本 linux 问题,但我真的很想知道。
例如,目前我在/usr/bin:
[x@localhost bin]$ pwd
/usr/bin
[x@localhost bin]$ cd /
[x@localhost /]$
Run Code Online (Sandbox Code Playgroud)
现在我想回到以前的路径/usr/bin,如何快速做到这一点?我不想再打字cd /usr/bin了。
我希望将目录永久添加到%PATH%大量 Windows 机器上可用的环境中。有什么方法可以从命令行 ( cmd)执行此操作,以便我可以编写解决方案的脚本,而不必在数十台服务器上使用 GUI。
我怎样才能做到这一点?
windows command-line-interface environment-variables windows-command-prompt path
我有一个硬编码的命令/tmp用作其工作目录。
/tmp 比较小,命令肯定会把它填满,这会给其他系统进程带来问题。
我无法修改命令,所以我想重新挂载/tmp到其他地方,只对当前用户/shell 可见,而不影响其他用户/进程。
这可能吗?
更新:发现该命令使用了TMPDIR我可以覆盖的变量,但仍然想知道是否有我可以使用的 Linux 用户空间命令。
这不起作用:
ErrorDocument 401 ../../src/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)
它将路径呈现为文本,它确实打印
../../src/wrong_pwd.php
Run Code Online (Sandbox Code Playgroud)
并且不输出真实文件。
如果我放置绝对路径,它将呈现/var/www/home (我真的不知道为什么,也许是 httpd.conf 中的内容?)
我怎样才能做到这一点?
我正在尝试在 TFS 构建模板中使用 RoboCopy 来复制一些文件,但由于某种原因,它会在我的源路径和目标路径前面插入“C:\\Windows\\system32”,即使我传递的是绝对路径路径。我知道 robocopy.exe 存储在“C:\\Windows\\system32”中,但是如何让它使用我的绝对文件路径?
\n\n这是我的 TFS 构建日志的输出。这是执行的命令:
\n\nRoboCopy \'C:\\Builds\\27\\RQ4TeamProject\\BuildProcessTests\\Binaries\' \'\\\\iq-tfsbuild1\\buildDrops\\BuildProcessTests\\0.99.6.32749\' /E /XD \'RQ4\'\nRun Code Online (Sandbox Code Playgroud)\n\n这是 robocopy 报告的错误:
\n\n-------------------------------------------------------------------------------\nROBOCOPY :: Robust File Copy for Windows\n-------------------------------------------------------------------------------\nStarted : Thu Jan 24 17:08:47 2013\nSource : C:\\Windows\\system32\\\'C:\\Builds\\27\\RQ4TeamProject\\BuildProcessTests\\Binaries\'\\\nDest : C:\\Windows\\system32\\\'\\iq-tfsbuild1\\buildDrops\\BuildProcessTests\\0.99.6.32749\'\\\nFiles : *.*\n\xe2\x97\x8b\nExc Dirs : \'RQ4\'\n\xe2\x97\x8b\nOptions : *.* /S /E /COPY:DAT /R:1000000 /W:30\n------------------------------------------------------------------------------\n2013/01/24 17:08:47 ERROR 123 (0x0000007B) Accessing Source Directory C:\\Windows\\system32\\\'C:\\Builds\\27\\RQ4TeamProject\\BuildProcessTests\\Binaries\'\\\nThe filename, directory name, or volume label syntax is incorrect.\nRun Code Online (Sandbox Code Playgroud)\n\n任何想法出了什么问题以及如何让它仅使用我提供的绝对路径?任何建议表示赞赏。谢谢
\n这可能真的很容易,但我似乎找不到它。
我正在 /usr/bin 和 /usr/sbin 之间移动二进制文件,即使两个文件夹都在我的 $PATH 中,将一个二进制文件移动到另一个会导致系统在其原始位置不断寻找它。
任何人都知道这是为什么,如果有一个命令来刷新它?
这是显示我认为有问题的代码:
# Debugging path problems with sudo
---
- hosts: webservers
remote_user: root
tasks:
- name: echo path
command: echo $PATH
register: output
changed_when: False
- name: display root path output
debug: "msg={{ output.stdout }}"
# Now try as apache
- name: echo path
command: echo $PATH
become: true
become_user: apache
become_method: sudo
register: output
changed_when: False
- name: display wrong output
debug: "msg={{ output.stdout }}"
# This is the fix
- name: echo path
command: echo $PATH
environment:
PATH: …Run Code Online (Sandbox Code Playgroud) 当我通过 ssh 进入远程服务器并运行时,env我返回以下路径:
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/myusername/bin
Run Code Online (Sandbox Code Playgroud)
相反,当我执行 ansible 命令时ansible -a "env",我得到以下路径:
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)
可以想象,试图运行时,这会导致问题
sbin类似的命令service,ntpdate等等,因为它需要打字的完整路径sbin目录命令。(是的,我知道有 ansible 模块可以做到这一点,但我正在尝试解决 PATH 被缩短/截断的原因。)
有谁知道为什么会这样?
编辑:我问这个的原因是我正在按照书中的例子进行操作,Ansible for DevOps并且由于这个原因,一些例子不起作用。
我试图开始工作的例子来自本书的第 28 页:
$ ansible multi -s -a "service ntpd stop"
$ ansible multi -s -a "ntpdate -q 0.rhel.pool.ntp.org"
$ ansible multi -s -a "service ntpd start"
Run Code Online (Sandbox Code Playgroud)
这些命令总是会引发错误。但是如果我将它们更改为包含完整路径,它们就可以工作。
$ ansible multi -s -a "/sbin/service ntpd stop"
$ ansible multi -s -a "/usr/sbin/ntpdate -q 0.rhel.pool.ntp.org"
$ ansible multi -s -a …Run Code Online (Sandbox Code Playgroud)