Articles of bash

无法通过SSH连接到“Bash for Windows”(WSL)

我试图从我的Linux机器SSH到WSL,并没有运气到目前为止。 我研究过: https://superuser.com/questions/1123552/how-to-ssh-into-wsl https://github.com/Microsoft/BashOnWindows/issues/300 https://superuser.com/questions/1111591/how-can-i-ssh-into-bash-on-ubuntu-on-windows-10 我尝试了几乎所有的东西。 closures防火墙,不同的端口,AllowUsers,PermitRootLogin,UsePrivilegeSeparation等我其实可以ssh从Windows框到我的linux的盒子没有问题。 而且,因为我closures了windows系统上的防火墙,所以在debugging连接(从Linux到WSL)时,我也得到了一个“build立连接”: $ ssh -vvv 192.168.2.8 -p 2222 OpenSSH_7.5p1, OpenSSL 1.1.0e 16 Feb 2017 debug1: Reading configuration data /home/user/.ssh/config debug1: /home/user/.ssh/config line 1: Applying options for * debug1: Reading configuration data /etc/ssh/ssh_config debug2: resolving "192.168.2.8" port 2222 debug2: ssh_connect_direct: needpriv 0 debug1: Connecting to 192.168.2.8 [192.168.2.8] port 2222. debug1: […]

FreeBSD:如何将系统时钟与bash中的硬件时钟同步?

假设没有networking时间协议(NTP)守护进程正在运行,我正在编写一个脚本来同步系统时钟和硬件时钟(又名RTC或CMOS时钟)。 我正在虚拟机中运行,并且主pipe不让硬件时钟被来宾改变。 所以在linux中,我可以使用hwclock –hctosys来做到这一点,例如在Debian中: $ date Thu May 18 00:48:57 UTC 2017 $ date 0401121621 Thu Apr 1 12:16:00 UTC 2021 $ hwclock –hctosys # this set my system clock to the hardware clock back again $ date Thu May 18 00:49:28 UTC 2017 但是我怎么能在FreeBSD上做同样的事情,因为它不提供hwclock实用程序? 我尝试使用adjkerntz -a但它没有工作。 我正在运行FreeBSD 11.0-RELEASE-p9 谢谢你的帮助

如何在Torque PBS中设置bash环境? 为什么源〜/ .bashrc不起作用?

我已经成功地在我的Ubuntu服务器上安装了Torque PBS。 工作提交是好的。 但是有一个恼人的事情。 我发现bash环境不适合在PBS里面 例如 echo 'echo $PATH > ~/res.txt' | qsub res.txt的内容是 /home/admin-pc/bin:/home/admin-pc/.local/bin:/bin:/usr/bin:/snap/bin 这绝对不是我的PATH。 所以我试了 echo 'source ~/.bashrc;echo $PATH > ~/res.txt' | qsub 这不起作用。 它只是输出相同的path 所以我在想,也许~/.bashrc在PBS里面是不一样的。 所以我试了 echo 'cat ~/.bashrc > ~/res.txt' | qsub 但res.txt的内容正是我的〜/ .bashrc所在。 这对我来说真的很奇怪。 我发现唯一的解决方法是使用bash -ic echo "bash -ic 'echo \$PATH > ~/res.txt'"|qsub 但是这太尴尬了。 有没有更好的方法使PBS自动inheritancebash环境?

提交给Torque的作业不会生成错误/日志文件

如上所述,我刚刚在Ubuntu 16.04机器上安装了Torque。 提交的作业完好,但-e和-o标志似乎不起作用。 即使我已经创build了错误和日志文件 给予标志日志目录的绝对path。 在提交作业之前在目录中创build日志文件。 我确定PBS文件的工作原理是因为我从运行作业的机器上复制了它。 以下是提到的PBS文件。 事先道歉我无法缩进代码块。 #! /bin/bash #PBS -e /path/to/error.err #PBS -o /path/to/log.log #PBS -l nodes=1:ppn=8 #PBS -l walltime=1:00:00 cd /path/to/working/directory execute function.binary mkdir /backup/folder cp -r /results/ /backup/folder echo "Job complete." >> /path/to/log.log 编辑:感谢/ u / tux_DEV_NULL,我设法解决它。 我添加了行$no_spool_dir_list /home/和$spool_as_final_name true到/var/spool/torque/mom_priv/config ,一切按预期工作。

Bash脚本入口点(PID = 1)杀死`尾巴`subprocess只有当一个假陷阱(没有什么)在那里

我正在面对一个奇怪的行为,我的Bash脚本,我有这个Bash脚本运行与PID 1 (这是一个Docker容器的entrypoint ,如果你不熟悉Docker,我认为你可以忽略这个信息)。 当我运行下面的脚本时, SIGTERM很快终止一切,并且一切似乎都没有问题(请记住, sshd服务不存在!我的整个系统只启动这个只运行tail脚本,但直到现在它不是问题)。 #!/bin/bash trap "pkill sshd" SIGTERM export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH if [ -f /usr/local/samba/etc/smb.conf ]; then exec /usr/local/samba/sbin/samba -i else tail -f /dev/null & wait ${!} fi 当我删除该trap时,问题出现了。 现在我的系统挂起了,似乎因为tail仍在运行,并且由于某种原因而不会结束(如果您熟悉Docker,Docker会等待10秒钟,然后终止容器,因为它没有响应SIGTERM ,再次如果你不熟悉Docker,请忽略此信息)。 #!/bin/bash export PATH=/usr/local/samba/bin/:/usr/local/samba/sbin/:$PATH if [ -f /usr/local/samba/etc/smb.conf ]; then exec /usr/local/samba/sbin/samba -i else tail -f /dev/null & wait ${!} fi 有人能向我解释究竟是什么问题? […]

Debian 8; 在没有密码提示的情况下在启动屏幕会话中运行sudo?

我想创build一个启动/启动脚本,允许我运行几个屏幕会话。 我已经能够通过在/etc/init.d/bashfile这里创build一个脚本来实现了 但是当我需要运行一个sudo命令时,它会在会话中提示我input密码。 现在,我已经看到人们走的路线与用户不需要密码,但我相信这将是一个安全漏洞。 (明显?) 有什么办法可以解决这个问题,而不必input密码?

ssh-keygen -s输出创build密钥的一半并失败

所以我正在运行ssh-keygen来签署一个用户证书。 我正在使用的命令如下所示: ssh-keygen -s ${CERTIFICATE} -I ${GITHUB_USERNAME} -n ${AUTH_PRINCIPAL} -V +${LEASE_TIME} -z ${SERIAL} -O source-address=${ALLOWED_CIDR} ${WORK_DIR}/${GITHUB_USERNAME}.pub 这目前工作在我工作的另一个bash脚本。 会发生什么,这将运行,并将打印大部分的关键标准输出,但不会写入-cert.pub文件,它的意思。 在命令中添加一些-vvv不会增加输出,所以我无法知道发生了什么。 有任何想法吗?

如何自动恢复Cassandra备份(快照)?

我有一个单节点Cassandra EC2实例(apache-cassandra-3.10),在这个实例中,我每天拍摄快照(备份)并上传到AWS S3。 我也采取了完整的“架构”和“初始令牌”的备份,并保持在S3以上。我已经成功地为备份任务创build了一个Bash shell脚本,它在一次运行中执行所有上述的事情。 但我无法find任何自动化的方式/脚本来恢复新实例上的整个备份。

安排脚本作业自动运行,但需要用户交互/input

我最初开始使用这个脚本来做其他的事情,认为这个脚本会自动处理整个过程,重启并启动更多的脚本。 然后我意识到我有一个问题,因为我需要运行的另一个进程实际上需要用户input。 虽然我已经解决了第二个问题,所以它不需要用户input,我仍然想知道如何做到这一点。 我对Linux相当陌生,在过去的一个半月里,一直在用脚本编写一个过程。 但是,还有很多我不知道的东西。 所以说,我想通过一些方法自动运行脚本。 我一直在使用crontab和一个bash脚本,但它不一定需要是crontab。 我通常使用这个脚本将脚本放入另一个脚本的crontab中,然后编写主脚本来输出脚本,比如插入的crontab作业下面的脚本。 (crontab -l 2>>/dev/null; echo "* * * * * /home/pi/Public/test2") | crontab 只要我有能力计划何时发生,我就可以不关心如何让脚本出现在terminal中进行交互。 就像重启。 #!/bin/bash echo 'This is a test.' echo 'This is a written test.' >> /home/pi/Public/testwrite.txt sleep 10 是的,我意识到这个每分钟都会发生,但这只是为了testing的目的,以确保它的工作。 我使用的脚本都在顶部使用“#!/ bin / bash”,并赋予执行权限。 它在手动启动时以及在crontab中调用时起作用,尽pipe窗口从不出现,而是在后台运行。 我希望有一种方法能够强迫它进入前台,或者被阅读或相应地进行交互。 是的,我尝试了谷歌search各种各样的东西,使用它们,但我不知道我使用正确的条款来得到它的任何地方。 我希望至less有人能指出我的方向是正确的,如果我真的用这个样本来展示怎么做,那将会是锦上添花。 我希望这是足够的信息,我只是需要一个如何使这项工作的一个通用的例子。 另外,我找不到一个交互式标签来提出这个问题,所以如果有人能做到这一点,那就太棒了。 🙂 编辑01:为了超级清晰,我问如何使一个terminal出现在桌面上,通过crontab中运行crontab中调用的脚本的计划脚本。 编辑02:我会发布这个信息,因为它被要求,但我喜欢做的事情为了挑战的缘故,我不是在寻找一个超级特定的答案。 一般来说,如何才能更好地了解实际情况,而不是仅仅针对这一点。 不过,我最初担心这是我把这条线 sudo […]

svnstat脚本

所以我正在构build一个shell脚本来检查所有相关的svn仓库,以便在svnstat中进行分析。 我已经得到了所有这些手动工作,现在我正在我的笔记本电脑上写cygwin的bash脚本,因为我打算在某些时候将其移到Linux服务器上。 编辑:我放弃了这一点,并写了一个简单的.bat脚本。 我会用其他方式来弄清楚Linux的部署。 编辑:添加了睡眠30和svn日志命令。 我现在可以用svn log命令告诉它没有进入svn日志…这一次,它执行了应用程序,运行了日志,然后检查了数据库,并冻结了。 这次我会在日志前后放置睡眠30。 co2.sh #!/bin/bash function checkout { mkdir $1 svn checkout svn://dev-server/$1 $1 svn log –verbose –xml >> svn.log $1 sleep 30 } cd /cygdrive/c/Users/My\ User/Documents/Repos/wc checkout Applications checkout Database checkout WebServer/www.mysite.com checkout WebServer/anotherhost.mysite.com checkout WebServer/AnotherApp checkout WebServer/thirdhost.mysite.com checkout WebServer/fourthhost.mysite.com checkout WebServer/WebServices 它在很大程度上是有效的,但由于某种原因,它往往会在一些存储库之后停止工作,通常在完成一个存储库之后才会转到下一个存储库。 当它失败时,它不会自行恢复。 我试过注释svn行,它进入并创build所有的目录就好了,当我这样做 – 所以不是这样。 我正在寻找方向以及直接的build议。 Cygwin对我来说一直非常稳定,但我最近开始使用本地rxvt而不是“在cmd.exe窗口中打击”。 […]