我有一个问题,即 MySQL(在 Ubuntu 12.04 上运行所有最新更新)在几天后死亡,因此将此脚本放入一个 cron 作业中,该作业每 60 秒以 root 身份运行。
一切正常,除了 mysql 服务不会重新启动,我试过使用“service mysql restart”和“/usr/bin/mysqld”,但它们也不起作用。
我正在使用完整路径来重新启动命令,所以我认为这不是问题。现在唯一有效的是用“重启”替换重启命令,这非常难看,我想避免它。
#!/bin/bash
#Check if MySQL is up, if not then start it
# mysql root/admin username
MUSER="root"
# mysql admin/root password
MPASS="REMOVED"
# mysql server hostname
MHOST="localhost"
#Shell script to start MySQL server i.e. path to MySQL daemon start/stop script.
# Debain uses following script, need to setup this according to your UNIX/Linux/BSD OS.
MSTART="/etc/init.d/mysql restart"
# Email ID to send notification
EMAILID="some@email.net"
# …Run Code Online (Sandbox Code Playgroud) 我正在使用的 PHP 程序 ( LConf ) 使用sudo.
我已允许用户apache运行脚本并使用sudo -u apache /usr/local/LConf/lconf_deploy.sh.
我在lconf_deploy.sh拨打时被提示输入密码/usr/bin/sudo -u icinga /usr/local/LConf/LConfExport.pl -o /etc/icinga/lconf -v,但在此线路之前或之后拨打线路没有问题。
在阅读了很多(在 stackexchange 和互联网上的其他地方)关于在这种情况下该怎么做之后,我已经禁用requiretty并使用NOPASSWD了所有我能想到的会影响这种情况的东西。
# cat /etc/sudoers | grep -v "#"
Defaults always_set_home
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC …Run Code Online (Sandbox Code Playgroud) 我已按照此处的说明将 Raspberry Pi 配置为对默认 shell 使用“破折号” 。
我有用于 SSH 的 Dropbear。
当我通过 SSH 登录时,我仍然看到“bash”控制台,而不是“dash”。
如何改变这一点而忘记 bash?
在 CentOS 5.x 服务器上,我正在对问题进行故障排除,需要确定service foo stop命令何时执行。相应服务的日志没有表明这一点。我只在输出中看到命令本身history。这是从 root shell 运行的,而不是通过sudo.
是否有另一种方法来确定命令何时运行?
我想让这些命令以ss用户身份运行root
mkdir bin
cp -r /opt/gitolite .
gitolite/install -ln
gitolite setup -pk ss.pub
mkdir -p .gitolite/hooks/common
ln -s /opt/pre-receive .gitolite/hooks/common/
Run Code Online (Sandbox Code Playgroud)
所以一切都在/home/ss. $HOME/bin从第 3 行可以看出,第4 行需要。
我可以让它工作的唯一方法是添加su -c "command" ss到每一行,这不是一个很好的技巧。
这是我之前的问题的扩展,我不够精确。
题
如何以实用的方式将所有这些命令作为脚本运行?
我写了一个我认为非常有用的函数,我想通过 GitHub 公开它。在我的 PC 上,我有一个.bash_functions文件,我将其输入到我的.bashrc文件中。我知道这是常用的方法(至少对于 bash),但我不知道期望我的用户手动将函数放在那里是否非常用户友好。
所以,我的问题是,是否可能有一些统一的全局位置(etc可能在某个地方),我可以在其中放置我的自定义函数,然后在启动时获取这些函数?这样当用户想要安装这个功能时,他只需要输入make,它就会被放到这个文件夹中?
我有两个目录(~/www/ 和 ~/client-sites/),其中包含一堆站点,每个站点都有 access.log 和 error.log 文件。
找到所有这些文件并清空其内容的最简单方法是什么?它们增长很快,所以我想每个月左右清除一次日志。
我的家庭服务器上有一个简单的脚本,可以将数据同步到要存储的备份驱动器。
现在它一个接一个地运行多个 rsync。
有时 rsync 会在其中一两个上失败。发生这种情况时,我希望它通过电子邮件告诉我它失败了,我已经通过电子邮件向我发送了报告,但是,我想知道它是否失败。
如果 Rsync 以非 0 代码退出,则表示失败。所以我需要一些简单的代码来检查 rsync 状态,如果它不是 0,则允许我执行一个操作。
有没有人对我如何实现这一目标有任何提示?谢谢你。
根据 ln 手册页:
man ln
-f, --force
remove existing destination files
Run Code Online (Sandbox Code Playgroud)
据我了解,如果我想重新创建指向某个目标目录/文件的新链接
我可以简单地做
ln -s -f some_directory new_link
Run Code Online (Sandbox Code Playgroud)
但这不是我从我的 linux/solaris 机器上得到的
例如
[u@h w]# mkdir dir1
[u@h w]# ln -s dir1 link
[u@h w]# ls -l
drwxr-xr-x 2 root root 4096 Mar 16 20:26 dir1
lrwxrwxrwx 1 root root 4 Mar 16 20:27 link -> dir1
[u@h w]# ln -s -f dir1 new_link
Run Code Online (Sandbox Code Playgroud)
现在我接受看到 new_link 现在指向 dir1 而“链接”不存在但链接仍然指向 dir1 ?
如何在一个命令中重新创建新链接并同时删除旧链接?
(我不想使用 rm 命令)
[u@h w]# ls -l …Run Code Online (Sandbox Code Playgroud) 我正在 nagios 服务器上使用 nagios 和 nrpe 监视 NTP 服务器,当我收到以下错误时:服务状态未知状态信息我缺少一个重要组件:bash
该插件是:http : //archive.groundworkopensource.com/groundwork-opensource/trunk/monitor-core/nagios/plugins-contrib/check_procr.sh
我这样做时的输出bash -x check_procr.sh是:
+ myself=check_procr
+ verify_dep
+ needed='bash cut egrep expr grep let ps sed sort tail test tr wc'
++ echo bash cut egrep expr grep let ps sed sort tail test tr wc
+ for i in '`echo $needed`'
+ type bash /dev/null
+ '[' 1 -eq 1 ']'
+ echo 'I am missing an important component : bash'
I am missing …Run Code Online (Sandbox Code Playgroud)