Articles of shell

比较bash脚本中的md5和

我试图用md5sum比较bash脚本中的两个文件。 目标是使用一个文件的.md5来检查另一个文件的md5sum 。 我的谷歌search如何以正确的方式做到这一点,并没有告诉我如何做到这一点。 烧掉电子邮件就像你期望的那样工作。 现在我试图让它在失败而不是成功的情况下发送一封电子邮件。 也许列出从.md5文件收到的结果和损坏文件的实际md5sum。 我会解决这个问题,最终,但是这有点令人困惑,因为我试图弄清楚我要去哪里错了。 Shellcheck指出代码看起来不错,但我没有得到我期望得到的结果。 几个StackOverflow链接,我检查了一下,看看是否可以工作: 一 二 这里是我的bash脚本的内容,它的原始forms: #!/bin/bash cd /home/example/public_html/exampledomain.com/billing/system/ || exit rm -rf GeoLiteCity.dat curl -L https://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz | gunzip > GeoLiteCity.dat curl -L https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz | gunzip > GeoLite2-City.dat curl -L https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.md5 md5sum GeoLite2-City.dat > md5sum.txt file1="md5sum.txt" file2="GeoLite2-City.md5" if [ "`cat $file1`" != "`cat $file2`" ]; then mail -s […]

长时间运行的PHP脚本在通过exec()调用时停止,但在通过CLI调用时结束

我有一堆需要很长时间才能完成的脚本。 其中一些可能需要长达20分钟。 有一个执行这些PHP脚本的Bash脚本。 当我以root的身份通过CLI调用这个Bash脚本时,所有的PHP脚本都没有任何问题。 但是当我用PHP的exec()函数通过浏览器调用Bash脚本时,脚本在7/8分钟后突然停止,而不会引发任何错误。 对于通过Apache / PHP执行的进程或脚本可以运行的时间是否有一定的限制? 我试过了: set_time_limit(0) exec('nohup /path/to/bashscript') exec('/path/to/bashscript | at now') 最后两个尝试过的解决scheme已经被长期运行脚本有问题的其他人推荐,但是它根本没有帮助我。 注意:执行PHP脚本的Bash脚本是CakePHP的控制台应用程序。 我必须通过这个Bash脚本执行PHP脚本来利用CakePHP的所有function(模型,shell方法等)。 我需要能够通过浏览器调用Bash脚本,并让它在后台运行。 服务器是VPS,并安装了WHM / cPanel。

我怎样才能sorting在Linux Bash shell中的string数组?

例如,数组是 link2_pathname link1_pathname link3_pathname 我怎样才能得到像下面的数组。 link1_pathname link2_pathname link3_pathname 提前感谢!

shell如何处理无限循环

无论何时我需要限制shell命令输出,我使用较less的分页结果: cat file_with_long_content | less 这工作得很好,但是我很好奇,即使输出永远不会结束,仍然可以工作,请考虑在inf.sh文件中使用以下脚本: while true; do date; done 然后我跑 sh inf.sh | less 而且它仍然可以对结果进行重新分页,所以说pipe道输出结果而不是等待命令完成才能输出结果是正确的吗?

Shell脚本问题,包含空格的文件名

我知道处理文件名空间的一种方法是用单引号括起文件名:“'”。 为什么下面的代码叫做“echo.sh”,在包含带空格的文件名的目录下工作,但程序“ls.sh”不起作用,唯一的区别是'echo'被'ls'replace? echo.sh #!/bin/sh for f in * do echo "'$f'" done 生产 : 'ABC' “高清” 'echo.sh' 'ls.sh' 但是,“ls.sh”失败: #!/bin/sh for f in * do ls "'$f'" done 生产 : ls:不能访问'ab c':没有这样的文件或目录 ls:不能访问'de f':没有这样的文件或目录 ls:不能访问'echo.sh':没有这样的文件或目录 ls:不能访问'ls.sh':没有这样的文件或目录

我想要一个shell脚本是可执行的,但不可读

我创build了一个脚本,我希望我们的共享系统上的其他用户执行但不能读取。 我将所有的权限设置为可执行权限,但撤销了R / W权限。 —x–x–x 1 dilletante staff 0 2013-04-02 11:42 expect.sh 然而脚本不能执行…原因很简单.. 解释器也需要读取脚本 我想要一个解决方法,如果有的话……我可以将它embedded到一些编译语言中。那可以工作吗? 如果是的话,你能指出我可以学习如何做的资源..

freeTDS bash:在Microsoft SQL Server中执行sql查询

我可以使用freeTSD和命令行通过Mint Linux VM连接到Microsoft SQL Server 2008实例,以在其上执行sql语句。 现在我想在bash脚本中自动化这个。 我能够成功login我的bash脚本: TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password 然后我有我的SQL查询: USE dbname GO delete from schema.tableA where ID > 5 GO delete from schema.tableB where ID > 5 GO delete from schema.tableC where ID > 5 GO exit 这在通过freeTSD命令行手动执行时有效,但不能在我放入bash文件时使用。 我跟着这个post: freeTSD&bash 。 这是我的bash脚本示例: echo […]

使用input/输出redirect在后台运行进程

我很想知道,当进程有input/输出redirect来在后台运行进程时,在代码中使用“&”运算符是否有所不同 在后台运行进程方面,这两行代码之间有什么区别? 如果有的话,我怎样才能确定分歧将是什么? setsid python script.py < /dev/zero &> log.txt & setsid python script.py < /dev/zero & > log.txt & setsid python script.py < /dev/zero > log.txt & setsid python script.py & < /dev/zero > log.txt

有没有办法改变vim的默认模式

有谁知道如何改变VIM的默认模式? 它的默认模式是命令模式,但我可以改变它插入模式?

在unix / linux命令行(例如BASH)中定义函数

有时候,我有一个单独的内容,我为了一个特定的任务重复了很多次,但是可能永远不会以完全相同的forms再次使用。 它包含一个我从目录列表中粘贴的文件名。 之间的某处并创build一个bash脚本我想也许我可以在命令行创build一个单线程函数,如: numresults(){ ls "$1"/RealignerTargetCreator | wc -l } 我已经尝试了一些使用eval的方法,使用了numresults=function… ,但还没有find正确的语法,到目前为止还没有发现任何东西。 (所有的东西都是关于bash函数的教程)。