我怎么能创build一个启动脚本,启动(和跟踪)新的过程之前,旧的完全终止在重新启动? 我正在开发一个需要能够正常重启的node.js服务,例如在部署新版本时。 问题是在服务过程完全closures之前,服务有一些需要完成的长时间运行的任务,而新的过程应立即启动。 通常,在开发服务时,我会创build一个简单的upstart-init-script作为非特权用户启动一个服务,以相同的非特权用户身份运行deploy,并在deploy脚本的末尾发送一个SIGINT来closures服务。 那么Upstart会检测到服务已经终止,并从新部署的代码重新启动。 这一次虽然服务可能需要多达一个小时才能在收到SIGINT后closures,因此我需要同时运行几个进程,我不认为新贵是为此而devise的。 我想我可以跳过新贵,只是启动部署脚本中的新进程,并将其分离,但这意味着我将失去新贵提供的自动启动/重新启动/启动/停止function,所以我不想这样做。
在我inheritance的Debian服务器(VPS)上的init进程有一个nice值设置为+10 。 系统上没有什么特别隐晦的东西。 它有一个LAMP堆栈,并做了很多的IO,并需要尽快升级。 我怀疑是以前的pipe理员设置了它(无论是否意外),所以想知道为init设置一个nice价值是否有任何真正的好处/目的。 我知道初始化是特殊的,我从来没有观察到使用CPU或MEM的初始化过程,所以设置nice它nice价值似乎很奇怪。
我目前正在编写一个Puppet模块来让GitLab在CentOS 6/7上运行。 对于CentOS 7安装,我需要编写一个systemd单元文件来启动gitlab服务(实际上是Unicorn&Sidekiq)。 下面是我根据对GitLab自己提供的初始化脚本的模糊理解提出的单元文件: [Unit] Description=GitLab After=network.target Requires=network.target After=mariadb.service Requires=mariadb.service After=redis.service Requires=redis.service [Service] EnvironmentFile=/etc/sysconfig/gitlab ExecStartPre=source /etc/profile.d/rvm.sh ExecStart=/bin/bash –pidfile=$UPID –user=$USER "$PATH_PATCH RAILS_ENV=$RAILS_ENV bin/web start" && /bin/bash –pidfile=$SPID –user=$USER "$PATH_PATCH RAILS_ENV=$RAILS_ENV bin/background_jobs start" [Install] WantedBy=multi-user.target 这里是关联的sysconfig文件: RAILS_ENV="production" USER=git APP_PATH=/home/$USER/gitlab UPID=$APP_PATH/tmp/pids/unicorn.pid ULOCK=/var/lock/subsys/unicorn SPID=$APP_PATH/tmp/pids/sidekiq.pid SLOCK=/var/lock/subsys/sidekiq PATH_PATCH="PATH=$(su $USER -s /bin/bash -l -c "echo \"\$PATH\"") && export PATH && " […]
我试图让cloud-init在元数据服务器无法访问的情况下不采取任何措施。 如果cloud-init忽略错误并继续执行(这似乎是默认configuration),那么它将重置主机SSH密钥,pipe理用户密码等,如果虚拟机已经被预先使用,这是一个问题(如果密码login已configuration,则用户不能再访问虚拟机)。 我在两种情况下看到这个问题: 元数据服务器closures 在启动过程中安装了阻止与元数据服务器连接的软件(最近,在Ubuntu桌面上看到了这一点)
我已经在linux服务器上创build了我的第一个初始化脚本(如果添加了任何信息的话,ubuntu会检查更新,下载并在每个小时执行一次)。 init文件如下: /etc/init/updater.conf start on (filesystem and stopped udevtrigger) stop on runlevel [06] console output respawn script chvt 6 chvt 7 while true; do # code to check update … if [ should_update ]; then # Download the script chmod +x /path/to/script.sh bash /path/to/script.sh rm /path/to/script.sh fi echo 'Rechecking for updates in 1h…' sleep 1h […]
我有一个代理服务器,一切ok。 但是,我有一些问题和疑问。 第一:当我做“/etc/init.d/nginx停止”或“/etc/init.d/nginx restart”,我的configuration,它不会重新加载,所有的nginx进程不会被杀死。 我的脚本: case "$1" in start) echo Starting nginx cd /usr/local/nginx/ wget https://www.dropbox.com/s/qweqwrqwrqwraqwe/nginx.cfg?dl=0 -O nginx.cfg /usr/local/nginx/nginx /usr/local/nginx/nginx.cfg RETVAL=$? echo [ $RETVAL ] ;; stop) echo Stopping nginx if [ /usr/local/nginx/nginx.pid ]; then /bin/kill `cat /usr/local/nginx/nginx.pid` else /usr/bin/killall nginx fi RETVAL=$? echo [ $RETVAL ] ;; restart|reload) echo Reloading nginx if [ /usr/local/nginx/nginx.pid […]
鉴于运行标准sysvinit debian wheezy笔记本电脑。 启动过程正常,但是当进入init 6(reboot)或init 0(halt)时,我得到一些标准的closures服务消息,然后系统挂起: 在这个运行级别没有更多的进程 对于debugging引导问题,可以使用bootlog,但是如何才能debugging呢? 这也不是磁盘问题,我有完整的坏块,聪明的扫描磁盘和强制检查文件系统。 我假设一个破坏的初始化脚本可能是负责任的。
我正在开发一个使用暴发户来运行多个服务/守护进程的应用程序。 这些应该从系统启动开始,但是只有在数据库服务器(在我们的例子中是mongo)启动之后。 我正在寻找合适的新贵configuration,以使服务在启动时启动mongo,或者在mongo启动后才启动。 我不想修改任何不属于我们自己的软件的新兴configuration(例如修改mongo upstartconfiguration)。 一个方向是添加到我们的代码如下所示: start on started mongod and runlevel [2345] 或者类似的东西,但我想这不是我想要的:我想让“mongo started”成为我们服务的一个需求,我不希望它触发我的脚本开始。 例如,如果有人手动停止我们的服务并重新启动mongo,我不希望这样,例如,我们的脚本也会无意中启动。 有什么build议么?
当服务器的UPS完成充电时,我需要生成一条短信/电子邮件提醒。 我们有一个汽车电池连接到主板作为UPS( http://www.mini-box.com/M2-ATX-160w-Intelligent-Automotive-DC-DC-Power-Supply )当这个设备检测到电池正在降低电压,它向主板发送一个ON脉冲。 不知何故,Ubuntu(我使用版本11)检测到这个脉冲,并显示一个屏幕,告诉在60秒内,Ubuntu将closures。 我需要执行脚本来调用web服务来通知这种情况。 我怎样才能捕捉到这个警报? 我也尝试过在rc0.d中使用脚本,但是它并没有调用我的WS(看起来networking在执行之前就closures了)。 在networkingclosures之前,我怎样才能在运行级别0中执行某些操作?
我正在尝试使用我创build的映像执行PXE引导,但是在加载映像和内核后,出现以下错误消息: 主要的错误信息是这样的: No filesystem could mount root, tried: ext3 ext2 iso9668 Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(1,0 Pid: 1, comm: swapper not tainted 2.6.34.1 #4 我已经试过在线寻找build议,但是我发现硬件不兼容,或者使用其他内核。 我确信硬件是兼容的,因为我可以从SD卡上启动相同的内核(不幸的是,我没有创build一个自定义的内核)和操作系统(Scientific Linux 5),所以我认为这个networking启动也应该为相同的内核和系统工作。 为了使我的SL5映像networking启动,我已经从SD卡(除了/sys和/proc )完全复制所有文件,但我仍然得到这个错误信息。 我也只尝试复制必要的目录,比如/bin , /dev , /etc , /lib等等。即使只有这些目录,图像大概是2.6GB,我仍然得到这个错误信息。 现在我觉得我有两个select来解决:要么是图像太大,无法安装到ram0 (是否有大小限制?),在这种情况下,我应该修剪目录的内容; 或者系统根本不能识别ram0 ,initrd进程有问题。 以下是我的pxelinux.cfg/default文件的相关内容: LABEL SL5 MENU LABEL SL5 […]