Tag: bash

Bash脚本如何杀死已经运行的“睡眠”版本?

编辑从下面的评论我写了一个令人困惑/误导的介绍,所以我重写它。 我有一个名为“ 锁定屏幕计时器 ”的bash脚本,可以在桌面上单击。 30分钟后,它锁定屏幕,用户必须输入密码才能解锁屏幕。 但是,如果用户改变主意,或者他们想要重置计时器,他们应该能够再次单击桌面快捷方式,它应该杀死正在睡觉和倒计时的先前正在运行的作业。 到目前为止,我已经做了一些试验和错误,并且遇到了障碍。 相关的代码段是: pgrep tv-timer > ~/tv-timer.log PID=$$ # Current Process ID 使用cat ~/tv-timer.log : 16382 20711 其中一个等于上面的“$ PID”,但另一个是以前运行的副本,我想使用kill ##### 。 找出哪一个“$ PID”并杀死它的最佳方法是什么? 第一次运行脚本时,只有一个条目等于“$ PID”,我不想杀死它。 谢谢你的帮助! 建议的副本( 防止重复脚本同时运行 )是父和子进程中的问题。 接受的答案很长且很复杂,涉及包装脚本和/或多行代码。 这里寻求的解决方案是一行新代码! 事实上,这里接受的选择答案是基于重复的OP尝试那里没有工作!

如何使zenity“瞬态父母”警告永久消失

Zenity总是在终端显示警告,这让我很恼火: Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. 显然我不是唯一一个: linuxquestions.org – 没有临时父代的Gtk消息gtkdialog映射 bugs.debian.org – 没有临时父级映射的GtkDialog stackoverflow.com – 没有临时父级映射的GtkDialog AskUbuntu – 在16.04 Gtk-message下运行zenity时出现错误信息… 几乎所有答案都告诉您通过在命令末尾附加2>/dev/null来更改调用zenity的方式。 我不想对我已编写的所有代码执行此操作,并记住这是我编写的未来代码。 有没有更容易的方法让这个恼人的消息消失?

如何让ssh-copy-id使用22以外的端口?

如何让ssh-copy-id使用22以外的端口? 我用-p尝试了但是得到了: ssh-copy-id -p XXX XXXX@XX.XX.XX.XX Bad port ‘umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys’ 我知道端口很好,因为我已连接到该端口上的服务器。

我可以写一个带参数的别名吗?

我有一些远程机器,我需要编译一些源代码。 我通常做的是写一个别名,它说: alias g++=’g++ `pkg-config –cflags opencv –libs opencv`’ 然后,当我远程编译时,我会做g++ -o test test.cpp 。 无论出于何种原因,Ubuntu不会让我这样做。 相反,当我这样做时,Ubuntu可以工作: g++ file.cpp -o file `pkg-config –cflags opencv –libs opencv` 但这意味着我无法为g ++编写别名。 有没有办法可以写一个会引用争论的别名? 我该怎么办?

位于Windows子系统Linux中的〜/ .bash_profile在哪里?

当试图从Windows子系统Linux中的Ubuntu Xenial(16.04)访问~/.bash_profile ,我收到以下错误: -bash: /home//.bash_profile: No such file or directory 它位于何处,如何编辑? 谢谢!

如何重命名名称以“_backup”结尾的文件夹中的所有文件

我有一堆图像以某种方式从myimage.jpg重命名为myimage.jpg_backup ,因此我网站上的图像不再加载。 如何递归查找以_backup结尾的所有图像, _backup删除_backup部分,同时保留文件名的其余部分? 我试过这样的事情: sudo find . -name “*.jpg_backup” -exec rename -n ‘s/_backup$//’ *.jpg_backup ‘;’ 但它给了我一个错误: Can’t rename *.jpg_backup *.jpg: No such file or directory

可执行权限模式S用于什么?

如果为具有执行权限的文件权限添加setuid位,则会将x更改为s ,表示如果执行该文件,它将作为文件的所有者而不是实际执行该文件的人执行。 但我也注意到,如果您添加s权限但删除了x权限,则会更改为权限列表中的S 不知何故,这意味着它无法执行,但如果可以执行,它将同时作为所有者执行? 是对的吗? 我误解了这个许可吗? 它是干什么用的? 这是什么意思?

关于bash和dash的速度是否有具体的数字?

根据这篇文章, dash被选为/bin/sh因为bash较慢: Dash为/ bin / sh 是否有快速dash速度的具体数字? 如果你使用bash而不是dash来启动Ubuntu需要多长时间? 上述链接的论点今天仍然有效吗? 对于后台:system-v init使用了很多shell脚本,但systemd却没有。 这个问题与合成基准的速度无关。 这是最终用户的整体显着优势。 关于破折号与bash速度的综合基准并没有回答这个问题。

从变量获取值 – bash脚本

我正在尝试编写一个bash脚本来打印3个变量的值。 不断收到错误。 我究竟做错了什么? INPUT1=/tmp/dir1 INPUT2=/tmp/dir2 INPUT3=/tmp/dir3 for i in 1 2 3 do echo $(INPUT$i) done 当我运行这个脚本时,输出是: syntax error: operand expected (error token is “/tmp/dir1

cron脚本中的Rsync行为

我有一个nfs设备,每天创建检查点(备份)。 我想使用Rsync将这些检查点复制到另一台设备(通过iSCSI连接Drobo)。 所以我在一个nfs共享上运行脚本,它运行良好。 以下是我有几个问题,需要花费很长时间才能多次尝试。 有多个共享要备份,我想循环遍历它们并在每个共享上运行脚本。 如何使用Rsync? Rsync作业是否会启动然后再次循环并同时运行第二个和第三个和第四个Rsync作业,或者Rsync会在结束并重新启动循环之前等待作业完成吗? 也许我只需要在循环中进行一些检查,直到Rsync完成后才重新启动。 提到最后一句话; 什么是Rsync返回我可以用来报告是否有错误或继续循环如果一切顺利? NFS设备创建的检查点根据日期命名。 Rsync将.ckpt *文件解压缩到一个静态命名的目录中。 由于源是不同的目录,但内部的文件是相同的,并且目标名称相同,Rsync是否仍然只复制差异? 这是rsync工作: rsync -az $NEWCHKPT/* /drobo/bak.${share}/${share}_daily 我知道这是post要求很多。 任何意见是极大的赞赏。