一些遗留系统仍然使用upstart,所以我仍然时不时地去查看食谱。(以前位于http://upstart.ubuntu.com/cookbook)但整个 upstart.ubuntu.com 域似乎已被删除。食谱还在吗?
我正在使用 Ubuntu 19.10 并在其上安装了 mysql-server。首先它给了我一个错误
错误是用户'root'@'localhost'的mysql访问被拒绝
通过下面的代码解决
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
基于这里的答案 https://stackoverflow.com/questions/41645309/mysql-error-access-denied-for-user-rootlocalhost
当我尝试登录时,我现在已经重新启动了虚拟机
debian@osboxes:~$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我试过以下
debian@osboxes:~$ mysql -u root -p 123456
Enter password:
ERROR 1049 (42000): Unknown database '123456'
我想知道我在做什么错误。我正在尝试将 mysql 用于某些作业,但上述不是转到 sql 提示符的正确方法。我还应该做什么?我正在使用 Ubuntu 19.10。
在那些日子里,我对新贵回声系统一无所知,我们曾经有初始化脚本来启动和停止守护进程,所以我正在浏览互联网,它变得非常混乱该做什么和不该做什么。就像这些天mysql服务不可用或者我需要做什么来确保重启后mysql服务正在运行。我应该检查哪些文件。
我创建了自己的使用变量的初始化脚本:
#! /bin/sh
case "$1" in
start)
echo "Starting Public API"
sudo -u techops sh ${JBOSS_HOME_PUBLIC_API}/bin/standalone.sh > ${PUBLICAPI_LOGGING_PATH} &
;;
stop)
echo "Stopping Public API"
sudo -u techops sh ${JBOSS_HOME_PUBLIC_API}/bin/jboss-cli.sh --connect --controller=localhost:$((9990 + $PUBLICAPI_PORT_OFFSET)) command=:shutdown > ${PUBLICAPI_LOGGING_PATH} &
;;
*)
echo "Usage: /etc/init.d/publicapi {start|stop}"
exit 1
;;
esac
exit 0
变量定义/etc/environment
如下:
PUBLICAPI_PORT_OFFSET=0
PUBLICAPI_LOGGING_PATH=/var/log/publicapi/publicapi.log
JBOSS_HOME_PUBLIC_API=/opt/publicapi
...并在登录后工作,当我手动启动和停止 init 脚本时,但它们不适用于启动 init 脚本(它们是指向/etc/init.d/publicapi
in /etc/rc2.d/
、/etc/rc5.d/
、的符号链接/etc/rc6.d/
)。然后启动崩溃,因为变量是未知的。
我可以通过执行systemctl edit publicapi
which 创建了一个/etc/systemd/system/publicapi.service.d/local.conf
在我编辑后看起来像这样的文件来解决这个问题:
[Unit]
Description=Public API startup script
Documentation=no documentation
[Service]
Environment="JBOSS_HOME_PUBLIC_API=/opt/publicapi"
Environment="PUBLICAPI_PORT_OFFSET=0"
Environment="PUBLICAPI_LOGGING_PATH=/var/log/publicapi/publicapi.log"
当我重新启动时,初始化脚本的启动工作。但是现在我遇到了一个奇怪的情况:我总是需要在 in/etc/systemd/system/publicapi.service.d/local.conf
和 in 中定义变量/etc/environment
。如果我省略了 中的那些/etc/environment
,init 引导脚本会执行但会崩溃,因为变量似乎没有设置(至少在登录后)。如果我将变量注释/etc/systemd/system/publicapi.service.d/local.conf
并仅设置它们/etc/environment
,则在登录后设置变量,但不执行 init 引导脚本。这里发生了什么?范围是什么/etc/systemd/system/publicapi.service.d/local.conf
(因为这些值在登录后显然已经消失或者可能没有设置)?如何在全局范围内只定义一次变量?
我有一个暴发户脚本
# Ubuntu upstart file at /etc/init/wso2am.conf
#!upstart
description "wso2am"
pre-start script
mkdir -p /var/log/wso2am/
end script
respawn
respawn limit 15 5
start on runlevel [2345]
stop on runlevel [06]
script
# Not sure why $HOME is needed, but we found that it is:
export JAVA_HOME="/usr/lib/jvm/jdk1.8.0_111"
#exec /usr/local/bin/node $JAVA_HOME/node/notify.js 13002 >> /var/log/node.log 2>&1
end script
我的服务文件也创建为
# this is /usr/lib/systemd/system/wso2am.service
# (or /lib/systemd/system/wso2am.service dependent on
# your linux distribution flavor )
[Unit]
Description=wso2am server daemon
Documentation=https://docs.wso2.com/
After==network.target wso2am.service
[Service]
# see man systemd.service
User=tel
Group=tel
TimeoutStartSec=0
Type=simple
KillMode=process
ExecStart= /bin/bash -lc '/home/tel/Documents/vz/wso2am-2.1.0/wso2am-2.1.0/bin/wso2server.sh --start'
RemainAfterExit=true
ExecStop = /bin/bash -lc '/home/tel/Documents/vz/wso2am-2.1.0/wso2am-2.1.0/bin/wso2server.sh --stop'
StandardOutput=journal
Restart = always
RestartSec=2
[Install]
WantedBy=default.target
我尝试杀死进程(wso2am)
ps -ef | grep wso2am
Kill -9 process_id
但我无法找到自动重生/重启的进程。如何检查ubuntu中的自动重生机制?
在使用 Ubuntu 14.04 时,我曾经有一个自定义/etc/init/tty2.conf
,在这个虚拟终端中启动了一个程序。但是升级到 Ubuntu 16.04 后,这些文件似乎被忽略了。不管我如何修改,虚拟终端在启动后都会运行 getty。
我知道 Ubuntu 16.04 包含一个systemd
并排的upstart
子系统。但由于/etc/init/tty?.conf
文件默认存在于已安装的系统中,我希望它们受到尊重。
我是否应该启用一些 systemd 服务来恢复旧行为(就像它为 所做的那样/etc/rc.local
)?
标题几乎说明了一切,我知道由于 Ubuntu 15.04 systemd 是默认的服务管理工具,但是如果我们愿意,我们仍然可以使用 Upstart 和 18.04 吗?
如果我们仍然可以将 Upstart 与 Ubuntu 18.04 一起使用,Canonical 是否宣布了一个特定版本,其中 Upstart 将不再工作,或者我们自己尝试将 Upstart 与当前/未来的 Ubuntu 版本一起使用,直到它在特殊案例?
除了 systemd 之外,Ubuntu 18.04 还会附带 Upstart,还是我们必须单独安装 Upstart?
在有人将此标记为重复之前,我意识到这篇文章:
声明 Upstart 一直使用到 14.10,现在 systemd 是默认设置,但我的问题是,即使它不是默认设置,我们是否仍然可以将 Upstart 与 18.04 一起使用。
我刚刚在英特尔 NUC 上安装并配置了 Mythbuntu 16.04.3 LTS。它运行良好(我通过单独的 Kodi 前端观看了一些电视),直到我重新启动 NUC,此时我可以从 NUC 访问http://localhost:6544/就好了,但无法从另一台机器上访问它我的网络。我的理解是,这是由于服务启动得太早(当网络尚未启动时),因此没有绑定以使其在网络上可用。
我的问题现在变成了:我该如何解决这个问题?
我一直在试图弄清楚系统是使用 systemd 还是 upstart。我正在阅读的一些网页建议系统现在应该使用 systemd,但我找不到 mybackend 的 systemd 配置文件。我确实找到了一个/etc/init/mythtv-backend.conf
文件,我认为这表明新贵正在使用中......?但是,当我尝试像这样控制服务时:
sudo initctl stop mythtv-backend
我得到:
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
即使我可以控制它,我也不完全确定我应该如何修改/etc/init/mythtv-backend.conf
文件以确保在启动服务之前网络已启动(坦率地说,我只是满足于 10 秒的超时或简单的事情)。
任何人都可以帮忙吗?
更新:我可以确认 systemd 正在使用中。通过执行sudo systemctl stop mythtv-backend.service
然后sudo systemctl start mythtv-backend.service
,一切正常。所以我需要弄清楚如何延迟systemd服务。
更新 2:遵循wiki 上的说明对我不起作用。当我尝试启动/停止 mythbackend.service 时,我只是在日志中看到一条错误消息。