Questions tagged «bash»

Bash是Bourne Again SHell,它是经典Unix sh(shell)的继承者。

5
ulimit -n不更改-值limit.conf不起作用
我试图提高ubuntu计算机上所有用户的打开文件描述符最大值。 这个问题是对该问题的后续。 即使需要pam_limits.so,ulimit也不会读取打开文件描述符limits.conf设置 除了我在limits.conf中添加了必需的“ root”条目 这是条目 * soft nofile 100000 * hard nofile 100000 root soft nofile 100000 root hard nofile 100000 与相关的行pam_limits.so已在/etc/pam.d/中的所有相关文件中取消注释,并fs.file-max已在/etc/sysctl.conf中正确设置 但是,我仍然看到 abc@machine-2:/etc/pam.d$ ulimit -n 1024 重新启动后。 可能是什么问题呢? 我的默认外壳程序是/ bin / sh,并且我无法使用chsh更改我的默认外壳程序,因为通过某种分布式身份验证方案对计算机上的用户进行了身份验证。
13 linux  ubuntu  bash  pam  ulimit 

2
是否为系统上的所有用户提供了一个全局.bash_profile?
因此,我偶然发现了svn color,并认为这对我们的开发人员都非常有用。读我说要在您的代码中放入一些代码~/.bash_profile,但是我想知道如何将其全局地包含在服务器中,因此这是每个人的默认设置。.bash_profile我可以添加一些全局性吗?也许是另一种方式?
13 bash  svn 

6
如何解析ini文件并将其转换为bash数组变量?
我正在尝试将ini文件转换为bash数组变量。样本ini如下: [foobar] session=foo path=/some/path [barfoo] session=bar path=/some/path 因此这些变为: session[foobar]=foo path[foobar]=/some/path session[barfoo]=bar 等等。 现在,我只能提出这个命令 awk -F'=' '{ if ($1 ~ /^\[/) section=$1; else if ($1 !~ /^$/) print $1 section "=" $2 }' 另外,另一个问题是,它没有考虑附近的空间=。我认为sed可能更适合此工作,但我不知道如何在中保存和存储节名称的临时变量sed。 那么有什么想法怎么做?

2
使用rsync仅删除无关的文件
比较两个目录结构并删除目标位置中无关的文件和目录的最佳方法是什么? 我有一个正在开发的小型网络照相馆应用程序。用户使用FTP添加和删除图像。我编写的网络画廊软件可以即时创建新的缩略图,但不能处理删除操作。我想做的是安排一个命令/ bash脚本以预定的时间间隔进行处理。 原始图像/home/gallery/images/使用子目录存储在相册中并组织在相册中。缩略图/home/gallery/thumbs/使用与图像目录相同的目录结构和文件名缓存在中。 我尝试使用以下方法来实现此目的: rsync -r --delete --ignore-existing /home/gallery/images /home/gallery/thumbs 如果所有缩略图都已被缓存,这将很好地工作,但是不能保证会发生这种情况,当发生这种情况时,thumb目录已复制了原始的全尺寸图像。 我怎样才能最好地实现自己的目标?
13 linux  bash  rsync 



4
在命令行中复制一系列文件(ZSH / BASH)
我有一个带有连续数字后缀的文件列表。我只想复制这些文件的一部分。如何在我的cp命令中指定范围。 $ls P1080272.JPG* P1080273.JPG* P1080274.JPG* P1080275.JPG* P1080276.JPG* P1080277.JPG* P1080278.JPG* P1080279.JPG* P1080280.JPG* P1080281.JPG* P1080282.JPG* P1080283.JPG* 我想使用类似以下内容将文件从P1080275.JPG复制到P1080283.JPG: $cp P10802[75-83].JPG ~/Images/. 有没有办法做到这一点?
13 linux  bash  copy  zsh 


5
仅在成功时隐藏shell命令的输出吗?
隐藏shell命令的输出通常涉及重定向stderr和stdout。是否有任何内置工具或命令默认情况下会隐藏输出,但在发生错误时会转储所有累积的输出?我想将其作为远程ssh命令的包装器运行。现在,我让他们使用重定向,但是对于导致它们失败的原因却一无所知,它们太冗长了。 编辑:最后,我根据@Belmin的答案创建了以下模板,我对其进行了一些调整以从脚本中累积所有先前的命令,使用当前的进程标识符,自动删除日志,并添加失败红色错误出现问题时发出的消息。在此模板中,初始silent包装器将成功,然后使第三条命令失败,因为该目录已存在: #!/bin/sh set -e SILENT_LOG=/tmp/silent_log_$$.txt trap "/bin/rm -f $SILENT_LOG" EXIT function report_and_exit { cat "${SILENT_LOG}"; echo "\033[91mError running command.\033[39m" exit 1; } function silent { $* 2>>"${SILENT_LOG}" >> "${SILENT_LOG}" || report_and_exit; } silent mkdir -v pepe silent mkdir -v pepe2 silent mkdir -v pepe silent mkdir -v pepe2
12 linux  bash  shell 

4
以其他用户身份启动脚本
我已经在/etc/init.d/中创建了一个脚本,该脚本必须从其主目录中的其他(非root用户)用户运行其他几个脚本,就像他们启动了它们一样。 我使用以下命令启动这些脚本: sudo -b -u <username> <script_of_a_particular_user> 而且有效。但是对于每个继续运行的用户脚本(例如某些看门狗),我看到一个相应的父sudo进程,该进程仍处于活动状态并以root身份运行。这会在活动进程列表中造成混乱。 所以我的问题是:如何以另一个用户身份从现有bash脚本启动(分支)另一个脚本并将其保留为孤立的(独立的)进程? 更详细的解释: 我基本上是想通过运行在其主目录中名为.startUp和.shutDown的各个子目录中的可执行文件,向计算机上的其他用户提供一种在系统启动或系统关闭时运行内容的方法。由于我没有找到其他方法来执行此操作,因此我编写了可以完全执行此操作的bash脚本,并已在/etc/init.d/中将其配置为服务脚本(通过遵循框架示例),因此在运行时使用start参数,它将从.startUp目录启动所有内容;当使用stop参数运行时,它将从所有用户的.shutDown目录启动所有内容。 另外,如果我可以使用一些现有的解决方案来解决此问题,我也很感兴趣。 更新 我环顾了一下,发现了这个问题:https : //unix.stackexchange.com/questions/22478/detach-a-daemon-using-sudo 在那里接受答案,使用:sudo -u user sh -c "daemon & disown %1",对我有用。但是我也尝试了不放弃%1的情况,这是相同的。因此,这正是我所期望的: sudo -u <username> bash -c "<script_of_a_particular_user> &" 现在,我的另一个问题是,为什么它会不加修改地起作用?无论是否有某些特殊情况,我是否仍应保留拒绝通知? 更新2 显然这也可行: su <username> -c "<script_of_a_particular_user> &" 这个调用和sudo调用之间有什么区别吗?我知道这可能是一个完全不同的问题。但是由于我自己在这里找到答案,也许出于这个主题的缘故,有人可以在这里进行澄清。 更新3在我引导计算机之后 ,这两种使用su或sudo的方法现在都会产生一个新的startpar进程(以root身份运行的单个进程)。在进程列表中显示为: startpar -f -- <name_of_my_init.d_script> 为什么会产生此过程?显然我做错了,因为没有其他init.d脚本正在运行此进程。 更新4 解决了startpar的问题。我对此提出了另一个问题:从rc.local或init.d启动进程时, …
12 linux  debian  bash  sudo  init.d 

2
使用xargs时重定向到stdin而不是参数
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 6年前关闭。 例如,使用命令 cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo" 将foo.txt包含两行 foo bar 上面的命令不打印任何内容。

3
是否可以从Linux更改BIOS设置?
我试图编写一个脚本来在大量计算机上启用IPMI,而不必将KVM逐一连接到它们。是否可以从Linux更改BIOS设置?操作系统是SL6。 我知道每台机器都可能需要重新开机,但是我当然可以通过编程来完成。
12 linux  bash  scripting  bios 

3
通过bash脚本编辑文件
我是bash脚本的初学者。我想创建一个bash脚本以自动方式在Linux机器上安装安装和配置内容。 假设我要编辑 /etc/yum.repos.d/epel.repo 通过bash脚本 我想做的如下 打开文件/etc/yum.repos.d/epel.repo 查找[epel]部分 在epel部分中,在启用行= 1之后添加优先级= 10 对于第一部分,我添加了 yum install nano nano /etc/yum.repos.d/epel.repo 我的问题是如何使用nano使用bash脚本执行第2部分和第3部分(如果可能的话,如果不可能的话,请使用sed向我展示) 同样在某些时候,我将不得不修改文件中的变量,例如 使能= 0使能= 1 测试=“ 1”到测试=“ 0” 在一行中添加文本。功能=功能=“ text1”,“ text2” 在文件中添加一些文本并保存(使用nano) 我知道这很苛刻,但是我需要为一个对服务器管理没有经验的朋友创建一个脚本。不幸的是,我没有时间从考试开始就学习bash脚本,我将使用您的示例来编写脚本。 伙计们感谢我成功完成了大多数bash脚本的所有回复 但是我还有另一个问题,让我们假设我想使用sed修改nginx.conf我们将处理worker_processes 现在我想使用sed执行以下步骤1.查找该 conf中的第一个匹配项 worker_processes,并用替换文本worker_processes 4; 这里的特别说明:这只是一个示例。conf可能包含worker_processes 1;。这是很难的部分。我想要一个sed命令,该命令找到单词worker_processes的第一个匹配项,删除找到该单词的文本行,worker_processes 4;然后粘贴到 该行,然后保存文件。这是我编辑文件时最可靠的方法(不会损坏任何配置文件 我的最后一个建议是使用sed -i's / enabled = 0 / enabled = 1 / …
12 linux  centos  bash 

5
检查PID是否正在运行的正确方法是什么?
我有一个.pid文件,我需要检查该进程是否正在运行。到目前为止,我发现了两种选择 kill -0 `cat something.pid` 如果pid没有运行,则会打印出错误。我知道可以将其重定向到/dev/null,但这使我认为这不是最佳解决方案。 第二种解决方案是使用ps,但是它也会在STDOUT上打印 ps -ef `cat something.pid` 将输出重定向到/dev/null并仅使用返回的状态码是正常的吗?或者这是我做错了事情并且需要其他命令的信号吗?
12 linux  unix  bash  process  pid 

3
如果正文不为空,则从命令行发送邮件
我想编写一个简单的脚本,如果日志发生更改,它会提醒我。为此,我使用grep查找我感兴趣的行。现在,它的工作方式如下: grep line /var/log/file | mail -s Log email@domain.tld 问题是,即使找不到匹配的行,它也会发送一封邮件。mailutils中的mail实用程序似乎没有任何开关告诉它丢弃具有空正文的邮件。 有没有快速简便的方法?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.