Questions tagged «bash»

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

2
您如何在Heredoc中转义字符?
我正在使用bash脚本,试图阻止它尝试替换Heredoc中的变量。如何将Heredoc设置为A)逸出变量名称而不是解析它们,或者B)完整返回整个字符串? cat > /etc/nginx/sites-available/default_php <<END server { listen 80 default; server_name _; root /var/www/$host; <--- $host is a problem child } END 照原样,当我完成将其注入文件时,我将得到以下结果: server { listen 80 default; server_name _; root /var/www/; }
22 linux  bash  heredoc 

1
bash脚本中的Ctrl-C
如何在bash脚本中实现ctrl+ c处理,以使脚本以及该脚本当前运行的命令被中断? (想象一下,有一个脚本执行一些长时间运行的命令。用户按下ctrl+ c并中断该命令,但脚本继续执行。)我需要它的行为使其被杀死。

8
SSH到具有频繁更改IP的盒子中
我有一些经常更改其IP的云盒。 我使用主机名ssh,但是由于以下错误消息,每次服务器启动时都必须编辑known_hosts文件: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key …

6
如何在SSH登录时使用自定义.bashrc文件
我发现与我合作的新公司经常需要访问寿命相对较短的linux服务器。在每台服务器上我都有一个帐户,但是无论何时创建一个新帐户,我都必须经历转移.bashrc的麻烦。但是有可能在大约一个月的时间内,该服务器将不再存在。我还必须在短时间内(数分钟)访问许多其他服务器,但这并不值得通过我的.bashrc进行传输,但是由于我正在使用许多服务器,因此这会浪费大量时间。 我不想更改服务器上的任何内容,但是我想知道是否有一种方法可以使用“每连接” .bashrc,因此无论何时我将SSH连接到服务器,我的设置都将用于该会话。 如果可以的话,如果我可以对其他配置文件(例如gitconfig文件)做同样的事情,那就太好了。

1
是否存在仅阻止的设备文件?
...类似/ dev / null的东西,但是只是阻止了所有写入的字节? 我需要的一个技巧是通过阻止其输出将任意可执行文件保存在内存中。管道似乎不可用,因为首先将输出写入缓冲区。
21 linux  bash  cygwin 


4
注销时后台进程是否获得SIGHUP?
这是该问题的后续措施。 我还要进行一些测试;看起来这是在物理控制台还是通过SSH进行都没关系,仅SCP也不发生这种情况。我也用进行了测试cat /dev/zero > /dev/null。行为是完全相同的: 使用在后台启动进程&(或在开始使用后将其置于后台CTRL-Z和bg);这无需使用即可nohup完成。 注销。 重新登录。 该过程仍然存在,愉快地运行,现在是 init。 我可以确认SCP和CAT在发送了 SIGHUP;我使用进行了测试kill -HUP。 所以,看起来SIGHUP确实是 不会在注销时发送,至少不会发送到后台进程(出于显而易见的原因,不能使用前台进程进行测试)。 最初,这是通过VMware ESX 3.5(基于RedHat)的服务控制台发生的,但是我能够在CentOS 5.4上完全复制它。 问题又是:注销时是否不将SIGHUP发送到进程,即使它们在后台运行?为什么这没有发生? 编辑 strace根据Kyle的回答,我检查了。 正如我所期望的,从启动它的外壳注销时,该过程没有任何信号。在使用服务器控制台和通过SSH时都会发生这种情况。
21 linux  bash  process  signals 

2
命令开头的反斜杠
在安装RVM手册中,我看到很多以'\'开头的行: 使用ruby安装RVM: $ \curl -L https://get.rvm.io | bash -s stable --ruby 我认为这只是打字错误,但他们会重复很多次。 那是什么原因呢?

4
ssh远程命令的$ PATH为什么与交互式shell的$ PATH不同?
我有一个用户未对任何点文件中的$ PATH进行任何修改:这正是系统默认设置。从登录shell: $ ssh example.com user@example.com:~$ cat /tmp/hello.hs #!/bin/bash echo "$SHELL" echo "$PATH" user@example.com:~$ /tmp/hello.hs /bin/bash /usr/local/bin:/usr/bin:/bin 完全符合中的规定/etc/profile。我觉得这很意外: $ ssh example.com '/tmp/hello.sh' /bin/bash /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games 就像我说的,有一个在$ PATH的任何修改~/.bashrc,也不在/etc/bash.bashrc。无~/.ssh/environment任。该ssh(1)声明环境变量PATH是 设置为默认PATH,如编译ssh时所指定。 但是来自StackOverflow的该线程和此邮件列表文章建议我只需修改/ etc / profile,shell启动文件之一等,就应该能够影响给定命令的$ PATH。 这里发生了什么?
20 ssh  debian  bash 

5
什么会使Linux中的>静默失败?
我运行了以下命令: python ./manage.py dumpdata partyapp.InvitationTemplate > partyapp_dump.json 将数据转储到partyapp_dump.json文件中。但是,所有数据仅被打印在屏幕上,并且partyapp_dump.json创建了一个空文件。 为什么会发生这种情况?我进行了测试ls > partyapp_dump.json,效果很好。
20 linux  bash 

7
使用自动脚本设置时区
我正在编写脚本来自动设置新的slicehost安装。在理想的情况下,启动脚本后,脚本便会运行,而不会引起我的注意。我成功了,除了一个例外。 我该如何设置时区,以永久性(紧急重启)和健全(调整标准时间和夏令时,这样就不仅仅强迫日期了)……不需要我输入的方式? 目前,我正在使用 dpkg-reconfigure tzdata 这似乎没有任何强制参数的方法。需要用户输入。 编辑:我在这里编辑,而不是注释,因为注释似乎不允许使用代码块。 根据下面的Rudedog的评论,这是我最终得到的实际代码。我还注意到这不会更新/ etc / timezone。我不确定是谁使用的,但是如果有人使用,我也要设置。 TIMEZONE="America/Los_Angeles" echo $TIMEZONE > /etc/timezone cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime # This sets the time


7
从Shell脚本运行ssh-agent
我正在尝试创建一个shell脚本,该脚本除其他外将启动ssh-agent并向该代理添加私钥。例: #!/bin/bash # ... ssh-agent $SHELL ssh-add /path/to/key # ... 这样做的问题是ssh-agent显然启动了$ SHELL的另一个实例(在我的情况下是bash),并且从脚本的角度来看,它已经执行了所有操作,并且ssh-add以及它下面的任何内容都永远不会运行。 如何从我的shell脚本运行ssh-agent并保持其在命令列表中的移动?

2
是否有像cron这样的实用程序,可以将工作计划以后(但仅一次)进行?
我正在尝试设计一个程序,该程序在发生某个(非定期)事件时发送文本。现在,我想要一个脚本来查找此事件的发生时间,然后安排一个(类似cron的)作业,该作业将在该事件发生之前发送文本。 一个更具体的示例如下所示: 脚本A运行并检测下一次事件 脚本A使用??? 安排脚本B在$ time运行 在$ time,??? 调用发送文本的脚本B。 问题是,该事件可能在11天内随机发生,并且只发生一次。Cron似乎不适合这样做-我不希望这项工作重复进行。 因此,我想(简而言之),是否有一个实用程序提供了非周期性脚本的延迟执行?
19 linux  bash  cron 

2
EC2实例启动后运行bash脚本
我在EC2实例上有一个脚本,该脚本可以远程启动另一个实例。 一旦该实例完全加载(完成引导),我希望它自动运行bash脚本,那么执行此操作的最佳方法是什么? 我需要一切都完全启动,基本上bash脚本运行一个图像转换脚本(使用ImageMagick并执行几次“ wget”命令) 当前,脚本位于此处: /home/root/beginProcess.sh 我可以通过执行手动启动 bash beginProcess.sh RHEL-6.2-入门-EBS-i386 另外还有一个EBS卷,如果有帮助,谢谢!
19 linux  amazon-ec2  bash  boot 

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.