lovecn / lovecn.github.io

个人记录
5 stars 5 forks source link

linux笔记 #16

Open lovecn opened 9 years ago

lovecn commented 9 years ago

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 commented 9 years ago

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

myopensrc commented 9 years ago

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