Articles of bash

在Debian服务器上创build受限用户

我想为我的debian服务器上安装的每个关键程序创build一个用户帐户。 例如,对于以下程序: Tomcat Nginx Supervisor PostgreSQL 这似乎是build议根据我的在线阅读。 但是,我想尽可能限制这些用户帐户,以便他们没有shelllogin,不能访问其他程序,尽可能有限,但仍然function。 有谁会介意告诉我这是如何实现的? 到目前为止,我的阅读暗示着: echo "/usr/sbin/nologin" >> /etc/shells useradd -s /usr/sbin/nologin tomcat 但我认为可能有一个更完整的方式来做到这一点。 编辑:我使用debian挤压

killall -0的含义

我从很多地方看到follow命令是用来检查一个进程是否存在,例如 killall -0 nginx 但从文档中我看不出有关这个论点的任何事情,任何人都可以解释吗?

mysqldump通过bash脚本失败,“没有这样的文件或目录”

这一个驱使我坚果。 任何帮助感激! $MYSQLDUMP –login-path=$HOST $DATABASE > "$BACKUP_DIR/${HOST}__${DATABASE}__${NOW}.sql"; 我已经确认二进制$MYSQLDUMP (在脚本中)有一个有效的完整path 该命令完成(通过回声确认) $NOW在脚本中很早被设置,而不是在这里…所以时间不会改变我们或任何东西 这不是通过cron运行 通过命令行执行脚本的用户也具有对实际目录的访问权限 尝试dos2unix以确保没有怪异的字符。 我在Mac上,但是嘿…为什么不呢 试图逃避像> \> ,而是产生一个mysqldump: Couldn't find table: ">"错误 这个让我疯狂 不知道我在这里错过了什么? 我们只是指挥输出,我觉得这是我忽略的可笑的事情。 UPDATE 添加了一些更多的testing来debugging和帮助这里。 vrb "\$BACKUP_DIR: $BACKUP_DIR" vrb "whoami $(whoami)" vrb "ls -ld \"$BACKUP_DIR/\" $(ls -ld \"$BACKUP_DIR/\")" vrb "absolute path of user's home dir: $(cd ~/; pwd)" vrb "absolute path of \$BACKUP_DIR: […]

.bashrc或.bash_profile ssh-agent?

哪个configuration文件, .bashrc或.bash_profile是ssh-agent的适当位置? 我正在寻找解释交互式shell和loginshell之间差异的答案。

(svn + ssh)让bash通过SSH加载我的PATH

这个问题出现在我试图通过SSH在服务器上使svnserve (Subversion服务器)可用。 我编译SVN并将其安装在$HOME/bin 。 本地访问(不通过SSH)工作正常。 与svn+ssh连接由于以下原因而失败: bash: svnserve: command not found debugging这个,我发现: ssh user@server "which svnserve" 说: which: no svnserve in (/usr/bin:/bin) 这很奇怪,因为我在.bashrc更新了$HOME/bin的path,并将其添加到~/.ssh/environment 。 但是,似乎SSH不读取它。 虽然当我运行: ssh user@server "echo $PATH" 它确实打印我更新的path! 这里发生了什么? 我如何让SSHfind我的svnserve ? 提前致谢

从命令行使用Subversion提交消息中的换行或回车

我在Ubuntu 10.04上使用Subversion 1.6.6,运行一个bash shell。 我想插入一个回车,或换行或换行到我的提交消息,以便在阅读日志时,注释格式适当。 当我使用系统编辑器,或者为提交注释指定一个文件时,它工作正常,但是我真正想要的是能够执行如下操作: svn ci -m "This is the first line\nThis is the second line" 并提出评论如下: This is the first line This is the second line 我的例子不起作用,它会产生输出: 这是第一行\ n这是第二行 那么,有没有办法做到这一点? 如果是这样,怎么样?

-bash:./flume:没有这样的文件或目录,但水槽在那里,并在其他地方工作

我们有一个基于CentOS 4 32位Linux构build的产品,它在32位和64位CentOS / RHEL 4和5以及SLES 10上未经修改即可运行。它还可以在SLES 9 64位上未修改地运行。 [SLES 9 32位需要不同的libstdc ++。 主二进制可执行文件的名字是flume 昨天我们试图把它放在64位的Ubuntu 10上,尽pipe这个文件在那里,而且尺寸合适,我们得到了: -bash: ./flume: No such file or directory file flume显示它是一个32位ELF(不记得确切的输出,系统是在一个孤立的networking上) 如果放入/usr/local/bin ,那么: which flume /usr/local/bin/flume 我还没有尝试ldd flume 。 我现在怀疑有些图书馆不在那里。 这是一个非常无益的信息,也是我以前从未见过的信息。 这是Ubuntu特有的,或者只是这个安装。 我们放弃了,转移到RHEL 4系统,一切都很好。 但我确定想知道是什么原因造成的。

杀死Linux bash脚本中给定用户运行5分钟以上的所有进程

我需要这个命令来杀死一个给定进程至less5分钟以来运行的进程。 我将不得不每五分钟左右运行一次这个命令。 太感谢了 ! (系统是Centos5)

如何在没有用户交互的情况下安装软件包?

我有一个脚本可以下载并replaceDebian中的内核头文件。 function fixHeaders(){ #Replace the kernel headers from OVH with standard kernel headers… aptitude -y install linux-image-2.6.32-5-amd64 sed s/'GRUB_DEFAULT=0'/'GRUB_DEFAULT=1'/g update-grub echo "Rebooting the machine. Run this script again after reboot and choose option 2." sleep 1 reboot } 我遇到的问题是,在aptitude下载软件包后,它将脚本引入到文本gui中,并询问用户一堆问题。 有什么办法可以跳过这个或在适当的时间发送标签/进入select“确定”的所有答案?

使用ip命令在Linux中删除IP

如果我添加两个这样的IP: ip addr add 1.1.1.1/24 dev eth2 ip addr add 1.1.1.2/24 dev eth2 然后我尝试删除这样的一个: ip addr del 1.1.1.2/24 dev eth2 这两个IP将被删除,我不知道如何处理它。 任何人都知道如何解决它?