Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

linux笔记 #16

Open
lovecn opened this issue Jan 3, 2015 · 2 comments
Open

linux笔记 #16

lovecn opened this issue Jan 3, 2015 · 2 comments

Comments

@lovecn
Copy link
Owner

lovecn commented Jan 3, 2015

linux管道符

!/bin/bash

cd /script/path
STAT=ps -ef f | grep "a.php"
if [ $? -eq 0 ];then
:
else
php /script/path/a.php &
fi
管道两侧的命令是同时执行的,并不是先执行前面一个,执行完毕后把输出交给后面的命令,所以ps的结果包含 grep "a.php"这条命令,这个命令本身就包含了a.php这个字符串

所以即使没有a.php这个进程,你通过grep依然可以执行成功,进一步说,ps之后grep任何普通字符串都可以成功

xelz@ubuntu: ~ [12:01:40]
$ ps -ef | grep any_thing_you_want ; echo $?
xelz 30076 29945 0 12:04 pts/0 00:00:00 grep --color=auto any_thing_you_want
0
解决办法

你可以再grep一次,过滤掉 grep命令本身

ps -ef f | grep 'a.php' | grep -v grep

$ useradd bob
$ mkdir -p /home/bob
$ chown -R bob.bob /home/bob

$ gpasswd -a bob sudo // 给用户有 sudo 的权限
$ passwd bob  设置一个密码,这个是作为当用户想要 sudo 去执行 root 执行的时候使用的

本地 ssh-keygen 生成一串密钥

本地 $ ssh-keygen
  /Users/bob/.ssh/some-app-server_id_rsa
  本地 $ ssh-copy-id -i .ssh/some-app-server_rsa bob@remote-server-address

配置ssh 客户端,方便以后连接服务器。

  本地 $ vim ~/.ssh/config
  Host some-app-server
    Hostname remote-server-address
    User bob
    Port 19422
    IdentityFile ~/.ssh/some-app-server_id_rsa

以后连接服务器就可以直接 $ ssh some-app-server 就可以用你的权限登录进去了。

配置 ssh 服务端

$ vi /etc/ssh/sshd_config
PasswordAuthentication no //禁止使用基于口令认证的方式登陆
PubkeyAuthentication yes //允许使用基于密钥认证的方式登陆
Port 19422 // 把 ssh 端口改成 19422 这个别固定,你可以随便用,本地要连接服务器,本地的端口得保持一致。
PermitRootLogin no // 不允许 root 远程登录

重户服务器 $ reboot 使配置生效

@lovecn
Copy link
Owner Author

lovecn commented Jun 1, 2015

GitHub上有趣的资源 http://www.jianshu.com/collection/e2a2a0073e2d

@myopensrc
Copy link

你好,你的一句 “”管道两侧的命令是同时执行的,并不是先执行前面一个,执行完毕后把输出交给后面的命令,所以ps的结果包含 grep "a.php"这条命令,这个命令本身就包含了a.php这个字符串“” 这个我有点疑问哈,管道符前一个命令的输出当做管道符后一个命令的输入,这句话没错吧。 既然这样的话,又 怎么会同时执行?同时执行的话 管道符后面的命令如何获取前一个命令的输出?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants