Linux 下curl的使用

一,直接在curl命令后加上网址,就可以看到网页源码,例:

curl www.sina.com

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.sina.com.cn/">here</a>.</p>
</body></html>

二,使用 -o 参数,相当于使用wget命令了

curl -o [文件名] www.sina.com

三,使用 -L 参数,curl会自动跳转到新网址

curl -L www.sina.com
会跳转到www.sina.com.cn

四,使用 -i 参数,curl会显示http response的头信息,连同网页代码一起

curl -i www.sina.com

五,使用 -v 参数,curl会显示一次通信的全过程,包括端口连接和http requested头信息

curl -v www.sina.com

如果还要更详细,可以使用下面的命令:
curl --trace output.txt www.sina.com
curl --trace-ascii output.txt www.sina.com
把信息保存到文件里面

以上信息来自
阮一峰老师的网络日志之curl网站开发指南;

一、get请求

curl -i "http://www.baidu.com"  显示全部信息

wget "http://www.baidu.com"也可以

二、post请求

curl -d "param1=value1&param2=value2" "http://www.baidu.com"

收集的nginx使用ssl模块配置HTTPS支持

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。

生成证书

可以通过以下步骤生成一个简单的证书:
首先,进入你想创建证书和私钥的目录,例如:

  1. $ cd /usr/local/nginx/conf

创建服务器私钥,命令会让你输入一个口令:

  1. $ openssl genrsa -des3 -out server.key 1024

创建签名请求的证书(CSR):

  1. $ openssl req -new -key server.key -out server.csr

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

  1. $ cp server.key server.key.org
  2. $ openssl rsa -in server.key.org -out server.key

配置nginx

最后标记证书使用上述私钥和CSR:

  1. $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

修改Nginx配置文件,让其包含新标记的证书和私钥:

  1. server {
  2.     server_name YOUR_DOMAINNAME_HERE;
  3.     listen 443;
  4.     ssl on;
  5.     ssl_certificate /usr/local/nginx/conf/server.crt;
  6.     ssl_certificate_key /usr/local/nginx/conf/server.key;
  7. }

重启nginx。
这样就可以通过以下方式访问:

https://YOUR_DOMAINNAME_HERE

另外还可以加入如下代码实现80端口重定向到443IT人乐园

  1. server {
  2. listen 80;
  3. server_name ww.centos.bz;
  4. rewrite ^(.*) https://$server_name$1 permanent;
  5. }
受信任的证书:

最近在玩 STARTSSL 感觉个人站点使用这个SSL差不多也够用了。真正商用的SSL当然也可以自行购买。

我个人是为了防止数据中间被抓走,所以用了startssl 也基本就够用了。

 

转回正题,startssl生成证书后,放到配置文件中,重启每次卡在Enter PEM pass phrase:需要输入密码

这很不方便,

网上流传办法:

这种情况可能是在设置私钥key时将密码设置写入了key文件,导致Nginx/Apache等系列服务器在启动时要求Enter PEM pass phrase。我们需要做的是剥离这个密码,利用如下OpenSSL命令生成server.key.unsecure文件:
openssl rsa -in server.key -out server.key.unsecure
如果server.key.unsecure生成成功,我们就修改Nginx配置,比如像下面这样:

# 这里是SSL的相关配置
server {
listen 443;
server_name www.example.com; # 你自己的域名
root /home/www;
ssl on;
ssl_certificate /etc/nginx/certs/server.crt;
# 修改下面这一行指向我们生成的server.key.unsecure文件
ssl_certificate_key /etc/nginx/certs/server.key.unsecure;
}
然后使用/etc/init.d/nginx restart重启Nginx,是不是发现不再提示了,整个世界清净了吧:-)

有些童鞋可能苦于VPS的配置,精简掉了OpenSSL,从而没有openssl命令,那怎么办呢?你可以不在服务器上做这个操作,把原先的key文件下载到本地客户端,然后再openssl吧。什么?Windows怎么办?没关系,Windows下有OpenSSL for Windows,没有的童鞋赶紧下载下来使用吧。

我使用startsll 他控制面板自带了解密工具。Tool Box -> Decrypt Private Key  输入之前生成的key和key的密码解密即可。

收集的scp的用法

linux之cp/scp命令+scp命令详解

名称:cp

使用权限:所有使用者

使用方式:

cp [options] source dest

cp [options] source... directory

说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。

把计

-a 尽可能将档案状态、权限等资料都照原状予以复制。

-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。

-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。

范例:

将档案 aaa 复制(已存在),并命名为 bbb :

cp aaa bbb

将所有的C语言程式拷贝至 Finished 子目录中 :

cp *.c Finished

命令:scp

不同的Linux之间copy文件常用有3种方法:

第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。

第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便。

第三种就是利用scp命令来进行文件复制。

scp是有Security的文件copy,基于ssh登录。操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令。

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root

然后会提示你输入另外那台172.19.2.75主机的root用户的登录密码,接着就开始copy了。

如果想反过来操作,把文件从远程主机copy到当前系统,也很简单。

linux之cp/scp命令+scp命令详解(转) - linmaogan - 独木★不成林 scp root@/full.tar.gz  172.19 . 2.75 : / home / root /full.tar.gz  home / daisy / full . tar . gz

linux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录;

==================
scp 命令
==================
scp 可以在 2个 linux 主机间复制文件;

命令基本格式:
scp [可选参数] file_source file_target

======
从 本地 复制到 远程
======
* 复制文件:
* 命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file

第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;
* 例子:
scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music
scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music
scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3

* 复制目录:
* 命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder

第1个指定了用户名,命令执行后需要再输入密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
* 例子:
scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/
scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/

上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录

======
从 远程 复制到 本地
======
从 远程 复制到 本地,只要将 从 本地 复制到 远程 的命令 的 后2个参数 调换顺序 即可;

例如:
scp root@www.cumt.edu.cn:/home/root/others/music /home/space/music/1.mp3
scp -r www.cumt.edu.cn:/home/root/others/ /home/space/music/

最简单的应用如下 :

scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2

[ 本地用户名 @IP 地址 :] 可以不输入 , 可能需要输入远程用户名所对应的密码 .

可能有用的几个参数 :

-v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接 , 认证 , 或是配置错误 .

-C 使能压缩选项 .

-P 选择端口 . 注意 -p 已经被 rcp 使用 .

-4 强行使用 IPV4 地址 .

-6 强行使用 IPV6 地址 .

 

注意两点:
1.如果远程服务器防火墙有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
2.使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限。

收集的nginx安装和配置含义

rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum install nginx
/usr/sbin/nginx  -v
#定义Nginx运行的用户和用户组
user www www;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

#进程文件
pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;

#工作模式与连接数上限
events
{
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 65535;
}

#设定http服务器
http
{
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓
client_max_body_size 8m; #设定请求缓
sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

#gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
gzip_types text/plain application/x-javascript text/css application/xml;
#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

upstream blog.ha97.com {
#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
server 192.168.80.121:80 weight=3;
server 192.168.80.122:80 weight=2;
server 192.168.80.123:80 weight=3;
}

#虚拟主机的配置
server
{
#监听端口
listen 80;
#域名可以有多个,用空格隔开
server_name www.ha97.com ha97.com;
index index.html index.htm index.php;
root /data/www/ha97;
location ~ .*.(php|php5)?$
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#图片缓存时间设置
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 10d;
}
#JS和CSS缓存时间设置
location ~ .*.(js|css)?$
{
expires 1h;
}
#日志格式设定
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#定义本虚拟主机的访问日志
access_log /var/log/nginx/ha97access.log access;

#对 "/" 启用反向代理
location / {
proxy_pass http://127.0.0.1:88;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以下是一些反向代理的配置,可选。
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
#设定缓存文件夹大小,大于这个值,将从upstream服务器传
}

#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。
}

#本地动静分离反向代理配置
#所有jsp的页面均交由tomcatresin处理
location ~ .(jsp|jspx|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
#所有静态文件由nginx直接读取不经过tomcat或resin
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{ expires 15d; }
location ~ .*.(js|css)?$
{ expires 1h; }
}
}

更详细的模块参数请参考:http://wiki.nginx.org/Main

windows里定时任务(crontab)的使用

window下有两种创建任务的方式

1、用添加任务计划,先写一个cmd或者bat命令,然后添加进去。

2、直接在bat或者cmd中用命令生成windows任务(最好用Schtasks ,命令详细如下)

Schtasks

安排命令和程序定期运行或在指定时间内运行。从计划表中添加和删除任务,按需要启动和停止任务,显示和更改计划任务。

schtasks create

创建新的计划任务。

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc  schedule   [ /mo  modifier]   [ /d  day]   [ /m  month[ , month...]   [ /i  IdleTime] [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate]   [ /s  computer [ /u [ domain\] user  /p  password]] [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]   /?

参数

/tn  TaskName
指定任务的名称。
/tr  TaskRun
指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名。如果忽略该路径,SchTasks.exe 将假定文件在  Systemroot\System32 目录下。
/sc  schedule
指定计划类型。有效值为 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE。

说明
MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 指定计划的时间单位。
ONCE 任务在指定的日期和时间运行一次。
ONSTART 任务在每次系统启动的时候运行。可以指定启动的日期,或下一次系统启动的时候运行任务。
ONLOGON 每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务。
ONIDLE 只要系统空闲了指定的时间,任务就运行。可以指定日期,或在下次系统空闲的时候运行任务。
/mo  modifier
指定任务在其计划类型内的运行频率。这个参数对于 MONTHLY 计划是必需的。对于 MINUTE、HOURLY、DAILY 或 WEEKLY 计划,这个参数有效,但也可选。默认值为 1。

计划类型 修饰符 说明
MINUTE 1 ~ 1439 任务每 n 分钟运行一次。
HOURLY 1 ~ 23 任务每 n 小时运行一次。
DAILY 1 ~ 365 任务每 n 天运行一次。
WEEKLY 1 ~ 52 任务每 n 周运行一次。
MONTHLY 1 ~ 12 任务每 n 月运行一次。
LASTDAY 任务在月份的最后一天运行。
FIRSTSECONDTHIRDFOURTHLAST 与  /d  day  参数共同使用,并在特定的周和天运行任务。例如,在月份的第三个周三。
/d  dirlist
指定周或月的一天。只与 WEEKLY 或 MONTHLY 计划共同使用时有效。

计划类型 日期值
WEEKLY 可选项。有效值是 MON ~ SUN 和 * (每一天)。MON 是默认值。
MONTHLY 在使用 FIRST、SECOND、THIRD、FOURTH 或 LAST 修饰符 (/mo) 时,需要 MON ~ SUN 中的某个值。1 ~ 31 是可选的,只在没有修饰符或修饰符为  1 ~ 12  类型时有效。默认值是 1 (月份的第一天)。
/m  month[ , month...]
指定一年中的一个月。有效值是 JAN ~ DEC 和 * (每个月)。 /m 参数只对于 MONTHLY 计划有效。在使用 LASTDAY 修饰符时,这个参数是必需的。否则,它是可选的,默认值是 * (每个月)。
/i  InitialPageFileSize
指定任务启动之前计算机空闲多少分钟。键入一个  1 ~ 999  之间的整数。这个参数只对于 ONIDLE 计划有效,而且是必需的。
/st  StartTime
以  HH:MM:SS  24 小时格式指定时间。默认值是命令完成时的当前本地时间。 /st  参数只对于 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 和 ONCE 计划有效。它只对于 ONCE 计划是必需的。
/sd  StartDate
以  MM/ DD/ YYYY  格式指定任务启动的日期。默认值是当前日期。 /sd  参数对于所有的计划有效,但只对于 ONCE 计划是必需的。
/ed  EndDate
指定任务计划运行的最后日期。此参数是可选的。它对于 ONCE、ONSTART、ONLOGON 或 ONIDLE 计划无效。默认情况下,计划没有结束日期。
/s  Computer
指定远程计算机的名称或 IP 地址(带有或者没有反斜杠)。默认值是本地计算机。
/u [ domain\] user
使用特定用户帐户的权限运行命令。默认情况下,使用已登录到运行 SchTasks 的计算机上的用户的权限运行命令。
/p  password
指定在  /u 参数中指定的用户帐户的密码。如果使用  /u 参数,则需要该参数。
/ru {[ Domain\] User |  "System"}
使用指定用户帐户的权限运行任务。默认情况下,使用用户登录到运行 SchTasks 的计算机上的权限运行任务。

说明
[domain\}User? 指定用户帐户。
"System" 或 "" 指定操作系统使用的 NT Authority\System 帐户。
/p  Password
指定用户帐户的密码,该用户帐户在  /u  参数中指定。如果在指定用户帐户的时候忽略了这个参数,SchTasks.exe 会提示您输入密码而且不显示键入的文本。使用 NT Authority\System 帐户权限运行的任务不需要密码,SchTasks.exe 也不会提示索要密码。
/?
在命令提示符显示帮助。

注释

  • SchTasks.exe 不验证程序文件的位置或用户帐户密码。如果没有为用户帐户输入正确的文件位置或正确的密码,任务仍然可以创建,但不会运行。另外,如果帐户的密码更改或过期,而且没有更改存储在任务中的密码,那么任务也不会运行。
  • NT Authority\System 帐户没有交互式登录权限。用户看不到以系统权限运行的程序,不能与之交互。
  • 每个任务只运行一个程序。但是,可以创建一个批处理文件来启动多个任务,然后计划一个任务来运行该批处理文件。
  • 只要创建了任务就可对其测试。使用 run 操作来测试任务,然后从 SchedLgU.txt 文件 ( Systemroot\SchedLgU.txt ) 中查阅错误。

每个计划类型的语法和范例。

schtasks create minute

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc minute   [ /mo {1 - 1439}]   [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate] [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务每 20 分钟运行一次。

下面的命令计划安全脚本 Sec.vbs 每 20 分钟运行一次。由于命令没有包含起始日期或时间,任务在命令完成 20 分钟后启动,此后每当系统运行它就每 20 分钟运行一次。请注意,安全脚本源文件位于远程计算机上,但任务在本地计算机上计划并执行。

schtasks /create /sc minute /mo 20 /tn "Security Script" /tr \\central\data\scripts\sec.vbs

作为响应,SchTasks.exe 显示一条消息来说明任务会以当前用户的权限运行并需要当前用户的密码。输入密码时,SchTasks.exe 不显示键入的文本。

 The task will be created under current logged-in user name.
Please enter the password
************ 

然后 SchTasks.exe 显示一条消息表明已计划该任务:

成功:计划任务 "Security Script" 已成功创建。查询显示命令计划的任务:

 TaskName                    Next Run Time              Status
========================= ======================== ==============
Security Script             10:50:00 AM , 4/4/2001     

schtasks create hourly

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc hourly   [ /mo {1 - 365}]   [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate] [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划命令在每小时过五分的时候运行。

下面的命令将计划 MyApp 程序从午夜过后五分钟起每小时运行一次。因为忽略了  /mo  参数,命令使用了小时计划的默认值,即每 (1) 小时。如果该命令在 12:05 A.M 之后生成,程序将在第二天才会运行。

schtasks /create /sc hourly /st 00:05:00 /tn "My App" /tr c:\apps\myapp.exe

计划命令每五小时运行一次

下面的命令计划 MyApp 程序从 2001 年 3 月的第一天起每五小时运行一次。它使用  /mo  参数来指定间隔时间,使用  /sd  参数来指定起始日期。由于命令没有指定起始时间,当前时间被用作起始时间。

schtasks /create /sc hourly /mo 5 /sd 03/01/2001 /tn "My App" /tr c:\apps\myapp.exe

schtasks create daily

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc daily   [ /mo {1 - 365}]   [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate] [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务每天运行一次

下面的范例计划 MyApp 程序在每天的 8:00 A.M. 运行一次,直到 2001 年 12 月 31 日结束。由于它忽略了  /mo  参数,所以使用默认间隔 1 来每天运行命令。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc daily /st 08:00:00 /ed 12/31/2001

计划任务每隔一天运行一次

下面的范例计划 MyApp 程序从 2001 年 12 月 31 日起每隔一天在 1:00 P.M. (13:00) 运行。命令使用  /mo  参数来指定两 (2) 天的间隔。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc daily /mo 2 /st 13:00:00 /sd 12/31/2001

schtasks create weekly

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc weekly   [ /d { MON - SUN | *}]   [ /mo {1 - 52}]   [ /st  StartTime]   [ /sd  StartDate] [ /ed  EndDate]   [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务每六周运行一次

下面的命令计划 MyApp 程序在远程计算机上每六周运行一次。该命令使用  /mo  参数来指定间隔。它也使用  /s  参数来指定远程计算机,使用  /ru  参数来计划任务以用户的 Administrator 帐户权限运行。因为忽略了  /rp  参数,SchTasks.exe 会提示用户输入 Administrator 帐户密码。

另外,因为命令是远程运行的,所以命令中所有的路径,包括到 MyApp.exe 的路径,都是指向远程计算机上的路径。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc weekly /mo 6 /s Server16 /ru Admin01

计划任务每隔一周在周五运行

下面的命令计划任务每隔一周在周五运行。它使用  /mo  参数来指定两周的间隔,使用  /d  参数来指定是一周内的哪一天。如计划任务在每个周五运行,要忽略  /mo  参数或将其设置为 1。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc weekly /mo 2 /d FRI

schtasks create monthly

语法

常规月计划语法
schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc monthly [ /mo { FIRST |  SECOND |  THIRD |  FOURTH |  LAST |  LASTDAY]   [ /d { MON -  SUN |  1 -  31} ] [ /m { JAN -  DEC[ , JAN -  DEC...] |  *}]   [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate] [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]
指定周的语法
schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc monthly   /mo { FIRST |  SECOND |  THIRD |  FOURTH |  LAST} /d { MON -  SUN}   [ /m { JAN -  DEC[ , JAN -  DEC...] |  *}]   [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate] [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]
Lastday 语法
schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc monthly   /mo LASTDAY   /m { JAN -  DEC[ , JAN -  DEC...] |  *} [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate]   [ /s  computer [ /u [ domain\] user  /p  password]] [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]
指定日期的语法
schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc monthly   /d { 1 -  31}   [ /m { JAN -  DEC[ , JAN -  DEC...] | *}] [ /st  StartTime]   [ /sd  StartDate]   [ /ed  EndDate]   [ /s  computer [ /u [ domain\] user  /p  password]] [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务在每月的第一天运行

下面的命令计划 MyApp 程序在每月的第一天运行。因为默认修饰符是 none(即:没有修饰符),默认天是第一天,默认的月份是每个月,所以该命令不需要任何其它的参数。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly

计划任务在每月的最后一天运行

下面的命令计划 MyApp 程序在每月的最后一天运行。它使用 /mo 参数指定在每月的最后一天运行程序,使用通配符 (*) 与 /m参数表明在每月的最后一天运行程序。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo lastday /m *

计划任务每三个月运行一次

下面的命令计划 MyApp 程序每三个月运行一次。.它使用 /mo 参数来指定间隔。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo 3

计划任务在每月的第二个周日运行

下面的命令计划 MyApp 程序在每月的第二个周日运行。它使用  /mo  参数指定是每月的第二周,使用  /d  参数指定天。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /mo SECOND /d SUN

计划任务在五月和六月的第 15 天运行。

下面的命令计划 MyApp 程序在五月 15 日和六月 15 日的 3:00 PM (15:00) 运行。它使用  /d  参数来指定日期,使用  /m  参数指定月份。它也使用 /st 参数来指定开始时间。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc monthly /d 15 /m MAY,JUN /st 15:00:00

schtasks create once

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc once   /st  StartTime   /sd  StartDate [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务运行一次

下面的命令计划 MyApp 程序在 2002 年 1 月 1 日午夜运行一次。它使用  /ru  参数指定以用户的 Administrator 帐户权限运行任务,使用  /rp  参数为 Administrator 帐户提供密码。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc once /st 00:00:00 /sd 01/01/2002 /ru Admin23 /rp p@ssworD1

schtasks create onstart

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc onstart   [ /sd  StartDate]   [ /s  computer [ /u [ domain\] user  /p  password]] [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务在每次系统启动的时候运行

下面的命令计划 MyApp 程序在每次系统启动的时候运行,起始日期是 2001 年 3 月 15 日。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc onstart /sd 03/15/2001

schtasks create onlogon

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc onlogon   [ /sd  StartDate]   [ /s  computer [ /u [ domain\] user  /p  password]] [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划任务在用户登录到远程计算机的时候运行

下面的命令计划批处理文件在用户(任何用户)每次登录到远程计算机上的时候运行。它使用  /s  参数指定远程计算机。因为命令是远程的,所以命令中所有的路径,包括批处理文件的路径,都指定为远程计算机上的路径。

schtasks /create /tn "Start Web Site" /tr c:\myiis\webstart.bat /sc onlogon /s Server23

schtasks create onidle

语法

schtasks  /create   /tn  TaskName   /tr  TaskRun   /sc onidle   /i IdleTime   [ /sd  StartDate] [ /s  computer [ /u [ domain\] user  /p  password]]   [ /ru {[ Domain\] User |  "System"} [ /rp  Password]]

范例

计划某项任务在计算机空闲的时候运行

下面的命令计划 MyApp 程序在计算机空闲的时候运行。它使用必需的  /i  参数指定在启动任务之前计算机必需持续空闲十分钟。

schtasks /create /tn "My App" /tr c:\apps\myapp.exe /sc onidle /i 10

Apache虚拟主机指南(注:好像是从ubuntu官网wiki摘来的)

http://wiki.ubuntu.org.cn/Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97

启用与停用站点的方法

a2ensite 站点名
a2dissite 站点名

[编辑]基于名字的(通过域名来区分)的虚拟主机

安装好apache以后默认有一个叫default的虚拟主机。新建虚拟主机时可以直接复制默认虚拟主机的配置文件,在其基础上修改新虚拟主机的配置参数。

#copy /etc/apache2/site-available/default /etc/apache2/site-available/sitename

[编辑]测试环境

  • 操作系统:Ubuntu Server 12.04 LTS
  • 测试机地址:10.39.6.59
  • 测试机域名:*.example.com

[编辑]基本配置

我们都知道,如果我们想在单台机器上设置多个域名或主机名时,我们就要用到基于名称的虚拟主机了。那么要如何进行设置呢?这就是本指南想解决的问题了。在 Ubuntu 的 /etc/apache2/ 目录下有个 Apache2 的主配置文件 apache2.conf。在该文件中我们可以看到下列字段:

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/[^.#]*(12.04版本里无[^.#]*)

这行的意思表明该文件包含了 /etc/apache2/sites-enabled/ 目录中文件名不含 "." 或 "#" 这两个字符的所有文件。而当我们列出该目录的文件时,发现只有一个 000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,不难看出该文件的文件名中并不包含 "." 或 "#"。所以这个文件当然是要被配置文件 apache2.conf 所包含的了。打开该文件,发现它其实是一个虚拟主机的配置文件,不过由于该文件中的虚拟主机为 *,所以它实际上是一个通用配置文件。如果我们要建立虚拟主机的话,那么就要把该文件改成如下所示:

<VirtualHost *:80>
ServerName www.firehare.com
ServerAdmin admin@mail.firehare.com

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

下面我们来分析一下上面这段设置中与虚拟主机有关的设置语句:

  • `NameVirtualHost :80`:表示我们要做的是一个基于名称的虚拟主机,监听的端口为80.
  • `<VirtualHost *:80> 和 </VirtualHost>`:表示在其中的是一个虚拟主机的配置。注意如果上面的字段指定了端口号,这里也要指定
  • `ServerName www.firehare.com`:设置虚拟主机的域名,www.firehare.com可以是你注册的任何域名
  • `ServerAdmin admin@mail.firehare.com`:设置该虚拟主机网管员的邮件
  • `DocumentRoot /var/www/`:设置该虚拟主机的主目录路径
  • `ErrorLog /var/log/apache2/error.log`:设置该虚拟主机的出错信息
  • `CustomLog /var/log/apache2/access.log combined`:设置该虚拟主机的访问信息

这样我们就配置了一个虚拟主机 www.firehare.com。但由于这是缺省配置,所以在 Apache2 重启之后,无论你输入 DNS 服务器中指向这个主机的任何域名,都会被导向 www.firehare.com 这个缺省配置所指向的 /var/www 这个目录的。除非该域名被其他虚拟主机配置所用,比如我们还配置了 edunuke.firehare.com 指向本机,且配置了相应的虚拟主机,这样的话,输入域名 edunuke.firehare.com 就会被对应该域名的目录中。

[编辑]进一步说明

为了说明清楚 我们再添加一个虚拟主机站点 example.com,首先到 /etc/apache2/sites-available/ 目录中建立一个文件 edunuke,编辑该文件:

<VirtualHost *:80>
ServerName edunuke.example.com
ServerAdmin edunuke@mail.example.com
DocumentRoot "/var/www/edunuke/"
ErrorLog "/var/log/apache2/edunuke_errors.log"
CustomLog "/var/log/apache2/edunuke_accesses.log" common    
</VirtualHost>

设置的具体含义同上面的相似,这是我就不再多说了。然后再运行命令:

sudo a2ensite edunuke

这样的话,虚拟主机站点 edunuke.example.com 就已经安装好了。这时你也可以在 /etc/apache2/sites-enabled/ 目录中发现多了一个到 /etc/apache2/sites-available/edunuke 的软链接。接下来就是将 Apache2 重启来使虚拟主机站点运行起来:

sudo /etc/init.d/apache2 restart  这里可以使用reload 重新加载

这样你在浏览器上输入 edunuke.example.com 的话,就会被指向 /var/www/edunuke 目录了,而输入其他指向本机的域名则都会指到缺省配置中的 /var/www 目录中。熟悉 Apache2 的朋友会问为什么这样麻烦,放在一个文件中不也是可以吗?为什么要用两个文件呢?其实很简单,因为如果我要对 edunuke 站点进行维护时,我只要运行命令:

sudo a2dissite edunuke
sudo /etc/init.d/apache2 restart

即可,这样既可以维护 edunuke 这个站点,同时还不影响其他站点的正常运行。

[编辑]高级配置

上面谈了一下简单的虚拟主机配置方法。这个基本上能满足我们大部分的需要。但如果要是安装 Zope+Plone 的话,上面的这点设置是远远不够的,由于 Zope+Plone 结构所采用的端口并非是80端口,所以我们还得做端口重定向。为了能够做这个,我们得激活 Rewrite 和 Proxy 两个模块。激活模块很简单,同站点配置目录一样,在 Apache2 中也有两个模块配置目录:mods-available 和 mods-enabled。在 mods-available 目录中的是所有可用的模块,而在 mods-enabled 目录中的则是已被安装到 Apache2 中的模块。由于在 mods-available 目录中已经有了 Rewrite 和 Proxy 模块的配置引导文件,所以只需要简单地将其安装到 Apache2 中即可。使用命令:

sudo a2enmod rewrite
sudo a2enmod proxy

然后,添加虚拟主机站点 plone.example.com,同 edunuke 站点创建相似在/etc/apache2/sites-available/ 目录中建立一个文件 plone。显然这个文件名中是没有 "." 或 "#" 这两个字符的了。然后编辑该文件:

<VirtualHost plone.example.com:80>
ServerName plone.example.com
ServerAdmin plone@mail.example.com
ErrorLog "/var/log/apache2/plone_errors.log"
CustomLog "/var/log/apache2/plone_accesses.log" common

RewriteEngine on
RewriteRule ^/(.*) http://127.0.0.1:8081/VirtualHostBase/http/plone.firehare.com:80/plone/VirtualHostRoot/$1 [L,P]

<Proxy *>
Order Deny,Allow
Deny from all
Allow from all
</Proxy>

</VirtualHost>

这样就安装好了 plone.example.com 虚拟主机站点,可以在浏览器中地址栏中输入 http://plone.example.com 就可以重定向到 Zope+Plone 站点去了。

[编辑]基于端口的虚拟主机

<VirtualHost *> DocumentRoot /var/www/work/phabricator/webroot RewriteEngine on RewriteRule ^/rsrc/(.*) - [L,QSA] RewriteRule ^/favicon.ico - [L,QSA] RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA] </VirtualHost>

ubuntu 安装LAMP和phpmyadmin(注:转载,可能不好使)

这个是我很早之前看到并使用的方法,现在使用的是lnmp,也是单独安装的,现在这个文章很可能已经不好使了!!!!

为何应该在Ubuntu上安装LAMP服务器?从事Web开发工作时,我更偏爱在不受干扰的情况下,在我那台计算机上的开发环境下进行开发。我宁愿所犯的错误大部分是别人看不到的,而不是被互联网上的所有人全看到。为了能有这种私密的开发环境,我安装了一套LAMP系统。顺便说一下,要是你对LAMP不熟悉,,它代表Linux、Apache、MySQL和php(及/或Perl)。 LAMP是互联网上最常见的Web主机托管平台之一,所以它是搭建和测试网站的出色环境之一。

遵照下面这些逐步介绍的指示说明,即可在Ubuntu 12.04(Precise Pangolin)上安装和配置LAMP。这个过程还经过了测试,在Linux Mint 13/14/15Ubuntu 12.10(Quantal Quetzal)和Ubuntu 13.04 Raring Ringtail上屡试不爽。如果你有速度相当快的宽带连接,应该用不了半小时就能搞定。

在Ubuntu上安装LAMP

Ubuntu的开发人员让人们很容易安装和配置LAMP软件包,只要借助一个终端命令。所以,打开终端窗口,让我们开始入手吧。

    1.sudo apt-get install lamp-server^

是的,你没有看错。不要漏了末尾的那个脱字符号(^)。要是少了这个脱字符号,这个命令就无法运行。就是这么神奇!

在Ubuntu上安装LAMP

apt软件包管理器现在会显示需要安装、等待确认的软件包。输入回车键,确认并继续安装。

安装LAMP软件包

下载软件包花了一点时间后,系统会提示你为MySQL的根用户设置密码。

设置MySQL根密码

输入你想用于MySQL的密码。此处不能空着。系统会提示你第二次输入,以确认密码。

确认MySQL根密码

确认密码后,apt会继续安装剩余的软件包。

剩余LAMP软件包的安装

你的LAMP安装现已完成。哇,就是这么简单!现在只剩下几个步骤来进行配置,以便你可以轻松使用系统。

测试Apache

打开Web浏览器窗口,输入地址http://localhost/。你应该会看到一个网页显示"It Works!"。

Apache可正常工作

测试php

你已确认了Apache Web服务器可正常工作,于是你应该确保所安装的php正常工作。为此,你需要在/var/www中创建一个名为testing.php的文件。你可以以根用户的身份使用常用的文本编辑器,也可以使用下面这个终端命令:

    1.echo "<?php phpinfo(); ?>" | sudo tee /var/www/testing.php

之后,你需要重新启动Apache Web服务器。

    1.sudo service apache2 restart

回到Web浏览器,输入地址http://localhost/testing.php/,你应该会看到一个网页显示关于所安装的php的信息。

php信息

搞定Apache完全合格域名

你可能已注意到来自Apache的错误信息,该信息与服务器的完全合格域名有关。

    1.apache2: Could not reliably determine the server's fully qualified domain
 2.name, using 127.0.1.1 for ServerName

这不是什么大问题,但要是该问题让你很恼心,你可以用下面这个命令来搞定它。

    1.echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

现在,重新装入Apache Web服务器。

 1.sudo service apache2 reload

你应该再也不会看到这个错误信息了。

配置MySQL

由于本教程旨在搭建一个本地Web开发环境,就需要将MySQL绑定至本地主机IP地址。默认情况下,这个地址在你的系统上应该是127.0.0.1。为了以防万一,你可以使用这些命令来确认该地址。

    1.cat /etc/hosts | grep localhost

你应该会看到类似这样的内容:

 1.127.0.0.1 localhost
 2.::1     ip6-localhost ip6-loopback

现在你应该确认你在MySQL的my.cnf文件中有正确的绑定地址。

    1.cat /etc/mysql/my.cnf | grep bind-address

你应该会看到:
       1.bind-address = 127.0.0.1

要是绑定地址与为你系统上的本地主机所设的那个地址不匹配,需要以根用户的身份编辑/etc/mysql/my.cnf,加以纠正。

安装phpMyAdmin

你不需要安装phpMyAdmin,但除非你是SQL方面的奇才,否则就需要它在MySQL数据库上处理管理任务。

你可以使用这个终端命令来安装phpMyAdmin:

1.sudo apt-get install libapache2-mod-auth-mysql phpmyadmin

系统会提示你确认你想安装软件包。按回车键,继续进行。

安装phpMyAdmin软件包

接下来会提示你选择为phpMyAdmin配置的Web服务器。这很重要!使用键盘上的箭头键,高亮显示apache2,然后使用空格间来选择它。然后按回车键,继续进行。确保点击下面这张图,以便放大浏览,看看我所描述的内容。

为Apache配置phpMyAdmin

下一个屏幕会问你是不是想为phpMyAdmin配置一个名为dbconfig-common的数据库。选择"是的",并按回车键。

为phpMyAdmin配置dbconfig-common

接下来提示你输入之前设置的MySQL根密码,那样就可以创建新数据库了。于是,输入你的MySQL根密码,按回车键。

输入MySQL根密码

下一个提示是为phpMyAdmin创建一个MySQL应用程序密码。如果你想要创建一个随机性密码,可以按回车键。我通常使用用于MySQL根密码的同一个密码。从安全性方面考虑,这么做可能不是最佳方法,但是由于这用于封闭的开发环境,所以风险可能很小。

phpMyAdmin MySQL应用程序密码

最后,系统提示你确认MySQL应用程序密码。输入与前一个步骤中一样的密码,按回车键。

确认MySQL应用程序密码

至此,安装和配置phpMyAdmin的工作已完成。

测试phpMyAdmin

最后一步就是,确保phpMyAdmin在正常运行。打开Web浏览器,输入地址 http://localhost/phpmyadmin/。你应该会看到像这样的页面。

如果打不开,建立一个链接,

Selection_001.bmp

phpMyAdmin登录屏幕

现在你应该能够以用户名root和之前创建的根密码来登录。

phpMyAdmin已登录

恭喜你,现在你已完成了在Ubuntu 12.04上安装和配置LAMP及phpMyAdmin的工作。现在,你可以开始创建本地的网站了。如果你只是在从事一个网站的开发,可以把文件放入到/var/www。请注意:/var/www归用户和用户组root所有,所以你需要以根用户身的份将文件拷贝过去,或者更改该目录的所有权及/或权限,那样就能在那里写文件了。另外,你可以进行一些另外的Apache配置,那样可以将文件保留在主目录下的某个地方。你甚至可以以那种方式搭建多个网站。

14.10升级15.04时,不能扩展到第二显示器的问题解决方法

今天将Ubuntu从9.10升级到10.04后显卡驱动遇到了点小麻烦:不能像以前那样安装Nvidia官方驱动了。据说是因为10.04自带了开源的nouveau驱动所至。因此要手动安装官方驱动先得卸载ubuntu 10.04安装时缺省提供的这个驱动。
折腾一番后安装成功,简单总结一下安装官方驱动的两个方法:手动安装和apt-get安装。
一、手动安装官方驱动和开发库
实践后发现 这篇文章 提供的办法最好:
0. 去Nvidia官方网站下载最新的驱动
这里 选择你的平台对应的驱动。
今天最新的版本是195.36.24

1. 首先将nouveau驱动放入黑名单:

Sh代码
  1. sudo vi /etc/modprobe.d/blacklist.conf

增加一行
blacklist nouveau

2. 卸载官方驱动nouveau

Sh代码
  1. sudo apt-get --purge remove xserver-xorg-video-nouveau

3. 然后重启:

Sh代码
  1. sudo reboot

重启后会发现界面很粗糙

4. 清除nvidia相关的软件(如果有的话)

Sh代码
  1. sudo apt-get --purge remove nvidia-*

5. 退出x界面进入命令行控制台:

Sh代码
  1. sudo init 3
  2. sudo service gdm stop

6. 运行安装

Sh代码
  1. sudo sh NVIDIA-Linux-x86_64-195.36.24-pkg2.run

7. 启动x界面

Sh代码
  1. sudo service gdm start

二、apt-get安装官方驱动库
手动安装这种方式在官方更新库后每次都得手动来一遍,所以最方便的还是apt-get安装

《Ubuntu Gamer》介绍了 apt-get安装最新显卡驱动到办法
对于最新的Nvidia二进制驱动:
1. 添加apt-get源
对于12.10之前的版本

Sh代码
  1. sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

13.04后的版本 

Sh代码  
  1. sudo add-apt-repository ppa:xorg-edgers/ppa  

如果出现错误
Cannot add PPA: 'ppa:xorg-edgers/ppa'.
Please check that the PPA name or format is correct.

这可能是网络(如防火墙)的原因

2. 在线安装驱动

Sh代码
  1. sudo apt-get update
  2. sudo apt-get install nvidia-current nvidia-current-modaliases nvidia-settings

13.10后不再有modaliases了 

Sh代码  
  1. sudo apt-get update  
  2. sudo apt-get install nvidia-current nvidia-settings  

3. 从事GPU开发的可能还需要装上cuda和openCL库的支持:

Sh代码
  1. sudo apt-get install nvidia-current-dev

4. 安装cudatoolkit获取相关开发工具,如nvcc
去官方网站下载安装包,略

其它:对于最新的ATI/AMD二进制驱动的apt-get安装
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install fglrx

http://article.yeeyan.org/view/163202/140715

其它常见错误:
安装重启后空屏(Blank screen),只显示鼠标。
解决办法是,设置grub:

1. 重启时按Shift键进入恢复模式(Recovery Mode),BTW:有的机器可能需要先进入BIOS,然后启动
2. 按E键修改启动参数,将quiet splash改成nomodeset
不过每次重启都要这样修改很麻烦,可以
3. 进入“系统配置”,点击“软件更新”,然后在“附加驱动”中随便选一款NVIDIA驱动,就好了

详见:
http://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it

参考:
http://www.ubuntugeek.com/howto-install-nvidia-drivers-manually-on-ubuntu-10-04-lucid-lynx.html
http://www.wretch.cc/blog/gegemini/8908293