我有一个守护进程,/var/run它的 PID 文件需要自己的目录,并授予守护进程的用户写权限。
我发现我可以使用以下命令创建这个目录:
# mkdir /var/run/mydaemon
然后我可以将其所有权更改为我希望在其下运行该进程的用户/组:
# chown myuser:myuser /var/run/mydaemon
但是每当我重新启动时,这个目录就会消失!每次机器启动时如何创建这个目录?
我想在每次服务器启动时执行一个脚本。问题是我需要成为某个用户才能执行脚本,如果我尝试以 root 身份执行它,它找不到某些包(例如 ruby)。
我尝试更改为 xxx user01。
sudo su user01
/etc/init.d/script start
Run Code Online (Sandbox Code Playgroud)
然而这行不通。
Debian(Raspbian)的新手,我在这个问题上挣扎了几天。我有一个要在启动时执行的启动脚本。
我执行了以下命令,以使脚本可执行并将其与默认参数一起添加到启动序列中。
sudo chmod 755 /etc/init.d/testsam
sudo update-rc.d testsam defaults
Run Code Online (Sandbox Code Playgroud)
尝试测试脚本时,我执行以下操作:
sudo /etc/init.d/testsam start
Run Code Online (Sandbox Code Playgroud)
但是这样做时,我收到一个错误:无法执行 /etc/init.d/testsam: No such file or directory。
我将脚本最小化为非常基本的,但仍然不知道实际原因。我希望有人能指出我正确的解决方案?这是当前的脚本。
#! /bin/bash
# /etc/init.d/testsam
case "$1" in
start)
#echo "starting script"
;;
stop)
#echo "stopping script"
;;
*)
#echo "Usage: /etc/init.d/testsam {start|stop}"
exit 1
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
我想传递一些参数作为我的 ssh 连接的一部分,我可以使用这些参数为我的登录设置自定义变量以执行某些操作或运行某些脚本。你如何在 Windows 机器上运行 Putty,通过 SSH 连接到 CentOS 机器?
我不熟悉 ubuntu (raring),所以有人可以帮助我吗:
我正在使用 apt 的 postgresql 9.1。它在/etc/init.d/postgresql. 我可以使用脚本手动启动服务器。但是,postgres 不会在启动时启动。我发出了一个update-rc.d postgresql defaults和update-rc.d postgresql enable(作为root),但这没有帮助。
是否有特定的引导日志,因为我在 syslog 中找不到任何内容?谢谢你们
EDIT2:好的,问题似乎是 sysvinit 与 upstart 的问题。如果我删除符号链接/etc/rcX:
sudo update-rc.d -f remove postgresql
Run Code Online (Sandbox Code Playgroud)
并添加一个upstart 脚本来启动 postgresql,它按预期在启动时启动。由于 postgresql 来自官方 apt 存储库,我想知道为什么它不能开箱即用?
我无法获得 GPO 在启动时运行脚本。该脚本在一组 Windows 8 机器中的每台机器上创建一个共享文件夹。脚本本身运行良好,但将其附加到 GPO 给我带来了问题。即使在 gpupdate /force 命令和几次重新启动之后,我也无法运行脚本。
这是我所知道的:
我不知道如何解决这个问题,有什么想法吗?
注意,我对组策略有点陌生,所以我可能错过了一些明显的东西。
编辑:
我还尝试从 Windows 7 框和 Windows 8 框创建 GPO,结果相同。域控制器是 windows server 2008。
这是我试图运行的脚本。:
'==========================================================================
'ShareSetup.vbs
'==========================================================================
Option Explicit
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
Dim strComputer
Dim objWMIService
Dim objNewShare
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share") …Run Code Online (Sandbox Code Playgroud) 当系统在 Ubuntu 10.10 (Maverick) 上启动时,我试图让 Xvfb 运行,但它不起作用。在 /etc/rc.local 中,我有以下内容:
/root/start_xvfb.sh >> /var/log/start_xvfb.log 2>&1
exit 0
Run Code Online (Sandbox Code Playgroud)
在 /root/start_xvfb.sh 我有:
#!/bin/sh -e
startx -- `which Xvfb` :0 -screen 0 1024x768x24 &
exit 0
Run Code Online (Sandbox Code Playgroud)
重新启动机器后,日志文件 (/var/log/start_xvfb.log) 包含:
[dix] Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
^M
waiting for X server to shut down
^M
Run Code Online (Sandbox Code Playgroud)
鉴于日志文件中的内容,似乎正在调用“startx -- `which Xvfb` :0 -screen 0 1024x768x24”,但此后不久该进程就被终止了。
我想在启动时启动 Xvfb,因为我需要在没有监视器显示的远程服务器上运行 Firefox。如果我在通过 SSH 连接到远程机器后运行 /etc/rc.local,Xvfb 启动没有问题,我可以通过“firefox --display=:0 &”启动 Firefox。如果我在没有先启动 Xvfb 的情况下尝试使用该命令运行 Firefox,我会收到消息“错误:无法打开显示::0”。
请注意,我并不是要实际查看本地工作站上的显示。我希望应用程序显示在远程机器的(虚拟的,内存中的)显示器上。
任何想法为什么 X 服务器在启动后立即在远程机器上关闭?有没有更好的方法让 Xvfb …
在我的 linux 启动脚本中,当我启动一个进程时(本示例使用 openvpn,但问题对任何进程都是通用的);
openvpn --config /etc/myserver.conf
Run Code Online (Sandbox Code Playgroud)
找到它并100%确定它是正确的过程并在停止部分杀死它的最佳方法是什么?我通常使用类似的东西:
pid=$(ps -efww | grep -v grep | grep openvpn | grep /etc/myserver.conf | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)
当然它几乎一直都在工作,但有时会出现意外匹配名称几乎相同的进程(例如 myserver.conf-new)的问题,所以我正在寻找更好的方法。
ps e -ef | grep MYID=myserver? 仍然可能会遇到意外匹配的相同问题。我希望有一些简单的东西,比如:
launch --tag myserver openvpn --config /etc/myserver.conf
Run Code Online (Sandbox Code Playgroud)
和
pgrep --tag myserver
Run Code Online (Sandbox Code Playgroud) 我试图在我的 Windows 2008 Server (R2) 系统启动时运行一个非常简单的批处理脚本。我已通过运行将脚本添加到本地组策略中的“启动脚本”中gpedit.msc,我在Windows Settings/Scripts (Startup/Shutdown)/Startup运行时看到下面列出的脚本rsop.msc,但该脚本没有被执行。rsop即使在重新启动后,“Last Executed”列也是空的,并且永远不会创建应该由脚本创建的文件。
目前,脚本的全部内容是:
rem Check if this script is running.
date /t > c:\temp\flag
Run Code Online (Sandbox Code Playgroud)
目标目录 ( c:\temp) 存在。该脚本名为c:\scripts\startup.bat,如果我手动运行它,它可以正常工作。
我在 /etc/rc0.d 中的运行级别 0 脚本,应该在停止时执行,例如
是否正确,执行顺序如上所列,即
我很困惑,因为在我的嵌入式系统上,一些脚本似乎没有被执行,并且那个页面说
S20链接在S91之前启动,K91在K20之前终止。
这与我上面的文字相矛盾。
startup-scripts ×10
linux ×3
group-policy ×2
rc.local ×2
ubuntu ×2
bash ×1
centos7 ×1
daemon ×1
debian ×1
postgresql ×1
putty ×1
runlevel ×1
ssh ×1
systemd ×1
ubuntu-10.10 ×1
x11 ×1