标签: bash

无法从 cron 作业重新启动 mysql

我有一个问题,即 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)

mysql linux ubuntu bash shell-scripting

1
推荐指数
1
解决办法
1372
查看次数

在使用 sudo 调用的脚本中调用 sudo 会提示输入密码,即使使用 NOPASSWD

我正在使用的 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)

php bash httpd sudo perl

1
推荐指数
1
解决办法
805
查看次数

我已经安装了“dash”,但是当我通过 SSH 登录时仍然看到“bash”

我已按照此处的说明将 Raspberry Pi 配置为对默认 shell 使用“破折号” 。

我有用于 SSH 的 Dropbear。

当我通过 SSH 登录时,我仍然看到“bash”控制台,而不是“dash”。

如何改变这一点而忘记 bash?

linux debian ssh bash arm

1
推荐指数
1
解决办法
260
查看次数

如何确定输入命令的时间?

在 CentOS 5.x 服务器上,我正在对问题进行故障排除,需要确定service foo stop命令何时执行。相应服务的日志没有表明这一点。我只在输出中看到命令本身history。这是从 root shell 运行的,而不是通过sudo.

是否有另一种方法来确定命令何时运行?

linux bash centos

1
推荐指数
1
解决办法
145
查看次数

如何以另一个用户身份从 root 运行脚本(使用用户路径)

我想让这些命令以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到每一行,这不是一个很好的技巧。

这是我之前的问题的扩展,我不够精确。

如何以实用的方式将所有这些命令作为脚本运行?

linux ubuntu bash centos

1
推荐指数
2
解决办法
377
查看次数

是否有一些地方可以放置自定义函数,然后在启动时获取这些函数?

我写了一个我认为非常有用的函数,我想通过 GitHub 公开它。在我的 PC 上,我有一个.bash_functions文件,我将其输入到我的.bashrc文件中。我知道这是常用的方法(至少对于 bash),但我不知道期望我的用户手动将函数放在那里是否非常用户友好。

所以,我的问题是,是否可能有一些统一的全局位置(etc可能在某个地方),我可以在其中放置我的自定义函数,然后在启动时获取这些函数?这样当用户想要安装这个功能时,他只需要输入make,它就会被放到这个文件夹中?

bash bashrc

1
推荐指数
1
解决办法
85
查看次数

编写一个 bash 脚本来清空 apache 日志

我有两个目录(~/www/ 和 ~/client-sites/),其中包含一堆站点,每个站点都有 access.log 和 error.log 文件。

找到所有这些文件并清空其内容的最简单方法是什么?它们增长很快,所以我想每个月左右清除一次日志。

linux bash

1
推荐指数
1
解决办法
648
查看次数

Rsync 退出代码检查器 - Bash

我的家庭服务器上有一个简单的脚本,可以将数据同步到要存储的备份驱动器。

现在它一个接一个地运行多个 rsync。

有时 rsync 会在其中一两个上失败。发生这种情况时,我希望它通过电子邮件告诉我它失败了,我已经通过电子邮件向我发送了报告,但是,我想知道它是否失败。

如果 Rsync 以非 0 代码退出,则表示失败。所以我需要一些简单的代码来检查 rsync 状态,如果它不是 0,则允许我执行一个操作。

有没有人对我如何实现这一目标有任何提示?谢谢你。

bash rsync

1
推荐指数
1
解决办法
7395
查看次数

重新创建新链接并通过一个命令删除旧链接

根据 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)

linux solaris bash ksh shell-scripting

1
推荐指数
1
解决办法
994
查看次数

Nagios:缺少 bash

我正在 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)

bash nagios nrpe shell-scripting

1
推荐指数
1
解决办法
428
查看次数

标签 统计

bash ×10

linux ×6

shell-scripting ×3

centos ×2

ubuntu ×2

arm ×1

bashrc ×1

debian ×1

httpd ×1

ksh ×1

mysql ×1

nagios ×1

nrpe ×1

perl ×1

php ×1

rsync ×1

solaris ×1

ssh ×1

sudo ×1