例如,MySQL服务器正在我的Ubuntu机器上运行.某些数据在过去24小时内已更改.
什么(Linux)脚本可以找到过去24小时内更改过的文件?
请列出文件名,文件大小和修改时间.
我有一个python脚本,它将检查队列并对每个项目执行操作:
# checkqueue.py
while True:
check_queue()
do_something()
Run Code Online (Sandbox Code Playgroud)
如何编写一个bash脚本来检查它是否正在运行,如果没有,则启动它.大概下面的伪代码(或者它应该做类似的事情ps | grep
?):
# keepalivescript.sh
if processidfile exists:
if processid is running:
exit, all ok
run checkqueue.py
write processid to processidfile
Run Code Online (Sandbox Code Playgroud)
我将从crontab中调用它:
# crontab
*/5 * * * * /path/to/keepalivescript.sh
Run Code Online (Sandbox Code Playgroud) 我知道`.
上次编辑行的命令.有没有办法在编辑历史中走得更远?我经常在浏览文件时意外插入内容,撤消,但是`.
不会再把我带到我想要的地方.
我是shell脚本中的菜鸟.如果命令失败,我想打印一条消息并退出我的脚本.我试过了:
my_command && (echo 'my_command failed; exit)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.它不断执行脚本中此行之后的指令.我正在使用Ubuntu和bash.
我正在尝试在bash heredoc中插入变量:
var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
Run Code Online (Sandbox Code Playgroud)
这不符合我的预期(按$var
字面意思处理,不进行扩展).
我需要使用,sudo tee
因为创建文件需要sudo.做类似的事情:
sudo cat > /path/to/outfile <<EOT
my text...
EOT
Run Code Online (Sandbox Code Playgroud)
不起作用,因为>outfile
在当前shell中打开文件,而不使用sudo.
如果我从脚本运行这些命令:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
Run Code Online (Sandbox Code Playgroud)
没事.
但是,如果我跑:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
我在教程中读到要替换你需要停止的shell中的环境变量,并且"引用"该$varname
部分以便它不直接替换,这就是我所做的,并且只有在之前定义变量时才有效.
我怎样才能将sed识别$var
为在shell中定义的环境变量?
我有一个大约1000行的文件.我希望我的文件的一部分在与我的grep语句匹配的行之后.
即
$ cat file | grep 'TERMINATE' # It is found on line 534
Run Code Online (Sandbox Code Playgroud)
所以,我希望该行文件__CODE__
可以进一步处理.
我该怎么做 ?
我尝试在我的Mac上安装twitter bower,我用过
npm install bower -g
Run Code Online (Sandbox Code Playgroud)
然后我尝试了bower --help
,输出是bower command not found
.这是为什么?
我想写一个包含功能,所以bash脚本时提供的.tar
,.tar.bz2
,.tar.gz
等文件,它使用的焦油与相关的开关来解压缩文件.
我正在使用if ifif语句测试文件名以查看它的结尾,我无法使用正则表达式元字符进行匹配.
为了保存不断重写脚本我在命令行使用'test',我认为下面的语句应该有效,我已经尝试了括号,引号和元字符的每个组合,但仍然失败了.
test sed-4.2.2.tar.bz2 = tar\.bz2$; echo $?
(this returns 1, false)
Run Code Online (Sandbox Code Playgroud)
我确定问题很简单,我到处都看,但我无法理解如何做到这一点.有人知道我怎么做吗?
我是bash的新手,我一直试图否定以下命令:
wget -q --tries=10 --timeout=20 --spider http://google.com
if [[ $? -eq 0 ]]; then
echo "Sorry you are Offline"
exit 1
Run Code Online (Sandbox Code Playgroud)
如果我连接到互联网,这个if条件返回true.我希望它以相反的方式发生,但放在!
任何地方似乎都不起作用.