我的 Ubuntu12.04 中有很多 Virtual box 机器,每次关机或重新启动时,我都必须一一启动它们。
我想帮助编写启动时自动启动 VBox 机器的脚本。
我创建一个小的自动安装脚本将修改/etc/profile和$HOME/.profile如果某些路径不出口。然后,我想自动重新加载这些。
我读过这样source做,所以我启动了我的终端并输入:
source /etc/profile
source ~/.profile
Run Code Online (Sandbox Code Playgroud)
从终端,它没有输出任何错误。
但是,将这两个命令放在 Bash 脚本中会生成source: not found.
#!/bin/sh是指定的(显然,它不能保证)?非常简单的问题:在 Linux 中,为什么 Python 需要该行
#!/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
在 python 文件的开头,因为 Windows 没有?
它有什么作用?因为“Python 链接”的描述有点含糊......
我想要一种方法来查找和打印文件的修改时间,以便在 bash 脚本中使用。
我想出了:
ls -l $filename | cut -d ' ' -f '6-8'
Run Code Online (Sandbox Code Playgroud)
哪些输出:
Jul 26 15:05
Run Code Online (Sandbox Code Playgroud)
虽然我想避免 parsing ls,但将年份放在那里也很有用。
理想情况下,我希望看到类似于date命令默认输出的输出。
Tue Jul 26 15:20:59 BST 2016
Run Code Online (Sandbox Code Playgroud)
还有哪些有用的方法可用?
我有一个脚本,为了让我的笔记本电脑暂停/恢复工作而执行该脚本。然后xinput,当我启动会话以设置双指滚动和键盘快捷键时,将执行另一系列,xkbset和xmodmap命令。当我从挂起状态恢复时,两指滚动和我的键盘快捷键将不起作用。我需要再次手动执行第二个文件中的命令。如何将这些添加到挂起/恢复脚本以自动完成?见下文:
/etc/pm/sleep.d/20_custom-ehci_hcd
#!/bin/sh
#inspired by http://art.ubuntuforums.org/showpost.php?p=9744970&postcount=19
#...and http://thecodecentral.com/2011/01/18/fix-ubuntu-10-10-suspendhibernate-not-working-bug
# tidied by tqzzaa :)
VERSION=1.1
DEV_LIST=/tmp/usb-dev-list
DRIVERS_DIR=/sys/bus/pci/drivers
DRIVERS="ehci xhci" # ehci_hcd, xhci_hcd
HEX="[[:xdigit:]]"
MAX_BIND_ATTEMPTS=2
BIND_WAIT=0.1
unbindDev() {
echo -n > $DEV_LIST 2>/dev/null
for driver in $DRIVERS; do
DDIR=$DRIVERS_DIR/${driver}_hcd
for dev in `ls $DDIR 2>/dev/null | egrep "^$HEX+:$HEX+:$HEX"`; do
echo -n "$dev" > $DDIR/unbind
echo "$driver $dev" >> $DEV_LIST
done
done
}
bindDev() {
if [ -s $DEV_LIST ]; then
while read driver dev; do …Run Code Online (Sandbox Code Playgroud) 我想start.sh在运行这个的远程服务器上执行一个脚本:
nohup node server.js &
Run Code Online (Sandbox Code Playgroud)
天真地,我这样称呼 SSH:
ssh myserver <<EOF
./start.sh &
EOF
Run Code Online (Sandbox Code Playgroud)
这会启动脚本,但会保持会话处于连接状态。我想在脚本中使用其他命令执行此步骤,所以这不好。
如何通过 SSH 连接到远程机器,nohup在后台启动命令,然后断开连接?我想我可以将 SSH 进程本身置于后台,但这似乎不对。
我使用以下行查找 PWD 的所有子目录并svnadmin verify在每个目录上运行(我已经知道它们是 Subversion 存储库)
find ./* -maxdepth 0 -exec svnadmin verify {} \;
Run Code Online (Sandbox Code Playgroud)
这很有效,除了输出看起来像这样的事实:
* Verifying repository metadata ...
* Verifying metadata at revision 1 ...
* Verifying metadata at revision 2 ...
* Verifying metadata at revision 4 ...
* Verifying metadata at revision 5 ...
* Verifying metadata at revision 6 ...
* Verifying metadata at revision 9 ...
* Verifying metadata at revision 10 ...
* Verifying metadata at revision 12 ...
* …Run Code Online (Sandbox Code Playgroud) 登录后我需要运行以下命令(带真实参数):
ssh -f user@example.com -L 54321:example.com:54321 -N
Run Code Online (Sandbox Code Playgroud)
我只需要我的用户,而不是机器上的所有用户。此外,无论我是通过 GUI 登录还是通过 SSH 登录到普通 shell 终端,我都需要它来运行。我什至想知道如何在没有安装 GUI 的机器上执行此操作。
按照说明,我会将上面的行放在哪里运行?
我已经设置了一个 cron 工作:
20 * * * * /usr/bin/sh /home/lucky/myfile.sh
Run Code Online (Sandbox Code Playgroud)
主要问题是在预定时间出现错误:“mail has sent to /var/spool/mail/lucky”。
myfile.sh 的内容是:
mkdir jh
cd jh
Run Code Online (Sandbox Code Playgroud)