我有一个 shell 脚本,其中有以下几行if [ -z "$xyz" ]
和if [ -n "$abc" ]
,但我不确定它们的目的是什么。谁能解释一下?
我有一个 Angstrom Linux 设备作为接入点,运行hostapd
, dhcpd
,工作正常。我可以获得连接到 Wi-Fi 的设备列表吗?我知道我可以获得 DHCP 租约,但我需要知道哪些设备通过wlan0
. 我试过这个(iwlist
有选项):
iwlist wlan0 ap
iwlist wlan0 accesspoints
iwlist wlan0 peers
Run Code Online (Sandbox Code Playgroud)
但都返回:
wlan0 Interface doesn't have a list of Peers/Access-Points
Run Code Online (Sandbox Code Playgroud)
iwconfig
,iwgetid
,iwpriv
并且iwspy
也出现在/sbin
,但好像没有选项来显示的客户名单。
所以我希望能够远程访问我的 Raspberry Pi(我把它放在家里的防火墙后面)。一种选择是使用静态 IP 地址,但作为一个穷学生,我不想花钱,而且大多数免费选项都比较麻烦(需要定期维护等)。据我了解,另一种选择是设置一个远程 SSH 隧道到我的防火墙外的服务器,这会将连接转发到服务器上指定的本地主机端口(比如 9999),然后转发到我的 Raspberry Pi 上的端口 22(通过所述远程SSH 隧道)。从广义上讲,我会遵循Raspberry Pi:使用反向远程 Ssh 隧道打电话回家,但出于不同目的。
碰巧我的大学有一个学生 Linux 服务器,我有一个 shell 帐户,所以设置所有这些应该没问题。我的问题是:鉴于学生服务器是共享的,如果它们发生在我选择的任何本地主机端口(上例中的 9999)上,任何拥有 shell 帐户的用户是否能够使用到我的 Pi 的隧道?还是只允许我使用该端口?是否有可能创建这样的限制?
显然,我并不热衷于依靠默默无闻的安全性来保护连接,而是希望它只对我可用。
我想将我所有的 14.5 TB 媒体驱动器(不是操作系统)移动到一个组合的 LVM 文件系统,因为在安排东西以适应多个较小的文件系统时经常出现问题。
我的问题是,如果设置后 6 个驱动器中的任何一个移动到不同的位置 ( /dev/sd*
),那会不会有问题?我总是根据 UUID 安装它们,但我对 LVM 的了解不够了解它如何与多个驱动器配合使用。我知道我仍然可以根据 UUID 挂载文件系统,但我想确保 LVM 不会因为查找系统的各个部分而陷入困境。
我不得不问这个,因为出于某种原因,如果我在插入 USB 驱动器的情况下重新启动,它们的sd*
字母会比某些媒体驱动器低,这会导致这些媒体驱动器仅为该启动而重新排列。
附注。我维护我的媒体的异地备份,所以我不必担心一个驱动器是否会破坏某些东西。之所以提到,是因为我对 LVM 的 Google 搜索总是有人试图说服这个人退出,因为一个问题会失去一切。
我正在尝试从字符串变量中删除字符。它对我来说sed
是这样的:
MYVAR=--23ho02123ware38384you443d34o3434ingtod38384day-%§*#sfrf
echo ${MYVAR} | sed -e 's/[a-z][a-z0-9\-]*//g'
Run Code Online (Sandbox Code Playgroud)
我得到:
--23%§*#
Run Code Online (Sandbox Code Playgroud)
这就是我要找的。该字符串应以字母开头,并且仅包含字母、数字和破折号 (-)。有没有办法通过bash
字符串替换来实现这一点?
MYVAR=${MYVAR/[a-z][a-z0-9-]*/ }
Run Code Online (Sandbox Code Playgroud)
我尝试了几种组合,但没有一个像我预期的那样工作。
我对 SSH 没有深入的了解,我对/home/XXX/.ssh/known_hosts
和/etc/ssh/ssh_known_hosts
文件之间的关系有点困惑。
有人可以解释一下吗?
来自:https : //wiki.debian.org/LSBInitScripts
在 init.d 脚本中添加这样的块: ### 开始初始化信息 # 提供:脚本名 # 必需-开始:$remote_fs $syslog # 需要停止:$remote_fs $syslog # 默认开始:2 3 4 5 # 默认停止:0 1 6 # 简短说明:在启动时启动守护进程 # 描述:启用守护进程提供的服务。 ### 结束初始化信息
这些变量也出现在来自“ssh”等脚本的 SysVinit LSB 标头上。
有谁知道这些变量?
当然,第一个问题是:我为什么要这样做。只是为了好玩!我正在学习有关 Linux 内核的更多信息,并且我有一台可以在 15 分钟内更换的虚拟机。
开始做生意,我不知道该怎么做,所以我去尝试编辑makefile(尝试学习)。所以我从路径中的makefile开始ubuntu-raring/Makefile
,它是主要的make文件;可以在此链接下找到:
还有我改为每gcc
对icc
,每g++
对icpc
,每-O2
对-O3
。结果如下:
我也按照本网站的说明进行操作:
https://help.ubuntu.com/community/Kernel/Compile
但最终,我遇到了奇怪的错误,这些错误似乎是由使用gcc
/g++
而不是icc
/引起的icpc
。例如,我在文件ubuntu-raring/include/linux/compiler-gcc.h
中得到一个错误,一些宏已经定义,而这个文件不应该被包含在首位!包含它的宏在文件中ubuntu-raring/include/linux/compiler.h
,看起来像:
#ifdef __GNUC__
#include <linux/compiler-gcc.h>
#endif
/* Intel compiler defines __GNUC__. So we will overwrite implementations
* coming from above header files here
*/
#ifdef __INTEL_COMPILER
# include <linux/compiler-intel.h>
#endif
Run Code Online (Sandbox Code Playgroud)
虽然我不明白英特尔标头上方写的评论(听起来很奇怪......为什么要定义实现然后覆盖它们?从来没有在 C++ 中这样做过!),gcc
手动删除标头的包含解决了问题,但其他问题出现了,我不知道它们是否相关。
所以现在我很困惑!我做错了什么?更改Makefile 中的每个gcc
和g++
是否足以使用不同的编译器?或者还有其他我忽略的事情需要改变吗?
感谢您的任何努力。
我在 CentOS 5 x86_64 VPS 中安装了 PostgreSQL 9.1,使用以下命令:
我指定了要安装哪个 Postgresql 版本,所以我选择 9.1,因为我想将开发环境和生产环境等同起来:
wget http://yum.pgrpms.org/9.1/redhat/rhel-5-x86_64/pgdg-centos91-9.1-4.noarch.rpm
Run Code Online (Sandbox Code Playgroud)
进而
yum install postgresql91-server
Run Code Online (Sandbox Code Playgroud)
最后
service postgresql-9.1 initdb
chkconfig postgresql-9.1 on
service postgresql-9.1 start
Run Code Online (Sandbox Code Playgroud)
完成所有这些并创建我的数据库后,我运行psql myfirstdb
并收到此警告:
Welcome to psql 8.1.23 (server 9.1.11), the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
WARNING: You are connected to a server with major version …
Run Code Online (Sandbox Code Playgroud) 我需要从基于 ARM 的 Debian 设备的存储库中找到所有可用的 Web 服务器。
我运行了以下命令,但它返回的点击次数过多(包括库等):
apt-get update
apt-cache search http server
Run Code Online (Sandbox Code Playgroud)
我应该使用更好的命令吗?