Archive for linux

crontab的基本用法: $ man crontab crontab -e 编辑并生产cronbat文件,也可以直接使用crontab 文件名 添加一个写好的crontab文件。 crontab -l 查看当前用户的crontab list。 crontab -r 删除所有crontab任务。 还有一个-u指定用户。   virtualenv环境下使用crontab: * * * * * /path/to/EVN/bin/python test.py > /path/to/log/test.log 在crontab脚本中指定使用哪一个python。  

Continue

用ubuntu解压zip文件后一堆乱码, 1. 通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以)  

Continue

昨天在群里聊天的时候,有一段时间没看聊天记录,只看到他们在讨论不知道root密码,su命令不能用。我就说了句为什么要su。直接sudo不久行了么。然后发给我个命令"sudo chmod -R 777 /usr",说是执行这个命令了,sudo不能用了 ,我也没多想,直接敲上试了下。我查,果然不行了 ,然后就到网上查了一下原因以及解决方法。记录如下: 1 开机grub引导页面,按esc 或者是 shift(我在这里试了五六次,组后是不停狂按两个键,才进去的),grub启动页面时间很短,但是现在不能执行sudo命令,时间也不能修改,只有狂按了。这是为了进入recovery mode(修复模式)。 2 进入recovery mode(修复模式)之后,选择recovery mode(修复模式)并回车,下一个界面选择boot,下边有命令提示终端,我直接在里面输入命令,搞定~ 3执行的命令,这个可以多种途径。网上直接是执行: chown root:root /usr/bin/sudo chmod 4755 usr/bin/sudo 我的方法是直接 passwd root ,修改密码。保证下次不用这么麻烦了。然后reboot,重启之后在su,切换到root下执行的命令。 4 为 SUID 2 为 SGID 1 为 SBIT SUID 权限仅对二进位程序(binary program)有效; 运行者对於该程序需要具有 x 的可运行权限; 本权限仅在运行该程序的过程中有效 (run-time); 运行者将具有该程序拥有者 (owner) 的权限。

Continue

命令行下直接svn,提示未安装 ,并且给出安装方法。sudo apt-get install subversion 执行命令安装完成后,svn help查看帮助。 linux系统的使用还是很简单的,根据提示操作很方便。 以下摘自sae的svn教程: 1. 从SVN仓库中检索出代码到工作拷贝: # svn checkout https://svn.sinaapp.com/appname [workcopy] 其中workcopy是可选的,如果不写workcopy,SVN会默认将appname做为workcopy。 如果只检索某个版本: # svn checkout https://svn.sinaapp.com/appname/appversion [workcopy] 只检索某个版本的某个目录: # svn checkout https://svn.sinaapp.com/appname/appversion/folder [workcopy] 2. 向SVN仓库提交代码: # svn commit -m "here is message" 3. 将本地文件添加到工作拷贝: # svn add something 注:如果something为文件,svn会将这个文件添加到工作拷贝;如果something是目录,svn会将目录及里面的文件全添加到工作拷贝。something也可以是通配符*,这样会忽略已经添加过的文件。 4. 从工作拷贝中删除一个文件: # svn delete something 注:如果something为文件,svn会将这个文件从工作拷贝中删除;如果something是目录,svn会将目录及里面的文件全部从工作拷贝中删除。 5. 直接从SVN仓库中删除文件: # svn delete -m "delete something" https://svn.sinaapp.com/appname/appversion/something 注:可以从SVN仓库中直接删除单个文件或单个目录甚至某个版本。 6. 将一个本地项目导入到SVN仓库: 导入应用的某个版本: # svn import localdir https://svn.sinaapp.com/appname/appversion 注:要确保目前应用的appversion不冲突。 7. 查看工作拷贝中的文件或目录状态: # svn status [something] 8. 更新自己的工作拷贝: # svn update 注:从SVN仓库下载最新版本,此命令会导致本地没有提交的更改丢失,建议使用此命令前先查看一下本地拷贝状态(svn status)。 9. 取消对代码修改 取消对代码的修改分为两种情况。 第一种情况:改动没有被提交(commit)。 这种情况下,使用svn revert就能取消之前的修改。 svn revert用法如下: # svn revert [-R] something 其中something可以是(目录或文件的)相对路径也可以是绝对路径。 当something为单个文件时,直接svn revert something就行了;当something为目录时,需要加上参数-R(Recursive,递归),否则只会将something这个目录的改动。 在这种情况下也可以使用svn update命令来取消对之前的修改,但不建议使用。因为svn update会去连接仓库服务器,耗费时间。 注意:svn revert本身有固有的危险,因为它的目的是放弃未提交的修改。一旦你选择了恢复,Subversion没有方法找回未提交的修改。 第二种情况:改动已经被提交(commit)。这种情况下,用svn merge命令来进行回滚。 回滚的操作过程如下: 1). 保证我们拿到的是最新代码: svn update 假设最新版本号是28。 2). 然后找出要回滚的确切版本号: svn log [something] 假设根据svn log日志查出要回滚的版本号是25,此处的something可以是文件、目录或整个项目 如果想要更详细的了解情况,可以使用svn diff -r 28:25 [something] 3). 回滚到版本号25: svn merge -r 28:25 something 为了保险起见,再次确认回滚的结果: svn diff [something] 发现正确无误,提交。 4). 提交回滚: svn commit -m "Revert revision from r28 to r25,because of ..." 提交后版本变成了29。 将以上操作总结为三条如下: a. svn update,svn log,找到最新版本(latest revision) b. 找到自己想要回滚的版本号(rollbak revision) c. 用svn merge来回滚: svn merge -r : something 10. 查看SVN仓库日志信息: # svn log [workcopy] 查看所有本地的历史日志,如果workcopy为某文件,那么就是查看某个文件的日志信息。 查看SVN仓库所有文件的日志信息: # svn log https://svn.sinaapp.com/appname/ 这个命令会查看所有修改过的日志。 注:SAE提供的SVN服务完全支持标准SVN的所有命令,更详细的使用说明请查阅SVN官方帮助文档。 SVN命令帮助文档:http://www.subversion.org.cn/svnbook/1.4/svn.ref.html 中文完全帮助文档:http://svnbook.red-bean.com/index.zh.html

Continue

下面是从网上找的的,先记录: 在apache1.3.x中, 使用gzip来对内容进行压缩. 在新版的apache2.x里, deflate模块代替了gzip模块,用于对内容进行压缩. 查看Apache是否有deflate这个模块,目录:/etc/apache2/mods-available/ 启用这个mod:sudo a2enmod deflate 编辑deflate的配置文件: /etc/apache2/mods-available/deflate.conf 官网:http://httpd.apache.org/docs/2.0/mod/mod_deflate.html 一篇关于Apache优化的文章:http://my.oschina.net/lamp2me/blog/15317 默认Apache是所有插件都启用了,在配置文件apache2中可以看到,就不用启用了。

Continue

apt-cache show python-imaging 查看版本是最新的1.1.7 直接apt-get install python-imaging 安装成功 import Image Image.VERSION '1.1.7' 查资料可以自己下载源码编译,但是我没选择折腾。直接安装吧。 再记录一个小问题:在Ubuntu下django的settings的配置中TIME_ZONE = 'CCT'不成功,需要修改为'Asia/Shanghai'。就OK了,昨天忘记记录了。

Continue

上传到Ubuntu服务器后错误百出,报错Data truncated for column 'title' at row 1, Google搜索发现是编码不统一的问题。 查看数据库编码的方法: show variables like 'character%'; 修改/etc/mysql/my.cnf文件 找到客户端配置[client] 在下面添加 default-character-set=utf8 默认字符集为utf8 在找到[mysqld] 添加 default-character-set=utf8 默认字符集为utf8 init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行) 重启mysql服务:service mysql restart 再查看发现成为utf8了。 drop掉原来建立的数据库,新建一个utf8的: CREATE DATABASE ms_db CHARACTER SET utf8 ; 前台测试,不再报错。

Continue

ExtractionError: Can't extract file(s) to egg cache The following error occurred while trying to extract file(s) to the Python egg cache: [Errno 13] Permission denied: '/var/www/.python-eggs' The Python egg cache directory is currently set to: /var/www/.python-eggs Perhaps your account does not have write access to this directory? You can change the cache directory by setting the PYTHON_EGG_CACHE environment variable to point to an accessible directory. 解决办法: mkdir /var/www/.python-eggs chmod -R 777 /tmp/.python-eggs 设置PYTHON_EGG_CACHE环境变量 $ SetEnv PYTHON_EGG_CACHE /tmp/aaa/ ##(setenv是在cshell中用的,在bshell中用的是 export 不同的SHELL设置变量的方法很不一致: csh : set、setenv bash : set、export ksh : set、export或直接赋值 vim /etc/profile export PYTHON_EGG_CACHE=/tmp/.python-eggs source /etc/profile export PYTHON_EGG_CACHE=/tmp/.python-eggs env |grep egg chmod -R 777 /tmp/.python-eggs or # vi /root/.bashrc export PYTHON_EGG_CACHE=/tmp/.python-eggs ) 目录权限注意要是apache用户,或者简单点就777

Continue

这两个的安装都是直接命令安装, apt-get install libapache2-mod-wsgi 查看mod_wsgi是否安装成功,找文件/usr/lib/apache2/modules/mod_wsgi.so 编辑/etc/apache2/httpd.conf,加入: #  LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so   WSGIScriptAlias / "/data/web/test/mysite/apache/django.wsgi"     <Directory "/data/web/mysite">   Order Deny,Allow   Allow from all   </Directory> #那句不用写,加入以后会提示“已经载入mod_wsgi” [warn] module wsgi_module is already loaded, skipping 以后还要再配置一次,现在做个测试。主要参照官网。 Alias /robots.txt /usr/local/wsgi/static/robots.txt Alias /favicon.ico /usr/local/wsgi/static/favicon.ico AliasMatch ^/([^/]*\.css) /usr/local/wsgi/static/styles/$1 Alias /media/ /usr/local/wsgi/media/ Alias /static/ /usr/local/wsgi/static/ <Directory /usr/local/wsgi/static> Order deny,allow Allow from all </Directory> <Directory /usr/local/wsgi/media> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /usr/local/wsgi/scripts/django.wsgi <Directory /usr/local/wsgi/scripts> Order allow,deny Allow from all </Directory>   /data/web/test/mysite/apache/django.wsgi

# -*- coding: utf-8 -*-
import os
import sys

apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
apache的日志文件存放在:/var/log/apache2/目录下。

Continue

安装MySQL-python-1.2.3, 整整一晚上,查了N多网页,安装了N多的包,多不正确 。其中最有问题的是提示的错误在putty中乱码了,艹。 command 'gcc' failed with exit status 1 就看到这一句,Google了一大堆没用的。 最后发现时缺少一个python-dev,apt-get install python-dev就解决问题了。 唉,错误提示也看不出,蒙着头撞了一晚上。躺被窝里哭吧

Continue