Linux 删除文件

本文将会讲述如何在Linux系统下删除文件的方法,以及如何在命令行下删除某个文件中特定的内容行, 或者删除特定日期创建的文件或者目录。

目录如下:

Linux 删除文件命令

在CentOS,Redhat,或者Ubuntu等类Unix系统下,我们主要用来删除文件或文件夹目录的方法是通过执行rm 命令或者 unlink命令。 下面我们来看删除文件命令rm的用法介绍:

rm 命令是Unix或者Linux系统下的主要用来文件系统中删除文件的命令。 当然,在大多数的系统里, 当我们想删除一个文件的时候,需要当前用对对该文件或者目录有写或者可执行的权限。

rm 命令格式:

rm {文件名}
rm [参数] {文件名}
unlink {文件名}
rm –f –r  {文件名}

 

rm 命令参数:

-f, –force 强制删除文件, 不做任何删除操作的提示

-I, –interactive  进行交互式的删除操作

-r, -R, –recursive 将对指定目录中的所有目录或子目录进行递归性的删除

-v, –verbose 显示删除操作的详细信息

–help 显示命令的使用帮助信息

通常情况下,我们会将-r 和-f来同时使用,这样就可以删除所有指定的文件或者目录,并且没有任何的操作提示信息输出。

Linux 删除单个文件夹或目录

让我们来看一个使用rm命令删除指定文件或者目录的例子, 假如你想删除当前目录下的一个文件名为fio.txt 的文件, 执行下面的命令:

# rm fio.txt

Linux 删除多个文件

如果想通过rm命令同时删除多个文件,可以将多个文件的文件名作为rm命令的参数, 执行下面的命令来删除当前目录下的fio1.txt, fio2.txt, fio3.txt 文件:

# rm fio1.txt  fio2.txt fio3.txt

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio2.txt  fio3.txt

root@devops:~/osetc# rm fio1.txt fio2.txt fio3.txt

root@devops:~/osetc# ls
root@devops:~/osetc#

Linux 递归删除特定目录下的所有文件

如果要删除的目录里还包含了多层的子目录或者子目录依旧还有目录,那么如果想删除目录里的所有子目录和文件,这个时候我们需要使用rm命令的-rf参数,比如,如果你想删除当前目录下的fio目录,执行下面的命令:

# rm –rf fio

命令输出如下:

root@devops:~/osetc# ls fio
fio1.txt  fio2.txt  fio3.txt  subfio

root@devops:~/osetc# rm -rf fio

root@devops:~/osetc# ls fio
ls: 无法访问'fio': 没有那个文件或目录

root@devops:~/osetc#

Linux 删除文件并做删除前交互确认

如果你想在删除每个文件的时候,让系统都做出确认删除提示,那么这样可以让你不会错误的删除文件,比如要删除当前目录下的fio1.txt, 执行下面的命令:

# rm –I fio1.txt

命令输出如下:

root@devops:~/osetc# ls
fio1.txt

root@devops:~/osetc# rm -i fio1.txt
rm:是否删除普通文件 'fio1.txt'? y

root@devops:~/osetc# ls
root@devops:~/osetc#

Linux 显示删除文件时的信息

如果你想看到linux系统在删除你指定的文件或目录的时候,显示详细的处理信息,那么可以使用rm命令的-v选项,执行命令如下:

$ rm –v fio1.txt

命令输出如下:

root@devops:~/osetc# ls
fio1.txt

root@devops:~/osetc# rm -v fio1.txt
已删除'fio1.txt'

root@devops:~/osetc# ls
root@devops:~/osetc#

Linux系统下删除空目录文件

如果想删除特定目录下的,那么可以使用linux下的另一个命令rmdir, 执行下面命令:

# rmdir fio
# rmdir fio1

Linux下删除文件里的文件列表中的文件

如果某个文件里包含了很多需要删除的特定的文件路径, 那么我们可以使用rm命令并结合下xargs 命令来进行文件删除操作。

例如要删除当前目录下的fio.txt 文件中的列出的所有文件, 那么可以执行下面的命令:

# xargs rm -v < fio.txt

命令输出如下:

root@devops:~/osetc# cat fio.txt
/root/osetc/fio1/file1.txt
/root/osetc/fio1/file2.txt
/root/osetc/fio1/file3.txt

root@devops:~/osetc# xargs rm -v <fio.txt
已删除'/root/osetc/fio1/file1.txt'
已删除'/root/osetc/fio1/file2.txt'
已删除'/root/osetc/fio1/file3.txt'

注意:当你使用rm命令来删除文件的时候,千万不要运行”rm –rf / “ 命令, 因为这个命令会将linux系统的根目录下的所有文件都删除掉,这样的话,就会导致你的系统挂掉。

Linux删除文件名中以连字符或者减号开头的文件名

如果你想删除某个文件名中包含特殊字符的文件,无法直接使用rm 命令进行文件删除。 这个时候我们需要在rm命令后的加上双连字符,再跟文件名即可。 比如要删除-fio.txt文件,就可以执行下面的命令:

# rm -- -fio.txt

 Linux 通过文件的inode号删除文件

当我们在系统里看到文件名里包含乱码或者特殊字符的文件时候,如果简单的通过rm命令来删除文件的话,会失败的。 这个时候该怎么办? 我们可以通过文件唯一的inode号来进行删除操作。

我们需要结合find命令来根据文件的inode号来进行删除文件操作。

查看文件的inode

在linux系统里可以通过命令ll –i 来查看当前目录下的文件的详细信息,输出信息的第一列就是文件的inode号。 执行下面的命令:

#ll –I

命令输出如下:

root@devops:~/osetc# ll -i
总用量 16
131103 drwxr-xr-x 3 root root 4096 3月  14 22:56 ./
131073 drwx------ 6 root root 4096 3月  14 22:56 ../
262172 drwxr-xr-x 2 root root 4096 3月  14 22:57 fio1/
131106 -rw-r--r-- 1 root root   82 3月  14 22:56 fio.txt
131104 -rw-r--r-- 1 root root    5 3月  15 21:23 fio2.txt
131105 -rw-r--r-- 1 root root    5 3月  15 21:23 fio3.txt
131106 -rw-r--r-- 1 root root    5 3月  15 21:23 fio4.txt
131108 -rw-r--r-- 1 root root    5 3月  15 21:24 fio5.txt

通过find命令的delete参数进行文件删除

从上面的输出中,我们可以看到fio.txt 文件的inode号为131106, 通过执行下面的find命令并结合其-inum 参数来删除文件,执行下面的命令:

#find ./* -inum 131106 –delete

命令输出如下:

root@devops:~/osetc# find ./ -inum 131106 -delete
root@devops:~/osetc# ll -i
总用量 12
131103 drwxr-xr-x 3 root root 4096 3月  15 21:17 ./
131073 drwx------ 6 root root 4096 3月  14 22:56 ../
262172 drwxr-xr-x 2 root root 4096 3月  14 22:57 fio1/
131104 -rw-r--r-- 1 root root    5 3月  15 21:23 fio2.txt
131105 -rw-r--r-- 1 root root    5 3月  15 21:23 fio3.txt
131106 -rw-r--r-- 1 root root    5 3月  15 21:23 fio4.txt
131108 -rw-r--r-- 1 root root    5 3月  15 21:24 fio5.txt

通过find命令的exec参数并结合rm命令进行文件删除操作

我们也可以通过find命令的exec参数并结合rm删除命令来根据文件的inode号做文件的删除,执行下面的命令:

#find ./ -inum 131104 –exec rm –i {} \;

命令输出如下:

root@devops:~/osetc# find ./ -inum 131104
./fio2.txt

root@devops:~/osetc# find ./ -inum 131104 -exec rm -i {} \;
rm:是否删除普通文件 './fio2.txt'? y

root@devops:~/osetc# ll -i
总用量 24
131103 drwxr-xr-x 3 root root 4096 3月  15 21:29 ./
131073 drwx------ 6 root root 4096 3月  14 22:56 ../
262172 drwxr-xr-x 2 root root 4096 3月  14 22:57 fio1/
131105 -rw-r--r-- 1 root root    5 3月  15 21:23 fio3.txt
131106 -rw-r--r-- 1 root root    5 3月  15 21:23 fio4.txt
131108 -rw-r--r-- 1 root root    5 3月  15 21:24 fio5.txt

通过find命令并结合xargs来删除文件

当我们使用find命令查看到指定inode号的文件后,还可以结合xargs命令来进行文件的删除,执行命令如下:

# find ./ -inum 131105 |xargs rm -v

命令输出如下:

root@devops:~/osetc# find ./ -inum 131105
./fio3.txt

root@devops:~/osetc# find ./ -inum 131105 |xargs rm -v
已删除'./fio3.txt'

Linux 删除指定日期之前的文件

如果你想删除指定日期之前的所有的文件,这个时候我们需要通过linux下find命令并结合其-mtime参数进行文件的查找,在通过rm命令对查找到的文件进行删除。

执行下面的命令来查找root目录下十天之前创建或更改过的文件:

root@devops:~/osetc# find /root -mtime +10 -name "mysql-server*"
/root/mysql-server_5.7.20-1ubuntu16.04_amd64.deb-bundle.tar
/root/mysql-server_5.7.20-1ubuntu16.04_amd64.deb

下一步就可以使用rm命令对查找到的文件进行删除,执行下面的命令:

# find /root -mtime +10 -name "mysql-server*"  -exec rm -rf {} \;

当然也可以使用find命令的ctime参数。

Linux 通过rm()函数进行文件的删除

在linux系统里可以通过unlink和rmdir函数来进行文件的删除,但是rmdir函数只能删除空目录文件,所有我们需要新写一个函数来先删除目录文件下的所有文件,使其成为一个空目录,进而调用rmdir函数删除空目录。如果是普通文件的话,就可以通过unlink函数进行删除。 通过新函数rm来判断文件类型,目录文件通过rm_dir函数删除,普通文件通过unlink函数删除。

rm_dir函数如下:

//递归删除目录下的所有文件

int rm_dir(std::string dir_full_path)

{
DIR* dirp = opendir(dir_full_path.c_str());
if(!dirp)
{
return -1;
}

struct dirent *dir;
struct stat st;
while((dir = readdir(dirp)) != NULL)
{
if(strcmp(dir->d_name,".") == 0
|| strcmp(dir->d_name,"..") == 0)
{
continue;
}

std::string sub_path = dir_full_path + '/' + dir->d_name;
if(lstat(sub_path.c_str(),&st) == -1)
{
Log("rm_dir:lstat ",sub_path," error");
continue;
}
if(S_ISDIR(st.st_mode))
{
if(rm_dir(sub_path) == -1) // 如果是目录文件,递归删除
{
closedir(dirp);
return -1;
}
rmdir(sub_path.c_str());
}
else if(S_ISREG(st.st_mode))
{
unlink(sub_path.c_str());     // 如果是普通文件,则unlink
}
else
{
Log("rm_dir:st_mode ",sub_path," error");
continue;
}
}
if(rmdir(dir_full_path.c_str()) == -1)//delete dir itself.
{
closedir(dirp);
return -1;
}
closedir(dirp);
return 0;
}

Rm函数如下:

int rm(std::string file_name)
{
std::string file_path = file_name;
struct stat st;
if(lstat(file_path.c_str(),&st) == -1)
{
return -1;
}
if(S_ISREG(st.st_mode))
{
if(unlink(file_path.c_str()) == -1)
{
return -1;
}
}
else if(S_ISDIR(st.st_mode))
{
if(file_name == "." || file_name == "..")
{
return -1;
}
if(rm_dir(file_path) == -1)//删除目录下的所有文件.
{
return -1;
}
}
return 0;
}

Linux 删除文件后 空间没有释放

当Linux系统下的磁盘的使用空间达到100%后,我们肯定会对文件系统里的某些不用的文件或者比较大的日志文件进行清理,比如我们会删除apache服务的日志文件, 但是当我们通过rm命令删除掉日志文件后, 我们通过df命令查看当前磁盘的可用空间依旧没有变化,这是怎么回事呢? 为什么文件删除后,磁盘空间没有被释放?

磁盘空间没有被释放的原因如下

在Linux文件系统里,当我们通过rm命令将文件删除后,系统只会将文件的链接或者指针删除掉,但是数据并没有被从所占用的磁盘空间清除,而如果之前调用这个文件的进程依旧在运行的话,那么指针也不会被删除,因为该进行依然会写数据到该文件里,所以内核依然会认为该文件没有被删除。 所以当我们再次使用df命令查看磁盘空间的时候,空间使用率依旧没有变化。

磁盘空间没有被释放的解决方法:

其实解决办法很简单,那就是找到调用这个文件的进程,将该进程重新启动或者关闭,比如重新启动HTTP服务。当然还有万能的方法,那就是重启Linux系统。

对于不能重启系统或者进程的情况,我们可以通过对日志文件的写操作,对该文件进行重新覆盖,这样就会清空该文件所占用的存储空间。比如要清空HTTP的日志文件,我们可以执行下面的命令:

#echo “”> /tmp/access.log

Linux 删除文件恢复

通过上面的介绍,我们知道文件通过rm命令删除后,系统只是删除了执行该文件inode链接,但并没有删除文件的数据块。 我们可以通过proc文件系统来恢复删除的文件,因为每一个进程在proc文件系统里都会有一个目录和进程名字,里面会包含一个文件描述符子目录,该进程需要打开的所有文件链接都会在这个目录里。 所以当从文件系统里删除文件后,proc文件系统里依然还有一个inode的引用。

下面我们来演示将恢复删除后的/var/log/syslog 日志文件:

1# 删除日志文件/var/log/syslog, 执行下面的命令:

#rm /var/log/syslog

2# 通过lsof命令来查看进程的文件描述符和相关文件名信息,执行下面的命令:

# lsof | grep /var/log/syslog

命令输出如下:

root@devops:~/osetc# lsof | grep /var/log/syslog

lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs

Output information may be incomplete.

rsyslogd    972                syslog    5w      REG                8,1    24202    1311921 /var/log/syslog (deleted)

从上面的输出中可以看到进程的pid号为972

3# 进入proc文件系统查看进程号为972的文件描述信息,执行命令:

# ll /proc/972/fd/

命令输出如下:

root@devops:~/osetc# ll /proc/972/fd/
总用量 0
dr-x------ 2 root   root    0 3月  15 21:14 ./
dr-xr-xr-x 9 syslog syslog  0 3月  14 22:22 ../
lr-x------ 1 root   root   64 3月  15 21:14 0 -> /dev/null
l-wx------ 1 root   root   64 3月  15 21:14 1 -> /dev/null
l-wx------ 1 root   root   64 3月  15 21:14 2 -> /dev/null
lrwx------ 1 root   root   64 3月  15 21:14 3 -> socket:[13886]
lr-x------ 1 root   root   64 3月  15 21:14 4 -> /proc/kmsg
l-wx------ 1 root   root   64 3月  15 21:14  5 -> /var/log/syslog (deleted)
l-wx------ 1 root   root   64 3月  15 21:14 6 -> /var/log/auth.log
l-wx------ 1 root   root   64 3月  15 21:14 7 -> /var/log/kern.log

从输出里我们可以看到syslog文件的链接信息,可以通过head -5 命令来查看文件内容。

#head -5  /proc/972/fd/5

命令输出如下:

root@devops:~/osetc# head -5 /proc/972/fd/5
Mar 14 22:23:06 devops anacron[998]: Job `cron.daily' terminated
Mar 14 22:23:13 devops gnome-session[1826]: Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Mar 14 22:27:15 devops anacron[998]: Job `cron.weekly' started
Mar 14 22:27:15 devops anacron[2837]: Updated timestamp for job `cron.weekly' to 2018-03-14
Mar 14 22:27:20 devops anacron[998]: Job `cron.weekly' terminated

4# 执行下面的命令,恢复syslog文件

#cat  /proc/972/fd/5 >/var/log/syslog

命令输出如下:

root@devops:~/osetc# cat /proc/972/fd/5 >/var/log/syslog

root@devops:~/osetc# ls /var/log/syslog
/var/log/syslog

我们可以看到被删除后的syslog文件已经被恢复了。

也可以参考本站的另一篇文章,实现linux系统下的回收站功能,进而更方便的实现删除文件的恢复。


99%的人还阅读了:

CURL命令忽略https请求的SSL证书

在使用wget命令来获取文件的时候,我们可以使用wget命令的 –-no-check-certificate 选项来忽略证书的认证。 那么在执行curl命令是否也可以忽略SSL证书的警告信息呢。
当然是有的,我们可以在执行curl 命令的时候,使用 -k 或者 –insecure 选项,来忽略签名认证的警告。 这样就可以让curl命令执行不安全的SSL连接,进而去获取数据。
命令使用示例如下:
curl -k https://osetc.com

curl --insecure https://www.osetc.com
在php中我们通过curl来实现post 和get请求的时候,也可以忽略SSL证书的验证,大家可以参考下面的代码:
function request_by_curl($url, $post_data = '', $timeout = 30) {
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url);

    //post提交,否则get
    if ($post_data != '') {
        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    }

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
     curl_setopt($ch, CURLOPT_HEADER, false);

     //跳过SSL验证 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '0'); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '0'); 
    $file_contents = curl_exec($ch); 
    curl_close($ch); 
    return $file_contents; 
}
函数调用如下:
//$result存储返回的数据
//post 
$result = request_by_curl('http://www.xxx.com', 'username=admin&password=123'); 
//get
 $result = request_by_curl('http://www.xxx.com');

99%的人还阅读了:

Linux:用腻了 wget 或 curl,有什么更好的替代品吗?

Mac OS:终端下使用curl命令下载文件

Ubuntu 下curl安装及使用指南

Linux 下curl命令post传递表单数据

PHP中 “Fata error Call to undefined function curl_init()解决方法

本文主要讲述在Centos/RHEL linux系统下运行php时候遇到的错误 Fatal error: Call to undefined function curl_init() 的解决方法。 当你在配置完成一个LEMP(Linux,Nginx, MySQL, PHP)的web环境后,PHP在运行的时候有可能会在/var/log/nginx/error.log文件里看到下面的错误:

Fatal error: Call to undefined function curl_init()

根据错误的提示,我们可以基本判断curl扩展模块没有安装或者启用,所以接下里我们可以去执行下面的命令来检测php-curl 模块包是否安装。

Centos/RHEL 系统检测php-curl是否安装

执行下面的命令:

$ rpm -qa |grep php-curl

ubuntu 系统检测php-curl是否安装

执行下面的命令:

$ sudo dpkg -l |grep php-curl

 

如果没有安装,我们只需要安装或者开启curl module 扩展包。

Ubuntu下安装支持PHP的CURL扩展模块

执行下面的apt install 命令为php 7.x 安装curl 扩展模块:

$ sudo  apt install php-curl

命令输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
php-common php7.0-common php7.0-curl
下列【新】软件包将被安装:
php-common php-curl php7.0-common php7.0-curl
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 223 个软件包未被升级。
需要下载 880 kB 的归档。
解压缩后会消耗 4,903 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-proposed/main amd64 php-common all 1:35ubuntu6.1 [10.8 kB]
获取:2 http://mirrors.aliyun.com/ubuntu xenial-proposed/main amd64 php7.0-common amd64 7.0.25-0ubuntu0.16.04.1 [840 kB]
获取:3 http://mirrors.aliyun.com/ubuntu xenial-proposed/main amd64 php7.0-curl amd64 7.0.25-0ubuntu0.16.04.1 [27.4 kB]
获取:4 http://mirrors.aliyun.com/ubuntu xenial-proposed/main amd64 php-curl all 1:7.0+35ubuntu6.1 [1,928 B]
已下载 880 kB,耗时 3秒 (289 kB/s)
正在选中未选择的软件包 php-common。
(正在读取数据库 ... 系统当前共安装有 220903 个文件和目录。)
正准备解包 .../php-common_1%3a35ubuntu6.1_all.deb  ...
正在解包 php-common (1:35ubuntu6.1) ...
正在选中未选择的软件包 php7.0-common。
正准备解包 .../php7.0-common_7.0.25-0ubuntu0.16.04.1_amd64.deb  ...
正在解包 php7.0-common (7.0.25-0ubuntu0.16.04.1) ...
正在选中未选择的软件包 php7.0-curl。
正准备解包 .../php7.0-curl_7.0.25-0ubuntu0.16.04.1_amd64.deb  ...
正在解包 php7.0-curl (7.0.25-0ubuntu0.16.04.1) ...
正在选中未选择的软件包 php-curl。
正准备解包 .../php-curl_1%3a7.0+35ubuntu6.1_all.deb  ...
正在解包 php-curl (1:7.0+35ubuntu6.1) ...
正在设置 php-common (1:35ubuntu6.1) ...
正在设置 php7.0-common (7.0.25-0ubuntu0.16.04.1) ...
Creating config file /etc/php/7.0/mods-available/calendar.ini with new version
…
Creating config file /etc/php/7.0/mods-available/tokenizer.ini with new version
正在设置 php7.0-curl (7.0.25-0ubuntu0.16.04.1) ...
Creating config file /etc/php/7.0/mods-available/curl.ini with new version
正在设置 php-curl (1:7.0+35ubuntu6.1) ...

Centos下安装支持PHP的CURL 模块

在centos或者Redhat系统下,可以通过yum install 命令执行下面的命令来安装curl模块:

$ sudo yum install php-curl

或者执行下面的命令:

$ sudo yum install php-common

安装完php-curl 模块后,需要重启下Apache/Nginx 服务

执行下面的命令:

$ sudo service nginx restart

或者

$ sudo /etc/init.d/nginx restart

对于centos7.x 系统,执行下面命令:

$ sudo systemctl  restart nginx

 

99%的人还阅读了:

Linux:用腻了 wget 或 curl,有什么更好的替代品吗?

Mac OS:终端下使用curl命令下载文件

Ubuntu 下curl安装及使用指南

Linux 下curl命令post传递表单数据

参考地址:https://curl.haxx.se/download.html

Linux 下curl命令post传递表单数据

本文将会讲述如何在linux或者unix系统下使用cURL工具或者命令在命令行下发送post请求传递数据。 比如上传一个文件到远程的服务器的特定目录下。如何通过cURL 命令在linux命令行下创建一个post请求来上传文件。

CURL是一个可以用来从本地传递数据请求到远程服务器的非常好用的工具,可以通过多种协议(http,https,ftp等)从远程web服务器上上传或者下载所需要的文件。 可以通过cURL工具来创建post或者get 请求来创建请求或者测试不同的请求操作。

cRURL 命令post传递参数给相应表单字段

当我们只是需要传递相应的值给表单里的特定字段,我们可以使用cURL命令的–data 或者-d选项,命令格式如下:

curl -d "key=value1&key2=value2" "url"

或者

curl --data "key=value1&key2=value2" "url"

对于上述命令,如果只是通过curl post请求传递一个参数值,那么可以不适用双引号,如果是两个以上的参数就必须使用双引号扩起来。

下面我们来看一个实例:

假如我们想向一个登陆页面传递用户名和密码数据,那么我们来看看如何创建cURL post请求来发送数据。

登陆表单的数据如下:

<form  action="login" method="post">

<input type="text"  name="username"  value="user1"/>

<input type="password"  name="password"  value="123"/>

<button type="submit"  value="登陆" />

</form>

那么可以在linux命令行下执行下面的cURL命令创建一个post请求来传递相应的字段值给表单:

curl -d "username=user1&password=123" "www.test.com/login"

如果需要跟踪做了重定向的表单网页,那么需要使用-L 选项,命令如下:

curl -L -d "username=user1&password=123" "www.test.com/login"

cURL保存当前的cookie数据

如果当前已经进行了登录操作,那么可能我们需要保存下当前已经生产的cookie数据,供其它的请求操作来使用,使用curl命令以及-c 选项进行保存当前的cookie信息:

curl -c cookie -d "username=user1&password=123" "www.test.com/login"

命令执行完成后,会在当前目录下生产一个包含cookie信息的文件。

如果需要使用已有的cookie文件来进行post请求操作,那么需要使用curl 的-b选项,执行命令如下:

curl -L -b cookie -d "key3=value3" "url"

通过cURL命令上传文件

如果需要通过cURL 工具上传某个文件到相应表单,可以使用-F 选项,命令格式如下:

curl -F "data=@filename" "url"

例如你想上传一个文件到远程的服务器表单(http://www.test.com/upload),接收文件的表单参数名为img,那么我们可以执行下面的命令:

curl -F “img=@linux.gif" "http://www.test.com/upload"

如果要同时上传多个文件,可以执行下面的命令:

curl -F "img1=@linux1.gif" -F "img2=@linux2.gif" "http://www.test.com/upload"

PHP中通过cURL建立post请求获取数据

因为PHP支持curl中的库,所有可以在php中模拟curl的post请求来抓取到想要的数据。 下面我们通过curl post方式来打开特定页面并获取页面数据,代码如下:

$url = "http://localhost/test.php";
//curl post请求所需要传递的参数值
$post_data = array ("username" => "user1","key" => "test");
$ch = curl_init(); // curl post 请求操作初始化
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// post数据
curl_setopt($ch, CURLOPT_POST, 1);// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
print_r($output); //打印抓取到的页面数据

通过上面的php程序返回的数据是json格式。

更多关于curl的用法可以参看帮助文档,执行下面命令:

$ man curl

99%的人还阅读了:

Linux:用腻了 wget 或 curl,有什么更好的替代品吗?

Mac OS:终端下使用curl命令下载文件

Ubuntu 下curl安装及使用指南

Ubuntu 下curl安装及使用指南

对于linux用户,可能经常会用到curl工具从远程的服务器上通过http,https, SCP, SFTP,SMB或者其它支持的协议来下载或传输文件。 本文将会讲述如何下载到你需要的curl 程序文件,以及如何在ubuntu系统下安装curl工具,并对curl的一些常用的命令做介绍。

Curl 是什么

CURL是Linux系统下常用的功能强大的网络工具,可以通过多种协议(http,https,ftp等)从远程web服务器上上传或者下载所需要的文件。 我们可以通过curl工具来抓取网页来监控可能会遇到的问题。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。 curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。

curl 工具常用的参数如下

-a/--append 上传文件时,附加到目标文件
-A/--user-agent <string> 设置用户代理发送给服务器

- anyauth 可以使用“任何”身份验证方法

-b/--cookie <name=string/file> cookie字符串或文件读取位置

- basic 使用HTTP基本验证

-B/--use-ascii 使用ASCII /文本传输

-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中

-C/--continue-at <offset> 断点续转

-d/--data <data> HTTP POST方式传送数据

--data-ascii <data> 以ascii的方式post数据

--data-binary <data> 以二进制的方式post数据

--negotiate 使用HTTP身份验证

--digest 使用数字身份验证

--disable-eprt 禁止使用EPRT或LPRT

--disable-epsv 禁止使用EPSV

-D/--dump-header <file> 把header信息写入到该文件中

--egd-file <file> 为随机数据(SSL)设置EGD socket路径

--tcp-nodelay 使用TCP_NODELAY选项

-e/--referer 来源网址

-E/--cert <cert[:passwd]> 客户端证书文件和密码 (SSL)

--cert-type <type> 证书文件类型 (DER/PEM/ENG) (SSL)

--key <key> 私钥文件名 (SSL)

--key-type <type> 私钥文件类型 (DER/PEM/ENG) (SSL)

--pass <pass> 私钥密码 (SSL)

--engine <eng> 加密引擎使用 (SSL). "--engine list" for list

--cacert <file> CA证书 (SSL)

--capath <directory> CA目录 (made using c_rehash) to verify peer against (SSL)

--ciphers <list> SSL密码

--compressed 要求返回是压缩的形势 (using deflate or gzip)

--connect-timeout <seconds> 设置最大请求时间

--create-dirs 建立本地目录的目录层次结构

--crlf 上传是把LF转变成CRLF

-f/--fail 连接失败时不显示http错误

--ftp-create-dirs 如果远程目录不存在,创建远程目录

--ftp-method [multicwd/nocwd/singlecwd] 控制CWD的使用

--ftp-pasv 使用 PASV/EPSV 代替端口

--ftp-skip-pasv-ip 使用PASV的时候,忽略该IP地址

--ftp-ssl 尝试用 SSL/TLS 来进行ftp数据传输

--ftp-ssl-reqd 要求用 SSL/TLS 来进行ftp数据传输

-F/--form <name=content> 模拟http表单提交数据

-form-string <name=string> 模拟http表单提交数据

-g/--globoff 禁用网址序列和范围使用{}和[]

-G/--get 以get的方式来发送数据

-h/--help 帮助

-H/--header <line>自定义头信息传递给服务器

--ignore-content-length 忽略的HTTP头信息的长度

-i/--include 输出时包括protocol头信息

-I/--head 只显示文档信息

从文件中读取-j/--junk-session-cookies忽略会话Cookie

- 界面<interface>指定网络接口/地址使用

- krb4 <级别>启用与指定的安全级别krb4

-j/--junk-session-cookies 读取文件进忽略session cookie

--interface <interface> 使用指定网络接口/地址

--krb4 <level> 使用指定安全级别的krb4

-k/--insecure 允许不使用证书到SSL站点

-K/--config 指定的配置文件读取

-l/--list-only 列出ftp目录下的文件名称

--limit-rate <rate> 设置传输速度

--local-port<NUM> 强制使用本地端口号

-m/--max-time <seconds> 设置最大传输时间

--max-redirs <num> 设置最大读取的目录数

--max-filesize <bytes> 设置最大下载的文件总量

-M/--manual 显示全手动

-n/--netrc 从netrc文件中读取用户名和密码

--netrc-optional 使用 .netrc 或者 URL来覆盖-n

--ntlm 使用 HTTP NTLM 身份验证

-N/--no-buffer 禁用缓冲输出

-o/--output 把输出写到该文件中

-O/--remote-name 把输出写到该文件中,保留远程文件的文件名

-p/--proxytunnel 使用HTTP代理

--proxy-anyauth 选择任一代理身份验证方法

--proxy-basic 在代理上使用基本身份验证

--proxy-digest 在代理上使用数字身份验证

--proxy-ntlm 在代理上使用ntlm身份验证

-P/--ftp-port <address> 使用端口地址,而不是使用PASV

-Q/--quote <cmd>文件传输前,发送命令到服务器

-r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围

--range-file 读取(SSL)的随机文件

-R/--remote-time 在本地生成文件时,保留远程文件时间

--retry <num> 传输出现问题时,重试的次数

--retry-delay <seconds> 传输出现问题时,设置重试间隔时间

--retry-max-time <seconds> 传输出现问题时,设置最大重试时间

-s/--silent静音模式。不输出任何东西

-S/--show-error 显示错误

--socks4 <host[:port]> 用socks4代理给定主机和端口

--socks5 <host[:port]> 用socks5代理给定主机和端口

--stderr <file>

-t/--telnet-option <OPT=val> Telnet选项设置

--trace <file> 对指定文件进行debug

--trace-ascii <file> Like --跟踪但没有hex输出

--trace-time 跟踪/详细输出时,添加时间戳

-T/--upload-file <file> 上传文件

--url <URL> Spet URL to work with

-u/--user <user[:password]>设置服务器的用户和密码

-U/--proxy-user <user[:password]>设置代理用户名和密码

-v/--verbose

-V/--version 显示版本信息

-w/--write-out [format]什么输出完成后

-x/--proxy <host[:port]>在给定的端口上使用HTTP代理

-X/--request <command>指定什么命令

-y/--speed-time 放弃限速所要的时间。默认为30

-Y/--speed-limit 停止传输速度的限制,速度时间'秒

-z/--time-cond 传送时间设置

-0/--http1.0 使用HTTP 1.0

-1/--tlsv1 使用TLSv1(SSL)

-2/--sslv2 使用SSLv2的(SSL)

-3/--sslv3 使用的SSLv3(SSL)

--3p-quote like -Q for the source URL for 3rd party transfer

--3p-url 使用url,进行第三方传送

--3p-user 使用用户名和密码,进行第三方传送

-4/--ipv4 使用IP4

-6/--ipv6 使用IP6

-#/--progress-bar 用进度条显示当前的传送状态

ubuntu curl 安装

在ubuntu系统下最简单的curl工具安装是通过apt命令或 apt-get 命令, 执行下面的apt命令:

$sudo apt install curl

命令输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libcurl3-gnutls
下列【新】软件包将被安装:
curl
下列软件包将被升级:
libcurl3-gnutls
升级了 1 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 357 个软件包未被升级。
需要下载 138 kB/323 kB 的归档。
解压缩后会消耗 340 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-security/main amd64 curl amd64 7.47.0-1ubuntu2.5 [138 kB]
已下载 138 kB,耗时 0秒 (915 kB/s)
(正在读取数据库 ... 系统当前共安装有 185776 个文件和目录。)
正准备解包 .../libcurl3-gnutls_7.47.0-1ubuntu2.5_amd64.deb  ...
正在将 libcurl3-gnutls:amd64 (7.47.0-1ubuntu2.5) 解包到 (7.47.0-1ubuntu2.2) 上 ...
正在选中未选择的软件包 curl。
正准备解包 .../curl_7.47.0-1ubuntu2.5_amd64.deb  ...
正在解包 curl (7.47.0-1ubuntu2.5) ...
正在处理用于 libc-bin (2.23-0ubuntu9) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 libcurl3-gnutls:amd64 (7.47.0-1ubuntu2.5) ...
正在设置 curl (7.47.0-1ubuntu2.5) ...
正在处理用于 libc-bin (2.23-0ubuntu9) 的触发器 ...

当然你也可以直接从curl官方下载源码包进行安装,执行下面的wget命令来下载curl源码文件:

wget http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.52.1.orig.tar.gz

或者直接下载curl的二进制安装包,执行下面命令:

wget http://security.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.52.1-4ubuntu1.4_amd64.deb

Curl 命令GET请求

当curl命令安装完成后,我们:通过执行下面的命令来查看HTTP的header信息:

$curl -I https://www.bing.com

命令输出如下:

HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Length: 119115
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
P3P: CP="NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR IND"
Set-Cookie: SRCHD=AF=NOFORM; domain=.bing.com; expires=Thu, 23-Jan-2020 09:16:18 GMT; path=/
Set-Cookie: SRCHUID=V=2&GUID=52B6738D04434E1DA43017741146CB8F&dmnchg=1; domain=.bing.com; expires=Thu, 23-Jan-2020 09:16:18 GMT; path=/
Set-Cookie: SRCHUSR=DOB=20180123; domain=.bing.com; expires=Thu, 23-Jan-2020 09:16:18 GMT; path=/
Set-Cookie: _SS=SID=29B9E200E45061CF08A6E980E5E76063; domain=.bing.com; path=/
Strict-Transport-Security: max-age=10886400; includeSubDomains; preload
X-MSEdge-Ref: Ref A: 1FEEFC982E894C71AEC43DB3ED5118FF Ref B: BJ1EDGE0210 Ref C: 2018-01-23T09:16:18Z
Set-Cookie: _EDGE_S=F=1&SID=29B9E200E45061CF08A6E980E5E76063; path=/; httponly; domain=bing.com
Set-Cookie: _EDGE_V=1; path=/; httponly; expires=Sun, 17-Feb-2019 09:16:18 GMT; domain=bing.com
Set-Cookie: MUID=3D6BD680705A62C12D1DDD0071ED6374; path=/; expires=Sun, 17-Feb-2019 09:16:18 GMT; domain=bing.com
Set-Cookie: MUIDB=3D6BD680705A62C12D1DDD0071ED6374; path=/; httponly; expires=Sun, 17-Feb-2019 09:16:18 GMT
Date: Tue, 23 Jan 2018 09:16:17 GMT

curl显示页面的全部信息

curl -i http://www.osetc.com

命令输出如下:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
HTTP/1.1 200 OK
Date: Tue, 23 Jan 2018 09:17:38 GMT
Server: Apache/2.2.22 (Unix) PHP/5.2.17p1
X-Powered-By: PHP/5.2.17p1
Link: <http://www.osetc.com/wp-json/>; rel="https://api.w.org/"
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html lang="en-US" class="no-js no-svg">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="http://gmpg.org/xfn/11">
<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
<title>OSETC 技术网 | 专注于Linux/Unix系统技术</title>
……

 

显示GET请求的解析过程

curl -v http://www.osetc.com

ubuntu curl 下载 文件

如果你想通过curl命令来下载远程服务器上的文件,那么你需要使用-o 选项,将远程文件保存到本地,执行下面的命令:

curl -o fio.html    http://www.osetc.com/archives/20394.html

命令输出如下:

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 90306    0 90306    0     0  64524      0 --:--:--  0:00:01 --:--:-- 64550

上面的命令将会把远程服务器上的20394.html 文件下载到当前目录并保存为 fio.html.

执行下面命令来查看文件是否下载成功:

root@devops-virtual-machine:~# ls fio.html
fio.html

你也可以使用下面的命令来恢复之前断开的curl下载过程,需要使用curl命令的选线组合:-L -O -C -:

curl -L -O -C - http://www.osetc.com/fio.txt

ubuntu curl 上传文件

如果需要通过curl命令来上传文件到远程的web服务器,可以使用curl命令的 -T选项,执行命令如下:

curl -T "{文件1,文件2}“ ftp://www.osetc.com/upload/

99%的人还阅读了:

Linux:用腻了 wget 或 curl,有什么更好的替代品吗?

Mac OS:终端下使用curl命令下载文件

参考地址:https://curl.haxx.se/download.html

ubuntu 14.0 4 / 16.04 多主题美化及安装教程(Numix, Unity,Mac,Win10)

本文主要讲述如何在14.0 4 / 16.04 系统下安装配置其它样式的ubuntu主题,比如:Numix 主题,unity主题,mac主题,win10主题等。

Unity主题介绍

Unity桌面主题是ubuntu 14.04 / 16.04 系统中的默认安装主题,类似于Centos ,oracle linux中的Gnome 主题。Unity 是基于GNOME桌面环境的用户界面, 由Canonical公司开发,主要用于Ubuntu操作系统。

Ubuntu原本使用的是完整的GNOME桌面环境。由于Ubuntu创始人Mark Shuttleworth对用户体验的哲学理念与GNOME团队有不同的理解,从2011年4月的Ubuntu 11.04起,Ubuntu使用Unity作为默认的用户界面,而不采用全新的GNOME Shell。但Ubuntu可通过PPA来安装GNOME Shell 。

Unity Tweak Tool 工具介绍及安装

Unity Tweak Tool 是 Unity 主题桌面里一个配置工具,其目的是按照你的需要改变 unity桌面,例如:Compiz、外观和桌面设置,Unity Tweak Tool 让这些操作都变得简单容易。其从ubuntu 13.04 开始就已经被添加到了ubuntu软件中心。

Unity Tweak Tool 工具安装

安装也很简单,直接执行下面的命令:

$ sudo apt-get install unity-tweak-tool

命令输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7
使用'apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
unity-tweak-tool
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 230 个软件包未被升级。
需要下载 0 B/376 kB 的归档。
解压缩后会消耗 2,864 kB 的额外空间。
正在选中未选择的软件包 unity-tweak-tool。
(正在读取数据库 ... 系统当前共安装有 185609 个文件和目录。)
正准备解包 .../unity-tweak-tool_0.0.7ubuntu2_all.deb  ...
正在解包 unity-tweak-tool (0.0.7ubuntu2) ...
正在处理用于 gnome-menus (3.13.3-6ubuntu3.1) 的触发器 ...
正在处理用于 desktop-file-utils (0.22-1ubuntu5.1) 的触发器 ...
正在处理用于 bamfdaemon (0.5.3~bzr0+16.04.20160824-0ubuntu1) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 mime-support (3.59ubuntu1) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在处理用于 libglib2.0-0:amd64 (2.48.2-0ubuntu1) 的触发器 ...
正在处理用于 hicolor-icon-theme (0.15-0ubuntu1) 的触发器 ...
正在设置 unity-tweak-tool (0.0.7ubuntu2) ...

安装后的Unity Tweak Tool 工具如下图:

Unity Tweak Tool 工具安装1

 

Ubuntu Numix 主题安装(14.0 4 / 16.04)

Numix 是一个非常受欢迎的项目,Numix 发布的 GTK 主图和图标主题都受到广大 Linux 的喜爱,都非常流行,最近 Numix 宣布将发布一款运行Nitrux S.A的新Linux发行版本。下面我们会介绍Ubuntu 14.04 和 Ubuntu 16.04 下安装并更换当前主题为 Numix 主题和图标。

我们需要使用 Numix 的官方 PPA 来进行安装,执行下面的命令:

$ sudo add-apt-repository ppa:numix/ppa
$ sudo apt-get update
$ sudo apt-get install numix-gtk-theme numix-icon-theme-circle

如果还想安装 Numix 桌面提供的壁纸,执行下面命令:

$ sudo apt-get install numix-wallpaper-*

当我们将 Numix 主题和图标安装完成后,下面就来看看如何更改 Ubuntu 使用 Numix 主题。

更改当前主题为Numix主题和图标

1# 安装 Unity Tweak Tool工具

执行下面命令:

$ sudo apt-get install unity-tweak-tool

2# 打开 Unity Tweak Tool 优化工具,在 GTK + 中选择使用 Numix 主题,并在 Icons 中选择使用 Numix-Circle 系列图标。

更改当前主题为Numix主题和图标1

选好之后就可以用了,下图是更改后的 Ubuntu Numix 主题和图标的样式:

更改当前主题为Numix主题和图标1

Ubuntu mac 主题安装(14.0 4 / 16.04)

1# 更新ubuntu系统

执行下面命令:

$ sudo apt-get update
$ sudo apt-get upgrade

2# 安装unity-tweak-tool

执行下面命令:

$ sudo apt-get install unity-tweak-tool

3# 安装macbuntu 主题

sudo add-apt-repository ppa:noobslab/macbuntu
sudo apt-get update
sudo apt-get install macbuntu-os-icons-lts-v7
sudo apt-get install macbuntu-os-ithemes-lts-v7

卸载命令:

cd /usr/share/icons/mac-cursors && sudo ./uninstall-mac-cursors.sh
sudo apt-get remove macbuntu-os-icons-lts-v7 macbuntu-os-ithemes-lts-v7

4# 将面板上的 ‘Ubuntu Desktop’ 文字替换 ‘Mac’

执行下面的命令:

cd && wget -O Mac.po http://drive.noobslab.com/data/Mac/change-name-on-panel/mac.po
cd /usr/share/locale/en/LC_MESSAGES
sudo msgfmt -o unity.mo ~/Mac.po
rm ~/Mac.po

5# 语言上如果是其他非英语语言,将 /en 做相应修改,比如中文

cd && wget -O Mac.po http://drive.noobslab.com/data/Mac/change-name-on-panel/mac.po
cd /usr/share/locale/ch_ZN/LC_MESSAGES
sudo msgfmt -o unity.mo ~/Mac.po
rm ~/Mac.po

6# 恢复原来的桌面文字命令:

cd && wget -O Ubuntu.po http://drive.noobslab.com/data/Mac/change-name-on-panel/ubuntu.po
cd /usr/share/locale/en/LC_MESSAGES
sudo msgfmt -o unity.mo ~/Ubuntu.po
rm ~/Ubuntu.po

7# 启动器上苹果Logo

wget -O launcher_bfb.png http://drive.noobslab.com/data/Mac/launcher-logo/apple/launcher_bfb.png
sudo mv launcher_bfb.png /usr/share/unity/icons/

恢复图标:

wget -O launcher_bfb.png http://drive.noobslab.com/data/Mac/launcher-logo/ubuntu/launcher_bfb.png
sudo mv launcher_bfb.png /usr/share/unity/icons/

8# 安装docky,可以从Ubuntu软件中心安装。
打开Docky,进行如下设置;

为Docky添加或删除应用

9# 为Docky添加或删除应用:
右键有锁定到docky,执行即锁定。将图标直接拖出去即可删除锁定。

效果如下:

为Docky添加或删除应用

参考:http://www.cnblogs.com/liutongqing/p/7072878.html

Ubuntu Zukimac mac主题

zukimac是一款免费下载可用的 GNOME 外观,新增提供了 GTK 3.10 和 GTK 3.12 支持,也是一款Mac主题。

主题下载地址:

下载Zukimac(add_new_wm_theme)

下载Zukimac for GTK 3.10主题

下载Zukimac for GTK 3.12主题

下面来看下如何来安装主题,将下载的ubuntu主题放在themes目录下。

1# 先下载主题包;
2# 解压主题包;
3# 将解压的主题文件夹拷贝到/usr/share/themes/目录下;
4# 使用 Unity tweak tool 启用新主题。

Ubuntu Zukimac mac主题1

Ubuntu Zukimac mac主题1

图标可选择: Feanza

Ubuntu windows 10 主题安装及下载

下面分享一款类似于windows 10的ubuntu 主题包,下面是安装方法:

1# 先下载主题包;

主题包下载地址为:https://pan.baidu.com/share/init?surl=hrGw6VU  密码: atyc

Ubuntu windows 10 主题下载2

Ubuntu windows 10 主题下载2

图标包地址: https://pan.baidu.com/s/1geQ7TOR  密码:7eqw

Ubuntu iPack
2# 解压主题包;
3# 将解压的主题文件夹拷贝到/usr/share/themes/目录下;
4# 使用 Unity tweak tool 启用新主题。

Ubuntu Flatabulous主题安装

Ubuntu Flatabulous主题1

1#  Flatabulous主题安装,执行下面命令:

$ sudo add-apt-repository ppa:noobslab/themes
$ sudo apt-get update
$ sudo apt-get install flatabulous-theme

2# 安装Flatabulous主题图标

执行命令:

$ sudo add-apt-repository ppa:noobslab/icons
$ sudo apt-get update
$ sudo apt-get install ultra-flat-icons

Ubuntu Flatabulous主题 图标

3# 使用 Unity tweak tool 启用新主题

Ubuntu Flatabulous主题

如果你想下载更多其它的Ubuntu主题,可以从下面的网站中获取:

http://www.ubuntuthemes.org/

ubuntu主题下载

其安装方法和其它主题中的类似。

本文永久链接:http://www.osetc.com/archives/20472.html

 

Ubuntu 14.04 / 16.04 主题美化方法详细介绍

对于那些想要一个易于使用的界面的用户,Ubuntu是一个很好的Linux发行版,并且对于一个Linux新手也可以说是最好的Linux发行版。不过这产生了一些副作用,那就是,对于界面和外观,Canonical公司已经为用户做了很多设定,尤其是Unity桌面环境。

然而这些不是一成不变的。下面是一些关于怎样让你更加舒心地使用Ubuntu的技巧。看过上面的截图中我对Ubuntu的设定,你可以看到我的的Unity桌面,相比于默认设定的桌面有何不同。

Ubuntu 14.04 16.04 主题美化方法详细介绍

下面让我们分步来实现定制Ubuntu桌面。

1# 安装Unity Tweak Tool

在你能对Ubuntu外观做任何有效地修改之前,你不得不安装Unity Tweak Tool。这是一个Unity桌面环境下特殊设置管理软件,并且通过它你可以实现替换系统图标和主题。你可以从Ubuntu软件中心下载该软件,如果你更加偏爱terminal终端的话,你也可以使用下面的命令:

$ sudo apt-get install unity-tweak-tool

如果你正在使用Gnome桌面环境,那么你可能需要尝试Gnome Tweak Tool这款软件。你也可以从Ubuntu软件中心和使用以下命令来安装该软件:

$ sudo apt-get install gnome-tweak-tool

2# 安装GTK主题

对于Ubuntu有很多定制的主题,这些主题可以影响应用和窗口的外观。我正在使用的主题是Numix GTK+。你可以在http://numixproject.org/找到关于Numix主题和图标的更多信息。你可以通过打开终端并输入以下命令来安装Numix主题:

$ sudo add-apt-repository ppa:numix/ppa
$ sudo apt-get update && sudo apt-get install numix-gtk-theme

为了使该主题生效,我们需要打开Unity Tweak Tool,选择“外观标题”下的“主题”选项,然后在“已有主题”一栏中选择该主题。只要相应的软件仓库名字一致,对于其他主题,你可以重复该过程来应用。你可以访问Gnome-Look.org获得更多的主题。另一个和Numix主题很相似的主题是Moka,你可以在http://mokaproject.com/获得更多关于Moka主题的信息。

3# 安装图标

以上截图中使用的图标是来自Numix主题的Numix圆形图标。你可以通过在终端输入以下命令来安装该图标集:

$ sudo apt-add-repository ppa:numix/ppa
$ sudo apt-get update
$ sudo apt-get install numix-icon-theme-circle

为了使该图标集生效,我们需要在Unity Tweak Tool中选择“图标”选项,然后选择该图标集。再一次声明,这个方法对于任何图标集是可行的。Moka也提供给你的桌面带来多彩的、一致性设计的图标集。

4# 安装conky系统监视软件

Conky是一个轻量级桌面系统监视软件。该软件本身是非常简单的,不过它是可定制的,这样一来它就可以显示很多的有用的信息。你可以通过在终端输入以下命令来安装Conky:

$ sudo apt-get install conky conky-all

你将会需要curl这个软件,你可以通过以下这个命令来安装该软件:

$ sudo apt-get install curl

上面截图中使用的conky主题是Harmattan,它可以以15种不同的样式来显示时间、天气、以及系统进程。要安装该主题,你可以从deviantART下载zip文件,然后解压。将.conky-weather文件夹和位于主题文件夹的.conkyrc文件(你可能需要按Ctrl+H来显示这些隐藏文件)移动到你的home文件夹。Conky有很多的主题。尝试这些主题,你所需要做的就是用所要使用主题的.conkyrc文件替换在home文件夹的.conkyrc文件。

5# 安装一些指示器程序

有很多第三方的指示器程序,通过这些程序你可以监视你的桌面信息,例如天气、系统性能等。我所使用的指示器程序相当简单。因为天气和系统性能已经在conky中显示,所以我没有安装这些指示器。不过你可以在终端输入以下命令来安装他们:

$ sudo apt-get install indicator-weather
$ sudo apt-get install indicator-multiload

我所使用的两个指示器程序是大小写指示程序以及触摸板控制器,这是因为我的笔记本没有大小写指示灯和控制触摸板开关的热键。你可以通过以下命令来安装这两个软件:

$ sudo add-apt-repository ppa:tsbarnes/indicator-keylock
$ sudo add-apt-repository ppa:atareao/atareao
$ sudo apt-get update
$ sudo apt-get install indicator-keylock
$ sudo apt-get install touchpad-indicator

你可能需要注销并重新登录来使用这些应用。

6# 通过Compiz设置管理器深度定制你的桌面

如果对于你来说Unity Tweak Tool不够强大,那么你可以尝试Compiz设置管理器.

警告:

如果错误的设置被应用的话,Compiz设置管理器可能会损害到你的系统。所以使用时要格外小心。你可以看到Ubuntu系统中隐藏的各种设置。你可以在Ubuntu软件中心获取该软件或者终端输入以下命令来安装:

$ sudo apt-get install compiz compizconfig-settings-manager compiz-fusion-plugins-extra compiz-fusion-plugins-main compiz-plugins

现在你的Ubuntu桌面变得具有超棒了!所有的这些步骤都有成千上万种选择,所以折腾是无极限的。还在等什么?还不赶紧去享受你的新Ubuntu桌面!via:http://os.51cto.com/art/201406/442093.htm

更多阅读:ubuntu 14.0 4 / 16.04 多主题美化及安装教程(Numix, Unity,Mac,Win10)

本文永久链接:http://www.osetc.com/archives/20467.html

 

12 个最佳的免费网络监控工具

要让一个多级机构运行良好而且平稳的话,一个非常艰巨重大的任务就是做好网络管理。每个机构都配备专门的人员,即网络分析师,来进行网络管理。他们使用了许多工具来监视网络的运行状况,并查看网络流量的上升和下降状况。他们还必须确保整个网络能够平稳地运行,因为只要有一分钟的网络中断就会使得整个机构的工作出现混乱。

使得机构工作平稳运行的最重要的方式之一就是使用各种网络监视工具。使用IDS检测来自外部网络的威胁和问题,使用网络监视软件来监视由于内部服务器负载过高或者某个网络部员工的小错误而引起的问题。网络监视软件可以跟踪数据包的流向,而且它还可以对数据包活动表现异常的地方进行检测,以确定出错的地方。例如,为了检测web服务器的运行状况,网络监视软件将定期不间断地发送32位字节的ping请求,跟踪服务器是否收到了该请求并及时响应。

现有的网络监控工具可以说是数以百计,但是这些工具往往比较昂贵,因此花些时间去选购是很值得的,需要仔细研究其适用性、性能、专业性等方面的特性,需要判断的因素很多,但短时间内理解这些指标并作出选择可不是一件容易的事。因此,我们利用专业经验,建立了包括一些最佳免费网络监控工具的清单,为实现网络的安全、稳定长期运行提供帮助,以下是具体的清单列表:

1) Fiddler

Fiddler(几乎)是适用于任何平台和任何操作系统的最好的免费网络工具,并提供了一些广受欢迎的关键特性。如:性能测试、捕捉记录HTTP/HTTPs请求响应、进行web调试等很多功能.

Fiddler

2) Nagios

Nagios是另外一款在互联网上的免费网络监控工具。 它是开源的监控解决方案,它表现非凡并且持续为全球成千上万的组织提供可靠的监测。

Nagios

3) Nedi

Nedi也是一款对用户来说开源的网络监控工具。 NeDi可以在你的核心网络设备上,针对CDP, FDP和、或LLDP充分发挥潜力。它还可以包括其他网络组件, 当他们位于网络边界上,也可以工作地非常好。

4) EasyNetMonitor

一个监控你电脑本地和互联网主机之间网络的最小免费工具。开始我们的EasyNetMonitor,打开弹出菜单可以看到你电脑的网络状态信息。

免费网络监控 EasyNetMonitor 是一个小而简单易用的测试远程主机和其他网络主机之间网络到达率的工具。很简单的点击EasyNetMonitor图标就可以获得关于你本地网络和互联网主机的实时信息。

5) Microsoft Network Monitor

这个是Microsoft. Network Monitor 3.4稳定版非开发版协议分析器提供的网络监控工具。微软消息分析器替代了网络监控3.4。微软消息分析器提供最新的协议分析,比如捕捉屏幕,显示,协议消息流量分析、事件和在其他系统或应用程序消息故障排除和诊断方案方面。这是一个更强大的工具来捕获和分析协议消息。

Microsoft Network Monitor

6) Cacti

Cacti 是一个完整的网络绘图解决方案旨在利用RRDTool的数据存储和图形绘制功能。Cacti提供了一个快速的轮询器,先进的图形模板,多个数据采集方法和用户管理的开箱即用的特性。所有的封装都是为局域网内的数百台设备复杂网络的安装提供很直观的,易用的界面。

Cacti

7) Zenoss

Zenoss 的核心是为企业IT监控工具提供一些关键特性-

  • 跨平台设备性能和可用性监控
  • 高度可定制的基于web的控制台和仪表板
  • 设备探索、建模和分类
  • 三层网络拓扑图
  • 最好的数据收集
  • 错误和事件监控和管理
  • 事件分类、重复数据删除、自动清档、映射转换,和生命周期管理
  • 事件触发和通知
  • 可用性监控设备、网络、进程和服务等

8) Paessler

Paessler是一个强大的易用的网络监控软件。PRTG网络监视器运行在Windows机器的网络上,可以收集你指定的机器,软件和设备的各种统计数据。PRTG附带一个易于使用的web界面点击配置。你可以很容易地共享数据给非技术的同事和客户,包括通过现场图和自定义报告。

Paessler

9) Bandwidthd

BandwidthD可以跟踪使用TCP / IP网络的子网和构建html文件图表显示的利用率。

Bandwidthd

10) Icinga

Icinga是一个处理多服务,多设备以及它们之间复杂依赖关系的网络监控工具。不需要进行复杂的安装或维护监测系统。

11) The Dude

The Dude 网络监控是由 MikroTik 提供的新的应用程序,可以大大提高你的管理您的网络环境。它会自动扫描指定的子网内的所有设备,绘制地图和布局你的网络,监控服务的设备和提醒你,以防一些服务问题。

The Dude

12) Total Network Monitor

Total Network Monitor 是一个为持续监控本地网络,个人电脑以及需要细心观察和深入控制的服务提供的免费网络监控软件。

Total Network Monitor

参考:http://os.51cto.com/art/201502/464662.htm

 

Windows/Mac/Linux下U 盘安装Ubuntu(14.04/16.04/17.04)图文教程

本文将会讲述如何在三种不同的系统下(Windows, Mac, Linux) 通过U盘安装指定的Ubuntu Linux 双系统,该教程适用于ubuntu 14.04, 16.04 和17.04 版本。

网上的大部分ubuntu安装教程,主要是在虚拟化软件vmware workstation 或者virtual box下安装ubunt linux虚机,但如果想在当前的windows系统,苹果的mac系统,或者其它Linux系统下安装另一个ubuntu 系统,即在当前计算机上安装双系统。 当我们下载完ISO安装文件后,我们需要将该文件压制到光盘上,并通过DVD光驱来安装系统。

现在DVD光驱越来越少使用了,那么我如何在没有DVD光驱硬件的前提下,如何来安装ubuntu系统呢?我们可以通过制作Ubuntu安装U盘的方式来安装ubuntu双系统。

Ubuntu iso 镜像文件下载

因为Ubuntu系统是一个免费的Linux发型版本,所有我们可以直接去Ubuntu的官方网站去下载你所需要的安装包。其下载地址如下:

Ubuntu Iso镜像文件官方下载地址:

Ubuntu 16.04 LTS 长期支持版本 64位:http://releases.ubuntu.com/16.04/ubuntu-16.04.3-desktop-amd64.iso
Ubuntu 16.04 LTS 长期支持版本 32位: http://releases.ubuntu.com/16.04/ubuntu-16.04.3-desktop-i386.iso
Ubuntu 17.04 版本 64位:http://releases.ubuntu.com/17.04/ubuntu-17.04-desktop-amd64.iso
Ubuntu 17.04 版本32位:http://releases.ubuntu.com/17.04/ubuntu-17.04-desktop-i386.iso
Ubuntu 14.04 LTS 长期支持版本 64位:http://mirrors.163.com/ubuntu-releases/14.04.5/ubuntu-14.04.5-desktop-amd64.iso
Ubuntu 14.04 LTS 长期支持版本 32位: http://mirrors.163.com/ubuntu-releases/14.04.5/ubuntu-14.04.5-desktop-i386.iso

如果你想下载更多其他版本的ubuntu安装包,可以去ubuntu官方下载(由于官方提供的下载地址,iso镜像服务器可能都在国外,所以下载速度可能会比较慢)或者去163镜像官方站去下载不同的版本号的安装包, 地址为:http://mirrors.163.com/ubuntu-releases/  , 也可以去中科院开源镜像站,地址为:http://mirrors.opencas.org/ubuntu-releases/ , 这两个站的下载速度都还不错。

制作Ubuntu 安装U

当下载完Ubuntu 安装镜像文件后,我们就需要开始制作Ubuntu系统安装U盘。下面我们来分别介绍三种不同的系统下制作Ubuntu系统U盘的方法。

一、在windows系统下制作Ubuntu 安装U盘

首先我们需要下载一个U盘系统制作工具Universal USB Installer, 该工具是Windows系统下制作Linux安装U盘非常流行和常用的一个工具,支持当前主流的Linux发行版,当然也支持Ubuntu。

1# 下载Universal USB installer

下载地址为:https://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer-1.9.7.9.exe

2# 安装刚才下载Universal USB installer工具

安装Universal USB installer1

3# 点击“I Agree

安装Universal USB installer1

4# 在上图中的”Step1” 下拉列表里选择”Ubuntu”, 在”Step2”部分,点击“Browse” ,选择你要安装ubuntu系统ISO镜像文件。在“Step3”的下拉列表里选择u盘的驱动符。然后点击“create” 即可

安装Universal USB installer1

二、在Mac系统下制作Ubuntu 安装U盘

在苹果的Mac系统下制作ubuntu 安装U盘工具,只需要在命令行下操作即可。

1# 下载ubuntu ISO镜像文件到本地

2# 切换到存放镜像文件的目录

cd ~/Ubuntu-download-dir

3# 转换ISO镜像文件为苹果Mac系统识别的dmg格式

hdiutil convert -format UDRW -o ubuntu.iso ubuntu-16.04-desktop-amd64.iso

该命令执行完毕后,会成一个一个扩展名为dmg格式的文件。重命名改名为以iso为扩展名

mv Ubuntu.iso.dmg Ubuntu.iso

4# 插入U盘

执行diskutil list命令查看u盘的挂载点,比如为:/dev/diskN

diskutil list

5# 将Ubuntu 镜像文件写入到U盘

sudo dd if=./Ubuntu.iso  of=/dev/rdiskN bs=1m

6# 弹出制作好的ubuntu安装U盘

diskutil  eject /dev/diskN

在Mac系统下制作Ubuntu 安装U盘

三、在Linux系统下制作Ubuntu 安装U盘

Linux 系统下制作Ubuntu 安装U盘方法可以Mac系统类似。

1# 下载ubuntu ISO镜像文件到本地

2# 切换到存放镜像文件的目录

cd ~/Ubuntu-download-dir

3# 插入U盘

执行fdisk -l命令查看u盘的挂载点,比如为:/dev/diskN

5# 将Ubuntu 镜像文件写入到U盘

sudo dd if=./ ubuntu-16.04-desktop-amd64.iso  of=/dev/rdiskN  bs=1m

6# 弹出制作好的ubuntu安装U盘

diskutil  eject /dev/diskN

通过U盘安装Ubuntu 系统 (14.04/ 16.04/ 17.04)

当我们制作完ubuntu安装U盘后,就可以开始安装系统了。

1# 在进行U盘安装系统之前,我们还需要设置BIOS选项,因为默认的是硬盘启动,因此我们需要进行设置为U盘启动。 如下图:

通过U盘安装Ubuntu 系统1

2# 插入U盘,重启系统。此时,系统会通过U盘引导安装Ubuntu系统,如下图。

Ubuntu 安装教程

之后的ubuntu系统安装步骤请参考文章:http://www.osetc.com/archives/20310.html

3# EasyBCD 创建启动系统

a)下载并安装EasyBCD,此软件用于在启动电脑的时候显示要选择启动的系统(windows 或ubuntu)

下载地址为:http://huajun1.onlinedown.net/down/EasyBCD2.3.zip

b) 打开easyBCD,选择add new entry, 选择linux/BSD, 输入name,比如:ubuntu 16.04; Device这一行选择我们创建分区时候创建的”/boot“分区,前边有linux标记的。

EasyBCD 创建启动系统

4# 再次重新启动系统,在引导界面,选择”ubuntu 16.04”,就可以进入ubuntu系统了。

ubuntu 系统启动

ubuntu 系统启动

U盘通过ks.cfg无人值守安装Ubuntu系统

1#把镜像文件ubuntu-16.04-desktop-amd64.iso写入U盘

2# 创建一个kickstart 文件,放入到nfs服务器上或者U盘里
3# 修改U盘中syslinux目录下syslinux.cfg文件

DEFAULT install
 LABEL install
 menu label ^Install Ubuntu
 menu default
 kernel /install/amd64/linux
 append ks=/ks.cfg vga=normal initrd=/install/amd64/initrd.gz quiet --

4# 重启机器设置U盘引导,即可开始U盘无人值守安装。

可以参照下面的Ubuntu kickstart 文件:

install
text
lang en_US
langsupport en_US
keyboard us
mouse
timezone --utc Asia/Chongqing
rootpw --disabled
user tdt --fullname="myubuntu1604" --password  123456
reboot
bootloader --location=mbr
zerombr yes
clearpart --all --initlabel
part /boot --fstype ext4 --size 200
part swap --size 1024
part / --fstype ext4 --size 1 --grow
auth --useshadow --enablemd5
network --bootproto=dhcp --device=eth0
firewall --disabled
skipx
%packages
penssh-server
openssh-client
nfs-kernel-server
vim

ubuntu u盘安装常见问题

问题1:U盘安装Ubuntu15.04 出现boot failed: please change disks and press a key to continue 错误

问题描述: 用Ultraiso制作了一个Ubuntu15.04的U盘启动盘,在装系统的时候提示如下错误:

boot failed: please change disks and press a key to continue
 Start booting from USB deviceing……

后来发现是由于ubuntu使用了最新的syslinux版本,而大多U盘刻录软件还未支持最新的syslinux版本导致u盘无法启动。解决方法:使用另一个刻录软件Win32 Disk Imager ,重新制作可U盘启动盘,就可以成功安装了。

Win32 Disk Imager的使用方法:

问题2: U盘安装Ubuntu的gfxboot.32错误处理方法

解决方法: https://jingyan.baidu.com/article/dca1fa6f625942f1a44052dd.html

问题3:U盘安装Ubuntu Kylin 15.4 [解决Failed to load ldlinux.c32问题]

问题描述:一开始用UltraISO.exe 、Win32DiskImager、Windows 7 USB DVD Download Tool、PowerISO6_V6.2.0.0都不行。大白菜等工具在制作U盘启动盘的时候,实际上也是使用的 UltraISO。

启动的时候如果不开启UEFI,则会提示:

 Failed to load ldlinux.c32
 Boot failed: please change disks and press a key to continue.

或者根本就什么也不提示,干脆识别不到U盘中的引导文件。

如果开启UEFI,不管用什么方式制作的U盘启动盘,也是不管不顾提示找不到硬件。

解决方法: 使用Universal-USB-Installer 工具

下载地址为:https://www.pendrivelinux.com/downloads/Universal-USB-Installer/Universal-USB-Installer-1.9.7.9.exe

本文永久链接:http://www.osetc.com/archives/20442.html

 

 

 

Ubuntu 下安装MySQL 5.6/5.7数据库教程(14.04/16.04)

本文将会讲述在ubuntu 系统下安装及配置MySQL 5.6/5.7 数据库的方法。本文主要通过两种方法来讲述mysql数据库的安装,一种是通过apt-get命令,另一种是源码包编译安装。(以ubuntu 16.04 为示例)

MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合[3]  。-摘自百度百科

Ubuntu安装 MySQL 5.6 数据库(14.04/16.04)

方法一:通过apt-get 命令安装指定版本MySQL 5.6

对于ubuntu16.04 的系统,默认软件源的mysql版本是5.7, 所以如果想安装指定版本的MySQL 5.6,会提示“E:软件包 mysql-server-5.6 没有安装候选”

$ sudo apt-get install mysql-server-5.6

输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
没有可用的软件包 mysql-server-5.6,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
然而下列软件包会取代它:
percona-xtradb-cluster-server-5.6:i386 percona-server-server-5.6:i386
percona-xtradb-cluster-server-5.6 percona-server-server-5.6
mysql-testsuite-5.7:i386 mariadb-server-10.0:i386 mysql-testsuite-5.7
mariadb-server-10.0 mysql-server-core-5.7:i386 mysql-server-5.7:i386
mysql-server-core-5.7 mysql-server-5.7
E: 软件包 mysql-server-5.6 没有可安装候选

如果要在ubuntu 16.04 系统下安装指定版本的mysql 数据库,可以参照下面的步骤:

1# 增加旧的repo

执行下面命令:

$ sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'

2# 更新源

$ apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中7 http://dl.google.com/linux/chrome/deb stable Release
命中:9 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
忽略:10 http://archive.ubuntu.com/ubuntu trusty InRelease
获取:11 http://archive.ubuntu.com/ubuntu trusty Release [58.5 kB]
获取:12 http://archive.ubuntu.com/ubuntu trusty Release.gpg [933 B]
获取:13 http://archive.ubuntu.com/ubuntu trusty/main amd64 Packages [1,350 kB]
获取:14 http://archive.ubuntu.com/ubuntu trusty/main i386 Packages [1,348 kB]
已下载 2,758 kB,耗时 4分 35秒 (10.0 kB/s)
正在读取软件包列表... 完成

3# 查看软件源里时候有mysql 5.6 可供安装

$ apt-cache search mysql | grep 5.6

命令输出如下:

percona-server-server-5.6 - Percona Server database server binaries
percona-server-test-5.6 - Percona Server database test suite
percona-xtradb-cluster-server-5.6 - Percona XtraDB Cluster database server binaries
mysql-client-5.6 - MySQL database client binaries
mysql-client-core-5.6 - MySQL database core client binaries
mysql-common-5.6 - MySQL 5.6 specific common files, e.g. /etc/mysql/conf.d/my-5.6.cnf
mysql-server-5.6 - MySQL database server binaries and system database setup
mysql-server-core-5.6 - MySQL database server binaries
mysql-source-5.6 - MySQL source
mysql-testsuite-5.6 - MySQL 5.6 testsuite

4# 安装MySQL 5.6 数据库

执行下面的命令:

$ sudo apt-get install mysql-server-5.6 mysql-client-5.6

对于ubuntu 14.04 系统(英文该系统默认的最新的MySQL版本是5.6),只需要执行下面的命令安装即可:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt-get install mysql-server mysql-client

方法二:通过MySQL.tar.gz 二进制包安装方式

1# 下载MySQL 5.6 二进制包

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
$ mv mysql-5.6.33-linux-glibc2.5-x86_64  /usr/local/mysql

2# MySQL创建数据日志目录和用户

a) 创建mysql目录

mkdir -p /mysql/data   #数据目录
mkdir -p /mysql/log      #日志目录

b) 创建MySQL用户

$ groupadd mysql
$ useradd -r -g mysql mysql

3# 创建my.cnf

创建my.cnf文件的目的主要是为了初始化时要用到它里面的一些配置

vim /etc/my.cnf

保存退出。

注意:如果系统中其它目录下还存在my.cnf文件请删除,可以用find查找一下

4# 安装相关软件包并初始化MySQL

a) 安装插件

$  sudo apt-get install libaio1

b) 初始化MySQL

执行下面命令:

$sudo  scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/mysql/data  --innodb_undo_tablespaces=3 --explicit_defaults_for_timestamp
$ sudo chown -R mysql:mysql /mysql/ usr/local/mysql

5#配置mysql启动服务

$ sudo cp support-files/mysql.server /etc/init.d/mysql
$ sudo chmod +x /etc/init.d/mysql

6# MySQL配置环境变量

$ sudo vim /etc/profile

加入下面的配置行

export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile

7# 启动MySQL 服务

$ service mysql start

Ubuntu安装MySQL 5.7 数据库(14.04/16.04)

方法一:通过apt-get 命令安装MySQL

当前最新的MySQL 版本是5.7, 接下来将会讲述如何使用apt-get 命令来安装MySQL 5.7.

1# 更新当前的系统

执行命令:

$ sudo apt update
$ sudo apt upgrade

2# 在ubuntu 16.4 系统上安装MySQL 5.7

执行下面命令:

$ sudo apt-get install mysql-server mysql-client

命令输出如下:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
libterm-readkey-perl mysql-client-5.7 mysql-client-core-5.7 mysql-common
mysql-server-5.7 mysql-server-core-5.7
Suggsted packages:
libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl
libipc-sharedcache-perl mailx tinyca
The following NEW packages will be installed:
libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
libterm-readkey-perl mysql-client mysql-client-5.7 mysql-client-core-5.7
mysql-common mysql-server mysql-server-5.7 mysql-server-core-5.7
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 21.7 MB of archives.
After this operation, 155 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

在运行过程中,需要你输入mysql root的密码。

3#  执行mysql_secure_installation  命令来增强mysql的安全性

$ sudo mysql_secure_installation

mysql_secure_installation命令会要求你更改root的密码,并且禁用或删除MySQL服务器中的匿名用户,关闭MySQL root用户远程登录权限,删除测试数据库,并重新加载授权表的系统。如果你已经完成了所有的步骤,那么MySQL安装将会是比较安全的。

方法二:通过MySQL.tar.gz 二进制包安装方式

1# 下载和解压MySQL 5.7 数据库二进制安装包

执行下面命令:

$ sudo wget https://downloads.mysql.com/archives/get/file/mysql-5.7.4-m14-linux-glibc2.5-x86_64.tar.gz$ sudo tar -xvf mysql-5.7.4-m14-linux-glibc2.5-x86_64.tar.gz -C /usr/local/mysql-5.7.4

2# 创建mysql用户和修改软件的权限

$ sudo useradd -r -M -s /sbin/nologin mysql
$ sudo chown -R mysql  /usr/local/mysql-5.7.4
$ sudo chgrp -R mysql /usr/local/mysql-5.7.4

3# 安装和初始化数据库

$ sudo cd /usr/local/mysql-5.7.4/
$ sudo scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql-5.7.4/ --datadir=/usr/local/mysql-5.7.4/data/            --必须在mysql根目录安装mysql,否则出错
$ sudo cp -a ../support-files/my-default.cnf  /etc/my.cnf
$ sudo cp -a ../support-files/mysql.server  /etc/init.d/mysqld
$ sudo cd bin/
$ sudo./mysqld_safe --user=mysql &
chkconfig  --add mysql

4# 启动MySQL 服务

$ sudo /etc/init.d/mysqld restart
 Shutting down MySQL..                                      [  OK  ]
 Starting MySQL...                                             [  OK  ]

Ubuntu通过deb包安装MySQL 5.7 (14.04/16.04) (ubuntu离线安装mysql 5.7)

当前最新的MySQL版本是5.7.20, 下面我们来看看如何通过安装deb包的方式来安装最新的MySQL 5.7 数据库。
1# 官方下载最新的MySQL 5.7.20 deb-bundle 包

执行下面命令:

$ sudo wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.20-1ubuntu16.04_amd64.deb-bundle.tar

2# 解压缩上面下载的mysql deb-bundle 包

$ sudo tar -xvf mysql-server_5.7.20-1ubuntu16.04_amd64.deb-bundle.tar
mysql-client_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-source_5.7.20-1ubuntu16.04_amd64.deb
mysql-common_5.7.20-1ubuntu16.04_amd64.deb
mysql-server_5.7.20-1ubuntu16.04_amd64.deb
libmysqlclient-dev_5.7.20-1ubuntu16.04_amd64.deb
libmysqlclient20_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-server_5.7.20-1ubuntu16.04_amd64.deb
libmysqld-dev_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-client_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-test_5.7.20-1ubuntu16.04_amd64.deb
mysql-testsuite_5.7.20-1ubuntu16.04_amd64.deb

3# 开始安装上面解压出来的包

如果单独安装每个包的话,安装之前我们需要注意每个包的安装顺序,因为会有包的依赖问题。

mysql-common_5.7.20-1ubuntu16.04_amd64.deb
libmysqlclient20_5.7.20-1ubuntu16.04_amd64.deb
libmysqlclient-dev_5.7.20-1ubuntu16.04_amd64.deb
libmysqld-dev_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-client_5.7.20-1ubuntu16.04_amd64.deb
mysql-client_5.7.20-1ubuntu16.04_amd64.deb
mysql-community-server_5.7.20-1ubuntu16.04_amd64.deb

执行下面的命令安装:

$ sudo dpkg –i mysql-common_5.7.20-1ubuntu16.04_amd64.deb libmysqlclient20_5.7.20-1ubuntu16.04_amd64.deb libmysqlclient-dev_5.7.20-1ubuntu16.04_amd64.deb libmysqld-dev_5.7.20-1ubuntu16.04_amd64.deb mysql-community-client_5.7.20-1ubuntu16.04_amd64.deb mysql-client_5.7.20-1ubuntu16.04_amd64.deb mysql-community-server_5.7.20-1ubuntu16.04_amd64.deb

在安装过程中,会要求输入mysql root的密码。

4# 启动和停止mysql服务命令

/etc/init.d/mysql start
/etc/init.d/mysql stop

5# 设置MySQL配置文件

找到文件/etc/mysql/my.cnf 注释掉bind-address=127.0.0.1,这行的意思是只允许本地访问MySQL服务器

6# 修改mysql数据库中的表

# user表中的host表示,相应用户允许访问的ip

# %表示所有ip,也可以是某个具体ip

# flush privileges表示使修改生效

$ sudo mysql –uroot –p
Mysql> use mysql
Mysql>update user set host='%' where user='root';
Mysql> flush privileges;

7# 设置mysql用户权限

# 其中password表示远程登录的密码

# 设置权限

Mysql>  GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY 'password'  WITH GRANT OPTION;?flush privileges;
Mysql>  flush privileges;

Ubuntu MySQL 安装失败问题总结

有时候在安装MySQL之后会出现一些错误信息,下面收集了一下常见的错误,以及解决方法。

错误一:在处理时有错误发生: mysql-server-5.5 mysql-serverE: Sub-process /usr/bin/dpkg returned an error code (1)

解决方法:执行下面的几条命令:

sudo rm /var/lib/mysql/ -Rsudo rm /etc/mysql/ -R

sudo apt-get autoremove mysql* –purge

sudo apt-get remove apparmor

sudo apt-get install mysql-server mysql-common

错误二:dpkg: error processing mysql-server (–configure): dependency problems – leaving unconfigured

start: Job failed to start

invoke-rc.d: initscript mysql, action “start” failed.

dpkg: error processing mysql-server-5.5 (–configure):

解决方法:

查看网络配置
auto lo
iface lo inet loopback

研究了一下我的配置没有问题。问题原因是我删除的时候是手动的。解决办法如下:

sudo rm /var/lib/mysql/ -R
sudo rm /etc/mysql/ -R
sudo apt-get autoremove mysql* –purge
sudo apt-get remove apparmor
sudo apt-get install mysql-server mysql-common

然后重新安装MySQL.

Ubuntu 安装MySQL ODBC驱动

1# 安装iODBC的驱动管理器(GTK编写的前端界面):

$sudo apt-get install iodbc

2# 安装MySQL的ODCB连接器:

$sudo apt-get install libmydobc

3# 启动iODBC:

$sudo iodbcadm-gtk

ubuntu mysql odbc

Ubuntu 下安装MySQL-connector-python

MySQL Connector/Python 是 MySQL 官方提供的 Python 连接 MySQL 数据库的驱动程序.下面介绍两种安装该驱动程序的方法:

方法一# 使用apt-get 安装

执行下面命令:

sudo apt-get updatesudo apt-get install python-mysql.connector

方法二#通过pip工具安装

1# 通过pip命令查看是否有我们要安装的包

$ sudo pip search mysql-connector

2# 安装mysql-connector-python

执行下面命令:

$ sudo pip install mysql-connector-python

如果安装过程中出现下面的错误:

Some externally hosted files were ignored (use  --allow-external mysql-connector-python to allow).

我们可以使用下面的命令重新安装

$ sudo pip install mysql-connector-python --allow-external mysql-connector-python

3# 验证是否安装成功:

~ python
>>> import mysql.connector as mc
>>> mc.__version__
'2.0.4'

Ubuntu 安装 python 3.5

1# 通过apt-get命令行安装Python3.5

$ sudo apt-get install python3.5

命令输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
java-common libappindicator1 libindicator7
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
libpython3.5 libpython3.5-minimal libpython3.5-stdlib python3.5-minimal
建议安装:
python3.5-venv python3.5-doc binfmt-support
下列软件包将被升级:
libpython3.5 libpython3.5-minimal libpython3.5-stdlib python3.5
python3.5-minimal
升级了 5 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 218 个软件包未被升级。
需要下载 5,778 kB 的归档。
解压缩后将会空出 7,168 B 的空间。
您希望继续执行吗? [Y/n]Y

2# Ubuntu默认使用的是Python2.7,将默认的Python版本指向到3.5

执行下面命令:

$ sudo rm /usr/bin/python
$ sudo ln -s /usr/bin/python3.5 /usr/bin/python

本文永久链接:http://www.osetc.com/archives/20436.html


99%的人还阅读了: