为了学习一些服务器管理知识,我设置了一个简单的 Ubuntu 14.04 服务器,我在该服务器上运行了一个个人网站。我已将其设置为自动安装安全更新,但忽略了其他更新。这似乎工作得很好。有时我在登录服务器时收到一条消息(使用 ssh)说:
*** System restart required ***
Run Code Online (Sandbox Code Playgroud)
发生这种情况的时候,我简单地重新启动了 Ubuntu,一切都很好。这没关系,因为它是一个简单的个人网站。不过,我想知道的是,这对于应该在 99.9999etc% 的时间内运行的网络服务器是如何工作的?他们是否只是不重新启动并冒着安全被破坏的风险,因为没有安装安全更新(我无法想象)?还是他们认为停机是理所当然的(我也无法想象)?
如果这是一个非常重要的生产服务器,我想保持和运行,我应该如何处理?欢迎所有提示!
[编辑] 我知道我可以cat /var/run/reboot-required.pkgs
列出导致重启的软件包。该命令目前产生以下结果:
linux-image-3.13.0-36-generic
linux-base
dbus
linux-image-extra-3.13.0-36-generic
linux-base
Run Code Online (Sandbox Code Playgroud)
但是如果我不重新启动,我怎么知道更新是否是我是否有严重安全漏洞的小事?
[EDIT2] 好的,我现在将我发现有用的命令合并为一个:
xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high
Run Code Online (Sandbox Code Playgroud)
如果这没有输出任何内容,则似乎没有高度紧急的安全问题。
不过low
,最后一个问题是:是、medium
和high
唯一的紧急可能性,还是有更多类似的可能性,例如critical
或extremelyimportant
?
我正在查找adduser
and之间的区别useradd
,解释是这useradd
是一个命令,adduser
而是一个 perl 脚本。我了解 perl 脚本是什么,但我不明白的是command
then 到底是什么。
我一直以为,命令一样ls
,ln
,cd
等都是写在任何语言中所有简单程序,简单地做一两件事。这些“简单程序”和 perl 脚本有什么区别?
我当然知道(perl)脚本不是编译而是在运行时解释,但我想这不是唯一的区别吗?
我在Ubuntu 14.04 服务器上运行Supervisord,一切正常。我使用 git push 进行部署,在部署时我还需要重新启动我的应用程序服务器 ( gunicorn ),我应该可以使用supervisorctl
.
un my supervisord.conf
, gunicorn 定义如下:
[program:gunicorn]
command=/home/imb/imb/venv/bin/gunicorn --worker-class eventlet -b 127.0.0.1:5000 -w 1 app:app
directory=/home/imb/imb
autostart=true
autorestart=true
stdout_logfile=/tmp/gunicorn.log
redirect_stderr=true
stopsignal=QUIT
Run Code Online (Sandbox Code Playgroud)
我supervisorctl
是这样启用的:
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
Run Code Online (Sandbox Code Playgroud)
我开始使用主管
sudo supervisord -c /home/imb/imb/supervisord.conf
Run Code Online (Sandbox Code Playgroud)
据我所知,我现在应该能够使用命令重新启动gunicorn supervisorctl restart gunicorn
,但是当我这样做时,我得到
$ supervisorctl restart gunicorn
unix:///var/run/supervisor.sock no such file
Run Code Online (Sandbox Code Playgroud)
我检查了该文件/var/run/supervisor.sock
确实不存在,即使我确定主管实际上正在运行:
$ ps -A | grep supervisor
27211 ? 00:00:00 supervisord
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么 …
我正在使用 PureOS,它基本上是 Debian 并做了一些小调整。我尝试在其上安装 firefox,但结果一团糟。如果我现在尝试进行基本升级,则会得到以下信息:
$ sudo apt update && sudo apt upgrade
Ign:1 http://deb.debian.org/debian stretch InRelease
Get:2 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB]
Get:3 http://deb.opera.com/opera stable InRelease [2592 B]
Get:4 http://security.debian.org stretch/updates InRelease [63.0 kB]
Hit:5 http://deb.debian.org/debian stretch Release
Get:6 https://repo.skype.com/deb stable InRelease [4486 B]
Get:7 http://deb.opera.com/opera stable/non-free amd64 Packages [1835 B]
Get:8 http://packages.microsoft.com/repos/vscode stable InRelease [2801 B]
Get:9 http://repository.spotify.com stable InRelease [3302 B]
Get:10 http://repo.puri.sm/pureos green InRelease [9427 B]
Get:12 http://security.debian.org stretch/updates/main Sources [110 kB]
Get:13 http://security.debian.org stretch/updates/contrib Sources …
Run Code Online (Sandbox Code Playgroud) 我正在运行一个简单的开发服务器 (Ubuntu),MySQL 和 MongoDB 有时会在该服务器上崩溃。我总是用sudo service mysql restart
.
尽管我知道我需要调查它们崩溃的原因——我会——但我目前正在寻找一种在它们崩溃后自动重启它们的方法。我想我需要某种守护进程来 ping 它们并在它们不再响应时重新启动它们,但我不确定如何执行此操作。
我读过像Nagios这样的工具,但我想这对我的情况来说有点矫枉过正。
有人知道我该如何开始吗?
我有时想获取在远程主机上运行的 docker 容器的环境。为此,我登录主机:
ssh kramer65@123.456.789.10
Run Code Online (Sandbox Code Playgroud)
然后我运行这个命令:
sudo docker exec -it `sudo docker ps | grep mycontainername | awk '{print $1;}'` env
Run Code Online (Sandbox Code Playgroud)
我现在想用一个命令来完成此操作(执行超过 3 次,我想自动化它..:-))。
这有效:
ssh -t kramer65@123.456.789.10 sudo docker ps | grep mycontainername
Run Code Online (Sandbox Code Playgroud)
但当我这样做时
ssh -t kramer65@123.456.789.10 sudo docker exec -it `sudo docker ps | grep mycontainername | awk '{print $1;}'` env
Run Code Online (Sandbox Code Playgroud)
我明白了
"docker exec" requires at least 2 arguments.
See 'docker exec --help'.
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Connection …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用简单的命令将用户添加到 sudoers 文件
sudo adduser username admin
Run Code Online (Sandbox Code Playgroud)
但我明白了adduser: The group 'admin' does not exist
。因此,我查看了 sudoers 文件 ( sudo visudo -f /etc/sudoers
),其中包含以下行:
%admin ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着管理员组存在。
那么我在这里错过了什么?
linux ×7
bash ×2
ubuntu ×2
apt ×1
command-line ×1
daemon ×1
debian ×1
dependencies ×1
mongodb ×1
monitoring ×1
mysql ×1
perl ×1
permissions ×1
reboot ×1
ssh ×1
sudo ×1
sudoers ×1
supervisord ×1