我经常 ssh 到一个 centos 5 盒子。以某种方式映射了它们的键,以便control+d
将我从当前的 shell 中注销。如果我被 sudo'ed 用于其他用途,它会让我回到以前的用户。如果我没有 sudo'ed 它只会断开我的连接。我怎样才能避免这种情况发生?我经常使用 control+d 取消 python 解释器,有时我不小心按了不止一次。
在 Ubuntu 10.4 上,我编辑了该/etc/bash.bashrc
文件以设置一些变量,例如命令历史记录大小 ( HISTSIZE=5000
),但是如果我创建一个新用户,Ubuntu 默认会.bashrc
在他们的主目录中为他们提供一个文件,该文件将HISTSIZE=1000
覆盖我的设置。如何更改.bashrc
创建的默认文件?
根据 zip 文件的创建方式,有时它会直接提取所有文件,有时会将文件提取到子目录中。
如果后者为真,我如何强制unzip
命令“忽略”第一级目录?
例子:
cd /tmp
wget http://omeka.org/files/omeka-1.5.1.zip
mkdir omeka
unzip omeka-1.5.1.zip -d omeka/
cd omeka/
ll
Run Code Online (Sandbox Code Playgroud)
我得到的是/tmp/omeka/omeka-1.5.1/
:
total 12
drwxr-xr-x 3 root root 4096 2012-05-08 18:44 ./
drwxrwxrwt 6 root root 4096 2012-05-08 18:44 ../
drwxr-xr-x 5 root root 4096 2012-04-20 14:54 omeka-1.5.1/
Run Code Online (Sandbox Code Playgroud)
我想要的是提取到/tmp/omeka/
,的文件(上一级,目录结构中不包含版本号)
/tmp/omeka/(files)
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用-j
“垃圾路径”选项,但我想保留子目录结构,而不是顶级目录结构。我怎样才能做到这一点?
我的系统上有大约 10 个php.ini
文件,分布在各处,我想快速浏览它们。我试过这个命令:
locate php.ini | xargs vi
Run Code Online (Sandbox Code Playgroud)
但是vi
警告我Input is not from a terminal
,然后控制台开始变得非常奇怪 - 之后我需要按:q!
退出vi
,然后与 ssh 会话断开连接并重新连接以使控制台再次正常运行。
我想我有点明白这里发生了什么 - 基本上命令在vi
启动时还没有完成,所以命令可能没有完成并且vi
不认为终端处于正常模式。
我不知道如何解决它。我已经搜索了谷歌和 unix.stackexchange.com 运气不好。
我经常会用它tmux
来启动一个将运行一段时间的任务。我会定期回去检查它tmux -a
,如果它仍然没有完成,然后断开连接,稍后再检查。
有什么方法可以在不完全附加的情况下查看会话中正在发生的事情的简要快照?我正在寻找类似理论上tail
在会话上执行的操作以获得最后一点输出(但如果我可以避免使用输出副本创建另一个文件就更好了)
也许附加并立即分离也可以。我正在尝试保存击键,也许可以远程执行这样的命令,
即ssh root@server tmux --tail
?
在查看我的系统上的man
页面ls
并搜索 Google 之后,我发现有一种方法可以使用awk
或perl
在使用时显示八进制权限ls
,但是bash
还有什么更原生的吗?
$ ll
total 0
drwxr-xr-x 5 user group 170B May 20 20:03 .
drwxr-xr-x 17 user group 578B May 20 20:03 ..
-rw-r--r-- 1 user group 0B May 20 20:03 example
-rw-r--r-- 1 user group 0B May 20 20:03 example-1
-rw-r--r-- 1 user group 0B May 20 20:03 example-3
Run Code Online (Sandbox Code Playgroud)
$ ll
total 0
drwxr-xr-x 1775 5 user group 170B …
Run Code Online (Sandbox Code Playgroud) 我有一个运行脚本的 cron 作业。当我通过交互式 shell(ssh 到 bash)运行脚本时,它工作正常。当脚本通过 cron 自行运行时,它会失败。
我的猜测是它使用了交互式 shell 中设置的一些环境变量。我将对脚本进行故障排除并删除它们。
进行更改后,我知道我可以在 cron 中将脚本排队以使其正常运行,但是有没有一种方法可以从命令行运行脚本,但告诉它像从 cron 一样运行 -即在非交互式环境中?
我在这种语法中使用 curl:
curl -o myfile.jpg http://mysite.com/myfile.jpg
如果我运行这个命令两次,我会得到两个文件:
myfile.jpg
myfile-1.jpg
Run Code Online (Sandbox Code Playgroud)
如果文件存在,我如何告诉 CURL 我希望它覆盖文件?
我不得不在大数据导入过程中重新启动。我只有一个 mysql 数据库,现在已经损坏了。
如何完全删除mysql并重新安装它?我已经尝试过apt-get purge mysql-server
,然后删除/var/lib/mysql/*
并重新安装,但apt-get
不会提示我输入根名称和密码,也不会重新创建/var/lib/mysql
文件。我怎样才能重新安装?
我有几个 Amazon EC2 服务器,我使用 Chef 来管理配置。我想设置主机名,以便默认的 bash 提示更有帮助。
现在启动新服务器后,它只是设置为:
root@ip-10-123-123-123
Run Code Online (Sandbox Code Playgroud)
由于我在这些盒子上使用 Ubuntu 12,因此我查阅了相应的手册页hostname。它有很多关于如何设置它的好信息,并谈到了主机名和 fqdn,但它并没有真正告诉我我想知道什么:
设置主机名的后果是什么?
我想假设设置主机名对于用户和系统管理员来说主要是一个方便的项目,给盒子一个面孔/好名字,这样它就可以在内部更容易识别(通过命令提示符,发送的电子邮件,等),但我并不乐观。
我没有看到/etc/hosts
文件中列出的主机名,这似乎是一个好兆头,如果更改它不会产生任何负面影响:
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Run Code Online (Sandbox Code Playgroud)
我在正确的轨道上吗?设置主机名的后果是什么?
更新
我尝试将 ec2 实例上的主机名从ip-10-123-123-123
更改为webserver
,hostname --fqdn
但不再有效。如果我把它放回去,那么它工作正常。Apache 在启动时也给我一个错误,它不能可靠地确定 fqdn。我想必须有某种方法来设置主机名而不会弄乱 fqdn。