小编7_R*_*R3X的帖子

哪个 shell 解释器运行一个没有 shebang 的脚本?

假设我帐户的默认 shell 是 zsh,但我打开了终端并启动了 bash 并执行了一个名为 的脚本prac002.sh,哪个 shell 解释器将用于执行脚本,zsh 还是 bash?考虑以下示例:

papagolf@Sierra ~/My Files/My Programs/Learning/Shell % sudo cat /etc/passwd | grep papagolf
[sudo] password for papagolf: 
papagolf:x:1000:1001:Rex,,,:/home/papagolf:/usr/bin/zsh
# papagolf's default shell is zsh

papagolf@Sierra ~/My Files/My Programs/Learning/Shell % bash
# I fired up bash. (See that '%' prompt in zsh changes to '$' prompt, indicating bash.)

papagolf@Sierra:~/My Files/My Programs/Learning/Shell$ ./prac002.sh 
Enter username : Rex
Rex
# Which interpreter did it just use?
Run Code Online (Sandbox Code Playgroud)

**编辑:** 这是脚本的内容

papagolf@Sierra ~/My Files/My Programs/Learning/Shell …
Run Code Online (Sandbox Code Playgroud)

shell bash zsh shell-script shebang

23
推荐指数
2
解决办法
1万
查看次数

使用带有各种命令行参数的 rsync 时“连接意外关闭”

我想使用 .iso 将服务器上的 iso 文件复制到我的计算机上rsync。我使用了以下命令,但出了点问题,我不知道是什么。我已经检查了密钥文件和原始文件的位置。

rsync --progress -avz -e 'ssh -v -i ./.ssh/new_keys node@<ip_address>' node@<ip_address>:~/ubuntu-16.04.1-server-amd64.iso ./Downloads/Ubuntu_Server.iso
Run Code Online (Sandbox Code Playgroud)

这是通过参数创建的日志-v

OpenSSH_7.3p1 Debian-1, OpenSSL 1.0.2h  3 May 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to <ip_address> [<ip_address>] port 22.
debug1: Connection established.
debug1: identity file ./.ssh/new_keys type 3
debug1: key_load_public: No such file or directory
debug1: identity file ./.ssh/new_keys-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version …
Run Code Online (Sandbox Code Playgroud)

ssh rsync

4
推荐指数
1
解决办法
3万
查看次数

Linux 中的内存随机化

我创建了一个简单的 C 程序,每次在 GDB 中加载它时,我都会看到分配给程序指令的相同内存地址。例如,一个函数what()总是在内存位置 0x000055555555472d 加载。实际上,每次执行的堆栈都完全相同(不仅是堆栈的内容,还包括 rsp 指向的内存地址。

我知道可以通过将“/proc/sys/kernel/randomize_va_space”设置为 0 在 Linux 中禁用 ASLR,但我的 Debian 系统中的值为 2。

root@Sierra ~ % cat /proc/sys/kernel/randomize_va_space 
2
Run Code Online (Sandbox Code Playgroud)

根据我对 ASLR 的理解,这些地址应该在每次运行时随机化。我的问题是为什么会发生这种情况?我做错了什么吗?

memory stack aslr

4
推荐指数
1
解决办法
809
查看次数

编译内核时节省时间

我必须演示一个实践,我必须制作自己的模块,将此模块添加到内核的源代码并实现系统调用。我在 Ubuntu 上使用 3.16 内核,但从源代码安装内核大约需要 2 个小时。

是否可以从源代码中删除内核的某些部分(如不必要的驱动程序等)以节省时间,因为我不打算将这个新安装的内核用于常规使用?如果是,如何?

compiling kernel-modules linux-kernel

3
推荐指数
1
解决办法
378
查看次数

Linux 如何区分以读取模式打开文件和实际从中读取数据?

我创建了一个简单的文本文件并使用检查其时间戳stat,这是输出:

任何 python 脚本之前的 stat 输出

papagolf@Sierra ~/My Files/My Programs/Learning/Python % stat prac09_timestamp.txt 
  File: prac09_timestamp.txt
  Size: 10          Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d  Inode: 2485542     Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/papagolf)   Gid: ( 1001/papagolf)
Access: 2017-09-10 11:10:40.979845492 +0530
Modify: 2017-09-10 11:10:40.979845492 +0530
Change: 2017-09-10 11:10:40.979845492 +0530
 Birth: -
Run Code Online (Sandbox Code Playgroud)

然后我运行了一个 python 脚本,它只是在读取模式下打开文件。我原以为“访问”标记的时间会发生变化,但事实并非如此。

Python 脚本和运行后的 stat 输出

papagolf@Sierra ~/My Files/My Programs/Learning/Python % cat python prac09_timestamp.py 
cat: python: No such file or directory
a = open("prac09_timestamp.txt", "r") …
Run Code Online (Sandbox Code Playgroud)

python timestamps files

2
推荐指数
1
解决办法
216
查看次数