From b044e0b5821e65c0ec435df6fa49ec0d2e2b419d Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 13 Jan 2015 12:50:55 +0800 Subject: [PATCH 001/725] Translating by ZTinoZ --- ...1223 20 Linux Commands Interview Questions & Answers.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 88e9b83ce2..e6e3fa1c2e 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -1,11 +1,10 @@ -Translating by ZTinoZ -20 Linux Commands Interview Questions & Answers +20条Linux命令面试问答 ================================================================================ **Q:1 How to check current run level of a linux server ?** Ans: ‘who -r’ & ‘runlevel’ commands are used to check the current runlevel of a linux box. -**Q:2 How to check the default gatway in linux ?** +**Q:2 怎么检查Linux的默认网关?** Ans: Using the commands “route -n” and “netstat -nr” , we can check default gateway. Apart from the default gateway info , these commands also display the current routing tables . @@ -116,7 +115,7 @@ Ans: The lspci command displays information about PCI buses and the devices atta via: http://www.linuxtechi.com/20-linux-commands-interview-questions-answers/ 作者:[Pradeep Kumar][a] -译者:[译者ID](https://github.com/译者ID) +译者:[ZTinoZ](https://github.com/ZTinoZ) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d1e967b1abce035eae3ea421ea8bed98292b02f1 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 13 Jan 2015 15:01:19 +0800 Subject: [PATCH 002/725] Translating by ZTinoZ --- ...nux Commands Interview Questions & Answers.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index e6e3fa1c2e..50da521e4e 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -1,16 +1,16 @@ 20条Linux命令面试问答 ================================================================================ -**Q:1 How to check current run level of a linux server ?** +**问:1 如何查看当前的Linux服务器的运行级别?** -Ans: ‘who -r’ & ‘runlevel’ commands are used to check the current runlevel of a linux box. +答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。 -**Q:2 怎么检查Linux的默认网关?** +**问:2 如何检查Linux的默认网关?** -Ans: Using the commands “route -n” and “netstat -nr” , we can check default gateway. Apart from the default gateway info , these commands also display the current routing tables . +答: Using the commands “route -n” and “netstat -nr” , we can check default gateway. Apart from the default gateway info , these commands also display the current routing tables . -**Q:3 How to rebuild initrd image file on Linux ?** +**问:3 How to rebuild initrd image file on Linux ?** -Ans: In case of CentOS 5.X / RHEL 5.X , mkinitrd command is used to create initrd file , example is shown below : +答: In case of CentOS 5.X / RHEL 5.X , mkinitrd command is used to create initrd file , example is shown below : # mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r) @@ -24,9 +24,9 @@ Above command will create the initrd file for the current version. To rebuild th # dracut -f initramfs-2.x.xx-xx.el6.x86_64.img 2.x.xx-xx.el6.x86_64 -**Q:4 What is cpio command ?** +**问:4 What is cpio command ?** -Ans: cpio stands for Copy in and copy out. Cpio copies files, lists and extract files to and from a archive ( or a single file). +答: cpio stands for Copy in and copy out. Cpio copies files, lists and extract files to and from a archive ( or a single file). **Q:5 What is patch command and where to use it ?** From 222bfbbd4450cd04d34f9ebaa1fdf76fb851d81b Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 14 Jan 2015 11:19:47 +0800 Subject: [PATCH 003/725] Translating by ZTinoZ --- ... Commands Interview Questions & Answers.md | 82 +++++++++---------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 50da521e4e..a57eadab5c 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -4,33 +4,33 @@ 答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别。 -**问:2 如何检查Linux的默认网关?** +**问:2 如何查看Linux的默认网关?** -答: Using the commands “route -n” and “netstat -nr” , we can check default gateway. Apart from the default gateway info , these commands also display the current routing tables . +答: 用 “route -n” 和 “netstat -nr” 命令,我们可以查看默认网关。除了默认的网关信息,这两个命令还可以显示当前的路由表。 -**问:3 How to rebuild initrd image file on Linux ?** +**问:3 如何在Linux上重建初始化内存盘影响文件?** -答: In case of CentOS 5.X / RHEL 5.X , mkinitrd command is used to create initrd file , example is shown below : +答: 在CentOS 5.X / RHEL 5.X中,可以用mkinitrd命令来创建初始化内存盘文件,举例如下: # mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r) -If you want to create initrd for a specific kernel version , then replace ‘uname -r’ with desired kernel +如果你想要给特定的内核版本创建初始化内存盘,你就用所需的内核名替换掉 ‘uname -r’ 。 -In Case of CentOS 6.X / RHEL 6.X , dracut command is used to create initrd file example is shown below : +在CentOS 6.X / RHEL 6.X中,则用dracut命令来创建初始化内存盘文件,举例如下: # dracut -f -Above command will create the initrd file for the current version. To rebuild the initrd file for a specific kernel , use below command : +以上命令能给当前的系统版本创建初始化内存盘,给特定的内核版本重建初始化内存盘文件则使用以下命令: # dracut -f initramfs-2.x.xx-xx.el6.x86_64.img 2.x.xx-xx.el6.x86_64 -**问:4 What is cpio command ?** +**问:4 cpio命令是什么?** -答: cpio stands for Copy in and copy out. Cpio copies files, lists and extract files to and from a archive ( or a single file). +答: cpio就是复制入和复制出的意思。cpio可以向一个归档文件(或单个文件)复制文件、列表,还可以从中提取文件。 -**Q:5 What is patch command and where to use it ?** +**问:5 patch命令是什么?如何使用?** -Ans: As the name suggest patch command is used to apply changes ( or patches) to the text file. Patch command generally accept output from the diff and convert older version of files into newer versions. For example Linux kernel source code consists of number of files with millions of lines , so whenever any contributor contribute the changes , then he/she will be send the only changes instead of sending the whole source code. Then the receiver will apply the changes with patch command to its original source code. +答: As the name suggest patch command is used to apply changes ( or patches) to the text file. Patch command generally accept output from the diff and convert older version of files into newer versions. For example Linux kernel source code consists of number of files with millions of lines , so whenever any contributor contribute the changes , then he/she will be send the only changes instead of sending the whole source code. Then the receiver will apply the changes with patch command to its original source code. Create a diff file for use with patch, @@ -42,73 +42,73 @@ Once the diff file has been created, we can apply it to patch the old file into # patch < diff_file -**Q:6 What is use of aspell ?** +**问:6 What is use of aspell ?** -Ans: As the name suggest aspell is an interactive spelling checker in linux operating system. The aspell command is the successor to an earlier program named ispell, and can be used, for the most part, as a drop-in replacement. While the aspell program is mostly used by other programs that require spell-checking capability, it can also be used very effectively as a stand-alone tool from the command line. +答: As the name suggest aspell is an interactive spelling checker in linux operating system. The aspell command is the successor to an earlier program named ispell, and can be used, for the most part, as a drop-in replacement. While the aspell program is mostly used by other programs that require spell-checking capability, it can also be used very effectively as a stand-alone tool from the command line. -**Q:7 How to check the SPF record of domain from command line ?** +**问:7 How to check the SPF record of domain from command line ?** -Ans: We can check SPF record of a domain using dig command. Example is shown below : +答: We can check SPF record of a domain using dig command. Example is shown below : linuxtechi@localhost:~$ dig -t TXT google.com -**Q:8 How to identify which package the specified file (/etc/fstab) is associated with in linux ?** +**问:8 How to identify which package the specified file (/etc/fstab) is associated with in linux ?** -Ans: # rpm -qf /etc/fstab +答: # rpm -qf /etc/fstab Above command will list the package which provides file “/etc/fstab” -**Q:9 Which command is used to check the status of bond0 ?** +**问:9 Which command is used to check the status of bond0 ?** -Ans: cat /proc/net/bonding/bond0 +答: cat /proc/net/bonding/bond0 -**Q:10 What is the use of /proc file system in linux ?** +**问:10 What is the use of /proc file system in linux ?** -Ans: The /proc file system is a RAM based file system which maintains information about the current state of the running kernel including details on CPU, memory, partitioning, interrupts, I/O addresses, DMA channels, and running processes. This file system is represented by various files which do not actually store the information, they point to the information in the memory. The /proc file system is maintained automatically by the system. +答: The /proc file system is a RAM based file system which maintains information about the current state of the running kernel including details on CPU, memory, partitioning, interrupts, I/O addresses, DMA channels, and running processes. This file system is represented by various files which do not actually store the information, they point to the information in the memory. The /proc file system is maintained automatically by the system. -**Q:11 How to find files larger than 10MB in size in /usr directory ?** +**问:11 How to find files larger than 10MB in size in /usr directory ?** -Ans: # find /usr -size +10M +答: # find /usr -size +10M -**Q:12 How to find files in the /home directory that were modified more than 120 days ago ?** +**问:12 How to find files in the /home directory that were modified more than 120 days ago ?** -Ans: # find /home -mtime +l20 +答: # find /home -mtime +l20 -**Q:13 How to find files in the /var directory that have not been accessed in the last 90 days ?** +**问:13 How to find files in the /var directory that have not been accessed in the last 90 days ?** -Ans: # find /var -atime -90 +答: # find /var -atime -90 -**Q:14 Search for core files in the entire directory tree and delete them as found without prompting for confirmation** +**问:14 Search for core files in the entire directory tree and delete them as found without prompting for confirmation** -Ans: # find / -name core -exec rm {} \; +答: # find / -name core -exec rm {} \; -**Q:15 What is the purpose of strings command ?** +**问:15 What is the purpose of strings command ?** -Ans: The strings command is used to extract and display the legible contents of a non-text file. +答: The strings command is used to extract and display the legible contents of a non-text file. -**Q:16 What is the use tee filter ?** +**问:16 What is the use tee filter ?** -Ans: The tee filter is used to send an output to more than one destination. It can send one copy of the output to a file and another to the screen (or some other program) if used with pipe. +答: The tee filter is used to send an output to more than one destination. It can send one copy of the output to a file and another to the screen (or some other program) if used with pipe. linuxtechi@localhost:~$ ll /etc | nl | tee /tmp/ll.out In the above example, the output from ll is numbered and captured in /tmp/ll.out file. The output is also displayed on the screen. -**Q:17 What would the command export PS1 = ”$LOGNAME@`hostname`:\$PWD: do ?** +**问:17 What would the command export PS1 = ”$LOGNAME@`hostname`:\$PWD: do ?** -Ans: The export command provided will change the login prompt to display username, hostname, and the current working directory. +答: The export command provided will change the login prompt to display username, hostname, and the current working directory. -**Q:18 What would the command ll | awk ‘{print $3,”owns”,$9}’ do ?** +**问:18 What would the command ll | awk ‘{print $3,”owns”,$9}’ do ?** -Ans: The ll command provided will display file names and their owners. +答: The ll command provided will display file names and their owners. -**Q:19 What is the use of at command in linux ?** +**问:19 What is the use of at command in linux ?** -Ans: The at command is used to schedule a one-time execution of a program in the future. All submitted jobs are spooled in the /var/spool/at directory and executed by the atd daemon when the scheduled time arrives. +答: The at command is used to schedule a one-time execution of a program in the future. All submitted jobs are spooled in the /var/spool/at directory and executed by the atd daemon when the scheduled time arrives. -**Q:20 What is the role of lspci command in linux ?** +**问:20 What is the role of lspci command in linux ?** -Ans: The lspci command displays information about PCI buses and the devices attached to your system. Specify -v, -vv, or -vvv for detailed output. With the -m option, the command produces more legible output. +答: The lspci command displays information about PCI buses and the devices attached to your system. Specify -v, -vv, or -vvv for detailed output. With the -m option, the command produces more legible output. -------------------------------------------------------------------------------- From 10f7554731367f6982f4716f0e293b702e2b659e Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 16 Jan 2015 16:58:03 +0800 Subject: [PATCH 004/725] Translating by ZTinoZ --- ... 20 Linux Commands Interview Questions & Answers.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index a57eadab5c..3f032a3ac9 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -30,19 +30,19 @@ **问:5 patch命令是什么?如何使用?** -答: As the name suggest patch command is used to apply changes ( or patches) to the text file. Patch command generally accept output from the diff and convert older version of files into newer versions. For example Linux kernel source code consists of number of files with millions of lines , so whenever any contributor contribute the changes , then he/she will be send the only changes instead of sending the whole source code. Then the receiver will apply the changes with patch command to its original source code. +答: 顾名思义,patch命令就是用来将修改(或补丁)写进文本文件里。Patch命令通常是接收diff的输出并把文件的旧版本转换为新版本。举个例子,Linux内核源代码由百万行代码文件构成,所以无论何时,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,然后接收者用patch命令将改动写进原始的源代码里。 -Create a diff file for use with patch, +创建一个diff文件给patch使用, # diff -Naur old_file new_file > diff_file -Where old_file and new_file are either single files or directories containing files. The r option supports recursion of a directory tree. +旧文件和新文件要么都是单个的文件要么都是包含文件的目录,r选项支持目录树递归。 -Once the diff file has been created, we can apply it to patch the old file into the new file: +一旦diff文件创建好,我们就能在旧的文件上打上补丁,把它变成新文件: # patch < diff_file -**问:6 What is use of aspell ?** +**问:6 aspell有什么用 ?** 答: As the name suggest aspell is an interactive spelling checker in linux operating system. The aspell command is the successor to an earlier program named ispell, and can be used, for the most part, as a drop-in replacement. While the aspell program is mostly used by other programs that require spell-checking capability, it can also be used very effectively as a stand-alone tool from the command line. From 3b7420b19a16beaf9cd7c32b490b945de0533bc6 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Sun, 18 Jan 2015 16:25:33 +0800 Subject: [PATCH 005/725] Translating by ZTinoZ --- .../20141223 20 Linux Commands Interview Questions & Answers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 3f032a3ac9..16347b7cc5 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -44,7 +44,7 @@ **问:6 aspell有什么用 ?** -答: As the name suggest aspell is an interactive spelling checker in linux operating system. The aspell command is the successor to an earlier program named ispell, and can be used, for the most part, as a drop-in replacement. While the aspell program is mostly used by other programs that require spell-checking capability, it can also be used very effectively as a stand-alone tool from the command line. +答: 顾名思义,aspell就是Linux操作系统上的一款交互式拼写检查器。aspell命令继任了更早的一个名为ispell的程序,并且作为一款嵌入式替代品,最重要的是它非常好用。While the aspell program is mostly used by other programs that require spell-checking capability, it can also be used very effectively as a stand-alone tool from the command line. **问:7 How to check the SPF record of domain from command line ?** From e17efcba03810347c8e9f4d1271f9f735d1f18ed Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 19 Jan 2015 17:50:59 +0800 Subject: [PATCH 006/725] Translating by ZTinoZ --- ...223 20 Linux Commands Interview Questions & Answers.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 16347b7cc5..d2374752ea 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -44,11 +44,11 @@ **问:6 aspell有什么用 ?** -答: 顾名思义,aspell就是Linux操作系统上的一款交互式拼写检查器。aspell命令继任了更早的一个名为ispell的程序,并且作为一款嵌入式替代品,最重要的是它非常好用。While the aspell program is mostly used by other programs that require spell-checking capability, it can also be used very effectively as a stand-alone tool from the command line. +答: 顾名思义,aspell就是Linux操作系统上的一款交互式拼写检查器。aspell命令继任了更早的一个名为ispell的程序,并且作为一款嵌入式替代品 ,最重要的是它非常好用。当aspell程序主要被其它一些需要拼写检查能力的程序所使用的时候,在命令行中作为一个独立运行的工具的它也能十分有效。 -**问:7 How to check the SPF record of domain from command line ?** +**问:7 如何从命令行查看域SPF记录?** -答: We can check SPF record of a domain using dig command. Example is shown below : +答: 我们可以用dig命令来查看域SPF记录。举例如下: linuxtechi@localhost:~$ dig -t TXT google.com @@ -56,7 +56,7 @@ 答: # rpm -qf /etc/fstab -Above command will list the package which provides file “/etc/fstab” +以上命令能列出Above command will list the package which provides file “/etc/fstab” **问:9 Which command is used to check the status of bond0 ?** From 9922596791a0c4222418c2c0edbfe8e947100123 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 21 Jan 2015 16:18:33 +0800 Subject: [PATCH 007/725] =?UTF-8?q?20150121-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...age effects to pictures on Raspberry Pi.md | 69 ++++++ ...Sync Files or Folders Between Computers.md | 207 ++++++++++++++++++ 2 files changed, 276 insertions(+) create mode 100644 sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md create mode 100644 sources/tech/20150121 Syncthing--A Private And Secure Tool To Sync Files or Folders Between Computers.md diff --git a/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md b/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md new file mode 100644 index 0000000000..920f542832 --- /dev/null +++ b/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md @@ -0,0 +1,69 @@ +How to apply image effects to pictures on Raspberry Pi +================================================================================ +Like a common pocket camera which has a built-in function to add various effects on captured photos, [Raspberry Pi camera board][1] ("raspi cam") can actually do the same. With the help of raspistill camera control options, we can add the image effects function like we have in a pocket camera. + +There are [three comman-line applications][2] which can be utilized for [taking videos or pictures][3] with raspi cam, and one of them is the raspistill application. The raspistill tool offers various camera control options such as sharpness, contrast, brightness, saturation, ISO, exposure, automatic white balance (AWB), image effects. + +In this article I will show how to apply exposure, AWB, and other image effects with raspistill while capturing pictures using raspi cam. To automate the process, I wrote a simple Python script which takes pictures and automatically applies a series of image effects to the pictures. The raspi cam documentation describes available types of the exposure, AWB, and image effects. In total, the raspi cam offers 16 types of image effects, 12 types of exposure, and 10 types of AWB values. + +The simple Python script looks like the following. + + #!/usb/bin/python + import os + import time + import subprocess + list_ex=['auto','night'] + list_awb=['auto','cloud',flash'] + list_ifx=['blur','cartoon','colourswap','emboss','film','gpen','hatch','negative','oilpaint','posterise','sketch','solarise','watercolour'] + x=0 + for ex in list_ex: + for awb in list_awb: + for ifx in list_ifx: + x=x+1 + filename='img_'+ex+'_'+awb+'_'+ifx+'.jpg' + cmd='raspistill -o '+filename+' -n -t 1000 -ex '+ex+' -awb '+awb+' -ifx '+ifx+' -w 640 -h 480' + pid=subprocess.call(cmd,shell=True) + print "["+str(x)+"]-"+ex+"_"+awb+"_"+ifx+".jpg" + time.sleep(0.25) + print "End of image capture" + +The Python script operates as follows. First, create three array/list variable for the exposure, AWB and image effects. In the example, we use 2 types of exposure, 3 types of AWB, and 13 types of image effects values. Then make nested loops for applying the value of the three variables that we have. Inside the nested loop, execute the raspistill application. We specify (1) the output filename; (2) exposure value; (3) AWB value; (4) image effect value; (5) the time to take a photo, which is set to 1 second; and (6) the size of the photo, which is set to 640x480px. This Python script will create 78 different versions of a captured photo with a combination of 2 types of exposure, 3 types of AWB, and 13 types of image effects. + +To execute the Python script, simply type: + + $ python name_of_this_script.py + +Here is the first round of the sample result. + +![](https://farm8.staticflickr.com/7483/16134215939_c93291158a_c.jpg) + +### Bonus ### + +For those who are more interested, there is another way to access and control the raspi cam besides raspistill. [Picamera][4] a pure Python interface which provides APIs for accessing and controlling raspi cam, so that one can build a complex program for utilizing raspi cam according to their needs. If you are skilled at Python, picamera is a good feature-complete interface for implementing your raspi cam project. The picamera interface is included by default in the recent image of Raspbian. If your [Raspberry Pi][5] operating system is not new or not Raspbian, you can install it on your system as follows. + +First, install pip on your system by following [this guideline][6]. + +Then, install picamera as follows. + + $ sudo pip install picamera + +Refer to the [official documentation][7] on how to use picamera. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/apply-image-effects-pictures-raspberrypi.html + +作者:[Kristophorus Hadiono][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/kristophorus +[1]:http://xmodulo.com/go/picam +[2]:http://www.raspberrypi.org/documentation/usage/camera/raspicam/ +[3]:http://xmodulo.com/install-raspberry-pi-camera-board.html +[4]:https://pypi.python.org/pypi/picamera +[5]:http://xmodulo.com/go/raspberrypi +[6]:http://ask.xmodulo.com/install-pip-linux.html +[7]:http://picamera.readthedocs.org/ \ No newline at end of file diff --git a/sources/tech/20150121 Syncthing--A Private And Secure Tool To Sync Files or Folders Between Computers.md b/sources/tech/20150121 Syncthing--A Private And Secure Tool To Sync Files or Folders Between Computers.md new file mode 100644 index 0000000000..8a4aff4dfb --- /dev/null +++ b/sources/tech/20150121 Syncthing--A Private And Secure Tool To Sync Files or Folders Between Computers.md @@ -0,0 +1,207 @@ +Syncthing: A Private, And Secure Tool To Sync Files/Folders Between Computers +================================================================================ +### Introduction ### + +**Syncthing** is a free, Open Source tool that can be used to sync files/folders between your networked computers. Unlike other sync tools, such as **BitTorrent Sync** or **Dropbox**, Syncthing transfers data directly from one system to another system, and It is completely open source, secure and private. All of your precious data will be stored in your system so that you can have full control over your files and folders, and none of them are stored in any third party systems. Also, you deserve to choose where it is stored, if it is shared with some third party and how it’s transmitted over the Internet. + +All communication is encrypted using TLS, so your data is very secure from the prying eyes. Syncthing has a responsive and powerful WebGUI which will help the users to easily add, delete and manage directories to be synced over network. Using Syncthing, you can sync multiple folders to multiple systems at a time. Syncthing is very simple, portable, yet powerful tool in terms of installation and usage. Since all files/folders are directly transferred from one computer to another computer, you don’t have to worry about purchasing extra space from your Cloud provider. All you need is very stable LAN/WAN connection and enough disk space on your systems. It supports all modern operating systems, including GNU/Linux, Windows, Mac OS X, and ofcourse Android. + +### Installation ### + +For the purpose of this tutorial, We will be using two systems, one is running with Ubuntu 14.04 LTS, and another one is running with Ubuntu 14.10 server. To easily recognize these two systems, we will be calling them using names **system1**, and **system2**. + +### System1 Details: ### + +- **OS**: Ubuntu 14.04 LTS server; +- **Hostname**: server1.unixmen.local; +- **IP Address**: 192.168.1.150. +- **System user**: sk (You can use your own) +- **Sync Directory**: /home/Sync/ (Will be created by default by Syncthing) + +### System2 Details: ### + +- **OS**: Ubuntu 14.10 server; +- **Hostname**: server.unixmen.local; +- **IP Address**: 192.168.1.151. +- **System user**: sk (You can use your own) +- **Sync Directory**: /home/Sync/ (Will be created by default by Syncthing) + +### Creating User For Syncthing On System 1 & System2: ### + +Run the following commands on both system to create the user for Syncthing and the directory to be synced between two systems: + + sudo useradd sk + sudo passwd sk + +### Install Syncthing On System1 And System2: ### + +You should do the following steps on both System 1 and System 2. + +Download the latest version from the [official download page][1]. As I am using 64bit system, I downloaded the 6bbit package. + + wget https://github.com/syncthing/syncthing/releases/download/v0.10.20/syncthing-linux-amd64-v0.10.20.tar.gz + +Extract the download file: + + tar xzvf syncthing-linux-amd64-v0.10.20.tar.gz + +Cd to the extracted folder: + + cd syncthing-linux-amd64-v0.10.20/ + +Copy the excutable file “syncthing” to **$PATH**: + + sudo cp syncthing /usr/local/bin/ + +Now, run the following command to run the syncthing for the first time. + + syncthing + +When you run the above command, syncthing will generate a configuration and some keys and then start the admin GUI in your browser. You should see something like below. + +Sample output: + + [monitor] 15:40:27 INFO: Starting syncthing + 15:40:27 INFO: Generating RSA key and certificate for syncthing... + [BQXVO] 15:40:34 INFO: syncthing v0.10.20 (go1.4 linux-386 default) unknown-user@syncthing-builder 2015-01-13 16:27:47 UTC + [BQXVO] 15:40:34 INFO: My ID: BQXVO3D-VEBIDRE-MVMMGJI-ECD2PC3-T5LT3JB-OK4Z45E-MPIDWHI-IRW3NAZ + [BQXVO] 15:40:34 INFO: No config file; starting with empty defaults + [BQXVO] 15:40:34 INFO: Edit /home/sk/.config/syncthing/config.xml to taste or use the GUI + [BQXVO] 15:40:34 INFO: Starting web GUI on http://127.0.0.1:8080/ + [BQXVO] 15:40:34 INFO: Loading HTTPS certificate: open /home/sk/.config/syncthing/https-cert.pem: no such file or directory + [BQXVO] 15:40:34 INFO: Creating new HTTPS certificate + [BQXVO] 15:40:34 INFO: Generating RSA key and certificate for server1... + [BQXVO] 15:41:01 INFO: Starting UPnP discovery... + [BQXVO] 15:41:07 INFO: Starting local discovery announcements + [BQXVO] 15:41:07 INFO: Starting global discovery announcements + [BQXVO] 15:41:07 OK: Ready to synchronize default (read-write) + [BQXVO] 15:41:07 INFO: Device BQXVO3D-VEBIDRE-MVMMGJI-ECD2PC3-T5LT3JB-OK4Z45E-MPIDWHI-IRW3NAZ is "server1" at [dynamic] + [BQXVO] 15:41:07 INFO: Completed initial scan (rw) of folder default + +Syncthing has been successfully initialized, and the Web admin interface can be accessed using URL: **http://localhost:8080** from your browser. As you see in the above output, syncthing has automatically created a folder called **default** for you, in a directory called **Sync** in your **home** directory. + +By default, Syncthing WebGUI will only be accessed from the localhost itself. To access the WebGUI from the remote systems, you need to do the following changes on both systems. + +First, stop the Syncthing initialization process by pressing the CTRL+C. Now, you will be returned back to the Terminal. + +Edit file **config.xml**, + + sudo nano ~/.config/syncthing/config.xml + +Find this directive: + + [...] + +
127.0.0.1:8080
+ -Su9v0lW80JWybGjK9vNK00YDraxXHGP +
+ [...] + +In the **
** field, change **127.0.0.1:8080** to **0.0.0.0:8080**. So, your config.xml will look like below. + + +
0.0.0.0:8080
+ -Su9v0lW80JWybGjK9vNK00YDraxXHGP +
+ +Save and close the file. + +Now, start again the Syncthing initialization on both systems by entering the following command: + + syncthing + +### Access the WebGUI ### + +Now, open your browser **http://ip-address:8080/**. You will see the following screen, + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server1-Mozilla-Firefox_001.png) + +The WebGUI has two panes. In the left pane, you may see the list of folders to be synced. As I mentioned before, the folder **default** has been automatically created for you while initializing Syncthing. If you want to sync more folders, you can add using **Add Folder** button. + +In the right pane, you see the number of devices connected. Currently there is only one device, the computer you are running this on. + +### Configure Syncthing Web GUI ### + +For the security enhancement, let us enable TLS, and setup administrative user and password to access the WebGUI. To od that, click on the gear button and select **Settings** on the top right corner. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Menu_002.png) + +Enter the admin username/password. In my case it is admin/ubuntu. You should use some strong password. And, check the box that says: **Use HTTPS for GUI**. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server1-Mozilla-Firefox_004.png) + +Click Save button. Now, you’ll be asked to restart the Syncthing to activate the changes. Click Restart. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Selection_005.png) + +Selection_005Refresh you web browser. You’ll see the SSL warning like below. Click on the button that says: **I understand the Risks**. And, click Add Exception button to add this page to the browser trusted lists. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Untrusted-Connection-Mozilla-Firefox_006.png) + +Enter the administrative user and password which we configured in the previous steps. In my case it’s **admin/ubuntu**. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Authentication-Required_007.png) + +We have secured the WebGUI now. Don’t forget to do the same steps on both server. + +### Connect Servers To Each Other ### + +To sync folders between systems, you must told them about each other. This is accomplished by exchanging “device IDs”. You can find it in the web GUI by selecting the “gear menu” (top right) and “Show ID”. + +For example, here is my System 1 ID. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server1-Mozilla-Firefox_008.png) + +Copy the ID, and go to the another system (system 2) WebGUI. From the second system (system 2) WebGUI window, click on the Add Device on the right side. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server-Mozilla-Firefox_010.png) + +The following screen should appear. Paste the **System 1 ID** in the Device section. Enter the Device name(optional). In the Addresses field, you can either enter the IP address of the other system or leave it as default. The default value is **dynamic**. Finally, select the folder to be synced. In our case, the sync folder is **default**. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server-Mozilla-Firefox_009.png) + +Once you done, click on the save button. You’ll be asked to restart the Syncthing. Click Restart button to activate the changes. + +Now, go to the **System 1** WebUI, you’ll see a request has been sent from the System 2 to connect and sync. Click **Add** button. Now, the System 2 will ask the System 1 to share and sync the folder called “default”. Click **Share** button. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Selection_013.png) + +Next restart the Syncthing service on the System 1 to activate the changes. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Selection_014.png) + +Wait for few seconds, approximately 60 seconds, and you’ll see the two systems have been successfully connected and synced to each other. + +You can verify it under the Add Device section of the WebGUI. + +System 1 WebGUI console after adding System 2: + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server-Mozilla-Firefox_016.png) + +System 2 WebGUI console after adding System 1: + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server-Mozilla-Firefox_018.png) + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Syncthing-server-Mozilla-Firefox_018.png) + +Now, put any file or folder in any one of the systems “**default**” folder. You may see the file/folder will be synced to the other system automatically. + +That’s it! Happy Sync’ing!! + +Cheers!!! + +- [Syncthing Website][2] + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/syncthing-private-secure-tool-sync-filesfolders-computers/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:https://github.com/syncthing/syncthing/releases/tag/v0.10.20 +[2]:http://syncthing.net/ \ No newline at end of file From 4fc1280f935e85a2a830e75faed1dd7b72a83291 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 21 Jan 2015 16:30:21 +0800 Subject: [PATCH 008/725] =?UTF-8?q?20150121-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nitor Network Usage with nload in Linux.md | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md diff --git a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md new file mode 100644 index 0000000000..afbfa4eab6 --- /dev/null +++ b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md @@ -0,0 +1,206 @@ +How to Monitor Network Usage with nload in Linux +================================================================================ +nload is a free linux utility that can help the linux user or sysadmin to monitor network traffic and bandwidth usage in real time by providing two simple graphs: one per incoming traffic and one for outgoing traffic. + +I really like to use **nload** to display information on my screen about the current download speed, the total incoming traffic, and the average download speed. The graphs reported by nload tool are very easy to interpret and what is the most important thing they are very helpful. + +According to the manual pages it monitors all network devices by default, but you can easily specify the device you want to monitor and also switch between different network devices using the arrow keys. There are many options avaliable such as -t to determine refresh interval of the display in milliseconds (the default value of interval is 500), -m to show multiple devices at the same time(traffic graphs are not shown when this option is used), -u to set the type of unit used for the display of traffic numbers and many others that we are going to explore and practise in this tutorial. + +### How to install nload on your linux machine ### + +**Ubuntu** and **Fedora** users can easily install nload from the default repositories. + +Install nload on Ubuntu by using the following command. + + sudo apt-get install nload + +Install nload on Fedora by using the following command. + + sudo yum install nload + +What about **CentOS** users? Just type the following command on your machine and you will get nload installed. + + sudo yum install nload + +The following command will help you to install nload on OpenBSD systems. + + sudo pkg_add -i nload + +A very effective way to install software on linux machine is to compile by source as you can download and install the latest version which usually means better performance, cool features and less bugs. + +### How to install nload from source ### + +The first thing you need to do before installing nload from source you need to download it and to do this I like to use the wget uility which is available by default on many linux machines. This free utility helps linux users to download files from the web in a non-interactive way and has support for the following protocols. + +- HTTP +- HTTPS +- FTP + +Change directory to **/tmp** by using the following command. + + cd /tmp + +Now type the following command in your terminal to download the latest version of nload on your linux machine. + + wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz + +If you don't like to use the linux wget utility you can easily download it from the [official][1] source by just a mouse click. + +The download will finish in no time as it is a small software. The next step is to untar the file you downloaded with the help of the **tar** utility. + +The tar archiving utility can be used to store and extract files from a tape or disk archive. There are many options available in this tool but we need the followings to perform our operation: + +1. **-x** to extract files from an archive +1. **-v** to run in verbose mode +1. **-f** to specify the files + +For example: + + tar xvf example.tar + +Now that you learned how to use the tar utility I am very sure you know how to untar .tar archives from the commandline. + + tar xvf nload-0.7.4.tar.gz + +Then use the cd command to change directory to nload*. + + cd nload* + +It looks like this on my system. + + oltjano@baby:/tmp/nload-0.7.4$ + +Now run the command + + ./configure + +to to configure the package for your system. + + ./configure + +Alot of stuff is going to be displayed on your screen. The following screenshot demonstrates how it is going to look like. + +![configuring packages for nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload1.png) + +Then compile the nload with the following command. + + make + +![compiling nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload2.png) + +And finally install nload on your linux machine with the following command. + + sudo make install + +![installing nload from source](http://blog.linoxide.com/wp-content/uploads/2015/01/nload3.png) + +Now that the installation of nload is finished it is time for you to learn how to use it. + +### How to use nload ### + +I like to explore so type the following command on your terminal. + + nload + +What do you see? + +I get the following. + +![running nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.png) + +As you can see from the above screenshot I get information on: + +### Incoming Traffic ### + +#### Current download speed #### + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.1.png) + +#### Average download speed #### + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.2.png) + +#### Minimum download speed #### + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.3.png) + +#### Maximum download speed #### + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.4.png) + +#### Total incoming traffic in bytes by default #### + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.5.png) + +### Outgoing Traffic ### + +The same goes for outgoing traffic. + +#### Some useful options of nload #### + +Use the option + + -u + +to set set the type of unit used for the display of traffic numbers. + +The following command will help you to use the MBit/s unit. + + nload -u m + +The following screenshot shows the result of the above command. + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload5.png) + +Try the following command and see the results. + + nload -u g + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload6.png) + +There is also the option **-U**. According to the manual pages it is same as the option -u but only for an amount of data. I tested this option and to be honest it very helpful when you want to check the total amount of traffic be it incoming or outgoing. + + nload -U G + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload7.png) + +As you can see from the above screenshot the command **nload -U G** helps to display the total amount of data (incoming or outgoing) in Gbyte. + +Another useful option I like to use with nload is the option **-t**. This option is used to refresh interval of display in milliseconds which is 500 by default. + +I like to experiment a little by using the following command. + + nload -t 130 + +So what the above command does is that it sets the display to refresh every 130 milliseconds. It is recommended to no specify refresh intervals shorter than about 100 milliseconds as nload will generate reports with mistakes during the calculations. + +Another option is **-a**. It is used when you want to set the length in seconds of the time window for average calculation which is 300 seconds by default. + +What if you want to monitor a specific network device? It is very easy to do that, just specify the device or the list of devices you want to monitor like shown below. + + nload wlan0 + +![nload monitoring wlan0 on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) + +The following syntax can help to monitor specific multiple devices. + + nload [options] device1 device2 devicen + +For example use the following command to monitor eth0 and wlan0. + + nload wlan0 eth0 + +And if you run the command nload without any option it will monitor all auto-detected devices, you can display graphs for each one of them by using the right and left arrow keys. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/monitoring-2/monitor-network-usage-nload/ + +作者:[Oltjano Terpollari][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/oltjano/ +[1]:http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz \ No newline at end of file From 55f0d498d452142ec6eee955a3e5ff05905c341e Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 21 Jan 2015 16:51:17 +0800 Subject: [PATCH 009/725] =?UTF-8?q?20150121-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...t into command line on Ubuntu or Debian.md | 64 +++++++ ...Answers--How to check CPU info on Linux.md | 115 +++++++++++++ ...eck disk space on Linux with df command.md | 157 ++++++++++++++++++ 3 files changed, 336 insertions(+) create mode 100644 sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md create mode 100644 sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md create mode 100644 sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md b/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md new file mode 100644 index 0000000000..606fb655e8 --- /dev/null +++ b/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md @@ -0,0 +1,64 @@ +Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian +================================================================================ +> **Question**: I am running Ubuntu desktop, but I want to boot straight into text-mode console temporarily. What is a convenient way to disable desktop GUI and boot into a terminal? + +Linux desktop comes with a display manager (e.g., GDM, KDM, LightDM), which lets the desktop machine automatically boot into a GUI-based login environment. However, what if you want to disable GUI and boot straight into a text-mode console? For example, you are troubleshooting desktop related issues, or want to run a heavy-duty application that does not require desktop GUI. + +Note that you can temporarily switch from desktop GUI to a virtual console by pressing Ctrl+Alt+F1 to F6. However, in this case your desktop GUI will be still running in the background, and thus is different from pure text-mode booting. + +On Ubuntu or Debian desktop, you can enable text-mode booting by passing appropriate kernel parameters. + +### Boot into Command-line Temporarily ### + +If you want to disable desktop GUI and boot in text-mode just one-time, you can use GRUB menu interface. + +First, power on your desktop. When you see the initial GRUB menu, press 'e'. + +![](https://farm8.staticflickr.com/7490/16112246542_bc1875a397_z.jpg) + +This will lead you to the next screen, where you can modify kernel booting parameters. Scroll down the screen to look for a line that begins with "linux", which indicates a list of kernel parameters. Remove from the list "quiet" and "splash". Add "text" in the list instead. + +![](https://farm8.staticflickr.com/7471/15493282603_8a70f70af2_z.jpg) + +The updated kernel parameter list looks like the following. Press Ctrl+x to continue booting. This will enable one-time console booting in verbose mode. + +![](https://farm8.staticflickr.com/7570/15925676530_b11af59243_z.jpg) + +Boot into Command-line Permanently + +If you want to boot into command-line permanently, you need to [update GRUB configuration][1] which defines kernel booting parameters. + +Open a default GRUB config file with a text editor. + + $ sudo vi /etc/default/grub + +Look for a line that starts with GRUB_CMDLINE_LINUX_DEFAULT, and comment out that line by prepending # sign. This will disable the initial splash screen, and enable verbose mode (i.e., showing the detailed booting procedure). + +Then change GRUB_CMDLINE_LINUX="" to: + + GRUB_CMDLINE_LINUX="text" + +Next, uncomment the line that says "#GRUB_TERMINAL=console". + +The updated GRUB defult configuration looks like the following. + +![](https://farm9.staticflickr.com/8673/16107564442_9345d94491_b.jpg) + +Finally, invoke update-grub command to re-generate a GRUB2 config file under /boot, based on these changes. + + $ sudo update-grub + +At this point, your desktop should be switched from GUI booting to console booting. Verify this by rebooting. + +![](https://farm8.staticflickr.com/7518/16106378151_81ac6b5a49_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/boot-into-command-line-ubuntu-debian.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/add-kernel-boot-parameters-via-grub-linux.html \ No newline at end of file diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md new file mode 100644 index 0000000000..b9a9712a49 --- /dev/null +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -0,0 +1,115 @@ +Linux FAQs with Answers--How to check CPU info on Linux +================================================================================ +> **Question**: I would like to know detailed information about the CPU processor of my computer. What are the available methods to check CPU information on Linux? + +Depending on your need, there are various pieces of information you may need to know about the CPU processor(s) of your computer, such as CPU vendor name, model name, clock speed, number of sockets/cores, L1/L2/L3 cache configuration, available processor capabilities (e.g., hardware virtualization, AES, MMX, SSE), and so on. In Linux, there are many command line or GUI-based tools that are used to show detailed information about your CPU hardware. + +### 1. /proc/cpuinfo ### + +The simpliest method is to check /proc/cpuinfo. This virtual file shows the configuration of available CPU hardware. + + $ more /proc/cpuinfo + +![](https://farm8.staticflickr.com/7572/15934711577_4136a8e0b9_c.jpg) + +By inspecting this file, you can [identify][1] the number of physical processors, the number of cores per CPU, available CPU flags, and a number of other things. + +### 2. cpufreq-info ### + +The cpufreq-info command (which is part of **cpufrequtils** package) collects and reports CPU frequency information from the kernel/hardware. The command shows the hardware frequency that the CPU currently runs at, as well as the minimum/maximum CPU frequency allowed, CPUfreq policy/statistics, and so on. To check up on CPU #0: + + $ cpufreq-info -c 0 + +![](https://farm8.staticflickr.com/7484/16094667926_d979240081_c.jpg) + +### 3. cpuid ### + +The cpuid command-line utility is a dedicated CPU information tool that displays verbose information about CPU hardware by using [CPUID functions][2]. Reported information includes processor type/family, CPU extensions, cache/TLB configuration, power management features, etc. + + $ cpuid + +![](https://farm9.staticflickr.com/8563/15500753923_6f1b25e8e9_c.jpg) + +### 4. dmidecode ### + +The dmidecode command collects detailed information about system hardware directly from DMI data of the BIOS. Reported CPU information includes CPU vendor, version, CPU flags, maximum/current clock speed, (enabled) core count, L1/L2/L3 cache configuration, and so on. + + $ sudo dmidecode + +![](https://farm8.staticflickr.com/7503/16094667836_825b61d0e5_b.jpg) + +### 5. hardinfo ### + +The hardinfo is a GUI-based system information tool which can give you an easy-to-understand summary of your CPU hardware, as well as other hardware components of your system. + + $ hardinfo + +![](https://farm8.staticflickr.com/7482/15933041268_40ccc17407_b.jpg) + +### 6. i7z ### + +i7z is a real-time CPU reporting tool dedicated to Intel Core i3, i5 and i7 CPUs. It can display various per-core information in real time, such as Turbo Boost states, CPU frequencies, CPU power states, temperature measurements, and so on. i7z runs in either ncurses-based console mode or QT based GUI. + + $ sudo i7z + +![](https://farm8.staticflickr.com/7546/15534687744_1968dc2b18_c.jpg) + +### 8. likwid-topology ### + +[likwid][3] (Like I Knew What I'm Doing) is a collection of command-line tools to measure, configure and display hardware related properties. Among them is likwid-topology which shows CPU hardware (thread/cache/NUMA) topology information. It can also identify processor families (e.g., Intel Core 2, AMD Shanghai). + +![](https://farm8.staticflickr.com/7511/15934711707_5dc0793599_b.jpg) + +### 9. lscpu ### + +The lscpu command summarizes /etc/cpuinfo content in a more user-friendly format, e.g., the number of (online/offline) CPUs, cores, sockets, NUMA nodes. + + $ lscpu + +![](https://farm8.staticflickr.com/7501/15933173470_69e53b3021_b.jpg) + +### 10. lshw ### + +The **lshw** command is a comprehensive hardware query tool. Unlike other tools, lshw requires root privilege because it query DMI information in system BIOS. It can report the total number of cores and enabled cores, but miss out on information such as L1/L2/L3 cache configuration. The GTK version lshw-gtk is also available. + + $ sudo lshw -class processor + +![](https://farm9.staticflickr.com/8649/15498132484_a47c4e8cb3_c.jpg) + +### 11. lstopo ### + +The lstopo command (contained in [hwloc][4] package) visualizes the topology of the system which is composed of CPUs, cache, memory and I/O devices. This command is useful to identify the processor architecture and NUMA topology of the system. + + $ lstopo + +![](https://farm8.staticflickr.com/7490/15934399829_4012213734_z.jpg) + +### 12. numactl ### + +Originally developed to set the NUMA scheduling and memeory placement policy of Linux processes, the numactl command can also show information about NUMA topology of the CPU hardware from the command line. + + $ numactl --hardware + +![](https://farm8.staticflickr.com/7553/16094667876_9d7daa77a1_b.jpg) + +### 13. x86info ### + +x86info is a command-line tool for showing x86-based CPU information. Reported information includes CPU model, number of threads/cores, clock speed, TLB cache configuration, supported feature flags, etc. + + $ x86info --all + +![](https://farm8.staticflickr.com/7522/16131238626_d8a703c060_c.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/check-cpu-info-linux.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/how-to-find-number-of-cpu-cores-on.html +[2]:http://en.wikipedia.org/wiki/CPUID +[3]:http://xmodulo.com/identify-cpu-processor-architecture-linux.html +[4]:http://xmodulo.com/identify-cpu-processor-architecture-linux.html \ No newline at end of file diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md new file mode 100644 index 0000000000..5f58df570b --- /dev/null +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md @@ -0,0 +1,157 @@ +Linux FAQs with Answers--How to check disk space on Linux with df command +================================================================================ +> **Question**: I know I can use df command to check a file system's disk space usage on Linux. Can you show me practical examples of the df command so that I can make the most out of it? + +As far as disk storage is concerned, there are many command-line or GUI-based tools that can tell you about current disk space usage. These tools report on detailed disk utilization in various human-readable formats, such as easy-to-understand summary, detailed statistics, or [intuitive visualization][1]. If you simply want to know how much free disk space is available for different file systems, then df command is probably all you need. + +![](https://farm9.staticflickr.com/8632/15505309473_51bffec3f1_b.jpg) + +The df command can report on disk utilization of any "mounted" file system. There are different ways this command can be invoked. Here are some **useful** df **command examples**. + +### Display in Human-Readable Format ### + +By default, the df command reports disk space in 1K blocks, which is not easily interpretable. The "-h" parameter will make df print disk space in a more human-readable format (e.g., 100K, 200M, 3G). + + $ df -h + +---------- + + Filesystem Size Used Avail Use% Mounted on + /dev/mapper/ubuntu-root 909G 565G 299G 66% / + none 4.0K 0 4.0K 0% /sys/fs/cgroup + udev 3.9G 4.0K 3.9G 1% /dev + tmpfs 785M 1.2M 784M 1% /run + none 5.0M 0 5.0M 0% /run/lock + none 3.9G 63M 3.8G 2% /run/shm + none 100M 48K 100M 1% /run/user + /dev/sda1 228M 98M 118M 46% /boot + +### Display Inode Usage ### + +When you monitor disk usage, you must watch out for not only disk space, but also "inode" usage. In Linux, inode is a data structure used to store metadata of a particular file, and when a file system is created, a pre-defined number of inodes are allocated. This means that a file system can run out of space not only because big files use up all available space, but also because many small files use up all available inodes. To display inode usage, use "-i" option. + + $ df -i + +---------- + + Filesystem Inodes IUsed IFree IUse% Mounted on + /dev/mapper/ubuntu-root 60514304 1217535 59296769 3% / + none 1004417 13 1004404 1% /sys/fs/cgroup + udev 1000623 552 1000071 1% /dev + tmpfs 1004417 608 1003809 1% /run + none 1004417 11 1004406 1% /run/lock + none 1004417 288 1004129 1% /run/shm + none 1004417 28 1004389 1% /run/user + /dev/sda1 124496 346 124150 1% /boot + +### Display Disk Usage Grant Total ### + +By default, the df command shows disk utilization of individual file systems. If you want to know the total disk usage over all existing file systems, add "--total" option. + + $ df -h --total + +---------- + + Filesystem Size Used Avail Use% Mounted on + /dev/mapper/ubuntu-root 909G 565G 299G 66% / + none 4.0K 0 4.0K 0% /sys/fs/cgroup + udev 3.9G 4.0K 3.9G 1% /dev + tmpfs 785M 1.2M 784M 1% /run + none 5.0M 0 5.0M 0% /run/lock + none 3.9G 62M 3.8G 2% /run/shm + none 100M 48K 100M 1% /run/user + /dev/sda1 228M 98M 118M 46% /boot + total 918G 565G 307G 65% - + +### Display File System Types ### + +By default, the df command does not show file system type information. Use "-T" option to add file system types to the output. + + $ df -T + +---------- + + Filesystem Type 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root ext4 952893348 591583292 312882844 66% / + none tmpfs 4 0 4 0% /sys/fs/cgroup + udev devtmpfs 4002492 4 4002488 1% /dev + tmpfs tmpfs 803536 1196 802340 1% /run + none tmpfs 5120 0 5120 0% /run/lock + none tmpfs 4017668 60176 3957492 2% /run/shm + none tmpfs 102400 48 102352 1% /run/user + /dev/sda1 ext2 233191 100025 120725 46% /boot + +### Include or Exclude a Specific File System Type ### + +If you want to know free space of a specific file system type, use "-t " option. You can use this option multiple times to include more than one file system types. + + $ df -t ext2 -t ext4 + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591583380 312882756 66% / + /dev/sda1 233191 100025 120725 46% /boot + +To exclude a specific file system type, use "-x " option. You can use this option multiple times as well. + + $ df -x tmpfs + +### Display Disk Usage of a Specific Mount Point ### + +If you specify a mount point with df, it will report disk usage of the file system mounted at that location. If you specify a regular file (or a directory) instead of a mount point, df will display disk utilization of the file system which contains the file (or the directory). + + $ df / + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / + +---------- + + $ df /home/dev + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / + +### Display Information about Dummy File Systems ### + +If you want to display disk space information for all existing file systems including dummy file systems, use "-a" option. Here, dummy file systems refer to pseudo file systems which do not have corresponding physical devices, e.g., tmpfs, cgroup virtual file system or FUSE file systems. These dummy filesystems have size of 0, and are not reported by df without "-a" option. + + $ df -a + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591578716 312887420 66% / + proc 0 0 0 - /proc + sysfs 0 0 0 - /sys + none 4 0 4 0% /sys/fs/cgroup + none 0 0 0 - /sys/fs/fuse/connections + none 0 0 0 - /sys/kernel/debug + none 0 0 0 - /sys/kernel/security + udev 4002492 4 4002488 1% /dev + devpts 0 0 0 - /dev/pts + tmpfs 803536 1196 802340 1% /run + none 5120 0 5120 0% /run/lock + none 4017668 58144 3959524 2% /run/shm + none 102400 48 102352 1% /run/user + none 0 0 0 - /sys/fs/pstore + cgroup 0 0 0 - /sys/fs/cgroup/cpuset + cgroup 0 0 0 - /sys/fs/cgroup/hugetlb + /dev/sda1 233191 100025 120725 46% /boot + vmware-vmblock 0 0 0 - /run/vmblock-fuse + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/check-disk-space-linux-df-command.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/visualize-disk-usage-linux.html \ No newline at end of file From d91316c19c6668b82cfabf9f89e4ad07c7193202 Mon Sep 17 00:00:00 2001 From: ZhouJ-sh <32321321@qq.com> Date: Wed, 21 Jan 2015 18:09:27 +0800 Subject: [PATCH 010/725] translated 20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md --- ... And Persistent Xubuntu Linux USB Drive.md | 174 ++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md diff --git a/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md b/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md new file mode 100644 index 0000000000..8025e91aa1 --- /dev/null +++ b/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md @@ -0,0 +1,174 @@ +3种创建轻量、持久化的Xubuntu Linux USB系统盘的方法 +================================================================================ + +### 使用Universal USB Install创建持久化USB Xubuntu系统盘 ### + +![](http://f.tqn.com/y/linux/1/S/2/J/1/xubuntudesktop.png) + +这个教程为你介绍如何使用Xubuntu Linux创建一个轻量并且[持久化][1]的Linux USB系统盘。 + +> 译者注:持久化Linux USB系统盘(Persistent Linux USB drive),安装在优盘的Linux系统,允许用户保存数据到优盘而不是仅仅将这些修改留在内存中。这些数据可以在重启后恢复并且重新使用,甚至是在其他的机器上面启动也没有关系。一般情况下,持久化系统盘会安装一个压缩过的Linux操作系统。 + +为什么你需要做这些事情呢,这里有5个很好的理由: + +1. 你想要在你的电脑上安装一个轻量的并且功能完善的Linux版本。 +2. 你的电脑没有硬盘,那么一个Linux USB系统盘就可以让这台电脑摆脱被扔到垃圾堆的命运。 +3. 你想体验一下Linux,但是你却不想花太多的时间去准备。 +4. 你想创建一个USB系统恢复盘,并且在优盘上安装一些特定的应用程序。 +5. 你想要一个可以装在屁股口袋或者可以挂在钥匙圈上面的可定制的Linux版本。 + +现在,我们有了充足的理由,那么开始做一些准备工作吧。 + +如果你使用的是Windows: + +1. 下载Xubuntu。 +2. 下载Universal USB Installer。 +3. 插入一个空的优盘。 +4. 使用Universal USB Installer创建一个常驻系统启动盘。 + +如果你使用的是Ubuntu: + +1. 下载Xubuntu。 +2. 使用Ubuntu Startup Creator。 + +如果你使用的是其他版本的Linux: + +1. 下载Xubuntu。 +2. 使用UNetbootin。 + +还有一些场景,可能需要使用命令行,会更难一些,但是上面列的三种应该已经可以满足大部分的情况。 + +### 下载Xubuntu和Universal USB Installer ### + +![](http://f.tqn.com/y/linux/1/S/G/J/1/xubuntuwebsite.JPG) + +访问[Xubuntu网站][2],然后选一个你喜欢的版本下载。 + +目前有两个版本可供使用: + +- [Trusty Tahr (14.04 LTS)][3] +- [Utopic Unicorn (14.10)][4] + +14.04版是一个长期维护的版本,维护周期会持续3年。14.10是最新版本,但是只提供9个月的维护。 + +你选择了下载站点以后,会提示你选择32位版本或者64位版本。如果你的电脑是32位,就选32位版本,同样,如果你的电脑是64位选64位版本就行了。 + +[点击这里,有一个教程来教你辨别你的电脑是32位还是64位][5]。 + +可以从[Pendrive Linux网站][6]下载Universal USB Installer,点击download链接,过一会下载页面就会弹出来了。 + +### 使用Universal USB Installer创建一个Xubuntu启动优盘 ### + +![](http://f.tqn.com/y/linux/1/S/-/J/1/uui1l.JPG) + +下载完Universal USB Installer和Xubuntu以后,运行Universal USB Installer,出现安全警告时,点击“Accept”。 + +Universal USB Installer用来创建一个持久化的Xubuntu启动优盘。 + +第一屏是许可协议。点击“I Agree”继续。 + +![](http://f.tqn.com/y/linux/1/S/0/J/1/uui2l.JPG) + +Universal USB Installer主界面出现以后,从下拉列表中选择你想要的配置(i.e Xubuntu),第二步,点击“Browse”选择你下载的ISO文件的路径。 + +在电脑上插入一个空的优盘,然后选中“Showing all drives”复选框。 + +在下拉列表中选中你的优盘(一定要确定选的是正确的盘符哦)。如果优盘不是空的,选中格式化复选框。 + +> 注:格式化优盘会清除优盘上的所有数据,首先一定要确认是否以及备份过相关的数据。 + +在第四步中选择用于保存“持久化”系统数据的存储空间大小。 + +点击“Create”按钮继续。 + +![](http://f.tqn.com/y/linux/1/S/1/J/1/uu3l.JPG) + +最后一个界面提示你如果点击“Yes”,那么将会直接应用你的配置。 + +这是停止安装的最后一个机会,一定要确定你选了正确的优盘盘符,并且优盘上没有需要备份的其他文件。 + +点击“Yes”,然后耐心等待优盘创建完成。 + +> 注:创建持久化保存空间会花费一些时间,并且这时候进度条不会继续滚动。 + +这个过程完成以后,重启电脑,如果从优盘启动,就会加载Xubuntu。 + +### 使用Ubuntu的Startup Disk Creator创建Xubuntu启动优盘 ### + +![](http://f.tqn.com/y/linux/1/S/H/J/1/ubuntustartupdiskcreator.png) + +如果你已经安装了Ubuntu,那么创建持久化USB Xubuntu系统盘的最简单的办法就是使用Startup Disk Creator。 + +按下超级键(Windows键),打开Dash,搜索“Startup Disk Creator”,图标出现以后点击它。 + +如果你对Ubuntu Dash不太熟悉,你可以[点击这里,查看一个完整的教程][7]。 + +Startup Disk Creator使用起来很简单。 + +界面被划分成两个部分。在上面部分指定下载的系统盘路径,在下面指定安装的优盘。 + +首先,点击“Other”按钮,第二步,选择你所下载的Xubuntu ISO文件。 + +然后插入优盘,点击“Erase”按钮清除优盘数据。 + +> 注:点击“Erase”会删除优盘中所有的数据,记得先备份数据。 + +选中“Stored in reserved extra sapce”单选按钮,然后拖动“How much”来确定你想要用来存储“持久化”数据的空间。 + +点击“Make Startup Disk”。 + +你创建的过程中,你可能需要输入几次你的系统密码,USB系统盘创建完成以后,你就可以使用它启动到Xubuntu了。 + +### 使用UNetbootin创建持久化Xubuntu系统盘 ### + +![](http://f.tqn.com/y/linux/1/S/I/J/1/unetbootin1.png) + +我要介绍的最后一个工具是UNetbootin,这个工具在Windows和Linux上都可以使用。 + +个人来说,在Windows系统上面我喜欢用Universal USB Installer,但Linux的话,UNetbootin更合适一些。 + +> 注:UNetbootin并不是100%完美的,它并不支持所有的Linux发行版。 + +Windows平台可以点击[这里][8]下载UNetbootin。 + +Linux平台可以使用package manager安装UNetbootin。 + +确认你的优盘已经连接到电脑上,确认优盘已经格式化,并且在优盘上没有其他的数据。 + +在Windows平台上运行UNetbootin只需要双击可执行程序即可,在Linux运行的话则需要提升权限。 + +在Linux上如何运行取决于你使用的是何种桌面环境以及Linux发行版。从命令行运行的话,输入下列命令: + +> sudo unetbootin + +UNetbootin的界面分为两个部分。你可以在上面的部分选择一个Linux发行版,然后下载它,如果已经下载了某个发行版,可以在下半部分选择已经下载的系统盘。 + +点击“Diskimage”单选框,然后点击三个点的按钮。找到已经下载的Xubuntu ISO文件。路径会显示到按钮旁边的文本框里面。 + +修改“Space used to preserve files across reboots”的值,来指定你想要用来存储“持久化”数据的空间大小。 + +类型选择USB drive,然后选择优盘的盘符。 + +点击“OK”来创建一个持久化Xubuntu启动优盘。 + +创建的过程要花一些时间,创建完成以后,你就可以通过优盘启动到Xubuntu系统了。 + +如果你想要创建一个支持UEFI的Xubuntu启动优盘,[照着这个教程来做][8],只需要把Ubuntu ISO替换为Xubuntu ISO就可以了。 + +via : http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xubuntu-Linux-USB-Drive.htm + +作者:[Gary Newell][a] +译者:[zhouj-sh](https://github.com/Zhouj-sh) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:http://www.pendrivelinux.com/what-is-persistent-linux/ +[2]:http://xubuntu.org/getxubuntu/ +[3]:http://www.dedoimedo.com/computers/xubuntu-trusty.html +[4]:http://www.dedoimedo.com/computers/xubuntu-utopic.html +[5]:http://pcsupport.about.com/od/fixtheproblem/f/32-bit-64-bit-windows.htm +[6]:http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ +[7]:http://linux.about.com/od/howtos/fl/Learn-Ubuntu-The-Unity-Dash.htm +[8]:http://linux.about.com/od/howtos/ss/How-To-Create-A-UEFI-Bootable-Ubuntu-USB-Drive-Using-Windows.htm \ No newline at end of file From 19aa9bc619e1668987695e831f1fd4a99a7903c3 Mon Sep 17 00:00:00 2001 From: ZhouJ-sh <32321321@qq.com> Date: Wed, 21 Jan 2015 18:10:28 +0800 Subject: [PATCH 011/725] translate complete , delete sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md --- ...tweight And Persistent Xubuntu Linux USB Drive.md | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md diff --git a/sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md b/sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md deleted file mode 100644 index 05f307c9d5..0000000000 --- a/sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md +++ /dev/null @@ -1,12 +0,0 @@ -3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive -================================================================================ - -via : http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xubuntu-Linux-USB-Drive.htm - - - -作者:[Gary Newell][a] -译者:[zhouj-sh](https://github.com/Zhouj-sh) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From a9683a8267858fa2ef06528f500897f3de4a1ea3 Mon Sep 17 00:00:00 2001 From: ZhouJ-sh <32321321@qq.com> Date: Wed, 21 Jan 2015 18:16:51 +0800 Subject: [PATCH 012/725] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md b/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md index 25396e1798..c739b3b702 100644 --- a/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md +++ b/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md @@ -12,7 +12,7 @@ Ubuntu vs Xubuntu。Ubuntu拥有漂亮的桌面体验以及强大的应用程序 [Ubuntu][1]以及[Xubuntu][2]是针对不同目的开发的操作系统,为什么我会强调这一点,是为了说明什么时候或者为什么你应该使用Ubuntu以及什么时候应该使用Xubuntu。 -比较这两个操作系统就像比较[劳斯莱斯][3]与[保时捷][4]。这两个都是很棒的车,但是如果把劳斯莱斯给一个车迷,他们也许会卖掉它买个其他的车,同样,如果把保时捷给舒格勋爵或者休·海夫纳这类人可能也不那么合适。 +比较这两个操作系统就像比较[劳斯莱斯][3]与[保时捷][4]。这两个都是很棒的车,但是如果把劳斯莱斯给一个赛车迷,他们也许会卖掉它买个其他的车,同样,如果把保时捷给舒格勋爵或者休·海夫纳这类人可能也不那么合适。 Ubuntu拥有一个适用性很强的桌面环境,叫做Unity,并且默认会安装一些很棒的Linux应用程序,包括Rhythmbox以及[LibreOffic][5]。Ubuntu就像是劳斯莱斯。它为舒适而生,并且尽可能的提供从A到B的最时髦的方法。 @@ -28,7 +28,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 但是,如果你发现Unity没办法满足你的要求,并且感觉你的计算机在运行Ubuntu时或多或少有一些性能压力,那么当然就可以考虑考虑Xubuntu。 -上周我发了一篇文章介绍怎么创建Xubuntu启动优盘(译者注:翻译ing),并且也写了一篇[安装Xubuntu的教程][b](译者注:已经完成翻译,链接为github地址)。 +上周我发了一篇文章介绍怎么[创建Xubuntu启动优盘][c],并且也写了一篇[安装Xubuntu的教程][b](译者注:链接为github地址)。 不过,如果你已经安装了Ubuntu,就不用这么费事照着教程再来一遍了。你只需要继续读完这篇文章,就可以在Ubuntu里面安装一个更合适的解决方案。 @@ -147,6 +147,7 @@ via : http://linux.about.com/od/dist/fl/Ubuntu-With-XFCE-vs-Xubuntu-Linux.htm [a]:http://linux.about.com/bio/Gary-Newell-132058.htm [b]:https://github.com/ZhouJ-sh/TranslateProject/blob/0c4ad0bc8e79e28c1f7f8ccf805708829baa8ea9/translated/share/20150116%20A%20Step%20By%20Step%20Guide%20To%20Installing%20Xubuntu%20Linux.md +[c]:https://github.com/ZhouJ-sh/TranslateProject/blob/d91316c19c6668b82cfabf9f89e4ad07c7193202/translated/share/20150119%203%20Ways%20To%20Create%20A%20Lightweight%20And%20Persistent%20Xubuntu%20Linux%20USB%20Drive.md [1]:http://www.everydaylinuxuser.com/2014/11/an-everyday-linux-user-review-of-ubuntu.html [2]:http://www.everydaylinuxuser.com/2015/01/an-everyday-linux-user-review-of.html [3]:http://exoticcars.about.com/od/overviewsofmaker1/p/RollsHistory.htm From a2894417c911445cca786083971bc23aaa55706b Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Wed, 21 Jan 2015 18:44:31 +0800 Subject: [PATCH 013/725] =?UTF-8?q?=E9=80=89=E9=A2=98=20If=20a=2032-bit=20?= =?UTF-8?q?integer=20overflows,=20can=20we=20use=20a=2040-bit=20structure?= =?UTF-8?q?=20instead=20of=20a=2064-bit=20long=20one=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150121 If a 32-bit integer overflows.md | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 sources/talk/20150121 If a 32-bit integer overflows.md diff --git a/sources/talk/20150121 If a 32-bit integer overflows.md b/sources/talk/20150121 If a 32-bit integer overflows.md new file mode 100644 index 0000000000..3cff4cd3b8 --- /dev/null +++ b/sources/talk/20150121 If a 32-bit integer overflows.md @@ -0,0 +1,84 @@ +If a 32-bit integer overflows, can we use a 40-bit structure instead of a 64-bit long one? +--------- + +#Q: + +If, say, a 32-bit integer is overflowing, instead of upgrading int to long, can we make use of some 40-bit type if we need a range only within 240, so that we save 24 (64-40) bits for every integer? + +If so, how? + +I have to deal with billions and space is a bigger constraint. + +#A: + +##Yes, but... + +It is certainly possible, but it is usually nonsensical (for any program that doesn't use billions of these numbers): + +```C +#include // don't want to rely on something like long long +struct bad_idea +{ + uint64_t var : 40; +}; +``` + +Here, var will indeed have a width of 40 bits at the expense of much less efficient code generated (it turns out that "much" is very much wrong -- the measured overhead is a mere 1-2%, see timings below), and usually to no avail. Unless you have need for another 24-bit value (or an 8 and 16 bit value) which you wish to pack into the same structure, alignment will forfeit anything that you may gain. + +In any case, unless you have billions of these, the effective difference in memory consumption will not be noticeable (but the extra code needed to manage the bit field will be noticeable!). + +###Note: + +The question has in the mean time been updated to reflect that indeed billions of numbers are needed, so this may be a viable thing to do, presumed that you take measures not to lose the gains due to structure alignment and padding, i.e. either by storing something else in the remaining 24 bits or by storing your 40-bit values in structures of 8 each or multiples thereof). +Saving three bytes a billion times is worthwhile as it will require noticeably fewer memory pages and thus cause fewer cache and TLB misses, and above all page faults (a single page fault weighting tens of millions instructions). + +While the above snippet does not make use of the remaining 24 bits (it merely demonstrates the "use 40 bits" part), something akin to the following will be necessary to really make the approach useful in a sense of preserving memory -- presumed that you indeed have other "useful" data to put in the holes: + +```C +struct using_gaps +{ + uint64_t var : 40; + uint64_t useful_uint16 : 16; + uint64_t char_or_bool : 8; +}; +``` + +Structure size and alignment will be equal to a 64 bit integer, so nothing is wasted if you make e.g. an array of a billion such structures (even without using compiler-specific extensions). If you don't have use for an 8-bit value, you could also use an 48-bit and a 16-bit value (giving a bigger overflow margin). +Alternatively you could, at the expense of usability, put 8 40-bit values into a structure (least common multiple of 40 and 64 being 320 = 8*40). Of course then your code which accesses elements in the array of structures will become much more complicated (though one could probably implement an operator[] that restores the linear array functionality and hides the structure complexity). + +Update: +Wrote a quick test suite, just to see what overhead the bitfields (and operator overloading with bitfield refs) would have. Posted code (due to length) at gcc.godbolt.org, test output from my Win7-64 machine is: + +```TXT +Running test for array size = 1048576 +what alloc seq(w) seq(r) rand(w) rand(r) free +----------------------------------------------------------- +uint32_t 0 2 1 35 35 1 +uint64_t 0 3 3 35 35 1 +bad40_t 0 5 3 35 35 1 +packed40_t 0 7 4 48 49 1 + + +Running test for array size = 16777216 +what alloc seq(w) seq(r) rand(w) rand(r) free +----------------------------------------------------------- +uint32_t 0 38 14 560 555 8 +uint64_t 0 81 22 565 554 17 +bad40_t 0 85 25 565 561 16 +packed40_t 0 151 75 765 774 16 + + +Running test for array size = 134217728 +what alloc seq(w) seq(r) rand(w) rand(r) free +----------------------------------------------------------- +uint32_t 0 312 100 4480 4441 65 +uint64_t 0 648 172 4482 4490 130 +bad40_t 0 682 193 4573 4492 130 +packed40_t 0 1164 552 6181 6176 130 +``` + +What one can see is that the extra overhead of bitfields is neglegible, but the operator overloading with bitfield reference as a convenience thing is rather drastic (about 3x increase) when accessing data linearly in a cache-friendly manner. On the other hand, on random access it barely even matters. + +These timings suggest that simply using 64-bit integers would be better since they are still faster overall than bitfields (despite touching more memory), but of course they do not take into account the cost of page faults with much bigger datasets. It might look very different once you run out of physical RAM (I didn't test that). + +FROM:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) \ No newline at end of file From 3679969319489cd184b9150bf6272c00869fd64f Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Wed, 21 Jan 2015 18:58:45 +0800 Subject: [PATCH 014/725] =?UTF-8?q?=E9=80=89=E9=A2=98=20Did=20this=20JavaS?= =?UTF-8?q?cript=20break=20the=20console=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/talk/20150121 Did this JavaScript break the console.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sources/talk/20150121 Did this JavaScript break the console.md diff --git a/sources/talk/20150121 Did this JavaScript break the console.md b/sources/talk/20150121 Did this JavaScript break the console.md new file mode 100644 index 0000000000..e69de29bb2 From 3f513acb8a34415513fe5db053d8de89ffcbdfba Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Wed, 21 Jan 2015 18:59:46 +0800 Subject: [PATCH 015/725] =?UTF-8?q?=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1 Did this JavaScript break the console.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/sources/talk/20150121 Did this JavaScript break the console.md b/sources/talk/20150121 Did this JavaScript break the console.md index e69de29bb2..4fede3babd 100644 --- a/sources/talk/20150121 Did this JavaScript break the console.md +++ b/sources/talk/20150121 Did this JavaScript break the console.md @@ -0,0 +1,82 @@ +Did this JavaScript break the console? +--------- + +#Q: + +Just doing some JavaScript stuff in google chrome (don't want to try in other browsers for now, in case this is really doing real damage) and I'm not sure why this seemed to break my console. + +```javascript +>var x = "http://www.foo.bar/q?name=%%this%%"; +x +``` + +After x (and enter) the console stops working... I restarted chrome and now when I do a simple + +```javascript +console.clear(); +``` + +It's giving me + +```javascript +Console was cleared +``` + +And not clearing the console. Now in my scripts console.log's do not register and I'm wondering what is going on. 99% sure it has to do with the double percent signs (%%). + +Anyone know what I did wrong or better yet, how to fix the console? + +[A bug report for this issue has been filed here.](https://code.google.com/p/chromium/issues/detail?id=446975) + +Edit: Feeling pretty dumb, but I had Preserve log checked... That's why the console wasn't clearing. + +#A: + +As discussed in the comments, there are actually many different ways of constructing a string that causes this issue, and it is not necessary for there to be two percent signs in most cases. + +```TXT +http://example.com/% +http://%%% +http://ab% +http://%ab +http://%zz +``` + +However, it's not just the presence of a percent sign that breaks the Chrome console, as when we enter the following well-formed URL, the console continues to work properly and produces a clickable link. + +```TXT +http://ab%20cd +``` + +Additionally, the strings `http://%`, and `http://%%` will also print properly, since Chrome will not auto-link a URL-link string unless the [`http://`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI) is followed by at least 3 characters. + +From here I hypothesized that the issue must be in the process of linking a URL string in the console, likely in the process of decoding a malformed URL. I remembered that the JavaScript function `decodeURI` will throw an exception if given a malformed URL, and since Chrome's developer tools are largely written in JavaScript, could this be the issue that is evidently crashing the developer console? + +To test this theory, I ran Chrome by the command link, to see if any errors were being logged. + +Indeed, the same error you would see if you ran decodeURI on a malformed URL (i.e. decodeURI('http://example.com/%')) was being printed to the console: + +>[4810:1287:0107/164725:ERROR:CONSOLE(683)] "Uncaught URIError: URI malformed", source: chrome-devtools://devtools/bundled/devtools.js (683) +>So, I opened the URL 'chrome-devtools://devtools/bundled/devtools.js' in Chrome, and on line 683, I found the following. + +```javascript +{var parsedURL=new WebInspector.ParsedURL(decodeURI(url));var origin;var folderPath;var name;if(parsedURL.isValid){origin=parsedURL.scheme+"://"+parsedURL.host;if(parsedURL.port) +``` + +As we can see, `decodeURI(url)` is being called on the URL without any error checking, thus throwing the exception and crashing the developer console. + +A real fix for this issue will come from adding error handling to the Chrome console code, but in the meantime, one way to avoid the issue would be to wrap the string in a complex data type like an array to prevent parsing when logging. + +```javascript +var x = "http://example.com/%"; +console.log([x]); +``` + +Thankfully, the broken console issue does not persist once the tab is closed, and will not affect other tabs. + +###Update: + +Apparently, the issue can persist across tabs and restarts if Preserve Log is checked. Uncheck this if you are having this issue. + +FROM:[stackoverflow](http://stackoverflow.com/questions/27828804/did-this-javascript-break-the-console/27830948#27830948) \ No newline at end of file From 489b22badd6f189969741b530d99e3d9bb807ad9 Mon Sep 17 00:00:00 2001 From: Tao Meng Date: Wed, 21 Jan 2015 19:50:56 +0800 Subject: [PATCH 016/725] Translating Linux FAQs with Answers--How to check disk space on Linux with df command by mtunique Translating Linux FAQs with Answers--How to check disk space on Linux with df command by mtunique --- ...nswers--How to check disk space on Linux with df command.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md index 5f58df570b..ef10342238 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md @@ -1,3 +1,4 @@ +translating by mtunique Linux FAQs with Answers--How to check disk space on Linux with df command ================================================================================ > **Question**: I know I can use df command to check a file system's disk space usage on Linux. Can you show me practical examples of the df command so that I can make the most out of it? @@ -154,4 +155,4 @@ via: http://ask.xmodulo.com/check-disk-space-linux-df-command.html 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[1]:http://xmodulo.com/visualize-disk-usage-linux.html \ No newline at end of file +[1]:http://xmodulo.com/visualize-disk-usage-linux.html From 4885bae1f7c284ec27cdbfbc827b44b9214b20bd Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Wed, 21 Jan 2015 20:03:31 +0800 Subject: [PATCH 017/725] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...121 Did this JavaScript break the console.md | 17 +++++++++++++---- .../20150121 If a 32-bit integer overflows.md | 13 ++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/sources/talk/20150121 Did this JavaScript break the console.md b/sources/talk/20150121 Did this JavaScript break the console.md index 4fede3babd..72aff246d5 100644 --- a/sources/talk/20150121 Did this JavaScript break the console.md +++ b/sources/talk/20150121 Did this JavaScript break the console.md @@ -27,8 +27,7 @@ And not clearing the console. Now in my scripts console.log's do not register an Anyone know what I did wrong or better yet, how to fix the console? -[A bug report for this issue has been filed here.](https://code.google.com/p/chromium/issues/detail?id=446975) - +[A bug report for this issue has been filed here.][1] Edit: Feeling pretty dumb, but I had Preserve log checked... That's why the console wasn't clearing. #A: @@ -49,7 +48,7 @@ However, it's not just the presence of a percent sign that breaks the Chrome con http://ab%20cd ``` -Additionally, the strings `http://%`, and `http://%%` will also print properly, since Chrome will not auto-link a URL-link string unless the [`http://`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI) is followed by at least 3 characters. +Additionally, the strings `http://%`, and `http://%%` will also print properly, since Chrome will not auto-link a URL-link string unless the [`http://`][2] is followed by at least 3 characters. From here I hypothesized that the issue must be in the process of linking a URL string in the console, likely in the process of decoding a malformed URL. I remembered that the JavaScript function `decodeURI` will throw an exception if given a malformed URL, and since Chrome's developer tools are largely written in JavaScript, could this be the issue that is evidently crashing the developer console? @@ -79,4 +78,14 @@ Thankfully, the broken console issue does not persist once the tab is closed, an Apparently, the issue can persist across tabs and restarts if Preserve Log is checked. Uncheck this if you are having this issue. -FROM:[stackoverflow](http://stackoverflow.com/questions/27828804/did-this-javascript-break-the-console/27830948#27830948) \ No newline at end of file +via:[stackoverflow](http://stackoverflow.com/questions/27828804/did-this-javascript-break-the-console/27830948#27830948) + +作者:[Alexander O'Mara][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a:](http://stackoverflow.com/users/3155639/alexander-omara) +[1:](https://code.google.com/p/chromium/issues/detail?id=446975) +[2:](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI) \ No newline at end of file diff --git a/sources/talk/20150121 If a 32-bit integer overflows.md b/sources/talk/20150121 If a 32-bit integer overflows.md index 3cff4cd3b8..e517b12d03 100644 --- a/sources/talk/20150121 If a 32-bit integer overflows.md +++ b/sources/talk/20150121 If a 32-bit integer overflows.md @@ -81,4 +81,15 @@ What one can see is that the extra overhead of bitfields is neglegible, but the These timings suggest that simply using 64-bit integers would be better since they are still faster overall than bitfields (despite touching more memory), but of course they do not take into account the cost of page faults with much bigger datasets. It might look very different once you run out of physical RAM (I didn't test that). -FROM:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) \ No newline at end of file +------ + +via:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) + +作者:[Damon][a][Michael Kohne][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a:](http://stackoverflow.com/users/572743/damon) +[b:](http://stackoverflow.com/users/5801/michael-kohne) \ No newline at end of file From 1c9a86bf197214b3b0fb9ec92e811b4a59d9a557 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Wed, 21 Jan 2015 20:03:31 +0800 Subject: [PATCH 018/725] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...121 Did this JavaScript break the console.md | 17 +++++++++++++---- .../20150121 If a 32-bit integer overflows.md | 13 ++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/sources/talk/20150121 Did this JavaScript break the console.md b/sources/talk/20150121 Did this JavaScript break the console.md index 4fede3babd..aab924ab33 100644 --- a/sources/talk/20150121 Did this JavaScript break the console.md +++ b/sources/talk/20150121 Did this JavaScript break the console.md @@ -27,8 +27,7 @@ And not clearing the console. Now in my scripts console.log's do not register an Anyone know what I did wrong or better yet, how to fix the console? -[A bug report for this issue has been filed here.](https://code.google.com/p/chromium/issues/detail?id=446975) - +[A bug report for this issue has been filed here.][1] Edit: Feeling pretty dumb, but I had Preserve log checked... That's why the console wasn't clearing. #A: @@ -49,7 +48,7 @@ However, it's not just the presence of a percent sign that breaks the Chrome con http://ab%20cd ``` -Additionally, the strings `http://%`, and `http://%%` will also print properly, since Chrome will not auto-link a URL-link string unless the [`http://`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI) is followed by at least 3 characters. +Additionally, the strings `http://%`, and `http://%%` will also print properly, since Chrome will not auto-link a URL-link string unless the [`http://`][2] is followed by at least 3 characters. From here I hypothesized that the issue must be in the process of linking a URL string in the console, likely in the process of decoding a malformed URL. I remembered that the JavaScript function `decodeURI` will throw an exception if given a malformed URL, and since Chrome's developer tools are largely written in JavaScript, could this be the issue that is evidently crashing the developer console? @@ -79,4 +78,14 @@ Thankfully, the broken console issue does not persist once the tab is closed, an Apparently, the issue can persist across tabs and restarts if Preserve Log is checked. Uncheck this if you are having this issue. -FROM:[stackoverflow](http://stackoverflow.com/questions/27828804/did-this-javascript-break-the-console/27830948#27830948) \ No newline at end of file +via:[stackoverflow](http://stackoverflow.com/questions/27828804/did-this-javascript-break-the-console/27830948#27830948) + +作者:[Alexander O'Mara][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/3155639/alexander-omara +[1]:https://code.google.com/p/chromium/issues/detail?id=446975 +[2]:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI \ No newline at end of file diff --git a/sources/talk/20150121 If a 32-bit integer overflows.md b/sources/talk/20150121 If a 32-bit integer overflows.md index 3cff4cd3b8..bf7c447f25 100644 --- a/sources/talk/20150121 If a 32-bit integer overflows.md +++ b/sources/talk/20150121 If a 32-bit integer overflows.md @@ -81,4 +81,15 @@ What one can see is that the extra overhead of bitfields is neglegible, but the These timings suggest that simply using 64-bit integers would be better since they are still faster overall than bitfields (despite touching more memory), but of course they do not take into account the cost of page faults with much bigger datasets. It might look very different once you run out of physical RAM (I didn't test that). -FROM:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) \ No newline at end of file +------ + +via:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) + +作者:[Damon][a][Michael Kohne][b] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/572743/damon +[b]:http://stackoverflow.com/users/5801/michael-kohne \ No newline at end of file From 3469c614d6bf530b78f812acaefbf52c34b6ec92 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Wed, 21 Jan 2015 20:37:30 +0800 Subject: [PATCH 019/725] translating --- ...nswers--How to boot into command line on Ubuntu or Debian.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md b/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md index 606fb655e8..642f2142e6 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md @@ -1,3 +1,5 @@ +Translating----geekpi + Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian ================================================================================ > **Question**: I am running Ubuntu desktop, but I want to boot straight into text-mode console temporarily. What is a convenient way to disable desktop GUI and boot into a terminal? From 82545984d3934ade4d1d5c7faa0bf35e0e9c7415 Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Wed, 21 Jan 2015 21:15:58 +0800 Subject: [PATCH 020/725] Update 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md start translating --- ... To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md b/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md index 901dcd951c..4dfa716ed5 100644 --- a/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md +++ b/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md @@ -1,3 +1,5 @@ +Medusar translating + How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps ================================================================================ ### Introduction ### @@ -177,4 +179,4 @@ via: http://www.everydaylinuxuser.com/2015/01/how-to-recover-windows-7-and-delet 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [1]:http://linux.about.com/od/LinuxNewbieDesktopGuide/ss/Create-A-Recovery-Drive-For-All-Versions-Of-Windows.htm -[2]:http://www.amazon.co.uk/gp/product/B0006L2HTK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1634&creative=6738&creativeASIN=B0006L2HTK&linkCode=as2&tag=evelinuse-21&linkId=3R363EA63XB4Z3IL \ No newline at end of file +[2]:http://www.amazon.co.uk/gp/product/B0006L2HTK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1634&creative=6738&creativeASIN=B0006L2HTK&linkCode=as2&tag=evelinuse-21&linkId=3R363EA63XB4Z3IL From f8f56a5a5be134027114a52d07053e4c52e3153a Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Wed, 21 Jan 2015 21:25:40 +0800 Subject: [PATCH 021/725] translated --- ...t into command line on Ubuntu or Debian.md | 66 ------------------- ...t into command line on Ubuntu or Debian.md | 64 ++++++++++++++++++ 2 files changed, 64 insertions(+), 66 deletions(-) delete mode 100644 sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md create mode 100644 translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md b/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md deleted file mode 100644 index 642f2142e6..0000000000 --- a/sources/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md +++ /dev/null @@ -1,66 +0,0 @@ -Translating----geekpi - -Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian -================================================================================ -> **Question**: I am running Ubuntu desktop, but I want to boot straight into text-mode console temporarily. What is a convenient way to disable desktop GUI and boot into a terminal? - -Linux desktop comes with a display manager (e.g., GDM, KDM, LightDM), which lets the desktop machine automatically boot into a GUI-based login environment. However, what if you want to disable GUI and boot straight into a text-mode console? For example, you are troubleshooting desktop related issues, or want to run a heavy-duty application that does not require desktop GUI. - -Note that you can temporarily switch from desktop GUI to a virtual console by pressing Ctrl+Alt+F1 to F6. However, in this case your desktop GUI will be still running in the background, and thus is different from pure text-mode booting. - -On Ubuntu or Debian desktop, you can enable text-mode booting by passing appropriate kernel parameters. - -### Boot into Command-line Temporarily ### - -If you want to disable desktop GUI and boot in text-mode just one-time, you can use GRUB menu interface. - -First, power on your desktop. When you see the initial GRUB menu, press 'e'. - -![](https://farm8.staticflickr.com/7490/16112246542_bc1875a397_z.jpg) - -This will lead you to the next screen, where you can modify kernel booting parameters. Scroll down the screen to look for a line that begins with "linux", which indicates a list of kernel parameters. Remove from the list "quiet" and "splash". Add "text" in the list instead. - -![](https://farm8.staticflickr.com/7471/15493282603_8a70f70af2_z.jpg) - -The updated kernel parameter list looks like the following. Press Ctrl+x to continue booting. This will enable one-time console booting in verbose mode. - -![](https://farm8.staticflickr.com/7570/15925676530_b11af59243_z.jpg) - -Boot into Command-line Permanently - -If you want to boot into command-line permanently, you need to [update GRUB configuration][1] which defines kernel booting parameters. - -Open a default GRUB config file with a text editor. - - $ sudo vi /etc/default/grub - -Look for a line that starts with GRUB_CMDLINE_LINUX_DEFAULT, and comment out that line by prepending # sign. This will disable the initial splash screen, and enable verbose mode (i.e., showing the detailed booting procedure). - -Then change GRUB_CMDLINE_LINUX="" to: - - GRUB_CMDLINE_LINUX="text" - -Next, uncomment the line that says "#GRUB_TERMINAL=console". - -The updated GRUB defult configuration looks like the following. - -![](https://farm9.staticflickr.com/8673/16107564442_9345d94491_b.jpg) - -Finally, invoke update-grub command to re-generate a GRUB2 config file under /boot, based on these changes. - - $ sudo update-grub - -At this point, your desktop should be switched from GUI booting to console booting. Verify this by rebooting. - -![](https://farm8.staticflickr.com/7518/16106378151_81ac6b5a49_b.jpg) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/boot-into-command-line-ubuntu-debian.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://xmodulo.com/add-kernel-boot-parameters-via-grub-linux.html \ No newline at end of file diff --git a/translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md b/translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md new file mode 100644 index 0000000000..64cb1b36e0 --- /dev/null +++ b/translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md @@ -0,0 +1,64 @@ +Linux 有问必答:如何在Ubuntu或者Debian中启动进入命令行 +================================================================================ +> **提问**:我运行的是Ubuntu桌面,但是我希望启动后临时进入命令行。有什么简便的方法可以启动进入终端? + +Linux桌面自带了一个显示管理器(比如:GDM、KDM、LightDM),它们可以让计算机启动自动进入一个基于GUI的登录环境。然而,如果你要直接启动进入终端怎么办? 比如,你在排查桌面相关的问题或者想要运行一个不需要GUI的发行程序。 + +注意你可以通过按下Ctrl+Alt+F1到F6临时从桌面GUI切换到虚拟终端。然而,在本例中你的桌面GUI仍在后台运行,这不同于纯文本模式启动。 + +在Ubuntu或者Debian桌面中,你可以通过传递合适的内核参数在启动时启动文本模式。 + +### 启动临时进入命令行 ### + +如果你想要禁止桌面GUI并只有一次进入文本模式,你可以使用GRUB菜单。 + +首先,打开你的电脑。当你看到初始的GRUB菜单时,按下‘e’。 + +![](https://farm8.staticflickr.com/7490/16112246542_bc1875a397_z.jpg) + +接着会进入下一屏,这里你可以修改内核启动选项。向下滚动到以“linux”开始的行,这里就是内核参数的列表。删除列表中的“quiet”和“splash”。在列表中添加“text”。 + +![](https://farm8.staticflickr.com/7471/15493282603_8a70f70af2_z.jpg) + +升级的内核选项列表看上去像这样。按下Ctrl+x继续启动。这会一次性以详细模式启动控制台。 + +![](https://farm8.staticflickr.com/7570/15925676530_b11af59243_z.jpg) + +永久启动进入命令行。 + +如果你想要永久启动进入命令行,你需要[更新定义了内核启动参数GRUB设置][1]。 + +在文本编辑器中打开默认的GRUB配置文件。 + + $ sudo vi /etc/default/grub + +查找以GRUB_CMDLINE_LINUX_DEFAULT开头的行,并用“#”注释这行。这会禁止初始屏幕,而启动详细模式(也就是说显示详细的的启动过程)。 + +更改GRUB_CMDLINE_LINUX="" 成: + + GRUB_CMDLINE_LINUX="text" + +接下来取消“#GRUB_TERMINAL=console”的注释。 + +更新后的GRUB配置看上去像下面这样。 + +![](https://farm9.staticflickr.com/8673/16107564442_9345d94491_b.jpg) + +最后,使用update-grub命令来基于这些更改重新生成/boot下的GRUB2配置文件。 + + $ sudo update-grub + +这时,你的桌面应该从GUI启动切换到控制台启动了。可以通过重启验证。 + +![](https://farm8.staticflickr.com/7518/16106378151_81ac6b5a49_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/boot-into-command-line-ubuntu-debian.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/add-kernel-boot-parameters-via-grub-linux.html \ No newline at end of file From 785f7b7adeb375545dbbdc1232d02cc5ab9820af Mon Sep 17 00:00:00 2001 From: mtunique Date: Wed, 21 Jan 2015 22:26:43 +0800 Subject: [PATCH 022/725] merge origin/master --- ...Answers--How to check disk space on Linux with df command.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md index ef10342238..b6595f555c 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md @@ -1,7 +1,7 @@ translating by mtunique Linux FAQs with Answers--How to check disk space on Linux with df command ================================================================================ -> **Question**: I know I can use df command to check a file system's disk space usage on Linux. Can you show me practical examples of the df command so that I can make the most out of it? +> **问题**: 我知道在Linux上我可以用df命令来查看I know I can use df command to check a file system's disk space usage on Linux. Can you show me practical examples of the df command so that I can make the most out of it? As far as disk storage is concerned, there are many command-line or GUI-based tools that can tell you about current disk space usage. These tools report on detailed disk utilization in various human-readable formats, such as easy-to-understand summary, detailed statistics, or [intuitive visualization][1]. If you simply want to know how much free disk space is available for different file systems, then df command is probably all you need. From 287baade1a07d54bcc2fdcc13af8666331fb9782 Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Wed, 21 Jan 2015 23:29:30 +0800 Subject: [PATCH 023/725] Delete 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md --- ...ows 7 And Delete Ubuntu In 3 Easy Steps.md | 182 ------------------ 1 file changed, 182 deletions(-) delete mode 100644 sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md diff --git a/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md b/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md deleted file mode 100644 index 4dfa716ed5..0000000000 --- a/sources/tech/20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md +++ /dev/null @@ -1,182 +0,0 @@ -Medusar translating - -How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps -================================================================================ -### Introduction ### - -This is a strange article for me to write as I am normally in a position where I would advocate installing Ubuntu and getting rid of Windows. - -What makes writing this article today doubly strange is that I am choosing to write it on the day that Windows 7 mainstream support comes to an end. - -So why am I writing this now? - -I have been asked on so many occasions now how to remove Ubuntu from a dual booting Windows 7 or a dual booting Windows 8 system and it just makes sense to write the article. - -I spent the Christmas period looking through the comments that people have left on articles and it is time to write the posts that are missing and update some of those that have become old and need attention. - -I am going to spend the rest of January doing just that. This is the first step. If you have Windows 7 dual booting with Ubuntu and you want Windows 7 back without restoring to factory settings follow this guide. (Note there is a separate guide required for Windows 8) - -### The Steps Required To Remove Ubuntu ### - -1. Remove Grub By Fixing The Windows Boot Record -1. Delete The Ubuntu Partitions -1. Expand The Windows Partition - -### Back Up Your System ### - -Before you begin I recommend taking a backup of your system. - -I also recommend not leaving this to chance nor Microsoft's own tools. - -[Click here for a guide showing how to backup your drive using Macrium Reflect.][1] - -If you have any data you wish to save within Ubuntu log into it now and back up the data to external hard drives, USB drives or DVDs. - -### Step 1 - Remove The Grub Boot Menu ### - -![](http://1.bp.blogspot.com/-arVqwMLpJRQ/VLWbHWkqYsI/AAAAAAAAHmw/kn3jDPOltX4/s1600/grubmenu.jpg) - -When you boot your system you will see a menu similar to the one in the image. - -To remove this menu and boot straight into Windows you have to fix the master boot record. - -To do this I am going to show you how to create a system recovery disk, how to boot to the recovery disk and how to fix the master boot record. - -![](http://2.bp.blogspot.com/-ML2JnNc8OWY/VLWcAovwGNI/AAAAAAAAHm4/KH778_MkU7U/s1600/recoverywindow1.PNG) - -Press the "Start" button and search for "backup and restore". Click the icon that appears. - -A window should open as shown in the image above. - -Click on "Create a system repair disc". - -You will need a [blank DVD][2]. - -![](http://2.bp.blogspot.com/-r0GUDZ4AAMI/VLWfJ0nuJLI/AAAAAAAAHnE/RloNqdXLLcY/s1600/recoverywindow2.PNG) - -Insert the blank DVD in the drive and select your DVD drive from the dropdown list. - -Click "Create Disc". - -Restart your computer leaving the disk in and when the message appears to boot from CD press "Enter" on the keyboard. - -![](http://2.bp.blogspot.com/-VPSD50bmk2E/VLWftBg7HxI/AAAAAAAAHnM/APVzvPg4rC0/s1600/recoveryoptionschooselanguage.jpg) - -A set of "Systems Recovery Options" screens will appear. - -You will be asked to choose your keyboard layout. - -Choose the appropriate options from the lists provided and click "Next". - -![](http://2.bp.blogspot.com/-klK4SihPv0E/VLWgLiPO1mI/AAAAAAAAHnU/DUgxH6N2SFE/s1600/RecoveryOptions.jpg) - -The next screen lets you choose an operating system to attempt to fix. - -Alternatively you can restore your computer using a system image saved earlier. - -Leave the top option checked and click "Next". - -![](http://2.bp.blogspot.com/-WOk-Unm6cCQ/VLWgvzoBgzI/AAAAAAAAHng/vfxm1jhW1Ms/s1600/RecoveryOptions2.jpg) - -You will now see a screen with options to repair your disk and restore your system etc. - -All you need to do is fix the master boot record and this can be done from the command prompt. - -Click "Command Prompt". - -![](http://4.bp.blogspot.com/-duT-EUC0yuo/VLWhHygCApI/AAAAAAAAHno/bO7UlouyR9M/s1600/FixMBR.jpg) - -Now simply type the following command into the command prompt: - - bootrec.exe /fixmbr - -A message will appear stating that the operation has completed successfully. - -You can now close the command prompt window. - -Click the "Restart" button and remove the DVD. - -Your computer should boot straight into Windows 7. - -### Step 2 - Delete The Ubuntu Partitions ### - -![](http://4.bp.blogspot.com/-1OM0b3qBeHk/VLWh89gtgVI/AAAAAAAAHn0/ECHIARNCRp8/s1600/diskmanagement1.PNG) - -To delete Ubuntu you need to use the "Disk Management" tool from within Windows. - -Press "Start" and type "Create and format hard disk partitions" into the search box. A window will appear similar to the image above. - -Now my screen above isn't going to be quite the same as yours but it won't be much different. If you look at disk 0 there is 101 MB of unallocated space and then 4 partitions. - -The 101 MB of space is a mistake I made when installing Windows 7 in the first place. The C: drive is Windows 7, the next partition (46.57 GB) is Ubuntu's root partition. The 287 GB partition is the /HOME partition and the 8 GB partition is the SWAP space. - -The only one we really need for Windows is the C: drive so the rest can be deleted. - -**Note: Be careful. You may have recovery partitions on the disk. Do not delete the recovery partitions. They should be labelled and will have file systems set to NTFS or FAT32** - -![](http://3.bp.blogspot.com/-8YUE2p5Fj8Q/VLWlHXst6JI/AAAAAAAAHoQ/BJC57d9Nilg/s1600/deletevolume.png) - -Right click on one of the partitions you wish to delete (i.e. the root, home and swap partitions) and from the menu click "Delete Volume". - -**(Do not delete any partitions that have a file system of NTFS or FAT32)** - -Repeat this process for the other two partitions. - -![](http://3.bp.blogspot.com/-IGbJLkc_soY/VLWk1Vh0XAI/AAAAAAAAHoA/v7TVFT0rC0E/s1600/diskmanagement2.PNG) - -After the partitions have been deleted you will have a large area of free space. Right click the free space and choose delete. - -![](http://4.bp.blogspot.com/-2xUBkWHpnC4/VLWk9cYXGZI/AAAAAAAAHoI/8F2ANkorGeM/s1600/diskmanagement3.PNG) - -Your disk will now contain your C drive and a large amount of unallocated space. - -### Step 3 - Expand The Windows Partition ### - -![](http://4.bp.blogspot.com/-pLV5L3CvQ1Y/VLWmh-5SKTI/AAAAAAAAHoc/7sJzITyvduo/s1600/diskmanagement4.png) - -The final step is to expand Windows so that it is one large partition again. - -To do this right click on the Windows partition (C: drive) and choose "Extend Volume". - -![](http://1.bp.blogspot.com/-vgmw_N2WZWw/VLWm7i5oSxI/AAAAAAAAHok/k0q_gnIik9A/s1600/extendvolume1.PNG) - -When the Window to the left appears click "Next", - -![](http://3.bp.blogspot.com/-WLA86V-Au8g/VLWnTq5RpAI/AAAAAAAAHos/6vzjLNkrwRQ/s1600/extendvolume2.PNG) - -The next screen shows a wizard whereby you can select the disks to expand to and change the size to expand to. - -By default the wizard shows the maximum amount of disk space it can claim from unallocated space. - -Accept the defaults and click "Next". - -![](http://4.bp.blogspot.com/-1rhTJvwem0k/VLWnvx7fWFI/AAAAAAAAHo0/D-4HA8E8y2c/s1600/extendvolume3.PNG) - -The final screen shows the settings that you chose from the previous screen. - -Click "Finish" to expand the disk. - -![](http://2.bp.blogspot.com/-CpuLXSYyPKY/VLWoEGU3sCI/AAAAAAAAHo8/7o5G4W4b7zU/s1600/diskmanagement5.PNG) - -As you can see from the image above my Windows partition now takes up the entire disk (except for the 101 MB that I accidentally created before installing Windows in the first place). - -### Summary ### - -![](http://1.bp.blogspot.com/-h1Flo2aGFcI/VLWogr2zfMI/AAAAAAAAHpE/2ypTSgR8_iM/s1600/fullwindowsscreen.PNG) - -That is all folks. A site dedicated to Linux has just shown you how to remove Linux and replace it with Windows 7. - -Any questions? Use the comments section below. - --------------------------------------------------------------------------------- - -via: http://www.everydaylinuxuser.com/2015/01/how-to-recover-windows-7-and-delete.html - -作者:Gary Newell -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://linux.about.com/od/LinuxNewbieDesktopGuide/ss/Create-A-Recovery-Drive-For-All-Versions-Of-Windows.htm -[2]:http://www.amazon.co.uk/gp/product/B0006L2HTK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1634&creative=6738&creativeASIN=B0006L2HTK&linkCode=as2&tag=evelinuse-21&linkId=3R363EA63XB4Z3IL From 933c579852d81f20024416a4047a179ccbe3a148 Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Wed, 21 Jan 2015 23:36:16 +0800 Subject: [PATCH 024/725] Create How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps --- ...indows 7 And Delete Ubuntu In 3 Easy Steps | 181 ++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps diff --git a/translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps b/translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps new file mode 100644 index 0000000000..9278bbd707 --- /dev/null +++ b/translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps @@ -0,0 +1,181 @@ +如何通过简单的3步恢复Windows7同时删除Ubuntu +================================================================================ +### 说明 ### + +写这篇文章对我来说是一件奇怪的事情,因为我通常都是提倡安装Ubuntu而卸载Windows的。 + +让今天写这篇文章更加奇怪的是,我决定在微软决定终止对Windows7的主流支持的这一天来写。 + +那么为什么我现在要写这篇文章呢? + +到目前为止我曾经在很多场合被问到如何从一个装有Windows7或Windows8的双系统中删除Unbuntu系统,因此写这篇文章就变得有意义了。 + +我在圣诞节期间浏览了人们在我文章中的留言,感觉是时候把缺失的文章写完同时更新一下那些比较老的又需要关注的文章了。 + +我打算把一月份剩下的时间都用在这上面。这是第一步。如果你的电脑上安装了Windown7和Ubuntu双系统,同时你不想通过恢复出厂设置的方式恢复Windows7系统,那么请参考该教程。(注意:对于Windows8系统,有一个独立的教程) + +### 删除Ubuntu系统需要的步骤 ### + +1. 通过修复Windows启动项来删除Grub +1. 删除Ubuntu系统所在分区 +1. 扩展Windows系统分区 + +### 备份系统 ### + +在你开始之前,我建议为你的系统保留一个备份。 + +我也建议不要放弃这样的机会也不要使用微软自带的工具。 + +[点击查看如何使用Macrinum Reflect备份你的驱动][1] + + +如果Ubuntu中有你希望保存的数据,现在就登录进去然后将数据保存到外部硬盘驱动器,USB驱动器或者DVD中。 + +### 步骤1 - 删除Grub启动菜单 ### + +![](http://1.bp.blogspot.com/-arVqwMLpJRQ/VLWbHWkqYsI/AAAAAAAAHmw/kn3jDPOltX4/s1600/grubmenu.jpg) + +当你启动系统的时候你会看见一个与上图类似的菜单。 + +要想删除这个菜单直接进入Windows系统,你必须修复主引导记录。 + +要达到这个目的,我将向你展示如何创建一个系统恢复盘,如何从恢复盘中启动以及如何修复主引导记录。 + +![](http://2.bp.blogspot.com/-ML2JnNc8OWY/VLWcAovwGNI/AAAAAAAAHm4/KH778_MkU7U/s1600/recoverywindow1.PNG) + +按下“开始”按钮,搜索“备份和还原”。点击出现的图标。 + +将会打开一个与上图一样的窗口。 + +点击“创建系统修复光盘”。 + +你需要一个[空的DVD盘][2]。 + +![](http://2.bp.blogspot.com/-r0GUDZ4AAMI/VLWfJ0nuJLI/AAAAAAAAHnE/RloNqdXLLcY/s1600/recoverywindow2.PNG) + +将空的DVD盘插入到驱动器中然后从下拉列表中选择你的DVD驱动器。 + +点击“创建光盘”。 + +将光盘留在电脑中重启电脑,当出现从CD中启动的消息的时候按下键盘上的“回车”键。 + +![](http://2.bp.blogspot.com/-VPSD50bmk2E/VLWftBg7HxI/AAAAAAAAHnM/APVzvPg4rC0/s1600/recoveryoptionschooselanguage.jpg) + +屏幕上会出现“系统恢复选项”。 + +它会要求你选择你的键盘布局方式。 + +从列表中选择合适的选项,然后点击“下一步”。 + +![](http://2.bp.blogspot.com/-klK4SihPv0E/VLWgLiPO1mI/AAAAAAAAHnU/DUgxH6N2SFE/s1600/RecoveryOptions.jpg) + +下一个界面让你选择你想修复的操作系统。 + +或者你可以使用早先保存的系统镜像恢复系统。 + +选中上面的选项然后点击“下一步”。 + +![](http://2.bp.blogspot.com/-WOk-Unm6cCQ/VLWgvzoBgzI/AAAAAAAAHng/vfxm1jhW1Ms/s1600/RecoveryOptions2.jpg) + +现在你将会看到一个有修复硬盘和恢复您的系统等选项的界面。 + +你需要做的是修复主引导记录,而这可以通过领命提示符来完成。 + +点击“命令提示符”。 + +![](http://4.bp.blogspot.com/-duT-EUC0yuo/VLWhHygCApI/AAAAAAAAHno/bO7UlouyR9M/s1600/FixMBR.jpg) + +现在只需要把下面的命令输入到命令提示符中: + + bootrec.exe /fixmbr + +接下来将会出现一条消息,提示操作已经成功完成。 + +你现在就可以关闭命令提示符窗口了。 + +点击“重启”按钮然后取出DVD。 + +你的电脑就会直接启动进入Windows7系统了。 + +### 步骤 2 - 删除Ubuntu分区 ### + +![](http://4.bp.blogspot.com/-1OM0b3qBeHk/VLWh89gtgVI/AAAAAAAAHn0/ECHIARNCRp8/s1600/diskmanagement1.PNG) + +要删除Ubuntu你需要使用Windows系统提供的“磁盘管理”工具。 + +按下“开始”按钮然后在搜索框中输入“创建和格式化磁盘分区”。将会出现一个与上图类似的窗口。 + +现在上面我的屏幕将不再和你的一模一样了,不过也不会相差太多。你会看到第0块磁盘有101MB的未分配空间,另外还有4个分区。 + +这101MB的空间是之前我安装Windows7时犯的一个错误。驱动器C是Windows7系统,下一个分区(46.57GB)是Ubuntu的根分区。287G的分区是/HOME分区,8G的分区是交换空间。 + +对于Windows系统来说,我们真正需要的只有驱动器C,所以剩下的是可以删掉的。 + +**注意: 注意一下.你的磁盘上可能有恢复分区。 不要删除恢复分区.。它们应该会被标记,将文件系统设置为NTFS或FAT32** + +![](http://3.bp.blogspot.com/-8YUE2p5Fj8Q/VLWlHXst6JI/AAAAAAAAHoQ/BJC57d9Nilg/s1600/deletevolume.png) + +在你希望删除的分区上单击右键(例如:root,home和swap分区),然后从弹出的菜单中点击“删除卷”。 + +**(不要删除任何NTFS或者FAT32文件系统的分区)** + +对于剩下的两个分区重复执行上面的操作。 + +![](http://3.bp.blogspot.com/-IGbJLkc_soY/VLWk1Vh0XAI/AAAAAAAAHoA/v7TVFT0rC0E/s1600/diskmanagement2.PNG) + +分区被删除后你将会有很大的一片空闲区域。右键点击空闲区域然后选择删除。 + +![](http://4.bp.blogspot.com/-2xUBkWHpnC4/VLWk9cYXGZI/AAAAAAAAHoI/8F2ANkorGeM/s1600/diskmanagement3.PNG) + +现在你的磁盘将包含驱动器C和一大片没有分配的空间。 + +### 步骤 3 - 扩展Windows分区 ### + +![](http://4.bp.blogspot.com/-pLV5L3CvQ1Y/VLWmh-5SKTI/AAAAAAAAHoc/7sJzITyvduo/s1600/diskmanagement4.png) + +最后一步是扩展Windows以便于将它再变成一个大的分区。 +右键点击Windows分区(C盘),然后选择“扩展卷”。 + +![](http://1.bp.blogspot.com/-vgmw_N2WZWw/VLWm7i5oSxI/AAAAAAAAHok/k0q_gnIik9A/s1600/extendvolume1.PNG) + +当出现左面的窗口的时候点击“下一步”, + +![](http://3.bp.blogspot.com/-WLA86V-Au8g/VLWnTq5RpAI/AAAAAAAAHos/6vzjLNkrwRQ/s1600/extendvolume2.PNG) + +接下来是一个向导界面,在这里你可以选择扩展到那个盘,同时修改扩展的大小。 + +默认情况下,向导界面将显示它能从未分配区域中获取的最大的磁盘空间数。 + +接受默认的选项,然后点击“下一步”。 + +![](http://4.bp.blogspot.com/-1rhTJvwem0k/VLWnvx7fWFI/AAAAAAAAHo0/D-4HA8E8y2c/s1600/extendvolume3.PNG) + +最后的界面展示了你在前一个界面中的选择结果。 + +点击“结束”进行磁盘扩展。 + +![](http://2.bp.blogspot.com/-CpuLXSYyPKY/VLWoEGU3sCI/AAAAAAAAHo8/7o5G4W4b7zU/s1600/diskmanagement5.PNG) + +从上图中你可以看到,我的Windows分区占据了整个磁盘(除了我之前安装Windows的时候偶然创建的101MB的空间)。 + +### 总结 ### + +![](http://1.bp.blogspot.com/-h1Flo2aGFcI/VLWogr2zfMI/AAAAAAAAHpE/2ypTSgR8_iM/s1600/fullwindowsscreen.PNG) + +这就是全部内容。一个致力于Linux的网站刚刚向你展示了如何移除Linux然后用Windows7取而代之。 + +有任何疑问可以在下面评论区留言。 +-------------------------------------------------------------------------------- + +via: http://www.everydaylinuxuser.com/2015/01/how-to-recover-windows-7-and-delete.html + +作者:Gary Newell +译者:[Medusar](https://github.com/Medusar) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://linux.about.com/od/LinuxNewbieDesktopGuide/ss/Create-A-Recovery-Drive-For-All-Versions-Of-Windows.htm +[2]:http://www.amazon.co.uk/gp/product/B0006L2HTK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1634&creative=6738&creativeASIN=B0006L2HTK&linkCode=as2&tag=evelinuse-21&linkId=3R363EA63XB4Z3IL + + From d368819a59fe09269cebdbb670493ebb9c7b8046 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 22 Jan 2015 10:15:59 +0800 Subject: [PATCH 025/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...image audio and video formats on Ubuntu.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md b/translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md index 8dee779cea..93d4a44f58 100644 --- a/translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md +++ b/translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md @@ -1,13 +1,13 @@ -如何在Ubuntu上转换图片音频和视频格式 +如何在Ubuntu上转换图像、音频和视频格式 ================================================================================ -如果你的工作中需要接触到各种不同编码格式的图片、音频和视频,那么你或许正在使用多个工具来转换这些不同的媒介格式。如果存在一个能够处理所有文件/音频/视频格式的多和一的转换工具,那就太好了。 +如果你的工作中需要接触到各种不同编码格式的图像、音频和视频,那么你很有可能正在使用多个工具来转换这些多种多样的媒介格式。如果存在一个能够处理所有图像/音频/视频格式的多和一转换工具,那就太好了。 -[Format Junkie][1] 就是这样一个有着极其友好的用户界面的多和一的媒介转换工具。更棒的是它是一个免费软件。你可以使用 Format Junkie 来转换几乎所有的流行格式的图像、音频、视频和归档文件(或称压缩文件),所有这些只需要简单地点击几下鼠标而已。 +[Format Junkie][1] 就是这样一个多和一的媒介转换工具,它有着极其友好的用户界面。更棒的是它是一个免费软件。你可以使用 Format Junkie 来转换几乎所有的流行格式的图像、音频、视频和归档文件(或称压缩文件),所有这些只需要简单地点击几下鼠标而已。 ### 在Ubuntu 12.04, 12.10 和 13.04 上安装 Format Junkie ### -Format Junkie 可以通过 Ubuntu PPA format-junkie-team 进行安装。这个PPA支持Ubuntu 12.04, 12.10 和 13.04。在以上任意一种Ubuntu版本中安装Format Junkie的话,简单的执行一下命令即可: +Format Junkie 可以通过 Ubuntu PPA format-junkie-team 进行安装。这个PPA支持Ubuntu 12.04, 12.10 和 13.04。在以上任意一种Ubuntu版本中安装Format Junkie的话,简单的执行以下命令即可: $ sudo add-apt-repository ppa:format-junkie-team/release $ sudo apt-get update @@ -16,7 +16,7 @@ Format Junkie 可以通过 Ubuntu PPA format-junkie-team 进行安装。这个PP ### 将 Format Junkie 安装到 Ubuntu 13.10 ### -如果你正在运行Ubuntu 13.10 (Saucy Salamander),你可以按照以下步骤下载 .deb 安装包来进行安装。由于Format Junkie 的 .deb 安装包只有很少的依赖包,所以使用 [gdebi deb installer][2] 来按安装它。 +如果你正在运行Ubuntu 13.10 (Saucy Salamander),你可以按照以下步骤下载 .deb 安装包来进行安装。由于Format Junkie 的 .deb 安装包只有很少的依赖包,所以使用 [gdebi deb installer][2] 来安装它。 在32位版Ubuntu 13.10上: @@ -30,9 +30,9 @@ Format Junkie 可以通过 Ubuntu PPA format-junkie-team 进行安装。这个PP $ sudo gdebi formatjunkie_1.07-1~raring0.2_amd64.deb $ sudo ln -s /opt/extras.ubuntu.com/formatjunkie/formatjunkie /usr/bin/formatjunkie -### 将 Format Junkie 安装到 Ubuntu 14.04 或 之后版本 ### +### 将 Format Junkie 安装到 Ubuntu 14.04 或之后版本 ### -现有的可供使用的官方 Format Junkie .deb 文件 需要 libavcodec-extra-53,这个东西从Ubuntu 14.04开始就已经过时了。所以如果你想在Ubuntu 14.04或之后版本上安装Format Junkie的话,可以使用以下的第三方PPA来代替。 +现有可供使用的官方 Format Junkie .deb 文件需要 libavcodec-extra-53,不过它从Ubuntu 14.04开始就已经过时了。所以如果你想在Ubuntu 14.04或之后版本上安装Format Junkie,可以使用以下的第三方PPA来代替。 $ sudo add-apt-repository ppa:jon-severinsson/ffmpeg $ sudo add-apt-repository ppa:noobslab/apps @@ -47,7 +47,7 @@ Format Junkie 可以通过 Ubuntu PPA format-junkie-team 进行安装。这个PP #### 使用 Format Junkie 来转换音频、视频、图像和归档格式 #### -就像下方展示的一样,Format Junkie 的用户界面简单而且直观。在音频、视频、图像和iso媒介之间进行选择,在顶部四个标签当中点击你需要的那个。你可以根据需要添加无限量的文件用于批量转换。添加文件后,选择输出格式,直接点击 "Start Converting" 按钮进行转换。 +就像下方展示的一样,Format Junkie 的用户界面简单而且直观。在顶部的音频、视频、图像和iso媒介四个标签当中点击你需要的那个。你可以根据需要添加无限量的文件用于批量转换。添加文件后,选择输出格式,直接点击 "Start Converting" 按钮进行转换。 ![](http://farm9.staticflickr.com/8107/8643695905_082b323059.jpg) @@ -70,7 +70,7 @@ Format Junkie支持以下媒介媒介媒介格式间的转换: 总而言之,Format Junkie 是一个非常易于使用和多才多艺的媒介转换工具。但也有一个缺陷,它不允许对转换进行任何定制化(例如:比特率,帧率,采样频率,图像质量,尺寸)。所以这个工具推荐正在寻找一个简单易用的媒介转换工具的新手使用。 -喜欢这篇文章吗?在facebook、twitter和google+上给我点赞吧。多谢! +喜欢这篇文章吗?在facebook、twitter和google+上给我点赞/分享吧。多谢! -------------------------------------------------------------------------------- @@ -78,7 +78,7 @@ via: http://xmodulo.com/how-to-convert-image-audio-and-video-formats-on-ubuntu.h 作者:[Dan Nanni][a] 译者:[Ping](https://github.com/mr-ping) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 4e1caae562f96bbc3f88a3349209c78e44d04829 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Thu, 22 Jan 2015 10:39:22 +0800 Subject: [PATCH 026/725] =?UTF-8?q?20150122-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Answers--How to add a cron job on Linux.md | 66 ++++++++ ...ers--How to check memory usage on Linux.md | 111 ++++++++++++++ ...gure a MySQL user from the command line.md | 106 +++++++++++++ ...nstall ixgbe driver on Ubuntu or Debian.md | 144 ++++++++++++++++++ ...How to set a custom HTTP header in curl.md | 44 ++++++ ...oad a RPM package without installing it.md | 56 +++++++ 6 files changed, 527 insertions(+) create mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md create mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md create mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md create mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md create mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md create mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md b/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md new file mode 100644 index 0000000000..a119537e74 --- /dev/null +++ b/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md @@ -0,0 +1,66 @@ +Linux FAQs with Answers--How to add a cron job on Linux +================================================================================ +> **Question**: I would like to schedule a task on my Linux box, so that the task runs periodically at fixed times. How can I add a cron job for this task on my Linux system? + +The cron utility is the default task scheduler used in Linux. Using cron, you can schedule a task (e.g., a command or a shell-script) to run it periodically or one-time at a specific time of hour, day, week, month, etc. The cron tool is useful when you schedule a variety of regular maintenance jobs, such as periodic backup, rotating logs, checking filesystem, monitoring disk space, and so on. + +### Add a Cron Job from the Command Line ### + +To add a cron job, you can use a command-line tool called crontab. + +Type the following command to create a new cron job to run as the current user. + + $ crontab -e + +If you want a cron job to run as any other user, type the following command instead. + + $ sudo crontab -u -e + +You will be presented with a text editor window, where you can add or edit cron jobs. By default, nano editor will be used. + +![](https://farm9.staticflickr.com/8586/16200331362_1385807ac0_b.jpg) + +Each cron job is formatted as follows. + + + +The first five elements specify the schedule for a task, and the last element is the (full-path) command or script to execute according to the schedule. + +![](https://farm8.staticflickr.com/7472/16199272841_dffe0b2873_b.jpg) + +Here are a few useful cron job examples. + +- *** * * * * /home/dan/bin/script.sh**: run every minute. +- **0 * * * * /home/dan/bin/script.sh**: run every hour. +- **0 0 * * * /home/dan/bin/script.sh**: run at 12am daily. +- **0 9,18 * * * /home/dan/bin/script.sh**: run at 9AM and 6PM twice a day. +- **0 9-18 * * * /home/dan/bin/script.sh**: run every hour from 9AM and 6PM. +- **0 9-18 * * 1-5 /home/dan/bin/script.sh**: run every hour from 9AM and 6PM every weekday. +- ***/10 * * * * /home/dan/bin/script.sh**: run every 10 minutes. + +Once you are done with setting up cron job(s), press Ctrl+X to save and quit the editor. At this point, newly added cron jobs should be activated. + +To browse existing cron jobs of yours, use the following command: + + $ crontab -l + +### Add a Cron Job from GUI ### + +If you are in Linux desktop environment, you can use a GUI fronend for crontab to add or edit a cron job via a more user-friendly interface. + +On GNOME desktop, there is GNOME Schedule (gnome-schedule package). + +![](https://farm8.staticflickr.com/7484/16015054699_d96f0e9b6a_c.jpg) + +On KDE desktop, there is Task Scheduler (kcron package). + +![](https://farm8.staticflickr.com/7473/16175298266_825376c901_c.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/add-cron-job-linux.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md new file mode 100644 index 0000000000..ecd5ba10da --- /dev/null +++ b/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md @@ -0,0 +1,111 @@ +Linux FAQs with Answers--How to check memory usage on Linux +================================================================================ +> **Question**: I would like to monitor memory usage on my Linux system. What are the available GUI-based or command-line tools for checking current memory usage of Linux? + +When it comes to optimizing the performance of a Linux system, physical memory is the single most important factor. Naturally, Linux offers a wealth of options to monitor the usage of the precious memory resource. Different tools vary in terms of their monitoring granularity (e.g., system-wide, per-process, per-user), interface (e.g., GUI, command-line, ncurses) or running mode (e.g., interactive, batch mode). + +Here is a non-exhaustive list of GUI or command-line tools to choose from to check used and free memory on Linux platform. + +### 1. /proc/meminfo ### + +The simpliest method to check RAM usage is via /proc/meminfo. This dynamically updated virtual file is actually the source of information displayed by many other memory related tools such as free, top and ps tools. From the amount of available/free physical memory to the amount of buffer waiting to be or being written back to disk, /proc/meminfo has everything you want to know about system memory usage. Process-specific memory information is also available from /proc//statm and /proc//status + + $ cat /proc/meminfo + +![](https://farm8.staticflickr.com/7483/15989497899_bb6afede11_b.jpg) + +### 2. atop ### + +The atop command is an ncurses-based interactive system and process monitor for terminal environments. It shows a dynamically-updated summary of system resources (CPU, memory, network, I/O, kernel), with colorized warnings in case of high system load. It also offers a top-like view of processes (or users) along with their resource usage, so that system admin can tell which processes or users are responsible for system load. Reported memory statistics include total/free memory, cached/buffer memory and committed virtual memory. + + $ sudo atop + +![](https://farm8.staticflickr.com/7552/16149756146_893773b84c_b.jpg) + +### 3. free ### + +The free command is a quick and easy way to get an overview of memory usage gleaned from /proc/meminfo. It shows a snapshot of total/free physical memory and swap space of the system, as well as used/free buffer space in the kernel. + + $ free -h +![](https://farm8.staticflickr.com/7531/15988117988_ba8c6b7b63_b.jpg) + +### 4. GNOME System Monitor ### + +GNOME System Monitor is a GUI application that shows a short history of system resource utilization for CPU, memory, swap space and network. It also offers a process view of CPU and memory usage. + + $ gnome-system-monitor + +![](https://farm8.staticflickr.com/7539/15988118078_279f0da494_c.jpg) + +### 5. htop ### + +The htop command is an ncurses-based interactive processor viewer which shows per-process memory usage in real time. It can report resident memory size (RSS), total program size in memory, library size, shared page size, and dirty page size for all running processes. You can scroll the (sorted) list of processes horizontally or vertically. + + $ htop + +![](https://farm9.staticflickr.com/8236/8599814378_de071de408_c.jpg) + +### 6. KDE System Monitor ### + +While GNOME desktop has GNOME System Monitor, KDE desktop has its own counterpart: KDE System Monitor. Its functionality is mostly similar to GNOME version, i.e., showing a real-time history of system resource usage, as well as a process list along with per-process CPU/memory consumption. + + $ ksysguard + +![](https://farm8.staticflickr.com/7479/15991397329_ec5d786ffd_c.jpg) + +### 7. memstat ### + +The memstat utility is useful to identify which executable(s), process(es) and shared libraries are consuming virtual memory. Given a process ID, memstat identifies how much virtual memory is used by the process' associated executable, data, and shared libraries. + + $ memstat -p + +![](https://farm8.staticflickr.com/7518/16175635905_1880e50055_b.jpg) + +### 8. nmon ### + +The nmon utility is an ncurses-based system benchmark tool which can monitor CPU, memory, disk I/O, kernel, filesystem and network resources in interactive mode. As for memory usage, it can show information such as total/free memory, swap space, buffer/cached memory, virtual memory page in/out statistics, all in real time. + + $ nmon + +![](https://farm9.staticflickr.com/8648/15989760117_30f62f4aba_b.jpg) + +### 9. ps ### + +The ps command can show per-process memory usage in real-time. Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used). You can sort the process list by using "--sort" option. For example, to sort in the decreasing order of RSS: + + $ ps aux --sort -rss + +![](https://farm9.staticflickr.com/8602/15989881547_ca40839c19_c.jpg) + +### 10. smem ### + +The [smem][1] command allows you to measure physical memory usage by different processes and users based on information available from /proc. It utilizes proportional set size (PSS) metric to accurately quantify effective memory usage of Linux processes. Memory usage analysis can be exported to graphical charts such as bar and pie graphs. + + $ sudo smem --pie name -c "pss" + +![](https://farm8.staticflickr.com/7466/15614838428_eed7426cfe_c.jpg) + +### 11. top ### + +The top command offers a real-time view of running processes, along with various process-specific resource usage statistics. Memory related information includes %MEM (memory utilization percentage), VIRT (total amount of virtual memory used), SWAP (amount of swapped-out virtual memory), CODE (amount of physical memory allocated for code execution), DATA (amount of physical memory allocated to non-executable data), RES (total amount of physical memory used; CODE+DATA), and SHR (amount of memory potentially shared with other processes). You can sort the process list based on memory usage or size. + +![](https://farm8.staticflickr.com/7464/15989760047_eb8d51d9f2_c.jpg) + +### 12. vmstat ### + +The vmstat command-line utility displays instantaneous and average statistics of various system activities covering CPU, memory, interrupts, and disk I/O. As for memory information, the command shows not only physical memory usage (e.g., tota/used memory and buffer/cache memory), but also virtual memory statistics (e.g., memory paged in/out, swapped in/out). + + $ vmstat -s + +![](https://farm9.staticflickr.com/8582/15988236860_3f142008d2_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/check-memory-usage-linux.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/visualize-memory-usage-linux.html \ No newline at end of file diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md b/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md new file mode 100644 index 0000000000..09f29434e4 --- /dev/null +++ b/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md @@ -0,0 +1,106 @@ +Linux FAQs with Answers--How to create and configure a MySQL user from the command line +================================================================================ +> **Question**: I would like to create a new user account on MySQL server, and apply appropriate permissions and resource limits to the account. How can I create and configure a MySQL user from the command line? + +To access a MySQL server, you need to log in to the server using a user account. Each MySQL user account has a number of attributes associated with it, such as user name, password, as well as privileges and resource limits. Privileges are user-specific permissions defining what you can do inside a MySQL server, while resource limits set the limitations on the amount of server resource allowed for for the user. Creating or updating a MySQL user involves managing all these attributes of the user account. + +Here is how to create and configure a MySQL user on Linux. + +You first log in to MySQL server as the root. + + $ mysql -u root -p + +When prompted for authentication, enter the MySQL root password. + +![](https://farm8.staticflickr.com/7482/16024190060_fff53d8840_b.jpg) + +### Create a MySQL User ### + +To create a new user with username 'myuser' and password 'mypassword', use the following command. + + mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; + +Once a user is created, all its account details including an encrypted password, privileges and resource limits are stored in a table called **user** in a special database named **mysql**. + +To verify that the account is created successfully, run: + + mysql> SELECT host, user, password FROM mysql.user WHERE user='myuser'; + +### Grant Privileges to MySQL User ### + +A newly created MySQL user comes with zero access privilege, which means that you cannot do anything inside MySQL server. You need to grant necessary privileges to the user. Some of available privileges are the following. + +- **ALL**: all privileges available. +- **CREATE**: create databases, tables or indices. +- **LOCK_TABLES**: lock databases. +- **ALTER**: alter tables. +- **DELETE**: delete tables. +- **INSERT**: insert tables or columns. +- **SELECT**: select tables or columns. +- **CREATE_VIEW**: create views. +- **SHOW_DATABASES**: show databases. +- **DROP**: drop daabases, tables or views. + +To grant a particular privilege to user 'myuser', use the following command. + + mysql> GRANT ON . TO 'myuser'@'localhost'; + +In the above, is expressed as a comma-separated list of privileges. If you want to grant privileges for any database (or table), place an asterisk (*) in the database (or table) name. + +For example, to grant CREATE and INSERT privileges for all databases/tables: + + mysql> GRANT CREATE, INSERT ON *.* TO 'myuser'@'localhost'; + +To verify the granted privileges of the user: + + mysql> SHOW GRANTS FOR 'myuser'@'localhost'; + +![](https://farm8.staticflickr.com/7556/16209665261_923282bddd_c.jpg) + +To grant all privileges to all databases/tables: + + mysql> GRANT ALL ON *.* TO 'myuser'@'localhost'; + +You can also remove existing privileges from a user. To revoke existing privileges from the account 'myuser', use the following command. + + mysql> REVOKE ON .
FROM 'myuser'@'localhost'; + +### Add Resource Limits to MySQL User ### + +In MySQL, you can place limits on MySQL resource usage for individual users. The available resource limits are the following. + +- **MAX_QUERIES_PER_HOUR**: number of allowed queries per hour. +- **MAX_UPDATES_PER_HOUR**: number of allowed updates per hour. +- **MAX_CONNECTIONS_PER_HOUR**: number of allowed logins per hour. +- **MAX_USER_CONNECTIONS**: number of simultaneous connections to the server. + +To add a resource limit to the account 'myuser', use the following command. + + mysql> GRANT USAGE ON .
TO 'myuser'@'localhost' WITH ; + +In , you can specify multiple resource limits separated by space. + +For example, to add MAX_QUERIES_PER_HOUR and MAX_CONNECTIONS_PER_HOUR resource limits: + + mysql> GRANT USAGE ON *.* TO 'myuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 30 MAX_CONNECTIONS_PER_HOUR 6; + +To verify the resource limits of the user: + + mysql> SHOW GRANTS FOR 'myuser'@'localhost; + +![](https://farm8.staticflickr.com/7537/16025443759_5cb4177bc6_c.jpg) + +The last important step after creating and configuring a MySQL user is to run: + + mysql> FLUSH PRIVILEGES; + +so that the changes take effect. Now the MySQL user account is good to go! + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/create-configure-mysql-user-command-line.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md new file mode 100644 index 0000000000..238794a019 --- /dev/null +++ b/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md @@ -0,0 +1,144 @@ +Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian +================================================================================ +> **Question**: I want to download and install the latest ixgbe driver for my Intel 10 Gigabit Ethernet card. How can I install ixgbe driver on Ubuntu (or Debian)? + +Intel's PCI Express 10 Gigabit (10G) network inerface cards (e.g., 82598, 82599, x540) are supported by ixgbe driver. The stock kernel of the modern Linux distributions already comes with ixgbe driver as a loadable module. However, there are cases where you may want to compile and install ixgbe driver on your own. For example, you may want to try the new features of the latest ixgbe driver. Also, the problem of the default ixgbe driver in the stock kernel is that it does not allow you to customize many of its driver parameters. If you want to fully customize ixgbe device driver (e.g., RSS, multi-queue, interrupt throttling, etc), you need to manually compile ixgbe driver from the source. + +Here is how to download and install ixgbe driver on Ubuntu, Debian or their derivatives. + +### Step One: Install Prerequites ### + +As prerequisites, install matching kernel headers and development packages. + + $ sudo apt-get install linux-headers-$(uname -r) + $ sudo apt-get install gcc make + +### Step Two: Compile Ixgbe Driver ### + +Download the source code of the [latest ixgbe driver][1]. + + $ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz + +Compile ixgbe driver as follows. + + $ tar xvfvz ixgbe-3.23.2.tar.gz + $ cd ixgbe-3.23.2/src + $ make + +### Step Three: Check Ixgbe Driver ### + +After compilation, you will see **ixgbe.ko** created in ixgbe-3.23.2/src directory. This is the ixgbe device driver which will be loaded into the kernel. + +Check the information of this kernel module with modinfo command. Note that you need to specify an absolute path to the module (e.g., ./ixgbe.ko or /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko). The output will show the version of ixgbe driver. + + $ modinfo ./ixgbe.ko + +---------- + + filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko + version: 3.23.2 + license: GPL + description: Intel(R) 10 Gigabit PCI Express Network Driver + author: Intel Corporation, + srcversion: 2ADA5E537923E983FA9DAE2 + alias: pci:v00008086d00001560sv*sd*bc*sc*i* + alias: pci:v00008086d00001558sv*sd*bc*sc*i* + alias: pci:v00008086d0000154Asv*sd*bc*sc*i* + alias: pci:v00008086d00001557sv*sd*bc*sc*i* + alias: pci:v00008086d0000154Fsv*sd*bc*sc*i* + alias: pci:v00008086d0000154Dsv*sd*bc*sc*i* + alias: pci:v00008086d00001528sv*sd*bc*sc*i* + alias: pci:v00008086d000010F8sv*sd*bc*sc*i* + alias: pci:v00008086d0000151Csv*sd*bc*sc*i* + alias: pci:v00008086d00001529sv*sd*bc*sc*i* + alias: pci:v00008086d0000152Asv*sd*bc*sc*i* + alias: pci:v00008086d000010F9sv*sd*bc*sc*i* + alias: pci:v00008086d00001514sv*sd*bc*sc*i* + alias: pci:v00008086d00001507sv*sd*bc*sc*i* + alias: pci:v00008086d000010FBsv*sd*bc*sc*i* + alias: pci:v00008086d00001517sv*sd*bc*sc*i* + alias: pci:v00008086d000010FCsv*sd*bc*sc*i* + alias: pci:v00008086d000010F7sv*sd*bc*sc*i* + alias: pci:v00008086d00001508sv*sd*bc*sc*i* + alias: pci:v00008086d000010DBsv*sd*bc*sc*i* + alias: pci:v00008086d000010F4sv*sd*bc*sc*i* + alias: pci:v00008086d000010E1sv*sd*bc*sc*i* + alias: pci:v00008086d000010F1sv*sd*bc*sc*i* + alias: pci:v00008086d000010ECsv*sd*bc*sc*i* + alias: pci:v00008086d000010DDsv*sd*bc*sc*i* + alias: pci:v00008086d0000150Bsv*sd*bc*sc*i* + alias: pci:v00008086d000010C8sv*sd*bc*sc*i* + alias: pci:v00008086d000010C7sv*sd*bc*sc*i* + alias: pci:v00008086d000010C6sv*sd*bc*sc*i* + alias: pci:v00008086d000010B6sv*sd*bc*sc*i* + depends: ptp,dca + vermagic: 3.11.0-19-generic SMP mod_unload modversions + parm: InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int) + parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int) + parm: MQ:Disable or enable Multiple Queues, default 1 (array of int) + parm: DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) + parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) + parm: VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int) + parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int) + parm: VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int) + parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int) + parm: LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int) + parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int) + parm: LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int) + parm: LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int) + parm: LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int) + parm: FdirPballoc:Flow Director packet buffer allocation level: + 1 = 8k hash filters or 2k perfect filters + 2 = 16k hash filters or 4k perfect filters + 3 = 32k hash filters or 8k perfect filters (array of int) + parm: AtrSampleRate:Software ATR Tx packet sample rate (array of int) + parm: FCoE:Disable or enable FCoE Offload, default 1 (array of int) + parm: LRO:Large Receive Offload (0,1), default 1 = on (array of int) + parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int) + +### Step Four: Test Ixgbe Driver ### + +Before testing the new module, you need to remove an old ersion of ixgbe module if it exists in the kernel: + + $ sudo rmmod ixgbe + +Go ahead and insert the newly built ixgbe module into the kernel with insmod command. Make sure to specify an absolute path to the module. + + $ sudo insmod ./ixgbe.ko + +If the above command runs successfully, it will not show any message. + +If you want, you can try passing additional prameter(s). For example, to set the number of RSS queues to 16: + + $ sudo insmod ./ixgbe.ko RSS=16 + +Check out **/var/log/kern.log** to see if ixgbe driver is successfully activated. Look for "Intel(R) 10 Gigabit PCI Express Network Driver" in the log. The ixgbe version should be matched with the output of modinfo shown earlier. + + Sep 18 14:48:52 spongebob kernel: [684717.906254] Intel(R) 10 Gigabit PCI Express Network Driver - version 3.22.3 + +![](https://farm8.staticflickr.com/7583/16056721867_f06e152076_c.jpg) + +### Step Five: Install Ixgbe Driver ### + +Once you verify that a new ixgbe driver is successfully loaded, the last step is to install the driver on your system. + + $ sudo make install + +**ixgbe.ko** will then be installed under /lib/modules//kernel/drivers/net/ethernet/intel/ixgbe. + +From this point on, you can load ixgbe driver with modprobe command as follows. Note that you no longer need to specify an absolute path. + + $ sudo modprobe ixgbe + +If you want ixgbe driver to be loaded automatically upon boot, you can add "ixgbe" to the end of /etc/modules. + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/download-install-ixgbe-driver-ubuntu-debian.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://sourceforge.net/projects/e1000/files/ixgbe%20stable/ \ No newline at end of file diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md b/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md new file mode 100644 index 0000000000..37622009f1 --- /dev/null +++ b/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md @@ -0,0 +1,44 @@ +Linux FAQs with Answers--How to set a custom HTTP header in curl +================================================================================ +> **Question**: I am trying to fetch a URL with curl command, but want to set a few custom header fields in the outgoing HTTP request. How can I use a custom HTTP header with curl? + +curl is a powerful command-line tool that can transfer data to and from a server over network. It supports a number of transfer protocols, notably HTTP/HTTPS, and many others such as FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS, etc. When you send out an HTTP request for a URL with curl, it uses a default HTTP header with only essential header fields (e.g., User-Agent, Host, and Accept). + +![](https://farm8.staticflickr.com/7568/16225032086_fb8f1c508a_b.jpg) + +In some cases, however, you may want to override the default header or even add a custom header field in an HTTP request. For example, you may want to override "Host" field to test a [load balancer][1], or spoof "User-Agent" string to get around browser-specific access restriction. In other cases, you may be accessing a website which requires a specific cookie, or testing a REST-ful API with various custom parameters in the header. + +To handle all these cases, curl provides an easy way to fully control the HTTP header of outgoing HTTP requests. The parameter you want to use is "-H" or equivalently "--header". + +The "-H" option can be specified multiple times with curl command to define more than one HTTP header fields. + +For example, the following command sets three HTTP header fields, i.e., overriding "Host" field, and add two fields ("Accept-Language" and "Cookie"). + + $ curl -H 'Host: 157.166.226.25' -H 'Accept-Language: es' -H 'Cookie: ID=1234' http://cnn.com + +![](https://farm8.staticflickr.com/7520/16250111432_de39638ec0_c.jpg) + +For standard HTTP header fields such as "User-Agent", "Cookie", "Host", there is actually another way to setting them. The curl command offers designated options for setting these header fields: + +- **-A (or --user-agent)**: set "User-Agent" field. +- **-b (or --cookie)**: set "Cookie" field. +- **-e (or --referer)**: set "Referer" field. + +For example, the following two commands are equivalent. Both of them change "User-Agent" string in the HTTP header. + + $ curl -H "User-Agent: my browser" http://cnn.com + $ curl -A "my browser" http://cnn.com + +wget is another command-line tool which you can use to fetch a URL similar to curl, and wget also allows you to use a custom HTTP header. Check out [this post][2] for details on wget command. + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/custom-http-header-curl.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/haproxy-http-load-balancer-linux.html +[2]:http://xmodulo.com/how-to-use-custom-http-headers-with-wget.html \ No newline at end of file diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md new file mode 100644 index 0000000000..f1663888c8 --- /dev/null +++ b/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md @@ -0,0 +1,56 @@ +Linux FAQs with Answers--How to use yum to download a RPM package without installing it +================================================================================ +> **Question**: I want to download a RPM package from Red Hat's standard repositories. Can I use yum command to download a RPM package without installing it? + +yum is the default package manager for Red Hat based systems, such as CentOS, Fedora or RHEL. Using yum, you can install or update a RPM package while resolving its package dependencies automatically. What if you want to download a RPM package without installing it on the system? For example, you may want to archive some RPM packages for later use or to install them on another machine. + +Here is how to download a RPM package from yum repositories. + +### Method One: Yum ### + +The yum command itself can be used to download a RPM package. The standard yum command offers '--downloadonly' option for this purpose. + + $ sudo yum install --downloadonly + +By default, a downloaded RPM package will be saved in: + + /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages + +In the above, [repository] is the name of the repository (e.g., base, fedora, updates) from which the package is downloaded. + +If you want to download a package to a specific directory (e.g., /tmp): + + $ sudo yum install --downloadonly --downloaddir=/tmp + +Note that if a package to download has any unmet dependencies, yum will download all dependent packages as well. None of them will be installed. + +One important thing is that on CentOS/RHEL 6 or earlier, you will need to install a separate yum plugin (called yum-plugin-downloadonly) to be able to use '--downloadonly' command option: + + $ sudo yum install yum-plugin-downloadonly + +Without this plugin, you will get the following error with yum: + + Command line error: no such option: --downloadonly + +![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) + +### Method Two: Yumdownloader ### + +Another method to download a RPM package is via a dedicated package downloader tool called yumdownloader. This tool is part of yum-utils package which contains a suite of helper tools for yum package manager. + + $ sudo yum install yum-utils + +To download a RPM package: + + $ sudo yumdownloader + +The downloaded package will be saved in the current directory. You need to use root privilege because yumdownloader will update package index files during downloading. Unlike yum command above, none of the dependent package(s) will be downloaded. + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/yum-download-rpm-package.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From 88c2152c5884ebced13ddcd7b2b3a06482f1fe0d Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Thu, 22 Jan 2015 12:10:50 +0800 Subject: [PATCH 027/725] Rename How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps to How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 命名错误,重新命名 --- ...How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename translated/tech/{How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps => How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md} (100%) diff --git a/translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps b/translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md similarity index 100% rename from translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps rename to translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md From 848826d036585df3bb04d49fe4923cd3d0cf795a Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Thu, 22 Jan 2015 16:33:45 +0800 Subject: [PATCH 028/725] Translating by ZTinoZ --- ...41223 20 Linux Commands Interview Questions & Answers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index d2374752ea..256a6cd5df 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -52,13 +52,13 @@ linuxtechi@localhost:~$ dig -t TXT google.com -**问:8 How to identify which package the specified file (/etc/fstab) is associated with in linux ?** +**问:8 如何识别Linux系统中指定文件(/etc/fstab)的关联包?** 答: # rpm -qf /etc/fstab -以上命令能列出Above command will list the package which provides file “/etc/fstab” +以上命令能列出供应给“/etc/fstab”文件的包。 -**问:9 Which command is used to check the status of bond0 ?** +**问:9 哪条命令用来查看bond0的状态?** 答: cat /proc/net/bonding/bond0 From 68c1b1d6aca07856abfe3e68dcfcac413bb4fd64 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Thu, 22 Jan 2015 16:48:43 +0800 Subject: [PATCH 029/725] =?UTF-8?q?20150122-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Top 10 FOSS legal developments of 2014.md | 72 ++++++++++ ...122 Top 10 open source projects of 2014.md | 126 ++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 sources/talk/20150122 Top 10 FOSS legal developments of 2014.md create mode 100644 sources/talk/20150122 Top 10 open source projects of 2014.md diff --git a/sources/talk/20150122 Top 10 FOSS legal developments of 2014.md b/sources/talk/20150122 Top 10 FOSS legal developments of 2014.md new file mode 100644 index 0000000000..a97e4910c6 --- /dev/null +++ b/sources/talk/20150122 Top 10 FOSS legal developments of 2014.md @@ -0,0 +1,72 @@ +Top 10 FOSS legal developments of 2014 +================================================================================ +![](http://opensource.com/sites/default/files/styles/image-full-size/public/images/law/LAW_PatentSpotlight_520x292_cm.png.png?itok=N-O9b4FW) + +Image by : opensource.com + +The year 2014 continued the trend of the increasing importance of legal issues for the FOSS community. Continuing [the tradition of looking back][1] over the top ten legal developments in FOSS, my selection of the top ten issues for 2014 is as follows: + +### 1. Courts interpret General Public License version 2 (GPLv2) ### + +The GPLv2 continues to be the most widely used and most important license for free and open source software. Black Duck Software estimates that 16 billion lines of code are licensed under the GPLv2. Despite its importance, the GPLv2 has been the subject of very few court decisions, and virtually all of the most important terms of the GPLv2 have not been interpreted by courts. This lack of court decisions is about to change due to the five interrelated cases arising from an attempt by Versata Software, Inc. (Versata) to terminate its software license to Ameriprise Financial, Inc. Versata’s product included software licensed by Ximpleware, Inc. (Ximpleware) under the GPLv2, but Versata had not complied with the terms of the GPLv2. Ximpleware sued Versata and eight of its customers for both copyright and patent infringement. (For a more detailed description of the facts [read this article][2].) This dispute is important because Ximpleware is the first commercial enforcer of the GPLv2 in which the courts are likely to issue decisions and Ximpleware is seeking monetary damages rather than compliance. + +### 2. GPL guides ### + +Two of the most important organizations enforcing the GPL family of licenses recently provided [guidance on compliance][3]: On October 31, the Software Freedom Law Center published the second version of their Practical Guide to GPL Compliance. Several days later, the Software Conservancy and the Free Software Foundation published the first version of their guide, the Copyleft, and the GNU General Public License: [A Comprehensive Tutorial and Guide][4]. These guides are required reading for anyone managing FOSS. + +### 3. EU Commission (EC) to revise FOSS policy ### + +Governments are one of the most important users of software but have had a mixed record in using and contributing to FOSS (free and open source software). The EC recently announced that it intends to remove the barriers that may hinder code contributions to FOSS projects. In particular, the EC wants to clarify legal aspects, including intellectual property rights, copyright, and which author or authors to name when submitting code to the upstream repositories. Pierre Damas, Head of Sector at the Directorate General for IT, [hopes that such clarification][5] will motivate many of the EC’s software developers and functionaries to promote the use of FOSS at the EC. + +### 4. Validation of FOSS business model by Hortonworks IPO ### + +Hortonworks provides services and support for the Hadoop data analysis software managed by the Apache Software Foundation. Hortonworks is one of three venture backed companies based on the Hadoop software. Hortonworks went public this fall and immediately rose 65% in share price, valuing the company at over $1 billion. The market for Hadoop products, software, and services is projected to reach $50.2 billion in 2020, up from $1.5 billion in 2012. + +### 5. Core Infrastructure Initiative ### + +The Linux Foundation put together [a consortium of companies][6] to support the many smaller open source projects that are critical to software ecosystem, such as OpenSSL. This effort was a response to the Heartbleed problem with OpenSSL in 2013, which I described in last year’s summary. This consortium is a great example of the ability of the FOSS community to come together to solve community problems. + +### 6. Linux SCO case terminated again ### + +The lawsuit by Santa Cruz Operations, Inc. (SCO) against IBM claiming that Linux includes Unix code was once a potentially major challenge to FOSS. Despite losing its suit against Novell, the bankruptcy court allowed SCO to continue its suit against IBM. I thought this case [had been concluded in 2008][7], but Judge Nuffer appears to have put the case to rest on December 15, 2014. He dismissed the case against IBM based on the decisions in the Novell case (although SCO could still appeal once again): + +*It is further ORDERED that, with respect to all remaining claims and counterclaims, SCO is bound by, and may not here re-litigate, the rulings in the Novell Judgment that Novell (not SCO) owns the copyrights to the pre-1996 UNIX source code, and that Novell waived SCO’s contract claims against IBM for alleged breaches of the licensing agreements pursuant to which IBM licensed such source code.* + +### 7. FOSS trademark issues ### + +The use of trademarks in FOSS projects continues to raise issues. This year brought the settlement of the dispute over the “Python” mark between the Python Software Foundation and Veber, a small hosting company in the UK. Veber had decided to use "Python" in branding certain of its products and services. In addition, the OpenStack Foundation is working through the application of trademarks to the OpenStack project through its [DefCore committee][8]. + +### 8. Use of FOSS by commercial companies expands ### + +We have discussed in the past how many large companies are using FOSS as an explicit strategy to build their software. Jim Zemlin, Executive Director of the Linux Foundation, has described this strategic use of FOSS as external “research and development.” His conclusions are supported by Gartner who noted that “the top tech companies are still spending tens of billions of dollars on software research and development, the smart ones are leveraging open source for 80 percent of the code and spending their money on the remaining 20 percent, which represents their program’s ‘special sauce.’” The scope of this trend was emphasized by Microsoft’s announcement that it was “open sourcing” the .NET software framework (this software is used by millions of developers to build and operate websites and other large online applications). + +### 9. Rockstar Consortium threat evaporates ### + +The Rockstar Consortium was formed by Microsoft, Blackberry, Ericsson, Sony, and Apple to exploit the 6,000 patents from Nortel Networks. The Rockstar Consortium sued Google for infringement of the Android operating system. This litigation was aimed at fundamental functions of the Android operating system and could have had a significant effect on the Android ecosystem. The Rockstar Consortium settled its litigation with Google this year, but then sold 4,000 of its patents to RPX, the patent defense firm (financed by a number of companies as well as RPX). The remaining patents were distributed to the members of the Rockstar Consortium. + +### 10. Android litigation ### + +The litigation surrounding Android continued this year, with significant developments in the patent litigation between Apple Computer, Inc. (Apple) and Samsung Electronics, Inc. (Samsung) and the copyright litigation over the Java APIs between Oracle Corporation (Oracle) and Google, Inc. (Google). Apple and Samsung have agreed to end patent disputes in nine countries, but they will continue the litigation in the US. As I stated last year, the Rockstar Consortium was a wild card in this dispute. However, the Rockstar Consortium settled its litigation with Google this year and sold off its patents, so it will no longer be a risk to the Android ecosystem. + +The copyright litigation regarding the copyrightability of the Java APIs was brought back to life by the Court of Appeals for the Federal Circuit (CAFC) decision which overturned [the District Court decision][9]. The District Court had found that Google was not liable for copyright infringement for its admitted copying of the Java APIs: the court found that the Java APIs were either not copyrightable or their use by Google was protected by various defenses to copyright. The CAFC overturned both the decision and the analysis and remanded the case to the District Court for a review of the fair use defense raised by Google. Subsequently, Google filed an appeal to the Supreme Court. The impact of a finding that Google was liable for copyright infringement in this case would have a dramatic effect on Android and, depending on the reasoning, would have a ripple effect across the interpretation of the scope of the “copyleft” terms of the GPL family of licenses which use APIs. + +-------------------------------------------------------------------------------- + +via: http://opensource.com/law/15/1/top-foss-legal-developments-2014 + +作者:[Mark Radcliffe][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://opensource.com/users/mradcliffe +[1]:http://lawandlifesiliconvalley.com/blog/?p=853 +[2]:http://opensource.com/law/14/12/gplv2-court-decisions-versata +[3]:http://www.softwarefreedom.org/resources/ +[4]:http://www.copyleft.org/guide/ +[5]:https://joinup.ec.europa.eu/community/osor/news/european-commission-update-its-open-source-policy +[6]:http://www.linuxfoundation.org/programs/core-infrastructure-initiative +[7]:http://lawandlifesiliconvalley.com/blog/?m=200812 +[8]:https://wiki.openstack.org/wiki/Governance/CoreDefinition +[9]:http://law.justia.com/cases/federal/appellate-courts/cafc/13-1021/13-1021-2014-05-09.html \ No newline at end of file diff --git a/sources/talk/20150122 Top 10 open source projects of 2014.md b/sources/talk/20150122 Top 10 open source projects of 2014.md new file mode 100644 index 0000000000..edc81938d6 --- /dev/null +++ b/sources/talk/20150122 Top 10 open source projects of 2014.md @@ -0,0 +1,126 @@ +Top 10 open source projects of 2014 +================================================================================ +![](http://opensource.com/sites/default/files/styles/image-full-size/public/images/life/top10_projects_lead.jpg?itok=tMZo2sYi) + +Image credits : [CC0 Public Domain][1], modifications by Jen Wike Huger + +Every year we collect the best of the best open source projects covered on Opensource.com. [Last year's list of 10 projects][2] guided people working and interested in tech throughout 2014. Now, we're setting you up for 2015 with a brand new list of accomplished open source projects. + +Some faces are new. Some have been around and just keep rocking it. Let's dive in! + +## Top 10 open source projects in 2014 ## + +### Docker ### + +[application container platform][3] + +"In the same way that power management and virtualisation has allowed us to get maximum engineering benefit from our server utilisation, the problem of how to really solve first world problems in virtualisation has remained prevalent. Docker's open sourcing in 2013 can really align itself with these pivotal moments in the evolution of open source—providing the extensible building blocks allowing us as engineers and architects to extend distributed platforms like never before." —Richard Morrell, [Senior software engineer Petazzoni on the breathtaking growth of Docker][4]. + +**Interview**: VP of Services for Docker talks to Jodi Biddle in [Why is Docker the new craze in virtualization and cloud computing?][5] "I think it's the lightweight nature of Docker combined with the workflow. It's fast, easy to use and a developer-centric DevOps-ish tool. Its mission is basically: make it easy to package and ship code." —James Turnbull. + +### Kubernetes ### + +[orchestration system for containers][6] + +"One of the projects you're starting to hear a lot about in the orchestration space is [Kubernetes][7], which came out of Google's internal container work. It aims to provide features such as high availability and replication, service discovery, and service aggregation." —Gordon Haff, [Open source accelerating the pace of software][8]. + +### Taiga ### + +[project management platform][9] + +"It’s almost always the case that the project management tool doesn’t reflect the actual project scenario. One solution to this is using a tool that is intuitive and fits alongside the developer's normal workflow. Additionally, a tool that is quick to update and attracts users to use it. [Taiga][10] is an open source project management tool that aims to solve the basic problem of software usability." —Nitish Tiwari, [Taiga, a new open source project management tool with focus on usability][11]. + +### Apache Mesos ### + +[cluster manager][12] + +"[Apache Mesos][13] is a cluster manager that provides efficient resource isolation and sharing across distributed applications or frameworks. It sits between the application layer and the operating system and makes it easier to deploy and manage applications in large-scale clustered environments more efficiently. It can run many applications on a dynamically shared pool of nodes. Prominent users of Mesos include Twitter, Airbnb, MediaCrossing, Xogito and Categorize. —Sachin P Bappalige, [Open source datacenter computing with Apache Mesos][14]. + +Interview: Head of Open Source at Twitter talks to Jason Hibbets in [Scale like Twitter with Apache Mesos][15]. "As of today, Twitter has over 270 million active users which produces 500+ million tweets a day, up to 150k+ tweets per second, and more than 100TB+ of compressed data per day. Architecturally, Twitter is mostly composed of services, mostly written in the open source project [Finagle][16], representing the core nouns of the platform such as the user service, timeline service, and so on. Mesos allows theses services to scale to tens of thousands of bare-metal machines and leverage a shared pool of servers across data centers." —Chris Aniszczyk + +### OpenStack ### + +[cloud computing platform][17] + +"As OpenStack continues to mature and slowly make its way into production environments, the focus on the user is continuing to grow. And so, to better meet the needs of users, the community is working hard to get users to meet the next step of engagement by highlighting those users who are change agents both in their organization and within the OpenStack community at large: the superusers." —Jason Baker, [What is an OpenStack superuser][18]? + +**Interview**: Infrastructure manager at CERN talks to Jason Hibbets in [How OpenStack powers the research at CERN][19]. "At CERN, the European Organization for Nuclear Research physicists and engineers are probing the fundamental structure of the universe. In order to do this, we use some of the world's largest and most complex scientific instruments such as the Large Hadron Collider, a 27 KM ring 100m underground on the border between France and Switzerland. OpenStack provides the infrastructure cloud which is used to provide much of the compute resources for this processing." —Tim Bell. + +### Ansible ### + +[IT automation tool][20] + +"A lot of what I want to do is enable people to not only have more free time for beer, but to have more free time for their own projects, their own ideas, and to do new an interesting things." —[Michael DeHaan, Making your IT infrastructure boring with Ansible][21]. + +**Interview**: CTO of Ansible talks to Jen Krieger in [Behind the scenes with CTO Michael DeHaan of Ansible][22]. "I like to quote Star Trek 2 a lot. We definitely optimize for 'the needs of the many'. I know Spock dies after he says that, but he does get to come back." —Michael DeHaan + +### ownCloud ### + +[cloud storage tool][23] + +"I was looking for an easy way how to have all my online storage services, such as Google Drive and Dropbox, integrated with my Linux desktop without using some nasty hack, and I finally have a solution that works. I'm here to share it with you. This is not rocket science really, all I did was a little bit of documentation reading, and a couple of clicks." —Jiri Folta, [Using ownCloud to integrate Dropbox, Google Drive, and more in Gnome][24]. + +**Listed**: Top 5 open source alternatives: "ownCloud does most everything that the proprietary names do and it keeps control of your information in your hands." —Scott Nesbitt, [Five open source alternatives to popular web apps][25]. + +### Apache Hadoop ### + +[framework for big data][26] + +"Apache Hadoop is an open source software framework for storage and large scale processing of data-sets on clusters of commodity hardware. Hadoop is an Apache top-level project being built and used by a global community of contributors and users. It is licensed under the Apache License 2.0." —Sachin P Bappalige, [An introduction to Apache Hadoop for big data][27]. + +### Drupal ### + +[content management system (CMS)][28] + +"When it was released in 2011, Drupal 7 was the most accessible open source content management system (CMS) available. I expect that this will be true until the release of Drupal 8. Web accessibility requires constant vigilance and will be something that will always need attention in any piece of software striving to meet the Web Content Accessibility Guidelines (WCAG) 2.0 guidelines." —Mike Gifford, [Drupal 8's accessibility advantage][29]. + +### OpenDaylight ### + +[foundation for software defined networking][30] + +"We are seeing more and more that the networking functions traditionally done in the datacenter by dedicated, almost exclusively proprietary hardware and software combinations, are now being defined through software. Leading that charge within the open source community has been the [OpenDaylight Project][31], a collaborative project through the [Linux Foundation][32] working to define the needs which software defined networking may fill and coordinating the efforts of individuals and companies worldwide to create an open source solution to software defined networking (SDN)." —Jason Baker, [Define your network in software with OpenDaylight][33]. + +-------------------------------------------------------------------------------- + +via: http://opensource.com/business/14/12/top-10-open-source-projects-2014 + +作者:[Jen Wike Huger][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://opensource.com/users/jen-wike +[1]:http://pixabay.com/en/lightbulb-lamp-light-hotspot-336193/ +[2]:http://opensource.com/life/13/12/top-open-source-projects-2013 +[3]:https://www.docker.com/ +[4]:http://opensource.com/business/14/7/interview-jerome-petazzoni-docker +[5]:https://opensource.com/business/14/7/why-docker-new-craze-virtualization-and-cloud-computing +[6]:http://kubernetes.io/ +[7]:https://cloud.google.com/compute/docs/containers +[8]:http://opensource.com/business/14/11/open-source-accelerating-pace-software +[9]:https://taiga.io/ +[10]:https://github.com/taigaio +[11]:https://opensource.com/business/14/10/taiga-open-source-project-management-tool +[12]:http://mesos.apache.org/ +[13]:http://mesos.apache.org/ +[14]:https://opensource.com/business/14/9/open-source-datacenter-computing-apache-mesos +[15]:https://opensource.com/business/14/8/interview-chris-aniszczyk-twitter-apache-mesos +[16]:https://twitter.github.io/finagle/ +[17]:http://www.openstack.org/ +[18]:https://opensource.com/business/14/5/what-is-openstack-superuser +[19]:https://opensource.com/business/14/10/interview-tim-bell-cern-it-operating-systems +[20]:http://www.ansible.com/home +[21]:https://opensource.com/business/14/12/ansible-it-infrastructure +[22]:https://opensource.com/business/14/10/interview-michael-dehaan-ansible +[23]:http://owncloud.org/ +[24]:https://opensource.com/life/14/12/using-owncloud-integrate-dropbox-google-drive-gnome +[25]:https://opensource.com/life/14/10/five-open-source-alternatives-popular-web-apps +[26]:http://hadoop.apache.org/ +[27]:http://opensource.com/life/14/8/intro-apache-hadoop-big-data +[28]:https://www.drupal.org/ +[29]:http://opensource.com/business/14/5/new-release-drupal-8-accessibility-advantage +[30]:http://www.opendaylight.org/ +[31]:http://www.opendaylight.org/ +[32]:http://www.linuxfoundation.org/ +[33]:http://opensource.com/business/14/5/defining-your-network-software-opendaylight From b9039a42d65b5e87e7f91c08d49a8ff8d0381a1e Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 22 Jan 2015 17:14:43 +0800 Subject: [PATCH 030/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...all New Fonts In Ubuntu 14.04 and 14.10.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/translated/tech/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md b/translated/tech/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md index fd108461d2..6838ea7df4 100644 --- a/translated/tech/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md +++ b/translated/tech/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md @@ -2,20 +2,19 @@ ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/fonts.jpg) -Ubuntu默认自带了很多字体。但你或许对这些字体还不满意。因此,你可以做的是在**Ubuntu 14.04、 14.10或者像Linux Mint其他的系统中安装额外的字体**。 +Ubuntu默认自带了很多字体。但有时候你或许对这些字体还不满意。因此,你可以做的是在**Ubuntu 14.04、 14.10或者像Linux Mint之类的其它Linux系统中安装额外的字体**。 ### 第一步: 获取字体 ### -第一步也是最重要的,下载你选择的字体。现在你或许在考虑从哪里下载字体。不要担心,Google搜索可以给你提供几个免费的字体网站。你可以先去看看[ Lost Type 的字体][1]。[Squirrel的字体][2]同样也是一个下载字体的好地方。 +第一步也是最重要的一步,下载你选择的字体。现在你或许在考虑从哪里下载字体。不要担心,Google搜索可以给你提供几个免费的字体网站。你可以先去看看[ Lost Type 的字体][1]。[Squirrel][2]同样也是一个下载字体的好地方。 ### 第二步:在Ubuntu中安装新字体 ### -Font Viewer. In here, you can see the option to install the font in top right corner: -下载的字体文件可能是一个压缩包。先解压它。大多数字体文件的格式是[TTF][3] (TrueType Fonts) 或者[OTF][4] (OpenType Fonts)。无论是哪种,只要双击字体文件。它会自动用字体查看器打开。这里你可以在右上角看到安装安装选项。 +下载的字体文件可能是一个压缩包,先解压它。大多数字体文件的格式是[TTF][3] (TrueType字体) 或者[OTF][4] (OpenType字体)。无论是哪种,只要双击字体文件。它会自动用字体查看器打开。这里你可以在右上角看到安装选项。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Install_New_Fonts_Ubuntu.png) -在安装字体时不会看到其他信息。几秒钟后,你会看到状态变成已安装。不用猜,这就是已安装的字体。 +在安装字体时不会看到其他信息。几秒钟后,你会看到状态变成已安装。不用猜,字体已经安装完毕。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Install_New_Fonts_Ubuntu_1.png) @@ -23,20 +22,20 @@ Font Viewer. In here, you can see the option to install the font in top right co ### 第二步:在Linux上一次安装几个字体 ### -我没有打错。这仍旧是第二步但是只是是一个备选方案。我上面看到的在Ubuntu中安装字体的方法是不错的。但是这有一个小问题。当你有20个新字体要安装时。一个个单独双击即繁琐又麻烦。你不这么认为么? +我没有打错。这仍旧是第二步但是只是一个备选方案。我们上面看到的在Ubuntu中安装字体的方法是不错的。但是这有一个小问题。当你有20个新字体要安装时。一个个单独双击即繁琐又麻烦。你不这么认为么? -要在Ubuntu中一次安装几个字体,你要做的是创建一个.fonts文件夹,如果在你的家目录下还不存在这个目录的话。并把解压后的TTF和OTF文件复制到这个文件夹内。 +要在Ubuntu中一次安装几个字体,你唯一要做的是在你的家目录下创建一个.fonts文件夹,如果它不存在的话。并把解压后的TTF和OTF文件复制到这个文件夹内。 在文件管理器中进入家目录。按下Ctrl+H [显示Ubuntu中的隐藏文件][5]。 右键创建一个文件夹并命名为.fonts。 这里的点很重要。在Linux中,在文件的前面加上点意味在普通的视图中都会隐藏。 #### 备选方案: #### -另外你可以安装字体管理程序来以GUI的形式管理字体。要在Ubuntu中安装字体管理程序,打开终端并输入下面的命令: +另外你可以安装字体管理程序,在图形用户界面管理字体。要在Ubuntu中安装字体管理程序,打开终端并输入下面的命令: sudo apt-get install font-manager -Open the Font Manager from Unity Dash. You can see installed fonts and option to install new fonts, remove existing fonts etc here. -从Unity Dash中打开字体管理器。你可以看到已安装的字体和安装新字体、删除字体等选项。 + +从Unity Dash中打开字体管理器。在这里你可以看到已安装的字体和安装新字体、删除字体等选项。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Font_Manager_Ubuntu.jpeg) @@ -44,7 +43,7 @@ Open the Font Manager from Unity Dash. You can see installed fonts and option to sudo apt-get remove font-manager -我希望这篇文章可以帮助你在Ubuntu或其他Linux系统上安装字体。如果你有任何问题或建议请让我知道。 +我希望这篇文章可以帮助你在Ubuntu或其它Linux系统上安装字体。如果你有任何问题或建议请在下方评论中告诉我。 -------------------------------------------------------------------------------- @@ -52,7 +51,7 @@ via: http://itsfoss.com/install-fonts-ubuntu-1404-1410/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -61,4 +60,4 @@ via: http://itsfoss.com/install-fonts-ubuntu-1404-1410/ [2]:http://www.fontsquirrel.com/ [3]:http://en.wikipedia.org/wiki/TrueType [4]:http://en.wikipedia.org/wiki/OpenType -[5]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ \ No newline at end of file +[5]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ From ae6e08a3757da9deb6542a843556418df4bd1ae0 Mon Sep 17 00:00:00 2001 From: Stevearzh Date: Thu, 22 Jan 2015 20:04:55 +0800 Subject: [PATCH 031/725] Translating by Stevearzh --- sources/talk/20150114 Why Mac users don't switch to Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20150114 Why Mac users don't switch to Linux.md b/sources/talk/20150114 Why Mac users don't switch to Linux.md index f0094f14d9..6a72276819 100644 --- a/sources/talk/20150114 Why Mac users don't switch to Linux.md +++ b/sources/talk/20150114 Why Mac users don't switch to Linux.md @@ -1,3 +1,4 @@ +[Translating by Stevearzh] Why Mac users don’t switch to Linux ================================================================================ Linux and Mac users share at least one common thing: they prefer not to use Windows. But after that the two groups part company and tend to go their separate ways. But why don’t more Mac users switch to Linux? Is there something that prevents Mac users from making the jump? From 29e887d2951454e8f8ef77d9fb68cf96e0de83ed Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 22 Jan 2015 20:54:46 +0800 Subject: [PATCH 032/725] PUB:20141009 How to convert image audio and video formats on Ubuntu @mr-ping --- ...vert image audio and video formats on Ubuntu.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename {translated/tech => published}/20141009 How to convert image audio and video formats on Ubuntu.md (84%) diff --git a/translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md b/published/20141009 How to convert image audio and video formats on Ubuntu.md similarity index 84% rename from translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md rename to published/20141009 How to convert image audio and video formats on Ubuntu.md index 93d4a44f58..93dd76f5a6 100644 --- a/translated/tech/20141009 How to convert image audio and video formats on Ubuntu.md +++ b/published/20141009 How to convert image audio and video formats on Ubuntu.md @@ -1,9 +1,9 @@ 如何在Ubuntu上转换图像、音频和视频格式 ================================================================================ -如果你的工作中需要接触到各种不同编码格式的图像、音频和视频,那么你很有可能正在使用多个工具来转换这些多种多样的媒介格式。如果存在一个能够处理所有图像/音频/视频格式的多和一转换工具,那就太好了。 +如果你的工作中需要接触到各种不同编码格式的图像、音频和视频,那么你很有可能正在使用多个工具来转换这些多种多样的媒体格式。如果存在一个能够处理所有图像/音频/视频格式的多合一转换工具,那就太好了。 -[Format Junkie][1] 就是这样一个多和一的媒介转换工具,它有着极其友好的用户界面。更棒的是它是一个免费软件。你可以使用 Format Junkie 来转换几乎所有的流行格式的图像、音频、视频和归档文件(或称压缩文件),所有这些只需要简单地点击几下鼠标而已。 +[Format Junkie][1] 就是这样一个多合一的媒体转换工具,它有着极其友好的用户界面。更棒的是它是一个免费软件。你可以使用 Format Junkie 来转换几乎所有的流行格式的图像、音频、视频和归档文件(或称压缩文件),所有这些只需要简单地点击几下鼠标而已。 ### 在Ubuntu 12.04, 12.10 和 13.04 上安装 Format Junkie ### @@ -47,11 +47,11 @@ Format Junkie 可以通过 Ubuntu PPA format-junkie-team 进行安装。这个PP #### 使用 Format Junkie 来转换音频、视频、图像和归档格式 #### -就像下方展示的一样,Format Junkie 的用户界面简单而且直观。在顶部的音频、视频、图像和iso媒介四个标签当中点击你需要的那个。你可以根据需要添加无限量的文件用于批量转换。添加文件后,选择输出格式,直接点击 "Start Converting" 按钮进行转换。 +就像下方展示的一样,Format Junkie 的用户界面简单而且直观。在顶部的音频、视频、图像和iso媒体四个标签当中点击你需要的那个。你可以根据需要添加任意数量的文件用于批量转换。添加文件后,选择输出格式,直接点击 "Start Converting" 按钮进行转换。 ![](http://farm9.staticflickr.com/8107/8643695905_082b323059.jpg) -Format Junkie支持以下媒介媒介媒介格式间的转换: +Format Junkie支持以下媒体格式间的转换: - **Audio**: mp3, wav, ogg, wma, flac, m4r, aac, m4a, mp2. - **Video**: avi, ogv, vob, mp4, 3gp, wmv, mkv, mpg, mov, flv, webm. @@ -60,7 +60,7 @@ Format Junkie支持以下媒介媒介媒介格式间的转换: #### 用 Format Junkie 进行字幕编码 #### -除了媒介转换,Format Junkie 可提供了字幕编码的图形界面。实际的字幕编码是由MEncoder来完成的。为了使用Format Junkie的字幕编码接口,首先你需要安装MEencoder。 +除了媒体转换,Format Junkie 可提供了字幕编码的图形界面。实际的字幕编码是由MEncoder来完成的。为了使用Format Junkie的字幕编码接口,首先你需要安装MEencoder。 $ sudo apt-get install mencoder @@ -68,9 +68,9 @@ Format Junkie支持以下媒介媒介媒介格式间的转换: ![](http://farm9.staticflickr.com/8100/8644791396_bfe602cd16.jpg) -总而言之,Format Junkie 是一个非常易于使用和多才多艺的媒介转换工具。但也有一个缺陷,它不允许对转换进行任何定制化(例如:比特率,帧率,采样频率,图像质量,尺寸)。所以这个工具推荐正在寻找一个简单易用的媒介转换工具的新手使用。 +总而言之,Format Junkie 是一个非常易于使用和多才多艺的媒体转换工具。但也有一个缺陷,它不允许对转换进行任何定制化(例如:比特率,帧率,采样频率,图像质量,尺寸)。所以这个工具推荐给正在寻找一个简单易用的媒体转换工具的新手使用。 -喜欢这篇文章吗?在facebook、twitter和google+上给我点赞/分享吧。多谢! +喜欢这篇文章吗?请在下面发表评论吧。多谢! -------------------------------------------------------------------------------- From 7c7ee6a171373f47c53b08cb1cbb174c2695402d Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 22 Jan 2015 21:01:22 +0800 Subject: [PATCH 033/725] PUB:20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10 @geekpi --- ...20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md (100%) diff --git a/translated/tech/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md b/published/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md similarity index 100% rename from translated/tech/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md rename to published/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md From 704555fa869bc59295b3b7f2dfd8bc5403dd5b99 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 22 Jan 2015 21:11:33 +0800 Subject: [PATCH 034/725] PUB:20141120 How to install an Opensource VPN Server on Linux @geekpi --- ...ow to install an Opensource VPN Server on Linux.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) rename {translated/tech => published}/20141120 How to install an Opensource VPN Server on Linux.md (85%) diff --git a/translated/tech/20141120 How to install an Opensource VPN Server on Linux.md b/published/20141120 How to install an Opensource VPN Server on Linux.md similarity index 85% rename from translated/tech/20141120 How to install an Opensource VPN Server on Linux.md rename to published/20141120 How to install an Opensource VPN Server on Linux.md index 2484c31700..49150565d8 100644 --- a/translated/tech/20141120 How to install an Opensource VPN Server on Linux.md +++ b/published/20141120 How to install an Opensource VPN Server on Linux.md @@ -2,17 +2,17 @@ ================================================================================ ![](http://techarena51.com/wp-content/uploads/2014/10/open-vpn.png) -我上网时最担心的一件事情是,我该如何确保我的数据安全和隐私。在搜索答案的过程中,我找到了很多保持匿名的方法,比如使用代理网站。但是使用第三方的服务不能完全保证。我需要的是有一款软件可以我自己安装并运行,那样我就能确保只有我才能访问数据。 +我上网时最担心的一件事情是,我该如何确保我的数据安全和隐私。在搜索答案的过程中,我找到了很多保持匿名的方法,比如使用代理网站。但是使用第三方的服务不能完全保证。我需要的是有一款软件可以让我自己安装并运行,那样我就能确保只有我才能访问数据。 这款软件叫什么呢? 它叫VPN服务,就是虚拟隐私网络的简称。它允许访问时通过SSL加密你的数据。因为是加密的连接,所以你的ISP不能看到你的浏览信息。 -在本篇Linux教程中,我会在CentOS 7上安装一个OpenVPN服务。OpenVPN很容易使用,开源且拥有基于社区的支持。它的客户端有Windows、Android和Mac。 +在本篇Linux教程中,我会在CentOS 7上安装一个OpenVPN服务。OpenVPN很容易使用,开源且拥有社区的支持。它的客户端支持Windows、[Android][1]和Mac。 -### 第一步: 在你的Linux机器或者 [VPS][1]上安装OpenVPN服务 ### +### 第一步: 在你的Linux机器或者 VPS 上安装OpenVPN服务 ### -从https://openvpn.net/index.php/access-server/download-openvpn-as-sw.html下载安装包,Ubuntu用户也可以找到合适的安装包并安装。 +从 https://openvpn.net/index.php/access-server/download-openvpn-as-sw.html 下载安装包,Ubuntu用户也可以找到合适的安装包并安装。 [leo@vps ]$ cd /tmp [leo@vps tmp]$ wget http://swupdate.openvpn.org/as/openvpn-as-2.0.10-CentOS7.x86_64.rpm @@ -61,11 +61,10 @@ via: http://techarena51.com/index.php/how-to-install-an-opensource-vpn-server-on 作者:[Leo G][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://techarena51.com/ [1]:https://play.google.com/store/apps/details?id=net.openvpn.openvpn&hl=en -[2]:http://supportinc.net/vps-hosting.php [3]:https://openvpn.net/index.php/access-server/docs/admin-guides-sp-859543150/howto-connect-client-configuration.html \ No newline at end of file From 7e2774538792356566132b26dc0c1241707c59e7 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 22 Jan 2015 21:22:49 +0800 Subject: [PATCH 035/725] PUB:20141124 Linux blkid Command to Find Block Devices Details @felixonmars --- ...d Command to Find Block Devices Details.md | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) rename {translated/tech => published}/20141124 Linux blkid Command to Find Block Devices Details.md (81%) diff --git a/translated/tech/20141124 Linux blkid Command to Find Block Devices Details.md b/published/20141124 Linux blkid Command to Find Block Devices Details.md similarity index 81% rename from translated/tech/20141124 Linux blkid Command to Find Block Devices Details.md rename to published/20141124 Linux blkid Command to Find Block Devices Details.md index 720baf2b33..9a912daf7a 100644 --- a/translated/tech/20141124 Linux blkid Command to Find Block Devices Details.md +++ b/published/20141124 Linux blkid Command to Find Block Devices Details.md @@ -2,39 +2,27 @@ ================================================================================ 今天我们将会向你展示如何使用 **lsblk** 和 **blkid** 工具来查找关于块设备的信息,我们使用的是一台安装了 CentOS 7.0 的机器。 +## lsblk ## + **lsblk** 是一个 Linux 工具,它会显示有关你系统里所有可用块设备的信息。它从 [sysfs 文件系统][1] 中获取信息。默认情况下,这个工具将会以树状格式显示(除了内存虚拟磁盘外的)所有块设备。 ### lsblk 默认输出 ### 默认情况下 lsblk 会将块设备输出为树状格式: -**NAME** +- **NAME** —— 设备的名称 - —— 设备的名称 +- **MAJ:MIN** —— Linux 操作系统中的每个设备都以一个文件表示,对块(磁盘)设备来说,这里用主次设备编号来描述设备。 -**MAJ:MIN** +- **RM** —— 可移动设备。如果这是一个可移动设备将显示 1,否则显示 0。 - —— Linux 操作系统中的每个设备都以一个文件表示,对块(磁盘)设备来说,这里用主次设备编号来描述设备。 +- **TYPE** —— 设备的类型 -**RM** +- **MOUNTPOINT** —— 设备挂载的位置 - —— 可移动设备。如果这是一个可移动设备将显示 1,否则显示 0。 +- **RO** —— 对于只读文件系统,这里会显示 1,否则显示 0。 -**TYPE** - - —— 设备的类型 - -**MOUNTPOINT** - - —— 设备挂载的位置 - -**RO** - - —— 对于只读文件系统,这里会显示 1,否则显示 0。 - -**SIZE** - - —— 设备的容量 +- **SIZE** —— 设备的容量 ![](http://blog.linoxide.com/wp-content/uploads/2014/10/lsblk.jpg) @@ -54,12 +42,14 @@ ### 在脚本中使用 ### -高级技巧:如果你想要在脚本中使用而不希望表头被显示出来,你可以这样使用 -n 选项: +高级技巧:如果你想要在脚本中使用而希望剔除表头,你可以这样使用 -n 选项: lsblk -ln ![](http://blog.linoxide.com/wp-content/uploads/2014/10/lsblk-ln.jpg) +## blkid ## + **blkid** 命令是一个命令行工具,它可以显示关于可用块设备的信息。它可以识别一个块设备内容的类型(如文件系统、交换区)以及从内容的元数据(如卷标或 UUID 字段)中获取属性(如 tokens 和键值对)。它主要有两类作用:用指定的键值对搜索一个设备,或是显示一个或多个设备的键值对。 ### blkid 使用方法 ### @@ -84,7 +74,7 @@ ### 详细信息 ### -如果你想要获取更多详细信息,你可以使用 -p 和 -o udev 选项来将它们用漂亮的格式显示出来,像这样: +如果你想要获取更多详细信息,你可以使用 -p 和 -o udev 选项来将它们用整齐的格式显示出来,像这样: # blkid -po udev /dev/sda1 @@ -102,7 +92,7 @@ via: http://linoxide.com/linux-command/linux-command-lsblk-blkid/ 作者:[Adrian Dinu][a] 译者:[felixonmars](https://github.com/felixonmars) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From fa6a21a32f211a2533ea17b3bb3aeee287bc40c5 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 22 Jan 2015 21:47:59 +0800 Subject: [PATCH 036/725] PUB:How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS @SPccman --- ...ind Chroot DNS Server on CentOS 7.0 VPS.md | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) rename {translated/tech => published}/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md (61%) diff --git a/translated/tech/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md b/published/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md similarity index 61% rename from translated/tech/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md rename to published/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md index 0df194fe17..c151adf6b1 100644 --- a/translated/tech/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md +++ b/published/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md @@ -1,47 +1,49 @@ -在CentOS7.0 VPS上搭建 Bind Chroot DNS 服务器 +在 CentOS7.0 上搭建 Chroot 的 Bind DNS 服务器 ==================== -BIND(Berkeley internet Name Daemon)也叫做NAMED是现今互联网上使用最为广泛的DNS 服务器程序。这篇文章将要讲述如何在 chroot jail (chroot “监牢”,所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全)中运行 BIND,这样它就无法访问文件系统中除“jail”以外的其它部分。例如,在这篇文章中,我会将BIND的运行根目录改为/var/named/chroot/。当然,对于BIND来说,这个目录就是/(根目录)。 “jail”(监牢,下同)是一个软件机制,其功能是使得某个程序无法访问规定区域之外的资源,同样也为了增强安全性。Bind Chroot DNS 服务器的默认“jail”为/var/named/chroot。你可以按照下列步骤,在CentOS 7.0 虚拟专用服务器(VPS)上部署 Bind Chroot DNS 服务器。 +BIND(Berkeley internet Name Daemon)也叫做NAMED,是现今互联网上使用最为广泛的DNS 服务器程序。这篇文章将要讲述如何在 chroot 监牢中运行 BIND,这样它就无法访问文件系统中除“监牢”以外的其它部分。 - 1. 安装Bind Chroot DNS 服务器: +例如,在这篇文章中,我会将BIND的运行根目录改为 /var/named/chroot/。当然,对于BIND来说,这个目录就是 /(根目录)。 “jail”(监牢,下同)是一个软件机制,其功能是使得某个程序无法访问规定区域之外的资源,同样也为了增强安全性(LCTT 译注:chroot “监牢”,所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件进行操作,从而保证整个服务器的安全)。Bind Chroot DNS 服务器的默认“监牢”为 /var/named/chroot。你可以按照下列步骤,在CentOS 7.0 上部署 Bind Chroot DNS 服务器。 - [root@centos7 ~]# yum install bind-chroot bind -y +### 1、安装Bind Chroot DNS 服务器 - 2. 拷贝bind相关文件,准备bind chroot 环境 + [root@centos7 ~]# yum install bind-chroot bind -y - [root@centos7 ~]# cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/ +### 2、拷贝bind相关文件,准备bind chroot 环境 - 3. 在bind chroot 的目录中创建相关文件 + [root@centos7 ~]# cp -R /usr/share/doc/bind-*/sample/var/named/* /var/named/chroot/var/named/ - [root@centos7 ~]# touch /var/named/chroot/var/named/data/cache_dump.db +### 3、在bind chroot 的目录中创建相关文件 - [root@centos7 ~]# touch /var/named/chroot/var/named/data/named_stats.txt + [root@centos7 ~]# touch /var/named/chroot/var/named/data/cache_dump.db - [root@centos7 ~]# touch /var/named/chroot/var/named/data/named_mem_stats.txt + [root@centos7 ~]# touch /var/named/chroot/var/named/data/named_stats.txt - [root@centos7 ~]# touch /var/named/chroot/var/named/data/named.run + [root@centos7 ~]# touch /var/named/chroot/var/named/data/named_mem_stats.txt - [root@centos7 ~]# mkdir /var/named/chroot/var/named/dynamic + [root@centos7 ~]# touch /var/named/chroot/var/named/data/named.run - [root@centos7 ~]# touch /var/named/chroot/var/named/dynamic/managed-keys.bind + [root@centos7 ~]# mkdir /var/named/chroot/var/named/dynamic + + [root@centos7 ~]# touch /var/named/chroot/var/named/dynamic/managed-keys.bind - 4. 将 Bind 锁定文件设置为可写: +### 4、 将 Bind 锁定文件设置为可写 - [root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/data - [root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/dynamic + [root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/data + [root@centos7 ~]# chmod -R 777 /var/named/chroot/var/named/dynamic - 5. 将 /etc/named.conf 拷贝到 bind chroot目录 +### 5、 将 /etc/named.conf 拷贝到 bind chroot目录 - [root@centos7 ~]# cp -p /etc/named.conf /var/named/chroot/etc/named.conf + [root@centos7 ~]# cp -p /etc/named.conf /var/named/chroot/etc/named.conf - 6. 在/etc/named.conf中对 bind 进行配置。在文件尾添加 example.local 域信息: +### 6、 在/etc/named.conf中对 bind 进行配置。 - [root@centos7 ~]# vi /var/named/chroot/etc/named.conf - -在 named.conf 中创建转发域(Forward Zone)与反向域(Reverse Zone): +在 named.conf 文件尾添加 **example.local** 域信息, 创建转发域(Forward Zone)与反向域(Reverse Zone)(LCTT 译注:这里example.local 并非一个真实有效的互联网域名,而是通常用于本地测试的一个域名;如果你需要做权威 DNS 解析,你可以将你拥有的域名如这里所示配置解析。): + [root@centos7 ~]# vi /var/named/chroot/etc/named.conf +-- .. .. zone "example.local" { @@ -56,7 +58,7 @@ BIND(Berkeley internet Name Daemon)也叫做NAMED是现今互联网上使用 .. .. -named.conf 完全配置 +named.conf 完全配置如下: // // named.conf @@ -123,9 +125,9 @@ named.conf 完全配置 include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; - 7. 为 example.local 域名创建转发域与反向域文件 +### 7、 为 example.local 域名创建转发域与反向域文件 -a)创建转发域 +#### a)创建转发域 [root@centos7 ~]# vi /var/named/chroot/var/named/example.local.zone @@ -154,11 +156,11 @@ a)创建转发域 ns1 IN A 192.168.0.70 ns2 IN A 192.168.0.80 -b)创建反向域 +#### b)创建反向域 [root@centos7 ~]# vi /var/named/chroot/var/named/192.168.0.zone ----- +-- ; ; Addresses and other host information. @@ -175,7 +177,9 @@ b)创建反向域 70.0.168.192.in-addr.arpa. IN PTR mx.example.local. 70.0.168.192.in-addr.arpa. IN PTR ns1.example.local. - 80.0.168.192.in-addr.arpa. IN PTR ns2.example.local.。开机自启动 bind-chroot 服务: + 80.0.168.192.in-addr.arpa. IN PTR ns2.example.local.。 + +### 8、开机自启动 bind-chroot 服务: [root@centos7 ~]# /usr/libexec/setup-named-chroot.sh /var/named/chroot on [root@centos7 ~]# systemctl stop named @@ -184,15 +188,13 @@ b)创建反向域 [root@centos7 ~]# systemctl enable named-chroot ln -s '/usr/lib/systemd/system/named-chroot.service' '/etc/systemd/system/multi-user.target.wants/named-chroot.service' -[跳转到档案页,阅读更多文章][1] - ------------------ via: http://www.ehowstuff.com/how-to-setup-bind-chroot-dns-server-on-centos-7-0-vps/ 作者:[skytech][a] -译者:[SPccman](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[SPccman](https://github.com/SPccman) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From cbf2f006fb4063cce55ca4e0bdc3e59fb0aa0d27 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Thu, 22 Jan 2015 23:07:38 +0800 Subject: [PATCH 037/725] =?UTF-8?q?=E9=80=89=E9=A2=98=20How=20are=20C=20da?= =?UTF-8?q?ta=20types=20=E2=80=9Csupported=20directly=20by=20most=20comput?= =?UTF-8?q?ers=E2=80=9D=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... “supported directly by most computers”.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sources/talk/20150122 How are C data types “supported directly by most computers”.md diff --git a/sources/talk/20150122 How are C data types “supported directly by most computers”.md b/sources/talk/20150122 How are C data types “supported directly by most computers”.md new file mode 100644 index 0000000000..0b57189252 --- /dev/null +++ b/sources/talk/20150122 How are C data types “supported directly by most computers”.md @@ -0,0 +1,53 @@ +How are C data types “supported directly by most computers”? +--------- + +#Q: + +I am reading K&R's *The C Programming Language*” and came across this statement [Introduction, p. 3]: + +>Because the data types and control structures provided by C are supported directly by most computers, the run-time library required to implement self-contained programs is tiny. + +What does the bolded statement mean? Is there an example of a data type or a control structure that isn't supported directly by a computer? + +#A: + +Yes, there are data types not directly supported. + +On many embedded systems, there is no hardware floating point unit. So, when you write code like this: + +```C +float x = 1.0f, y = 2.0f; +return x + y; +``` + +It gets translated into something like this: + +```C +unsigned x = 0x3f800000, y = 0x40000000; +return _float_add(x, y); +``` + +Then the compiler or standard library has to supply an implementation of `_float_add()`, which takes up memory on your embedded system. If you're counting bytes on a really tiny system, this can add up. + +Another common example is 64-bit integers (`long long` in the C standard since 1999), which are not directly supported by 32-bit systems. Old SPARC systems didn't support integer multiplication, so multiplication had to be supplied by the runtime. There are other examples. + +##Other languages + +By comparison, other languages have more complicated primitives. + +For example, a Lisp symbol requires a lot of runtime support, just like tables in Lua, strings in Python, arrays in Fortran, et cetera. The equivalent types in C are usually either not part of the standard library at all (no standard symbols or tables) or they are much simpler and don't require much runtime support (arrays in C are basically just pointers, nul-terminated strings are almost as simple). + +##Control structures + +A notable control structure missing from C is exception handling. Nonlocal exit is limited to `setjmp()` and `longjmp()`, which just save and restore certain parts of processor state. By comparison, the C++ runtime has to walk the stack and call destructors and exception handlers. + +---- +via:[stackoverflow](http://stackoverflow.com/questions/27977522/how-are-c-data-types-supported-directly-by-most-computers/27977605#27977605) + +作者:[Dietrich Epp][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/82294/dietrich-epp \ No newline at end of file From 81fb54a565cfe5452c7e03f8667d3a5ea77340db Mon Sep 17 00:00:00 2001 From: Vic___ Date: Fri, 23 Jan 2015 00:00:02 +0800 Subject: [PATCH 038/725] translated --- ...gration From 2.2 to 2.4 on Ubuntu 14.04.md | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/sources/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/sources/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md index c456aa6601..f4edd9e627 100644 --- a/sources/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md +++ b/sources/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md @@ -1,55 +1,53 @@ - Vic020 - -Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04 +Ubuntu 14.04 Apache2.2迁移2.4问题解决 ================================================================================ -If you do a distribution upgrade from **Ubuntu** 12.04 to 14.04, the upgrade will bring among other things an important update to **Apache**, from [version 2.2][1] to version 2.4. The update brings many improvements but it may cause some errors when used with the old configuration file from 2.2. +如果你进行了一次**Ubuntu**从12.04到14.04的升级,那么这次升级还包括了一个重大的升级--**Apache**从2.2版本到2.4版本。**Apache**的这次升级带来了许多性能提升,但是如果继续使用2.2的配置会导致很多错误。 -### Access control in Apache 2.4 Virtual Hosts ### +### 访问控制的改变 ### -Starting with **Apache 2.4** authorization is applied in a way that is much more flexible then just a single check against a single data store like it was in 2.2. In the past it was tricky to figure how and in what order authorization is applied but with the introduction of authorization container directives such as and , the configuration also has control over when the authorization methods are called and what criteria determines when access is granted. +从**Apache 2.4**起,授权(authorization)开始启用,比起2.2的一个检查一个数据存储,授权更加灵活。过去很难确定那些命令授权应用了,但是授权(authorization)的引入解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 -This is the point where most upgrades fail because of wrong configuration because in 2.2 access control based on IP address, hostname or other characteristic was done using the directives Order, Allow, Deny or Satisfy, but in 2.4 this is done with authorization checks using the new modules. +这就是为什么大多数的升级失败是由于错误配置,2.2的访问控制基于IP地址,主机名和其他字符通过使用指令Order,来设置Allow, Deny或 Satisfy,但是2.4,这些一切被新模板授权(authorization)来替代检查。 -To be clear let's see some virtual host examples, this can be found in your /etc/apache2/sites-enabled/default or /etc/apache2/sites-enabled/YOUR_WEBSITE_NAME: +为了弄清楚这些,可以来看一些虚拟主机的例子,这些可以在/etc/apache2/sites-enabled/default 或者 /etc/apache2/sites-enabled/网页名称 中找到: -Old 2.2 virtual host configuration: +老2.2虚拟主机配置: Order allow,deny Allow from all -New 2.4 virtual host configuration: +新2.4虚拟主机配置: Require all granted ![apache 2.4 config](http://blog.linoxide.com/wp-content/uploads/2014/12/apache-2.4-config.jpg) -### .htaccess problems ### +### .htaccess 问题 ### -If after the upgrade some settings don't work or you get redirect errors, check if those settings are in a .htaccess file. If settings in the .htaccess file are not used by Apache it's because in 2.4 AllowOverride directive is set to None by default, thus ignoring the .htaccess files. All you have to do is to either change or add the AllowOverride All directive to your site configuration file. +升级后如果一些设置不执行或者得到重定向错误,检查是否这些设置是在.htaccess文件中。如果是,2.4已经不再使用.htaccess文件,在2.4中默认使用AllowOverride指令来设置,因此忽略了.htaccess文件。你需要做的就是改变和增加AllowOverride All命令到你的页面配置文件中。 -You also see the AllowOverride All directive set in the screenshot above. +上面截图中,可以看见AllowOverride All指令。 -### Missing config file or module ### +### 丢失配置文件或者模块 ### -From my experience another problem during upgrades is that your configuration file includes an old module or configuration file that is no longer needed or supported in 2.4, you will get a clear warning that Apache can't include the respective file and all you have to do is go to your configuration file and remove the line that causes problem. Afterwards you can search or install a similar module. +根据我的经验,这次升级带了其他问题就是老模块和配置文件不再需要或者不被支持了。所以你必须十分清楚Apache不再支持的各种文件,并且在老配置中移除这些老模块来解决问题。之后你可以搜索和安装相似的模块来替代。 -### Other small changes you shound know about ### +### 其他需要的知道的小改变 ### -There are a few other changes that you should consider, although they generally result in an warning and not an error: +这里还有一些其他改变的需要考虑,虽然这些通常只会发生警告,而不是错误。 -- MaxClients has been renamed to MaxRequestWorkers, which describes more accurately what it does. For async MPMs, like event, the maximum number of clients is not equivalent than the number of worker threads. The old name is still supported. -- The DefaultType directive no longer has any effect, other than to emit a warning if it's used with any value other than none. You need to use other configuration settings to replace it in 2.4. -- EnableSendfile now defaults to Off. -- FileETag now defaults to "MTime Size" (without INode). -- KeepAlive only accepts values of On or Off. Previously, any value other than "Off" or "0" was treated as "On". -- Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex, and WatchdogMutexPath have been replaced with a single Mutex directive. You will need to evaluate any use of these removed directives in your 2.2 configuration to determine if they can just be deleted or will need to be replaced using Mutex. +- MaxClients重命名为MaxRequestWorkers,使之有更准确的描述。而异步MPM,如event,客服端最大连接数不量比与工作线程数。老名字依然支持。 +- DefaultType命令无效,使用它已经没有任何效果了。需要使用其他配置设定来替代它 +- EnableSendfile默认关闭 +- FileETag 默认"MTime Size"(没有INode) +- KeepAlive 只接受On或Off值。之前的任何值不是Off或者0都认为是On +- Mutex 替代 Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex, 和 WatchdogMutexPath 。需要删除或者替代所有2.2老配置的设置。 -------------------------------------------------------------------------------- via: http://linoxide.com/linux-how-to/apache-migration-2-2-to-2-4-ubuntu-14-04/ 作者:[Adrian Dinu][a] -译者:[译者ID](https://github.com/译者ID) +译者:[Vic020/VicYu](http://vicyu.net) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c77b9e2e2cebef2f195f95d8e2c8137b258ea123 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Fri, 23 Jan 2015 00:01:05 +0800 Subject: [PATCH 039/725] Moved --- ...5 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md (100%) diff --git a/sources/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md similarity index 100% rename from sources/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md rename to translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md From 955219b1a8180109f20917d4bcb122afe8383be1 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Fri, 23 Jan 2015 09:55:35 +0800 Subject: [PATCH 040/725] translating --- ...2 Linux FAQs with Answers--How to add a cron job on Linux.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md b/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md index a119537e74..ad861b42c7 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md +++ b/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md @@ -1,3 +1,5 @@ +Translating----geekpi + Linux FAQs with Answers--How to add a cron job on Linux ================================================================================ > **Question**: I would like to schedule a task on my Linux box, so that the task runs periodically at fixed times. How can I add a cron job for this task on my Linux system? From 50ee769861dc59c053936d466ad6d6e8e0c28713 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Fri, 23 Jan 2015 10:34:07 +0800 Subject: [PATCH 041/725] translated --- ...Answers--How to add a cron job on Linux.md | 68 ------------------- ...Answers--How to add a cron job on Linux.md | 66 ++++++++++++++++++ 2 files changed, 66 insertions(+), 68 deletions(-) delete mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md create mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md b/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md deleted file mode 100644 index ad861b42c7..0000000000 --- a/sources/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md +++ /dev/null @@ -1,68 +0,0 @@ -Translating----geekpi - -Linux FAQs with Answers--How to add a cron job on Linux -================================================================================ -> **Question**: I would like to schedule a task on my Linux box, so that the task runs periodically at fixed times. How can I add a cron job for this task on my Linux system? - -The cron utility is the default task scheduler used in Linux. Using cron, you can schedule a task (e.g., a command or a shell-script) to run it periodically or one-time at a specific time of hour, day, week, month, etc. The cron tool is useful when you schedule a variety of regular maintenance jobs, such as periodic backup, rotating logs, checking filesystem, monitoring disk space, and so on. - -### Add a Cron Job from the Command Line ### - -To add a cron job, you can use a command-line tool called crontab. - -Type the following command to create a new cron job to run as the current user. - - $ crontab -e - -If you want a cron job to run as any other user, type the following command instead. - - $ sudo crontab -u -e - -You will be presented with a text editor window, where you can add or edit cron jobs. By default, nano editor will be used. - -![](https://farm9.staticflickr.com/8586/16200331362_1385807ac0_b.jpg) - -Each cron job is formatted as follows. - - - -The first five elements specify the schedule for a task, and the last element is the (full-path) command or script to execute according to the schedule. - -![](https://farm8.staticflickr.com/7472/16199272841_dffe0b2873_b.jpg) - -Here are a few useful cron job examples. - -- *** * * * * /home/dan/bin/script.sh**: run every minute. -- **0 * * * * /home/dan/bin/script.sh**: run every hour. -- **0 0 * * * /home/dan/bin/script.sh**: run at 12am daily. -- **0 9,18 * * * /home/dan/bin/script.sh**: run at 9AM and 6PM twice a day. -- **0 9-18 * * * /home/dan/bin/script.sh**: run every hour from 9AM and 6PM. -- **0 9-18 * * 1-5 /home/dan/bin/script.sh**: run every hour from 9AM and 6PM every weekday. -- ***/10 * * * * /home/dan/bin/script.sh**: run every 10 minutes. - -Once you are done with setting up cron job(s), press Ctrl+X to save and quit the editor. At this point, newly added cron jobs should be activated. - -To browse existing cron jobs of yours, use the following command: - - $ crontab -l - -### Add a Cron Job from GUI ### - -If you are in Linux desktop environment, you can use a GUI fronend for crontab to add or edit a cron job via a more user-friendly interface. - -On GNOME desktop, there is GNOME Schedule (gnome-schedule package). - -![](https://farm8.staticflickr.com/7484/16015054699_d96f0e9b6a_c.jpg) - -On KDE desktop, there is Task Scheduler (kcron package). - -![](https://farm8.staticflickr.com/7473/16175298266_825376c901_c.jpg) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/add-cron-job-linux.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md b/translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md new file mode 100644 index 0000000000..6f0a5effe3 --- /dev/null +++ b/translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md @@ -0,0 +1,66 @@ +Linux 有问必答: 如何在Linux中加入cron任务 +================================================================================ +> **提问**: 我想在我的Linux中安排一个计划任务,该任务在固定时间周期性地运行。我该如何在Linux中添加一个cron任务? + +cron是Linux中默认的计划任务。使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的,比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。 + +### 从命令行中添加cron任务 ### + +要添加cron任务,你可以使用称为crontab的命令行工具。 + +输入下面的命令会创建一个以当前用户运行的新cron任务。 + + $ crontab -e + +如果你想要以其他用户运行cron任务,输入下面的命令。 + + $ sudo crontab -u -e + +你将会看见一个文本编辑窗口,这里你可以添加或者编辑cron任务。默认使用nono编辑器。 + +![](https://farm9.staticflickr.com/8586/16200331362_1385807ac0_b.jpg) + +每个cron任务的格式如下。 + + + +前5个元素定义了任务的计划,最后一个元素是命令或者脚本的完整路径。 + +![](https://farm8.staticflickr.com/7472/16199272841_dffe0b2873_b.jpg) + +下面是一些cron任务示例。 + +- *** * * * * /home/dan/bin/script.sh**: 每分钟运行。 +- **0 * * * * /home/dan/bin/script.sh**: 每小时运行。 +- **0 0 * * * /home/dan/bin/script.sh**: 每12小时运行。 +- **0 9,18 * * * /home/dan/bin/script.sh**: 在每天的9AM和6PM运行。 +- **0 9-18 * * * /home/dan/bin/script.sh**: 在9AM到6PM的每个小时运行。 +- **0 9-18 * * 1-5 /home/dan/bin/script.sh**: 周一到周五的9AM到6PM每小时运行。 +- ***/10 * * * * /home/dan/bin/script.sh**: 每10分钟运行。 + +一旦完成上面的设置步骤后,按下Ctrl+X来保存并退出编辑器。此时,新增的计划任务应该已经激活了。 + +要查看存在的计划任务,使用下面的命令: + + $ crontab -l + +### 从GUI添加计划任务 ### + +如果你在Linux桌面环境中,你可以使用crontab的更加友好的GUI前端来添加或者添加一个cron任务。 + +在Gnome桌面中,有一个Gnome Schedule(gnome-schedule包)。 + +![](https://farm8.staticflickr.com/7484/16015054699_d96f0e9b6a_c.jpg) + +在KDE桌面中,有一个Task Scheduler(kcron包)。 + +![](https://farm8.staticflickr.com/7473/16175298266_825376c901_c.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/add-cron-job-linux.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From 4a3d1c216ff31c3a9c3321b8c6c7e8aa16408192 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Fri, 23 Jan 2015 16:42:05 +0800 Subject: [PATCH 042/725] =?UTF-8?q?20150123-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...SO Images Directly From Your Hard Drive.md | 78 +++++++++++++++++++ ...3 How to make a file immutable on Linux.md | 72 +++++++++++++++++ ... With Recent Notifications AppIndicator.md | 40 ++++++++++ 3 files changed, 190 insertions(+) create mode 100644 sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md create mode 100644 sources/tech/20150123 How to make a file immutable on Linux.md create mode 100644 sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md diff --git a/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md b/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md new file mode 100644 index 0000000000..0a1670da58 --- /dev/null +++ b/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md @@ -0,0 +1,78 @@ +How to Boot Linux ISO Images Directly From Your Hard Drive +================================================================================ +Hi all, today we'll teach you an awesome interesting stuff related with the Operating System Disk Image and Booting. Now, try many OS you like without installing them in your Physical Hard Drive and without burning DVDs or USBs. + +We can boot Linux ISO files directly from your hard drive with Linux’s GRUB2 boot loader. We can boot any Linux Distribution's using this method without creating bootable USBs, Burn DVDs, etc but the changes made will be temporary. + +![boot iso files directly from hard drive in grub2](http://blog.linoxide.com/wp-content/uploads/2015/01/boot-iso-files-directly-from-hard-drive-in-grub2.png) + +### 1. Get the ISO of the Linux Distributions: ### + +Here, we're gonna create Menu of Ubuntu 14.04 LTS "Trusty" and Linux Mint 17.1 LTS "Rebecca" so, we downloaded them from their official site: + +Ubuntu from : [http://ubuntu.com/][1] And Linux Mint from: [http://linuxmint.com/][2] + +You can download ISO files of required linux distributions from their respective websites. If you have mirror of the iso files hosted near your area or country, it is recommended if you have no sufficient internet download speed. + +### 2. Determine the Hard Drive Partition’s Path ### + +GRUB uses a different “device name” scheme than Linux does. On a Linux system, /dev/sda0 is the first partition on the first hard disk — **a** means the first hard disk and **0** means its first partition. In GRUB, (hd0,1) is equivalent to /dev/sda0. The **0** means the first hard disk, while **1** means the first partition on it. In other words, in a GRUB device name, the disk numbers start counting at 0 and the partition numbers start counting at 1. For example, (hd3,6) refers to the sixth partition on the fourth hard disk. + +You can use the **fdisk -l** command to view this information. On Ubuntu, open a Terminal and run the following command: + + $ sudo fdisk -l + +![fdisk-l view the list of the hard disk and its partitions](http://blog.linoxide.com/wp-content/uploads/2015/01/fdisk-l.png) + +You’ll see a list of Linux device paths, which you can convert to GRUB device names on your own. For example, below we can see the system partition is /dev/sda1 — so that’s (hd0,1) for GRUB. + +### 3. Adding boot menu to Grub2 ### + +The easiest way to add a custom boot entry is to edit the /etc/grub.d/40_custom script. This file is designed for user-added custom boot entries. After editing the file, the contents of your /etc/defaults/grub file and the /etc/grub.d/ scripts will be combined to create a /boot/grub/grub.cfg file. You shouldn't edit this file by hand. It’s designed to be automatically generated from settings you specify in other files. + +So we’ll need to open the /etc/grub.d/40_custom file for editing with root privileges. On Ubuntu, you can do this by opening a Terminal window and running the following command: + + $ sudo nano /etc/grub.d/40_custom + +Unless we’ve added other custom boot entries, we should see a mostly empty file. We'll need to add one or more ISO-booting sections to the file below the commented lines. + + ===== + menuentry “Ubuntu 14.04 ISO” { + set isofile=”/home/linoxide/Downloads/ubuntu-14.04.1-desktop-amd64.iso” + loopback loop (hd0,1)$isofile + linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash + initrd (loop)/casper/initrd.lz + } + menuentry "Linux Mint 17.1 Cinnamon ISO" { + set isofile=”/home/linoxide/Downloads/mint-17.1-desktop-amd64.iso” + loopback loop (hd0,1)$isofile + linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash + initrd (loop)/casper/initrd.lz + } + +![Grub2 Menu configuration for adding the ISOs](http://blog.linoxide.com/wp-content/uploads/2015/01/grub-added-iso.png) + +**Important Note**: Different Linux distributions require different boot entries with different boot options. The GRUB Live ISO Multiboot project offers a variety of [menu entries for different Linux distributions][3]. You should be able to adapt these example menu entries for the ISO file you want to boot. You can also just perform a web search for the name and release number of the Linux distribution you want to boot along with “boot from ISO in GRUB” to find more information. + +### 4. Updating Grub2 ### + +To make the custom menu entries active, we'll run "sudo update-grub" + + sudo update-grub + +Hurray, we have successfully added our brand new linux distribution's ISO to our GRUB Menu. Now, we'll be able to boot them and enjoy trying them. You can add many distributions and try them all. Note that the changes made in those OS will don't be kept preserved, which means you'll loose changes made in that distros after the restart. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/boot-linux-iso-images-directly-hard-drive/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://ubuntu.com/ +[2]:http://linuxmint.com/ +[3]:http://git.marmotte.net/git/glim/tree/grub2 \ No newline at end of file diff --git a/sources/tech/20150123 How to make a file immutable on Linux.md b/sources/tech/20150123 How to make a file immutable on Linux.md new file mode 100644 index 0000000000..3eb0394bd1 --- /dev/null +++ b/sources/tech/20150123 How to make a file immutable on Linux.md @@ -0,0 +1,72 @@ +How to make a file immutable on Linux +================================================================================ +Suppose you want to write-protect some important files on Linux, so that they cannot be deleted or tampered with by accident or otherwise. In other cases, you may want to prevent certain configuration files from being overwritten automatically by software. While changing their ownership or permission bits on the files by using chown or chmod is one way to deal with this situation, this is not a perfect solution as it cannot prevent any action done with root privilege. That is when chattr comes in handy. + +chattr is a Linux command which allows one to set or unset attributes on a file, which are separate from the standard (read, write, execute) file permission. A related command is lsattr which shows which attributes are set on a file. While file attributes managed by chattr and lsattr are originally supported by EXT file systems (EXT2/3/4) only, this feature is now available on many other native Linux file systems such as XFS, Btrfs, ReiserFS, etc. + +In this tutorial, I am going to demonstrate how to use chattr to make files immutable on Linux. + +chattr and lsattr commands are a part of e2fsprogs package which comes pre-installed on all modern Linux distributions. + +Basic syntax of chattr is as follows. + + $ chattr [-RVf] [operator][attribute(s)] files... + +The operator can be '+' (which adds selected attributes to attribute list), '-' (which removes selected attributes from attribute list), or '=' (which forces selected attributes only). + +Some of available attributes are the following. + +- **a**: can be opened in append mode only. +- **A**: do not update atime (file access time). +- **c**: automatically compressed when written to disk. +- **C**: turn off copy-on-write. +- **i**: set immutable. +- **s**: securely deleted with automatic zeroing. + +### Immutable Attribute ### + +To make a file immutable, you can add "immutable" attribute to the file as follows. For example, to write-protect /etc/passwd file: + + $ sudo chattr +i /etc/passwd + +Note that you must use root privilege to set or unset "immutable" attribute on a file. Now verify that "immutable" attribute is added to the file successfully. + + $ lsattr /etc/passwd + +Once the file is set immutable, this file is impervious to change for any user. Even the root cannot modify, remove, overwrite, move or rename the file. You will need to unset the immutable attribute before you can tamper with the file again. + +To unset the immutable attribute, use the following command: + + $ sudo chattr -i /etc/passwd + +![](https://farm9.staticflickr.com/8613/16152651317_076a65cf50_b.jpg) + +If you want to make a whole directory (e.g., /etc) including all its content immutable at once recursively, use "-R" option: + + $ sudo chattr -R +i /etc + +### Append Only Attribute ### + +Another useful attribute is "append-only" attribute which forces a file to grow only. You cannot overwrite or delete a file with "append-only" attribute set. This attribute can be useful when you want to prevent a log file from being cleared by accident. + +Similar to immutable attribute, you can turn a file into "append-only" mode by: + + $ sudo chattr +a /var/log/syslog + +Note that when you copy an immutable or append-only file to another file, those attributes will not be preserved on the newly created file. + +### Conclusion ### + +In this tutorial, I showed how to use chattr and lsattr commands to manage additional file attributes to prevent (accidental or otherwise) file tampering. Beware that you cannot rely on chattr as a security measure as one can easily undo immutability. One possible way to address this limitation is to restrict the availability of chattr command itself, or drop kernel capability CAP_LINUX_IMMUTABLE. For more details on chattr and available attributes, refer to its man page. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/make-file-immutable-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni \ No newline at end of file diff --git a/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md b/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md new file mode 100644 index 0000000000..28bdb2443d --- /dev/null +++ b/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md @@ -0,0 +1,40 @@ +Keep History Of Notifications With Recent Notifications AppIndicator +================================================================================ +![How to see recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_14.jpeg) + +Most of the desktop environments like Unity and Gnome have notification featured. Something which I like a lot. It specially helps me when I am listening to [streaming radio on Ubuntu][1]. But by default the notification is displayed on the top of the desktop for a couple of seconds and then it fades in disappearance. Now, what if you hear the notification sound but did not see it in time? How do you know what notification was it? + +If somehow you could have a history of all recent notifications, would it not be great? Yes, I know it would be great. You can easily keep track of all recent notifications in Ubuntu Unity or GNOME using Recent **Notifications applet indicator**. + +Recent Notifications sits in the top panel and keeps the history of all recent notifications. When there are new notifications captured by it, the indicator turns green to notify you of unread notifications. + +![Recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu.jpeg) + +When you click on it, you will see all the recent notifications. You can either choose to clear all of the notifications or remove some of those. + +![Recent notifications applet indicator](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_1.jpeg) + +Unfortunately there are no configuration options here. Therefore you cannot block notifications from specific applications. All kind of notifications will be saved here. + +### Install Recent Notifications in Ubuntu 14.04 and 14.10 ### + +Normally this Recent Notification applet indicator should also work in Linux Mint Cinnamon edition. You can give it a try. Use the following commands to install Recent Notifications applet indicator in Ubuntu 14.04 and 14.10: + + sudo add-apt-repository ppa:jconti/recent-notifications + sudo apt-get update + sudo apt-get install indicator-notifications + +After installation, log out, log back in and you are good to go. Now none of the recent notifications will go unnoticed. Hand applet indicator, isn’t it? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/notifications-appindicator/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://itsfoss.com/apps-internet-streaming-radio-ubuntu/ \ No newline at end of file From 8b4a97ada2a95ffae796ab25ee3a6b0cba010c58 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 23 Jan 2015 17:59:27 +0800 Subject: [PATCH 043/725] Translating by ZTinoZ --- ...nux Commands Interview Questions & Answers.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 256a6cd5df..17a1179b8e 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -62,23 +62,23 @@ 答: cat /proc/net/bonding/bond0 -**问:10 What is the use of /proc file system in linux ?** +**问:10 Linux系统中的/proc文件系统有什么用?** -答: The /proc file system is a RAM based file system which maintains information about the current state of the running kernel including details on CPU, memory, partitioning, interrupts, I/O addresses, DMA channels, and running processes. This file system is represented by various files which do not actually store the information, they point to the information in the memory. The /proc file system is maintained automatically by the system. +答: /proc文件系统是一个基于维护关于当前正在运行的内核状态信息的文件系统的随机存取存储器(RAM),其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。这个文件系统所代表的是各种不实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的。 -**问:11 How to find files larger than 10MB in size in /usr directory ?** +**问:11 如何在/usr目录下找出大小超过10MB的文件?** 答: # find /usr -size +10M -**问:12 How to find files in the /home directory that were modified more than 120 days ago ?** +**问:12 如何在/home目录下找出120天之前被修改过的文件?** -答: # find /home -mtime +l20 +答: # find /home -mtime +120 -**问:13 How to find files in the /var directory that have not been accessed in the last 90 days ?** +**问:13 如何在/var目录下找出90天之内未被访问过的文件?** -答: # find /var -atime -90 +答: # find /var \! -atime -90 -**问:14 Search for core files in the entire directory tree and delete them as found without prompting for confirmation** +**问:14 在整个目录树下查找核心文件并Search for core files in the entire directory tree and delete them as found without prompting for confirmation** 答: # find / -name core -exec rm {} \; From bf37e3ff9f772207e81c6fc068cdf208c895f087 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Fri, 23 Jan 2015 18:32:47 +0800 Subject: [PATCH 044/725] Delete 20140819 Top 4 Linux download managers.md --- .../20140819 Top 4 Linux download managers.md | 150 ------------------ 1 file changed, 150 deletions(-) delete mode 100644 sources/share/20140819 Top 4 Linux download managers.md diff --git a/sources/share/20140819 Top 4 Linux download managers.md b/sources/share/20140819 Top 4 Linux download managers.md deleted file mode 100644 index 0282a2e91c..0000000000 --- a/sources/share/20140819 Top 4 Linux download managers.md +++ /dev/null @@ -1,150 +0,0 @@ -Translating By H-mudcup - -Top 4 Linux download managers -================================================================================ -**Improve and better manage your web downloads for mirroring, mass grabs or just better control over your files** - -Download managers seem to be old news these days, but there are still some excellent uses for them. We compare the top four of them on Linux. - -### [uGet][1] ### - -Advertised as lightweight and full- featured like a majority of other Linux apps, uGet can handle multi- threaded streams, includes filters and can integrate with an undefined selection of web browsers. It’s been around for over ten years now, starting out as UrlGet, and can also run on Windows. - -![uGet is actually very full-featured, with a lot of the kind of functions that advanced torrent clients use](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/uget1.png) -uGet is actually very full-featured, with a lot of the kind of functions that advanced torrent clients use - -#### Interface #### - -uGet reminds us of any number of torrent client interfaces, with categories for Active, Finished, Paused and so on for the different downloads. Although there is a lot of information to take in, it’s all presented very cleanly and clearly. The main downloading controls are easy to access, with more advanced ones alongside them. - -#### Integration #### - -While it can see into the clipboard for URLs, uGet doesn’t natively integrate into browsers like Chromium and Firefox. Still, there are add-ons for both these browsers that allow them to connect to uGet: Firefox via FlashGot and Chromium with a dedicated plug-in. Not ideal, but good enough. - -#### Features #### - -uGet’s maturity affords it a range of features, including advanced scheduling to switch downloading on and off, batch download via the clipboard and the ability to change which file types it looks for in the clipboard. There are plug-in options, but not a huge amount. - -#### Availability #### - -While it’s also available in most major distro repos, the uGet website includes regularly updated binaries for a variety of popular distributions as well as easily accessible source code. It runs on GTK 3+ so it has a smaller footprint in some desktop environments than others, although we’d say it’s worth the extra dependancies in KDE or other Qt desktops. - -#### Overall #### - -8/10 - -We very much like uGet – its wide variety of features and popularity have allowed it to develop quite a lot to be an all-encompassing solution to download management, with some decent integration with Linux browsers. - -### [KGet][2] ### - -KDE’s own download manager seems to have been originally designed to work with Konqueror, the KDE web browser. It comes with the kind of features we’re looking for in this test: control of multiple downloads and the ability to run a checksum alongside the downloaded product. - -![You need to manually activate the ability to keep an eye on the clipboard for links](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/kget1.png) -You need to manually activate the ability to keep an eye on the clipboard for links - -#### Interface #### - -As expected of a KDE app, KGet fits the aesthetic style of the desktop environment with similar icons and curves throughout. It’s quite a simple design as well, with only the most necessary functions available on the main toolbars and a minimal view of the current downloads. - -#### Integration #### - -KGet natively integrates with KDE’s Konqueror browser, although it’s not the most popular. Support for it in Firefox is done via FlashGot as usual, but there’s no real way to do it in Chromium. You can turn on a feature that asks if you want to download copied URLs, however it doesn’t parse the clipboard very well and sometimes wants to download text. - -#### Features #### - -The selection of features available are not that high. No scheduling, no batch operations and generally an almost bare-minimum amount of downloading features. The clipboard-scanning feature is a nice idea but it’s a bit buggy. It’s a little weird as the Settings menu looks like it’s designed to have more settings and options. - -#### Availability #### - -While it doesn’t come by default with a KDE install, it is available for any distro that supports KDE. It does need a few KDE libraries to run though, and it’s a bit tricky to find the source code. There isn’t a selection of binaries that you can use with a few distros either. - -#### Overall #### - -6/10 - -KGet doesnt really offer users a huge amount more than the download manager in the majority of popular browsers, although at least you can use it while the browsers are otherwise turned off. - -### [DownThemAll!][3] ### - -DownThemAll, being somewhat platform-independent, comes to Linux by way of Firefox as an add- on. This limits it somewhat to use with only Firefox, however as one of the most popular browsers in the world its tighter integration may be just what some are looking for in a download manager. - -![There are actually a whole lot of options available for DownThemAll! that make it very flexible](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/down1.png) -There are actually a whole lot of options available for DownThemAll! that make it very flexible - -#### Interface #### - -Part of the integration in Firefox allows DownThemAll! to slot into the standard aesthetic of the browser, with right-clicking bringing up options alongside the normal downloading ones. The extra dialog menus are generally themed after Firefox as well, while the main download window is clean and based on its own design - -#### Integration #### - -It doesn’t integrate system-wide but its ability to camouflage itself with Firefox makes it seem like an extra part of the original browser. It can also run alongside the normal downloader if you want, and can find specific link types on a webpage with little manual filtering, and no need for copy and pasting. - -#### Features #### - -With the ability to control how many downloads can happen at once, limit bandwidth when not idle and advanced auto or manual filtering, DownThemAll! is full of excellent features that aid mass downloading. The One Click function also allows it to very quickly start downloads to a pre- determined folder faster than normal download functions. - -#### Availability #### - -Firefox is available on just about every distro and other operating system around, which makes DownThemAll! just as prolific. Unfortunately this is a double-edged sword, as Firefox may not be your browser of choice. It also adds a little weight to the browser, which isn’t the lightest to begin with. - -#### Overall #### - -7/10 - -DownThemAll! is excellent and if you use Firefox you may not need to use anything else. Not everyone uses Firefox as their preferred browser though, and it needs to be left on for the manager to start running. - -### [Steadyflow][4] ### - -Easily available in Ubuntu and some Debian-based distros, Steadyflow may be limited in terms of where you can get it but it’s got a reputation in some circles as one of the better managers available for any distro. It can read the clipboard for URLs, use GNOME’s preset proxies and has many other features. - -![The settings in Steady flow are extremely limiting and somewhat difficult to access](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/steady1.png) -The settings in Steady flow are extremely limiting and somewhat difficult to access - -#### Interface #### - -Steadyflow is quite simple in appearance with a pleasant, clean interface that doesn’t clutter the download window. The dialog for adding downloads is simple enough, with basic options for how to treat it and where the file should live. It’s nothing we can really complain about, although it does remind us of the lack of features in the app. - -#### Integration #### - -Reading copied URLs is as standard and there’s a plug-in for Chromium to integrate with that. Again, you can use FlashGot to link it up to Firefox if that’s your preferred browser. You can’t really edit what it parses from the clipboard though and there’s no batch ability like in uGet and DownThemAll! - -#### Features #### - -Extremely lacking in features and the Options menu is very limited as well. The Pause and Resume function also doesn’t seem to work – a basic part of any browser’s file download features. Still, notifications and default action on finished files can be edited, along with an option to run a script once downloads are finished. - -#### Availability #### - -Only available on Ubuntu and there’s no easy way to get the source code for the app either. This means while it’s easily obtainable on all Ubuntu- based distros, it’s limited to these types of distros. As it’s not even the best download manager available on Linux, that shouldn’t be too big of a concern. - -#### Overall #### - -5/10 - -Frankly, not that good. With very basic options and limited to only working on Ubuntu, Steadyflow doesn’t do enough to differentiate itself from the standard downloading options you’ll get on your web browser. - -### And the winner is… ### - -#### uGet #### - -In this test we’ve proven that there is a place for download managers on modern computers, even if the better ones have cribbed from the torrent clients that seem to have usurped them. While torrenting may be a more effective way for some, with ISPs getting wiser to torrent traffic some people may get better results with a good download manager. Not only are transfer caps imposed by most major ISPs, some are even beginning to slow- down or even block torrent traffic in peak hours – even legal traffic such as distro ISOs and other free software are throttled. - -Steadyflow seems to be a very popular solution for this, but our usage and tests showed an underdeveloped and weak product. The much older uGet was the star of the show, with an amazing selection of features that can aid in downloading single items or filtering through an entire webpage for relevant items to grab. The same goes for DownThemAll!, the excellent Firefox add-on that, while stuck with Firefox, has just about the same level of features, albeit with better integration. - -If you’re choosing between the two it really comes down to what your preferred browser is and whether you need to have downloads and uploads going around the clock. DownThemAll! requires Firefox running, whereas uGet runs on its own, saving a lot of resources and electricity in the process – obviously this makes uGet a much better prospect for 24-hour data transferring and it really isn’t a major hassle to set up big batch downloads, or even just get the download information from your browser. - -Give download managers another chance. You will not be disappointed with the results. - --------------------------------------------------------------------------------- - -via: http://www.linuxuser.co.uk/reviews/top-4-linux-download-managers - -作者:Rob Zwetsloot -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://bit.ly/1mx4Uwz -[2]:http://bit.ly/1lilqU9 -[3]:http://bit.ly/1lilqU9 -[4]:http://bit.ly/1lilymS From 289fc1d826a678fedff1560206892285acc0ebfb Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Fri, 23 Jan 2015 18:36:05 +0800 Subject: [PATCH 045/725] Create 20140819 Top 4 Linux download managers.md --- .../20140819 Top 4 Linux download managers.md | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 translated/share/20140819 Top 4 Linux download managers.md diff --git a/translated/share/20140819 Top 4 Linux download managers.md b/translated/share/20140819 Top 4 Linux download managers.md new file mode 100644 index 0000000000..78c5b9ec12 --- /dev/null +++ b/translated/share/20140819 Top 4 Linux download managers.md @@ -0,0 +1,150 @@ +Translated By H-mudcup + +Linux排名前四的下载管理器 +================================================================================ +**改善并更好的管理你的网页下载,不论是镜像、抓取数据包还是仅仅更好的掌控你的文件。** + +下载管理器现在似乎已经是旧闻了,但是他们仍然非常有用。我们来比较一下Linux上排名前四的下载管理器。 + +### [uGet][1] ### + +如同很多其他的Linux应用一样uGet把体积轻巧和功能全面作为宣传亮点。它能处理有着过滤器的多线程数据流,还能与任何网络浏览器进行整合。它从当初的UrlGet开始,如今已经经过了十年。它还能在Windows上运行。 + +![uGet is actually very full-featured, with a lot of the kind of functions that advanced torrent clients use](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/uget1.png) +uGet的功能其实非常全面,有很多先进的BT下载客户端所拥有的功能 + +#### 界面 #### + +uGet让我们想起了许多BT下载客户端的界面:有着活跃、结束、暂停等等对于不同下载任务的分类。尽管有很多的信息,但是他们都以非常简单明确的方式展现出来。旁边伴有高级选项的主下载控制非常易于使用。 + +#### 集成 #### + +它能查看到剪贴板里的URL,但uGet并没有在本地集成到Chromium和Firefox这些浏览器中。尽管如此,这两种浏览器还是能通过一些扩展程序连到uGet上:Firefox可以用Flashgot,Chromium则有专用的插件。虽然不是很理想,但是已经足够好了。 + +#### 功能 #### + +成熟的uGet完备了各种功能,包括按计划进行下载任务的启动和终止的高级功能,通过剪贴板批量下载,还能改变它在剪贴板里查找的文件的类型。虽然有插件选项,但不多。 + +#### 可得性 #### + +虽然在多数主要的发行版的软件库中都能得到它,但uGet网站上有着定期更新的适用于各种流行的发行版的二进制安装文件,还能轻易获得源代码。它的运行基于GTK 3+的图形库,所以它在某些桌面环境上的封装要比其他的小,然而我们得说,在KDE或其他Qt桌面上值得有这么一个额外的从属。 + +#### 总体评价 #### + +8/10 + +我们非常喜欢uGet——它种类繁多的功能和极高的人气,让它成为了能与Linux浏览器优雅结合的,万能的下载管理器。 + +### [KGet][2] ### + +KDE自家的下载管理器貌似原本是设计成与KDE的网页浏览器,Konqueror,一同工作的。它带来了我们这次测试中所期待的功能:多下载控制和对下载完成的文件计算校验和的能力。 + +![You need to manually activate the ability to keep an eye on the clipboard for links](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/kget1.png) +你需要手动激活查看剪贴板中下载链接的功能 + +#### 界面 #### + +作为一个备受期待的KDE应用软件,KGet用一贯的图标和线条,与桌面环境的审美风格完美融合。它的设计也相当简洁,在主工具栏里只显示最必要的功能,当前下载也以最小界面显示。 + +#### 集成 #### + +KGet会集成到本地的KDE的Konqueror浏览器里,虽然它并不是最流行的浏览器。Firefox对KGet的支持是一如往常的是通过FlashGot完成的,但是在Chromium里并没有任何一种方法能真正的将它集成进去。你可以打开一个询问你是否想下载已复制的URL的功能,然而KGet对于剪贴板的分析并不是很好,有的时候会把文本下载下来。 + +#### 功能 #### + +能够选择的功能并不多。没有计划任务,没有批量下载,而且通常情况下,下载功能的数量几乎是光秃秃的。剪贴板扫描功能,想法很不错就是有点问题。设置菜单看起来有点怪怪的,因为它看起来应该设计有更多的功能。 + +#### 可得性 #### + +虽然它不会随着KDE默认安装,但可以在任何支持KDE的发行版里得到它。虽然它的运行需要几个KDE库,找到它的源代码也很困难。支持如此少的发行版,二进制安装文件也没什么可选的。 + +#### 总体评价 #### + +6/10 + +KGet并没有真正的给予用户比大多数主流浏览器内置下载管理器更强大的下载管理功能,但是,你可以在浏览器关闭的情况下使用它。 + +### [DownThemAll!][3] ### + +经由Firefox的附件进入Linux的DownThemAll某种程度上可以说是跨平台。这让它只能通过Firefox使用,然而作为世界上最流行的浏览器之一,它这更加紧凑的集成也许正是某些人对下载管理器所期望的。 + +![There are actually a whole lot of options available for DownThemAll! that make it very flexible](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/down1.png) +其实在DownThemALL!上有很多选项可以设置,这让它非常的灵活 + +#### 界面 #### + +与Firefox的集成使得DownThemAll!的风格符合浏览器的审美标准,右键单击可以唤出普通下载和DownThemAll选项。额外的对话框菜单通常和Firefox使用相同的主题,然而主下载窗口则非常整洁并且是基于它本身的设计。 + +#### 集成 #### + +它并不是系统级集成,但是它伪装在Firefox中的能力让它看起来就像是原本浏览器的附加部分。如果你想,它就可以和普通下载器一同工作,在一点点手动过滤的帮助下,他还能找到网页上特定类型的链接,无需复制粘贴。 + +#### 功能 #### + +拥有着能同时控制多个下载任务的能力,限制而不荒废带宽以及先进的自动或手动过滤功能,DownThemAll!有着一大堆有助于大规模下载的优秀功能。“一键”功能还让它能非常迅速的启动到预定的文件夹中的下载。这比普通下载功能快多了。 + +#### 可得性 #### + +Firefox几乎能在所有的发行版和Linux以外的操作系统中获得。这让DownThemAll!也和它一样多产。不幸的是,这是一把双刃剑,因为Firefox可能不是你喜欢的浏览器。它还给浏览器增加了一些负担,让它的启动不再那么轻松。 + +#### 总体评价 #### + +7/10 + +DownThemAll!是很优秀的,如果你使用Firefox你也许就不再需要用任何其他的下载器了。然而并不是每个人都喜欢用Firefox浏览器,而且管理器需要在浏览器开启的情况下才能启动。 + +### [Steadyflow][4] ### + +Steadyflow很容易在Ubuntu和一些基于Debian的发行版中获得,获取到它的方式可能受到了限制,但它在某些圈子里一直被认为是你能得到的任何发行版里最好的管理器。它能查找剪贴板里的URL,使用GNOME的预设代理,还有许多其他的功能。 + +![The settings in Steady flow are extremely limiting and somewhat difficult to access](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/steady1.png) +Steady flow里的设置非常受限,而且有点难以使用。 + +#### 界面 #### + +Steadyflow的形象相当简洁,令人愉悦的、干净的界面并没有让下载窗口变得混乱。添加下载任务的对话框足够简洁,只有基本的选项来设置下载任务,设置文件位置。真没什么可抱怨的,虽然它的确让我们觉得它的功能有点少。 + +#### 集成 #### + +查看复制的URL是标准配备,还有个让Chromium集成这个功能的插件。同样的,如果你喜欢用Firefox你可以通过Flashgot把它连到Firefox上。你并不能真正的编辑它从剪贴板里分析出的链接,它也不能像uGet和DownThemAll!一样批量下载。 + +#### 功能 #### + +极度缺少功能,选项菜单也受到很大限制。暂停和恢复功能看起来也不怎么好使——这是任何浏览器文件下载功能的最基本的部分。文件下载结束的通知和默认行为是可以设置的,还可以选择在文件下载完成之后运行脚本。 + +#### 可得性 #### + +只能在Ubuntu上获取,还不容易得到这个应用的源代码。这意味着虽然在所有基于Ubuntu的发行版中都能很容易的得到它,但也仅限于这些发行版。由于它不是Linux上能得到的最好的下载管理器,所以也不用想太多。 + +#### 总体评价 #### + +5/10 + +坦白说,没那么好。只有非常基本的选项,还只能在Ubuntu上使用,Steadyflow要想从你能选择的浏览器自带的标准下载选项中脱颖而出,它做的还不够。 + +### 那么获奖者是…… ### + +#### uGet #### + +在此次测试中,我们已经证明了现代电脑中还是有下载管理器的一席之地的,即便它们中的佼佼者们从BT下载客户端中抄袭了某些功能,貌似侵犯了他们的权益。对于某些人来说BT下载可能是个更有效率的方式,随着ISP们对待BT流量越来越机智,一些人可能用一个好的下载管理器就得到更好的效果。大多数主流ISP不仅仅强加了数据转移标记,在高峰时段他们中的一些甚至开始减慢或封掉BT流量——甚至连发行版的ISO文件和其他免费软件的合法数据流都被限制了。 + +对于这类问题Steadyflow看起来是非常受欢迎的解决方式,但我们的使用和测试显示出,它是一个未完成的简陋的产品。更加古老的uGet则是这场表演的明星,有着惊人数量的可选功能,这些功能既能在下载单一文件中有所帮助,还能在整个网页里过滤出相关元素进行抓取。DownThemAll!与之类似,优秀的Firefox有加分,但它也离不开Firefox,有着几乎同级别的功能,但集成效果更好。 + +如果你要在这两个里面选一个,那就得谈谈你喜欢哪个浏览器还有你是否需要昼夜下载或上传文件。DownThemAll!需要Firefox一直运行,然而uGet可以单独运行,为处理器节省了很多资源和电力——这显然让uGet在24小时数据传输上显得更有前途,而且对于它来说,设置一大批下载任务或只是从你的浏览器中获取下载信息,都不是什么难事。 + +再给下载管理器一个机会。结果绝不会让你失望。 + +-------------------------------------------------------------------------------- + +via: http://www.linuxuser.co.uk/reviews/top-4-linux-download-managers + +作者:Rob Zwetsloot +译者:[H-mudcup](https://github.com/H-mudcup) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://bit.ly/1mx4Uwz +[2]:http://bit.ly/1lilqU9 +[3]:http://bit.ly/1lilqU9 +[4]:http://bit.ly/1lilymS From b90b0e6f2ffeeb15b474ef6852be052e0d0e9500 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 24 Jan 2015 12:05:53 +0800 Subject: [PATCH 046/725] PUB:20150106 2015--Open Source Has Won, But It Isn't Finished @runningwater --- ...n Source Has Won, But It Isn't Finished.md | 47 +++++++++++++++++++ ...n Source Has Won, But It Isn't Finished.md | 47 ------------------- 2 files changed, 47 insertions(+), 47 deletions(-) create mode 100644 published/20150106 2015--Open Source Has Won, But It Isn't Finished.md delete mode 100644 translated/talk/20150106 2015--Open Source Has Won, But It Isn't Finished.md diff --git a/published/20150106 2015--Open Source Has Won, But It Isn't Finished.md b/published/20150106 2015--Open Source Has Won, But It Isn't Finished.md new file mode 100644 index 0000000000..fd8be296cf --- /dev/null +++ b/published/20150106 2015--Open Source Has Won, But It Isn't Finished.md @@ -0,0 +1,47 @@ +2015:开源已经完胜,但这并不是结束 +================================================================================ +> 在 2014 年的完胜后,接下来会如何? + +新年伊始,习惯上都是回顾已经走过的一年。但只要一直关注我们,就会很容易获得过去一年的总结:开源已经全胜。让我们从头开始说起吧: + +**超级计算机**: Linux 在超级计算机系统 500 强的名单上占据绝对的主导地位这本身就令其它操作系统很尴尬。[2014年11月的数据][1]显示前500系统中的485个系统都在运行着 Linux 的发布系统,而仅仅只有一台运行着 Windows 系统。如果您看看所用的处理器数量,这数据更是让人惊叹。截止到目前,运行 Linux 系统的处理器有 22,851,693 个之多,而 windows 系统仅仅只有 30,720。这意味着什么?Linux 不仅仅是占据主导地位,在大型系统中已经是绝对的霸主了。 + +**云计算**: 去年, Linux 基金会撰写了一个有趣的[报告][2],是关于大公司在云端使用 Linux 的情况的。它发现 75% 的大公司在使用 Linux 系统作为他们的主要平台,相对的使用 Windows 系统的只占 23%。因为需要考虑云端和非云端的因素,它们已经混淆在一起了,所以很难把这比例对应到真实的市场份额里。但是,鉴于当前云计算的流行度,可以很确定的说明 Linux 使用的高速增长。事实上,同样的调查发现,在云端的 Linux 部署率已经从 45% 增长到 79%,而对于 Windows 来说已经从 45% 下降到 36%。当然了,某些人可能认为 Linux 基金会在这块上并不是完全公正无私的,但即使是有私心或是因统计的不确定性而有失公允,事情也正朝着预料的正确方向迈进。 + +**Web 服务器**: 开源已经统治这个行业近20年 - 取得了一份很惊人的成绩。然而,最近在市场份额上出现了一些有趣的变动:一点就是,在 Web 服务器的总计数上,微软的 IIS 服务已经超越了 Apache 服务。但正如 Netcraft 公司其最近的[分析][3]解释所说的那样,这儿还有很多令人大饱眼福的地方呢: + +> 这是网站总数持续大幅回落以来的第二个月,从一月份以来,本月达到了最低点。与十一月份情况一样,损失的仅仅只是集中在一小部分的主机提供商中,只占了5200万主机名数的十大点。这点损失相比于激活的站点和网站来说不是一个数据级的,所以造不成什么影响,但激活的这些站点大部分都是广告类的链接页面池,基本上没有原创的内容。大多数这些站点都是运行在微软的 IIS 服务器上的,所以在2014年7月份的调查中 IIS 的使用数就超过了 Apache。然而,近期跌势已导致其市场份额下降到 29.8%,现在已经低于Apache 10个百分点了。 + +这表明,微软的所谓“激增”更多的是表象,而事实并非如此,它的大多数增加都是基于没什么有用内容的链接页面池。事实上,Netcraft公司的关于活动网站的数据给我们描绘了一幅完全不同的图表:Apache 拥有 50.57% 的市场份额,nginx 的是 14.73% 位居第二;微软的 IIS 很无力,占到了相当微弱的 11.72%。这意味着在活跃 Web 服务器市场上开源大约有65%的份额 - 虽然没有超级计算机那么高的水平,但也还不错。 + +**移动设备系统**. 目前,开源的大军主要是 Andriod 为基础在不断高歌猛进。最新数据表明,在2014年第三季度的智能手机出货量中,Andriod 设备的市场份额从去年同期的 81.4% 上升到了 [83.6%][4]。苹果的从去年同期的 13.4% 下降到 12.3%。对于平板电脑来说,Android 平板遵循同样的轨迹:在2014年第二季度,Android 平板的占有率达到[全球平板电脑的销量的75%][5]左右,而苹果的只有25%。 + +**嵌入式系统**: 虽然很难量化 Linux 在的重要的嵌入式系统市场的市场份额,但来一个自 2013 年的研究数字表明,[按规划,大约一半的嵌入式系统][6]将会采用 Linux。 + +**物联网**: 在很多方面上可以把它们简单的认为是嵌入式系统的另外一个化身,不同之处在于它们被设计为一直在线的。虽然现在谈论它的市场份额还有点为时过早,但如我在[讨论栏目][7]里说的,AllSeen 的物联网开源框架正进行的如火如荼。他们所缺少的也最引入注目的事情只是还没有任何可信任的闭源项目对手。因此,很有可能物联网将会通过开源的方式来达到 Linux 在超级计算机中的占有率这样的水平。 + +当然了,这个阶段的成功也带来了一些问题:我们将何去何从?鉴于开源将会使很多成功的行业达到饱和点,想必唯一的办法就是下跌吗?要回答这个问题,我建议浏览下 Christopher Kelty 于2013年写的一篇供同行参阅、发人深省的文章,有个耐人寻味的标题“[天下没有免费的软件][8]”。下面是他的开头段: + +> 自由软件并不存在。在我写了一整本书后,我莫名的忧伤。但这也是我写进文章的一个观点。自由软件和与它一体两面的开源正在不断的变化着。它并不是一直持续不变的,不稳定、不固定、不持久,这正是它的特色的一部分。 + +换句话说,无论2014年带给我们多少惊人的免费软件,我们也确信2015年会更多更丰富,因为进化是永无止境的。 + +-------------------------------------------------------------------------------- + +via: http://www.computerworlduk.com/blogs/open-enterprise/open-source-has-won-3592314/ + +作者:[lyn Moody][a] +译者:[runningwater](https://github.com/runningwater) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.computerworlduk.com/author/glyn-moody/ +[1]:http://www.top500.org/statistics/list/ +[2]:http://www.linuxfoundation.org/publications/linux-foundation/linux-end-user-trends-report-2014 +[3]:http://news.netcraft.com/archives/2014/12/18/december-2014-web-server-survey.html +[4]:http://www.cnet.com/news/android-stays-unbeatable-in-smartphone-market-for-now/ +[5]:http://timesofindia.indiatimes.com/tech/tech-news/Android-tablet-market-share-hits-70-in-Q2-iPads-slip-to-25-Survey/articleshow/38966512.cms +[6]:http://linuxgizmos.com/embedded-developers-prefer-linux-love-android/ +[7]:http://www.computerworlduk.com/blogs/open-enterprise/allseen-3591023/ +[8]:http://peerproduction.net/issues/issue-3-free-software-epistemics/debate/there-is-no-free-software/ diff --git a/translated/talk/20150106 2015--Open Source Has Won, But It Isn't Finished.md b/translated/talk/20150106 2015--Open Source Has Won, But It Isn't Finished.md deleted file mode 100644 index 1646773bb5..0000000000 --- a/translated/talk/20150106 2015--Open Source Has Won, But It Isn't Finished.md +++ /dev/null @@ -1,47 +0,0 @@ -2015:开源已经完胜,但还在继续 -================================================================================ -> 在 2014 年的完胜后,接下来会如何? - -新年伊始,习惯上都是回顾已经走过的一年。但只要观注我们的这个栏目,就会很容易获得过去一年的总结:开源已经全胜。让我们从头开始说起吧: - -**超级计算机**: Linux 在超级计算机系统 500 强的名单上占据绝对的主导地位这本身就令人很尴尬。[2014年11月的数据][1]显示前500系统中的485个系统都在运行着 Linux 的发布系统,而仅仅只有一台运行着 Windows 系统。如果您查询相关的核心数据,这问题更是让人触目惊心。截止到目前,Linux 系统有 22,851,693 之多而 windows 系统仅仅只有 30,720。这意味着什么?Linux 不仅仅是占据主导地位,在大型系统中已经是绝对的霸主了。 - -**云计算**: 去年, Linux 基金会撰写了一个有趣的[报告][2],是关于大公司在云端使用 Linux 的情况的。它发现 75% 的大公司在使用 Linux 系统作为他们的主要平台,相对的使用 Windows 系统的只占 23%。因为需要考虑云端和非云端的因素,它们已经混淆在一起了,所以很难把这比例对应到真实的市场份额里。但是,鉴于当前云计算的流行度,可以很确定的说明 Linux 使用的高速增长。事实上,同样的调查发现,在云端的 Linux 部署率已经从 45% 增长到 79%,而对于 Windows 来说已经从 45% 下降到 36%。当然了,某些人可能认为 Linux 基金会在这块上并不是完全公正无私的,但即使是有私心或是统计的不确定性而有失公允,事情也正朝着预料的正确方向迈进。 - -**Web 服务器**: 开源已经统治这个行业近20年 - 取得了一份很惊人的成绩。然而,最近在市场份额上出现了一些有趣的变动:一点就是,在 Web 服务器的总计数上,微软的 IIS 服务已经超越了 Apache 服务。但正如 Netcraft 公司其最近的[分析][3]解释所说的那样,这儿还有很多令人大饱眼福的地方呢: - -> 这是网站总数持续大幅回落以来的第二个月,从一月份以来,创造了一个月的最低点。由于在十一月份的时候,损失的仅仅只是集中在主机提供商中的一小部分,只占了5200万主机名数的十大点。这点损失相比于激活的站点和网站来说不是一个数据级的,所以造不成什么影响,但激活的这些站点大部分都是广告类的链接页面,基本上没有原创的内容。大多数这些站点都是运行在微软的 IIS 服务器上的,所以在2014年7月份的调查中 IIS 的使用数就超过的 Apache 的。然而,近期跌势已导致其市场份额下降到 29.8%,现在已经低于Apache 10个百分点了。 - -这表明,微软的所谓“激增”更多的是表象,而事实并非如此,它的大多数增加都是基于链接页面站点,其内容很少有用。事实上,Netcraft公司的关于活动网站的数据给我们描绘了一幅完全不同的图表:Apache 拥有 50.57% 的市场份额,nginx 的是 14.73% 位居第二;微软的 IIS 很无力,占到了相当微弱的 11.72%。这意味着在活跃 Web 服务器市场上开源大约有65%的份额 - 虽然没有超级计算机那么高的水平,但也还不错。 - -**移动设备系统**. 目前,开源的大军主要是 Andriod 为基础在继续着。最新数据表明,在2014年第三季度的智能手机出货量中,Andriod 设备的市场份额从去年同期的 81.4% 上升到了 [83.6%][4]。苹果的从去年同期的 13.4% 下降到 12.3%。对于平板电脑来说,Android 平板遵循同样的轨迹:在2014年第二季度,Android 平板的占有率达到[全球平板电脑的销量的75%][5]左右,而苹果的只有25%。 - -**嵌入式系统**: 虽然很难量化 Linux 在的重要的嵌入式系统市场的市场份额,但来一个自 2013 年的研究数字表明,[计划大约一半的嵌入式系统][6]将会采用 Linux。 - -**物联网**: 在很多方面上可以把它们简单的认为是嵌入式系统的另外一个化身,不同之处在于它们被设计为一直在线的。虽然现在谈论它的市场份额还有点为时过早,但如我在[讨论栏目][7]里的,AllSeen 的物联网开源框架正进行的如火如荼。他们所缺少的也最引入注目的事情是要让任何可信任的闭源项目把其当做对手。因此,很有可能物联网将会通过开源的方式来达到 Linux 在超级计算机中的占有率这样的水平。 - -当然了,这个阶段的成功也带来了一些问题:我们将何去何从?鉴于开源将会使很多成功的行业达到饱和点,想必唯一的办法就是下跌吗?要回答这个问题,我建议浏览下 Christopher Kelty 于2013年写的一篇供同行参阅、发人深省的文章,有个耐人寻味的标题“[天下没有免费的软件][8]”。下面是他的开头段: - -> 免费软件并不存在。在我写了一整本书后,我莫名的忧伤。但这也是我写进文章的一个观点。免费软件和它的分身开源正在不断的变化着。它并不是一直持续不变的,不稳定、不固定、不持久,这正是它的特色的一部分。 - -换句话说,无论2014年带给我们多少惊人的免费软件,我们也确信2015年会更多更丰富,因为进化是永无止境的。 - --------------------------------------------------------------------------------- - -via: http://www.computerworlduk.com/blogs/open-enterprise/open-source-has-won-3592314/ - -作者:[lyn Moody][a] -译者:[runningwater](https://github.com/runningwater) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.computerworlduk.com/author/glyn-moody/ -[1]:http://www.top500.org/statistics/list/ -[2]:http://www.linuxfoundation.org/publications/linux-foundation/linux-end-user-trends-report-2014 -[3]:http://news.netcraft.com/archives/2014/12/18/december-2014-web-server-survey.html -[4]:http://www.cnet.com/news/android-stays-unbeatable-in-smartphone-market-for-now/ -[5]:http://timesofindia.indiatimes.com/tech/tech-news/Android-tablet-market-share-hits-70-in-Q2-iPads-slip-to-25-Survey/articleshow/38966512.cms -[6]:http://linuxgizmos.com/embedded-developers-prefer-linux-love-android/ -[7]:http://www.computerworlduk.com/blogs/open-enterprise/allseen-3591023/ -[8]:http://peerproduction.net/issues/issue-3-free-software-epistemics/debate/there-is-no-free-software/ From 6adcffbd5ad13040dd698cc09ff970df9f768656 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Sat, 24 Jan 2015 12:28:43 +0800 Subject: [PATCH 047/725] =?UTF-8?q?20150124=20=E9=80=89=E9=A2=98=20Why=20d?= =?UTF-8?q?oes=20C++=20promote=20an=20int=20to=20a=20float=20when=20a=20fl?= =?UTF-8?q?oat=20cannot=20represent=20all=20int=20values=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...a float cannot represent all int values.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md diff --git a/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md b/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md new file mode 100644 index 0000000000..25a2dc6daf --- /dev/null +++ b/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md @@ -0,0 +1,43 @@ +Why does C++ promote an int to a float when a float cannot represent all int values? +--------- + +#Q: + +Say I have the following: + +```C +int i = 23; +float f = 3.14; +if (i == f) // do something +``` + +The i will be promoted to a float and the two float numbers will be compared, but can a float represent all int values? Why not promote both the int and the float to a double? + +#A: + +When `int` is promoted to `unsigned` in the integral promotions, negative values are also lost (which leads to such fun as `0u < -1` being true). + +Like most mechanisms in C (that are inherited in C++), the usual arithmetic conversions should be understood in terms of hardware operations. The makers of C were very familiar with the assembly language of the machines with which they worked, and they wrote C to make immediate sense to themselves and people like themselves when writing things that would until then have been written in assembly (such as the UNIX kernel). + +Now, processors, as a rule, do not have mixed-type instructions (add float to double, compare int to float, etc.) because it would be a huge waste of real estate on the wafer -- you'd have to implement as many times more opcodes as you want to support different types. That you only have instructions for "add int to int," "compare float to float", "multiply unsigned with unsigned" etc. makes the usual arithmetic conversions necessary in the first place -- they are a mapping of two types to the instruction family that makes most sense to use with them. + +From the point of view of someone who's used to writing low-level machine code, if you have mixed types, the assembler instructions you're most likely to consider in the general case are those that require the least conversions. This is particularly the case with floating points, where conversions are runtime-expensive, and particularly back in the early 1970s, when C was developed, computers were slow, and when floating point calculations were done in software. This shows in the usual arithmetic conversions -- only one operand is ever converted (with the single exception of `long/unsigned int`, where the `long` may be converted to `unsigned long`, which does not require anything to be done on most machines. Perhaps not on any where the exception applies). + +So, the usual arithmetic conversions are written to do what an assembly coder would do most of the time: you have two types that don't fit, convert one to the other so that it does. This is what you'd do in assembler code unless you had a specific reason to do otherwise, and to people who are used to writing assembler code and do have a specific reason to force a different conversion, explicitly requesting that conversion is natural. After all, you can simply write + +```C +if((double) i < (double) f) +``` + +It is interesting to note in this context, by the way, that `unsigned` is higher in the hierarchy than `int`, so that comparing `int` with `unsigned` will end in an unsigned comparison (hence the `0u < -1` bit from the beginning). I suspect this to be an indicator that people in olden times considered `unsigned` less as a restriction on `int` than as an extension of its value range: We don't need the sign right now, so let's use the extra bit for a larger value range. You'd use it if you had reason to expect that an `int` would overflow -- a much bigger worry in a world of 16-bit ints. + +---- +via:[stackoverflow](http://stackoverflow.com/questions/28010565/why-does-c-promote-an-int-to-a-float-when-a-float-cannot-represent-all-int-val/28011249#28011249) + +作者:[wintermute][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/4301306/wintermute \ No newline at end of file From cadf2b8e6082cb045322d6e5be11a90507971255 Mon Sep 17 00:00:00 2001 From: alim0x Date: Sat, 24 Jan 2015 12:34:03 +0800 Subject: [PATCH 048/725] [translated]12 - The history of Android.md --- .../12 - The history of Android.md | 100 ------------------ .../12 - The history of Android.md | 98 +++++++++++++++++ 2 files changed, 98 insertions(+), 100 deletions(-) delete mode 100644 sources/talk/The history of Android/12 - The history of Android.md create mode 100644 translated/talk/The history of Android/12 - The history of Android.md diff --git a/sources/talk/The history of Android/12 - The history of Android.md b/sources/talk/The history of Android/12 - The history of Android.md deleted file mode 100644 index 67538389d0..0000000000 --- a/sources/talk/The history of Android/12 - The history of Android.md +++ /dev/null @@ -1,100 +0,0 @@ -translating by alim0x - -The history of Android -================================================================================ -### Android 2.1—the discovery (and abuse) of animations ### - -Android 2.1 came out with the launch of the Nexus One, which was only three months after the release of 2.0. The new OS wasn't a huge release, so it still kept the codename "Éclair." Android development was chugging along at an unheard-of pace, with Google averaging a new OS release every two-and-a-half months over the last 15 months. - -Thanks mostly to the marketing efforts of Verizon and the "Droid" line of phones, Android was gaining in popularity. The OS was still considered ugly, though, and while the Android engineers at the time seemed to have almost no formal design training, in Android 2.1 they tried to spruce things up a bit by slathering on heavy-handed animation effects wherever they could. The result was an OS that seemed to be desperately trying to prove that it could do animation effects. Many of the new additions felt more like tech demos than user-experience improvements. - -![The lock and home screens from Android 2.1 and 2.0.](http://cdn.arstechnica.net/wp-content/uploads/2014/01/21.png) -The lock and home screens from Android 2.1 and 2.0. -Photo by Ron Amadeo - -Android 2.0's rotary dial lock screen was kicked to the curb after only one version and replaced with the same pull tabs the incoming call screen used. The lock screen clock was an attempt at a uniquely Android font, but as typefaces go, it was pretty hideous looking. - -One of the biggest features in Android 2.1 was "Live Wallpapers"—interactive or moving images that could be set as the wallpaper. The default Live Wallpaper was a grid of squares with blue, red, yellow, and green lights continually streaking across it. Tapping on the screen would send lights firing out in all four directions from the center of your tap. While Live Wallpapers looked neat (and was a unique feature over the iPhone), the animated backgrounds sucked up battery power and CPU cycles. It seemed to make the whole phone run a little slower. - -On the home screen, the default Google Search widget was given a lot more padding and now sits centered in its row. Page indicators now lived in the bottom left and right corners of the screen, and the number of home screen pages jumped from three to five. The app drawer tab at the bottom was replaced with an icon showing a grid of squares, a metaphor that Google still uses today. - -![A picture showing the app drawer design and a composite image showing the app selection for Android 2.1 and 2.0.](http://cdn.arstechnica.net/wp-content/uploads/2014/01/21icons.png) -A picture showing the app drawer design and a composite image showing the app selection for Android 2.1 and 2.0. -Photo by Ron Amadeo - -With the new app drawer icon came a totally new app drawer. Instead of a tabbed container that lifted up from the bottom of the screen, the app drawer displayed as a full-screen interface. The carbon fiber weave was removed, and the background switched to a plain black background—a decision that would stick around all the way up to KitKat. - -Google decided to add a floating, semi-transparent home icon to the bottom of the app drawer to give people an easy way out of the full-screen tab interface. This could be seen as a precursor to the on-screen home button that was introduced in Android 4.0. - -The app drawer was given a tacky graphics effect, too. While scrolling, the icons at the top and bottom of the list would bend inward and appear to move deeper into the phone, sort of like the opening scroll in Star Wars. - -There were a few changes to the icons. "Amazon MP3" and "Alarm Clock" both lost their first names, along with their premium alphabetical real-estate at the top of the app drawer. Two new apps showed up: News and Weather, and Google Voice, which was Google's telecommunication service. Since the Nexus One was not a Verizon phone, Verizon's Visual Voicemail app was dumped. - -![The revamped clock app.](http://cdn.arstechnica.net/wp-content/uploads/2014/01/clo2ck.png) -The revamped clock app. -Photo by Ron Amadeo - -Along with the name change, the clock app got a total revamp. Tapping on the clock shortcut no longer opened the alarms page; instead it went to a "desk clock" interface (left picture, above) with a background that matched the wallpaper. The clock used the same font from the lock screen, pulling in weather from the new News And Weather app. - -The new alarm page cleaned up a lot of the weirder design decisions made in the old version. The analog clock and selectable clock designs were dead. The checkboxes were replaced with a green on/off light, which was much easier to parse than "gray check/green check." While it might be hard to see from the thumbnail (click for a bigger version), the old alarm design displayed AM and PM next to the time. The 2.1 design did away with that, only showing the relevant meridian. A digital clock was placed at the bottom, and the clock icon took you back to the desk clock interface. - -![The Gallery and individual image screens from 2.1 and 2.0.](http://cdn.arstechnica.net/wp-content/uploads/2014/01/gallery1.png) -The Gallery and individual image screens from 2.1 and 2.0. -Photo by Ron Amadeo - -Google's desire to improve the look of Android was most evident in the 2.1 Gallery, which was all about heavy-handed animation effects and transparencies. When the app opened, individual pictures flew in from the top of the screen and shuffled into little piles that made up an album. When opening an album, the picture stack separated, and the photos slid into a grid formation. Everything you touched would pop open, squish, and stretch like a spring-loaded piece of Jell-o. - -There was no "normal" background for the Gallery. It would randomly pick a picture on the screen and heavily distort it for use as a background image. When that picture scrolled off-screen, it would pick a new background image, so the tone of the background always matched your pictures. - -The top left of the screen housed a breadcrumbs bar. It displayed your current location and any folders between you and the main screen—it could be thought of as an early precursor to the "Up" button that would debut in Android 3.0. In the top right was a link to the camera app, which still sported the same faux-leather design that debuted in Android 1.6—the two designs could not be more different. - -While the camera was another weird, one-off design, never was the wild UI disparity between Android apps more apparent than in the new Gallery. It didn't use Android buttons, menus, or any of the existing UI paradigms. It even hid the status bar in every screen—you could barely tell you were looking at Android. - -In the individual photo view, you could finally swipe between images, which removed the need for chunky left and right arrows. For some reason, the color-matched background wasn't on this screen. It was the only part of the app where the background is black. Zoom controls were in the top-right (still no pinch zoom), and commands were held in a single strip along the bottom of the screen. Hitting the "menu" button (software or hardware) didn't bring up a 2×3 grid of options like every other app—the items in the bottom strip just changed from two options to three other options. - -![The animation-filled Gallery app.](http://cdn.arstechnica.net/wp-content/uploads/2014/01/gallery2.png) -The animation-filled Gallery app. -Photo by Ron Amadeo - -The first picture, above, shows an album view. You could scroll horizontally through a large album or use the fast scroll bar at the bottom of the screen. Long pressing on a picture (or, bizarrely, pressing the hardware menu button) would bring up a "checkbox" interface, where you could tap on several pictures to select them. After you've selected pictures, you could then batch share, delete, or rotate them. - -The menus on this screen and the next individual picture screen were semi-transparent speech bubbles that would spring out of their respective buttons when tapped on. Again, this was about as far away from the normal Android conventions as you could get. The Gallery was also one of the first apps to have an overscroll effect. When you hit the end of the photo wall, the entire surface would skew in the direction of the scrolling. - -The 2.1 Gallery was the first photo client to show your cloud-stored Picasa photos along with local pictures. These were marked with a white camera shutter icon in the bottom left corner of a thumbnail. This would later become Google+ Photos. - -No Android app before or since had looked like the gallery. There was good reason for that—it wasn’t made by Google! The app was farmed out to Cooliris, who didn't bother following a single existing Android UI paradigm. While the app was usable, all the animations and effects made it seem like a case of style over substance. - -![The "News and Weather" app showing... the news and weather.](http://cdn.arstechnica.net/wp-content/uploads/2014/01/newsandweather.png) -The "News and Weather" app showing... the news and weather. -Photo by Ron Amadeo - -Compare the Gallery to the other new Android 2.1 app: News And Weather. While the Gallery was a transparency-filled animation fest, News And Weather was all about dark gradients and contrasting colors. This app powered the weather display on the desk clock app, and it even came with a home screen widget. The first screen just showed the weather and a six-day forecast for your current location. Along the top of the screens were tabs, next to the city name was a small "i" button that would bring up a temperature and precipitation graph. You could slide your finger along the graph to get exact temperatures and precipitation for any given minute. - -The big innovation in this app was swipeable tabs, an idea that would eventually become a standard Android UI convention. After the weather were a bunch of user configurable news tabs, and besides tapping on the tabs to switch to them, you could just swipe horizontally across the screen and the tab would change. The news tabs all showed a list of news headlines that were almost always truncated to the point that you had no idea what the story was about. When opening a webpage from this app, it didn't load the browser. Instead, it opened the story within the app complete with a weird white border. - -![Google Maps showing off some Labs features, the new widget designs, the only screen we can access in Google Voice, and the new tabbed music design.](http://cdn.arstechnica.net/wp-content/uploads/2014/04/ccccombo.jpg) -Google Maps showing off some Labs features, the new widget designs, the only screen we can access in Google Voice, and the new tabbed music design. -Photo by Ron Amadeo - -Widgets in 2.1 were all redesigned, with almost everything receiving a black gradient, and made better use of the available space. The clock changed back to a circle, and the calendar got a blue top, which matched the app a little more closely. Google Voice will start up, but the sign-in is broken—this is as far as you can get. - -The oft-neglected Music app got a minor update. The four-button home screen was removed completely, and tabs for each music display mode were added to the top of the screen. This meant when opening the app, you were immediately presented with a list of music, instead of a navigational page. Unlike the News and Weather app, these newly installed tabs here could not be swiped between. - ----------- - -![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg) - -[Ron Amadeo][a] / Ron is the Reviews Editor at Ars Technica, where he specializes in Android OS and Google products. He is always on the hunt for a new gadget and loves to rip things apart to see how they work. - -[@RonAmadeo][t] - --------------------------------------------------------------------------------- - -via: - -译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://arstechnica.com/author/ronamadeo -[t]:https://twitter.com/RonAmadeo diff --git a/translated/talk/The history of Android/12 - The history of Android.md b/translated/talk/The history of Android/12 - The history of Android.md new file mode 100644 index 0000000000..9d28e9861d --- /dev/null +++ b/translated/talk/The history of Android/12 - The history of Android.md @@ -0,0 +1,98 @@ +安卓编年史 +================================================================================ +### Android 2.1——动画的大发现(以及滥用)时代 ### + +安卓2.1随着Nexus One的发布一同到来,这时距安卓2.0的发布仅仅过了三个月。新系统并不是一个大的更新升级,所以它仍然使用Éclair(泡芙)这个名称。安卓的开发以一种闻所未闻的步伐不稳定地进行,在过去的15个月中,谷歌平均每两个半月就发布一个新版本。 + +绝大部分得益于威瑞森在市场营销上的努力以及“Droid”产品线,安卓日益流行起来。即便如此,这个系统还是被认为丑,这时的安卓工程师看起来几乎没有接受过正式的设计培训,在安卓2.1中,他们尝试着通过在所有能用上的地方大量使用动画效果,想让东西看起来更整齐一点。这么做的结果就是系统看起来拼命想要证明它可以实现动画效果。许多新增的部分感觉更像是技术的演示(demo)而不是用户体验的改善。 + +![安卓2.1和2.0中的锁屏和主屏幕。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/21.png) +安卓2.1和2.0中的锁屏和主屏幕。 +Ron Amadeo供图 + +安卓2.0的旋转拨号式锁屏在仅仅一个版本之后就被踢到路边去了,取而代之的是和来电界面使用的相同的左/右拉标签式解锁。锁屏时钟尝试使用了一种独特的安卓字体,但是相比其它字体来说,它真是丑得可以。 + +安卓2.1最大的特色之一是“动态壁纸”——可互动的或是动态图片可以被设置为壁纸。默认的动态壁纸是个灰色正方形组成的大方阵,不断有蓝色,红色,黄色以及绿色的光点拖着尾巴穿越屏幕。点击屏幕会使光点以你点击的位置为中心向四个方向射出。尽管动态壁纸看起来很棒(并且相对iPhone而言是个独特的特性),动画背景对电池和处理器而言可不是什么好事。它似乎让整个系统的运行都变得有点慢了。 + +在主屏幕上,默认的谷歌搜索小部件周围有了更多空间,并且现在它位于所在行的正中央。页面指示器现在在屏幕底部的左右角落,主屏幕的页数也从3变成了5。底部的应用抽屉标签被替换为一个正方形方阵组成的图标,这个(对应用列表的)暗喻直到今天谷歌也还在使用。 + +![图片展示了安卓2.1和2.0中的应用抽屉设计以及应用的选择。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/21icons.png) +图片展示了安卓2.1和2.0中的应用抽屉设计以及应用的选择。 +Ron Amadeo供图 + +和新应用抽屉图标一同到来的还有全新的应用抽屉。应用抽屉不再是以前从屏幕底部上拉的带标签容器的样子,新界面显示为一个全屏界面。原先的碳纤维编织纹理被去掉了,变成了一个纯黑背景——这个决定会一直持续到KitKat。 + +谷歌决定添加一个浮动的,半透明的home图标到应用抽屉的底部,好让人们方便地退出全屏的应用列表界面。这个可以看作是安卓4.0中引入的虚拟home键的前身。 + +应用抽屉同样有个俗气的图形效果。在滚动的时候,在应用列表顶部和底部的图标会向内弯曲并且看起来像是向手机深处移动一样,有点像星球大战开场的滚动字幕。 + +应用的图标也有不多的改变。“Amazon MP3”和“Alarm Clock”(闹钟)都去掉了前面那个单词,然后他们就从按字母排序的列表的前两个位置退了下来。出现了两个新的应用:新闻和天气,以及Google Voice,这是谷歌的通信服务。由于Nexus One不是威瑞森的定制机,威瑞森的可视语音邮件被去掉了。 + +![修改后的时钟应用。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/clo2ck.png) +修改后的时钟应用。 +Ron Amadeo供图 + +不止是名称的更改,时钟应用还迎来了整体上的重制。点击时钟快捷方式不再会打开闹钟页面;取而代之的是去到“桌面时钟”界面(上方左图),它带有一个和壁纸一致的背景。时钟使用和锁屏一样的字体,并从新的新闻和天气应用中获取天气。 + +新的闹钟页面清除了许多旧版本中奇怪的设计。模拟时钟和可选择的时钟样式已经不见了。复选框已经被一个带绿色亮光的开关所取代,它比“灰色勾选/绿色勾选”更容易理解。尽管可能从快照很难看出来,旧的闹钟设计在时间旁同时显示AM和PM。2.1的设计里取消了这一项,只显示相关的AM/PM标记。底部放置了一个数字时钟,点击时钟图标会将你带回桌面时钟界面。 + +![安卓2.1和2.0中的相册和单独图片查看界面。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/gallery1.png) +安卓2.1和2.0中的相册和单独图片查看界面。 +Ron Amadeo供图 + +谷歌想要改进安卓外观的欲望在2.1的相册中最为明显,这里几乎都是大量使用的动画效果和半透明。当应用打开的时候,单独的图片从屏幕顶部飞下并且打乱成小堆组成相册。当打开相册的时候,图片堆各自分离,照片滑开形成方阵的形式。所有你触摸的东西会弹开,压缩,以及拉伸,就像是果冻的弹簧片一样。 + +相册这里没有一个“标准”的背景。他会从屏幕上随机选择一张图片并深度模糊,然后作为背景图片使用。当这张图片滑出屏幕显示范围后,它会重新选择一张背景图片,所以背景色调总是会和你的图片相匹配。 + +屏幕的左上角放置了面包屑导航栏。它显示你当前的位置,以及你所在位置和主界面之间的任何文件夹——它可以被看作是在安卓3.0中即将推出的“向上”按钮的前身。在右上角是一个相机的链接,这还留着相同的在安卓1.6中登场的人造皮革设计——两个设计截然不同。 + +而相机是另一个奇怪的,一次性的设计,从来没有哪个安卓应用间随意的UI设计差距能有和新的相册应用间这么明显。它并没有采用安卓的按钮,菜单,或任何现有的UI规范。它甚至在每个界面隐藏了状态栏——你几乎不能分辨出你正在盯着的是安卓。 + +在单张照片查看视图,你终于可以图片之间滑动切换,从而去掉了短粗的左右箭头。出于某种原因,这个界面并没有颜色匹配的背景。它是应用中唯一一个背景为黑色的部分。缩放控制在右上方(仍然没有捏合缩放),可用命令沿着屏幕的底部排成一行。点击“菜单”按钮(虚拟或实体键)并不会像所有其他的应用一样出现一个2×3格的方阵——仅仅是底部的一行选项从两个变成了另外三个选项。 + +![充满动画效果的相册应用。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/gallery2.png) +充满动画效果的相册应用。 +Ron Amadeo供图 + +上面第一张图片,显示了一个相册视图。大型相册的话你可以水平滚动,或使用在屏幕底部的快速滚动条。长按上的图片(虽然有点奇怪,或者按实体菜单按钮)会弹出一个“复选框”界面,在这里你可以点击几张照片同时选中它们。你选中照片之后,你可以批量分享,删除或旋转照片。 + +这个界面和接下来的单张照片查看界面的菜单是半透明语音气泡式的,点击各个按钮时它们会跳出来。再重复一遍,这和你所得到的正常的安卓体验规范远远不同。相册还是第一个拥有越界效果(overscroll)的应用之一。当你到达照片墙的底部时,整个界面会向滚动的方向扭曲。 + +2.1的相册是第一个能同时显示您云存储的Picasa照片以及本地照片的客户端。这些照片缩略图的左下角有白色相机快门图标。这后来成为了Google+ Photos。 + +之前或之后任何安卓应用程序看起来都不像这个相册。有很好的理由解释这是为什么——它不是谷歌做的!这个应用外包给了Cooliris,他们看样子并没有打算花费精力遵循任何一条现有的安卓UI规范。尽管应用是可用的,所有的动画和效果使它看起来像是只注重风格而不注重实质的产物。 + +![“新闻和天气”应用展示了……新闻和天气。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/newsandweather.png) +“新闻和天气”应用展示了……新闻和天气。 +Ron Amadeo供图 + +来比较下相册应用和另一个全新的安卓2.1应用:新闻和天气。相册是个充满透明动画效果的汇聚,而新闻和天气则全是深色渐变和对比色。这个应用提供了桌面时钟的天气显示,它甚至还带着一个主屏幕小部件。第一张图显示的是当前位置的天气和六天预报。沿着屏幕顶部排列着一些标签,城市名称旁有个小小的“i”按钮,点击它会打开温度和降水图。你可以在图上滑动以得到指定时间的精确温度和降水信息。 + +这个应用里最大的创新在于可滑动标签,这个想法最终将成为一个标准的安卓UI规范。在天气之后是一些可由用户定制的新闻标签,除了点击标签切换之外,你还可以在屏幕上水平滑动,标签也会跟着切换。新闻标签都显示着一个新闻标题列表,它们几乎总是正好截断到你弄不明白这条新闻讲了什么的程度。当你从这个应用打开一个网页时,它并不会启动浏览器。相反,它会在应用内打开新闻,带着个奇怪的白色边框。 + +![谷歌地图的一些实验性功能,新的小部件设计,Google Voice里我们能接触到的唯一一个界面,以及新的带标签的音乐界面设计。](http://cdn.arstechnica.net/wp-content/uploads/2014/04/ccccombo.jpg) +谷歌地图的一些实验性功能,新的小部件设计,Google Voice里我们能接触到的唯一一个界面,以及新的带标签的音乐界面设计。 +Ron Amadeo供图 + +安卓2.1里的小部件全部经过了重新设计,几乎所有东西都带有黑色渐变,空间利用上也更加合理。时钟变回了一个圆,日历的顶部加上了蓝色,着让它和应用变得更加相似。Google Voice可以启动,但是登录已经失效了——这是你现在能看到的所有东西了。 + +人们经常忽视的音乐应用有个小更新。四个按钮的主界面被完全去除,并且在屏幕顶部添加了每个音乐显示模式的标签。这意味着在打开应用的时候,你就能直接看到音乐列表,而不是一个导航页。不同于新闻和天气应用里的标签,这些新增的标签不能滑动切换。 + +---------- + +![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg) + +[Ron Amadeo][a] / Ron是Ars Technica的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。 + +[@RonAmadeo][t] + +-------------------------------------------------------------------------------- + +via: + +译者:[alim0x](https://github.com/alim0x) 校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://arstechnica.com/author/ronamadeo +[t]:https://twitter.com/RonAmadeo From 126d103bec40f9338a28caf048d87980e7ff81e6 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Sat, 24 Jan 2015 13:12:58 +0800 Subject: [PATCH 049/725] translating --- ...y Of Notifications With Recent Notifications AppIndicator.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md b/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md index 28bdb2443d..7dfde4e12a 100644 --- a/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md +++ b/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md @@ -1,3 +1,5 @@ +Translating----geekpi + Keep History Of Notifications With Recent Notifications AppIndicator ================================================================================ ![How to see recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_14.jpeg) From 68e5ad658a4c3497449c31a7eadbb0516baa76ff Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Sat, 24 Jan 2015 13:58:59 +0800 Subject: [PATCH 050/725] translated --- ... With Recent Notifications AppIndicator.md | 42 ------------------- ... With Recent Notifications AppIndicator.md | 40 ++++++++++++++++++ 2 files changed, 40 insertions(+), 42 deletions(-) delete mode 100644 sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md create mode 100644 translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md diff --git a/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md b/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md deleted file mode 100644 index 7dfde4e12a..0000000000 --- a/sources/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md +++ /dev/null @@ -1,42 +0,0 @@ -Translating----geekpi - -Keep History Of Notifications With Recent Notifications AppIndicator -================================================================================ -![How to see recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_14.jpeg) - -Most of the desktop environments like Unity and Gnome have notification featured. Something which I like a lot. It specially helps me when I am listening to [streaming radio on Ubuntu][1]. But by default the notification is displayed on the top of the desktop for a couple of seconds and then it fades in disappearance. Now, what if you hear the notification sound but did not see it in time? How do you know what notification was it? - -If somehow you could have a history of all recent notifications, would it not be great? Yes, I know it would be great. You can easily keep track of all recent notifications in Ubuntu Unity or GNOME using Recent **Notifications applet indicator**. - -Recent Notifications sits in the top panel and keeps the history of all recent notifications. When there are new notifications captured by it, the indicator turns green to notify you of unread notifications. - -![Recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu.jpeg) - -When you click on it, you will see all the recent notifications. You can either choose to clear all of the notifications or remove some of those. - -![Recent notifications applet indicator](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_1.jpeg) - -Unfortunately there are no configuration options here. Therefore you cannot block notifications from specific applications. All kind of notifications will be saved here. - -### Install Recent Notifications in Ubuntu 14.04 and 14.10 ### - -Normally this Recent Notification applet indicator should also work in Linux Mint Cinnamon edition. You can give it a try. Use the following commands to install Recent Notifications applet indicator in Ubuntu 14.04 and 14.10: - - sudo add-apt-repository ppa:jconti/recent-notifications - sudo apt-get update - sudo apt-get install indicator-notifications - -After installation, log out, log back in and you are good to go. Now none of the recent notifications will go unnoticed. Hand applet indicator, isn’t it? - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/notifications-appindicator/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:http://itsfoss.com/apps-internet-streaming-radio-ubuntu/ \ No newline at end of file diff --git a/translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md b/translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md new file mode 100644 index 0000000000..2cc7a4778a --- /dev/null +++ b/translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md @@ -0,0 +1,40 @@ +使用最近通知工具保持通知历史 +================================================================================ +![How to see recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_14.jpeg) + +大多数桌面环境像Unity和Gnome都有通知特性。我很喜欢其中一些。它尤其当我[在Ubuntu上收听流媒体][1]时帮到我。默认上通知会在桌面的顶部显示几秒接着就会小时。如果你听见了通知的声音但是没有看到内容怎么办?你该如何知道通知的内容? + +如果你可以看到最近所有通知的历史会很棒吧?是的,我知道这很棒。你可以在Ubuntu Unity或者Gnome中使用最近**通知小工具**来追踪所有的最近通知。 + +最近通知位于顶部面板,并且有最近所有通知的历史。当它捕获到新的通知后,它就会变绿来表明你有未读的通知。 + +![Recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu.jpeg) + +当你点击它后,你就会看到最近所有的通知。你可以选择清空所有或者删除部分。 + +![Recent notifications applet indicator](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_1.jpeg) + +不幸的是它没有配置选项。因此你不能屏蔽特定程序的通知。所有的通知都会被保存。 + +### 在Ubuntu 14.04 和 14.10 中安装最近通知工具 ### + +一般说来这个最近通知工具应该也可以在Linux Mint Cinnamon版本中运行。你可以试一试。使用下面的命令来在在Ubuntu 14.04 和 14.10 中安装最近通知工具: + + sudo add-apt-repository ppa:jconti/recent-notifications + sudo apt-get update + sudo apt-get install indicator-notifications + +安装完成后,重新登录后你就可以用了。现在它是没有通知的状态。很方便的小工具,不是么? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/notifications-appindicator/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://itsfoss.com/apps-internet-streaming-radio-ubuntu/ \ No newline at end of file From c7c7ef3bbe7c35327a1b00091676677e09a9af17 Mon Sep 17 00:00:00 2001 From: liyoufan Date: Sat, 24 Jan 2015 17:56:47 +0800 Subject: [PATCH 051/725] Update 13 - The history of Android.md --- .../The history of Android/13 - The history of Android.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/talk/The history of Android/13 - The history of Android.md b/sources/talk/The history of Android/13 - The history of Android.md index 85c04441ac..31f5cd7eb4 100644 --- a/sources/talk/The history of Android/13 - The history of Android.md +++ b/sources/talk/The history of Android/13 - The history of Android.md @@ -1,4 +1,4 @@ -The history of Android +【translating】The history of Android ================================================================================ ![](http://cdn.arstechnica.net/wp-content/uploads/2014/03/ready-fight.png) @@ -101,4 +101,4 @@ via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-histor [3]:http://arstechnica.com/information-technology/2010/07/android-22-froyo/ [4]:http://arstechnica.com/information-technology/2010/07/android-22-froyo/ [a]:http://arstechnica.com/author/ronamadeo -[t]:https://twitter.com/RonAmadeo \ No newline at end of file +[t]:https://twitter.com/RonAmadeo From c0d8129cb9f48c1ec8dbda806ef432b14f0dfad7 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 24 Jan 2015 21:59:36 +0800 Subject: [PATCH 052/725] PUB:20141205 Find Out Network Adapters Available In Ubuntu Linux @geekpi --- ...d Out Network Adapters Available In Ubuntu Linux.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename {translated/tech => published}/20141205 Find Out Network Adapters Available In Ubuntu Linux.md (90%) diff --git a/translated/tech/20141205 Find Out Network Adapters Available In Ubuntu Linux.md b/published/20141205 Find Out Network Adapters Available In Ubuntu Linux.md similarity index 90% rename from translated/tech/20141205 Find Out Network Adapters Available In Ubuntu Linux.md rename to published/20141205 Find Out Network Adapters Available In Ubuntu Linux.md index d20083a363..b92b7cf01f 100644 --- a/translated/tech/20141205 Find Out Network Adapters Available In Ubuntu Linux.md +++ b/published/20141205 Find Out Network Adapters Available In Ubuntu Linux.md @@ -1,10 +1,10 @@ -在Ubuntu上找出可用的网络适配器 +如何在Ubuntu上找出可用的网络适配器 ================================================================================ 想知道**在Linux中你正在使用的网卡是什么吗?** 在Linux中很容易就找出网卡的生产商。打开一个终端并输入下面的额命令: sudo lshw -C network -如果上面的命令不能在sudo下使用,那就移除sudo。它的输出看上去有点奇怪但是很有用。 +如果上面的命令不能在sudo下使用,那就别用 sudo 的特权模式。它的输出看上去有点奇怪但是很有用。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/12/Network_Adapter_Linux.jpeg) @@ -36,7 +36,7 @@ > > resources: irq:18 memory:b0600000-b0607fff memory:b0400000-b05fffff -如你所见,我Macbook Air上的无线网卡是BCM4360,这是一款在Ubuntu下面经常无法检测无线网络的很容易出问题的网卡。 +如你所见,我Macbook Air上的无线网卡是BCM4360,这是一款在Ubuntu下面很容易出现无法检测无线网络问题的网卡。 [lshw][1] 命令实际上死用来列出硬件的,因此命令的名字是lshw。带上网络的选项后,就会只过滤出网络硬件了。 @@ -82,7 +82,7 @@ > > 04:00.0 SATA controller: Marvell Technology Group Ltd. 88SS9183 PCIe SSD Controller (rev 14) -这些命令会同时列出有线和无线的网卡。你应该注意到上面的输出中显示我的系统中没有有线网卡。因为我使用的是Macbook Air,他没有以太网端口 +这些命令会同时列出有线和无线的网卡。你应该注意到上面的输出中显示我的系统中没有有线网卡。因为我使用的是Macbook Air,它没有以太网端口 我希望这边文章可以帮助你找到你系统中的网卡。欢迎提出问题和建议。 @@ -92,7 +92,7 @@ via: http://itsfoss.com/find-network-adapter-ubuntu-linux/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7bc48d7fba0cf323b5131dc6db743e9401b2fe8a Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 24 Jan 2015 22:20:52 +0800 Subject: [PATCH 053/725] PUB:20141222 A Great Tool To Show Linux Command Progress Like ETA @GOLinux --- ...To Show Linux Command Progress Like ETA.md | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) rename {translated/tech => published}/20141222 A Great Tool To Show Linux Command Progress Like ETA.md (67%) diff --git a/translated/tech/20141222 A Great Tool To Show Linux Command Progress Like ETA.md b/published/20141222 A Great Tool To Show Linux Command Progress Like ETA.md similarity index 67% rename from translated/tech/20141222 A Great Tool To Show Linux Command Progress Like ETA.md rename to published/20141222 A Great Tool To Show Linux Command Progress Like ETA.md index 084a2b2858..e51bd26b4f 100644 --- a/translated/tech/20141222 A Great Tool To Show Linux Command Progress Like ETA.md +++ b/published/20141222 A Great Tool To Show Linux Command Progress Like ETA.md @@ -1,12 +1,12 @@ -一个用%显示Linux命令进度预计完成时间的伟大工具 +一个可以显示Linux命令运行进度的伟大工具 ================================================================================ -Coreutils Viewer(**cv**)是一个简单的程序,它可以用于显示任何核心组件命令的进度。它使用文件描述信息来确定一个命令的进度,比如cp命令。**cv**之美在于,它能够和其它Linux命令一起使用,比如你所知道的watch以及I/O重定向命令。这样,你就可以在脚本中使用,或者你能想到的所有方式,别让你的想象力束缚住你。 +Coreutils Viewer(**cv**)是一个简单的程序,它可以用于显示任何核心组件命令(如:cp、mv、dd、tar、gzip、gunzip、cat、grep、fgrep、egrep、cut、sort、xz、exiting)的进度。它使用文件描述信息来确定一个命令的进度,比如cp命令。**cv**之美在于,它能够和其它Linux命令一起使用,比如你所知道的watch以及I/O重定向命令。这样,你就可以在脚本中使用,或者你能想到的所有方式,别让你的想象力束缚住你。 ### 安装 ### 你可以从cv的[github仓库那儿][1]下载所需的源文件。把zip文件下载下来后,将它解压缩,然后进入到解压后的文件夹。 -该程序依赖于**ncurses library**。如果你已经在你的Linux系统中安装了ncurses,那么cv的安装过程对你而言就是那么得轻松写意。 +该程序需要**ncurses library**。如果你已经在你的Linux系统中安装了ncurses,那么cv的安装过程对你而言就是那么的轻松写意。 通过以下两个简单步骤来进行编译和安装吧。 @@ -23,20 +23,21 @@ Coreutils Viewer(**cv**)是一个简单的程序,它可以用于显示任 $ cv -如果没有核心组件命令在运行,那么cv程序会退出,并告诉你:No coreutils is running。 +如果没有核心组件命令在运行,那么cv程序会退出,并告诉你:没有核心组件命令在运行。 ![cv no command](http://blog.linoxide.com/wp-content/uploads/2014/11/cv-no-command.png) 要有效使用该程序,请在你系统上运行某个核心组件程序。在本例中,我们将使用**cp**命令。 -当拷贝一个打文件时,你就可以看到进度了,以百分比显示。 +当拷贝一个打文件时,你就可以看到当前进度了,以百分比显示。 ![cv default](http://blog.linoxide.com/wp-content/uploads/2014/11/cv-default.png) -### 添加选项到cv ### +### 添加选项到 cv ### 你也可以添加几个选项到cv命令,就像其它命令一样。一个有用的选项是让你了解到拷贝或移动大文件时的预计剩余时间。 -添加**-w**选项,它会帮你做以上这些事。 + +添加**-w**选项,它就会帮你显示预计的剩余时间。 $ cv -w @@ -46,9 +47,9 @@ Coreutils Viewer(**cv**)是一个简单的程序,它可以用于显示任 $ cv -wq -### cv和watch命令 ### +### cv 和 watch 命令 ### -watch是一个用于周期性运行程序并显示输出结果的程序。有时候,你可能想要看看命令运行期间的状况而不想存储数据到日志文件中。在这种情况下,watch就会派上用场了,它可以和cv一起使用。 +watch是一个用于周期性运行程序并显示输出结果的程序。有时候,你可能想要持续看看命令运行状况而不想将 cv 的结果存储到日志文件中。在这种情况下,watch就会派上用场了,它可以和cv一起使用。 $ watch cv -qw @@ -58,7 +59,7 @@ watch是一个用于周期性运行程序并显示输出结果的程序。有时 ### 在日志文件中查看输出结果 ### -正如所承诺的那样,你可以使用cv来重定向它的输出结果到一个日志文件。这功能在命令运行太快而看不到任何有意义的内容时特别有用。 +正如其所承诺的那样,你可以使用cv来重定向它的输出结果到一个日志文件。这功能在命令运行太快而看不到任何有意义的内容时特别有用。 要在日志文件中查看进度,你仅仅需要重定向输出结果,就像下面这样。 @@ -81,7 +82,7 @@ watch是一个用于周期性运行程序并显示输出结果的程序。有时 但是,要获取上述手册页,你必须执行make install来安装cv。 -耶!现在,你的Linux工具箱中又多了个伟大的工具。 +耶!现在,你的Linux工具箱中又多了个伟大的工具。 你学会么?亲自去试试吧~ -------------------------------------------------------------------------------- @@ -89,7 +90,7 @@ via: http://linoxide.com/linux-command/tool-show-command-progress/ 作者:[Allan Mbugua][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From bf5b9619d554c254c9c07ee8bbe37d99a370db3e Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Sun, 25 Jan 2015 13:23:45 +0800 Subject: [PATCH 054/725] translating --- ... to download and install ixgbe driver on Ubuntu or Debian.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md index 238794a019..31219b9ec4 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md +++ b/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md @@ -1,3 +1,5 @@ +Translating----geekpi + Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian ================================================================================ > **Question**: I want to download and install the latest ixgbe driver for my Intel 10 Gigabit Ethernet card. How can I install ixgbe driver on Ubuntu (or Debian)? From 6dcf189a616f19f3e58e25b25c5dd0de1e262074 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Sun, 25 Jan 2015 13:54:58 +0800 Subject: [PATCH 055/725] translated --- ...nstall ixgbe driver on Ubuntu or Debian.md | 146 ------------------ 1 file changed, 146 deletions(-) delete mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md deleted file mode 100644 index 31219b9ec4..0000000000 --- a/sources/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md +++ /dev/null @@ -1,146 +0,0 @@ -Translating----geekpi - -Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian -================================================================================ -> **Question**: I want to download and install the latest ixgbe driver for my Intel 10 Gigabit Ethernet card. How can I install ixgbe driver on Ubuntu (or Debian)? - -Intel's PCI Express 10 Gigabit (10G) network inerface cards (e.g., 82598, 82599, x540) are supported by ixgbe driver. The stock kernel of the modern Linux distributions already comes with ixgbe driver as a loadable module. However, there are cases where you may want to compile and install ixgbe driver on your own. For example, you may want to try the new features of the latest ixgbe driver. Also, the problem of the default ixgbe driver in the stock kernel is that it does not allow you to customize many of its driver parameters. If you want to fully customize ixgbe device driver (e.g., RSS, multi-queue, interrupt throttling, etc), you need to manually compile ixgbe driver from the source. - -Here is how to download and install ixgbe driver on Ubuntu, Debian or their derivatives. - -### Step One: Install Prerequites ### - -As prerequisites, install matching kernel headers and development packages. - - $ sudo apt-get install linux-headers-$(uname -r) - $ sudo apt-get install gcc make - -### Step Two: Compile Ixgbe Driver ### - -Download the source code of the [latest ixgbe driver][1]. - - $ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz - -Compile ixgbe driver as follows. - - $ tar xvfvz ixgbe-3.23.2.tar.gz - $ cd ixgbe-3.23.2/src - $ make - -### Step Three: Check Ixgbe Driver ### - -After compilation, you will see **ixgbe.ko** created in ixgbe-3.23.2/src directory. This is the ixgbe device driver which will be loaded into the kernel. - -Check the information of this kernel module with modinfo command. Note that you need to specify an absolute path to the module (e.g., ./ixgbe.ko or /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko). The output will show the version of ixgbe driver. - - $ modinfo ./ixgbe.ko - ----------- - - filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko - version: 3.23.2 - license: GPL - description: Intel(R) 10 Gigabit PCI Express Network Driver - author: Intel Corporation, - srcversion: 2ADA5E537923E983FA9DAE2 - alias: pci:v00008086d00001560sv*sd*bc*sc*i* - alias: pci:v00008086d00001558sv*sd*bc*sc*i* - alias: pci:v00008086d0000154Asv*sd*bc*sc*i* - alias: pci:v00008086d00001557sv*sd*bc*sc*i* - alias: pci:v00008086d0000154Fsv*sd*bc*sc*i* - alias: pci:v00008086d0000154Dsv*sd*bc*sc*i* - alias: pci:v00008086d00001528sv*sd*bc*sc*i* - alias: pci:v00008086d000010F8sv*sd*bc*sc*i* - alias: pci:v00008086d0000151Csv*sd*bc*sc*i* - alias: pci:v00008086d00001529sv*sd*bc*sc*i* - alias: pci:v00008086d0000152Asv*sd*bc*sc*i* - alias: pci:v00008086d000010F9sv*sd*bc*sc*i* - alias: pci:v00008086d00001514sv*sd*bc*sc*i* - alias: pci:v00008086d00001507sv*sd*bc*sc*i* - alias: pci:v00008086d000010FBsv*sd*bc*sc*i* - alias: pci:v00008086d00001517sv*sd*bc*sc*i* - alias: pci:v00008086d000010FCsv*sd*bc*sc*i* - alias: pci:v00008086d000010F7sv*sd*bc*sc*i* - alias: pci:v00008086d00001508sv*sd*bc*sc*i* - alias: pci:v00008086d000010DBsv*sd*bc*sc*i* - alias: pci:v00008086d000010F4sv*sd*bc*sc*i* - alias: pci:v00008086d000010E1sv*sd*bc*sc*i* - alias: pci:v00008086d000010F1sv*sd*bc*sc*i* - alias: pci:v00008086d000010ECsv*sd*bc*sc*i* - alias: pci:v00008086d000010DDsv*sd*bc*sc*i* - alias: pci:v00008086d0000150Bsv*sd*bc*sc*i* - alias: pci:v00008086d000010C8sv*sd*bc*sc*i* - alias: pci:v00008086d000010C7sv*sd*bc*sc*i* - alias: pci:v00008086d000010C6sv*sd*bc*sc*i* - alias: pci:v00008086d000010B6sv*sd*bc*sc*i* - depends: ptp,dca - vermagic: 3.11.0-19-generic SMP mod_unload modversions - parm: InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int) - parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int) - parm: MQ:Disable or enable Multiple Queues, default 1 (array of int) - parm: DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) - parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) - parm: VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int) - parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int) - parm: VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int) - parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int) - parm: LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int) - parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int) - parm: LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int) - parm: LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int) - parm: LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int) - parm: FdirPballoc:Flow Director packet buffer allocation level: - 1 = 8k hash filters or 2k perfect filters - 2 = 16k hash filters or 4k perfect filters - 3 = 32k hash filters or 8k perfect filters (array of int) - parm: AtrSampleRate:Software ATR Tx packet sample rate (array of int) - parm: FCoE:Disable or enable FCoE Offload, default 1 (array of int) - parm: LRO:Large Receive Offload (0,1), default 1 = on (array of int) - parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int) - -### Step Four: Test Ixgbe Driver ### - -Before testing the new module, you need to remove an old ersion of ixgbe module if it exists in the kernel: - - $ sudo rmmod ixgbe - -Go ahead and insert the newly built ixgbe module into the kernel with insmod command. Make sure to specify an absolute path to the module. - - $ sudo insmod ./ixgbe.ko - -If the above command runs successfully, it will not show any message. - -If you want, you can try passing additional prameter(s). For example, to set the number of RSS queues to 16: - - $ sudo insmod ./ixgbe.ko RSS=16 - -Check out **/var/log/kern.log** to see if ixgbe driver is successfully activated. Look for "Intel(R) 10 Gigabit PCI Express Network Driver" in the log. The ixgbe version should be matched with the output of modinfo shown earlier. - - Sep 18 14:48:52 spongebob kernel: [684717.906254] Intel(R) 10 Gigabit PCI Express Network Driver - version 3.22.3 - -![](https://farm8.staticflickr.com/7583/16056721867_f06e152076_c.jpg) - -### Step Five: Install Ixgbe Driver ### - -Once you verify that a new ixgbe driver is successfully loaded, the last step is to install the driver on your system. - - $ sudo make install - -**ixgbe.ko** will then be installed under /lib/modules//kernel/drivers/net/ethernet/intel/ixgbe. - -From this point on, you can load ixgbe driver with modprobe command as follows. Note that you no longer need to specify an absolute path. - - $ sudo modprobe ixgbe - -If you want ixgbe driver to be loaded automatically upon boot, you can add "ixgbe" to the end of /etc/modules. - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/download-install-ixgbe-driver-ubuntu-debian.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://sourceforge.net/projects/e1000/files/ixgbe%20stable/ \ No newline at end of file From 4c2214f6c2633d96577dcabe8bbdeba451bcb571 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Sun, 25 Jan 2015 13:56:08 +0800 Subject: [PATCH 056/725] translated --- ated]12 - The history of Android.md | 7113 +++++++++++++++++ gihua | 232 + ...nstall ixgbe driver on Ubuntu or Debian.md | 144 + 3 files changed, 7489 insertions(+) create mode 100644 ated]12 - The history of Android.md create mode 100644 gihua create mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md diff --git a/ated]12 - The history of Android.md b/ated]12 - The history of Android.md new file mode 100644 index 0000000000..346158bb9f --- /dev/null +++ b/ated]12 - The history of Android.md @@ -0,0 +1,7113 @@ +commit bf5b9619d554c254c9c07ee8bbe37d99a370db3e +Author: zhengsihua +Date: Sun Jan 25 13:23:45 2015 +0800 + + translating + +commit 68e5ad658a4c3497449c31a7eadbb0516baa76ff +Author: zhengsihua +Date: Sat Jan 24 13:58:59 2015 +0800 + + translated + +commit 126d103bec40f9338a28caf048d87980e7ff81e6 +Author: zhengsihua +Date: Sat Jan 24 13:12:58 2015 +0800 + + translating + +commit 55b5a17d77b048219177e1f237b552265c8735c9 +Merge: b90b0e6 cadf2b8 +Author: geekpi +Date: Sat Jan 24 13:03:24 2015 +0800 + + Merge pull request #2284 from alim0x/master + + [translated]12 - The history of Android.md + +commit cadf2b8e6082cb045322d6e5be11a90507971255 +Author: alim0x +Date: Sat Jan 24 12:34:03 2015 +0800 + + [translated]12 - The history of Android.md + +commit b90b0e6f2ffeeb15b474ef6852be052e0d0e9500 +Author: wxy +Date: Sat Jan 24 12:05:53 2015 +0800 + + PUB:20150106 2015--Open Source Has Won, But It Isn't Finished + + @runningwater + +commit 50d77b9f32e77cbba25eeb2e45e8da67007edfb6 +Merge: 4a3d1c2 289fc1d +Author: Xingyu.Wang +Date: Sat Jan 24 11:07:54 2015 +0800 + + Merge pull request #2283 from H-mudcup/master + + Translated by H-mudcup + +commit 289fc1d826a678fedff1560206892285acc0ebfb +Author: H-mudcup +Date: Fri Jan 23 18:36:05 2015 +0800 + + Create 20140819 Top 4 Linux download managers.md + +commit bf37e3ff9f772207e81c6fc068cdf208c895f087 +Author: H-mudcup +Date: Fri Jan 23 18:32:47 2015 +0800 + + Delete 20140819 Top 4 Linux download managers.md + +commit 9c944371295fcb6a457e83aafe05661aaf478c2b +Merge: fa817df 4a3d1c2 +Author: H-mudcup +Date: Fri Jan 23 18:32:18 2015 +0800 + + Merge pull request #10 from LCTT/master + + 同步2015/1/23 + +commit 4a3d1c216ff31c3a9c3321b8c6c7e8aa16408192 +Author: DeadFire +Date: Fri Jan 23 16:42:05 2015 +0800 + + 20150123-1 选题 + +commit 9af2bba9121ad68f25bda387a5f724455726096b +Merge: b4b4c28 c77b9e2 +Author: Xingyu.Wang +Date: Fri Jan 23 16:20:22 2015 +0800 + + Merge pull request #2280 from Vic020/master + + Translated:20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04 + +commit b4b4c28b2c6f349a3b072b8e75d149b38ca6aba9 +Merge: 97cda34 cbf2f00 +Author: Xingyu.Wang +Date: Fri Jan 23 16:19:45 2015 +0800 + + Merge pull request #2279 from 2q1w2007/master + + 选题 + 格式中建议采用 H3标题,如果嵌套层次多,可增加 H2标题;层次非常多,可以使用 H1,H4。 + +commit 97cda347ce7856d5c47961c0ef406753f8611746 +Merge: 6852399 50ee769 +Author: geekpi +Date: Fri Jan 23 10:35:05 2015 +0800 + + Merge pull request #2282 from geekpi/master + + translated + +commit 50ee769861dc59c053936d466ad6d6e8e0c28713 +Author: zhengsihua +Date: Fri Jan 23 10:34:07 2015 +0800 + + translated + +commit 685239920ac7ac540f3d706414bbcaff333c800e +Merge: fa6a21a 955219b +Author: geekpi +Date: Fri Jan 23 10:00:57 2015 +0800 + + Merge pull request #2281 from geekpi/master + + translating + +commit 955219b1a8180109f20917d4bcb122afe8383be1 +Author: zhengsihua +Date: Fri Jan 23 09:55:35 2015 +0800 + + translating + +commit c77b9e2e2cebef2f195f95d8e2c8137b258ea123 +Author: Vic___ +Date: Fri Jan 23 00:01:05 2015 +0800 + + Moved + +commit 81fb54a565cfe5452c7e03f8667d3a5ea77340db +Author: Vic___ +Date: Fri Jan 23 00:00:02 2015 +0800 + + translated + +commit cbf2f006fb4063cce55ca4e0bdc3e59fb0aa0d27 +Author: 2q1w2007 <2q1w2007@163.com> +Date: Thu Jan 22 23:07:38 2015 +0800 + + 选题 + How are C data types “supported directly by most computers”? + +commit 50c09bde87772124167a544d1062ee55c661ad44 +Merge: d54627b fa6a21a +Author: Junkai <2q1w2007@users.noreply.github.com> +Date: Thu Jan 22 23:02:20 2015 +0800 + + Merge pull request #2 from LCTT/master + + 2015/01/22 + +commit fa6a21a32f211a2533ea17b3bb3aeee287bc40c5 +Author: wxy +Date: Thu Jan 22 21:47:59 2015 +0800 + + PUB:How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS + + @SPccman + +commit 7e2774538792356566132b26dc0c1241707c59e7 +Author: wxy +Date: Thu Jan 22 21:22:49 2015 +0800 + + PUB:20141124 Linux blkid Command to Find Block Devices Details + + @felixonmars + +commit 704555fa869bc59295b3b7f2dfd8bc5403dd5b99 +Author: wxy +Date: Thu Jan 22 21:11:33 2015 +0800 + + PUB:20141120 How to install an Opensource VPN Server on Linux + + @geekpi + +commit 7c7ee6a171373f47c53b08cb1cbb174c2695402d +Author: wxy +Date: Thu Jan 22 21:01:22 2015 +0800 + + PUB:20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10 + + @geekpi + +commit 29e887d2951454e8f8ef77d9fb68cf96e0de83ed +Author: wxy +Date: Thu Jan 22 20:54:46 2015 +0800 + + PUB:20141009 How to convert image audio and video formats on Ubuntu + + @mr-ping + +commit f52763aec00abc33afabb57c5cf06887ce5aad5d +Merge: b9039a4 ae6e08a +Author: Xingyu.Wang +Date: Thu Jan 22 20:45:31 2015 +0800 + + Merge pull request #2278 from Stevearzh/master + + Translating by Stevearzh + +commit ae6e08a3757da9deb6542a843556418df4bd1ae0 +Author: Stevearzh +Date: Thu Jan 22 20:04:55 2015 +0800 + + Translating by Stevearzh + +commit b9039a42d65b5e87e7f91c08d49a8ff8d0381a1e +Author: carolinewuyan <309866211@qq.com> +Date: Thu Jan 22 17:14:43 2015 +0800 + + 已校对 + +commit 68c1b1d6aca07856abfe3e68dcfcac413bb4fd64 +Author: DeadFire +Date: Thu Jan 22 16:48:43 2015 +0800 + + 20150122-2 选题 + +commit a64d6616b4c5ef11593682528386abf99efd8a66 +Merge: 4e1caae 88c2152 +Author: Xingyu.Wang +Date: Thu Jan 22 13:53:46 2015 +0800 + + Merge pull request #2277 from Medusar/master + + Rename How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps to How... + +commit 88c2152c5884ebced13ddcd7b2b3a06482f1fe0d +Author: Medusar <939958749@qq.com> +Date: Thu Jan 22 12:10:50 2015 +0800 + + Rename How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps to How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md + + 命名错误,重新命名 + +commit 4e1caae562f96bbc3f88a3349209c78e44d04829 +Author: DeadFire +Date: Thu Jan 22 10:39:22 2015 +0800 + + 20150122-1 选题 + +commit a2a9ed6eeaeecdc934bb08d52039d73aaba93fee +Merge: d368819 933c579 +Author: Xingyu.Wang +Date: Thu Jan 22 10:38:28 2015 +0800 + + Merge pull request #2276 from Medusar/master + + How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps 翻译完毕 + good job + +commit d368819a59fe09269cebdbb670493ebb9c7b8046 +Author: carolinewuyan <309866211@qq.com> +Date: Thu Jan 22 10:15:59 2015 +0800 + + 已校对 + +commit 933c579852d81f20024416a4047a179ccbe3a148 +Author: Medusar <939958749@qq.com> +Date: Wed Jan 21 23:36:16 2015 +0800 + + Create How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps + +commit 287baade1a07d54bcc2fdcc13af8666331fb9782 +Author: Medusar <939958749@qq.com> +Date: Wed Jan 21 23:29:30 2015 +0800 + + Delete 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md + +commit 8a9bb7c9dd9b275eb4ef0dcbe75c21b7a5cf5c96 +Merge: 041dec3 8254598 +Author: Xingyu.Wang +Date: Wed Jan 21 21:47:09 2015 +0800 + + Merge pull request #2274 from Medusar/master + + Update 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Ste... + 干得漂亮~ + +commit 041dec383262af6053d677e30e60ee749dc2c3b9 +Merge: 16991e9 f8f56a5 +Author: geekpi +Date: Wed Jan 21 21:26:35 2015 +0800 + + Merge pull request #2275 from geekpi/master + + translated + +commit f8f56a5a5be134027114a52d07053e4c52e3153a +Author: zhengsihua +Date: Wed Jan 21 21:25:40 2015 +0800 + + translated + +commit 82545984d3934ade4d1d5c7faa0bf35e0e9c7415 +Author: Medusar <939958749@qq.com> +Date: Wed Jan 21 21:15:58 2015 +0800 + + Update 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md + + start translating + +commit 16991e9f47c0c1416533c96be9b01d821a41c5e0 +Merge: 99cbe50 3469c61 +Author: geekpi +Date: Wed Jan 21 20:39:10 2015 +0800 + + Merge pull request #2273 from geekpi/master + + translating + +commit 3469c614d6bf530b78f812acaefbf52c34b6ec92 +Author: zhengsihua +Date: Wed Jan 21 20:37:30 2015 +0800 + + translating + +commit 99cbe5088a5eeda2188c7eb147da6b16ab5a6749 +Merge: 1ce5287 d54627b +Author: Xingyu.Wang +Date: Wed Jan 21 20:12:08 2015 +0800 + + Merge pull request #2271 from 2q1w2007/master + + 两个选题 + 很好~~ + +commit d54627b5f41ec9ec86ecf348c9aa8338b3554e4c +Merge: 1c9a86b 4885bae +Author: 2q1w2007 <2q1w2007@163.com> +Date: Wed Jan 21 20:09:59 2015 +0800 + + Merge branch 'master' of github.com:2q1w2007/TranslateProject + + Conflicts: + sources/talk/20150121 Did this JavaScript break the console.md + sources/talk/20150121 If a 32-bit integer overflows.md + +commit 1c9a86bf197214b3b0fb9ec92e811b4a59d9a557 +Author: 2q1w2007 <2q1w2007@163.com> +Date: Wed Jan 21 20:03:31 2015 +0800 + + 格式修正 + +commit 4885bae1f7c284ec27cdbfbc827b44b9214b20bd +Author: 2q1w2007 <2q1w2007@163.com> +Date: Wed Jan 21 20:03:31 2015 +0800 + + 格式修正 + +commit 1ce52879ddbb05f398ad22a6f819975fbd3d0122 +Merge: 74bd960 489b22b +Author: Xingyu.Wang +Date: Wed Jan 21 19:57:24 2015 +0800 + + Merge pull request #2272 from mtunique/patch-2 + + Translating Linux FAQs with Answers--How to check disk space on Linux wi... + +commit 74bd9601b6b7ab260cb320c96c76af595fffd1ec +Merge: 55f0d49 a9683a8 +Author: Xingyu.Wang +Date: Wed Jan 21 19:54:33 2015 +0800 + + Merge pull request #2270 from ZhouJ-sh/master + + translated 20150119 3 Ways To Create A Lightweight And Persistent Xub… + +commit 489b22badd6f189969741b530d99e3d9bb807ad9 +Author: Tao Meng +Date: Wed Jan 21 19:50:56 2015 +0800 + + Translating Linux FAQs with Answers--How to check disk space on Linux with df command by mtunique + + Translating Linux FAQs with Answers--How to check disk space on Linux with df command by mtunique + +commit 3f513acb8a34415513fe5db053d8de89ffcbdfba +Author: 2q1w2007 <2q1w2007@163.com> +Date: Wed Jan 21 18:59:46 2015 +0800 + + 。。。 + +commit 3679969319489cd184b9150bf6272c00869fd64f +Author: 2q1w2007 <2q1w2007@163.com> +Date: Wed Jan 21 18:58:45 2015 +0800 + + 选题 + Did this JavaScript break the console? + +commit a2894417c911445cca786083971bc23aaa55706b +Author: 2q1w2007 <2q1w2007@163.com> +Date: Wed Jan 21 18:44:31 2015 +0800 + + 选题 + If a 32-bit integer overflows, can we use a 40-bit structure instead of a 64-bit long one? + +commit a9683a8267858fa2ef06528f500897f3de4a1ea3 +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Jan 21 18:16:51 2015 +0800 + + 修改链接 + +commit 19aa9bc619e1668987695e831f1fd4a99a7903c3 +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Jan 21 18:10:28 2015 +0800 + + translate complete , delete sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md + +commit d91316c19c6668b82cfabf9f89e4ad07c7193202 +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Jan 21 18:09:27 2015 +0800 + + translated 20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md + +commit 5cda43ed6cad1dad66f2cdc5ec590650c0d38f3c +Merge: d3bcd51 55f0d49 +Author: Junkai <2q1w2007@users.noreply.github.com> +Date: Wed Jan 21 17:54:40 2015 +0800 + + Merge pull request #1 from LCTT/master + + 2015/01/21 + +commit 55f0d498d452142ec6eee955a3e5ff05905c341e +Author: DeadFire +Date: Wed Jan 21 16:51:17 2015 +0800 + + 20150121-3 选题 + +commit 4fc1280f935e85a2a830e75faed1dd7b72a83291 +Author: DeadFire +Date: Wed Jan 21 16:30:21 2015 +0800 + + 20150121-2 选题 + +commit 9922596791a0c4222418c2c0edbfe8e947100123 +Author: DeadFire +Date: Wed Jan 21 16:18:33 2015 +0800 + + 20150121-1 选题 + +commit f9028e3ece7d2f387e07de5e28cbc589b5ce8fad +Merge: 2b77206 c4526a6 +Author: runningwater +Date: Tue Jan 20 14:47:47 2015 +0800 + + Merge pull request #2269 from runningwater/master + + 翻译中 by runningwater + +commit c4526a6717a525da0030a0f01e9533d1663c9f57 +Author: runningwater +Date: Tue Jan 20 14:47:16 2015 +0800 + + 翻译中 by runningwater + +commit fba1ddb312e304d8e38e3f3e6ad1695e68af14e3 +Merge: 110ad52 2b77206 +Author: ZhouJ-sh <32321321@qq.com> +Date: Tue Jan 20 11:05:36 2015 +0800 + + Merge pull request #5 from LCTT/master + + Merge from base + +commit 2b772067f3624d4b78915f3472754a6305e60c9b +Merge: 7c1edfc 0aac3e8 +Author: geekpi +Date: Tue Jan 20 11:00:03 2015 +0800 + + Merge pull request #2268 from geekpi/master + + translated + +commit 0aac3e8dafbcda297145ba6625e7cee42d099ced +Author: zhengsihua +Date: Tue Jan 20 10:57:34 2015 +0800 + + translated + +commit 7c1edfc305892eb6ed1f32bc9ccee9f53652cfce +Merge: c09a40b ca2eb1e +Author: runningwater +Date: Tue Jan 20 10:53:30 2015 +0800 + + Merge pull request #2267 from runningwater/master + + 翻译完成 + +commit c09a40bf52ce7d567329f185d12e872fd6f4ff1e +Merge: 1338477 fa817df +Author: runningwater +Date: Tue Jan 20 10:53:09 2015 +0800 + + Merge pull request #2264 from H-mudcup/master + + Translating By H-mudcup + +commit 1338477db8be3a3c754fa4a479ba20d14d1e5cbe +Merge: 37805f4 110ad52 +Author: runningwater +Date: Tue Jan 20 10:52:40 2015 +0800 + + Merge pull request #2263 from ZhouJ-sh/master + + translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md & delete source + +commit 37805f4777e6242b34c5db36a4ed6aa77819cd29 +Merge: 1182827 7423976 +Author: runningwater +Date: Tue Jan 20 10:51:54 2015 +0800 + + Merge pull request #2262 from alim0x/master + + [translaing]the haistory of android - 12 + +commit ca2eb1e0b8a4d06d4522b5c04a6b93fcf43fa9dc +Author: runningwater +Date: Tue Jan 20 10:50:16 2015 +0800 + + 翻译完成 + +commit 11828279c7b3667a1f8fe17b669857557ebc17db +Merge: dab09ae f155e6d +Author: geekpi +Date: Tue Jan 20 09:56:17 2015 +0800 + + Merge pull request #2266 from geekpi/master + + translating + +commit f155e6d8fa0ae090b51e4df91296cca3923dbe45 +Author: zhengsihua +Date: Tue Jan 20 09:55:27 2015 +0800 + + translating + +commit dab09aefe73cc5aa80320c6740702faa7e4990df +Merge: 7248f82 06dedac +Author: geekpi +Date: Tue Jan 20 09:54:23 2015 +0800 + + Merge pull request #2265 from geekpi/master + + translated + +commit 06dedaca1de4aeb018a4d81b5d6cf5046b43e6d6 +Author: zhengsihua +Date: Tue Jan 20 09:53:28 2015 +0800 + + translated + +commit 637598d6a8bcf23692ca448412c14e1867add9cf +Author: zhengsihua +Date: Tue Jan 20 09:43:03 2015 +0800 + + translating + +commit 7248f8228ce3303fc78518d2cc2c538ba4b4614d +Author: DeadFire +Date: Mon Jan 19 22:48:00 2015 +0800 + + 20150119-4 选题 + +commit fa817dfe19628deb9fc32f06c8edc71b844fe52a +Author: H-mudcup +Date: Mon Jan 19 22:47:42 2015 +0800 + + Update 20140819 Top 4 Linux download managers.md + +commit 93a9c1690ac23f6a67c875dbc9eac42486071341 +Merge: 01a0a41 77c1b7b +Author: H-mudcup +Date: Mon Jan 19 22:45:28 2015 +0800 + + Merge pull request #9 from LCTT/master + + 同步2015/1/19 + +commit 77c1b7baf03cedf96e0cf245ab74f7097f255db9 +Author: DeadFire +Date: Mon Jan 19 22:44:19 2015 +0800 + + 20150119-3 选题 + +commit 2d08d1cdd3663bb88c20de5b86c520c50b4dab47 +Author: DeadFire +Date: Mon Jan 19 22:32:09 2015 +0800 + + 20150119-2 选题 + +commit 8dd8c387bd862de9f683fadf99cea96bb38b13c6 +Author: DeadFire +Date: Mon Jan 19 22:22:41 2015 +0800 + + 20150119-1 选题 + +commit 110ad520ff023e1204aa6192bda34821254ef9d8 +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 18:39:31 2015 +0800 + + 调整部分细节 + +commit a75a14f9fa77c5e1f666976a5bfb352fe38495be +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 18:03:58 2015 +0800 + + translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md + +commit 8bae3c1a249e51dd003a2b2ce507fef4ce802874 +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 17:51:07 2015 +0800 + + translate complete. delete sources/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md + +commit f1336ab9e6b9d601737220a06b08c4e90a610408 +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 17:50:28 2015 +0800 + + translating sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md + +commit e0d0557fa4b4945487ae3a4d8363e430bb125b35 +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 16:10:28 2015 +0800 + + translating by zhouj-sh + +commit 79a6d05c27969d5bdf0d8d7139faf65c30b5187e +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 14:36:42 2015 +0800 + + add sources/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md + +commit 814f81b13d9b64295235211ddeab00da9d9d4fa0 +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 13:56:53 2015 +0800 + + delete sources/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md + +commit 74239768b1e788c60e78bc226ea01631d5c42f1b +Author: alim0x +Date: Mon Jan 19 13:45:03 2015 +0800 + + [translaing]the haistory of android - 12 + +commit b84066519448846da033ddb2ddb5450e91e23aeb +Merge: 0bed6db b56f724 +Author: joeren +Date: Mon Jan 19 13:43:06 2015 +0800 + + Merge pull request #2261 from ly0/patch-1 + + [Translating]What is good audio editing software on Linux + +commit b56f724ca227d0ba74c86283513b746ef89c19f4 +Author: latyas(懒) +Date: Mon Jan 19 13:42:23 2015 +0800 + + [Translating]What is good audio editing software on Linux + +commit 0c4ad0bc8e79e28c1f7f8ccf805708829baa8ea9 +Author: ZhouJ-sh <32321321@qq.com> +Date: Mon Jan 19 12:05:39 2015 +0800 + + translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md + +commit 0bed6db0157ef60fe4873130f79106558b9a48be +Author: wxy +Date: Mon Jan 19 10:42:09 2015 +0800 + + PUB:20150104 Docker Image Insecurity + + @tinyeyeser + +commit 7e84dad563b118543cb724b2adffdd471b1dfd2d +Author: wxy +Date: Mon Jan 19 10:22:17 2015 +0800 + + PUB:20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem + + @geekpi + +commit a01b43d76a35dc3584bbfc268ebb5d64101c00aa +Author: wxy +Date: Mon Jan 19 10:09:17 2015 +0800 + + PUB:20141120 How to configure and secure your Postfix email server + + @GOLinux + +commit a881635bda06eae899f39ffebdd452db3077bf5f +Author: wxy +Date: Sun Jan 18 23:33:24 2015 +0800 + + PUB:20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X + + @runningwater + +commit 2432f8ac8c5add7f23e13a846cd7157872763c45 +Author: wxy +Date: Sun Jan 18 23:16:40 2015 +0800 + + PUB:20141204 How To Delete Oracle 11g Database Manually + + @geekpi + +commit 61a511d27f039dc97cdfa2be05d4f4808f3b1d7c +Author: wxy +Date: Sun Jan 18 23:08:36 2015 +0800 + + PUB:20141127 Five Magnificent Linux Music Streaming Clients + + @Stevearzh + +commit d952637700af776b9ed1687aa3c6d782b7cd579e +Author: wxy +Date: Sun Jan 18 22:57:21 2015 +0800 + + PUB:20141224 Calife--A lightweight alternative to sudo + + @GOLinux + +commit 0e5f7070dec047ef4ce04d5a0dadd776383dc683 +Merge: 1023fcc 208bdf9 +Author: Xingyu.Wang +Date: Sun Jan 18 22:39:33 2015 +0800 + + Merge pull request #2259 from SPccman/master + + How to Manage Network using nmcli Tool in RedHat / CentOS 7.x + 下回文件名前面的日期不要去掉哦~ + +commit 208bdf9f160225edb96062352f7fe826e3c42ac9 +Author: DoubleC <450760206@qq.com> +Date: Sun Jan 18 21:00:20 2015 +0800 + + 翻译完成 + + 翻译完成 + +commit 86f317ce86abb9ffa8b4977f2606a081e95b315d +Author: DoubleC <450760206@qq.com> +Date: Sun Jan 18 20:49:03 2015 +0800 + + delete source file + + delete source file + +commit 58620a3f1867fe11bf150d09bd3905693f4e2900 +Merge: 6e31b7e 1023fcc +Author: DoubleC <450760206@qq.com> +Date: Sun Jan 18 20:44:31 2015 +0800 + + Merge pull request #14 from LCTT/master + + update + +commit 1023fcc74db9a67fb49c05db1e03fe46d0ae35d7 +Merge: a76be45 923230a +Author: geekpi +Date: Sun Jan 18 15:29:18 2015 +0800 + + Merge pull request #2258 from geekpi/master + + translated + +commit 923230af5674e243a2d2168d5c6634c5c17db3c5 +Author: zhengsihua +Date: Sun Jan 18 15:27:49 2015 +0800 + + translated + +commit a76be45006eda702f23a0667dd243cac1262d53b +Merge: a7d2226 d3017c1 +Author: geekpi +Date: Sun Jan 18 15:24:59 2015 +0800 + + Merge pull request #2257 from geekpi/master + + translated + +commit d3017c1855d2b0fae4ecb8bae59243c442843530 +Merge: 45126b5 a7d2226 +Author: zhengsihua +Date: Sun Jan 18 15:20:49 2015 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit a7d222693082f1e586c6189398d1bcb1a38f8f81 +Author: geekpi +Date: Sun Jan 18 14:42:22 2015 +0800 + + Update 20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md + +commit 46b43e0ba81c5262d58afb42b4b2aa7d8385e4a1 +Author: wxy +Date: Sun Jan 18 12:59:52 2015 +0800 + + PUB:20140701 Easy File Comparisons With These Great Free Diff Tools + + @H-mudcup + +commit 1610b8f56b0f5ef07e25681a73ad32c9ea00f52b +Author: wxy +Date: Sun Jan 18 12:15:46 2015 +0800 + + 清除过期文章 + +commit 8e154021a807b16cabbcf9bc015899d7b3fa1421 +Merge: 275ab86 279ea5f +Author: Xingyu.Wang +Date: Sun Jan 18 12:08:18 2015 +0800 + + Merge pull request #2256 from Vic020/patch-27 + + Vic020 + +commit 279ea5f48922cfad3caaeaae719b50a4b9057cac +Author: Vic___ +Date: Sat Jan 17 22:44:53 2015 +0800 + + Vic020 + +commit 275ab86f82e3082f2f288dd312eef9dff35baa27 +Merge: 4fc4bf9 efc8353 +Author: Xingyu.Wang +Date: Sat Jan 17 22:20:50 2015 +0800 + + Merge pull request #2251 from ZhouJ-sh/master + + 选题 20150116 A Step By Step Guide To Installing Xubuntu Linux.md + +commit 45126b50e27e224f0b4a04865c14c4bdc3c84c70 +Author: zhengsihua +Date: Sat Jan 17 14:39:14 2015 +0800 + + translated + +commit 4fc4bf9a34b606450158714ea64f95710dca0bea +Merge: c4991f8 4d9c0d7 +Author: geekpi +Date: Sat Jan 17 14:27:39 2015 +0800 + + Merge pull request #2255 from geekpi/master + + translating + +commit 4d9c0d7c9994a7663c87c8a165ed1dd89339f5f4 +Author: zhengsihua +Date: Sat Jan 17 14:26:02 2015 +0800 + + translating + +commit c4991f839164ffa5e4ad59ca794255d780d8a933 +Merge: 0bdc527 1b6d810 +Author: geekpi +Date: Sat Jan 17 14:21:04 2015 +0800 + + Merge pull request #2254 from SPccman/patch-14 + + SPccman translating + +commit 1b6d81032f650e86354b8c20aa84af3afc5918df +Author: DoubleC <450760206@qq.com> +Date: Sat Jan 17 11:14:26 2015 +0800 + + SPccman translating + + 申领文章 + +commit 0bdc52765db5225d49f26c334af7c6a7842f8f3e +Merge: 0d6eba4 474941f +Author: geekpi +Date: Fri Jan 16 21:21:20 2015 +0800 + + Merge pull request #2253 from geekpi/master + + translating + +commit 474941fb36cc81b21c9aee9ee40b705a189d935e +Author: zhengsihua +Date: Fri Jan 16 21:20:02 2015 +0800 + + translating + +commit 0d6eba4dabb9c23edadac78b1df52a763244e4cc +Merge: 125d5e4 c9b90bf +Author: geekpi +Date: Fri Jan 16 21:10:13 2015 +0800 + + Merge pull request #2252 from geekpi/master + + translating + +commit c9b90bfdf16fc793ff45e05416fcf1d98b3b0096 +Author: zhengsihua +Date: Fri Jan 16 21:09:31 2015 +0800 + + translating + +commit efc83533565aef0b678a44f1cd5c64822567535e +Author: ZhouJ-sh <32321321@qq.com> +Date: Fri Jan 16 16:58:18 2015 +0800 + + 选题 20150116 A Step By Step Guide To Installing Xubuntu Linux.md + +commit 125d5e4481d54242560df88db01e188fcdd700ba +Author: wxy +Date: Fri Jan 16 16:51:03 2015 +0800 + + PUB:20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server + + @liaoishere + +commit e5f83b245af974340cd1337043f2bfdf474735c3 +Author: wxy +Date: Fri Jan 16 16:22:30 2015 +0800 + + PUB:20141119 Smartctl--Monitoring & Analysis tool for Hard drive + + @GOLinux + +commit 8317c05e54f688d8eb1c6517506a69fbd99738ad +Author: wxy +Date: Fri Jan 16 15:28:06 2015 +0800 + + 补充删除 + + @ZhouJ-sh + +commit 71de35194d0a09652f9af2492fa4259eb90ad8b0 +Merge: e7664c4 1c661ba +Author: Xingyu.Wang +Date: Fri Jan 16 15:23:09 2015 +0800 + + Merge pull request #2248 from ZhouJ-sh/master + + 选题&翻译 20150115 How To Run Linux Applications From The Terminal In Background Mode.md + + 您好,非常感谢您的翻译和选题。有一点小问题,请您下次稍微注意下: + 您这个翻译,是一次性提交了选题和译文,为了保持原文参考,您没有删除原文,但是这样您的原文就没人删除了。 + 所以,建议您,选题单独一个 PR,翻译的译文(包括删除选题的原文)再来一个 PR,并拉开时间差比较好。 + + 此外,您这里把上一个翻译的原文给删除了,其实应该在上次提交译文时候删除——这个也是我疏忽了,我当时应该给补充删除的。 + 这次的这个 PR 的原文,我稍后会帮您删除。 + + 再次,感谢您的参与和奉献~ + +commit e7664c48501fbbc6ba71385c15745d60239b7026 +Merge: d751ace e84846c +Author: geekpi +Date: Fri Jan 16 11:47:10 2015 +0800 + + Merge pull request #2250 from geekpi/master + + translated + +commit e84846cf7b1eef7028fb5330650bc94565b9382d +Author: zhengsihua +Date: Fri Jan 16 11:45:10 2015 +0800 + + translated + +commit d751ace8baabd7be1740a3b4334f0bf709570e56 +Merge: 0e24355 a1d3bd8 +Author: geekpi +Date: Fri Jan 16 10:10:43 2015 +0800 + + Merge pull request #2249 from geekpi/master + + translating + +commit a1d3bd813f5aedb9eab5e3f5427ebb0f38700358 +Author: zhengsihua +Date: Fri Jan 16 10:09:49 2015 +0800 + + translating + +commit 0e2435557d47ab8d7449bf4b4a19afe02e2ccc8c +Author: DeadFire +Date: Thu Jan 15 23:24:02 2015 +0800 + + 20150115-5 更新前面-3过长的文件名 + +commit 585da02c61dcdb83345110ae2f181f1240536fb6 +Author: DeadFire +Date: Thu Jan 15 23:21:52 2015 +0800 + + 20150115-4 更新前面文件名后缀。为何-3选题显示不了? + +commit 0a1a2a86d11cc620cc88574c7ef8b8b400882610 +Author: wxy +Date: Thu Jan 15 23:14:01 2015 +0800 + + PUB:Quick systemd-nspawn guide + + @SPccman 翻译的不错 + +commit 38178327ae8a2aa6705257358070d45999f4eb19 +Author: DeadFire +Date: Thu Jan 15 23:11:41 2015 +0800 + + 20150115-3 选题 + +commit 85feb3e7d5facfa3bb3fb712274b5813678bcec6 +Author: wxy +Date: Thu Jan 15 22:47:39 2015 +0800 + + PUB:20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x + + @ZTinoZ + +commit 476e61555682f5ae304239cdb351cbe8dd5bea36 +Author: wxy +Date: Thu Jan 15 22:31:18 2015 +0800 + + PUB:20141224 Linux FAQs with Answers--How to install 7zip on Linux + + @runningwater + +commit 7959c6367d4b491f5ebfa1c31654cc0ccae23a9f +Author: wxy +Date: Thu Jan 15 22:31:02 2015 +0800 + + PUB:20141118 How to boot on an ISO image from Grub + + @GOLinux + +commit ff129b92f9be3eae1ba9bd71bcf84c7c15935d04 +Author: DeadFire +Date: Thu Jan 15 22:26:14 2015 +0800 + + 20150115-2 选题 + +commit d7d9009a1a9b3aab54573b7b09408c766a072a3c +Author: DeadFire +Date: Thu Jan 15 22:08:23 2015 +0800 + + 20150115-1 选题 + +commit 1c661ba3c22ed1b372f547c91990cf8f2dbb37d9 +Author: ZhouJ-sh <32321321@qq.com> +Date: Thu Jan 15 16:05:12 2015 +0800 + + 已出版,删除原文 + +commit 736eaa9596317e6ab526c07d46d9eb70cc0353ad +Author: ZhouJ-sh <32321321@qq.com> +Date: Thu Jan 15 15:46:39 2015 +0800 + + 修改格式错误 + +commit ebf0c22f67fe7cdd325b2ef0a37159b28470c0b9 +Author: ZhouJ-sh <32321321@qq.com> +Date: Thu Jan 15 15:42:50 2015 +0800 + + 翻译 20150115 How To Run Linux Applications From The Terminal In Background Mode.md + +commit 47b4c22a570d836cd1393f3212018ad5d6dd9fde +Author: ZhouJ-sh <32321321@qq.com> +Date: Thu Jan 15 15:42:04 2015 +0800 + + 选题 20150115 How To Run Linux Programs From The Terminal In Background Mode + +commit 46aa7dccbb4c15109c330579ec2e85185fcb65f5 +Merge: 3074417 df75566 +Author: ZhouJ-sh <32321321@qq.com> +Date: Thu Jan 15 11:54:12 2015 +0800 + + Merge pull request #4 from LCTT/master + + Merge from base + +commit df75566eaf80f5e9649245c11eb609c162bdcaaf +Merge: ce45b34 3b0362d +Author: geekpi +Date: Thu Jan 15 10:08:24 2015 +0800 + + Merge pull request #2247 from geekpi/master + + translated + +commit 3b0362d7042c4b18b7459f72afb5b7897c1fa331 +Author: zhengsihua +Date: Thu Jan 15 10:07:42 2015 +0800 + + translated + +commit ce45b341542dd9fa1a07f0b2245748d0b7e2dcfc +Merge: 33250c4 24ce934 +Author: geekpi +Date: Thu Jan 15 09:47:45 2015 +0800 + + Merge pull request #2246 from geekpi/master + + translating + +commit 24ce934e9e8266b0c7fc232cf15095078eccdd8b +Author: zhengsihua +Date: Thu Jan 15 09:47:00 2015 +0800 + + translating + +commit 33250c43af33a8beffcbb7d0cfbadc8e2b2d0282 +Merge: 568a923 fe4a3f1 +Author: geekpi +Date: Thu Jan 15 09:45:40 2015 +0800 + + Merge pull request #2245 from geekpi/master + + translated + +commit fe4a3f1b052d4424982c012f33e709fbe03602f3 +Author: zhengsihua +Date: Thu Jan 15 09:44:59 2015 +0800 + + translated + +commit 568a9237c8afc2ed6627cc6809810b062cd8efb5 +Merge: 8ec8782 449e095 +Author: geekpi +Date: Thu Jan 15 09:32:47 2015 +0800 + + Merge pull request #2244 from geekpi/master + + translating + +commit 449e095f1a9e3d83dd0680cf27bda51db1733e28 +Author: zhengsihua +Date: Thu Jan 15 09:31:29 2015 +0800 + + translating + +commit 8ec87824af266f95c5992d0cc4281d9ac47c580b +Merge: 9c33a4a 63d09ac +Author: geekpi +Date: Thu Jan 15 09:29:41 2015 +0800 + + Merge pull request #2243 from geekpi/master + + translated + +commit 63d09acaf0aecae25cb9746fa010aaa757c77e29 +Author: zhengsihua +Date: Thu Jan 15 09:28:29 2015 +0800 + + translated + +commit 13b29eddae52e3ab264fc4cf8b015beb17c7e899 +Author: zhengsihua +Date: Thu Jan 15 09:27:25 2015 +0800 + + translated + +commit 9c33a4a75d7ccd3d1755b7f0fcb366f27f613b72 +Merge: e0b61b5 d3de17c +Author: geekpi +Date: Thu Jan 15 09:09:02 2015 +0800 + + Merge pull request #2242 from geekpi/master + + translating + +commit d3de17c1c683c527eebdaa0f3e711efddb55dc38 +Author: zhengsihua +Date: Thu Jan 15 09:07:36 2015 +0800 + + translating + +commit e0b61b555a77eb137f776b2af3a18d5d76a1cc2f +Author: wxy +Date: Wed Jan 14 22:57:42 2015 +0800 + + PUB:20141112 How to Debug CPU Regressions Using Flame Graphs + + @coloka 好专业的文章·~ + +commit 1f234cad69e1c1afb009c6a0a7b72e3e7e4eaf46 +Author: DeadFire +Date: Wed Jan 14 22:43:16 2015 +0800 + + 20150114-3 选题 + +commit dcbacad5cf47dcdb36e252a509d6c6c2be4048f9 +Author: DeadFire +Date: Wed Jan 14 22:34:53 2015 +0800 + + 20150114-2 选题 + +commit 84a61c70ff887e54906d84e1d57833d53cc28c98 +Author: wxy +Date: Wed Jan 14 22:34:33 2015 +0800 + + PUB:20141115 What are some obscure but useful Vim commands + + @wangjiezhe 译者注加的非常棒! + +commit 735b0d58e5f1b99a4f77debfa90f0a4c2aa5c0db +Author: DeadFire +Date: Wed Jan 14 22:18:49 2015 +0800 + + 20150114-1 选题 + +commit 03d18259520456c08d2ee72b3fd42d8ec13ac5a3 +Author: wxy +Date: Wed Jan 14 21:42:54 2015 +0800 + + PUB:20141211 NetHack + + @Stevearzh 翻译的很不错!游戏也很给力! + +commit 60cfb46909cc8e962163d5bfc0f60aaf75a4a60e +Author: wxy +Date: Wed Jan 14 21:03:28 2015 +0800 + + 该文已有一样的发布了 + + 所以不发布了。 + +commit 6b0663b4fad108e3a6b15ceca4a4817a1435c9da +Author: wxy +Date: Wed Jan 14 21:00:50 2015 +0800 + + PUB:20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu + + @zhouj-sh + +commit c0851408e476a013e233f5f23d3c4dff944b4c42 +Merge: fd7ef3b e043349 +Author: Xingyu.Wang +Date: Wed Jan 14 20:11:28 2015 +0800 + + Merge pull request #2241 from mr-ping/master + + translated by ping + +commit e0433490251776767d7422f51524bd0cbabe6059 +Author: Ping +Date: Wed Jan 14 14:37:27 2015 +0800 + + translated by ping + +commit fd7ef3bc8f6215c69acbefa89261a541cc66b210 +Author: wxy +Date: Wed Jan 14 14:11:38 2015 +0800 + + PUB:20141027 ntpq -p output + + @liaoishere 这篇好专业啊,翻译的很不错! + +commit 34182d3ae5bf0fcecf5157076704b0c5187bdce1 +Author: wxy +Date: Wed Jan 14 13:41:15 2015 +0800 + + PUB:20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu + + @Vic020 + +commit c0c13b1452365a8c73b6509ff9890586ea381929 +Merge: 42d8398 b59c18c +Author: joeren +Date: Wed Jan 14 10:26:15 2015 +0800 + + Merge pull request #2240 from GOLinux/master + + [Translated]20150106 Managing Linux server configs with the SaltStack.md + +commit b59c18cbfc1269109b3600a8285ec852d44a52e8 +Author: GOLinux +Date: Wed Jan 14 10:24:56 2015 +0800 + + [Translated]20150106 Managing Linux server configs with the SaltStack.md + +commit 42d83980ab03cd446c7d1063c05f49a92bbe31eb +Merge: de44a41 bf6fbe0 +Author: joeren +Date: Wed Jan 14 08:53:47 2015 +0800 + + Merge pull request #2239 from GOLinux/master + + [Translating] 20150106 Managing Linux server configs with the SaltStack.md + +commit bf6fbe01792ce408e3f56e2497b3560fd5461161 +Author: joeren +Date: Wed Jan 14 08:52:41 2015 +0800 + + Update 20150106 Managing Linux server configs with the SaltStack.md + +commit 926f32990429b01bcb5f9326a1ba30484ad8ec12 +Merge: a330de1 de44a41 +Author: joeren +Date: Wed Jan 14 08:50:42 2015 +0800 + + Merge pull request #25 from LCTT/master + + Update Repo + +commit de44a418fa88660941932f66a740879b72c6aea1 +Merge: 543ce85 bd1d995 +Author: joeren +Date: Wed Jan 14 08:49:38 2015 +0800 + + Merge pull request #2238 from mr-ping/master + + [translating]20141009 How to convert image audio and video formats on Ubuntu + +commit bd1d9952167cabd2a4141b70ca590dbe54cf4259 +Merge: e6e93f5 543ce85 +Author: Ping +Date: Wed Jan 14 07:53:01 2015 +0800 + + Merge branch 'master' of github.com:LCTT/TranslateProject into newbranch + +commit e6e93f56b1a7c2253686078fbd5d6c9025ef2d8a +Author: Ping +Date: Wed Jan 14 07:51:53 2015 +0800 + + Translating + +commit 543ce858290e062a755739b17d29a86bec1a4d9b +Author: wxy +Date: Tue Jan 13 22:19:21 2015 +0800 + + PUB:20141226 The Good The Bad And The Ugly Of Linux In 2014 + + @H-mudcup + +commit 71e8d589ccdee219afe87a61bbd0583d09e864bc +Author: wxy +Date: Tue Jan 13 22:01:09 2015 +0800 + + PUB:20140929 What Linux Users Should Know About Open Hardware + + @zpl1025 + +commit 9886fdd41521b85eb3915e84c0ddee58f854fa25 +Author: wxy +Date: Tue Jan 13 20:30:17 2015 +0800 + + PUB:20140928 What is a good subtitle editor on Linux + + @barney-ro + +commit 59a96f897169497efeb57452cb4aacf83fa23582 +Author: wxy +Date: Tue Jan 13 20:22:59 2015 +0800 + + PUB:20141125 Four ways Linux is headed for no-downtime kernel patching + + @coloka + +commit f3196a73ff7b8299d80c00a2c8507c50e0515463 +Author: wxy +Date: Tue Jan 13 20:18:30 2015 +0800 + + 过期,未发布 + + @kingname ,这篇已经远超新闻期限,所以没有发布。抱歉。 + +commit e1cca21879783bb58327368c11f744a51ed3887e +Author: tinyeyeser +Date: Tue Jan 13 15:27:41 2015 +0800 + + 已校对 by小眼儿 + +commit 34219f472beffe97fcd002af3260c2156a37cdf7 +Author: tinyeyeser +Date: Tue Jan 13 15:25:58 2015 +0800 + + 已校对 by小眼儿 + +commit a76e2d7405c677332abe0496425648b9c3ef08af +Author: carolinewuyan <309866211@qq.com> +Date: Tue Jan 13 14:06:57 2015 +0800 + + 已校对 + +commit d1c1f8794ac89086c17b9e43a2d7fd867032db35 +Merge: c3cb2a5 6dcb07d +Author: geekpi +Date: Tue Jan 13 11:59:21 2015 +0800 + + Merge pull request #2237 from geekpi/master + + translated + +commit 6dcb07d9209b867b8e73ded0ef15e3fe7f216a73 +Author: zhengsihua +Date: Tue Jan 13 11:57:38 2015 +0800 + + translated + +commit c3cb2a5dc57b7ae84f206845f8b576eec806f265 +Merge: fed4f09 4b5c782 +Author: geekpi +Date: Tue Jan 13 11:28:47 2015 +0800 + + Merge pull request #2236 from geekpi/master + + translating + +commit 4b5c782737d159ad6694bdbc77b7629f8f658ef3 +Author: zhengsihua +Date: Tue Jan 13 11:27:50 2015 +0800 + + translating + +commit a330de140d606e0c7b316e42d59f384a56e81525 +Merge: ff7a2b0 fed4f09 +Author: joeren +Date: Tue Jan 13 08:20:49 2015 +0800 + + Merge pull request #24 from LCTT/master + + Update Repo + +commit fed4f0962c7a7e6e0c9cf644faa7705e9f1c111c +Merge: baa5806 906b925 +Author: geekpi +Date: Mon Jan 12 22:22:38 2015 +0800 + + Merge pull request #2235 from geekpi/master + + translated + +commit 906b9250f68b24cede6a0ef1c15d73e6f149e301 +Author: zhengsihua +Date: Mon Jan 12 22:21:29 2015 +0800 + + translated + +commit baa58061afeee738e990a0b4a4bc155d11196ba5 +Merge: e4ab9d2 fa37f1d +Author: geekpi +Date: Mon Jan 12 21:31:42 2015 +0800 + + Merge pull request #2234 from geekpi/master + + translating + +commit fa37f1d36d87feac22d7cf7d329c89c4bb337271 +Author: zhengsihua +Date: Mon Jan 12 21:28:33 2015 +0800 + + translating + +commit e4ab9d2c783c25c1823da7c78fb49b1b66c16f7c +Author: DeadFire +Date: Mon Jan 12 16:28:48 2015 +0800 + + 20150112-5 选题 + +commit 084da04255f655f28e59880c705bfec6f061d7a7 +Author: DeadFire +Date: Mon Jan 12 16:16:14 2015 +0800 + + 20150112-4 选题 + +commit 25d2d99051e2c5d7d5dc4cf32b3ecf73573e2923 +Author: wxy +Date: Mon Jan 12 15:57:42 2015 +0800 + + PUB:20141108 When hackers grow old + + @Stevearzh + +commit be147eb7fe0cb9e50940aa4b49618a280245db3e +Author: tinyeyeser +Date: Mon Jan 12 15:08:12 2015 +0800 + + 已校对 by小眼儿 + + 原文真的很硬很难!译者已经翻译的很不错了~ 只是某些语句稍有逻辑上的语义错误。 + 我硬着头皮死啃半天,已尽量校对改正。 + +commit a4c26041aae6254ee0d68d35386bf867788b5e56 +Merge: 83f4ddf a66e60e +Author: joeren +Date: Mon Jan 12 13:43:04 2015 +0800 + + Merge pull request #2233 from kingname/patch-3 + + Delete 20141219 Git 2.2.1 Released To Fix Critical Security Issue.md + +commit 83f4ddfc142743e401cbeb5d8b2f73337f9e71e5 +Merge: 9d07f03 43154bb +Author: joeren +Date: Mon Jan 12 13:42:53 2015 +0800 + + Merge pull request #2232 from kingname/patch-2 + + Git 发布2.2.1版,修复严重安全问题 + +commit a66e60edaa77feb4feaa829983c6cd504912281d +Author: kingname +Date: Mon Jan 12 13:35:01 2015 +0800 + + Delete 20141219 Git 2.2.1 Released To Fix Critical Security Issue.md + +commit 43154bbb52f9557f840fecfe5fd25f9b3a70321b +Author: kingname +Date: Mon Jan 12 13:33:14 2015 +0800 + + Git 发布2.2.1版,修复严重安全问题 + +commit 9d07f03b9a71640b5adcc5cfca4ab7b303a0e8d9 +Merge: 33564c2 c1602f7 +Author: Xingyu.Wang +Date: Mon Jan 12 13:30:23 2015 +0800 + + Merge pull request #2231 from kingname/patch-1 + + Translating by kingname + +commit 33564c2a24d5e7f35e230b13d239e0ae4b900142 +Author: DeadFire +Date: Mon Jan 12 13:28:37 2015 +0800 + + 20150112-3 选题 + +commit c1602f7bf85928b05a4cf416092196f4938d27ae +Author: kingname +Date: Mon Jan 12 13:06:55 2015 +0800 + + Translating by kingname + +commit 841036a33cad9b4583230a9d3531009153f8fb6d +Author: DeadFire +Date: Mon Jan 12 11:48:07 2015 +0800 + + 20150112-2 选题 + +commit a2b404a7114eadbb3ff8f8a454c4b54ca923db9c +Author: DeadFire +Date: Mon Jan 12 11:25:39 2015 +0800 + + 20150112-1 选题 + +commit 3fd5e8c64d4125c63919df9c8cd5905197b66da7 +Author: tinyeyeser +Date: Mon Jan 12 11:15:33 2015 +0800 + + 已校对 by小眼儿 + +commit 9f93f9c428c575afc3c7f749d2b93297666c22a1 +Merge: 706954d 1897f32 +Author: runningwater +Date: Mon Jan 12 10:54:02 2015 +0800 + + Merge pull request #2230 from ZTinoZ/master + + Translating by ZTinoZ + +commit 1897f32f1f26b60ce05a793837c2afe7670d378a +Author: ZTinoZ +Date: Mon Jan 12 10:37:45 2015 +0800 + + Translating by ZTinoZ + +commit 3751162fe320fc9593cec8fcb4bdc730e00a150c +Merge: aff39ed 706954d +Author: ZTinoZ +Date: Mon Jan 12 09:21:04 2015 +0800 + + Merge pull request #6 from LCTT/master + + Update the repository + +commit 01a0a41f573d44a10f126ea9f46170d2e001c185 +Merge: 8aa5fbd 706954d +Author: H-mudcup +Date: Mon Jan 12 07:29:24 2015 +0800 + + Merge pull request #8 from LCTT/master + + 同步2015/1/12 + +commit 706954dc8bc544116e9b379e1f2e37c5c2d5beff +Author: wxy +Date: Mon Jan 12 00:11:21 2015 +0800 + + PUB:20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly + + @barney-ro + +commit 5c464d67b5065e6de76d90cef23a3d4d2728bd0c +Author: runningwater +Date: Sun Jan 11 22:31:53 2015 +0800 + + 翻译中 by runningwater + +commit d4d5127026f488a9ba82e2996bd3daccf716fd64 +Author: wxy +Date: Sun Jan 11 19:45:59 2015 +0800 + + 补充删除 + + @H-mudcup + +commit 567016231eff53d2193d456870fb7a642ebc85ce +Merge: c4c3ac6 2743887 +Author: Xingyu.Wang +Date: Sun Jan 11 19:45:29 2015 +0800 + + Merge pull request #2229 from disylee/patch-1 + + Update 20150104 How to debug a C or C++ program with Nemiver debugger.md + +commit c4c3ac64b7b06e7c0e173bc12937c2a8cfbc4974 +Merge: 17e6f0a 8aa5fbd +Author: Xingyu.Wang +Date: Sun Jan 11 19:44:46 2015 +0800 + + Merge pull request #2228 from H-mudcup/master + + [Translated] Easy File Comparisons With These Great Free Diff Tools.md + 忘记删除原文了,这次我替你删除了吧~~ + +commit 2743887a274c1c4b22e69840979881e904a34d7e +Author: disylee +Date: Sun Jan 11 14:20:31 2015 +0800 + + Update 20150104 How to debug a C or C++ program with Nemiver debugger.md + + disylee + +commit 8aa5fbd9eebd00092a8e6ce2cdb683b846e2cb1d +Author: H-mudcup +Date: Sun Jan 11 11:55:37 2015 +0800 + + Create 20140701 Easy File Comparisons With These Great Free Diff Tools.md + +commit 1da6d877ce7cdc636773f017e69d14f4728ad9e8 +Merge: bab7c60 17e6f0a +Author: H-mudcup +Date: Sun Jan 11 11:47:09 2015 +0800 + + Merge pull request #7 from LCTT/master + + 同步2015/1/11 + +commit 17e6f0a763677207825c43f1550351ae767841ed +Merge: a755aa8 75d72b2 +Author: geekpi +Date: Sun Jan 11 11:15:35 2015 +0800 + + Merge pull request #2227 from geekpi/master + + translated + +commit 75d72b252bb612a033fcd8886006e69cc809832b +Author: zhengsihua +Date: Sun Jan 11 11:13:08 2015 +0800 + + translated + +commit a755aa873972fe7badb240ec4912ddc342791c43 +Merge: 3ee3fd1 f1d8732 +Author: geekpi +Date: Sun Jan 11 10:19:31 2015 +0800 + + Merge pull request #2226 from geekpi/master + + translating + +commit f1d8732a27eab2ba86bdda588d57a012170cdbe1 +Author: zhengsihua +Date: Sun Jan 11 10:18:16 2015 +0800 + + translating + +commit 3ee3fd1d1e2060131bdd6d1cc88b77224899b1ed +Merge: 4b19d23 ea4e2b4 +Author: geekpi +Date: Sat Jan 10 11:49:36 2015 +0800 + + Merge pull request #2225 from geekpi/master + + translated + +commit ea4e2b4d84a1c5f39531a740dbb267f677eaeddd +Author: zhengsihua +Date: Sat Jan 10 11:48:04 2015 +0800 + + translated + +commit 4b19d2371c7ae940aab60491e71f5701ff359c18 +Merge: cafe6c2 c552514 +Author: geekpi +Date: Sat Jan 10 11:19:19 2015 +0800 + + Merge pull request #2224 from geekpi/master + + translating + +commit c552514a3bff82c23fa3e5deaed6eda0d5cdbdf0 +Author: zhengsihua +Date: Sat Jan 10 11:18:39 2015 +0800 + + translating + +commit cafe6c2434a9af8b7f2780da5534b0eed8b4ad8e +Merge: 0deaef8 fd1beb5 +Author: geekpi +Date: Fri Jan 9 21:28:23 2015 +0800 + + Merge pull request #2223 from geekpi/master + + translated + +commit fd1beb516ebefbec2df49c615b19941eb032ece6 +Author: zhengsihua +Date: Fri Jan 9 21:27:45 2015 +0800 + + translated + +commit 0deaef86375677123a9d12c7a93fab49a2a31185 +Merge: 403c9a8 9a926e4 +Author: geekpi +Date: Fri Jan 9 20:55:53 2015 +0800 + + Merge pull request #2222 from geekpi/master + + translating + +commit 9a926e435a1463a006d7db5936b3b785405038b6 +Author: zhengsihua +Date: Fri Jan 9 20:54:17 2015 +0800 + + translating + +commit 403c9a8ec460040914eb444f3d20fc9c277e71ad +Merge: c516ab1 47acced +Author: runningwater +Date: Fri Jan 9 18:44:36 2015 +0800 + + Merge pull request #2221 from runningwater/master + + 翻译完成 + +commit 47acced1a2928abc7f260a21365ccc1354cc7ba5 +Author: runningwater +Date: Fri Jan 9 18:43:49 2015 +0800 + + 翻译完成 + +commit c516ab10b54aece8aa48461f1338fb6c12a2b9c3 +Merge: 7609f46 516c0fc +Author: tinyeyeser +Date: Fri Jan 9 15:39:20 2015 +0800 + + Merge pull request #2220 from mr-ping/master + + Translated by Ping + +commit 7609f4637113f8ec730e937cfc4d56aa411c16fe +Author: tinyeyeser +Date: Fri Jan 9 15:26:36 2015 +0800 + + 已校对 by小眼儿 + + 翻译句式通顺,断句合理,符合中文阅读习惯。难得! + 但个别地方翻译有错误,甚至与原意相悖,校对后已修改。 + +commit 516c0fcd53f0668d261c749607640100d80e805d +Merge: 47fb6bd 490830d +Author: Ping +Date: Fri Jan 9 13:56:10 2015 +0800 + + Merge remote-tracking branch 'upstream/master' into newbranch + +commit 47fb6bd76b8684cda6dd94f72109d3004be17cfd +Author: Ping +Date: Fri Jan 9 13:43:28 2015 +0800 + + [Translated]20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md + +commit 490830d01b0001b0e3a596ea9d22c3b34ac32b07 +Author: tinyeyeser +Date: Fri Jan 9 13:45:04 2015 +0800 + + 已校对 by小眼儿 + +commit 6093990d8f97f8af0c3eaded93132ad5783bd739 +Author: wxy +Date: Fri Jan 9 09:32:12 2015 +0800 + + PUB:20141224 Linux FAQs with Answers--How to install kernel headers on Linux + + @geekpi + +commit aff39edee1e7f31bf00190ceee4dbfb7badc7972 +Merge: 8df9d8a 7156c3b +Author: ZTinoZ +Date: Fri Jan 9 09:25:31 2015 +0800 + + Merge pull request #5 from LCTT/master + + Update the repository + +commit 7156c3bbdff04a2d22e371f20ef187dfb2ef9073 +Merge: 328b4d8 f0e9447 +Author: tinyeyeser +Date: Fri Jan 9 09:23:46 2015 +0800 + + Merge pull request #2219 from mr-ping/master + + Mr-Ping 翻译中 + +commit 328b4d883844d6526a0f662fb8737e3ed99355c7 +Author: wxy +Date: Fri Jan 9 09:21:52 2015 +0800 + + PUB:20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next + + @su-kaiyao + +commit 1ea6efba941e0c4417534e76ad29425d7dd3d5e9 +Merge: 4a2c74a bdeba77 +Author: tinyeyeser +Date: Fri Jan 9 09:20:57 2015 +0800 + + Merge pull request #2218 from tinyeyeser/master + + 已翻译 by小眼儿 + +commit bdeba77fdcdd6c31a2e6fcece0eb33d4ce288138 +Author: tinyeyeser +Date: Fri Jan 9 09:19:45 2015 +0800 + + 已翻译 by小眼儿 + +commit f0e9447450c639f7153c6ae2713d75585f43eb0e +Author: Ping +Date: Fri Jan 9 09:12:04 2015 +0800 + + Mr-Ping 翻译中 + +commit ff7a2b0b757c3797821bbd0bae1b6d1e687c95bf +Merge: c5c2288 4a2c74a +Author: joeren +Date: Fri Jan 9 09:02:49 2015 +0800 + + Merge pull request #23 from LCTT/master + + Update Repo + +commit 4a2c74afc0c31df78f725983d25621d1456a0edd +Merge: f884444 bab7c60 +Author: runningwater +Date: Fri Jan 9 08:30:19 2015 +0800 + + Merge pull request #2217 from H-mudcup/master + + Translating by H-mudcup + +commit bab7c60dc29de34894dc8336a25dc8177f53325b +Author: H-mudcup +Date: Fri Jan 9 08:14:24 2015 +0800 + + Update 20140701 Easy File Comparisons With These Great Free Diff Tools.md + +commit 5a66c383bab7627c6f00c5c604924651b95e39ca +Merge: 2b8eb8c f884444 +Author: H-mudcup +Date: Fri Jan 9 08:11:47 2015 +0800 + + Merge pull request #6 from LCTT/master + + 同步2015/1/9 + +commit f884444180e09d3ee4f873feaadda9e04cb67e25 +Author: wxy +Date: Fri Jan 9 08:04:22 2015 +0800 + + PUB:20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems + + @barney-ro + +commit b1e81109cad9d00c26855322048727331e312139 +Author: wxy +Date: Fri Jan 9 07:21:07 2015 +0800 + + PUB:20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux + + @H-mudcup + +commit 05b53a429694eec76678c824ff04f8f28a3d807a +Author: wxy +Date: Fri Jan 9 07:17:09 2015 +0800 + + PUB:20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse + + @tinyeyeser + +commit 882339520a85cece044d3e76d3000f14b06ffe71 +Merge: 46b8923 8df9d8a +Author: Xingyu.Wang +Date: Fri Jan 9 00:59:11 2015 +0800 + + Merge pull request #2215 from ZTinoZ/master + + Finish the translation by ZTinoZ + +commit 46b8923973a94df66cee2e9f3e7b882c0010f27a +Merge: 17f7eec 8f5aeea +Author: geekpi +Date: Thu Jan 8 17:32:09 2015 +0800 + + Merge pull request #2216 from geekpi/master + + translated + +commit 8f5aeea25de604283b3ecf0829f585b0a8d242e2 +Author: zhengsihua +Date: Thu Jan 8 17:30:26 2015 +0800 + + translated + +commit 17f7eec130b27cd579214230cdbd3fd3aea6462f +Merge: 10ef4a2 01a9f16 +Author: geekpi +Date: Thu Jan 8 17:02:48 2015 +0800 + + Merge pull request #2214 from geekpi/master + + translating + +commit 01a9f16c46f0a72f7cb5e7e576145cba21d26bc5 +Author: zhengsihua +Date: Thu Jan 8 17:00:31 2015 +0800 + + translating + +commit 8df9d8a2dbfc036e85dba927202510c59771491a +Author: ZTinoZ +Date: Thu Jan 8 16:57:31 2015 +0800 + + Finish the Translation by ZTinoZ + +commit 10ef4a215aaf2ead4a30fe0c229c505a2aa8cd16 +Author: DeadFire +Date: Thu Jan 8 15:51:34 2015 +0800 + + 20150108-1 选题 + +commit d65f445403de978e969867d7dcb7cbf1617e2899 +Merge: e20c944 17e3b27 +Author: tinyeyeser +Date: Thu Jan 8 14:56:47 2015 +0800 + + Merge pull request #2213 from Vic020/master + + Translated:How To Install Kodi 14 + +commit 17e3b272063e391216076ea44feb24aea202d860 +Author: Vic___ +Date: Thu Jan 8 12:48:30 2015 +0800 + + Moved + +commit d30d88da63f0824cfd15a1d034b504ec63a1951c +Author: Vic___ +Date: Thu Jan 8 12:48:01 2015 +0800 + + Translated + +commit 2b8eb8c2e20945d9381e0decb6080c62aa2df241 +Merge: 12f4d5b e20c944 +Author: H-mudcup +Date: Thu Jan 8 11:25:46 2015 +0800 + + Merge pull request #5 from LCTT/master + + 同步2015/1/8 + +commit e20c94422d61f5fa95e09421fd5340a8a20da450 +Merge: 2311517 38338a7 +Author: Xingyu.Wang +Date: Thu Jan 8 10:35:13 2015 +0800 + + Merge pull request #2210 from Stevearzh/master + + [Translated by Stevearzh]20141226 How to Download Music from Grooveshark with a Linux OS.md + +commit 2311517f595be9c1af546521a6a5d5bd7083b8fc +Merge: 791a907 12f4d5b +Author: Xingyu.Wang +Date: Thu Jan 8 10:34:55 2015 +0800 + + Merge pull request #2209 from H-mudcup/master + + Translated by H-mudcup + +commit 791a907b4faf2ecdaec1cd650bff3cb70d8205a2 +Merge: c7a5bd8 6e3f25f +Author: geekpi +Date: Wed Jan 7 21:07:42 2015 +0800 + + Merge pull request #2212 from geekpi/master + + translated + +commit 6e3f25fa050fbaa807452518f28be29e949ea62f +Author: zhengsihua +Date: Wed Jan 7 21:06:47 2015 +0800 + + translated + +commit c7a5bd899ab013895adfbf83563e7fa7ed25f869 +Merge: 0bc39b1 03a283a +Author: geekpi +Date: Wed Jan 7 20:54:24 2015 +0800 + + Merge pull request #2211 from geekpi/master + + translating + +commit 03a283aaff319da1b5522347b1ab20e30db78798 +Author: zhengsihua +Date: Wed Jan 7 20:47:32 2015 +0800 + + translating + +commit 38338a75969021460b8edfb8d6bed9a108137279 +Author: Stevearzh +Date: Wed Jan 7 16:31:08 2015 +0800 + + Translated by Stevearzh + +commit 0bc39b1f100b4d93f35c6d796a9f1ab3b2388946 +Author: tinyeyeser +Date: Wed Jan 7 16:00:11 2015 +0800 + + 已校对 by小眼儿 + +commit 51c42753fcaabce184d2e242bdae05b4ec1f46ce +Author: wxy +Date: Wed Jan 7 15:50:03 2015 +0800 + + PUB:20141023 How to turn your CentOS box into a BGP router using Quagga + + @disylee + +commit 83003afecac7532b1d564244233e53f0a73a8690 +Author: ZTinoZ +Date: Wed Jan 7 14:21:38 2015 +0800 + + Translating by ZTinoZ + +commit 13ad0b8f4402599a2b3dce71913a7be17d0d071e +Author: wxy +Date: Wed Jan 7 14:01:23 2015 +0800 + + PUB:20141013 How to configure peer-to-peer VPN on Linux + + @felixonmars + +commit 145b91641fd1acb24b73905d4ae6e3202c359209 +Author: wxy +Date: Wed Jan 7 13:45:45 2015 +0800 + + PUB:20140912 What' s wrong with IPv4 and Why we are moving to IPv6 + + @bazz2 + +commit 75e55d791c62439fc0b5fdc3d723a8b086830059 +Author: tinyeyeser +Date: Wed Jan 7 10:23:43 2015 +0800 + + 已校对 by小眼儿 + +commit 12f4d5b9990adc190dcc68bfd6cff4a5b544ed86 +Author: H-mudcup +Date: Wed Jan 7 10:17:51 2015 +0800 + + Create 20141106 Tomahawk Music Player Returns With New Look, Features.md + +commit d6a5e14d67ff33806c3b10edef5a6af6d710f996 +Author: H-mudcup +Date: Wed Jan 7 10:16:16 2015 +0800 + + Delete 20141106 Tomahawk Music Player Returns With New Look, Features.md + +commit 8037854bae15996a4d79fa11cb6f346d36a93fd2 +Author: tinyeyeser +Date: Wed Jan 7 09:37:18 2015 +0800 + + 翻译中 by小眼儿 + +commit 6b8ab98e8c40ba846a9f0608a325c02c395366a2 +Merge: 2819923 16e313d +Author: geekpi +Date: Tue Jan 6 19:12:20 2015 +0800 + + Merge pull request #2206 from H-mudcup/master + + Translating by H-mudcup + +commit 2819923c91c230f43a29a1a2ed60d7b4602649b0 +Merge: 78aab17 21b9f1d +Author: geekpi +Date: Tue Jan 6 19:11:41 2015 +0800 + + Merge pull request #2208 from geekpi/master + + translated + +commit 21b9f1dbc216fc0cc667b0ac7e4cb2cf789e2c92 +Author: zhengsihua +Date: Tue Jan 6 18:56:05 2015 +0800 + + translated + +commit 068036a530a4aab7233c4ee5e7a27fbfab0bde66 +Author: zhengsihua +Date: Tue Jan 6 18:48:32 2015 +0800 + + deleted + +commit 78aab177aca431de3aea0c53d1113a50c30889d7 +Author: geekpi +Date: Tue Jan 6 17:54:21 2015 +0800 + + Update 20150105 Ubuntu apt-get and apt-cache commands with practical examples.md + +commit a2c2f6726eb6f3c87d8f26bc80cad4c85759989f +Author: ZTinoZ +Date: Tue Jan 6 17:38:16 2015 +0800 + + Translating by ZTinoZ + +commit a950929cddcbcd85e51b6dc0af62387c3f041d43 +Author: tinyeyeser +Date: Tue Jan 6 17:22:28 2015 +0800 + + 已翻译 by小眼儿 + +commit 91902126c4086880b256b06c215f4759a81c23b7 +Merge: ee0e950 f604661 +Author: tinyeyeser +Date: Tue Jan 6 17:15:23 2015 +0800 + + Merge pull request #2207 from tinyeyeser/master + + 已翻译 by小眼儿 + +commit f604661fa17704504c240b043f7d960daf7f46e0 +Author: tinyeyeser +Date: Tue Jan 6 17:11:37 2015 +0800 + + 已翻译 by小眼儿 + + Signed-off-by: tinyeyeser + +commit ee0e9502558cd774095f3b467bf9af40621a1c60 +Author: DeadFire +Date: Tue Jan 6 16:37:55 2015 +0800 + + 20150106-1 选题 + +commit 16e313d6a5a09b8879fc75a185d9d30b207f3b62 +Author: H-mudcup +Date: Tue Jan 6 12:37:04 2015 +0800 + + Update 20141106 Tomahawk Music Player Returns With New Look, Features.md + +commit 780113f8e666b2d652772347e5a033fa1c5e1ab0 +Merge: 3ff479d 9b4d773 +Author: H-mudcup +Date: Tue Jan 6 12:13:16 2015 +0800 + + Merge pull request #4 from LCTT/master + + 同步2015/1/6 + +commit 9b4d773824b01aa2e184e43bf7a654b8c12659ad +Merge: 1dff8e3 cd31073 +Author: Xingyu.Wang +Date: Mon Jan 5 21:56:25 2015 +0800 + + Merge pull request #2205 from Vic020/patch-26 + + 抢地主 + +commit 1dff8e3db67e54b23ff6fc36615fe60aec3c6e4e +Merge: 17bccaf 6e31b7e +Author: Xingyu.Wang +Date: Mon Jan 5 21:56:04 2015 +0800 + + Merge pull request #2204 from SPccman/master + + Quick systemd-nspawn guide + +commit cd31073929e78be980c951231883606c0f8d82b0 +Author: Vic___ +Date: Mon Jan 5 20:17:49 2015 +0800 + + Update 20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md + +commit 6e31b7ec439db2e50c644f59db754c04ad0b2c03 +Author: DoubleC <450760206@qq.com> +Date: Mon Jan 5 20:16:30 2015 +0800 + + Create Quick systemd-nspawn guide.md + + complete + +commit 06eb045b2855d3e2a722853b5b48b80e9b7d9fd7 +Author: DoubleC <450760206@qq.com> +Date: Mon Jan 5 20:13:07 2015 +0800 + + delete source file + + delete source file + +commit 52717946a7c72f42effb1af5f638f2407b32a627 +Merge: 49fbafb 17bccaf +Author: DoubleC <450760206@qq.com> +Date: Mon Jan 5 20:12:07 2015 +0800 + + Merge pull request #13 from LCTT/master + + Update + +commit 17bccaf9afd68897a1199dac07fec68db36b3d13 +Author: DeadFire +Date: Mon Jan 5 16:19:42 2015 +0800 + + 20150105-1 选题 + +commit df83a70203c28d382cbc2f7468fc47c3fc06e82e +Merge: ed63571 04de393 +Author: Xingyu.Wang +Date: Mon Jan 5 16:16:54 2015 +0800 + + Merge pull request #2203 from liaoishere/master + + [translated] 20141008 How to configure HTTP load balancer with HAProxy on Linux + +commit ed6357105ac697156ad373e0b57ffaff82dbab58 +Merge: 35b3139 e8b1750 +Author: Xingyu.Wang +Date: Mon Jan 5 16:16:27 2015 +0800 + + Merge pull request #2202 from barney-ro/master + + [translating]20141219 2015 will be the year Linux takes over the enterprise and other predictions + +commit 35b3139674e7705cd6b42c405807a3cd50d10621 +Author: tinyeyeser +Date: Mon Jan 5 16:13:28 2015 +0800 + + 翻译中 by小眼儿 + +commit 04de393fe77aa70f894a58b887e893d968948a51 +Author: liaoishere +Date: Mon Jan 5 13:48:11 2015 +0800 + + [translated] 20141008 How to configure HTTP load balancer with HAProxy on Linux + +commit d18ac9bd28a84786b144452cb159a24726655c7d +Author: ZTinoZ +Date: Mon Jan 5 13:30:10 2015 +0800 + + Translating by ZTinoZ + +commit e8b1750f68ab640023024fab3b9ffbe888e2d359 +Author: barney-ro +Date: Mon Jan 5 13:11:49 2015 +0800 + + [translating]20141219 2015 will be the year Linux takes over the enterprise and other predictions + +commit 460698dbc42fcf31992878e2fac57c6236d8c8c1 +Merge: ca03351 8f3fb80 +Author: Xingyu.Wang +Date: Mon Jan 5 12:47:57 2015 +0800 + + Merge pull request #2201 from liaoishere/master + + liaoishere is translating + +commit 8f3fb80c7f5fad2e8a047aa4ff28cf8b515ba6cd +Author: liaoishere +Date: Mon Jan 5 11:19:19 2015 +0800 + + liaoishere is translating + + translating 20141008 How to configure HTTP load balancer with HAProxy on Linux.md + +commit ca03351d4daf0e787cdbf451291cbec5a6c67041 +Merge: 5934485 c5c2288 +Author: joeren +Date: Mon Jan 5 10:13:30 2015 +0800 + + Merge pull request #2200 from GOLinux/master + + [Translated]20150104 How To Install Websvn In CentOS 7.md + +commit c5c22882993fc28a1b56309342905fd82e9ba326 +Author: GOLinux +Date: Mon Jan 5 10:12:16 2015 +0800 + + [Translated]20150104 How To Install Websvn In CentOS 7.md + +commit 593448563867c1d4de9a6f63487199d9566158a7 +Merge: 78eea5e b471789 +Author: joeren +Date: Mon Jan 5 09:51:05 2015 +0800 + + Merge pull request #2199 from GOLinux/master + + [Translating]20150104 How To Install Websvn In CentOS 7.md + +commit b47178940451cbb41697405138a2be9e9fe1e1e0 +Author: joeren +Date: Mon Jan 5 09:50:40 2015 +0800 + + Update 20150104 How To Install Websvn In CentOS 7.md + +commit 4b7691b3549f7745ef1001349865d8e0d0a9e11c +Merge: 5566a97 78eea5e +Author: joeren +Date: Mon Jan 5 09:49:17 2015 +0800 + + Merge pull request #22 from LCTT/master + + Update Repository + +commit 78eea5edfed41854db51cc6e5b1f738256d30b45 +Merge: a2c7dad 3ff479d +Author: joeren +Date: Mon Jan 5 09:48:23 2015 +0800 + + Merge pull request #2198 from H-mudcup/master + + Translated Flow ‘N Play Movie Player Has a Stylish Interface [Ubuntu Installation] + +commit a2c7dad8dff050496a23388832390478a6203caa +Merge: bd187e3 7c761d0 +Author: joeren +Date: Mon Jan 5 09:47:59 2015 +0800 + + Merge pull request #2197 from KayGuoWhu/master + + [translating] 20141222 A brief history of Linux malware + +commit bd187e3aea48f8cd6757ad0dde09dbc47b71ce62 +Merge: 1da8f35 031955c +Author: joeren +Date: Mon Jan 5 09:47:52 2015 +0800 + + Merge pull request #2196 from liaoishere/master + + translating 20141027 ntpq -p output + +commit 3ff479dae6f3a2a3c7f5edf6a084ef39492b26f1 +Author: H-mudcup +Date: Sun Jan 4 19:37:56 2015 +0800 + + Create 20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md + + Translated by H-mudcup + +commit c2be7bf490f560ec3f67626a892be1a22a7425ae +Author: H-mudcup +Date: Sun Jan 4 18:47:24 2015 +0800 + + Delete 20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md + +commit fc13165571778d6a6e535d7e2a381cb890917755 +Merge: 104d8c7 1da8f35 +Author: H-mudcup +Date: Sun Jan 4 18:46:01 2015 +0800 + + Merge pull request #3 from LCTT/master + + 同步 + +commit 031955c2a3eaaec352009c570de154d3a380a211 +Merge: acf066d 1da8f35 +Author: liaoishere +Date: Sun Jan 4 17:39:16 2015 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit acf066d9638e6dc9d31eb3fdb30a713ce1d3aa0b +Author: liaoishere +Date: Sun Jan 4 17:36:56 2015 +0800 + + [translated] 20141027 ntpq -p output + +commit 4b24d172b1e9994e18bc1668e76fd22fb55e8d45 +Author: ZTinoZ +Date: Sun Jan 4 17:00:07 2015 +0800 + + Translating by ZTinoZ + +commit 1da8f3500df779e2a01189bc9c43bb15c9d1b191 +Author: DeadFire +Date: Sun Jan 4 16:17:47 2015 +0800 + + 20150104-4 选题 + +commit 104d8c71df1e2819bda99abe74927a2a90efff90 +Merge: 5ea7de0 d3b1336 +Author: H-mudcup +Date: Sun Jan 4 15:28:06 2015 +0800 + + Merge pull request #2 from LCTT/master + + update 2015/1/4 + +commit d3b13366378e8e27bcb2a6c253144a4d9d62546a +Author: DeadFire +Date: Sun Jan 4 14:55:03 2015 +0800 + + 20150104-3 选题 + +commit 68819fccd8af60ca60c8077252ed7e1938df8ecd +Author: DeadFire +Date: Sun Jan 4 14:54:47 2015 +0800 + + 20150104-2 选题 + +commit 7c761d02f8c2caad2f9decb5ae794caa22bdcdab +Author: KayGuoWhu +Date: Sun Jan 4 14:40:38 2015 +0800 + + the first translating of 2015 + +commit fc1ec72d1e923ff3a1517fcf458cd79fd0521fef +Author: liaoishere +Date: Sun Jan 4 14:34:07 2015 +0800 + + liaoishere is translating 20141027 ntpq -p output + +commit ca450ff5f3f9e55e3b1a59d8ec54da7696b722b6 +Merge: 27ce29b 8d16e0b +Author: liaoishere +Date: Sun Jan 4 14:32:59 2015 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit 8d16e0b5be7332ad146f7fe0484f320ef4ad582c +Merge: 0425cc7 5ea7de0 +Author: Xingyu.Wang +Date: Sun Jan 4 11:20:34 2015 +0800 + + Merge pull request #2195 from H-mudcup/master + + Translating Flow ‘N Play Movie Player Has a Stylish Interface [Ubuntu Installation] + +commit 5ea7de03ae065dcf3f1583d3af4a76737b15d8c3 +Author: H-mudcup +Date: Sun Jan 4 11:15:17 2015 +0800 + + Update 20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md + +commit 17326e0e9c01181d316cca26a5a9dbe4559c77dd +Merge: d495db5 0425cc7 +Author: H-mudcup +Date: Sun Jan 4 11:01:59 2015 +0800 + + Merge pull request #1 from LCTT/master + + update 2015/1/4 + +commit 307441701b1037f680ed4b9b94aff0cc6508c0c3 +Merge: ddb74b9 0425cc7 +Author: ZhouJ-sh <32321321@qq.com> +Date: Sun Jan 4 10:46:18 2015 +0800 + + Merge pull request #3 from LCTT/master + + Merge from base + +commit 0425cc77cdd817b37854fd933e5f86969b733be8 +Author: DeadFire +Date: Sun Jan 4 10:36:31 2015 +0800 + + 20150104-1 选题 + +commit ae286d51cb46a4dfedc96ecca494d91e6ccc3032 +Merge: 4ea7103 d495db5 +Author: Xingyu.Wang +Date: Sun Jan 4 10:28:01 2015 +0800 + + Merge pull request #2194 from H-mudcup/master + + U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux + +commit d495db54a008d9b31019090081508c07ab49c03c +Author: H-mudcup +Date: Sun Jan 4 10:19:40 2015 +0800 + + Delete 20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md + +commit 70796857b7093a2b655a98f99c80e577de50edcf +Author: H-mudcup +Date: Sun Jan 4 10:12:49 2015 +0800 + + Create 20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md + +commit 5566a971b2c51d163f97a15422401550c358cd55 +Merge: 3b192a8 4ea7103 +Author: joeren +Date: Sun Jan 4 07:51:15 2015 +0800 + + Merge pull request #21 from LCTT/master + + Update Repository + +commit 27ce29b5199e53310cfd11896a48cdc984a3b6fe +Merge: f481c29 4ea7103 +Author: liaoishere +Date: Sun Jan 4 01:31:45 2015 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit 4ea710321c428240d68aa7e54649d3d8006f4342 +Merge: 3315e3d f98c9a1 +Author: Xingyu.Wang +Date: Sat Jan 3 20:51:09 2015 +0800 + + Merge pull request #2189 from liaoishere/master + + [translated] 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server + +commit f481c2995db787c978a6fcdd59978229063470c0 +Merge: f98c9a1 3315e3d +Author: liaoishere +Date: Sat Jan 3 14:25:11 2015 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit 3315e3ddcbb5517761dba9c4bde97f0905cf04de +Merge: 54bff27 8081292 +Author: geekpi +Date: Sat Jan 3 14:06:49 2015 +0800 + + Merge pull request #2193 from geekpi/master + + translated + +commit 8081292d0890dfccaf8869c648584cb81fa6f512 +Author: zhengsihua +Date: Sat Jan 3 14:02:14 2015 +0800 + + delete source file + +commit 773311b89d928498f20076360be67e8a9df135c7 +Merge: 3813262 d4431f3 +Author: zhengsihua +Date: Sat Jan 3 13:57:33 2015 +0800 + + Merge branch 'master' of https://github.com/geekpi/TranslateProject + +commit 54bff2750b9e95db880631d4b5bbb4f80e9012f1 +Merge: 349e04c d4431f3 +Author: geekpi +Date: Sat Jan 3 13:56:28 2015 +0800 + + Merge pull request #2192 from geekpi/master + + translating + +commit 381326294179b5860f84233cf8043f6143dac628 +Author: zhengsihua +Date: Sat Jan 3 13:55:32 2015 +0800 + + translated + +commit d4431f3774ea0b5b7f6bf733b78af7290574041c +Author: geekpi +Date: Sat Jan 3 00:04:12 2015 -0500 + + translating + +commit f98c9a1c08b0e04949badb72387522ab24be4e75 +Author: liaoishere +Date: Sat Jan 3 00:19:03 2015 +0800 + + [translated] 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server + +commit 349e04c3139cd17fca89f754784e890f3e6066b6 +Merge: 2195e0e daf91ce +Author: runningwater +Date: Sat Jan 3 00:01:18 2015 +0800 + + Merge pull request #2188 from liaoishere/master + + liaoishere is translating 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server + +commit daf91ce773096eb7b2b5a324dfa4ca49b95fc75a +Author: liaoishere +Date: Fri Jan 2 23:13:56 2015 +0800 + + liaoishere is translating 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server + +commit 2195e0e84e2bb2a43da1a146ee6d990ff609a7f0 +Author: wxy +Date: Fri Jan 2 23:02:10 2015 +0800 + + PUB:20141115 How to perform system backup with backup-manager on Linux + + @GOLinux + +commit 656458d0777f210f84f978eda233a5b14e284f2f +Author: wxy +Date: Fri Jan 2 22:53:45 2015 +0800 + + 补充删除 + +commit e69e4f48de6fce460adb003ab4920a4e5e1ca117 +Author: wxy +Date: Fri Jan 2 22:41:11 2015 +0800 + + PUB:20141023 What are useful Bash aliases and functions + + @luoyutiantang + +commit 2ee23919969daed6097991c13964cf6cf1c46f3c +Merge: d7ca250 1609916 +Author: runningwater +Date: Fri Jan 2 19:59:10 2015 +0800 + + Merge pull request #2185 from H-mudcup/patch-1 + + Translating by H-mudcup + +commit d7ca25005bcbe76fdd6bd7a6388019714dcb247a +Merge: 0101a84 fa96853 +Author: geekpi +Date: Fri Jan 2 18:18:27 2015 +0800 + + Merge pull request #2187 from geekpi/master + + translated + +commit fa96853c90cdcf4404a1ba9bdd91e6494e6829f8 +Author: zhengsihua +Date: Fri Jan 2 18:15:46 2015 +0800 + + translated + +commit 0101a8408b7a4231a0cb9cfe068449c8a553d065 +Merge: becb5c0 aea12ba +Author: geekpi +Date: Fri Jan 2 17:03:26 2015 +0800 + + Merge pull request #2186 from geekpi/master + + translating + +commit aea12ba42b531f214ec02e3294ee91649add0ba1 +Author: zhengsihua +Date: Fri Jan 2 17:01:28 2015 +0800 + + translating + +commit becb5c029511647667aeede5566836e4362ad190 +Author: wxy +Date: Fri Jan 2 13:33:16 2015 +0800 + + PUB:20140915 10 Open Source Cloning Software For Linux Users + + @felixonmars + +commit f925f5db94bf83ba8a1b3958a8de354bf1136639 +Author: wxy +Date: Fri Jan 2 13:15:09 2015 +0800 + + PUB:20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux + + @geekpi + +commit 16de73e52f860bd33e6017ab2ca1d5dc3bb1f988 +Author: wxy +Date: Fri Jan 2 13:04:15 2015 +0800 + + 错误的放在了根下 + +commit 1609916663ad1fe0b4cc59715900d727141a43eb +Author: H-mudcup +Date: Fri Jan 2 12:41:58 2015 +0800 + + Translating by H-mudcup + + U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux + +commit f42e58092f7ceafd7f4340ddf03338f1fd426169 +Merge: e41ff61 7429dad +Author: Xingyu.Wang +Date: Thu Jan 1 23:14:19 2015 +0800 + + Merge pull request #2184 from SPccman/patch-13 + + SPccman + 下回请用所申领的文章标题作为 PR的标题哈。 + +commit 7429dad38ec3d3ec85defc572e565d26b2489d0a +Author: DoubleC <450760206@qq.com> +Date: Thu Jan 1 18:02:45 2015 +0800 + + SPccman + + 申领 + +commit e41ff61df76a302c9a085532bd323212b1baa39b +Merge: 7a0f9d6 189d460 +Author: Xingyu.Wang +Date: Thu Jan 1 16:29:55 2015 +0800 + + Merge pull request #2183 from geekpi/master + + translated + +commit 189d460a74588d3408caa9ad354414391028636f +Author: zhengsihua +Date: Thu Jan 1 11:45:53 2015 +0800 + + translated + +commit 7a0f9d6a49c6d0b9300900b9f7ad9529d7b448b7 +Merge: 7245158 682f441 +Author: geekpi +Date: Thu Jan 1 10:08:51 2015 +0800 + + Merge pull request #2182 from geekpi/master + + translating + +commit 682f441674eee44bd8bad38533e3ae18b79535de +Author: zhengsihua +Date: Thu Jan 1 10:06:48 2015 +0800 + + translating + +commit 7245158ee184d70b7dae84ac5208c37a43a9b5d3 +Merge: 7d05480 2fa94b2 +Author: runningwater +Date: Thu Jan 1 00:59:11 2015 +0800 + + Merge pull request #2181 from liaoishere/master + + [translated] 20141120 How to install Xen hypervisor on unused old hardwa... + +commit 2fa94b20bf7e9ada3a9ddbbfba5b9298cf79dab9 +Author: liaoishere +Date: Thu Jan 1 00:41:31 2015 +0800 + + [translated] 20141120 How to install Xen hypervisor on unused old hardware + +commit 7d05480104815f4abf0578fe37686ebc18d4065e +Author: wxy +Date: Thu Jan 1 00:17:50 2015 +0800 + + 归档201412,告别2014,谢谢各位 LCTTer! + +commit 36bb57baf207e100a27b060cd685c28e59f395b1 +Merge: 6f071e9 9f2e09e +Author: Xingyu.Wang +Date: Wed Dec 31 23:42:59 2014 +0800 + + Merge pull request #2180 from alim0x/master + + [translated]11 - The history of Android.md + 新年快乐~~ + +commit 6f071e9b3cb98c55ca9e5e80ccd62739c799e186 +Author: wxy +Date: Wed Dec 31 23:08:50 2014 +0800 + + PUB:20141222 Linus Torvalds Launches Linux Kernel 3.19 RC1, One of the Biggest So Far + + @geekpi + +commit e138c32c0d0c6275b1e2db0e9d541f12f8f9bb5b +Author: wxy +Date: Wed Dec 31 22:54:06 2014 +0800 + + PUB:20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Ou + + @zhouj-sh 明天就能见到了: http://linux.cn/article-4570-1.html + +commit a4b2d54341072ddf12590e2beeb30ce6f2c47b8f +Author: wxy +Date: Wed Dec 31 22:51:03 2014 +0800 + + 放错位置。。 + +commit 9f2e09ea39a5c6d1481f9570ed6c487d872a31da +Author: alim0x +Date: Wed Dec 31 22:41:43 2014 +0800 + + [translated]11 - The history of Android.md + +commit 4b20fc8ccbfffe9f9b4567ea098bb72d1550c3cc +Author: wxy +Date: Wed Dec 31 22:31:39 2014 +0800 + + 处理不完美的 PR + +commit 94a35875ac6c4471dcb9df5564d537f71afe31da +Merge: 7054d70 ef8c7bf +Author: Xingyu.Wang +Date: Wed Dec 31 22:26:47 2014 +0800 + + Merge pull request #2179 from barney-ro/master + + [translated]20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems + + 是的,是因为你给丢失了扩展名。 + +commit 7054d70600dbcf203a9d82af0fcb9ab4b71f5e73 +Merge: 36da19b ed7e244 +Author: Xingyu.Wang +Date: Wed Dec 31 22:26:05 2014 +0800 + + Merge pull request #2178 from H-mudcup/master + + 翻译完成20141226 The Good The Bad And The Ugly Of Linux In 2014.md + +commit 36da19b260e83120e17889cafe44856157265046 +Merge: 7354f5d a96dfa1 +Author: Xingyu.Wang +Date: Wed Dec 31 22:25:34 2014 +0800 + + Merge pull request #2177 from liaoishere/master + + liaosihere is translating + +commit 7354f5d8d248d6beed2ead7c6aabf0bf5a0bf9e3 +Merge: bea9184 ddb74b9 +Author: Xingyu.Wang +Date: Wed Dec 31 22:24:12 2014 +0800 + + Merge pull request #2176 from ZhouJ-sh/master + + 选题&翻译 Second Edition of Ubuntu Manual 14.04 LTS Is Out + + 谢谢您的首次参与,辛苦啦。不过建议您以后可以将您要推荐的选题给LCTT 的选题,由其添加,你可以自行认领。这样流程比较一致。不过您的这个选题的格式制作也很好。作为鼓励,新人的翻译会尽快发布~~ + +commit ef8c7bfa6c9c2899d26a12dd1a6df7007bf5ef05 +Author: Zhili.Yang +Date: Wed Dec 31 22:14:44 2014 +0800 + + Delete 20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md + +commit 7633fec9a5470014aca38f8d8065f7e72dfa6eb8 +Author: Zhili.Yang +Date: Wed Dec 31 22:13:02 2014 +0800 + + [translated]20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems + +commit ed7e2448b27175274ae3de46f11413dd519083d6 +Author: H-mudcup +Date: Wed Dec 31 18:30:32 2014 +0800 + + Create 20141226 The Good The Bad And The Ugly Of Linux In 2014.md + +commit 59e014701d68362b7c6f0bb1053a7256ddee93c9 +Author: H-mudcup +Date: Wed Dec 31 18:29:16 2014 +0800 + + Delete 20141226 The Good The Bad And The Ugly Of Linux In 2014.md + +commit a96dfa15d6a07733d8d02406578bf4768e454637 +Author: liaoishere +Date: Wed Dec 31 17:59:21 2014 +0800 + + liaosihere is translating + +commit ddb74b91fa9bdaef9d22b47243e454c207470562 +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Dec 31 17:45:52 2014 +0800 + + 选题 sources/news/20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Out + +commit af3bd6bf260ef52fa4ef1cb4754829bc7d70c9ba +Author: ZTinoZ +Date: Wed Dec 31 17:43:19 2014 +0800 + + Translating by ZTinoZ + +commit 3a97aad992ee78b3815f59d82890311602ec6d47 +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Dec 31 17:43:19 2014 +0800 + + translat /news/20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Out + +commit bea9184de731cd3d9cdaed11508319366a0cde62 +Merge: 2bcc32d 90e3fc4 +Author: Xingyu.Wang +Date: Wed Dec 31 13:25:48 2014 +0800 + + Merge pull request #2175 from ideas4u/patch-3 + + Update 20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mi... + +commit 90e3fc481bbc755f49f19bda36183cfe7add044b +Author: ideas4u +Date: Wed Dec 31 13:09:48 2014 +0800 + + Update 20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md + + translating req + +commit 2bcc32daec5f69a9bce752bd3e7f00b643b82db0 +Merge: cb2ce57 3a03323 +Author: Xingyu.Wang +Date: Wed Dec 31 12:58:25 2014 +0800 + + Merge pull request #2173 from ideas4u/patch-2 + + Create 20141211 How to use matplotlib for scientific plotting on Linux 已完成 + +commit cb2ce57b43cd89c2898a620e61635f6b861691e0 +Merge: 38fb9e5 587f865 +Author: Xingyu.Wang +Date: Wed Dec 31 12:58:09 2014 +0800 + + Merge pull request #2174 from ideas4u/patch-1 + + Delete 20141211 How to use matplotlib for scientific plotting on Linux.m... + +commit 587f865cb2bd27bdbb4090f6db9fc4f3538b3af2 +Author: ideas4u +Date: Wed Dec 31 12:55:26 2014 +0800 + + Delete 20141211 How to use matplotlib for scientific plotting on Linux.md + +commit 38fb9e504ca5a7edb42b7b033f37764b06d2d53e +Merge: 64d596e 7c5acd7 +Author: Xingyu.Wang +Date: Wed Dec 31 12:23:02 2014 +0800 + + Merge pull request #2171 from mtunique/master + + 【翻译完成】20141229 5 User Space Debugging Tools in Linux + +commit 7c5acd73f20bdea81542bf04c515fd0832fc08c1 +Author: mtunique +Date: Wed Dec 31 12:06:31 2014 +0800 + + 【翻译完成】20141229 5 User Space Debugging Tools in Linux + +commit 62ec8144152a046ca473fdd795285fb0d23e376d +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Dec 31 12:03:11 2014 +0800 + + 选题 20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Out + +commit 909f645bf5b5a815391f4fade5a0a9f03d337b6d +Author: ZTinoZ +Date: Wed Dec 31 11:48:54 2014 +0800 + + Translating by ZTinoZ + +commit e9213927c5e39e29d3cab3032cd7abb3228fd176 +Author: mtunique +Date: Wed Dec 31 11:47:24 2014 +0800 + + 【翻译完成】20141229 5 User Space Debugging Tools in Linux + +commit 8b0e478477e0e4d6a9bef7d7809604868cbbef0b +Author: mtunique +Date: Wed Dec 31 11:45:24 2014 +0800 + + delete 20141229 5 User Space Debugging Tools in Linux.md + +commit a3b61d46f93527db1538238d376caaab06a0dad9 +Merge: 2bd8a0d 64d596e +Author: mtunique +Date: Wed Dec 31 11:44:07 2014 +0800 + + Merge remote-tracking branch 'lctt/master' + +commit 64d596e703116c1ece818626d98cfddada2b1da2 +Merge: e84fc42 c8c5ad2 +Author: Xingyu.Wang +Date: Wed Dec 31 11:04:37 2014 +0800 + + Merge pull request #2170 from H-mudcup/master + + update 2014/12/31 + +commit c8c5ad2a21321caa97514360dcad50eb42db48e2 +Author: H-mudcup +Date: Wed Dec 31 10:43:45 2014 +0800 + + Update 20141226 The Good The Bad And The Ugly Of Linux In 2014.md + + Translating by H-mudcup + +commit 146f514cb19f0e6ecd0524da62a0bec917a60c2a +Merge: 2daff13 e84fc42 +Author: ZhouJ-sh <32321321@qq.com> +Date: Wed Dec 31 10:39:52 2014 +0800 + + Merge pull request #2 from LCTT/master + + Merge from base + +commit ed7385ad7bce215f6f068da196a4c5556b6290d0 +Merge: 3923955 e84fc42 +Author: H-mudcup +Date: Wed Dec 31 10:36:24 2014 +0800 + + Merge pull request #3 from LCTT/master + + 更新2014年12月30日 + +commit e84fc42b9c8972831ed5d8d78ee9a58607dbafd8 +Merge: cd6228b 3b192a8 +Author: joeren +Date: Wed Dec 31 08:29:51 2014 +0800 + + Merge pull request #2169 from GOLinux/master + + [Translated] 20141224 Calife--A lightweight alternative to sudo.md + +commit 3b192a8aed6bd8c77da5f692b6d60f68e478eea9 +Author: GOLinux +Date: Wed Dec 31 08:27:07 2014 +0800 + + [Translated] 20141224 Calife--A lightweight alternative to sudo.md + +commit cd6228bc7810646208e22a01708b9b3f782cb9f6 +Merge: 70174be 82ac18e +Author: joeren +Date: Wed Dec 31 07:52:55 2014 +0800 + + Merge pull request #2168 from GOLinux/master + + [Translating]20141224 Calife--A lightweight alternative to sudo.md + +commit 82ac18e7e6a8f9a3109911533dcd4c3a2edc54dc +Author: joeren +Date: Wed Dec 31 07:52:28 2014 +0800 + + Update 20141224 Calife--A lightweight alternative to sudo.md + +commit dc8fc5d8a09e76b10f6effe7e609e36d75dea410 +Merge: b3d9bb7 70174be +Author: joeren +Date: Wed Dec 31 07:51:10 2014 +0800 + + Merge pull request #20 from LCTT/master + + Update Repository + +commit 70174bed6dbd5ccc51ab4dd7215923026ac1a48f +Merge: 95d5ce4 55be8f9 +Author: joeren +Date: Wed Dec 31 07:50:39 2014 +0800 + + Merge pull request #2167 from Vic020/master + + Translated: Linux FAQs with Answers--How to install Kingsoft Office on Linux + +commit 95d5ce4eb0dfa27a48013a8e020615b9a898e507 +Merge: acb74fb 2daff13 +Author: joeren +Date: Wed Dec 31 07:50:28 2014 +0800 + + Merge pull request #2166 from ZhouJ-sh/master + + 20141229 选题 2 Ways To Fix The UEFI Bootloader When Dual Booting Windo… + +commit acb74fb709c5faacadef795575b06e046abdd87a +Merge: 2ea4597 5cab529 +Author: joeren +Date: Wed Dec 31 07:50:14 2014 +0800 + + Merge pull request #2165 from Stevearzh/master + + Translating by Stevearzh + +commit 55be8f979ef92bcd893995ca0ed746b720c1ff62 +Author: Vic___ +Date: Tue Dec 30 22:49:59 2014 +0800 + + Moved + +commit 8bb194413564b652cb212b5143acb8e1f880fd90 +Author: Vic___ +Date: Tue Dec 30 22:48:53 2014 +0800 + + Translated + +commit 2daff130f975f6b6c566e3ca030f3e7e77d1b515 +Author: ZhouJ-sh <32321321@qq.com> +Date: Tue Dec 30 18:05:32 2014 +0800 + + translated 20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md + +commit 06c94466acd9089ff9f641666dbbb695d93900ce +Author: ZhouJ-sh <32321321@qq.com> +Date: Tue Dec 30 16:42:44 2014 +0800 + + 20141229 选题 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md + +commit 5cab52953e40e4dff4763a672888c53beb9d6b97 +Author: Stevearzh +Date: Tue Dec 30 14:43:41 2014 +0800 + + Translating by Stevearzh + +commit 2bd8a0dcaaf73a3b1686ae671704404baeac0dde +Merge: cea1528 2ea4597 +Author: mtunique +Date: Tue Dec 30 12:59:28 2014 +0800 + + Merge remote-tracking branch 'lctt/master' + +commit 2ea4597c9b7318eafbfac34e6674b41956110553 +Merge: 74b278b 0a3f390 +Author: Xingyu.Wang +Date: Tue Dec 30 12:23:45 2014 +0800 + + Merge pull request #2164 from ZTinoZ/master + + Translating by ZTinoZ + +commit 0a3f3906f5d07fc78c2d824665d6b4eb347fa45c +Author: ZTinoZ +Date: Tue Dec 30 11:50:33 2014 +0800 + + Translating by ZTinoZ + +commit e3991b36a9bc66dfc8f94bb5f718c7229ac3d6dc +Merge: 81f30fa 74b278b +Author: ZTinoZ +Date: Tue Dec 30 11:46:31 2014 +0800 + + Merge pull request #4 from LCTT/master + + Update the Repository + +commit 74b278b27b571bff6ddfdca295062f44ee6dcd0e +Merge: af1c4b6 81f30fa +Author: Xingyu.Wang +Date: Tue Dec 30 11:17:42 2014 +0800 + + Merge pull request #2163 from ZTinoZ/master + + Finish the translation by ZTinoZ + +commit af1c4b6b29ec0f87d747408546f3c34982a4e31b +Merge: 94fa3a1 6128f69 +Author: Xingyu.Wang +Date: Tue Dec 30 11:14:42 2014 +0800 + + Merge pull request #2162 from mtunique/patch-2 + + 【翻译中】5 User Space Debugging Tools in Linux + +commit 81f30fa2cabfe5cfa8b41d257538bba1f9657970 +Author: ZTinoZ +Date: Tue Dec 30 11:01:10 2014 +0800 + + Finish the translation by ZTinoZ + +commit cea15280546af2d1f5a47c33af6d775bb2bac6d2 +Merge: bf26401 94fa3a1 +Author: Tao Meng +Date: Tue Dec 30 10:57:00 2014 +0800 + + Merge pull request #1 from LCTT/master + + update + +commit 6128f6946fd72e0960a9145a972bc47b8f9ba602 +Author: Tao Meng +Date: Tue Dec 30 10:49:45 2014 +0800 + + 【翻译中】5 User Space Debugging Tools in Linux + + 【翻译中】5 User Space Debugging Tools in Linux + +commit 94fa3a1be59451035da2d1acf84844b2a89de3c6 +Merge: de39e53 b3d9bb7 +Author: joeren +Date: Tue Dec 30 10:18:00 2014 +0800 + + Merge pull request #2161 from GOLinux/master + + [Translated] 20141229 How to Create Btrfs Filesystem in Linux and its Features.md + +commit b3d9bb7ff393570fc9762f505134cd6dc983f309 +Author: GOLinux +Date: Tue Dec 30 10:16:14 2014 +0800 + + [Translated] 20141229 How to Create Btrfs Filesystem in Linux and its Features.md + +commit de39e5312bbc0b73e1367aae5d7cb99c0c70f763 +Merge: ab2f5a9 a183dfa +Author: joeren +Date: Tue Dec 30 09:07:32 2014 +0800 + + Merge pull request #2160 from GOLinux/master + + [Translating]20141229 How to Create Btrfs Filesystem in Linux and its Features.md + +commit a183dfaec77312c8a3f0baadc7077e068a439bed +Author: joeren +Date: Tue Dec 30 09:07:00 2014 +0800 + + Update 20141229 How to Create Btrfs Filesystem in Linux and its Features.md + +commit d6aa783d443a35125c9278bc93baabae9a8e3a82 +Merge: ddd7606 ab2f5a9 +Author: joeren +Date: Tue Dec 30 09:04:56 2014 +0800 + + Merge pull request #19 from LCTT/master + + Update Repository + +commit ab2f5a9d58613bf63651cd52b6873598f22e3d5b +Author: wxy +Date: Mon Dec 29 22:33:00 2014 +0800 + + PUB:20141219 Attic--Deduplicating backup program + + @GOLinux + +commit 79880065e17ad1248a7f97de8833404eb42f175c +Author: wxy +Date: Mon Dec 29 22:24:42 2014 +0800 + + PUB:20141211 Was 2014 The Year of Linux Desktop + + @ZTinoZ + +commit c1cb502768f3fd3944809571b7d7522c0a34a470 +Author: wxy +Date: Mon Dec 29 22:16:17 2014 +0800 + + PUB:20140818 Will Linux ever be able to give consumers what they want + + @zpl1025 + +commit c97974d2a66eaa8ff487b50c7efb2a00e70a0987 +Author: wxy +Date: Mon Dec 29 22:08:11 2014 +0800 + + PUB:20141224 Linux FAQs with Answers--How to install non-free packages on Debian + + @mtunique 翻译的不错! + +commit ae8643533bbac80f49d9f4543877f602180fa2c0 +Merge: c175bbf cc87adf +Author: geekpi +Date: Mon Dec 29 21:43:34 2014 +0800 + + Merge pull request #2159 from geekpi/master + + translated + +commit cc87adfebb04b01a06df2dbf39fa1c073005a68d +Author: zhengsihua +Date: Mon Dec 29 21:41:24 2014 +0800 + + translated + +commit c175bbf0d37c2fc38ccf865894a8325be94e1235 +Author: wxy +Date: Mon Dec 29 21:37:22 2014 +0800 + + PUB:20141008 How To Use Steam Music Player on Ubuntu Desktop + + @H-mudcup 翻译的不错~加油~ + +commit 3ff9ad2ebc41360bd34892e73db4bec6e07aee09 +Author: wxy +Date: Mon Dec 29 21:24:41 2014 +0800 + + PUB:20141219 The 'grinch' isn't a Linux vulnerability, Red Hat says + + @yupmoon 翻译的不错,我一字未易。 + +commit de1dee6f001eec52984b944f764474d6300a9a63 +Merge: 56bad99 8556494 +Author: geekpi +Date: Mon Dec 29 21:01:03 2014 +0800 + + Merge pull request #2158 from geekpi/master + + translating + +commit 8556494c08c8087450e152ffafe77960b6925109 +Author: zhengsihua +Date: Mon Dec 29 20:44:38 2014 +0800 + + translating + +commit 932c6512f6cdda6b8be86214b4399c2bdac0f120 +Author: ZTinoZ +Date: Mon Dec 29 18:14:40 2014 +0800 + + Translating by ZTinoZ + +commit 56bad99e5415123255791fcaecbc94574d53f981 +Author: DeadFire +Date: Mon Dec 29 15:27:10 2014 +0800 + + 20141229-1 选题 + +commit ddd760648cd26206e9c23503526054464432c5c2 +Merge: 6213d88 bf911bd +Author: joeren +Date: Mon Dec 29 09:13:59 2014 +0800 + + Merge pull request #18 from LCTT/master + + Update Repository + +commit 3923955df081bd2e934fff3a71f275f093473eaf +Merge: 8b08356 bf911bd +Author: H-mudcup +Date: Mon Dec 29 08:07:38 2014 +0800 + + Merge pull request #2 from LCTT/master + + 更新2014年12月29日 + +commit bf911bde6cff67b9d626c74911f781c833d38eb5 +Merge: b5ef4a3 bf26401 +Author: Xingyu.Wang +Date: Sun Dec 28 22:54:25 2014 +0800 + + Merge pull request #2155 from mtunique/master + + 【翻译中】20141224 Linux FAQs with Answers--How to install non-free packages on Debian + +commit b5ef4a3d2148495af4821926f2ec869792cf0596 +Merge: 6d421e2 8b08356 +Author: Xingyu.Wang +Date: Sun Dec 28 22:53:17 2014 +0800 + + Merge pull request #2154 from H-mudcup/master + + Translated 20141008 How To Use Steam Music Player on Ubuntu Desktop.md + 没事,原文本来也是要删除的。恭喜你完成了第一篇翻译!我会马上发布~ + +commit 71ef31dc95fa3b531f7fd2a6d81add97ff9f27b5 +Author: ZTinoZ +Date: Sun Dec 28 20:51:48 2014 +0800 + + Translating by ZTinoZ + +commit 6d421e21ca5e1545bbf86f493867c46edc9eb148 +Merge: 6472c49 e587300 +Author: geekpi +Date: Sun Dec 28 18:40:35 2014 +0800 + + Merge pull request #2157 from geekpi/master + + translated + +commit e587300c7caa8bb4a0b5a506e8031cd4c6cb7760 +Author: zhengsihua +Date: Sun Dec 28 18:39:29 2014 +0800 + + translated + +commit 6472c49a12e672ccab370842fc97812e8a6eacb7 +Merge: 268dc0e e5402df +Author: geekpi +Date: Sun Dec 28 17:49:17 2014 +0800 + + Merge pull request #2156 from geekpi/master + + translating + +commit e5402df860eaffc1e2f8029608853e39eddfe855 +Author: zhengsihua +Date: Sun Dec 28 17:47:19 2014 +0800 + + translating + +commit bf26401b0e5c9dea193697a5c777b445fabbb16c +Author: mtunique +Date: Sun Dec 28 15:41:12 2014 +0800 + + 【翻译完成】20141224 Linux FAQs with Answers--How to install non-free packages on Debian + +commit 86489418630ff0192d1287ac8270331aac63e5f2 +Author: mtunique +Date: Sun Dec 28 14:25:11 2014 +0800 + + Translating by mtunique + +commit 8b083563a9861cff2ce34283992afd18f647f360 +Author: H-mudcup +Date: Sun Dec 28 12:54:47 2014 +0800 + + Create 20141008 How To Use Steam Music Player on Ubuntu Desktop.md + +commit 71cff408b174ef03c50ce9537a8053095cb30903 +Author: H-mudcup +Date: Sun Dec 28 12:50:54 2014 +0800 + + Delete 20141008 How To Use Steam Music Player on Ubuntu Desktop.md + +commit e8d26c2bdfcfa5cec796325cc21658306433db6a +Author: H-mudcup +Date: Sun Dec 28 12:26:48 2014 +0800 + + Update 20141008 How To Use Steam Music Player on Ubuntu Desktop.md + +commit 268dc0eadd15d7594a7705304b872c1a067f95a1 +Merge: 77a96b8 4782651 +Author: runningwater +Date: Sat Dec 27 23:00:08 2014 +0800 + + Merge pull request #2153 from runningwater/master + + 翻译中 by runningwater + +commit 4782651a2d3510a32a338e98e3c8853c5515c776 +Author: runningwater +Date: Sat Dec 27 22:54:25 2014 +0800 + + 翻译中 by runningwater + +commit 77a96b8be04015a26d64081c1ee25fb7ad77d602 +Merge: 2eef77c 34eb334 +Author: runningwater +Date: Sat Dec 27 22:23:15 2014 +0800 + + Merge pull request #2152 from runningwater/master + + 翻译完成 + +commit 34eb334cb73079690da6d50c3e5f33aeb793f29b +Author: runningwater +Date: Sat Dec 27 22:18:21 2014 +0800 + + 翻译完成 + +commit 2eef77cedb7d037905b0baf298028f481dc49e66 +Merge: 8893327 e4d68ad +Author: geekpi +Date: Sat Dec 27 12:01:26 2014 +0800 + + Merge pull request #2151 from geekpi/master + + translated + +commit e4d68ad946aa6681705e0876fa3ea3b5fbd427e7 +Author: zhengsihua +Date: Sat Dec 27 11:58:41 2014 +0800 + + translated + +commit 62de838381f98bf53dd8cf19a339f4b463f3d2eb +Author: zhengsihua +Date: Sat Dec 27 11:14:34 2014 +0800 + + translating + +commit 88933273fa784867fce3310f1703b8b1a14c509d +Merge: 28a0950 bbe861a +Author: geekpi +Date: Fri Dec 26 21:29:26 2014 +0800 + + Merge pull request #2150 from geekpi/master + + translated + +commit bbe861a9c8de30cacdfad16046c92bb4403e3b41 +Author: zhengsihua +Date: Fri Dec 26 21:27:07 2014 +0800 + + translated + +commit 28a0950f812670bda7fd7aa9c6a03ef226a30b24 +Merge: e079c94 de67c15 +Author: geekpi +Date: Fri Dec 26 20:36:10 2014 +0800 + + Merge pull request #2149 from geekpi/master + + translating + +commit de67c15c07237fc464939ee35a6f543de530a09a +Author: zhengsihua +Date: Fri Dec 26 20:32:32 2014 +0800 + + translating + +commit bdc7f0da338fdf3201d90a86286130b13a682a67 +Merge: 2955a22 e079c94 +Author: H-mudcup +Date: Fri Dec 26 18:21:55 2014 +0800 + + Merge pull request #1 from LCTT/master + + 更新2014年12月26日 + +commit e079c94dcbba39bb1747803b4984a9a5dde2ac76 +Author: DeadFire +Date: Fri Dec 26 16:51:06 2014 +0800 + + 20141226-2 选题 + +commit 4ca1c3dc87ea51e77702afc126b2be2bac3869d5 +Author: ZTinoZ +Date: Fri Dec 26 15:56:59 2014 +0800 + + Translating by ZTinoZ + +commit a6eca5d1cd2c3edce28c9a02f0eb9457071495d6 +Author: DeadFire +Date: Fri Dec 26 14:52:02 2014 +0800 + + 20141226-1 选题 + +commit 90e28a3b7cbdf9cd018980c8864b13cdcb739a68 +Merge: beb172b 9ac2839 +Author: Xingyu.Wang +Date: Fri Dec 26 14:26:59 2014 +0800 + + Merge pull request #2147 from disylee/master + + Translated by disylee + +commit beb172b1d17386bd1e2e5ffd443b44575c166e08 +Merge: 2196b81 6a389b5 +Author: Xingyu.Wang +Date: Fri Dec 26 14:26:17 2014 +0800 + + Merge pull request #2146 from H-mudcup/patch-1 + + Update 20141008 How To Use Steam Music Player on Ubuntu Desktop.md + +commit 2196b810b6b14e0593ebc034eab217bd621801ce +Merge: 9d73eb5 005ce23 +Author: Xingyu.Wang +Date: Fri Dec 26 14:26:03 2014 +0800 + + Merge pull request #2145 from Vic020/patch-24 + + Update 20141224 Linux FAQs with Answers--How to install Kingsoft Office ... + +commit 9d73eb5a0ee79cba76aeab065d8665d97196bdc8 +Merge: 2955a22 6213d88 +Author: joeren +Date: Fri Dec 26 10:29:52 2014 +0800 + + Merge pull request #2148 from GOLinux/master + + [Translated] 20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md + +commit 6213d88fe8b83fcc288f09337e6ded15af600662 +Merge: dfa5842 2955a22 +Author: joeren +Date: Fri Dec 26 10:28:45 2014 +0800 + + Merge pull request #17 from LCTT/master + + Update Repository + +commit dfa5842c74e41919c0894b37f767479103c3d50b +Author: GOLinux +Date: Fri Dec 26 10:25:20 2014 +0800 + + [Translated] 20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md + +commit 9ac2839a5250dae875f7276063ccc45ddc81d0a0 +Author: disylee +Date: Fri Dec 26 02:04:23 2014 +0800 + + Translated by disylee + +commit 6a389b5471a7a793bfd5699b98e7f650ed40379d +Author: H-mudcup +Date: Thu Dec 25 23:09:29 2014 +0800 + + Update 20141008 How To Use Steam Music Player on Ubuntu Desktop.md + + Translating by H-mudcup + +commit 2955a222bb9aba254a11ba57bd2e3fbd385e7422 +Author: wxy +Date: Thu Dec 25 21:54:09 2014 +0800 + + 晋升 runningwater 为 core + +commit b1ffe063d1accf4df1152a67ae529f73f4bfb297 +Author: wxy +Date: Thu Dec 25 21:53:41 2014 +0800 + + PUB:20141119 10 SCP Commands to Transfer Files or Folders in Linux + + @ZTinoZ + +commit 005ce238f59ef692fcad41a92eed18ae9674e6bd +Author: Vic___ +Date: Thu Dec 25 21:13:35 2014 +0800 + + Update 20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md + +commit 4d1008437a1d6f612a875f259fa934686b345c7e +Author: ZTinoZ +Date: Thu Dec 25 17:55:07 2014 +0800 + + Translating by ZTinoZ + +commit e6966181f74065b07f0a221c6fb62aa434301ab9 +Author: wxy +Date: Thu Dec 25 11:06:18 2014 +0800 + + PUB:20141118 Linux FAQs with Answers--How to install phpMyAdmin on CentOS + + @ZTinoZ + +commit e20bf8816c3d190c4f34f4a91a2fdfe2736376b5 +Author: wxy +Date: Thu Dec 25 10:47:21 2014 +0800 + + PUB:20140915 Make Downloading Files Effortless + + @zpl1025 + +commit 16622478f52e8c3712b2f6f47980eec2cdc797d5 +Merge: ba0faf4 ddde7ce +Author: Xingyu.Wang +Date: Thu Dec 25 13:02:24 2014 +0800 + + Merge pull request #2144 from ZTinoZ/master + + Translating by ZTinoZ + +commit ddde7ce69dfba1cc974e7efb2287de604b386d3d +Author: ZTinoZ +Date: Thu Dec 25 12:04:23 2014 +0800 + + Translating by ZTinoZ + +commit 7720875b8dca1ffbfd8f70a497947b55a87709ce +Merge: 8527820 ba0faf4 +Author: ZTinoZ +Date: Thu Dec 25 11:35:17 2014 +0800 + + Merge pull request #3 from LCTT/master + + Update the Repositories + +commit ba0faf47d88accd9ebd96419715611de538e8f94 +Merge: 6b448d8 8527820 +Author: Xingyu.Wang +Date: Thu Dec 25 11:06:45 2014 +0800 + + Merge pull request #2143 from ZTinoZ/master + + Finish the translation by ZTinoZ + +commit 852782056e92d0a160ef1e00639f659f2767ab86 +Author: ZTinoZ +Date: Thu Dec 25 10:57:59 2014 +0800 + + Finish the translation by ZTinoZ + +commit 6b448d82636cb660bd3dc13f1912340c2700fe92 +Author: wxy +Date: Thu Dec 25 10:22:53 2014 +0800 + + PUB:20140910 Why Do Some Old Programming Languages Never Die + + @runningwater + +commit 7ff13e77dc81bd2cc69c2bcb3e69dae8fc1965a4 +Merge: 0ec62b6 e7864a8 +Author: joeren +Date: Thu Dec 25 08:39:26 2014 +0800 + + Merge pull request #2142 from GOLinux/master + + [Translated] 20141222 A Great Tool To Show Linux Command Progress Like ETA.md + +commit e7864a8716c6086e3d891f29c333bc0619707299 +Author: GOLinux +Date: Thu Dec 25 08:36:29 2014 +0800 + + [Translated] 20141222 A Great Tool To Show Linux Command Progress Like ETA.md + +commit 3893ee8c5f6f41c3c37a25193833367701ae1374 +Author: ZTinoZ +Date: Wed Dec 24 17:58:37 2014 +0800 + + Translating by ZTinoZ + +commit 0ec62b6055241db57f18a2aee95bd9d99812321c +Author: DeadFire +Date: Wed Dec 24 16:52:39 2014 +0800 + + 20141224-1 选题 + +commit b27de43b7456e86f7565de8ceca8f1ed26401ce0 +Merge: 3f605ee 514c1dc +Author: joeren +Date: Wed Dec 24 16:19:54 2014 +0800 + + Merge pull request #2141 from GOLinux/master + + [Translating]20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md + +commit 514c1dcc67f146a32680dbc7547f7297ba8dc10a +Author: joeren +Date: Wed Dec 24 16:19:16 2014 +0800 + + Update 20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md + +commit 3f605ee665c2703b98c0a850b1ebf86896ab63f7 +Merge: 9f8ddd2 0d14c15 +Author: joeren +Date: Wed Dec 24 16:17:07 2014 +0800 + + Merge pull request #2140 from GOLinux/master + + [Translating]20141222 A Great Tool To Show Linux Command Progress Like ETA.md + +commit 0d14c152732feac36b06dc77d72063555fa285b4 +Author: joeren +Date: Wed Dec 24 16:16:07 2014 +0800 + + Update 20141222 A Great Tool To Show Linux Command Progress Like ETA.md + +commit 9f8ddd2df48cae5683e21eaac78ea2011b26ce84 +Merge: 7631797 32f484e +Author: joeren +Date: Wed Dec 24 10:12:11 2014 +0800 + + Merge pull request #2139 from GOLinux/master + + [Translated] 20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md + +commit 32f484e215636f830df94750ef81d3e1b41c94e1 +Author: GOLinux +Date: Wed Dec 24 10:09:36 2014 +0800 + + [Translated] 20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md + +commit 7631797c0ef70c693b65f1b676fbbed8ce674c87 +Merge: 9afa538 e08247d +Author: joeren +Date: Wed Dec 24 08:33:28 2014 +0800 + + Merge pull request #2138 from GOLinux/master + + [Translating]20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md + +commit e08247d21a4e070836ed5b184bb510c20971f0b4 +Author: joeren +Date: Wed Dec 24 08:32:53 2014 +0800 + + Update 20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md + +commit a68b42975bf1901e6a57acd737ce9ac0b61f5ea1 +Merge: 1bb3f96 9afa538 +Author: joeren +Date: Wed Dec 24 08:32:05 2014 +0800 + + Merge pull request #16 from LCTT/master + + Update Repository + +commit 9afa5387f3d89c4e8bfd7a1987b012bd08fcc2dc +Author: DeadFire +Date: Tue Dec 23 16:47:50 2014 +0800 + + 20141223-3 选题 + +commit 059350f824e7fb0e6292b60e84cccdc84e05591e +Author: DeadFire +Date: Tue Dec 23 16:42:23 2014 +0800 + + 20141223-2 选题 + +commit dcad76a0f9e4b0ce71fe58ef7df00aad5bc62086 +Author: DeadFire +Date: Tue Dec 23 13:39:39 2014 +0800 + + 20141223-1 选题 + +commit 1bb3f967b17c0650d30ce61c1f3b87cc0a382a6d +Merge: ff344ec 683c969 +Author: joeren +Date: Tue Dec 23 13:09:02 2014 +0800 + + Merge pull request #15 from LCTT/master + + Update Repository + +commit 683c96900a25b5c12a34a519592dc0b7b5f00e27 +Merge: 614911f b7fb010 +Author: joeren +Date: Tue Dec 23 13:07:50 2014 +0800 + + Merge pull request #2137 from yupmoon/master + + tranlated + +commit a1a057e40fa1545e7d17dc88782c6e2a0c35dd2c +Author: ZTinoZ +Date: Tue Dec 23 00:03:00 2014 +0800 + + Translating by ZTinoZ + +commit b7fb0102844a8ae8e0fa74e8c7fe19cc99fcbe60 +Author: yupmoon +Date: Mon Dec 22 22:19:48 2014 +0800 + + tranlated + +commit 614911fde4e657f699718ba833a805d9c4fc483c +Author: wxy +Date: Mon Dec 22 21:37:51 2014 +0800 + + PUB:20141112 Intro to Systemd Runlevels and Service Management Commands + + @coloka + +commit 2cb3b0820d66168585297d70367d2f9926ad6794 +Author: wxy +Date: Mon Dec 22 21:12:49 2014 +0800 + + PUB:20141030 rsync Command to Exclude a List of Files and Directories in Linux + + @GOLinux + +commit 262a2df7b592a12177d8c3d38df45ec3b9ef145f +Author: wxy +Date: Mon Dec 22 21:06:35 2014 +0800 + + PUB:20141222 How to use Rsync Command In Linux With Examples + + @geekpi + +commit 1fc675e6b9e9a15f08436625946b09e701d1b3e2 +Merge: e3782e8 0d692e2 +Author: geekpi +Date: Mon Dec 22 20:51:47 2014 +0800 + + Merge pull request #2136 from geekpi/master + + translated + +commit 0d692e270385c6d8f8753a7a3b1b99b5ccef3e8b +Author: zhengsihua +Date: Mon Dec 22 20:48:39 2014 +0800 + + translated + +commit e3782e8f1f4d0b827d64936741c86fe33d6ea254 +Merge: 5bbf79d 53214ad +Author: geekpi +Date: Mon Dec 22 20:28:32 2014 +0800 + + Merge pull request #2135 from geekpi/master + + translating + +commit 53214ad958cdcacb61c3033faa78fc8d847b9d4d +Author: geekpi +Date: Mon Dec 22 07:27:32 2014 -0500 + + translating + +commit 5bbf79dc8c239aa90ca9c075105846b7c84e83e5 +Merge: c481ea2 4d6a428 +Author: Xingyu.Wang +Date: Mon Dec 22 20:16:51 2014 +0800 + + Merge pull request #2134 from yupmoon/master + + ###yupmoon translating### + +commit c481ea218042ad9fabb3d2bbfbd34391a8f25640 +Author: DeadFire +Date: Mon Dec 22 16:36:34 2014 +0800 + + 20141222-3 选题 + +commit 17669ee7a2a2997542965381937c9834f3584381 +Author: DeadFire +Date: Mon Dec 22 15:37:01 2014 +0800 + + 20141222-2 选题 + +commit 44d2576118470007af3df3aa30d1919817c0a74a +Author: DeadFire +Date: Mon Dec 22 14:26:16 2014 +0800 + + 20141222-1 选题 + +commit 4d6a4286880baa269053e49a40af9f6e8b150bf6 +Author: yupmoon +Date: Mon Dec 22 11:17:54 2014 +0800 + + ###yupmoon translating### + +commit 4813316cb3955e346e518027357d8db850d2f95d +Merge: e6ffb9c ff344ec +Author: joeren +Date: Mon Dec 22 10:23:14 2014 +0800 + + Merge pull request #2133 from GOLinux/master + + [Translated] 20141219 Attic--Deduplicating backup program.md + +commit ff344ec2202e80b2846748f840b960b525a67477 +Author: GOLinux +Date: Mon Dec 22 10:19:50 2014 +0800 + + [Translated] 20141219 Attic--Deduplicating backup program.md + +commit e6ffb9c85e388e730846c543d60e1210591f860d +Merge: 78ab7ce 2f4a7a1 +Author: joeren +Date: Mon Dec 22 09:26:14 2014 +0800 + + Merge pull request #2132 from GOLinux/master + + [Translating] 20141219 Attic--Deduplicating backup program.md + +commit 2f4a7a1f067851615057121acf06b9faf233a8a0 +Author: joeren +Date: Mon Dec 22 09:25:44 2014 +0800 + + Update 20141219 Attic--Deduplicating backup program.md + +commit 62faae4910ea47013e7b6736b1968003b3529cc2 +Merge: 4167376 78ab7ce +Author: joeren +Date: Mon Dec 22 09:24:13 2014 +0800 + + Merge pull request #14 from LCTT/master + + Update Repository + +commit 78ab7ce2dc0eb306f7e011c894e908308135db29 +Merge: 9029711 49fbafb +Author: joeren +Date: Mon Dec 22 09:23:35 2014 +0800 + + Merge pull request #2131 from SPccman/master + + How to filter, split or merge pcap files on Linux + +commit 90297119de3e2d3ca5433f2bf2c2dd53ce358470 +Author: wxy +Date: Sun Dec 21 23:19:15 2014 +0800 + + PUB:20141120 Postfix tips and Troubleshooting Commands + + @Vic020 + +commit 937f096a63a741fef0cff615f4a89f315f482e6f +Author: wxy +Date: Sun Dec 21 23:08:07 2014 +0800 + + PUB:20141120 5 Best Open Source Web Browser Security Apps + + @yupmoon + +commit 908ca37521c0797cd3dbe697f5c7c24c6e757f23 +Author: wxy +Date: Sun Dec 21 22:40:07 2014 +0800 + + PUB:20141104 Pitivi 0.94 Uses GTK HeaderBar, Squashes Umpteen Bugs + + @ThomazL + +commit 49fbafbafb84afb7ea4353d2a18f99917d29af27 +Author: DoubleC <450760206@qq.com> +Date: Sun Dec 21 21:33:32 2014 +0800 + + complete + + 翻已完成 + +commit 8eca31ef32807bce5b4a304bcae4c66abf2afb43 +Author: DoubleC <450760206@qq.com> +Date: Sun Dec 21 21:27:11 2014 +0800 + + delete source file + + 删除原文 + +commit 5a0c84097c7cf18a705c465e5ae03e2527e640c7 +Merge: bec12e6 801855b +Author: DoubleC <450760206@qq.com> +Date: Sun Dec 21 21:19:15 2014 +0800 + + Merge pull request #12 from LCTT/master + + update + +commit 801855bc1cd6a63984d942115b6180268f860c59 +Merge: fca7f96 b866001 +Author: geekpi +Date: Sun Dec 21 14:39:31 2014 +0800 + + Merge pull request #2130 from geekpi/master + + translated + +commit b866001dbd018b90e2946fb2f3a514ae33774476 +Author: zhengsihua +Date: Sun Dec 21 14:37:48 2014 +0800 + + translated + +commit fca7f966b0d361bdcc7165c408276a24f821359e +Merge: d551188 5c7518a +Author: geekpi +Date: Sun Dec 21 13:34:50 2014 +0800 + + Merge pull request #2129 from geekpi/master + + translating + +commit 5c7518a24514333aa9674d6f5a183b38880a645e +Author: zhengsihua +Date: Sun Dec 21 13:32:19 2014 +0800 + + translating + +commit d5511888d38be2efbfbed5c5904f045029aab98f +Author: wxy +Date: Sun Dec 21 11:25:13 2014 +0800 + + PUB:20141204 How To Drop Database In Oracle 11 Without Using DBCA + + @Vic020 + +commit 0f1eb122e3f8229e674cc42d6d86d195935d259d +Author: wxy +Date: Sun Dec 21 11:19:10 2014 +0800 + + PUB:20141120 How to visualize memory usage on Linux + + @coloka + +commit 0a5e8200b948e8373cc64881d1e33633726b917b +Author: wxy +Date: Sun Dec 21 11:07:54 2014 +0800 + + PUB:20141127 Some Sentences about Java + + @a598799539 + +commit a741a4ca81d8f6ad6b789e41e056b222ffff3cfc +Author: wxy +Date: Sun Dec 21 10:59:36 2014 +0800 + + PUB:20141021 How to monitor a log file on Linux with logwatch + + @runningwater + +commit 234a0ae94eb2fdf1ab4b26f7220f513074691d19 +Author: wxy +Date: Sun Dec 21 10:31:59 2014 +0800 + + PUB:20141029 Shell Scripting--Checking Conditions with if + + @ThomazL + +commit b3235ccc86fec902dcec99128edf73d379e826f7 +Author: wxy +Date: Sat Dec 20 21:54:46 2014 +0800 + + 清除过期文章,回收过期未完成文章 + + 以下诸位逾期未完成的文章收回: @barney-ro @mdjsjdqe @felixonmars (3篇!) @CHINAANSHE + @forsil + +commit dffdcdb1183accaf119c0f1e1518c0f6cb965bc6 +Author: wxy +Date: Sat Dec 20 21:39:26 2014 +0800 + + 更正格式 + +commit de02f24cfb57be4685b1b91ec1b07d4bf306c594 +Author: wxy +Date: Sat Dec 20 21:39:13 2014 +0800 + + 过期 + + @geekpi 十分抱歉,这篇已经过期较长时间了,不合适发布了。 + +commit a8e6c6ad0f5b8bc191f646e06cf017e6cba1bd88 +Merge: 7d0d098 6f9d4bd +Author: Xingyu.Wang +Date: Sat Dec 20 21:16:38 2014 +0800 + + Merge pull request #2128 from Stevearzh/master + + [translated by Stevearzh]20141211 NetHack.md + +commit 6f9d4bd84a6cb56dcff67c5345a4f522efdb6b7b +Author: Stevearzh +Date: Sat Dec 20 16:41:03 2014 +0800 + + translated by Stevearzh + +commit 7d0d0986794c10c86f0b3a85f948d763d674b0f5 +Merge: f5f0271 0674555 +Author: geekpi +Date: Sat Dec 20 12:44:17 2014 +0800 + + Merge pull request #2127 from geekpi/master + + translated + +commit 0674555003b85b2a52cb3ada1651ad35664d0c14 +Author: zhengsihua +Date: Sat Dec 20 12:43:00 2014 +0800 + + translated + +commit f5f0271abda5e8f0d605d2c7de92a8b6048aa110 +Merge: 858d6fa 85875e9 +Author: geekpi +Date: Sat Dec 20 11:56:00 2014 +0800 + + Merge pull request #2126 from geekpi/master + + translating + +commit 85875e9a38476de3ac755e73eddd231e4edbde61 +Author: zhengsihua +Date: Sat Dec 20 11:55:04 2014 +0800 + + translating + +commit 858d6fa45697b68ca12f84bf9b64d0bba87495c3 +Merge: aa0cd7f 690324d +Author: geekpi +Date: Fri Dec 19 22:47:51 2014 +0800 + + Merge pull request #2125 from geekpi/master + + translated + +commit 690324d4a9f5c52a76c680f018355e675100db8e +Author: zhengsihua +Date: Fri Dec 19 22:40:23 2014 +0800 + + translated + +commit aa0cd7f3f3ee048907d8222ae31536c51c52034f +Author: wxy +Date: Fri Dec 19 00:06:42 2014 +0800 + + PUB:20141024 Amazing 25 Linux Performance Monitoring Tools + + @andyxue + +commit f9bcb73ff1e52a45d04e9638fb32568670de21ca +Author: wxy +Date: Thu Dec 18 22:18:20 2014 +0800 + + PUB:20141013 Migrating LVM Partitions to New Logical Volume (Drive)--Part VI + + @GOLinux + +commit ca0e7cb31b530d525940b4722ee0ff1db516fa3d +Author: geekpi +Date: Fri Dec 19 21:19:33 2014 +0800 + + Update 20141219 Creating your First App on Linux with Python and Flask.md + +commit e760c6d12101932f01eca6efdeed0e15f2052bca +Author: geekpi +Date: Fri Dec 19 21:19:08 2014 +0800 + + Update 20141219 Creating your First App on Linux with Python and Flask.md + +commit b317ee66fac0ab178713efd7149db0b15e822631 +Merge: 08115c8 5ea8db6 +Author: geekpi +Date: Fri Dec 19 20:56:01 2014 +0800 + + Merge pull request #2124 from SPccman/patch-12 + + spccman................ + +commit bd6db6f132fb71e8098d004fcf7ad9459bb684dd +Author: ZTinoZ +Date: Fri Dec 19 17:57:23 2014 +0800 + + Translating by ZTinoZ + +commit 5ea8db6566c1850a460c9daa9545cd115760ffd6 +Author: DoubleC <450760206@qq.com> +Date: Fri Dec 19 17:35:40 2014 +0800 + + spccman................ + + 申领文章 + +commit 08115c855421316e5438b65ff669da2d5e8f0144 +Author: DeadFire +Date: Fri Dec 19 16:08:49 2014 +0800 + + 20141219-6 选题 + +commit 08a34699d6766a95723ba1759bd7fa0cf7d85ca7 +Author: DeadFire +Date: Fri Dec 19 15:10:59 2014 +0800 + + 20141219-5 选题 + +commit 5f9f46f87b62788df0a73a49dcaf2cbd5f485cd5 +Author: DeadFire +Date: Fri Dec 19 11:30:25 2014 +0800 + + 20141219-4 选题 + +commit 6703a353ee83ed56572d3bc8a715be07d2630999 +Author: DeadFire +Date: Fri Dec 19 11:18:34 2014 +0800 + + 20141219-3 选题 + +commit 3460e6ed4fd6e8c2122b17d6050e22e880216945 +Author: DeadFire +Date: Fri Dec 19 10:50:38 2014 +0800 + + 20141219-2 选题 + +commit 69f68536769e9d6b4d4e20a8fdefb33891a4fd65 +Author: DeadFire +Date: Fri Dec 19 10:22:36 2014 +0800 + + 20141219-1 选题 + +commit 4167376769e5c8d5ed17b40d30b2f85c0e3c0612 +Merge: 3b87ab6 16bfd25 +Author: joeren +Date: Fri Dec 19 08:42:20 2014 +0800 + + Merge pull request #13 from LCTT/master + + Update Repository + +commit 16bfd25d308fefb34bb7beb5e6e1e972485e7a6b +Merge: 74d6ae5 274277a +Author: geekpi +Date: Thu Dec 18 22:24:24 2014 +0800 + + Merge pull request #2123 from geekpi/master + + translated + +commit 274277a29fb127cf874ea8b74cf397003ea854aa +Author: zhengsihua +Date: Thu Dec 18 22:18:04 2014 +0800 + + translated + +commit 74d6ae5c9bfcbbbe41aaf07a60a870013a13c711 +Merge: 2c49bae ca2a561 +Author: geekpi +Date: Thu Dec 18 22:17:07 2014 +0800 + + Merge pull request #2122 from geekpi/master + + translating + +commit ca2a561ba171f76e154fffcc7a2beccba02e77c2 +Author: zhengsihua +Date: Thu Dec 18 22:15:06 2014 +0800 + + translating + +commit fc073c3cfc82831a49a6cbde550d5aeff4857f4c +Author: ZTinoZ +Date: Thu Dec 18 20:56:35 2014 +0800 + + Translating by ZTinoZ + +commit 2c49baeed82a4d0199f7cd8570a2110504635c70 +Author: wxy +Date: Thu Dec 18 00:34:55 2014 +0800 + + PUB:20141112 How to Remove Music Players from Ubuntu Sound Menu + + @disylee + +commit 5cacaf750349e67deb475da54c3e8d68048c068d +Author: wxy +Date: Thu Dec 18 00:08:35 2014 +0800 + + PUB:20140818 Why Your Company Needs To Write More Open Source Software + + @barney-ro + +commit 6dff097ea10967752d78ff9c87184cfb6810cd4b +Author: wxy +Date: Wed Dec 17 23:42:19 2014 +0800 + + PUB:05 - The history of Android + + @alim0x + +commit 86dbb67ef725febcf36c3dae16978b7b5643ccc4 +Author: wxy +Date: Wed Dec 17 23:31:40 2014 +0800 + + PUB:20141027 How to encrypt files and directories with eCryptFS on Linux + + @GOLinux + +commit 2f4ad746369b6334f94072008dea3dd07ae76da1 +Author: wxy +Date: Wed Dec 17 23:19:04 2014 +0800 + + PUB:20141021 Configuring layer-two peer-to-peer VPN using n2n + + @GOLinux + +commit 2537751954bd04f3fa4720a893113d9f4d07bd54 +Merge: b721315 a55029a +Author: Xingyu.Wang +Date: Wed Dec 17 22:11:27 2014 +0800 + + Merge pull request #2121 from johnhoow/master + + 翻译完成 + +commit b721315edf7ebc7654082f848422505c447c7c69 +Merge: 53e5d19 45f20f6 +Author: Xingyu.Wang +Date: Wed Dec 17 22:11:10 2014 +0800 + + Merge pull request #2120 from alim0x/master + + [translated]10 - The history of Android.md + +commit 03202e2dfdbe5a3c988a5e96573619e34446539d +Author: ZTinoZ +Date: Wed Dec 17 20:54:13 2014 +0800 + + Translating by ZTinoZ + +commit 53e5d1942d52ff0db67f5c334c5dc07f37090c6b +Author: DeadFire +Date: Wed Dec 17 16:27:13 2014 +0800 + + 20141217-2 选题 + +commit a55029a9f62ccc457bbaf6d6a0fed64ce1ba2ad7 +Author: johnhoow +Date: Wed Dec 17 15:12:20 2014 +0800 + + modify + +commit 36c48afc1d55cd0c604c9f4fe3f13d9095eedf8c +Author: johnhoow +Date: Wed Dec 17 15:10:20 2014 +0800 + + modify + +commit eded5eee9b6c3d8202a8c4812e546c510537bf9b +Author: johnhoow +Date: Wed Dec 17 15:04:57 2014 +0800 + + translated + +commit 45f20f6a52bae3c06c5186c3bd6f3d544eb8a206 +Author: alim0x +Date: Wed Dec 17 13:11:36 2014 +0800 + + [translated]10 - The history of Android.md + +commit 3b87ab6c50e0a9e4c00f022891a99f00f653bb91 +Merge: fda2d2a 24eaa2d +Author: joeren +Date: Wed Dec 17 11:55:11 2014 +0800 + + Merge pull request #12 from LCTT/master + + Update Repository + +commit 24eaa2d4de95e363da5746b72f5db05d7643d8fa +Author: DeadFire +Date: Wed Dec 17 10:57:09 2014 +0800 + + 20141217-1 选题 + +commit 48b58798712c2e2ed4974a2d429e4b2486c2da5b +Merge: f66dd60 eeb84d9 +Author: Xingyu.Wang +Date: Wed Dec 17 10:07:48 2014 +0800 + + Merge pull request #2119 from yupmoon/master + + translating Open source all over the world.md + +commit eeb84d9941ff75f93487f187f64477bc6c0f1e43 +Author: yupmoon +Date: Wed Dec 17 09:55:28 2014 +0800 + + yupmoon translating... + +commit ffd2d2188af2f0b451f538deba5506dd49a701b1 +Merge: 0a65b81 f66dd60 +Author: yupmoon +Date: Wed Dec 17 09:48:38 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit f66dd6081854bd04eb471cff9bb4f86b04bf2fd6 +Author: wxy +Date: Wed Dec 17 00:12:04 2014 +0800 + + PUB:20141017 How to check hard disk health on Linux using smartmontools + + @KayGuoWhu + +commit fd54eb2202aea934efbc05665087ae9394e60c42 +Author: wxy +Date: Tue Dec 16 23:55:43 2014 +0800 + + PUB:20141204 Readers' Choice Awards 2014--Linux Journal + + @yupmoon 翻译的不错! + +commit 4175ca0b64dbb28ba6f5e93a1f0c94c57a5de29b +Author: wxy +Date: Mon Dec 15 16:29:14 2014 +0800 + + PUB:20141211 Linux Kernel 3.18 Released, This Is What' s New + + @geekpi + +commit f627136220594de83b9c904ab7b2db14aaf4a4cc +Author: wxy +Date: Mon Dec 15 16:18:04 2014 +0800 + + PUB:20141013 Manage Multiple Logical Volume Management Disks using Striping I O--Part V + + @GOLinux + +commit e3e23caf5c1494f2af793919bee6a72f19c0cb2e +Merge: 67339eb bec12e6 +Author: Xingyu.Wang +Date: Tue Dec 16 23:19:36 2014 +0800 + + Merge pull request #2118 from SPccman/master + + How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS & How to create a custom backup plan for Debian with backupninja + +commit 67339eb6dd63394c2a115eb1e8deeb64fc50687a +Merge: d1eb322 ef10044 +Author: Xingyu.Wang +Date: Tue Dec 16 23:18:10 2014 +0800 + + Merge pull request #2117 from yupmoon/master + + choice awards ...translated + +commit d1eb3228fbe143ab7b9947224b37984cedbc9110 +Merge: 103c336 34ea47e +Author: Xingyu.Wang +Date: Tue Dec 16 23:17:00 2014 +0800 + + Merge pull request #2116 from ZTinoZ/master + + Translating by ZTinoZ + +commit bec12e6fcc5a86556e6f36aee65cdff0132f32d4 +Author: DoubleC <450760206@qq.com> +Date: Tue Dec 16 20:01:34 2014 +0800 + + 翻译完成 + +commit 246b2f862eb854f5c93f7b691cab9c73f90b8652 +Author: DoubleC <450760206@qq.com> +Date: Tue Dec 16 20:00:45 2014 +0800 + + 翻译完成 + + 这篇文章,之前应该还有一篇,本来要一起发上来的,群里面催了一下,就算了,这篇先发 + +commit 97fd96a1eff948f3a09b9502b5555dcc0e9c3172 +Author: DoubleC <450760206@qq.com> +Date: Tue Dec 16 19:57:43 2014 +0800 + + delete source file + + 删除原文 + +commit d64adef0e96fc9b0f19e602cfd26fc1d4d58eec9 +Author: DoubleC <450760206@qq.com> +Date: Tue Dec 16 19:57:08 2014 +0800 + + delete source file + +commit 34a4de8535d2eee6da877a96653898b380cc44cc +Merge: 1e95d12 103c336 +Author: DoubleC <450760206@qq.com> +Date: Tue Dec 16 19:47:22 2014 +0800 + + Merge pull request #11 from LCTT/master + + update + +commit 0a65b817548bd4471d0c01eb820199255a21dda9 +Merge: ef10044 103c336 +Author: yupmoon +Date: Tue Dec 16 16:56:25 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit ef10044316b5cc97a62d3ab0d9548165e03c532a +Author: yupmoon +Date: Tue Dec 16 16:52:31 2014 +0800 + + choice awards ...translated + +commit 34ea47e2c974dfa47167b2b815a1d2bf30aae55b +Author: ZTinoZ +Date: Tue Dec 16 09:32:20 2014 +0800 + + Translating by ZTinoZ + +commit 98d969797ea7d09a3355d3e9348494cedf6f8944 +Merge: fb7ea0e 103c336 +Author: ZhouJ-sh <32321321@qq.com> +Date: Tue Dec 16 09:29:53 2014 +0800 + + Merge pull request #1 from LCTT/master + + Merge from base + +commit 0f79c28187de7c512f059d2d89515175fb0b1ee2 +Merge: 174a778 103c336 +Author: ZTinoZ +Date: Tue Dec 16 09:27:57 2014 +0800 + + Merge pull request #2 from LCTT/master + + Update the repositories + +commit 103c336cb4e6994854a97ebbe3729abf92cbea2c +Merge: fc24411 fda2d2a +Author: joeren +Date: Tue Dec 16 08:44:59 2014 +0800 + + Merge pull request #2115 from GOLinux/master + + [Translated] 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md + +commit fda2d2ad7fd05262b6a4d1a63d7c54842bf6dd10 +Author: GOLinux +Date: Tue Dec 16 08:42:14 2014 +0800 + + [Translated] 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md + +commit fc2441129ac13bc6b929a10fdd2155910a94b680 +Merge: b435d45 d9ae8c1 +Author: joeren +Date: Tue Dec 16 08:14:55 2014 +0800 + + Merge pull request #2114 from GOLinux/master + + [Translating] 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md + +commit d9ae8c1739e941fd0ffa83fa136ab3e3d50ff7f5 +Author: joeren +Date: Tue Dec 16 08:14:24 2014 +0800 + + Update 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md + +commit 9490898a5e8430ad11dca7d7307fcf52e9345199 +Merge: 8d9777a b435d45 +Author: joeren +Date: Tue Dec 16 08:13:17 2014 +0800 + + Merge pull request #11 from LCTT/master + + Update Repository + +commit b435d45abcc48326659ca53d3be3b2fe5b499412 +Merge: 5f03ba9 174a778 +Author: joeren +Date: Tue Dec 16 08:12:45 2014 +0800 + + Merge pull request #2113 from ZTinoZ/master + + Finish the translation by ZTinoZ + +commit 174a778200dd9ddd22e964ad016096f054fde705 +Author: ZTinoZ +Date: Mon Dec 15 20:50:20 2014 +0800 + + Finish the translation by ZTinoZ + +commit 8d9777a37eedabb0a6afd46125fffb3fd1f63a88 +Merge: 193c789 5f03ba9 +Author: joeren +Date: Mon Dec 15 09:43:08 2014 +0800 + + Merge pull request #10 from LCTT/master + + Update Repository + +commit 5f03ba9eaaef6c51b42cb22cd72f606709c6bf80 +Author: wxy +Date: Sun Dec 14 19:24:23 2014 +0800 + + PUB:20141009 How to set up RAID 10 for high performance and fault tolerant disk I or O on Linux + + @KayGuoWhu + +commit 50ea541534d677c0c0508b99d80b68fc3227a216 +Merge: 45b2034 553b97a +Author: geekpi +Date: Sun Dec 14 14:24:29 2014 +0800 + + Merge pull request #2112 from geekpi/master + + [Translated] What is a good free control panel for VPS.md + +commit 553b97ac39432d37ddf721607d6a2d726df4e61b +Author: zhengsihua +Date: Sun Dec 14 14:18:08 2014 +0800 + + [Translated] What is a good free control panel for VPS.md + +commit 45b203456d03ddba9c22de083139cd0176d253ac +Merge: 9d595b9 3de7f54 +Author: geekpi +Date: Sun Dec 14 13:16:43 2014 +0800 + + Merge pull request #2111 from geekpi/master + + [Translating] What is a good free control panel for VPS.md + +commit 3de7f543e2d4f3284e16fae6f137956811648be2 +Author: zhengsihua +Date: Sun Dec 14 13:15:40 2014 +0800 + + [Translating] What is a good free control panel for VPS.md + +commit 9d595b919ce63edaf0cb51fcefe5e1211ce1a6a2 +Merge: 961a502 3179279 +Author: geekpi +Date: Sun Dec 14 13:07:42 2014 +0800 + + Merge pull request #2110 from runningwater/master + + 【翻译中 by runningwater】 20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X + +commit 317927958edbe926639647895d400240254ded0b +Author: runningwater +Date: Sat Dec 13 20:02:23 2014 +0800 + + 翻译中 by runningwater + +commit 961a502a4aeac47bf71b8b00bb9b2e7e4431e0de +Merge: 2522c4a 7aeeb75 +Author: geekpi +Date: Sat Dec 13 13:02:49 2014 +0800 + + Merge pull request #2109 from geekpi/master + + [Translated] How to use Evernote from the command line on Linux.md + +commit 7aeeb75205813f2e8739ef4c2e0e9662b425aa94 +Author: zhengsihua +Date: Sat Dec 13 13:01:07 2014 +0800 + + [Translated] How to use Evernote from the command line on Linux.md + +commit 2522c4af102f69d5a9afd75321c83d9145f03d49 +Merge: 47f3bba 473785a +Author: geekpi +Date: Sat Dec 13 12:10:37 2014 +0800 + + Merge pull request #2108 from geekpi/master + + [Translating] How to use Evernote from the command line on Linux + +commit 473785ad1920b82d97a2716dea5287dc72962991 +Author: zhengsihua +Date: Sat Dec 13 12:01:57 2014 +0800 + + [Translating] How to use Evernote from the command line on Linux + +commit 47f3bba0d769d3217a5cd47f6f5c996668d66182 +Merge: 881d47a 434de3b +Author: Xingyu.Wang +Date: Sat Dec 13 01:27:13 2014 +0800 + + Merge pull request #2107 from geekpi/master + + [Translated] Linux Kernel 3.18 Released, This Is What’s New + +commit 434de3b52a29302875c41912bf7487baaadb2dc5 +Author: zhengsihua +Date: Fri Dec 12 22:12:44 2014 +0800 + + [Translated] Linux Kernel 3.18 Released, This Is What’s New + +commit 881d47afdb1fb4669c3913593ab5981777425136 +Merge: d902163 b875372 +Author: geekpi +Date: Fri Dec 12 21:38:05 2014 +0800 + + Merge pull request #2106 from geekpi/master + + [Translating] Linux Kernel 3.18 Released, This Is What’s New + +commit b875372fe0c1dcb282883738d820f2a69ac06a66 +Author: zhengsihua +Date: Fri Dec 12 21:18:12 2014 +0800 + + [Translating] Linux Kernel 3.18 Released, This Is What’s New + +commit 3a033231a90ce6d076a1b80a0d3657aa0aa76cbb +Author: ideas4u +Date: Fri Dec 12 16:21:39 2014 +0800 + + Create 20141211 How to use matplotlib for scientific plotting on Linux + +commit d902163264553da73b36788bc7d405974e0f065c +Author: carolinewuyan <309866211@qq.com> +Date: Fri Dec 12 11:03:58 2014 +0800 + + 已发布 + +commit 489d3b5224247f8373ae4beffaf02bb8e12d007d +Author: carolinewuyan <309866211@qq.com> +Date: Fri Dec 12 11:01:08 2014 +0800 + + 已校对 + +commit 193c78927bb15e7a16771961f3d7dfae6eb1db79 +Merge: 99bb0fc 48dd231 +Author: joeren +Date: Fri Dec 12 10:27:18 2014 +0800 + + Merge pull request #9 from LCTT/master + + Update Repository + +commit 48dd231c3d68b0a7de27ab2b15e9356210339550 +Merge: 46ac8d6 99bb0fc +Author: joeren +Date: Fri Dec 12 10:25:56 2014 +0800 + + Merge pull request #2100 from GOLinux/master + + Delete duplicated files + +commit 99bb0fc98f8dd0ae540fed760c2cccfbfefa4703 +Author: GOLinux +Date: Fri Dec 12 10:23:21 2014 +0800 + + Delete duplicated files + +commit 46ac8d67cdbfacd5dd4c3c38a4c3071642ceebc7 +Merge: 15a8c87 ddaf9d4 +Author: joeren +Date: Fri Dec 12 10:19:47 2014 +0800 + + Merge pull request #2099 from GOLinux/master + + 两篇重复文章,已有人领,请勿重复申领。 + +commit ddaf9d4c1ee0e5061e0e5a2705c1f1bf5b9f8dc0 +Author: joeren +Date: Fri Dec 12 10:18:37 2014 +0800 + + Update 20141205 How to use matplotlib for scientific plotting on Linux.md + +commit 323481080d169c6d6cec55e01e2f7247300136e1 +Author: joeren +Date: Fri Dec 12 10:17:14 2014 +0800 + + Update 20141211 How to configure a syslog server with rsyslog on Linux.md + +commit af0a365de2f7b61f355595f2dabb03e4473941bd +Merge: 9ff2c39 15a8c87 +Author: joeren +Date: Fri Dec 12 09:58:21 2014 +0800 + + Merge pull request #8 from LCTT/master + + Update Repository + +commit 15a8c875469a8655e5fa697859a62db61d2e845e +Merge: ef92116 c6883a4 +Author: joeren +Date: Fri Dec 12 09:57:48 2014 +0800 + + Merge pull request #2098 from Stevearzh/master + + Translating by Stevearzh + +commit ef921160cbbf66562f5852f571c346ff2c75a990 +Merge: 47eef26 e7c71dd +Author: joeren +Date: Fri Dec 12 09:57:40 2014 +0800 + + Merge pull request #2097 from ideas4u/patch-1 + + Update 20141211 How to use matplotlib for scientific plotting on Linux.m... + +commit c6883a43a02b6614078d33b3573e708b922abdfd +Author: Stevearzh +Date: Thu Dec 11 23:27:34 2014 +0800 + + Translating by Stevearzh + +commit 47eef26efebb6dd56ef94358838b9d3e978ef4ed +Merge: 888b79d f0baa45 +Author: geekpi +Date: Thu Dec 11 21:37:10 2014 +0800 + + Merge pull request #2094 from Vic020/master + + 忘记推送了~ + +commit 888b79d229ea448e532905ffc5608c313dcc196a +Merge: 7dcf341 a8dd5da +Author: geekpi +Date: Thu Dec 11 21:36:27 2014 +0800 + + Merge pull request #2095 from SPccman/patch-10 + + 文章重复 + +commit 7dcf341999e8e94af6ab9f4c342d48b68501c738 +Merge: 3ad2ea5 0bceb3d +Author: geekpi +Date: Thu Dec 11 21:35:56 2014 +0800 + + Merge pull request #2096 from SPccman/patch-11 + + translating + +commit d98dd820a1e7926e289e643df11cb356adcb01d2 +Author: ZTinoZ +Date: Thu Dec 11 21:01:27 2014 +0800 + + Translating by ZTinoZ + +commit 3ad2ea5e505e6cfbba527ebb558461be3acff51e +Author: carolinewuyan <309866211@qq.com> +Date: Thu Dec 11 20:57:06 2014 +0800 + + 已发布 + +commit f17bb612a0be28921313a4a63e9dda67134138fc +Author: carolinewuyan <309866211@qq.com> +Date: Thu Dec 11 20:52:46 2014 +0800 + + 已校对 + +commit e7c71dd8ef8839f6ecea6a0bbdea01023828e06d +Author: ideas4u +Date: Thu Dec 11 17:59:17 2014 +0800 + + Update 20141211 How to use matplotlib for scientific plotting on Linux.md + +commit 762cfef575fb3bb58459145c896ece565b28432b +Author: DeadFire +Date: Thu Dec 11 17:43:58 2014 +0800 + + 20141211-6 选题 + +commit 0bceb3dac69ce61188e0e5c26b59646d0c5fd580 +Author: DoubleC <450760206@qq.com> +Date: Thu Dec 11 17:39:39 2014 +0800 + + translating + + apply artical + +commit a8dd5da95d05adf2c5be221e0d90d8a26274c919 +Author: DoubleC <450760206@qq.com> +Date: Thu Dec 11 17:33:48 2014 +0800 + + 文章重复 + + 文章重复,我之前领了,还没翻完。 + +commit 123fc31871aba93608d7b7e4c98d5cabdb8fdbd5 +Author: DeadFire +Date: Thu Dec 11 17:28:44 2014 +0800 + + 20141211-5 选题 + +commit dd2676ef2beadca89353d654e1261aeaf167b064 +Author: DeadFire +Date: Thu Dec 11 17:14:19 2014 +0800 + + 20141211-4 选题 + +commit 8db52bfc8a70111f084f5d490b5d19cff70fd914 +Author: DeadFire +Date: Thu Dec 11 17:03:50 2014 +0800 + + 20141211-3 选题 + +commit ffafaea7f9a912f16416270c72b7cb664965362e +Author: DeadFire +Date: Thu Dec 11 16:52:08 2014 +0800 + + 20141211-2 选题 + +commit 073e360542163476b08c856c0b5dad2e320ac8b7 +Author: DeadFire +Date: Thu Dec 11 16:45:37 2014 +0800 + + 20141211-1 选题 + +commit f0baa4539e8d9ce0de8f264e003da4a18c45b63b +Author: Vic___ +Date: Thu Dec 11 15:12:51 2014 +0800 + + Moved + +commit d927d84e12f2841d10c6369ca94cfb91f3fcd330 +Author: Vic___ +Date: Thu Dec 11 15:12:16 2014 +0800 + + Translated + +commit 4bd2187c942b3d09458301f2972064ea4b4c7b9f +Merge: 2102c12 9ff2c39 +Author: joeren +Date: Thu Dec 11 09:27:16 2014 +0800 + + Merge pull request #2093 from GOLinux/master + + [Translated] 20141210 How to configure rsyslog client for remote logging on CentOS.md + +commit 9ff2c39e16a4771c89c12d17c45de652aefeb1c8 +Author: GOLinux +Date: Thu Dec 11 09:25:54 2014 +0800 + + [Translated] 20141210 How to configure rsyslog client for remote logging on CentOS.md + +commit 2102c1219cf1679f98b5a03bac9651502426bb82 +Merge: 609ec2d 128de94 +Author: joeren +Date: Thu Dec 11 08:43:52 2014 +0800 + + Merge pull request #2092 from GOLinux/master + + [Translating] 20141210 How to configure rsyslog client for remote logging on CentOS.md + +commit 128de94826ac7b5cd05da48f9ca6708e7bf33515 +Author: joeren +Date: Thu Dec 11 08:43:05 2014 +0800 + + Update 20141210 How to configure rsyslog client for remote logging on CentOS.md + +commit f64b0123db9dd57c718661499ef0093c8ab8b8ef +Merge: 27d61e5 609ec2d +Author: joeren +Date: Thu Dec 11 08:42:23 2014 +0800 + + Merge pull request #7 from LCTT/master + + Update Repository + +commit 609ec2df0faac26a31038574ae04aad31a01e9e5 +Merge: 281fa43 e2dd617 +Author: Xingyu.Wang +Date: Wed Dec 10 21:13:21 2014 +0800 + + Merge pull request #2091 from su-kaiyao/master + + su-kaiyao translated 20141205 10 free Commands to Check Memory Usage in Linux.md + +commit 281fa431422f271d63eb66a212b4f0434d44f127 +Merge: 0c763de 4bf1011 +Author: Xingyu.Wang +Date: Wed Dec 10 21:12:37 2014 +0800 + + Merge pull request #2090 from yupmoon/master + + yupmoon translating 20141204 Readers' Choice Awards 2014--Linux Journal + +commit e2dd61786bc8237e8258434a73882576ffabb903 +Author: su-kaiyao <1250471161@qq.com> +Date: Wed Dec 10 20:50:34 2014 +0800 + + su-kaiyao translated + +commit 4f9077ac9ee9dd7b7d80bbb646170854d55291ca +Author: ZTinoZ +Date: Wed Dec 10 20:07:20 2014 +0800 + + Translating by ZTinoZ + +commit 0c763de017fb1843829ba82a967f9fdbb879bf6e +Author: DeadFire +Date: Wed Dec 10 16:16:48 2014 +0800 + + 20141210-1 选题 + +commit 4bf101114ef54100a1a0e15b6449bbcc022a3bda +Author: yupmoon +Date: Wed Dec 10 11:15:05 2014 +0800 + + yupmoon translating + +commit 5cdb8d3f4e1ada39ab467a39f12271e0fb7d37b2 +Merge: e8816d2 27d61e5 +Author: joeren +Date: Wed Dec 10 10:06:30 2014 +0800 + + Merge pull request #2089 from GOLinux/master + + [Translated] 20141208 Nathive--A libre software image editor.md + +commit 27d61e5795d1ba68c8dfcfab28711c9b414f3f79 +Author: GOLinux +Date: Wed Dec 10 10:03:43 2014 +0800 + + [Translated] Two + +commit e8816d2a067e2aa40fcf04053cbf43385f1c9341 +Merge: de9a981 dc4b334 +Author: joeren +Date: Wed Dec 10 09:08:51 2014 +0800 + + Merge pull request #2088 from GOLinux/master + + [Translating] 20141208 Getting Started With Ubuntu 14.04 (PDF Guide).md + +commit dc4b3340b2f9efeee2a42d9ecc9bfb7458c6cb8c +Author: joeren +Date: Wed Dec 10 09:08:32 2014 +0800 + + Update 20141208 Getting Started With Ubuntu 14.04 (PDF Guide).md + +commit de9a981f8ab7fc3f449b374c34418d49d8f6997b +Merge: b36c5c7 b4133cf +Author: joeren +Date: Wed Dec 10 09:07:51 2014 +0800 + + Merge pull request #2087 from GOLinux/master + + [Translating] 20141208 Nathive--A libre software image editor.md + +commit b4133cfddc22f8e3cb91389a2340432ffca7e98a +Author: joeren +Date: Wed Dec 10 09:07:31 2014 +0800 + + Update 20141208 Nathive--A libre software image editor.md + +commit b36c5c7f68938c148bea8f9b73360939f7c48203 +Merge: 37f3fd2 5389dfc +Author: joeren +Date: Wed Dec 10 09:06:30 2014 +0800 + + Merge pull request #2086 from GOLinux/master + + [Translated] 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md + +commit 5389dfc5aad3a6bb9d0ab00b15145ad818f77f23 +Author: GOLinux +Date: Wed Dec 10 09:04:38 2014 +0800 + + [Translated] 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md + +commit 37f3fd2e711e25ca0774a6b9843f3a322670a1dd +Merge: 0934db2 0559d98 +Author: joeren +Date: Wed Dec 10 08:38:23 2014 +0800 + + Merge pull request #2085 from GOLinux/master + + [Translating] 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md + +commit 0559d9835646fd7e9c41b6c3ad68468428d17487 +Author: joeren +Date: Wed Dec 10 08:37:42 2014 +0800 + + Update 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md + +commit be9a8ac489d7fecd08f4bed91c9b2e6d1ed43c4f +Merge: d099251 0934db2 +Author: joeren +Date: Wed Dec 10 08:36:48 2014 +0800 + + Merge pull request #6 from LCTT/master + + Update Repository + +commit 0934db2eb8543ead4adc215d39e254f84343dc42 +Merge: 723d9b0 c55bac0 +Author: joeren +Date: Wed Dec 10 08:35:43 2014 +0800 + + Merge pull request #2084 from yupmoon/master + + translated + +commit 723d9b0ea1fcde8a9b8a78d1e861e36b3ffdd448 +Merge: 90d94f8 ab0ed58 +Author: joeren +Date: Wed Dec 10 08:35:32 2014 +0800 + + Merge pull request #2083 from Stevearzh/master + + [Translated by Stevearzh]Five Magnificent Linux Music Streaming Clients + +commit c55bac0729ea6db74e7d867275638f2e6351352b +Merge: 48d8eb3 90d94f8 +Author: yupmoon +Date: Tue Dec 9 22:58:00 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit 48d8eb34244fbc3b4cc0ca9e2de720e66eb51775 +Author: yupmoon +Date: Tue Dec 9 22:52:30 2014 +0800 + + translated + +commit 90d94f8b22daac8025ddad2308adae89c258d207 +Merge: fb7ea0e e04ad3b +Author: Xingyu.Wang +Date: Tue Dec 9 22:45:39 2014 +0800 + + Merge pull request #2082 from yupmoon/master + + yupmoon translating + 下回请修改 PR 的标题,带上文件名。 + +commit ab0ed58ba8c9b84023ef0eb508cc5bef3c9263e7 +Author: Stevearzh +Date: Tue Dec 9 22:10:32 2014 +0800 + + Translated by Stevearzh + +commit 521ad3dc3dec085e6b52d893b87b995523c312a8 +Author: Stevearzh +Date: Tue Dec 9 22:07:02 2014 +0800 + + Translated by Stevearzh + +commit e04ad3b1081977c7a32ee10ef949ed620e0df19e +Author: yupmoon +Date: Tue Dec 9 18:07:09 2014 +0800 + + yupmoon translating + +commit 4843057c838360371f90af236009f568b5b0b3a7 +Author: ZTinoZ +Date: Tue Dec 9 12:00:26 2014 +0800 + + Translating by ZTinoZ + +commit d099251ca2c9a3784044e9cd54c8c80ead061592 +Merge: 6e5d25a fb7ea0e +Author: joeren +Date: Tue Dec 9 11:58:55 2014 +0800 + + Merge pull request #5 from LCTT/master + + Update Repository + +commit fb7ea0e8367b7f17758d468c013b53acceb56530 +Merge: 907ab34 aebf340 +Author: Xingyu.Wang +Date: Tue Dec 9 10:04:29 2014 +0800 + + Merge pull request #2081 from coloka/master + + 【translating】How to configure a syslog server with rsyslog on Linux + +commit 907ab34aecda3f52bf0dc63ba9ab517b3928f337 +Author: wxy +Date: Tue Dec 9 00:16:58 2014 +0800 + + PUB:20141004 Practical Lessons in Peer Code Review + + @johnhoow + +commit dcd75324b12cf1a1c3d73ae99463e35f9d4e01b4 +Author: wxy +Date: Mon Dec 8 23:41:49 2014 +0800 + + PUB:20141030 How to run SQL queries against Apache log files on Linux + + @ThomazL + +commit aebf3406d683699672b214e45244a54613b8c577 +Author: coloka +Date: Mon Dec 8 23:13:05 2014 +0800 + + 【translating】How to configure a syslog server with rsyslog on Linux + +commit c12080cf74c4d9d4061497de60adf9ae37e8173c +Merge: 6919ef0 091fef5 +Author: Xingyu.Wang +Date: Mon Dec 8 21:37:41 2014 +0800 + + Merge pull request #2080 from Vic020/patch-23 + + 抢地主 + +commit 091fef52aa3b9da7055c5ccf2e15eb8b49aee6e7 +Author: Vic___ +Date: Mon Dec 8 18:38:06 2014 +0800 + + 抢地主 + +commit 88a89be1346aee4188575b1c9fff28063c5ca8be +Author: ZTinoZ +Date: Mon Dec 8 18:00:37 2014 +0800 + + Translating by ZTinoZ + +commit 6919ef07d64e7be757be0fb49c7e39b10b980770 +Merge: 8af28b6 98c3c32 +Author: Xingyu.Wang +Date: Mon Dec 8 16:22:52 2014 +0800 + + Merge pull request #2079 from su-kaiyao/master + + su-kaiyao translating 20141205 10 free Commands to Check Memory Usage in Linux.md + +commit 8af28b62a8dbc95328cd8bebb0652e3dab0d2bf3 +Merge: 1903cc9 36f58e0 +Author: Xingyu.Wang +Date: Mon Dec 8 16:20:55 2014 +0800 + + Merge pull request #2078 from disylee/patch-1 + + Update 20141203 Docker--Present and Future.md + +commit 1903cc9b554b5726305861934bcb6698e34a7319 +Author: DeadFire +Date: Mon Dec 8 16:19:15 2014 +0800 + + 20141208-3 选题 + +commit 177246828d3701a6d12c014511e6dd716d867df2 +Author: DeadFire +Date: Mon Dec 8 15:59:26 2014 +0800 + + 20141208-2 选题 + +commit 98c3c3272466e00d1bfbc0270253d4ae55803890 +Author: su-kaiyao <1250471161@qq.com> +Date: Mon Dec 8 14:30:03 2014 +0800 + + su-kaiyao translating + +commit 40573bc7c61f4100059f12bb81fda55f993cb148 +Author: DeadFire +Date: Mon Dec 8 11:23:55 2014 +0800 + + 20141208-1 选题 + +commit 36f58e07b0504b077e9d3a5e1f9e8068e4f65719 +Author: disylee +Date: Mon Dec 8 09:46:36 2014 +0800 + + Update 20141203 Docker--Present and Future.md + + by disylee + +commit 2205ebbc7fe5322d963787e03992e2be49f9b620 +Author: wxy +Date: Sun Dec 7 23:40:38 2014 +0800 + + PUB:20141125 Linux FAQs with Answers--How to fix ImportError--No module named scapy.all + + @GOLinux + +commit b6ea28565489965b2e92b233b48c2493f4200f12 +Author: wxy +Date: Sun Dec 7 23:12:29 2014 +0800 + + PUB:20140901 How to use on-screen virtual keyboard on Linux + + @forsil 翻译的不错。就是1、你没在文末写你的译者名称;2、请使用中文标点。 + +commit 6ed2cc9fdb86bfb357873c681462ea8bff035806 +Author: wxy +Date: Sun Dec 7 22:49:02 2014 +0800 + + PUB:20141204 Official Ubuntu 14.10 Utopic Unicorn T-Shirts Now Available to Buy + + @geekpi + +commit 20ccb6b22d9ec90faaaf62034e84222eab39ba81 +Author: wxy +Date: Sun Dec 7 22:34:51 2014 +0800 + + 移动到translated目录 + + @JonathanKang + +commit 00a6c2405e222a55587e420718b0efe314ff7224 +Merge: c34a215 7c27e83 +Author: Xingyu.Wang +Date: Sun Dec 7 22:31:12 2014 +0800 + + Merge pull request #2073 from coloka/master + + 【翻译完成】20141125 Four ways Linux is headed for no-downtime kernel patching.md + +commit c34a215975a8e54c4c6c06bb97f50e6bcbf75cb5 +Merge: a0607ee c8841c0 +Author: Xingyu.Wang +Date: Sun Dec 7 22:28:30 2014 +0800 + + Merge pull request #2072 from JonathanKang/master + + Translated + 忘记挪目录了吧?下次记得哦。 + +commit a0607eeaf892747caffa53ac5abe8bbe366470e7 +Merge: 0c4b458 e69d01e +Author: Xingyu.Wang +Date: Sun Dec 7 22:26:30 2014 +0800 + + Merge pull request #2071 from su-kaiyao/master + + su-kaiyao translated 20141204 How To Run Linux Programs From The Terminal In Background Mode.md + +commit 0c4b458f1a0d96464c28e1727f84bf7746e8461b +Merge: 6704154 9f0f5ca +Author: geekpi +Date: Sun Dec 7 17:45:10 2014 +0800 + + Merge pull request #2077 from geekpi/master + + translated + +commit 9f0f5ca11070cc542619aa74b74f834c5a6d9116 +Author: zhengsihua +Date: Sun Dec 7 17:43:57 2014 +0800 + + translated + +commit 6704154368db5ab5b27a6cdae92d34a6bd0dbf21 +Merge: d3bcd51 938c6fb +Author: geekpi +Date: Sun Dec 7 16:44:53 2014 +0800 + + Merge pull request #2076 from geekpi/master + + translating + +commit 938c6fb3946917506de88e748fc29c39163c9c5e +Author: zhengsihua +Date: Sun Dec 7 16:39:04 2014 +0800 + + translating + +commit c50cd50df5cc22acdeefba2d99df436231a809bb +Merge: d98d2b5 d3bcd51 +Author: zhengsihua +Date: Sun Dec 7 16:37:27 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject + +commit 7c27e836d8a4fdc105d443b5155e59d852ffea02 +Merge: ce00a0c d3bcd51 +Author: coloka +Date: Sun Dec 7 11:19:03 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject.git + +commit ce00a0c10ca71a593d87b8a6831445e7b92cc689 +Author: coloka +Date: Sun Dec 7 11:18:56 2014 +0800 + + 【翻译完成】20141125 Four ways Linux is headed for no-downtime kernel patching + +commit c8841c085193e40ed597c7afda073794d741d9de +Author: Jonathan Kang +Date: Sun Dec 7 10:04:48 2014 +0800 + + Translated + +commit e69d01e26072b178d650290137202300aa250769 +Author: su-kaiyao <1250471161@qq.com> +Date: Sat Dec 6 21:54:40 2014 +0800 + + su-kaiyao translated + +commit d3bcd518930881098af3e5abae645b5f54a24fa3 +Merge: 830e5a5 a5a76e1 +Author: Xingyu.Wang +Date: Sat Dec 6 17:10:48 2014 +0800 + + Merge pull request #2070 from su-kaiyao/master + + su-kaiyao translating 20141204 How To Run Linux Programs From The Terminal In Background Mode.md + +commit 830e5a546bd02b9a10a91845f5d6d6f0b86025ae +Merge: 5edd21d bae30fd +Author: Xingyu.Wang +Date: Sat Dec 6 17:10:16 2014 +0800 + + Merge pull request #2069 from SPccman/patch-9 + + Update 20141205 How to create a custom backup plan for Debian with backu... + +commit 5edd21de1f01fe5ad51c6fd4f54ea55e009bc256 +Merge: 1e7168c d8a14e7 +Author: Xingyu.Wang +Date: Sat Dec 6 17:09:54 2014 +0800 + + Merge pull request #2068 from Vic020/master + + Translated + +commit a5a76e14a91722e40d2b0f5d6cac9f3b5e56237a +Author: su-kaiyao <1250471161@qq.com> +Date: Sat Dec 6 12:50:01 2014 +0800 + + su-kaiyao translating + +commit bae30fddc09374099f4b7069383c93a612c0a4b4 +Author: DoubleC <450760206@qq.com> +Date: Sat Dec 6 10:26:22 2014 +0800 + + Update 20141205 How to create a custom backup plan for Debian with backupninja.md + + 申领文章 + +commit 1e7168c4d96f933be8e59265153307decf0ebd58 +Author: DeadFire +Date: Fri Dec 5 23:41:09 2014 +0800 + + 20141205-4 选题 + +commit d8a14e7733e99d7e58dcabdd735ce0dacdb726bd +Author: Vic___ +Date: Fri Dec 5 23:41:09 2014 +0800 + + moved + +commit 8160d35495568a58f2e3d757ac2ecbb5236374c6 +Author: Vic___ +Date: Fri Dec 5 23:39:50 2014 +0800 + + Translated + +commit d83bf7321b6577d9e5b9bf3e819c071ce0912ffd +Merge: c3983be 0c2eb30 +Author: geekpi +Date: Fri Dec 5 22:58:22 2014 +0800 + + Merge pull request #2067 from geekpi/master + + translated + +commit d98d2b5c2ffb579f4c87312eb71ae7b9bd24700d +Author: zhengsihua +Date: Fri Dec 5 22:57:29 2014 +0800 + + translated + +commit 0c2eb305197a2adeaa7d51313f3af2024b32ec10 +Author: geekpi +Date: Fri Dec 5 09:49:22 2014 -0500 + + translated + +commit c3983be1cd409a4589a204da1d5d5f982d694e08 +Merge: 65df647 f08ce4b +Author: geekpi +Date: Fri Dec 5 22:47:03 2014 +0800 + + Merge pull request #2066 from geekpi/master + + translating + +commit cc063420fe3107398e633f67f0182f2e925695a9 +Author: geekpi +Date: Fri Dec 5 09:45:42 2014 -0500 + + translated + +commit f08ce4b7c1e61240332ea29a0918c3f8d8295fb6 +Author: geekpi +Date: Fri Dec 5 09:40:03 2014 -0500 + + translating + +commit 65df647065b6983726e953f19d7b44add841d734 +Author: DeadFire +Date: Fri Dec 5 19:54:15 2014 +0800 + + 20141205-3 选题 + +commit e4f3b848e87ff381bd4f4721fd240a6ca3836aa2 +Author: DeadFire +Date: Fri Dec 5 19:40:19 2014 +0800 + + 20141205-2 选题 + +commit 5f026b35fd9dd9562339d08d70c02caddfe86f9a +Author: DeadFire +Date: Fri Dec 5 19:12:16 2014 +0800 + + 20141205-1 选题 + +commit 46a17ceea426244f45a1f279b5ba48e595eb8fa8 +Merge: 3ecb07a 6e5d25a +Author: joeren +Date: Fri Dec 5 10:49:23 2014 +0800 + + Merge pull request #2065 from GOLinux/master + + [Translated] 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md + +commit 6e5d25a194f525ef306cf6edf4bb1f9128249b4b +Author: GOLinux +Date: Fri Dec 5 10:47:29 2014 +0800 + + [Translated] 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md + +commit 3ecb07a280845f1d6dffa3467d62067b1e0d7dce +Merge: 12c7541 a5ca241 +Author: joeren +Date: Fri Dec 5 09:03:42 2014 +0800 + + Merge pull request #2064 from GOLinux/master + + [Translating] 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md + +commit a5ca2419279dfad8e36fc29bae5c41b9f415e241 +Author: joeren +Date: Fri Dec 5 09:02:52 2014 +0800 + + Update 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md + +commit ba9cd41f27a5eccdf19e700d86a06e78a625fdd0 +Merge: f73e76a 12c7541 +Author: joeren +Date: Fri Dec 5 09:02:06 2014 +0800 + + Merge pull request #4 from LCTT/master + + Update Repository + +commit 12c754127f99b782bd98592843b4cdab0e0bbb0a +Merge: 3f9ed17 6d67300 +Author: bazz2 +Date: Fri Dec 5 08:12:28 2014 +0800 + + Merge pull request #2063 from bazz2/master + + [translating]Linux Namespaces + +commit 6d6730077c769d13c2cb6e02bb8355ac93500e75 +Author: bazz2 +Date: Fri Dec 5 08:06:33 2014 +0800 + + [translating]Linux Namespaces + +commit 3f9ed17fd20d5761d5b8af0be4289df99454ae1b +Author: wxy +Date: Thu Dec 4 23:52:45 2014 +0800 + + PUB:20141017 How to verify the authenticity and integrity of a downloaded file on Linux + + @geekpi + +commit 38909dfa5db9c08e5d272677bf62ee42e94b80d1 +Author: wxy +Date: Thu Dec 4 23:30:09 2014 +0800 + + PUB:20141021 How to create and use Python CGI scripts + + @su-kaiyao + +commit 04a0061a25307dfa23a3258081e34b7be45e92c6 +Merge: 552ad45 ad454b0 +Author: Xingyu.Wang +Date: Thu Dec 4 23:21:28 2014 +0800 + + Merge pull request #2060 from Vic020/patch-22 + + 抢地主,好吧,地主是你的了。。。 + +commit 552ad451f447e67da5671e1e1d7e7ba0d59ec619 +Merge: 2e30c5c 63cb892 +Author: geekpi +Date: Thu Dec 4 22:33:07 2014 +0800 + + Merge pull request #2062 from geekpi/master + + translated + +commit 63cb892335c04c296f0ed28237da2357122ea5a5 +Author: zhengsihua +Date: Thu Dec 4 22:31:50 2014 +0800 + + translated + +commit 2e30c5c5ecf56c33655e3cc7c3a9092b79bb6782 +Merge: 2bcf986 d78f215 +Author: geekpi +Date: Thu Dec 4 22:19:53 2014 +0800 + + Merge pull request #2061 from geekpi/master + + translating + +commit d78f21521459eb18ddd03d0be8abdea912d030b4 +Author: zhengsihua +Date: Thu Dec 4 22:18:48 2014 +0800 + + translating + +commit ad454b0a5d6d1a1eba170d9ad187baa3499618f8 +Author: Vic___ +Date: Thu Dec 4 20:33:22 2014 +0800 + + 抢地主 + +commit 2bcf9868369fb5fa3bd7956429203513afd0fd3d +Author: DeadFire +Date: Thu Dec 4 19:27:19 2014 +0800 + + 20141204-6 选题 + +commit 34d4475dede86febccf67af697c5ef6769b5b5f5 +Author: DeadFire +Date: Thu Dec 4 19:14:11 2014 +0800 + + 20141204-5 选题 + +commit 813e4c0d00af882368e17522776c3d1c6978b09e +Author: DeadFire +Date: Thu Dec 4 19:03:12 2014 +0800 + + 20141204-4 选题 + +commit b5bb90f1388949e4e46118854656b7b9bd8119d3 +Author: DeadFire +Date: Thu Dec 4 18:46:36 2014 +0800 + + 20141204-3 选题 + +commit 62bc5546f318f0f48caab1ce347994dff03881c7 +Author: DeadFire +Date: Thu Dec 4 18:11:07 2014 +0800 + + 20141204-2 选题 + +commit c5477e1bee70871f024221f351a14c3673cc8325 +Author: carolinewuyan <309866211@qq.com> +Date: Thu Dec 4 18:08:35 2014 +0800 + + 已发布 + +commit 70ca70d0cb470f3872ff2d439613a0736792b17c +Author: ZTinoZ +Date: Thu Dec 4 17:53:39 2014 +0800 + + Translating by ZTinoZ + +commit 15a0b00dd6acd188d9469bc1f4640ae2b204cd40 +Author: carolinewuyan <309866211@qq.com> +Date: Thu Dec 4 17:50:50 2014 +0800 + + 已校对 + +commit aa0a75d014c43cc32b48cf8816abde743afa3249 +Author: DeadFire +Date: Thu Dec 4 17:40:56 2014 +0800 + + 20141204-1 选题 + +commit c7d3faffccb7fcb4a5b7d4a99f5c3b439eff5486 +Author: carolinewuyan <309866211@qq.com> +Date: Thu Dec 4 16:59:55 2014 +0800 + + 已发布 + +commit 037ed20977f9d4fe782d922ea041dc8e52fb1b63 +Author: carolinewuyan <309866211@qq.com> +Date: Thu Dec 4 16:52:32 2014 +0800 + + 已校对 + +commit f73e76a188607ebb36f62e289e617cd39cc03181 +Merge: c63694f 70e2996 +Author: joeren +Date: Thu Dec 4 12:05:42 2014 +0800 + + Merge pull request #3 from LCTT/master + + Update Repository + +commit 70e2996b27decb5ef91bf76d5404fd5ac8877099 +Author: wxy +Date: Thu Dec 4 10:12:50 2014 +0800 + + PUB:20141017 Linux ss Tool to Identify Sockets or Network Connections with Examples + + @geekpi + +commit 4a987f333ecc03fd57260d8c024bc9e27430fe7f +Author: wxy +Date: Wed Dec 3 22:17:31 2014 +0800 + + PUB:20141023 What is a good command-line calculator on Linux + + @JonathanKang + +commit 61086fad22dc6edb024c5e4a71e7fd51f9f26e97 +Author: wxy +Date: Wed Dec 3 21:59:06 2014 +0800 + + PUB:20141022 Linux FAQs with Answers--How to fix sshd error--could not load host key + + @GOLinux + +commit b8fbf78801c91f75c470398e01c61624e8877a5d +Author: wxy +Date: Wed Dec 3 21:52:07 2014 +0800 + + PUB:20140910 How to create a cloud-based encrypted file system on Linux + + @felixonmars + +commit f9b557d2f785d0fd4eba7b6b52650977438f9a69 +Author: wxy +Date: Wed Dec 3 21:30:08 2014 +0800 + + PUB:20141119 When Microsoft Went A-Courting + + @GOLinux + +commit e78500a70f3adb9fbc4a5065d5b15e08d83bd997 +Merge: 986571c 914ae20 +Author: Xingyu.Wang +Date: Wed Dec 3 21:00:02 2014 +0800 + + Merge pull request #2058 from Stevearzh/master + + ignore .DS_Store + +commit 986571ceb9d51e34f88805616ce0b402735819b9 +Merge: dcb830a 08635e0 +Author: Xingyu.Wang +Date: Wed Dec 3 20:59:35 2014 +0800 + + Merge pull request #2057 from forsil/master + + forsil transliating ... - "Undelete Files on Linux Systems" + +commit dcb830a5d09fe08daed8032491ef3403c59bf5de +Merge: de32ba5 f7a105d +Author: Xingyu.Wang +Date: Wed Dec 3 20:59:14 2014 +0800 + + Merge pull request #2056 from JonathanKang/master + + JonathanKang is translating + +commit 9756548568a382f36db1cd9991c64bc2a3109881 +Author: ZTinoZ +Date: Wed Dec 3 17:55:57 2014 +0800 + + Translating by ZTinoZ + +commit 914ae202b7e207116e7d4edd4783b51cb40b909f +Author: Stevearzh +Date: Wed Dec 3 17:38:55 2014 +0800 + + Translating by Stevearzh + +commit 5590da98619fc2754dc9bc54cb9a462a5df0d48f +Author: Stevearzh +Date: Wed Dec 3 17:32:21 2014 +0800 + + ignore .DS_Store + +commit 08635e022f0999478a30a3923c5888d5d7f67891 +Author: forsil +Date: Wed Dec 3 16:43:22 2014 +0800 + + forsil transliating ... + +commit de32ba5c778ae71ea7273e4999b1a58cd4276ebb +Author: DeadFire +Date: Wed Dec 3 15:33:41 2014 +0800 + + 20141203-1 选题 + +commit f7a105d9afd140aa4f5900b6eb6e44d361109297 +Author: Jonathan Kang +Date: Wed Dec 3 15:28:22 2014 +0800 + + JonathanKang is translating + +commit 916a8498a19700fb456ae938e6484d65f040cc3e +Merge: ef504ac 3d70b82 +Author: Xingyu.Wang +Date: Wed Dec 3 14:01:09 2014 +0800 + + Merge pull request #2055 from mdjsjdqe/master + + Update 20141127 11 Useful Utilities To Supercharge Your Ubuntu Experienc... + +commit ef504acac1ae85005bd0b3d48be2c9f64b34b02e +Merge: 540ee1f 63a6eab +Author: Xingyu.Wang +Date: Wed Dec 3 14:00:48 2014 +0800 + + Merge pull request #2054 from forsil/master + + translate finished - "How to use on-screen virtual keyboard on Linux" + +commit 3d70b82e807e1423a74989ef87138077d7e7c740 +Author: mdjsjdqe +Date: Wed Dec 3 11:10:41 2014 +0800 + + Update 20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md + +commit 540ee1fc311cdbb83876eb18a7f37eb174063507 +Author: carolinewuyan <309866211@qq.com> +Date: Wed Dec 3 11:08:39 2014 +0800 + + 已发布 + +commit 63a6eab73dcf200b35cbc0da300b78c33fab0741 +Author: forsil +Date: Wed Dec 3 11:03:28 2014 +0800 + + translate finished + +commit 139911ff7ea18234e99ea6ae03e23c7712ee2aea +Author: carolinewuyan <309866211@qq.com> +Date: Tue Dec 2 23:35:03 2014 +0800 + + 已校对 + +commit 929fd236d48a51c476026315624a4aefba021ff3 +Author: wxy +Date: Tue Dec 2 23:09:28 2014 +0800 + + 更新成员列表 + +commit 6a95046f3d9d79390cda7cd741da558ec658f4a7 +Author: carolinewuyan <309866211@qq.com> +Date: Tue Dec 2 18:15:29 2014 +0800 + + 校对中 + +commit 48f48783210f2c6c0de58ac0c0ad73e4418174eb +Author: ZTinoZ +Date: Tue Dec 2 17:53:43 2014 +0800 + + Translating by ZTinoZ + +commit 1986af6f30e91a78506dc0d97d7e317a5570ca6d +Author: wxy +Date: Tue Dec 2 15:09:43 2014 +0800 + + PUB:20141124 15 pwd (Print Working Directory) Command Examples in Linux + + @geekpi + +commit cc40ae47a73ef47fe223eb6a14e862f3a4a721c5 +Author: wxy +Date: Tue Dec 2 14:47:09 2014 +0800 + + PUB:20141125 Linux FAQs with Answers--How to access a NAT guest from host with VirtualBox + + @geekpi + +commit 034e4ecb3ec9ebabbea35d063f7034aca5e5ab65 +Author: wxy +Date: Tue Dec 2 11:27:59 2014 +0800 + + PUB:20141119 Qshutdown--An avanced shutdown tool + + @GOLinux + +commit b7d68f825989f68a1b83d4b43f0880af1d0345f8 +Author: wxy +Date: Tue Dec 2 11:01:30 2014 +0800 + + PUB:20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu + + @DoubleShit + +commit cb91adb70f867853034a5225008bccaa75701bca +Merge: 2fc03df ac79d9b +Author: Xingyu.Wang +Date: Tue Dec 2 10:31:53 2014 +0800 + + Merge pull request #2052 from felixonmars/20141114-emoji + + [Translating] How To Use Emoji Anywhere With Twitter's Open Source Library + +commit 2fc03df34fc56cc3a8119f06820b4ffed381d4ab +Merge: 8027f1b c63694f +Author: joeren +Date: Tue Dec 2 08:43:34 2014 +0800 + + Merge pull request #2053 from GOLinux/master + + [Translated] 20141119 When Microsoft Went A-Courting.md + +commit c63694f8a1f390e81033aa2764a12413f15a19f1 +Author: GOLinux +Date: Tue Dec 2 08:41:59 2014 +0800 + + [Translated] 20141119 When Microsoft Went A-Courting.md + +commit ac79d9b0ffae29930eb5f4b79c613a340a6a479c +Author: Felix Yan +Date: Mon Dec 1 23:34:00 2014 +0800 + + [Translating] How To Use Emoji Anywhere With Twitter's Open Source Library + +commit ac5dcd7026784f873cfcf16ea2db27e68e411796 +Author: ZTinoZ +Date: Mon Dec 1 22:12:32 2014 +0800 + + Translating by ZTinoZ + +commit 8027f1b0daf235f4e2931574e37094dac4f7a202 +Merge: d08dc0b ed5987a +Author: Xingyu.Wang +Date: Mon Dec 1 21:20:29 2014 +0800 + + Merge pull request #2051 from ZTinoZ/master + + Translating by ZTinoZ + +commit ed5987a7af9acf8d0dc63db9f175c47452adc1a1 +Author: ZTinoZ +Date: Mon Dec 1 21:19:03 2014 +0800 + + Translating by ZTinoZ + +commit 2530f71c158391f719ab7f66ac3e90d1aa93f355 +Merge: bd3ce8c d08dc0b +Author: ZTinoZ +Date: Mon Dec 1 21:18:09 2014 +0800 + + Merge pull request #1 from LCTT/master + + Update Popular repositories + +commit d08dc0b89957905d29df0cd47a7694b732d0c88e +Author: wxy +Date: Mon Dec 1 21:09:33 2014 +0800 + + 回收 + +commit c40f1964980fc954fbb28e1567a492a836c34c7e +Author: wxy +Date: Mon Dec 1 21:09:23 2014 +0800 + + PUB:20141030 8 Tips to Solve Linux and Unix Systems Hard Disk Problmes Like Disk Full Or Can't Write to the Disk.md + + @ZTinoZ + +commit 487ac45d4b30348fc68aea1b7f78e53a5c522a91 +Author: wxy +Date: Mon Dec 1 20:38:20 2014 +0800 + + PUB:20140818 What are useful CLI tools for Linux system admins + + @zpl1025 + +commit 9cc94c8014c131e041a4ba8cff2881d677a780bd +Author: wxy +Date: Mon Dec 1 20:14:22 2014 +0800 + + PUB:20140826 20 Postfix Interview Questions and Answers + + @bazz2 + +commit c55d124ffbe9b26a2e853292ca4f6cc53a2c40ef +Author: wxy +Date: Mon Dec 1 10:21:44 2014 +0800 + + 归档 201411 + +commit db57f2d75508e89e50ca6c87492f58cd9be17cfd +Author: wxy +Date: Mon Dec 1 10:18:06 2014 +0800 + + PUB:20141014 How to monitor and troubleshoot a Linux server using sysdig.md + + @GOLinux + +commit 842b1db81234914e1f801e670d05ef28451fa54b +Merge: 6711373 1adfadc +Author: joeren +Date: Mon Dec 1 08:31:15 2014 +0800 + + Merge pull request #2050 from GOLinux/master + + [Translating] 20141119 When Microsoft Went A-Courting.md + +commit 1adfadc8967eb3408b1f23889fc15f3f19de55f5 +Author: joeren +Date: Mon Dec 1 08:29:25 2014 +0800 + + Update 20141119 When Microsoft Went A-Courting.md + +commit 1ef54f5f51238cf3b1dd70b30d14e9de990db63d +Merge: cbbc133 6711373 +Author: joeren +Date: Mon Dec 1 08:26:07 2014 +0800 + + Merge pull request #2 from LCTT/master + + Update Repository + +commit 671137363c8179aaea68cd95365bc112892aaeaa +Merge: 3f8ce06 a72c37d +Author: joeren +Date: Mon Dec 1 08:24:49 2014 +0800 + + Merge pull request #2049 from coloka/master + + 【翻译中】Four ways Linux is headed for no-downtime kernel patching + +commit a72c37dcaed0705132f5509fb925edf15617958e +Author: coloka +Date: Sun Nov 30 22:11:16 2014 +0800 + + 【翻译中】Four ways Linux is headed for no-downtime kernel patching + +commit 3f8ce069479dc1be41573a751a7fc55177684b91 +Author: wxy +Date: Sun Nov 30 21:10:06 2014 +0800 + + PUB:20141127 How to install Docker on CentOS 7 + + @felixonmars + +commit aa3fca6507b03db0897e0a22eec8e3e0c06b2302 +Merge: 23af494 bd3ce8c +Author: Xingyu.Wang +Date: Sun Nov 30 18:38:59 2014 +0800 + + Merge pull request #2048 from ZTinoZ/master + + Finish the translation by ZTinoZ + +commit 23af4948fe0f5bbf40806dc769639b2e89de07a6 +Merge: 5cef7cf 17d979d +Author: Xingyu.Wang +Date: Sun Nov 30 18:38:40 2014 +0800 + + Merge pull request #2045 from coloka/master + + 【翻译完成】20141117 Restricting process CPU usage using nice cpulimit and cgroups.md + +commit 5cef7cf448316f13f235eafa6ac3093ede244d29 +Merge: dcfa943 e0be268 +Author: geekpi +Date: Sun Nov 30 18:00:24 2014 +0800 + + Merge pull request #2047 from geekpi/master + + translated + +commit bd3ce8c9fdc63ccd287289e96ec66b0c3449740e +Author: ZTinoZ +Date: Sun Nov 30 17:33:29 2014 +0800 + + Finish the translation by ZTinoZ + +commit e0be26800b36696a2a62378c92f4a62fa831a718 +Author: geekpi +Date: Sun Nov 30 04:22:57 2014 -0500 + + translated + +commit dcfa943010298ae729316d8c6061b50049268041 +Merge: 25bf2ec c94225c +Author: geekpi +Date: Sun Nov 30 16:49:46 2014 +0800 + + Merge pull request #2046 from geekpi/master + + Translating + +commit c94225cdf5912dc04e9aebd2a363beedb7d75be8 +Author: geekpi +Date: Sun Nov 30 03:47:49 2014 -0500 + + Translating + +commit 17d979dfa0a1678bd9c6363d4de435e70d34c2c6 +Merge: cd27963 25bf2ec +Author: coloka +Date: Sun Nov 30 11:37:35 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject.git + +commit cd27963acc8a1c4bb1907537c50fee5e48db7717 +Author: coloka +Date: Sun Nov 30 11:37:20 2014 +0800 + + 【翻译完成】20141117 Restricting process CPU usage using nice cpulimit and cgroups.md + +commit 25bf2ecd2d7edbdfbe02b8cbcf4be37b6470e8d6 +Author: wxy +Date: Sun Nov 30 10:31:33 2014 +0800 + + PUB:04 - The history of Android + + @alim0x + +commit 125ceabe71c909a489f044279d6a21b6e9a8d8d4 +Author: wxy +Date: Sun Nov 30 10:05:10 2014 +0800 + + PUB:Meet systemd, the controversial project taking over a Linux distro near you + + @SPccman + +commit 1d67907640615266fab1c25ecbb9a189869873f6 +Author: wxy +Date: Fri Nov 28 09:46:46 2014 +0800 + + PUB:20141125 Linux FAQs with Answers--How to check glibc version on Linux + + @GOLinux + +commit 4774a8c6e80384dd2fa15d71afb55e85b60550b3 +Merge: f4b3167 84eaf6e +Author: Xingyu.Wang +Date: Sat Nov 29 22:50:20 2014 +0800 + + Merge pull request #2044 from disylee/master + + [ translated] by disylee + +commit 84eaf6ed1dcb11898f8c975782affbb7e08fce70 +Author: disylee +Date: Sat Nov 29 22:34:25 2014 +0800 + + disylee translated ok + +commit f4b31670e3051756ecd3525bce205f5e241a3043 +Merge: 528ed42 f552369 +Author: Xingyu.Wang +Date: Sat Nov 29 22:05:27 2014 +0800 + + Merge pull request #2043 from a598799539/master + + [Translated by a598799539] Some Sentences about Java + 哈哈,作为你的处翻,我会好好校对的哈~~ + +commit 528ed42501a3e9edf6d5a3a409e01c14ec7bde38 +Merge: 4cd7280 03e22ba +Author: Xingyu.Wang +Date: Sat Nov 29 22:04:24 2014 +0800 + + Merge pull request #2040 from Stevearzh/master + + [translated by Stevearzh]20141108 When hackers grow old.md + 赞!据说这篇比较难翻译,等我合并了仔细拜读:> + +commit 4cd7280436984d4331cdb42a539bfa05a3de8f8e +Merge: c89d8ad 3760bdc +Author: Xingyu.Wang +Date: Sat Nov 29 22:03:29 2014 +0800 + + Merge pull request #2039 from KayGuoWhu/master + + [Translated]20141127 What Makes a Good Programmer + +commit c89d8ada43e31266d164d8c2080dbeafae8e44b6 +Merge: c9684fa 1e95d12 +Author: Xingyu.Wang +Date: Sat Nov 29 22:03:08 2014 +0800 + + Merge pull request #2036 from SPccman/master + + Meet systemd, the controversial project taking over a Linux distro near you + +commit c9684fa307fc25b32c99c0c7e1a5a76de72895d1 +Merge: e80a538 04eb460 +Author: Xingyu.Wang +Date: Sat Nov 29 22:02:40 2014 +0800 + + Merge pull request #2035 from felixonmars/20141127-docker + + [Translated] How to install Docker on CentOS 7 + +commit e80a538719348619af9337fae1bce36f57492348 +Merge: b841012 e9d5996 +Author: Xingyu.Wang +Date: Sat Nov 29 22:01:38 2014 +0800 + + Merge pull request #2034 from DoubleShit/master + + [translated] 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu + +commit f552369682e10e6de62d6b5ec6bd01b311c0503c +Merge: 37715e5 b841012 +Author: a598799539 +Date: Sat Nov 29 21:00:38 2014 +0800 + + Merge branch 'master' of github.com:LCTT/TranslateProject + +commit 37715e5eca070baf14453a20446454281f0987f6 +Author: a598799539 +Date: Sat Nov 29 21:00:10 2014 +0800 + + translated Some Sentences about Java + +commit b8410122e9deb8b47426765f51c4a2ff6cb691f1 +Merge: e287fd8 cf40825 +Author: geekpi +Date: Sat Nov 29 19:21:56 2014 +0800 + + Merge pull request #2042 from geekpi/master + + translated + +commit cf408257c1fa3cf44239e7e032f477a680f64ed4 +Author: geekpi +Date: Sat Nov 29 06:15:26 2014 -0500 + + translated + +commit e287fd89c5a1381b5bcad0c72658772fc9ff6f15 +Merge: 592cc17 8858878 +Author: geekpi +Date: Sat Nov 29 17:05:39 2014 +0800 + + Merge pull request #2041 from geekpi/master + + [Translating] + +commit 885887800804be7948dca76ab52214eebbaf8d28 +Author: geekpi +Date: Sat Nov 29 03:18:11 2014 -0500 + + [Translating] + +commit 03e22baa0d96306b7183c857c778fb7bb731c68c +Author: Stevearzh +Date: Sat Nov 29 15:09:11 2014 +0800 + + translated by Stevearzh + +commit 50cbc2fd447c5621d0c54751b43f774415fbf41e +Author: Stevearzh +Date: Sat Nov 29 15:04:44 2014 +0800 + + translated by Stevearzh + +commit 3760bdc4603b29aa7accdb5be6efecc527b40664 +Author: KayGuoWhu +Date: Sat Nov 29 11:53:50 2014 +0800 + + translated + +commit 592cc17351b5adc64af6377d6f26e2b19079550f +Author: geekpi +Date: Fri Nov 28 22:53:55 2014 +0800 + + Update 20141125 Linux FAQs with Answers--How to access a NAT guest from host with VirtualBox.md + +commit db71d4442c3d8be3ec19b615b80608c0364469eb +Merge: 1cee614 1676f66 +Author: geekpi +Date: Fri Nov 28 22:52:11 2014 +0800 + + Merge pull request #2038 from geekpi/master + + trnalsted + +commit 1676f66d703f70f65368f3f10669138c3fb05e87 +Author: root +Date: Fri Nov 28 09:48:34 2014 -0500 + + translated + +commit 5992044cb9ee267f381784573d82eaeea3480f40 +Author: root +Date: Fri Nov 28 09:47:50 2014 -0500 + + translated + +commit 1cee61441beec17d9edcc982405342228e9ddd57 +Merge: 1a52ed9 392bd99 +Author: geekpi +Date: Fri Nov 28 22:45:22 2014 +0800 + + Merge pull request #2037 from geekpi/master + + translated + +commit 392bd99ec4570f4ac5dec6991a77e2da4f8f2861 +Author: root +Date: Fri Nov 28 09:41:00 2014 -0500 + + translated + +commit 1e95d12ee85a6fe6c554700865656748eac96b59 +Author: DoubleC <450760206@qq.com> +Date: Fri Nov 28 22:39:54 2014 +0800 + + Create Meet systemd, the controversial project taking over a Linux distro near you.md + + 翻已完成 + +commit 078ff0fc967f7893526d0abcd865121ea7de87fb +Author: DoubleC <450760206@qq.com> +Date: Fri Nov 28 22:37:46 2014 +0800 + + Delete 20141111 Meet systemd the controversial project taking over a Linux distro near you.md + + 删除原文 + +commit 014e7fdead98a360eae9a4f560cd751abffbbb55 +Merge: a49d56a 1a52ed9 +Author: DoubleC <450760206@qq.com> +Date: Fri Nov 28 22:36:38 2014 +0800 + + Merge pull request #10 from LCTT/master + + update + +commit 04eb460fb15f76a9fdf4d115c179cb5130bea98b +Author: Felix Yan +Date: Fri Nov 28 21:12:19 2014 +0800 + + [Translated] How to install Docker on CentOS 7 + +commit 04ed0501ac3e430a60c091ef0e7196fccd6bbe16 +Author: ZTinoZ +Date: Fri Nov 28 17:35:37 2014 +0800 + + Translating by ZTinoZ + +commit e9d59968c9603e851271496390879ca75881a2c2 +Author: DoubleShift +Date: Fri Nov 28 09:37:02 2014 +0200 + + Create 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu.md + + Translate finished. + +commit 2137e75ab5208a6f694816749b1b40f6a07ea027 +Author: DoubleShift +Date: Fri Nov 28 09:33:54 2014 +0200 + + Delete 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu.md + + finished + +commit 1a52ed9badba1087938d77e7567bc19019f3b847 +Merge: aae52f4 c8fc59b +Author: Xingyu.Wang +Date: Fri Nov 28 15:17:08 2014 +0800 + + Merge pull request #2033 from KayGuoWhu/master + + [Translating]20141127 What Makes a Good Programmer + +commit 4887c41da25d71e846fcb2ffbe54e02ea9c5d6f4 +Author: DoubleShift +Date: Fri Nov 28 08:44:07 2014 +0200 + + Update 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu.md + + begin + +commit c8fc59b10c73bbef12fddaa52caac0ffb7491388 +Author: KayGuoWhu +Date: Fri Nov 28 11:31:15 2014 +0800 + + translating + +commit aae52f4fbfdae91d7442d3470f167b36635c5f4b +Author: carolinewuyan <309866211@qq.com> +Date: Fri Nov 28 09:49:55 2014 +0800 + + 已发布 + +commit 7f804823350d78083179d6e110f874eb02e48ee4 +Merge: cc49b47 4dc9efa +Author: Xingyu.Wang +Date: Fri Nov 28 09:37:35 2014 +0800 + + Merge pull request #2028 from felixonmars/20141127-docker + + [Translating] How to install Docker on CentOS 7 + +commit cc49b47b9f25325d41ac4c7b9f09f7bb804c3f2e +Merge: beb3a86 09517d9 +Author: Xingyu.Wang +Date: Fri Nov 28 09:37:16 2014 +0800 + + Merge pull request #2032 from LCTT/revert-2029-master + + Revert "[Translating]20141127 How to install Docker on CentOS 7" + +commit 09517d99ad04bb1c503984a461ddee9401faec56 +Author: Xingyu.Wang +Date: Fri Nov 28 09:36:39 2014 +0800 + + Revert "[Translating]20141127 How to install Docker on CentOS 7" + +commit cbbc1333fb1d420dab930a6965757e5e03e6dcc3 +Merge: 5651cf8 beb3a86 +Author: joeren +Date: Fri Nov 28 08:39:05 2014 +0800 + + Merge pull request #1 from LCTT/master + + Update Repository + +commit beb3a867e6bdbf0819041ee601b8b3c54c1b668f +Merge: 67c573e 5eae2f8 +Author: joeren +Date: Fri Nov 28 08:37:54 2014 +0800 + + Merge pull request #2027 from felixonmars/20141127-systemd-nspawn + + 选题: Quick systemd-nspawn guide + +commit 67c573e226d879e6d3866880708e14f4f142649e +Merge: bcee8eb 4e82237 +Author: joeren +Date: Fri Nov 28 08:37:05 2014 +0800 + + Merge pull request #2029 from KayGuoWhu/master + + [Translating]20141127 How to install Docker on CentOS 7 + +commit bcee8ebc95d1bddb7f21866c728a01af5a5c73ee +Merge: 6b7af44 db7184f +Author: joeren +Date: Fri Nov 28 08:36:55 2014 +0800 + + Merge pull request #2030 from a598799539/master + + [a598799539 Translating] Some Sentences about Java + +commit 6b7af4483a2e4e686a9cb6d2ad7d8b2f50a81c10 +Merge: 5819b92 6a9b807 +Author: joeren +Date: Fri Nov 28 08:36:42 2014 +0800 + + Merge pull request #2031 from forsil/master + + forsil translating ... + +commit 6a9b8071939047158a54c7e8015aa93eaaab63be +Author: forsil +Date: Thu Nov 27 21:29:11 2014 +0800 + + forsil translating ... + +commit 5819b928297f5cec8ed715a70b57f511565417d1 +Author: wxy +Date: Thu Nov 27 21:22:31 2014 +0800 + + PUB:20140905 Linux TCP or IP networking--net-tools vs. iproute2 + + @KayGuoWhu + +commit db7184f092ac3442614b4d40246e55571404b098 +Author: a598799539 +Date: Thu Nov 27 20:29:45 2014 +0800 + + [Translating] Some Sentences about Java + +commit 3b056857e3945ec823d58e45b27421f5f4e1116c +Author: DeadFire +Date: Thu Nov 27 19:20:59 2014 +0800 + + 20141127-6 选题 带一朵云去远行a598799539 推荐 + +commit 4e82237a0bfbc8a3e97cc533d1afb8c666d0e700 +Author: KayGuoWhu +Date: Thu Nov 27 19:17:27 2014 +0800 + + translating + +commit 85f53161391d52f1bd49b81a1f183536398f3979 +Author: DeadFire +Date: Thu Nov 27 19:06:39 2014 +0800 + + 20141127-5 选题 + +commit ea9fa87ebf012b610aae9406b4bd28a5afbe7316 +Author: ZTinoZ +Date: Thu Nov 27 18:01:21 2014 +0800 + + Translating by ZTinoZ + +commit 454f2c7c54dbd751cb012a23f6b820428bdb965b +Author: DeadFire +Date: Thu Nov 27 17:02:20 2014 +0800 + + 20141127-4 选题 + +commit 5ee99b55b407b09bd9a929eeb00ba9155d63fc13 +Author: carolinewuyan <309866211@qq.com> +Date: Thu Nov 27 17:00:52 2014 +0800 + + 已校对 + +commit bf803aed01b9759a6941fa5dcead90effa458889 +Author: DeadFire +Date: Thu Nov 27 15:22:35 2014 +0800 + + 20141127-3 选题 + +commit 161875b7ca164238201458f26b85ff8d832296cc +Author: DeadFire +Date: Thu Nov 27 15:06:22 2014 +0800 + + 20141127-2 选题 + +commit 4dc9efa9139a9f0b55aea28deec0cbe3456f2355 +Author: Felix Yan +Date: Thu Nov 27 14:20:59 2014 +0800 + + [Translating] How to install Docker on CentOS 7 + +commit 94fb2afe8488a2c415e3141afbf2cc06fe988938 +Author: DeadFire +Date: Thu Nov 27 14:15:44 2014 +0800 + + 20141127-1 选题 + +commit 5eae2f830b77108ded370822de86eb957bdc6867 +Author: Felix Yan +Date: Thu Nov 27 14:06:03 2014 +0800 + + fix a typo + +commit 6ccb1dbc8d77ec78c635b4739cca055dda5b1af7 +Author: Felix Yan +Date: Thu Nov 27 14:00:06 2014 +0800 + + 选题: Quick systemd-nspawn guide + +commit 62d43d894b178b7b4869209233d2b69c14ffa204 +Author: wxy +Date: Thu Nov 27 13:39:14 2014 +0800 + + PUB:20141108 How to Record Your Desktop Video and Audio Using 'Avconv' Tool in Ubuntu + + @ggaaooppeenngg + +commit 9e84442dcedb5b4e5b2dc532bf0aab00a38b8c4d +Author: carolinewuyan <309866211@qq.com> +Date: Thu Nov 27 13:31:42 2014 +0800 + + 已发布 + +commit 3cdfb5927ff234cecda1c2ada70af1f3170e2f75 +Author: wxy +Date: Thu Nov 27 13:04:12 2014 +0800 + + PUB:20141112 [Quick Tip] How To Fix Docky Compositing Error In Lubuntu + + @Vic020 + +commit 5651cf80d86e5232957ef3154bde7998fb0b2f10 +Merge: 3ed12bf d679d35 +Author: joeren +Date: Thu Nov 27 10:10:47 2014 +0800 + + Merge pull request #2025 from felixonmars/20141124-blkid + + [Translated] Linux blkid Command to Find Block Devices Details + +commit 3ed12bf71e7c73b844ec847c15913db1e0cd70cd +Author: wxy +Date: Wed Nov 26 23:35:03 2014 +0800 + + PUB:20141029 How to install LEMP stack nginx MariaDB or MySQL and php on CentOS + + @runningwater + +commit d679d351abd57688a6746a47bfda1a0f3d3e3a3b +Author: Felix Yan +Date: Wed Nov 26 23:09:04 2014 +0800 + + [Translated] Linux blkid Command to Find Block Devices Details + +commit c9b07707f9d9787dc3b0d505dad88d533f082be2 +Author: wxy +Date: Wed Nov 26 23:01:56 2014 +0800 + + PUB:20141029 How to create and manage LXC containers on Ubuntu + + @bazz2 + +commit 0ba87ce9233df4b8f3499e52f9bac12c793e45d1 +Author: wxy +Date: Wed Nov 26 22:47:43 2014 +0800 + + PUB:20141105 Linux FAQs with Answers--How to disable HTTP redirect in wget + + @geekpi + +commit 27d7992eee62f7ccaae99ee6c9ca1a4de064dc31 +Merge: 9a97823 7c1375c +Author: Xingyu.Wang +Date: Wed Nov 26 22:34:05 2014 +0800 + + Merge pull request #2024 from felixonmars/20141124-blkid + + Translating: Linux blkid Command to Find Block Devices Details + +commit 9a97823c5a7dfc856a80c9e0110a978cb0100282 +Merge: ad8ba0f fb74cc0 +Author: Xingyu.Wang +Date: Wed Nov 26 22:33:19 2014 +0800 + + Merge pull request #2023 from johnhoow/master + + Translating by johnhoow + +commit 7c1375cccd21403169ef71c3a9df97243b4676b5 +Author: Felix Yan +Date: Wed Nov 26 21:17:47 2014 +0800 + + Translating: Linux blkid Command to Find Block Devices Details + +commit b6b6d65891534befa4180054ee82720b065ca022 +Author: ZTinoZ +Date: Wed Nov 26 17:39:50 2014 +0800 + + Translating by ZTinoZ + +commit fb74cc08d50b8ccb9c3ae49f227b41494fd93b5f +Merge: a92cdfc ad8ba0f +Author: johnhoow +Date: Wed Nov 26 14:14:46 2014 +0800 + + johnhoow translating + +commit f5cc73c3f3cfc9da0f4e89e8da4470aa31792874 +Author: ZTinoZ +Date: Wed Nov 26 10:40:16 2014 +0800 + + Translating by ZTinoZ + +commit ad8ba0fe6218909c09a1250d1461894127e67662 +Merge: 1fde8e5 78d7bd2 +Author: joeren +Date: Wed Nov 26 09:28:52 2014 +0800 + + Merge pull request #2022 from GOLinux/master + + [Translated] Two Questions with Answers + +commit 78d7bd287e5a3c56d26b0e2023b74234c2283799 +Author: GOLinux +Date: Wed Nov 26 09:26:27 2014 +0800 + + [Translated] Two Questions with Answers + +commit 1fde8e52a8a9d1aa275e26a2898cde632f937a3f +Merge: 791ec3c e928d55 +Author: joeren +Date: Wed Nov 26 08:54:29 2014 +0800 + + Merge pull request #2021 from GOLinux/master + + [Translating] 20141125 Linux FAQs with Answers--How to check glibc version on Linux.md + +commit e928d55e38e7724008754548f922031266890836 +Author: joeren +Date: Wed Nov 26 08:53:57 2014 +0800 + + Update 20141125 Linux FAQs with Answers--How to check glibc version on Linux.md + +commit 791ec3c46a3a139d9289d2a74f1d9bd68d0d1b4f +Merge: 8b77845 10165c8 +Author: joeren +Date: Wed Nov 26 08:53:26 2014 +0800 + + Merge pull request #2020 from GOLinux/master + + [Translating] 20141125 Linux FAQs with Answers--How to fix ImportError--No module named scapy.all.md + +commit 10165c83041e87a7f1bd00d02a48c5beb2835151 +Author: joeren +Date: Wed Nov 26 08:52:46 2014 +0800 + + Update 20141125 Linux FAQs with Answers--How to fix ImportError--No module named scapy.all.md + +commit d12778e9e89e363ea45de81e18c0a4db6e0c2573 +Merge: 25e95b8 8b77845 +Author: joeren +Date: Wed Nov 26 08:51:56 2014 +0800 + + Merge pull request #51 from LCTT/master + + Update Repository + +commit 8b77845ed43e85c462816b6613f42e4176d92b13 +Merge: 6855a65 cd350b0 +Author: joeren +Date: Wed Nov 26 08:51:05 2014 +0800 + + Merge pull request #2018 from alim0x/master + + 09-the history of Android complete + +commit 6855a6597cede9ba9f993f16acd4dbf40967cf7b +Merge: 834ba47 64d08b7 +Author: joeren +Date: Wed Nov 26 08:50:56 2014 +0800 + + Merge pull request #2019 from Stevearzh/master + + Translating by Stevearzh + +commit 64d08b7b04c01ad104ed718dfc1f82c77e8922dd +Author: Stevearzh +Date: Wed Nov 26 00:12:01 2014 +0800 + + Translating by Stevearzh + +commit 834ba47dae70f87ce1fbebe7982aac0cde738965 +Author: wxy +Date: Tue Nov 25 23:38:36 2014 +0800 + + PUB:20141029 Linux FAQs with Answers--How to fix hda-duplex not supported in this QEMU binary + + @geekpi + +commit cd350b09ee20c1c2a7ef465125ec1a8c27c5352d +Author: alim0x +Date: Tue Nov 25 23:01:29 2014 +0800 + + 09-the history of Android complete + +commit 2edcc8b31f4139f3cdacdfe958ea3b0f3548b28c +Author: wxy +Date: Tue Nov 25 22:21:13 2014 +0800 + + PUB:20141024 How To Upgrade Ubuntu 14.04 Trusty To Ubuntu 14.10 Utopic + + @johnhoow 只发布了服务器小节。 + +commit 88408ef3e43b827164affecbe2099e91b6404b8a +Author: wxy +Date: Tue Nov 25 21:51:15 2014 +0800 + + PUB:How-to-debug-a-C or C++ program with GDB command-line debugger + + @SPccman + +commit 21286943d4b86c74f195bba55833ab697c9ba35e +Author: carolinewuyan <309866211@qq.com> +Date: Tue Nov 25 16:44:05 2014 +0800 + + 已校对 + +commit db81f42bb9b0e92d8e7db3fa5a9ada7a6f192899 +Author: wxy +Date: Tue Nov 25 16:40:55 2014 +0800 + + PUB:20140926 How to manage configurations in Linux with Puppet and Augeas + + @geekpi + +commit e794d67ce65ab4665518a0cdf28991a794391145 +Author: DeadFire +Date: Tue Nov 25 15:43:47 2014 +0800 + + 20141125-2 选题 + +commit 3e3d66eecfc53b8c3668215efadb7a02a99e7737 +Author: DeadFire +Date: Tue Nov 25 09:46:48 2014 +0800 + + 20141125-1 选题 + +commit f5a26d4b4a1bec283c88670d828bfa9cfda7cbee +Author: wxy +Date: Mon Nov 24 16:26:00 2014 +0800 + + PUB:20141012 Simple guide to forks in github and git + + @su-kaiyao @FingerLiu + +commit 5d4b860a47bc7e7fe6a621d923bcbd0023ca2f31 +Author: wxy +Date: Mon Nov 24 15:44:56 2014 +0800 + + PUB:20141023 6 Minesweeper Clones for Linux + + @GOLinux + +commit af83c76e78af061b4bf26356d8565751d8fdfd33 +Author: wxy +Date: Mon Nov 24 15:31:28 2014 +0800 + + PUB:20141008 The Why and How of Ansible and Docker + + @bazz2 很流畅! + +commit 59ecbb93ed9489e789e3ae3555b5b3c9cd455c2b +Author: DeadFire +Date: Mon Nov 24 16:06:52 2014 +0800 + + 20141124-2 选题 + +commit ea6654f3e1029f4da193d4a2c305539a2edea5a3 +Author: DeadFire +Date: Mon Nov 24 15:41:26 2014 +0800 + + 20141124-1 选题 + +commit 43079a4446d561f03a6de9d2ad8028a23634c38b +Merge: 9458bcc f3fe68f +Author: Xingyu.Wang +Date: Mon Nov 24 15:19:24 2014 +0800 + + Merge pull request #2015 from KayGuoWhu/master + + [Translating]20141108 When hackers grow old + 哈哈,没关系,这篇是挺难翻译的。。。 + +commit 9458bccfb6ef04f416637871fe452c58b25ae8ca +Merge: 3cf077c 25e95b8 +Author: joeren +Date: Mon Nov 24 09:28:00 2014 +0800 + + Merge pull request #2017 from GOLinux/master + + [Translated] 20141119 Qshutdown--An avanced shutdown tool.md + +commit 25e95b86cc5261b66455beab757dd694f6dc06c1 +Author: GOLinux +Date: Mon Nov 24 09:26:35 2014 +0800 + + [Translated] 20141119 Qshutdown--An avanced shutdown tool.md + +commit 3cf077c4e80282a6ed4edf513883a9224ede3ea3 +Merge: 3473507 efde8a2 +Author: joeren +Date: Mon Nov 24 09:23:58 2014 +0800 + + Merge pull request #2016 from GOLinux/master + + [Translated] 20141023 6 Minesweeper Clones for Linux.md + +commit efde8a206259eb8b4ee2fbe575e8205c588eb328 +Author: GOLinux +Date: Mon Nov 24 09:21:36 2014 +0800 + + [Translated] 20141023 6 Minesweeper Clones for Linux.md + +commit f3fe68f680eaa44fe2313450c46e756fa77ea60d +Author: KayGuoWhu +Date: Mon Nov 24 09:20:07 2014 +0800 + + stop translating + +commit 3473507b3eed42c8a7cb75918758d0bbcb009c49 +Merge: 6accdf1 76971a6 +Author: joeren +Date: Mon Nov 24 08:40:10 2014 +0800 + + Merge pull request #2014 from GOLinux/master + + [Translating] 20141023 6 Minesweeper Clones for Linux.md + +commit 76971a672c148636524c9f08584428a101e0e46c +Author: joeren +Date: Mon Nov 24 08:39:51 2014 +0800 + + Update 20141023 6 Minesweeper Clones for Linux.md + +commit 6accdf11b44eaa75d3e69ca3150f6f44e89ffe67 +Merge: ee7cef3 09c2778 +Author: joeren +Date: Mon Nov 24 08:38:36 2014 +0800 + + Merge pull request #2013 from GOLinux/master + + [Translating] 20141119 Qshutdown--An avanced shutdown tool.md + +commit 09c2778e955ea03754bf8c864f3e558edda770bc +Author: joeren +Date: Mon Nov 24 08:38:09 2014 +0800 + + Update 20141119 Qshutdown--An avanced shutdown tool.md + +commit f7e2ffda4fd2efcf418614331b31213822665df1 +Merge: 8d4ebf9 ee7cef3 +Author: joeren +Date: Mon Nov 24 08:36:38 2014 +0800 + + Merge pull request #50 from LCTT/master + + Update Repository + +commit ee7cef30c35a2f99fa20f26b5e06006ae6f4b021 +Merge: 68a784d 8ee9eb4 +Author: joeren +Date: Mon Nov 24 08:35:52 2014 +0800 + + Merge pull request #2012 from coloka/master + + 翻译完成:20141120 How to visualize memory usage on Linux.md + +commit 8ee9eb4893ad35de2e1f87c22de6ccaf3f38bb77 +Author: coloka +Date: Sun Nov 23 21:13:25 2014 +0800 + + 翻译完成:20141120 How to visualize memory usage on Linux.md + 翻译中:20141117 Restricting process CPU usage using nice cpulimit and cgroups.md + +commit 68a784d630ca20ae2523029edb45c9cf37f2c8d7 +Author: wxy +Date: Sun Nov 23 12:13:54 2014 +0800 + + PUB:20140901 How to install and configure ownCloud on Debian + + @geekpi + +commit 01f749ff651d08c33e77563a987098f7b510f573 +Author: wxy +Date: Sun Nov 23 11:51:55 2014 +0800 + + PUB:20140828 Setup Thin Provisioning Volumes in Logical Volume Management (LVM)--Part IV + + @GOLinux + +commit e95ffded0019d13d8478d520f801ad2c6a29f0a9 +Author: wxy +Date: Sun Nov 23 11:09:06 2014 +0800 + + PUB:20141027 Handy Disk Image Tools + + @barney-ro + +commit df66dcc31549c0db544e9fa96d4ffe342b0cd333 +Author: wxy +Date: Sat Nov 22 22:01:18 2014 +0800 + + PUB:20141115 LibreOffice 4.3.4 Released With 60 Bug Fixes v4.4 Shaping Up Nicely + + @ZTinoZ + +commit 891a533eeca72373fdff2c160427fcdd00d16347 +Merge: 424da1b d0cd7a6 +Author: Xingyu.Wang +Date: Sat Nov 22 21:09:41 2014 +0800 + + Merge pull request #2011 from ZTinoZ/master + + Translating by ZTinoZ + +commit d0cd7a648fde3e6cc7b4b320064c2db3868ca7ca +Author: ZTinoZ +Date: Sat Nov 22 20:57:33 2014 +0800 + + Translating by ZTinoZ + +commit 424da1b9fb8be94af487639d6347524668d00cd2 +Merge: 4436961 52bff59 +Author: Xingyu.Wang +Date: Sat Nov 22 20:22:31 2014 +0800 + + Merge pull request #2008 from coloka/master + + 【翻译完成】20141112 How to Debug CPU Regressions Using Flame Graphs.md + +commit a92cdfc2e86628214e4b3eeeaa0b89f8f4f2cf8b +Author: johnhoow +Date: Sat Nov 22 17:02:40 2014 +0800 + + johnhoow translating + +commit 4436961b4842bae7d02e404568ac56c74efde07a +Author: wxy +Date: Fri Nov 21 14:53:58 2014 +0800 + + PUB:03 - The history of Android + + @alim0x + +commit a5562536e3e4c08474f2911fc03f5d91077e0c62 +Author: wxy +Date: Thu Nov 20 14:40:51 2014 +0800 + + PUB:20141027 How to download an ISO image with BitTorrent fast and safely from the command line + + @wangjiezhe + +commit c75a469c338c91aab8d0ffc95f2ab1739a8a01de +Author: wxy +Date: Thu Nov 20 13:08:02 2014 +0800 + + PUB:20141106 timedatectl--Control Linux System Time and Date in Systemd + + @su-kaiyao + +commit 6dd41fdc522dc5b213c2621358b4cec6bd8a96b5 +Author: wxy +Date: Thu Nov 20 12:44:04 2014 +0800 + + PUB:20141106 Quick Tip Allow Services Through Firewall In openSUSE + + @Vic020 + +commit 2bd2708f9b16bc0e96a389f6bd28aabfc8145779 +Author: wxy +Date: Wed Nov 19 22:20:23 2014 +0800 + + PUB:20141017 pidstat - Monitor and Find Statistics for Linux Procesess + + @johnhoow + +commit 5aa9736f371d7d32ef5c68fdfa12a121c9f6bef6 +Merge: a1b4767 f87f093 +Author: geekpi +Date: Sat Nov 22 10:59:18 2014 +0800 + + Merge pull request #2006 from runningwater/master + + 【翻译中 by runningwater】10 SCP Commands to Transfer Files/Folders in Linux + +commit a1b47670bcadb3b1b185cb0c8f4851072a33fd4d +Merge: 1e413d3 0dc9479 +Author: geekpi +Date: Sat Nov 22 10:58:20 2014 +0800 + + Merge pull request #2007 from SPccman/patch-8 + + Update 20141111 Meet systemd the controversial project taking over a Lin... + +commit 1e413d3232d252cc9f9fe158fd6725d9965f6fb4 +Merge: ddaa80e 2db322f +Author: geekpi +Date: Sat Nov 22 10:57:22 2014 +0800 + + Merge pull request #2009 from geekpi/master + + [Translating] How To Make Raspberry Pi Boot In To GUI By Default + +commit 2db322fa4bf48dfa63610cffc8edc1b974779afd +Author: zhengsihua +Date: Sat Nov 22 10:56:06 2014 +0800 + + translated + +commit a813b7d0c4fe2e68bd66e49ca7152ca0ce7d8c11 +Author: zhengsihua +Date: Sat Nov 22 10:17:19 2014 +0800 + + [Translating] How To Make Raspberry Pi Boot In To GUI By Default + +commit 52bff59cacfd5110fff61f7eb8f97d0bbb2964fc +Author: coloka +Date: Fri Nov 21 23:23:22 2014 +0800 + + 修改文件夹 source -> translated + +commit 8fa646f2f4d7cd52183ea4a7bdd82c58f5557cab +Author: coloka +Date: Fri Nov 21 22:39:52 2014 +0800 + + 【翻译中】20141120 How to visualize memory usage on Linux.md + +commit 988a3f81572a1dbfa0db12b8943784200ae236b7 +Author: coloka +Date: Fri Nov 21 22:34:37 2014 +0800 + + 翻译完成 by coloka + +commit 3b25910a0976d572ac091fe34ec4972eddc6b7b3 +Merge: 4bbc010 ddaa80e +Author: coloka +Date: Fri Nov 21 22:32:35 2014 +0800 + + Merge branch 'master' of https://github.com/LCTT/TranslateProject.git + +commit 4bbc01058ce83f30ac78147092c63401c6e2aec8 +Author: coloka +Date: Fri Nov 21 22:32 \ No newline at end of file diff --git a/gihua b/gihua new file mode 100644 index 0000000000..e4cbf7acae --- /dev/null +++ b/gihua @@ -0,0 +1,232 @@ + + SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS + + Commands marked with * may be preceded by a number, _N. + Notes in parentheses indicate the behavior if _N is given. + A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K. + + h H Display this help. + q :q Q :Q ZZ Exit. + --------------------------------------------------------------------------- + + MMOOVVIINNGG + + e ^E j ^N CR * Forward one line (or _N lines). + y ^Y k ^K ^P * Backward one line (or _N lines). + f ^F ^V SPACE * Forward one window (or _N lines). + b ^B ESC-v * Backward one window (or _N lines). + z * Forward one window (and set window to _N). + w * Backward one window (and set window to _N). + ESC-SPACE * Forward one window, but don't stop at end-of-file. + d ^D * Forward one half-window (and set half-window to _N). + u ^U * Backward one half-window (and set half-window to _N). + ESC-) RightArrow * Left one half screen width (or _N positions). + ESC-( LeftArrow * Right one half screen width (or _N positions). + F Forward forever; like "tail -f". + r ^R ^L Repaint screen. + R Repaint screen, discarding buffered input. + --------------------------------------------------- + Default "window" is the screen height. + Default "half-window" is half of the screen height. + --------------------------------------------------------------------------- + + SSEEAARRCCHHIINNGG + + /_p_a_t_t_e_r_n * Search forward for (_N-th) matching line. + ?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line. + n * Repeat previous search (for _N-th occurrence). + N * Repeat previous search in reverse direction. + ESC-n * Repeat previous search, spanning files. + ESC-N * Repeat previous search, reverse dir. & spanning files. + ESC-u Undo (toggle) search highlighting. + &_p_a_t_t_e_r_n * Display only matching lines + --------------------------------------------------- + A search pattern may be preceded by one or more of: + ^N or ! Search for NON-matching lines. + ^E or * Search multiple files (pass thru END OF FILE). + ^F or @ Start search at FIRST file (for /) or last file (for ?). + ^K Highlight matches, but don't move (KEEP position). + ^R Don't use REGULAR EXPRESSIONS. + --------------------------------------------------------------------------- + + JJUUMMPPIINNGG + + g < ESC-< * Go to first line in file (or line _N). + G > ESC-> * Go to last line in file (or line _N). + p % * Go to beginning of file (or _N percent into file). + t * Go to the (_N-th) next tag. + T * Go to the (_N-th) previous tag. + { ( [ * Find close bracket } ) ]. + } ) ] * Find open bracket { ( [. + ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>. + ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_> + --------------------------------------------------- + Each "find close bracket" command goes forward to the close bracket + matching the (_N-th) open bracket in the top line. + Each "find open bracket" command goes backward to the open bracket + matching the (_N-th) close bracket in the bottom line. + + m_<_l_e_t_t_e_r_> Mark the current position with . + '_<_l_e_t_t_e_r_> Go to a previously marked position. + '' Go to the previous position. + ^X^X Same as '. + --------------------------------------------------- + A mark is any upper-case or lower-case letter. + Certain marks are predefined: + ^ means beginning of the file + $ means end of the file + --------------------------------------------------------------------------- + + CCHHAANNGGIINNGG FFIILLEESS + + :e [_f_i_l_e] Examine a new file. + ^X^V Same as :e. + :n * Examine the (_N-th) next file from the command line. + :p * Examine the (_N-th) previous file from the command line. + :x * Examine the first (or _N-th) file from the command line. + :d Delete the current file from the command line list. + = ^G :f Print current file name. + --------------------------------------------------------------------------- + + MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS + + -_<_f_l_a_g_> Toggle a command line option [see OPTIONS below]. + --_<_n_a_m_e_> Toggle a command line option, by name. + __<_f_l_a_g_> Display the setting of a command line option. + ___<_n_a_m_e_> Display the setting of an option, by name. + +_c_m_d Execute the less cmd each time a new file is examined. + + !_c_o_m_m_a_n_d Execute the shell command with $SHELL. + |XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command. + v Edit the current file with $VISUAL or $EDITOR. + V Print version number of "less". + --------------------------------------------------------------------------- + + OOPPTTIIOONNSS + + Most options may be changed either on the command line, + or from within less by using the - or -- command. + Options may be given in one of two forms: either a single + character preceded by a -, or a name preceded by --. + + -? ........ --help + Display help (from command line). + -a ........ --search-skip-screen + Search skips current screen. + -A ........ --SEARCH-SKIP-SCREEN + Search starts just after target line. + -b [_N] .... --buffers=[_N] + Number of buffers. + -B ........ --auto-buffers + Don't automatically allocate buffers for pipes. + -c ........ --clear-screen + Repaint by clearing rather than scrolling. + -d ........ --dumb + Dumb terminal. + -D [_x_n_._n] . --color=_x_n_._n + Set screen colors. (MS-DOS only) + -e -E .... --quit-at-eof --QUIT-AT-EOF + Quit at end of file. + -f ........ --force + Force open non-regular files. + -F ........ --quit-if-one-screen + Quit if entire file fits on first screen. + -g ........ --hilite-search + Highlight only last match for searches. + -G ........ --HILITE-SEARCH + Don't highlight any matches for searches. + -h [_N] .... --max-back-scroll=[_N] + Backward scroll limit. + -i ........ --ignore-case + Ignore case in searches that do not contain uppercase. + -I ........ --IGNORE-CASE + Ignore case in all searches. + -j [_N] .... --jump-target=[_N] + Screen position of target lines. + -J ........ --status-column + Display a status column at left edge of screen. + -k [_f_i_l_e] . --lesskey-file=[_f_i_l_e] + Use a lesskey file. + -K --quit-on-intr + Exit less in response to ctrl-C. + -L ........ --no-lessopen + Ignore the LESSOPEN environment variable. + -m -M .... --long-prompt --LONG-PROMPT + Set prompt style. + -n -N .... --line-numbers --LINE-NUMBERS + Don't use line numbers. + -o [_f_i_l_e] . --log-file=[_f_i_l_e] + Copy to log file (standard input only). + -O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e] + Copy to log file (unconditionally overwrite). + -p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n] + Start at pattern (from command line). + -P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t] + Define new prompt. + -q -Q .... --quiet --QUIET --silent --SILENT + Quiet the terminal bell. + -r -R .... --raw-control-chars --RAW-CONTROL-CHARS + Output "raw" control characters. + -s ........ --squeeze-blank-lines + Squeeze multiple blank lines. + -S ........ --chop-long-lines + Chop (truncate) long lines rather than wrapping. + -t [_t_a_g] .. --tag=[_t_a_g] + Find a tag. + -T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e] + Use an alternate tags file. + -u -U .... --underline-special --UNDERLINE-SPECIAL + Change handling of backspaces. + -V ........ --version + Display the version number of "less". + -w ........ --hilite-unread + Highlight first new line after forward-screen. + -W ........ --HILITE-UNREAD + Highlight first new line after any forward movement. + -x [_N[,...]] --tabs=[_N[,...]] + Set tab stops. + -X ........ --no-init + Don't use termcap init/deinit strings. + -y [_N] .... --max-forw-scroll=[_N] + Forward scroll limit. + -z [_N] .... --window=[_N] + Set size of window. + -" [_c[_c]] . --quotes=[_c[_c]] + Set shell quote characters. + -~ ........ --tilde + Don't display tildes after end of file. + -# [_N] .... --shift=[_N] + Horizontal scroll amount (0 = one half screen width) + ........ --no-keypad + Don't send termcap keypad init/deinit strings. + ........ --follow-name + The F command changes files if the input file is renamed. + ........ --use-backslash + Subsequent options use backslash as escape char. + + + --------------------------------------------------------------------------- + + LLIINNEE EEDDIITTIINNGG + + These keys can be used to edit text being entered + on the "command line" at the bottom of the screen. + + RightArrow ..................... ESC-l ... Move cursor right one character. + LeftArrow ...................... ESC-h ... Move cursor left one character. + ctrl-RightArrow ESC-RightArrow ESC-w ... Move cursor right one word. + ctrl-LeftArrow ESC-LeftArrow ESC-b ... Move cursor left one word. + HOME ........................... ESC-0 ... Move cursor to start of line. + END ............................ ESC-$ ... Move cursor to end of line. + BACKSPACE ................................ Delete char to left of cursor. + DELETE ......................... ESC-x ... Delete char under cursor. + ctrl-BACKSPACE ESC-BACKSPACE ........... Delete word to left of cursor. + ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor. + ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line. + UpArrow ........................ ESC-k ... Retrieve previous command line. + DownArrow ...................... ESC-j ... Retrieve next command line. + TAB ...................................... Complete filename & cycle. + SHIFT-TAB ...................... ESC-TAB Complete filename & reverse cycle. + ctrl-L ................................... Complete filename, list all. + + diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md new file mode 100644 index 0000000000..b4ddb4497c --- /dev/null +++ b/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md @@ -0,0 +1,144 @@ +Linux 有问必答: 如何在Ubuntu或者Debian中下载和安装ixgbe驱动 +================================================================================ +> **提问**: 我想为我的Intel 10G网卡下载安装最新的ixgbe。我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? + +Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现代的Linux发版已经将ixgbe作为一个可加载模块。然而,有些情况你不想要你机器上的已经编译和安装的ixgbe驱动。比如,你想要体验ixbge驱动的最新特性。同样,自带内核中的ixgbe中的一个默认问题是不允许你自定义旭东内核参数。如果你想要完全自动一ixgbe驱动(比如 RSS、多队列、中断阈值等等),你需要手动从源码编译ixgbe驱动。 + +这里是如何在Ubuntu、Debian或者它们的衍生版中下载安装ixgbe驱动。 + +### 第一步: 安装前提 ### + +安装之前,需要安装匹配的内核头文件和开发工具包。 + + $ sudo apt-get install linux-headers-$(uname -r) + $ sudo apt-get install gcc make + +### 第二步: 编译Ixgbe驱动 ### + +从[最新的ixgbe驱动][1]中下载源码。 + + $ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz + +如下编译ixgbe驱动。 + + $ tar xvfvz ixgbe-3.23.2.tar.gz + $ cd ixgbe-3.23.2/src + $ make + +### 第三步: 检查Ixgbe驱动 ### + +编译之后,你会看到在ixgbe-3.23.2/src目录下创建了**ixgbe.ko**。这就是会加载到内核之中的ixgbe驱动。 + +用modinfo命令检查内核模块的信息。注意你需要指定模块的绝对路径(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。输出中会显示ixgbe内核的版本。 + + $ modinfo ./ixgbe.ko + +---------- + + filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko + version: 3.23.2 + license: GPL + description: Intel(R) 10 Gigabit PCI Express Network Driver + author: Intel Corporation, + srcversion: 2ADA5E537923E983FA9DAE2 + alias: pci:v00008086d00001560sv*sd*bc*sc*i* + alias: pci:v00008086d00001558sv*sd*bc*sc*i* + alias: pci:v00008086d0000154Asv*sd*bc*sc*i* + alias: pci:v00008086d00001557sv*sd*bc*sc*i* + alias: pci:v00008086d0000154Fsv*sd*bc*sc*i* + alias: pci:v00008086d0000154Dsv*sd*bc*sc*i* + alias: pci:v00008086d00001528sv*sd*bc*sc*i* + alias: pci:v00008086d000010F8sv*sd*bc*sc*i* + alias: pci:v00008086d0000151Csv*sd*bc*sc*i* + alias: pci:v00008086d00001529sv*sd*bc*sc*i* + alias: pci:v00008086d0000152Asv*sd*bc*sc*i* + alias: pci:v00008086d000010F9sv*sd*bc*sc*i* + alias: pci:v00008086d00001514sv*sd*bc*sc*i* + alias: pci:v00008086d00001507sv*sd*bc*sc*i* + alias: pci:v00008086d000010FBsv*sd*bc*sc*i* + alias: pci:v00008086d00001517sv*sd*bc*sc*i* + alias: pci:v00008086d000010FCsv*sd*bc*sc*i* + alias: pci:v00008086d000010F7sv*sd*bc*sc*i* + alias: pci:v00008086d00001508sv*sd*bc*sc*i* + alias: pci:v00008086d000010DBsv*sd*bc*sc*i* + alias: pci:v00008086d000010F4sv*sd*bc*sc*i* + alias: pci:v00008086d000010E1sv*sd*bc*sc*i* + alias: pci:v00008086d000010F1sv*sd*bc*sc*i* + alias: pci:v00008086d000010ECsv*sd*bc*sc*i* + alias: pci:v00008086d000010DDsv*sd*bc*sc*i* + alias: pci:v00008086d0000150Bsv*sd*bc*sc*i* + alias: pci:v00008086d000010C8sv*sd*bc*sc*i* + alias: pci:v00008086d000010C7sv*sd*bc*sc*i* + alias: pci:v00008086d000010C6sv*sd*bc*sc*i* + alias: pci:v00008086d000010B6sv*sd*bc*sc*i* + depends: ptp,dca + vermagic: 3.11.0-19-generic SMP mod_unload modversions + parm: InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int) + parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int) + parm: MQ:Disable or enable Multiple Queues, default 1 (array of int) + parm: DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) + parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) + parm: VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int) + parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int) + parm: VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int) + parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int) + parm: LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int) + parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int) + parm: LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int) + parm: LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int) + parm: LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int) + parm: FdirPballoc:Flow Director packet buffer allocation level: + 1 = 8k hash filters or 2k perfect filters + 2 = 16k hash filters or 4k perfect filters + 3 = 32k hash filters or 8k perfect filters (array of int) + parm: AtrSampleRate:Software ATR Tx packet sample rate (array of int) + parm: FCoE:Disable or enable FCoE Offload, default 1 (array of int) + parm: LRO:Large Receive Offload (0,1), default 1 = on (array of int) + parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int) + +### 第四步: 测试Ixgbe驱动 ### + +在测试新的模块之前,如果你内核中已存在旧版本ixgbe模块的话你需要先移除它。 + + $ sudo rmmod ixgbe + +接着使用insmod命令插入新编译的ixgbe模块。确保指定一个模块的绝对路径。 + + $ sudo insmod ./ixgbe.ko + +如果上面的命令成功运行,就不会显示任何的信息。 + +如果你需要,你可以尝试加入额外的参数。比如,设置RSS的队列数量为16: + + $ sudo insmod ./ixgbe.ko RSS=16 + +检查**/var/log/kern.log**来查看ixgbe驱动是否成功激活。查看日志中的“Intel(R) 10 Gigabit PCI Express Network Driver”。ixgbe的版本信息应该和之前的modinfo的显示应该相同。 + + Sep 18 14:48:52 spongebob kernel: [684717.906254] Intel(R) 10 Gigabit PCI Express Network Driver - version 3.22.3 + +![](https://farm8.staticflickr.com/7583/16056721867_f06e152076_c.jpg) + +### 第五步: 安装Ixgbe驱动 ### + +一旦你验证新的ixgbe驱动已经成功家在,最后一步是在你的系统中安装驱动。 + + $ sudo make install + +**ixgbe.ko** 接着会安装在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。 + +这一步起,你可以用下面的modprobe命令加载ixgbe驱动了。注意你不必再指定绝对路径。 + + $ sudo modprobe ixgbe + +如果你希望在启动时家在ixgbe驱动,你可以在/etc/modules的最后加入“ixgbe”。 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/download-install-ixgbe-driver-ubuntu-debian.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://sourceforge.net/projects/e1000/files/ixgbe%20stable/ \ No newline at end of file From bc7ce33625855335719065818a808d5a54e2e1b1 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Sun, 25 Jan 2015 19:54:36 +0800 Subject: [PATCH 057/725] Revert "translated" --- ated]12 - The history of Android.md | 7113 ----------------- gihua | 232 - ...nstall ixgbe driver on Ubuntu or Debian.md | 144 - 3 files changed, 7489 deletions(-) delete mode 100644 ated]12 - The history of Android.md delete mode 100644 gihua delete mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md diff --git a/ated]12 - The history of Android.md b/ated]12 - The history of Android.md deleted file mode 100644 index 346158bb9f..0000000000 --- a/ated]12 - The history of Android.md +++ /dev/null @@ -1,7113 +0,0 @@ -commit bf5b9619d554c254c9c07ee8bbe37d99a370db3e -Author: zhengsihua -Date: Sun Jan 25 13:23:45 2015 +0800 - - translating - -commit 68e5ad658a4c3497449c31a7eadbb0516baa76ff -Author: zhengsihua -Date: Sat Jan 24 13:58:59 2015 +0800 - - translated - -commit 126d103bec40f9338a28caf048d87980e7ff81e6 -Author: zhengsihua -Date: Sat Jan 24 13:12:58 2015 +0800 - - translating - -commit 55b5a17d77b048219177e1f237b552265c8735c9 -Merge: b90b0e6 cadf2b8 -Author: geekpi -Date: Sat Jan 24 13:03:24 2015 +0800 - - Merge pull request #2284 from alim0x/master - - [translated]12 - The history of Android.md - -commit cadf2b8e6082cb045322d6e5be11a90507971255 -Author: alim0x -Date: Sat Jan 24 12:34:03 2015 +0800 - - [translated]12 - The history of Android.md - -commit b90b0e6f2ffeeb15b474ef6852be052e0d0e9500 -Author: wxy -Date: Sat Jan 24 12:05:53 2015 +0800 - - PUB:20150106 2015--Open Source Has Won, But It Isn't Finished - - @runningwater - -commit 50d77b9f32e77cbba25eeb2e45e8da67007edfb6 -Merge: 4a3d1c2 289fc1d -Author: Xingyu.Wang -Date: Sat Jan 24 11:07:54 2015 +0800 - - Merge pull request #2283 from H-mudcup/master - - Translated by H-mudcup - -commit 289fc1d826a678fedff1560206892285acc0ebfb -Author: H-mudcup -Date: Fri Jan 23 18:36:05 2015 +0800 - - Create 20140819 Top 4 Linux download managers.md - -commit bf37e3ff9f772207e81c6fc068cdf208c895f087 -Author: H-mudcup -Date: Fri Jan 23 18:32:47 2015 +0800 - - Delete 20140819 Top 4 Linux download managers.md - -commit 9c944371295fcb6a457e83aafe05661aaf478c2b -Merge: fa817df 4a3d1c2 -Author: H-mudcup -Date: Fri Jan 23 18:32:18 2015 +0800 - - Merge pull request #10 from LCTT/master - - 同步2015/1/23 - -commit 4a3d1c216ff31c3a9c3321b8c6c7e8aa16408192 -Author: DeadFire -Date: Fri Jan 23 16:42:05 2015 +0800 - - 20150123-1 选题 - -commit 9af2bba9121ad68f25bda387a5f724455726096b -Merge: b4b4c28 c77b9e2 -Author: Xingyu.Wang -Date: Fri Jan 23 16:20:22 2015 +0800 - - Merge pull request #2280 from Vic020/master - - Translated:20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04 - -commit b4b4c28b2c6f349a3b072b8e75d149b38ca6aba9 -Merge: 97cda34 cbf2f00 -Author: Xingyu.Wang -Date: Fri Jan 23 16:19:45 2015 +0800 - - Merge pull request #2279 from 2q1w2007/master - - 选题 - 格式中建议采用 H3标题,如果嵌套层次多,可增加 H2标题;层次非常多,可以使用 H1,H4。 - -commit 97cda347ce7856d5c47961c0ef406753f8611746 -Merge: 6852399 50ee769 -Author: geekpi -Date: Fri Jan 23 10:35:05 2015 +0800 - - Merge pull request #2282 from geekpi/master - - translated - -commit 50ee769861dc59c053936d466ad6d6e8e0c28713 -Author: zhengsihua -Date: Fri Jan 23 10:34:07 2015 +0800 - - translated - -commit 685239920ac7ac540f3d706414bbcaff333c800e -Merge: fa6a21a 955219b -Author: geekpi -Date: Fri Jan 23 10:00:57 2015 +0800 - - Merge pull request #2281 from geekpi/master - - translating - -commit 955219b1a8180109f20917d4bcb122afe8383be1 -Author: zhengsihua -Date: Fri Jan 23 09:55:35 2015 +0800 - - translating - -commit c77b9e2e2cebef2f195f95d8e2c8137b258ea123 -Author: Vic___ -Date: Fri Jan 23 00:01:05 2015 +0800 - - Moved - -commit 81fb54a565cfe5452c7e03f8667d3a5ea77340db -Author: Vic___ -Date: Fri Jan 23 00:00:02 2015 +0800 - - translated - -commit cbf2f006fb4063cce55ca4e0bdc3e59fb0aa0d27 -Author: 2q1w2007 <2q1w2007@163.com> -Date: Thu Jan 22 23:07:38 2015 +0800 - - 选题 - How are C data types “supported directly by most computers”? - -commit 50c09bde87772124167a544d1062ee55c661ad44 -Merge: d54627b fa6a21a -Author: Junkai <2q1w2007@users.noreply.github.com> -Date: Thu Jan 22 23:02:20 2015 +0800 - - Merge pull request #2 from LCTT/master - - 2015/01/22 - -commit fa6a21a32f211a2533ea17b3bb3aeee287bc40c5 -Author: wxy -Date: Thu Jan 22 21:47:59 2015 +0800 - - PUB:How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS - - @SPccman - -commit 7e2774538792356566132b26dc0c1241707c59e7 -Author: wxy -Date: Thu Jan 22 21:22:49 2015 +0800 - - PUB:20141124 Linux blkid Command to Find Block Devices Details - - @felixonmars - -commit 704555fa869bc59295b3b7f2dfd8bc5403dd5b99 -Author: wxy -Date: Thu Jan 22 21:11:33 2015 +0800 - - PUB:20141120 How to install an Opensource VPN Server on Linux - - @geekpi - -commit 7c7ee6a171373f47c53b08cb1cbb174c2695402d -Author: wxy -Date: Thu Jan 22 21:01:22 2015 +0800 - - PUB:20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10 - - @geekpi - -commit 29e887d2951454e8f8ef77d9fb68cf96e0de83ed -Author: wxy -Date: Thu Jan 22 20:54:46 2015 +0800 - - PUB:20141009 How to convert image audio and video formats on Ubuntu - - @mr-ping - -commit f52763aec00abc33afabb57c5cf06887ce5aad5d -Merge: b9039a4 ae6e08a -Author: Xingyu.Wang -Date: Thu Jan 22 20:45:31 2015 +0800 - - Merge pull request #2278 from Stevearzh/master - - Translating by Stevearzh - -commit ae6e08a3757da9deb6542a843556418df4bd1ae0 -Author: Stevearzh -Date: Thu Jan 22 20:04:55 2015 +0800 - - Translating by Stevearzh - -commit b9039a42d65b5e87e7f91c08d49a8ff8d0381a1e -Author: carolinewuyan <309866211@qq.com> -Date: Thu Jan 22 17:14:43 2015 +0800 - - 已校对 - -commit 68c1b1d6aca07856abfe3e68dcfcac413bb4fd64 -Author: DeadFire -Date: Thu Jan 22 16:48:43 2015 +0800 - - 20150122-2 选题 - -commit a64d6616b4c5ef11593682528386abf99efd8a66 -Merge: 4e1caae 88c2152 -Author: Xingyu.Wang -Date: Thu Jan 22 13:53:46 2015 +0800 - - Merge pull request #2277 from Medusar/master - - Rename How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps to How... - -commit 88c2152c5884ebced13ddcd7b2b3a06482f1fe0d -Author: Medusar <939958749@qq.com> -Date: Thu Jan 22 12:10:50 2015 +0800 - - Rename How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps to How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md - - 命名错误,重新命名 - -commit 4e1caae562f96bbc3f88a3349209c78e44d04829 -Author: DeadFire -Date: Thu Jan 22 10:39:22 2015 +0800 - - 20150122-1 选题 - -commit a2a9ed6eeaeecdc934bb08d52039d73aaba93fee -Merge: d368819 933c579 -Author: Xingyu.Wang -Date: Thu Jan 22 10:38:28 2015 +0800 - - Merge pull request #2276 from Medusar/master - - How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps 翻译完毕 - good job - -commit d368819a59fe09269cebdbb670493ebb9c7b8046 -Author: carolinewuyan <309866211@qq.com> -Date: Thu Jan 22 10:15:59 2015 +0800 - - 已校对 - -commit 933c579852d81f20024416a4047a179ccbe3a148 -Author: Medusar <939958749@qq.com> -Date: Wed Jan 21 23:36:16 2015 +0800 - - Create How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps - -commit 287baade1a07d54bcc2fdcc13af8666331fb9782 -Author: Medusar <939958749@qq.com> -Date: Wed Jan 21 23:29:30 2015 +0800 - - Delete 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md - -commit 8a9bb7c9dd9b275eb4ef0dcbe75c21b7a5cf5c96 -Merge: 041dec3 8254598 -Author: Xingyu.Wang -Date: Wed Jan 21 21:47:09 2015 +0800 - - Merge pull request #2274 from Medusar/master - - Update 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Ste... - 干得漂亮~ - -commit 041dec383262af6053d677e30e60ee749dc2c3b9 -Merge: 16991e9 f8f56a5 -Author: geekpi -Date: Wed Jan 21 21:26:35 2015 +0800 - - Merge pull request #2275 from geekpi/master - - translated - -commit f8f56a5a5be134027114a52d07053e4c52e3153a -Author: zhengsihua -Date: Wed Jan 21 21:25:40 2015 +0800 - - translated - -commit 82545984d3934ade4d1d5c7faa0bf35e0e9c7415 -Author: Medusar <939958749@qq.com> -Date: Wed Jan 21 21:15:58 2015 +0800 - - Update 20150114 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md - - start translating - -commit 16991e9f47c0c1416533c96be9b01d821a41c5e0 -Merge: 99cbe50 3469c61 -Author: geekpi -Date: Wed Jan 21 20:39:10 2015 +0800 - - Merge pull request #2273 from geekpi/master - - translating - -commit 3469c614d6bf530b78f812acaefbf52c34b6ec92 -Author: zhengsihua -Date: Wed Jan 21 20:37:30 2015 +0800 - - translating - -commit 99cbe5088a5eeda2188c7eb147da6b16ab5a6749 -Merge: 1ce5287 d54627b -Author: Xingyu.Wang -Date: Wed Jan 21 20:12:08 2015 +0800 - - Merge pull request #2271 from 2q1w2007/master - - 两个选题 - 很好~~ - -commit d54627b5f41ec9ec86ecf348c9aa8338b3554e4c -Merge: 1c9a86b 4885bae -Author: 2q1w2007 <2q1w2007@163.com> -Date: Wed Jan 21 20:09:59 2015 +0800 - - Merge branch 'master' of github.com:2q1w2007/TranslateProject - - Conflicts: - sources/talk/20150121 Did this JavaScript break the console.md - sources/talk/20150121 If a 32-bit integer overflows.md - -commit 1c9a86bf197214b3b0fb9ec92e811b4a59d9a557 -Author: 2q1w2007 <2q1w2007@163.com> -Date: Wed Jan 21 20:03:31 2015 +0800 - - 格式修正 - -commit 4885bae1f7c284ec27cdbfbc827b44b9214b20bd -Author: 2q1w2007 <2q1w2007@163.com> -Date: Wed Jan 21 20:03:31 2015 +0800 - - 格式修正 - -commit 1ce52879ddbb05f398ad22a6f819975fbd3d0122 -Merge: 74bd960 489b22b -Author: Xingyu.Wang -Date: Wed Jan 21 19:57:24 2015 +0800 - - Merge pull request #2272 from mtunique/patch-2 - - Translating Linux FAQs with Answers--How to check disk space on Linux wi... - -commit 74bd9601b6b7ab260cb320c96c76af595fffd1ec -Merge: 55f0d49 a9683a8 -Author: Xingyu.Wang -Date: Wed Jan 21 19:54:33 2015 +0800 - - Merge pull request #2270 from ZhouJ-sh/master - - translated 20150119 3 Ways To Create A Lightweight And Persistent Xub… - -commit 489b22badd6f189969741b530d99e3d9bb807ad9 -Author: Tao Meng -Date: Wed Jan 21 19:50:56 2015 +0800 - - Translating Linux FAQs with Answers--How to check disk space on Linux with df command by mtunique - - Translating Linux FAQs with Answers--How to check disk space on Linux with df command by mtunique - -commit 3f513acb8a34415513fe5db053d8de89ffcbdfba -Author: 2q1w2007 <2q1w2007@163.com> -Date: Wed Jan 21 18:59:46 2015 +0800 - - 。。。 - -commit 3679969319489cd184b9150bf6272c00869fd64f -Author: 2q1w2007 <2q1w2007@163.com> -Date: Wed Jan 21 18:58:45 2015 +0800 - - 选题 - Did this JavaScript break the console? - -commit a2894417c911445cca786083971bc23aaa55706b -Author: 2q1w2007 <2q1w2007@163.com> -Date: Wed Jan 21 18:44:31 2015 +0800 - - 选题 - If a 32-bit integer overflows, can we use a 40-bit structure instead of a 64-bit long one? - -commit a9683a8267858fa2ef06528f500897f3de4a1ea3 -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Jan 21 18:16:51 2015 +0800 - - 修改链接 - -commit 19aa9bc619e1668987695e831f1fd4a99a7903c3 -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Jan 21 18:10:28 2015 +0800 - - translate complete , delete sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md - -commit d91316c19c6668b82cfabf9f89e4ad07c7193202 -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Jan 21 18:09:27 2015 +0800 - - translated 20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md - -commit 5cda43ed6cad1dad66f2cdc5ec590650c0d38f3c -Merge: d3bcd51 55f0d49 -Author: Junkai <2q1w2007@users.noreply.github.com> -Date: Wed Jan 21 17:54:40 2015 +0800 - - Merge pull request #1 from LCTT/master - - 2015/01/21 - -commit 55f0d498d452142ec6eee955a3e5ff05905c341e -Author: DeadFire -Date: Wed Jan 21 16:51:17 2015 +0800 - - 20150121-3 选题 - -commit 4fc1280f935e85a2a830e75faed1dd7b72a83291 -Author: DeadFire -Date: Wed Jan 21 16:30:21 2015 +0800 - - 20150121-2 选题 - -commit 9922596791a0c4222418c2c0edbfe8e947100123 -Author: DeadFire -Date: Wed Jan 21 16:18:33 2015 +0800 - - 20150121-1 选题 - -commit f9028e3ece7d2f387e07de5e28cbc589b5ce8fad -Merge: 2b77206 c4526a6 -Author: runningwater -Date: Tue Jan 20 14:47:47 2015 +0800 - - Merge pull request #2269 from runningwater/master - - 翻译中 by runningwater - -commit c4526a6717a525da0030a0f01e9533d1663c9f57 -Author: runningwater -Date: Tue Jan 20 14:47:16 2015 +0800 - - 翻译中 by runningwater - -commit fba1ddb312e304d8e38e3f3e6ad1695e68af14e3 -Merge: 110ad52 2b77206 -Author: ZhouJ-sh <32321321@qq.com> -Date: Tue Jan 20 11:05:36 2015 +0800 - - Merge pull request #5 from LCTT/master - - Merge from base - -commit 2b772067f3624d4b78915f3472754a6305e60c9b -Merge: 7c1edfc 0aac3e8 -Author: geekpi -Date: Tue Jan 20 11:00:03 2015 +0800 - - Merge pull request #2268 from geekpi/master - - translated - -commit 0aac3e8dafbcda297145ba6625e7cee42d099ced -Author: zhengsihua -Date: Tue Jan 20 10:57:34 2015 +0800 - - translated - -commit 7c1edfc305892eb6ed1f32bc9ccee9f53652cfce -Merge: c09a40b ca2eb1e -Author: runningwater -Date: Tue Jan 20 10:53:30 2015 +0800 - - Merge pull request #2267 from runningwater/master - - 翻译完成 - -commit c09a40bf52ce7d567329f185d12e872fd6f4ff1e -Merge: 1338477 fa817df -Author: runningwater -Date: Tue Jan 20 10:53:09 2015 +0800 - - Merge pull request #2264 from H-mudcup/master - - Translating By H-mudcup - -commit 1338477db8be3a3c754fa4a479ba20d14d1e5cbe -Merge: 37805f4 110ad52 -Author: runningwater -Date: Tue Jan 20 10:52:40 2015 +0800 - - Merge pull request #2263 from ZhouJ-sh/master - - translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md & delete source - -commit 37805f4777e6242b34c5db36a4ed6aa77819cd29 -Merge: 1182827 7423976 -Author: runningwater -Date: Tue Jan 20 10:51:54 2015 +0800 - - Merge pull request #2262 from alim0x/master - - [translaing]the haistory of android - 12 - -commit ca2eb1e0b8a4d06d4522b5c04a6b93fcf43fa9dc -Author: runningwater -Date: Tue Jan 20 10:50:16 2015 +0800 - - 翻译完成 - -commit 11828279c7b3667a1f8fe17b669857557ebc17db -Merge: dab09ae f155e6d -Author: geekpi -Date: Tue Jan 20 09:56:17 2015 +0800 - - Merge pull request #2266 from geekpi/master - - translating - -commit f155e6d8fa0ae090b51e4df91296cca3923dbe45 -Author: zhengsihua -Date: Tue Jan 20 09:55:27 2015 +0800 - - translating - -commit dab09aefe73cc5aa80320c6740702faa7e4990df -Merge: 7248f82 06dedac -Author: geekpi -Date: Tue Jan 20 09:54:23 2015 +0800 - - Merge pull request #2265 from geekpi/master - - translated - -commit 06dedaca1de4aeb018a4d81b5d6cf5046b43e6d6 -Author: zhengsihua -Date: Tue Jan 20 09:53:28 2015 +0800 - - translated - -commit 637598d6a8bcf23692ca448412c14e1867add9cf -Author: zhengsihua -Date: Tue Jan 20 09:43:03 2015 +0800 - - translating - -commit 7248f8228ce3303fc78518d2cc2c538ba4b4614d -Author: DeadFire -Date: Mon Jan 19 22:48:00 2015 +0800 - - 20150119-4 选题 - -commit fa817dfe19628deb9fc32f06c8edc71b844fe52a -Author: H-mudcup -Date: Mon Jan 19 22:47:42 2015 +0800 - - Update 20140819 Top 4 Linux download managers.md - -commit 93a9c1690ac23f6a67c875dbc9eac42486071341 -Merge: 01a0a41 77c1b7b -Author: H-mudcup -Date: Mon Jan 19 22:45:28 2015 +0800 - - Merge pull request #9 from LCTT/master - - 同步2015/1/19 - -commit 77c1b7baf03cedf96e0cf245ab74f7097f255db9 -Author: DeadFire -Date: Mon Jan 19 22:44:19 2015 +0800 - - 20150119-3 选题 - -commit 2d08d1cdd3663bb88c20de5b86c520c50b4dab47 -Author: DeadFire -Date: Mon Jan 19 22:32:09 2015 +0800 - - 20150119-2 选题 - -commit 8dd8c387bd862de9f683fadf99cea96bb38b13c6 -Author: DeadFire -Date: Mon Jan 19 22:22:41 2015 +0800 - - 20150119-1 选题 - -commit 110ad520ff023e1204aa6192bda34821254ef9d8 -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 18:39:31 2015 +0800 - - 调整部分细节 - -commit a75a14f9fa77c5e1f666976a5bfb352fe38495be -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 18:03:58 2015 +0800 - - translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md - -commit 8bae3c1a249e51dd003a2b2ce507fef4ce802874 -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 17:51:07 2015 +0800 - - translate complete. delete sources/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md - -commit f1336ab9e6b9d601737220a06b08c4e90a610408 -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 17:50:28 2015 +0800 - - translating sources/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md - -commit e0d0557fa4b4945487ae3a4d8363e430bb125b35 -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 16:10:28 2015 +0800 - - translating by zhouj-sh - -commit 79a6d05c27969d5bdf0d8d7139faf65c30b5187e -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 14:36:42 2015 +0800 - - add sources/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md - -commit 814f81b13d9b64295235211ddeab00da9d9d4fa0 -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 13:56:53 2015 +0800 - - delete sources/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md - -commit 74239768b1e788c60e78bc226ea01631d5c42f1b -Author: alim0x -Date: Mon Jan 19 13:45:03 2015 +0800 - - [translaing]the haistory of android - 12 - -commit b84066519448846da033ddb2ddb5450e91e23aeb -Merge: 0bed6db b56f724 -Author: joeren -Date: Mon Jan 19 13:43:06 2015 +0800 - - Merge pull request #2261 from ly0/patch-1 - - [Translating]What is good audio editing software on Linux - -commit b56f724ca227d0ba74c86283513b746ef89c19f4 -Author: latyas(懒) -Date: Mon Jan 19 13:42:23 2015 +0800 - - [Translating]What is good audio editing software on Linux - -commit 0c4ad0bc8e79e28c1f7f8ccf805708829baa8ea9 -Author: ZhouJ-sh <32321321@qq.com> -Date: Mon Jan 19 12:05:39 2015 +0800 - - translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md - -commit 0bed6db0157ef60fe4873130f79106558b9a48be -Author: wxy -Date: Mon Jan 19 10:42:09 2015 +0800 - - PUB:20150104 Docker Image Insecurity - - @tinyeyeser - -commit 7e84dad563b118543cb724b2adffdd471b1dfd2d -Author: wxy -Date: Mon Jan 19 10:22:17 2015 +0800 - - PUB:20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem - - @geekpi - -commit a01b43d76a35dc3584bbfc268ebb5d64101c00aa -Author: wxy -Date: Mon Jan 19 10:09:17 2015 +0800 - - PUB:20141120 How to configure and secure your Postfix email server - - @GOLinux - -commit a881635bda06eae899f39ffebdd452db3077bf5f -Author: wxy -Date: Sun Jan 18 23:33:24 2015 +0800 - - PUB:20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X - - @runningwater - -commit 2432f8ac8c5add7f23e13a846cd7157872763c45 -Author: wxy -Date: Sun Jan 18 23:16:40 2015 +0800 - - PUB:20141204 How To Delete Oracle 11g Database Manually - - @geekpi - -commit 61a511d27f039dc97cdfa2be05d4f4808f3b1d7c -Author: wxy -Date: Sun Jan 18 23:08:36 2015 +0800 - - PUB:20141127 Five Magnificent Linux Music Streaming Clients - - @Stevearzh - -commit d952637700af776b9ed1687aa3c6d782b7cd579e -Author: wxy -Date: Sun Jan 18 22:57:21 2015 +0800 - - PUB:20141224 Calife--A lightweight alternative to sudo - - @GOLinux - -commit 0e5f7070dec047ef4ce04d5a0dadd776383dc683 -Merge: 1023fcc 208bdf9 -Author: Xingyu.Wang -Date: Sun Jan 18 22:39:33 2015 +0800 - - Merge pull request #2259 from SPccman/master - - How to Manage Network using nmcli Tool in RedHat / CentOS 7.x - 下回文件名前面的日期不要去掉哦~ - -commit 208bdf9f160225edb96062352f7fe826e3c42ac9 -Author: DoubleC <450760206@qq.com> -Date: Sun Jan 18 21:00:20 2015 +0800 - - 翻译完成 - - 翻译完成 - -commit 86f317ce86abb9ffa8b4977f2606a081e95b315d -Author: DoubleC <450760206@qq.com> -Date: Sun Jan 18 20:49:03 2015 +0800 - - delete source file - - delete source file - -commit 58620a3f1867fe11bf150d09bd3905693f4e2900 -Merge: 6e31b7e 1023fcc -Author: DoubleC <450760206@qq.com> -Date: Sun Jan 18 20:44:31 2015 +0800 - - Merge pull request #14 from LCTT/master - - update - -commit 1023fcc74db9a67fb49c05db1e03fe46d0ae35d7 -Merge: a76be45 923230a -Author: geekpi -Date: Sun Jan 18 15:29:18 2015 +0800 - - Merge pull request #2258 from geekpi/master - - translated - -commit 923230af5674e243a2d2168d5c6634c5c17db3c5 -Author: zhengsihua -Date: Sun Jan 18 15:27:49 2015 +0800 - - translated - -commit a76be45006eda702f23a0667dd243cac1262d53b -Merge: a7d2226 d3017c1 -Author: geekpi -Date: Sun Jan 18 15:24:59 2015 +0800 - - Merge pull request #2257 from geekpi/master - - translated - -commit d3017c1855d2b0fae4ecb8bae59243c442843530 -Merge: 45126b5 a7d2226 -Author: zhengsihua -Date: Sun Jan 18 15:20:49 2015 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit a7d222693082f1e586c6189398d1bcb1a38f8f81 -Author: geekpi -Date: Sun Jan 18 14:42:22 2015 +0800 - - Update 20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md - -commit 46b43e0ba81c5262d58afb42b4b2aa7d8385e4a1 -Author: wxy -Date: Sun Jan 18 12:59:52 2015 +0800 - - PUB:20140701 Easy File Comparisons With These Great Free Diff Tools - - @H-mudcup - -commit 1610b8f56b0f5ef07e25681a73ad32c9ea00f52b -Author: wxy -Date: Sun Jan 18 12:15:46 2015 +0800 - - 清除过期文章 - -commit 8e154021a807b16cabbcf9bc015899d7b3fa1421 -Merge: 275ab86 279ea5f -Author: Xingyu.Wang -Date: Sun Jan 18 12:08:18 2015 +0800 - - Merge pull request #2256 from Vic020/patch-27 - - Vic020 - -commit 279ea5f48922cfad3caaeaae719b50a4b9057cac -Author: Vic___ -Date: Sat Jan 17 22:44:53 2015 +0800 - - Vic020 - -commit 275ab86f82e3082f2f288dd312eef9dff35baa27 -Merge: 4fc4bf9 efc8353 -Author: Xingyu.Wang -Date: Sat Jan 17 22:20:50 2015 +0800 - - Merge pull request #2251 from ZhouJ-sh/master - - 选题 20150116 A Step By Step Guide To Installing Xubuntu Linux.md - -commit 45126b50e27e224f0b4a04865c14c4bdc3c84c70 -Author: zhengsihua -Date: Sat Jan 17 14:39:14 2015 +0800 - - translated - -commit 4fc4bf9a34b606450158714ea64f95710dca0bea -Merge: c4991f8 4d9c0d7 -Author: geekpi -Date: Sat Jan 17 14:27:39 2015 +0800 - - Merge pull request #2255 from geekpi/master - - translating - -commit 4d9c0d7c9994a7663c87c8a165ed1dd89339f5f4 -Author: zhengsihua -Date: Sat Jan 17 14:26:02 2015 +0800 - - translating - -commit c4991f839164ffa5e4ad59ca794255d780d8a933 -Merge: 0bdc527 1b6d810 -Author: geekpi -Date: Sat Jan 17 14:21:04 2015 +0800 - - Merge pull request #2254 from SPccman/patch-14 - - SPccman translating - -commit 1b6d81032f650e86354b8c20aa84af3afc5918df -Author: DoubleC <450760206@qq.com> -Date: Sat Jan 17 11:14:26 2015 +0800 - - SPccman translating - - 申领文章 - -commit 0bdc52765db5225d49f26c334af7c6a7842f8f3e -Merge: 0d6eba4 474941f -Author: geekpi -Date: Fri Jan 16 21:21:20 2015 +0800 - - Merge pull request #2253 from geekpi/master - - translating - -commit 474941fb36cc81b21c9aee9ee40b705a189d935e -Author: zhengsihua -Date: Fri Jan 16 21:20:02 2015 +0800 - - translating - -commit 0d6eba4dabb9c23edadac78b1df52a763244e4cc -Merge: 125d5e4 c9b90bf -Author: geekpi -Date: Fri Jan 16 21:10:13 2015 +0800 - - Merge pull request #2252 from geekpi/master - - translating - -commit c9b90bfdf16fc793ff45e05416fcf1d98b3b0096 -Author: zhengsihua -Date: Fri Jan 16 21:09:31 2015 +0800 - - translating - -commit efc83533565aef0b678a44f1cd5c64822567535e -Author: ZhouJ-sh <32321321@qq.com> -Date: Fri Jan 16 16:58:18 2015 +0800 - - 选题 20150116 A Step By Step Guide To Installing Xubuntu Linux.md - -commit 125d5e4481d54242560df88db01e188fcdd700ba -Author: wxy -Date: Fri Jan 16 16:51:03 2015 +0800 - - PUB:20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server - - @liaoishere - -commit e5f83b245af974340cd1337043f2bfdf474735c3 -Author: wxy -Date: Fri Jan 16 16:22:30 2015 +0800 - - PUB:20141119 Smartctl--Monitoring & Analysis tool for Hard drive - - @GOLinux - -commit 8317c05e54f688d8eb1c6517506a69fbd99738ad -Author: wxy -Date: Fri Jan 16 15:28:06 2015 +0800 - - 补充删除 - - @ZhouJ-sh - -commit 71de35194d0a09652f9af2492fa4259eb90ad8b0 -Merge: e7664c4 1c661ba -Author: Xingyu.Wang -Date: Fri Jan 16 15:23:09 2015 +0800 - - Merge pull request #2248 from ZhouJ-sh/master - - 选题&翻译 20150115 How To Run Linux Applications From The Terminal In Background Mode.md - - 您好,非常感谢您的翻译和选题。有一点小问题,请您下次稍微注意下: - 您这个翻译,是一次性提交了选题和译文,为了保持原文参考,您没有删除原文,但是这样您的原文就没人删除了。 - 所以,建议您,选题单独一个 PR,翻译的译文(包括删除选题的原文)再来一个 PR,并拉开时间差比较好。 - - 此外,您这里把上一个翻译的原文给删除了,其实应该在上次提交译文时候删除——这个也是我疏忽了,我当时应该给补充删除的。 - 这次的这个 PR 的原文,我稍后会帮您删除。 - - 再次,感谢您的参与和奉献~ - -commit e7664c48501fbbc6ba71385c15745d60239b7026 -Merge: d751ace e84846c -Author: geekpi -Date: Fri Jan 16 11:47:10 2015 +0800 - - Merge pull request #2250 from geekpi/master - - translated - -commit e84846cf7b1eef7028fb5330650bc94565b9382d -Author: zhengsihua -Date: Fri Jan 16 11:45:10 2015 +0800 - - translated - -commit d751ace8baabd7be1740a3b4334f0bf709570e56 -Merge: 0e24355 a1d3bd8 -Author: geekpi -Date: Fri Jan 16 10:10:43 2015 +0800 - - Merge pull request #2249 from geekpi/master - - translating - -commit a1d3bd813f5aedb9eab5e3f5427ebb0f38700358 -Author: zhengsihua -Date: Fri Jan 16 10:09:49 2015 +0800 - - translating - -commit 0e2435557d47ab8d7449bf4b4a19afe02e2ccc8c -Author: DeadFire -Date: Thu Jan 15 23:24:02 2015 +0800 - - 20150115-5 更新前面-3过长的文件名 - -commit 585da02c61dcdb83345110ae2f181f1240536fb6 -Author: DeadFire -Date: Thu Jan 15 23:21:52 2015 +0800 - - 20150115-4 更新前面文件名后缀。为何-3选题显示不了? - -commit 0a1a2a86d11cc620cc88574c7ef8b8b400882610 -Author: wxy -Date: Thu Jan 15 23:14:01 2015 +0800 - - PUB:Quick systemd-nspawn guide - - @SPccman 翻译的不错 - -commit 38178327ae8a2aa6705257358070d45999f4eb19 -Author: DeadFire -Date: Thu Jan 15 23:11:41 2015 +0800 - - 20150115-3 选题 - -commit 85feb3e7d5facfa3bb3fb712274b5813678bcec6 -Author: wxy -Date: Thu Jan 15 22:47:39 2015 +0800 - - PUB:20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x - - @ZTinoZ - -commit 476e61555682f5ae304239cdb351cbe8dd5bea36 -Author: wxy -Date: Thu Jan 15 22:31:18 2015 +0800 - - PUB:20141224 Linux FAQs with Answers--How to install 7zip on Linux - - @runningwater - -commit 7959c6367d4b491f5ebfa1c31654cc0ccae23a9f -Author: wxy -Date: Thu Jan 15 22:31:02 2015 +0800 - - PUB:20141118 How to boot on an ISO image from Grub - - @GOLinux - -commit ff129b92f9be3eae1ba9bd71bcf84c7c15935d04 -Author: DeadFire -Date: Thu Jan 15 22:26:14 2015 +0800 - - 20150115-2 选题 - -commit d7d9009a1a9b3aab54573b7b09408c766a072a3c -Author: DeadFire -Date: Thu Jan 15 22:08:23 2015 +0800 - - 20150115-1 选题 - -commit 1c661ba3c22ed1b372f547c91990cf8f2dbb37d9 -Author: ZhouJ-sh <32321321@qq.com> -Date: Thu Jan 15 16:05:12 2015 +0800 - - 已出版,删除原文 - -commit 736eaa9596317e6ab526c07d46d9eb70cc0353ad -Author: ZhouJ-sh <32321321@qq.com> -Date: Thu Jan 15 15:46:39 2015 +0800 - - 修改格式错误 - -commit ebf0c22f67fe7cdd325b2ef0a37159b28470c0b9 -Author: ZhouJ-sh <32321321@qq.com> -Date: Thu Jan 15 15:42:50 2015 +0800 - - 翻译 20150115 How To Run Linux Applications From The Terminal In Background Mode.md - -commit 47b4c22a570d836cd1393f3212018ad5d6dd9fde -Author: ZhouJ-sh <32321321@qq.com> -Date: Thu Jan 15 15:42:04 2015 +0800 - - 选题 20150115 How To Run Linux Programs From The Terminal In Background Mode - -commit 46aa7dccbb4c15109c330579ec2e85185fcb65f5 -Merge: 3074417 df75566 -Author: ZhouJ-sh <32321321@qq.com> -Date: Thu Jan 15 11:54:12 2015 +0800 - - Merge pull request #4 from LCTT/master - - Merge from base - -commit df75566eaf80f5e9649245c11eb609c162bdcaaf -Merge: ce45b34 3b0362d -Author: geekpi -Date: Thu Jan 15 10:08:24 2015 +0800 - - Merge pull request #2247 from geekpi/master - - translated - -commit 3b0362d7042c4b18b7459f72afb5b7897c1fa331 -Author: zhengsihua -Date: Thu Jan 15 10:07:42 2015 +0800 - - translated - -commit ce45b341542dd9fa1a07f0b2245748d0b7e2dcfc -Merge: 33250c4 24ce934 -Author: geekpi -Date: Thu Jan 15 09:47:45 2015 +0800 - - Merge pull request #2246 from geekpi/master - - translating - -commit 24ce934e9e8266b0c7fc232cf15095078eccdd8b -Author: zhengsihua -Date: Thu Jan 15 09:47:00 2015 +0800 - - translating - -commit 33250c43af33a8beffcbb7d0cfbadc8e2b2d0282 -Merge: 568a923 fe4a3f1 -Author: geekpi -Date: Thu Jan 15 09:45:40 2015 +0800 - - Merge pull request #2245 from geekpi/master - - translated - -commit fe4a3f1b052d4424982c012f33e709fbe03602f3 -Author: zhengsihua -Date: Thu Jan 15 09:44:59 2015 +0800 - - translated - -commit 568a9237c8afc2ed6627cc6809810b062cd8efb5 -Merge: 8ec8782 449e095 -Author: geekpi -Date: Thu Jan 15 09:32:47 2015 +0800 - - Merge pull request #2244 from geekpi/master - - translating - -commit 449e095f1a9e3d83dd0680cf27bda51db1733e28 -Author: zhengsihua -Date: Thu Jan 15 09:31:29 2015 +0800 - - translating - -commit 8ec87824af266f95c5992d0cc4281d9ac47c580b -Merge: 9c33a4a 63d09ac -Author: geekpi -Date: Thu Jan 15 09:29:41 2015 +0800 - - Merge pull request #2243 from geekpi/master - - translated - -commit 63d09acaf0aecae25cb9746fa010aaa757c77e29 -Author: zhengsihua -Date: Thu Jan 15 09:28:29 2015 +0800 - - translated - -commit 13b29eddae52e3ab264fc4cf8b015beb17c7e899 -Author: zhengsihua -Date: Thu Jan 15 09:27:25 2015 +0800 - - translated - -commit 9c33a4a75d7ccd3d1755b7f0fcb366f27f613b72 -Merge: e0b61b5 d3de17c -Author: geekpi -Date: Thu Jan 15 09:09:02 2015 +0800 - - Merge pull request #2242 from geekpi/master - - translating - -commit d3de17c1c683c527eebdaa0f3e711efddb55dc38 -Author: zhengsihua -Date: Thu Jan 15 09:07:36 2015 +0800 - - translating - -commit e0b61b555a77eb137f776b2af3a18d5d76a1cc2f -Author: wxy -Date: Wed Jan 14 22:57:42 2015 +0800 - - PUB:20141112 How to Debug CPU Regressions Using Flame Graphs - - @coloka 好专业的文章·~ - -commit 1f234cad69e1c1afb009c6a0a7b72e3e7e4eaf46 -Author: DeadFire -Date: Wed Jan 14 22:43:16 2015 +0800 - - 20150114-3 选题 - -commit dcbacad5cf47dcdb36e252a509d6c6c2be4048f9 -Author: DeadFire -Date: Wed Jan 14 22:34:53 2015 +0800 - - 20150114-2 选题 - -commit 84a61c70ff887e54906d84e1d57833d53cc28c98 -Author: wxy -Date: Wed Jan 14 22:34:33 2015 +0800 - - PUB:20141115 What are some obscure but useful Vim commands - - @wangjiezhe 译者注加的非常棒! - -commit 735b0d58e5f1b99a4f77debfa90f0a4c2aa5c0db -Author: DeadFire -Date: Wed Jan 14 22:18:49 2015 +0800 - - 20150114-1 选题 - -commit 03d18259520456c08d2ee72b3fd42d8ec13ac5a3 -Author: wxy -Date: Wed Jan 14 21:42:54 2015 +0800 - - PUB:20141211 NetHack - - @Stevearzh 翻译的很不错!游戏也很给力! - -commit 60cfb46909cc8e962163d5bfc0f60aaf75a4a60e -Author: wxy -Date: Wed Jan 14 21:03:28 2015 +0800 - - 该文已有一样的发布了 - - 所以不发布了。 - -commit 6b0663b4fad108e3a6b15ceca4a4817a1435c9da -Author: wxy -Date: Wed Jan 14 21:00:50 2015 +0800 - - PUB:20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu - - @zhouj-sh - -commit c0851408e476a013e233f5f23d3c4dff944b4c42 -Merge: fd7ef3b e043349 -Author: Xingyu.Wang -Date: Wed Jan 14 20:11:28 2015 +0800 - - Merge pull request #2241 from mr-ping/master - - translated by ping - -commit e0433490251776767d7422f51524bd0cbabe6059 -Author: Ping -Date: Wed Jan 14 14:37:27 2015 +0800 - - translated by ping - -commit fd7ef3bc8f6215c69acbefa89261a541cc66b210 -Author: wxy -Date: Wed Jan 14 14:11:38 2015 +0800 - - PUB:20141027 ntpq -p output - - @liaoishere 这篇好专业啊,翻译的很不错! - -commit 34182d3ae5bf0fcecf5157076704b0c5187bdce1 -Author: wxy -Date: Wed Jan 14 13:41:15 2015 +0800 - - PUB:20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu - - @Vic020 - -commit c0c13b1452365a8c73b6509ff9890586ea381929 -Merge: 42d8398 b59c18c -Author: joeren -Date: Wed Jan 14 10:26:15 2015 +0800 - - Merge pull request #2240 from GOLinux/master - - [Translated]20150106 Managing Linux server configs with the SaltStack.md - -commit b59c18cbfc1269109b3600a8285ec852d44a52e8 -Author: GOLinux -Date: Wed Jan 14 10:24:56 2015 +0800 - - [Translated]20150106 Managing Linux server configs with the SaltStack.md - -commit 42d83980ab03cd446c7d1063c05f49a92bbe31eb -Merge: de44a41 bf6fbe0 -Author: joeren -Date: Wed Jan 14 08:53:47 2015 +0800 - - Merge pull request #2239 from GOLinux/master - - [Translating] 20150106 Managing Linux server configs with the SaltStack.md - -commit bf6fbe01792ce408e3f56e2497b3560fd5461161 -Author: joeren -Date: Wed Jan 14 08:52:41 2015 +0800 - - Update 20150106 Managing Linux server configs with the SaltStack.md - -commit 926f32990429b01bcb5f9326a1ba30484ad8ec12 -Merge: a330de1 de44a41 -Author: joeren -Date: Wed Jan 14 08:50:42 2015 +0800 - - Merge pull request #25 from LCTT/master - - Update Repo - -commit de44a418fa88660941932f66a740879b72c6aea1 -Merge: 543ce85 bd1d995 -Author: joeren -Date: Wed Jan 14 08:49:38 2015 +0800 - - Merge pull request #2238 from mr-ping/master - - [translating]20141009 How to convert image audio and video formats on Ubuntu - -commit bd1d9952167cabd2a4141b70ca590dbe54cf4259 -Merge: e6e93f5 543ce85 -Author: Ping -Date: Wed Jan 14 07:53:01 2015 +0800 - - Merge branch 'master' of github.com:LCTT/TranslateProject into newbranch - -commit e6e93f56b1a7c2253686078fbd5d6c9025ef2d8a -Author: Ping -Date: Wed Jan 14 07:51:53 2015 +0800 - - Translating - -commit 543ce858290e062a755739b17d29a86bec1a4d9b -Author: wxy -Date: Tue Jan 13 22:19:21 2015 +0800 - - PUB:20141226 The Good The Bad And The Ugly Of Linux In 2014 - - @H-mudcup - -commit 71e8d589ccdee219afe87a61bbd0583d09e864bc -Author: wxy -Date: Tue Jan 13 22:01:09 2015 +0800 - - PUB:20140929 What Linux Users Should Know About Open Hardware - - @zpl1025 - -commit 9886fdd41521b85eb3915e84c0ddee58f854fa25 -Author: wxy -Date: Tue Jan 13 20:30:17 2015 +0800 - - PUB:20140928 What is a good subtitle editor on Linux - - @barney-ro - -commit 59a96f897169497efeb57452cb4aacf83fa23582 -Author: wxy -Date: Tue Jan 13 20:22:59 2015 +0800 - - PUB:20141125 Four ways Linux is headed for no-downtime kernel patching - - @coloka - -commit f3196a73ff7b8299d80c00a2c8507c50e0515463 -Author: wxy -Date: Tue Jan 13 20:18:30 2015 +0800 - - 过期,未发布 - - @kingname ,这篇已经远超新闻期限,所以没有发布。抱歉。 - -commit e1cca21879783bb58327368c11f744a51ed3887e -Author: tinyeyeser -Date: Tue Jan 13 15:27:41 2015 +0800 - - 已校对 by小眼儿 - -commit 34219f472beffe97fcd002af3260c2156a37cdf7 -Author: tinyeyeser -Date: Tue Jan 13 15:25:58 2015 +0800 - - 已校对 by小眼儿 - -commit a76e2d7405c677332abe0496425648b9c3ef08af -Author: carolinewuyan <309866211@qq.com> -Date: Tue Jan 13 14:06:57 2015 +0800 - - 已校对 - -commit d1c1f8794ac89086c17b9e43a2d7fd867032db35 -Merge: c3cb2a5 6dcb07d -Author: geekpi -Date: Tue Jan 13 11:59:21 2015 +0800 - - Merge pull request #2237 from geekpi/master - - translated - -commit 6dcb07d9209b867b8e73ded0ef15e3fe7f216a73 -Author: zhengsihua -Date: Tue Jan 13 11:57:38 2015 +0800 - - translated - -commit c3cb2a5dc57b7ae84f206845f8b576eec806f265 -Merge: fed4f09 4b5c782 -Author: geekpi -Date: Tue Jan 13 11:28:47 2015 +0800 - - Merge pull request #2236 from geekpi/master - - translating - -commit 4b5c782737d159ad6694bdbc77b7629f8f658ef3 -Author: zhengsihua -Date: Tue Jan 13 11:27:50 2015 +0800 - - translating - -commit a330de140d606e0c7b316e42d59f384a56e81525 -Merge: ff7a2b0 fed4f09 -Author: joeren -Date: Tue Jan 13 08:20:49 2015 +0800 - - Merge pull request #24 from LCTT/master - - Update Repo - -commit fed4f0962c7a7e6e0c9cf644faa7705e9f1c111c -Merge: baa5806 906b925 -Author: geekpi -Date: Mon Jan 12 22:22:38 2015 +0800 - - Merge pull request #2235 from geekpi/master - - translated - -commit 906b9250f68b24cede6a0ef1c15d73e6f149e301 -Author: zhengsihua -Date: Mon Jan 12 22:21:29 2015 +0800 - - translated - -commit baa58061afeee738e990a0b4a4bc155d11196ba5 -Merge: e4ab9d2 fa37f1d -Author: geekpi -Date: Mon Jan 12 21:31:42 2015 +0800 - - Merge pull request #2234 from geekpi/master - - translating - -commit fa37f1d36d87feac22d7cf7d329c89c4bb337271 -Author: zhengsihua -Date: Mon Jan 12 21:28:33 2015 +0800 - - translating - -commit e4ab9d2c783c25c1823da7c78fb49b1b66c16f7c -Author: DeadFire -Date: Mon Jan 12 16:28:48 2015 +0800 - - 20150112-5 选题 - -commit 084da04255f655f28e59880c705bfec6f061d7a7 -Author: DeadFire -Date: Mon Jan 12 16:16:14 2015 +0800 - - 20150112-4 选题 - -commit 25d2d99051e2c5d7d5dc4cf32b3ecf73573e2923 -Author: wxy -Date: Mon Jan 12 15:57:42 2015 +0800 - - PUB:20141108 When hackers grow old - - @Stevearzh - -commit be147eb7fe0cb9e50940aa4b49618a280245db3e -Author: tinyeyeser -Date: Mon Jan 12 15:08:12 2015 +0800 - - 已校对 by小眼儿 - - 原文真的很硬很难!译者已经翻译的很不错了~ 只是某些语句稍有逻辑上的语义错误。 - 我硬着头皮死啃半天,已尽量校对改正。 - -commit a4c26041aae6254ee0d68d35386bf867788b5e56 -Merge: 83f4ddf a66e60e -Author: joeren -Date: Mon Jan 12 13:43:04 2015 +0800 - - Merge pull request #2233 from kingname/patch-3 - - Delete 20141219 Git 2.2.1 Released To Fix Critical Security Issue.md - -commit 83f4ddfc142743e401cbeb5d8b2f73337f9e71e5 -Merge: 9d07f03 43154bb -Author: joeren -Date: Mon Jan 12 13:42:53 2015 +0800 - - Merge pull request #2232 from kingname/patch-2 - - Git 发布2.2.1版,修复严重安全问题 - -commit a66e60edaa77feb4feaa829983c6cd504912281d -Author: kingname -Date: Mon Jan 12 13:35:01 2015 +0800 - - Delete 20141219 Git 2.2.1 Released To Fix Critical Security Issue.md - -commit 43154bbb52f9557f840fecfe5fd25f9b3a70321b -Author: kingname -Date: Mon Jan 12 13:33:14 2015 +0800 - - Git 发布2.2.1版,修复严重安全问题 - -commit 9d07f03b9a71640b5adcc5cfca4ab7b303a0e8d9 -Merge: 33564c2 c1602f7 -Author: Xingyu.Wang -Date: Mon Jan 12 13:30:23 2015 +0800 - - Merge pull request #2231 from kingname/patch-1 - - Translating by kingname - -commit 33564c2a24d5e7f35e230b13d239e0ae4b900142 -Author: DeadFire -Date: Mon Jan 12 13:28:37 2015 +0800 - - 20150112-3 选题 - -commit c1602f7bf85928b05a4cf416092196f4938d27ae -Author: kingname -Date: Mon Jan 12 13:06:55 2015 +0800 - - Translating by kingname - -commit 841036a33cad9b4583230a9d3531009153f8fb6d -Author: DeadFire -Date: Mon Jan 12 11:48:07 2015 +0800 - - 20150112-2 选题 - -commit a2b404a7114eadbb3ff8f8a454c4b54ca923db9c -Author: DeadFire -Date: Mon Jan 12 11:25:39 2015 +0800 - - 20150112-1 选题 - -commit 3fd5e8c64d4125c63919df9c8cd5905197b66da7 -Author: tinyeyeser -Date: Mon Jan 12 11:15:33 2015 +0800 - - 已校对 by小眼儿 - -commit 9f93f9c428c575afc3c7f749d2b93297666c22a1 -Merge: 706954d 1897f32 -Author: runningwater -Date: Mon Jan 12 10:54:02 2015 +0800 - - Merge pull request #2230 from ZTinoZ/master - - Translating by ZTinoZ - -commit 1897f32f1f26b60ce05a793837c2afe7670d378a -Author: ZTinoZ -Date: Mon Jan 12 10:37:45 2015 +0800 - - Translating by ZTinoZ - -commit 3751162fe320fc9593cec8fcb4bdc730e00a150c -Merge: aff39ed 706954d -Author: ZTinoZ -Date: Mon Jan 12 09:21:04 2015 +0800 - - Merge pull request #6 from LCTT/master - - Update the repository - -commit 01a0a41f573d44a10f126ea9f46170d2e001c185 -Merge: 8aa5fbd 706954d -Author: H-mudcup -Date: Mon Jan 12 07:29:24 2015 +0800 - - Merge pull request #8 from LCTT/master - - 同步2015/1/12 - -commit 706954dc8bc544116e9b379e1f2e37c5c2d5beff -Author: wxy -Date: Mon Jan 12 00:11:21 2015 +0800 - - PUB:20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly - - @barney-ro - -commit 5c464d67b5065e6de76d90cef23a3d4d2728bd0c -Author: runningwater -Date: Sun Jan 11 22:31:53 2015 +0800 - - 翻译中 by runningwater - -commit d4d5127026f488a9ba82e2996bd3daccf716fd64 -Author: wxy -Date: Sun Jan 11 19:45:59 2015 +0800 - - 补充删除 - - @H-mudcup - -commit 567016231eff53d2193d456870fb7a642ebc85ce -Merge: c4c3ac6 2743887 -Author: Xingyu.Wang -Date: Sun Jan 11 19:45:29 2015 +0800 - - Merge pull request #2229 from disylee/patch-1 - - Update 20150104 How to debug a C or C++ program with Nemiver debugger.md - -commit c4c3ac64b7b06e7c0e173bc12937c2a8cfbc4974 -Merge: 17e6f0a 8aa5fbd -Author: Xingyu.Wang -Date: Sun Jan 11 19:44:46 2015 +0800 - - Merge pull request #2228 from H-mudcup/master - - [Translated] Easy File Comparisons With These Great Free Diff Tools.md - 忘记删除原文了,这次我替你删除了吧~~ - -commit 2743887a274c1c4b22e69840979881e904a34d7e -Author: disylee -Date: Sun Jan 11 14:20:31 2015 +0800 - - Update 20150104 How to debug a C or C++ program with Nemiver debugger.md - - disylee - -commit 8aa5fbd9eebd00092a8e6ce2cdb683b846e2cb1d -Author: H-mudcup -Date: Sun Jan 11 11:55:37 2015 +0800 - - Create 20140701 Easy File Comparisons With These Great Free Diff Tools.md - -commit 1da6d877ce7cdc636773f017e69d14f4728ad9e8 -Merge: bab7c60 17e6f0a -Author: H-mudcup -Date: Sun Jan 11 11:47:09 2015 +0800 - - Merge pull request #7 from LCTT/master - - 同步2015/1/11 - -commit 17e6f0a763677207825c43f1550351ae767841ed -Merge: a755aa8 75d72b2 -Author: geekpi -Date: Sun Jan 11 11:15:35 2015 +0800 - - Merge pull request #2227 from geekpi/master - - translated - -commit 75d72b252bb612a033fcd8886006e69cc809832b -Author: zhengsihua -Date: Sun Jan 11 11:13:08 2015 +0800 - - translated - -commit a755aa873972fe7badb240ec4912ddc342791c43 -Merge: 3ee3fd1 f1d8732 -Author: geekpi -Date: Sun Jan 11 10:19:31 2015 +0800 - - Merge pull request #2226 from geekpi/master - - translating - -commit f1d8732a27eab2ba86bdda588d57a012170cdbe1 -Author: zhengsihua -Date: Sun Jan 11 10:18:16 2015 +0800 - - translating - -commit 3ee3fd1d1e2060131bdd6d1cc88b77224899b1ed -Merge: 4b19d23 ea4e2b4 -Author: geekpi -Date: Sat Jan 10 11:49:36 2015 +0800 - - Merge pull request #2225 from geekpi/master - - translated - -commit ea4e2b4d84a1c5f39531a740dbb267f677eaeddd -Author: zhengsihua -Date: Sat Jan 10 11:48:04 2015 +0800 - - translated - -commit 4b19d2371c7ae940aab60491e71f5701ff359c18 -Merge: cafe6c2 c552514 -Author: geekpi -Date: Sat Jan 10 11:19:19 2015 +0800 - - Merge pull request #2224 from geekpi/master - - translating - -commit c552514a3bff82c23fa3e5deaed6eda0d5cdbdf0 -Author: zhengsihua -Date: Sat Jan 10 11:18:39 2015 +0800 - - translating - -commit cafe6c2434a9af8b7f2780da5534b0eed8b4ad8e -Merge: 0deaef8 fd1beb5 -Author: geekpi -Date: Fri Jan 9 21:28:23 2015 +0800 - - Merge pull request #2223 from geekpi/master - - translated - -commit fd1beb516ebefbec2df49c615b19941eb032ece6 -Author: zhengsihua -Date: Fri Jan 9 21:27:45 2015 +0800 - - translated - -commit 0deaef86375677123a9d12c7a93fab49a2a31185 -Merge: 403c9a8 9a926e4 -Author: geekpi -Date: Fri Jan 9 20:55:53 2015 +0800 - - Merge pull request #2222 from geekpi/master - - translating - -commit 9a926e435a1463a006d7db5936b3b785405038b6 -Author: zhengsihua -Date: Fri Jan 9 20:54:17 2015 +0800 - - translating - -commit 403c9a8ec460040914eb444f3d20fc9c277e71ad -Merge: c516ab1 47acced -Author: runningwater -Date: Fri Jan 9 18:44:36 2015 +0800 - - Merge pull request #2221 from runningwater/master - - 翻译完成 - -commit 47acced1a2928abc7f260a21365ccc1354cc7ba5 -Author: runningwater -Date: Fri Jan 9 18:43:49 2015 +0800 - - 翻译完成 - -commit c516ab10b54aece8aa48461f1338fb6c12a2b9c3 -Merge: 7609f46 516c0fc -Author: tinyeyeser -Date: Fri Jan 9 15:39:20 2015 +0800 - - Merge pull request #2220 from mr-ping/master - - Translated by Ping - -commit 7609f4637113f8ec730e937cfc4d56aa411c16fe -Author: tinyeyeser -Date: Fri Jan 9 15:26:36 2015 +0800 - - 已校对 by小眼儿 - - 翻译句式通顺,断句合理,符合中文阅读习惯。难得! - 但个别地方翻译有错误,甚至与原意相悖,校对后已修改。 - -commit 516c0fcd53f0668d261c749607640100d80e805d -Merge: 47fb6bd 490830d -Author: Ping -Date: Fri Jan 9 13:56:10 2015 +0800 - - Merge remote-tracking branch 'upstream/master' into newbranch - -commit 47fb6bd76b8684cda6dd94f72109d3004be17cfd -Author: Ping -Date: Fri Jan 9 13:43:28 2015 +0800 - - [Translated]20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md - -commit 490830d01b0001b0e3a596ea9d22c3b34ac32b07 -Author: tinyeyeser -Date: Fri Jan 9 13:45:04 2015 +0800 - - 已校对 by小眼儿 - -commit 6093990d8f97f8af0c3eaded93132ad5783bd739 -Author: wxy -Date: Fri Jan 9 09:32:12 2015 +0800 - - PUB:20141224 Linux FAQs with Answers--How to install kernel headers on Linux - - @geekpi - -commit aff39edee1e7f31bf00190ceee4dbfb7badc7972 -Merge: 8df9d8a 7156c3b -Author: ZTinoZ -Date: Fri Jan 9 09:25:31 2015 +0800 - - Merge pull request #5 from LCTT/master - - Update the repository - -commit 7156c3bbdff04a2d22e371f20ef187dfb2ef9073 -Merge: 328b4d8 f0e9447 -Author: tinyeyeser -Date: Fri Jan 9 09:23:46 2015 +0800 - - Merge pull request #2219 from mr-ping/master - - Mr-Ping 翻译中 - -commit 328b4d883844d6526a0f662fb8737e3ed99355c7 -Author: wxy -Date: Fri Jan 9 09:21:52 2015 +0800 - - PUB:20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next - - @su-kaiyao - -commit 1ea6efba941e0c4417534e76ad29425d7dd3d5e9 -Merge: 4a2c74a bdeba77 -Author: tinyeyeser -Date: Fri Jan 9 09:20:57 2015 +0800 - - Merge pull request #2218 from tinyeyeser/master - - 已翻译 by小眼儿 - -commit bdeba77fdcdd6c31a2e6fcece0eb33d4ce288138 -Author: tinyeyeser -Date: Fri Jan 9 09:19:45 2015 +0800 - - 已翻译 by小眼儿 - -commit f0e9447450c639f7153c6ae2713d75585f43eb0e -Author: Ping -Date: Fri Jan 9 09:12:04 2015 +0800 - - Mr-Ping 翻译中 - -commit ff7a2b0b757c3797821bbd0bae1b6d1e687c95bf -Merge: c5c2288 4a2c74a -Author: joeren -Date: Fri Jan 9 09:02:49 2015 +0800 - - Merge pull request #23 from LCTT/master - - Update Repo - -commit 4a2c74afc0c31df78f725983d25621d1456a0edd -Merge: f884444 bab7c60 -Author: runningwater -Date: Fri Jan 9 08:30:19 2015 +0800 - - Merge pull request #2217 from H-mudcup/master - - Translating by H-mudcup - -commit bab7c60dc29de34894dc8336a25dc8177f53325b -Author: H-mudcup -Date: Fri Jan 9 08:14:24 2015 +0800 - - Update 20140701 Easy File Comparisons With These Great Free Diff Tools.md - -commit 5a66c383bab7627c6f00c5c604924651b95e39ca -Merge: 2b8eb8c f884444 -Author: H-mudcup -Date: Fri Jan 9 08:11:47 2015 +0800 - - Merge pull request #6 from LCTT/master - - 同步2015/1/9 - -commit f884444180e09d3ee4f873feaadda9e04cb67e25 -Author: wxy -Date: Fri Jan 9 08:04:22 2015 +0800 - - PUB:20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems - - @barney-ro - -commit b1e81109cad9d00c26855322048727331e312139 -Author: wxy -Date: Fri Jan 9 07:21:07 2015 +0800 - - PUB:20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux - - @H-mudcup - -commit 05b53a429694eec76678c824ff04f8f28a3d807a -Author: wxy -Date: Fri Jan 9 07:17:09 2015 +0800 - - PUB:20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse - - @tinyeyeser - -commit 882339520a85cece044d3e76d3000f14b06ffe71 -Merge: 46b8923 8df9d8a -Author: Xingyu.Wang -Date: Fri Jan 9 00:59:11 2015 +0800 - - Merge pull request #2215 from ZTinoZ/master - - Finish the translation by ZTinoZ - -commit 46b8923973a94df66cee2e9f3e7b882c0010f27a -Merge: 17f7eec 8f5aeea -Author: geekpi -Date: Thu Jan 8 17:32:09 2015 +0800 - - Merge pull request #2216 from geekpi/master - - translated - -commit 8f5aeea25de604283b3ecf0829f585b0a8d242e2 -Author: zhengsihua -Date: Thu Jan 8 17:30:26 2015 +0800 - - translated - -commit 17f7eec130b27cd579214230cdbd3fd3aea6462f -Merge: 10ef4a2 01a9f16 -Author: geekpi -Date: Thu Jan 8 17:02:48 2015 +0800 - - Merge pull request #2214 from geekpi/master - - translating - -commit 01a9f16c46f0a72f7cb5e7e576145cba21d26bc5 -Author: zhengsihua -Date: Thu Jan 8 17:00:31 2015 +0800 - - translating - -commit 8df9d8a2dbfc036e85dba927202510c59771491a -Author: ZTinoZ -Date: Thu Jan 8 16:57:31 2015 +0800 - - Finish the Translation by ZTinoZ - -commit 10ef4a215aaf2ead4a30fe0c229c505a2aa8cd16 -Author: DeadFire -Date: Thu Jan 8 15:51:34 2015 +0800 - - 20150108-1 选题 - -commit d65f445403de978e969867d7dcb7cbf1617e2899 -Merge: e20c944 17e3b27 -Author: tinyeyeser -Date: Thu Jan 8 14:56:47 2015 +0800 - - Merge pull request #2213 from Vic020/master - - Translated:How To Install Kodi 14 - -commit 17e3b272063e391216076ea44feb24aea202d860 -Author: Vic___ -Date: Thu Jan 8 12:48:30 2015 +0800 - - Moved - -commit d30d88da63f0824cfd15a1d034b504ec63a1951c -Author: Vic___ -Date: Thu Jan 8 12:48:01 2015 +0800 - - Translated - -commit 2b8eb8c2e20945d9381e0decb6080c62aa2df241 -Merge: 12f4d5b e20c944 -Author: H-mudcup -Date: Thu Jan 8 11:25:46 2015 +0800 - - Merge pull request #5 from LCTT/master - - 同步2015/1/8 - -commit e20c94422d61f5fa95e09421fd5340a8a20da450 -Merge: 2311517 38338a7 -Author: Xingyu.Wang -Date: Thu Jan 8 10:35:13 2015 +0800 - - Merge pull request #2210 from Stevearzh/master - - [Translated by Stevearzh]20141226 How to Download Music from Grooveshark with a Linux OS.md - -commit 2311517f595be9c1af546521a6a5d5bd7083b8fc -Merge: 791a907 12f4d5b -Author: Xingyu.Wang -Date: Thu Jan 8 10:34:55 2015 +0800 - - Merge pull request #2209 from H-mudcup/master - - Translated by H-mudcup - -commit 791a907b4faf2ecdaec1cd650bff3cb70d8205a2 -Merge: c7a5bd8 6e3f25f -Author: geekpi -Date: Wed Jan 7 21:07:42 2015 +0800 - - Merge pull request #2212 from geekpi/master - - translated - -commit 6e3f25fa050fbaa807452518f28be29e949ea62f -Author: zhengsihua -Date: Wed Jan 7 21:06:47 2015 +0800 - - translated - -commit c7a5bd899ab013895adfbf83563e7fa7ed25f869 -Merge: 0bc39b1 03a283a -Author: geekpi -Date: Wed Jan 7 20:54:24 2015 +0800 - - Merge pull request #2211 from geekpi/master - - translating - -commit 03a283aaff319da1b5522347b1ab20e30db78798 -Author: zhengsihua -Date: Wed Jan 7 20:47:32 2015 +0800 - - translating - -commit 38338a75969021460b8edfb8d6bed9a108137279 -Author: Stevearzh -Date: Wed Jan 7 16:31:08 2015 +0800 - - Translated by Stevearzh - -commit 0bc39b1f100b4d93f35c6d796a9f1ab3b2388946 -Author: tinyeyeser -Date: Wed Jan 7 16:00:11 2015 +0800 - - 已校对 by小眼儿 - -commit 51c42753fcaabce184d2e242bdae05b4ec1f46ce -Author: wxy -Date: Wed Jan 7 15:50:03 2015 +0800 - - PUB:20141023 How to turn your CentOS box into a BGP router using Quagga - - @disylee - -commit 83003afecac7532b1d564244233e53f0a73a8690 -Author: ZTinoZ -Date: Wed Jan 7 14:21:38 2015 +0800 - - Translating by ZTinoZ - -commit 13ad0b8f4402599a2b3dce71913a7be17d0d071e -Author: wxy -Date: Wed Jan 7 14:01:23 2015 +0800 - - PUB:20141013 How to configure peer-to-peer VPN on Linux - - @felixonmars - -commit 145b91641fd1acb24b73905d4ae6e3202c359209 -Author: wxy -Date: Wed Jan 7 13:45:45 2015 +0800 - - PUB:20140912 What' s wrong with IPv4 and Why we are moving to IPv6 - - @bazz2 - -commit 75e55d791c62439fc0b5fdc3d723a8b086830059 -Author: tinyeyeser -Date: Wed Jan 7 10:23:43 2015 +0800 - - 已校对 by小眼儿 - -commit 12f4d5b9990adc190dcc68bfd6cff4a5b544ed86 -Author: H-mudcup -Date: Wed Jan 7 10:17:51 2015 +0800 - - Create 20141106 Tomahawk Music Player Returns With New Look, Features.md - -commit d6a5e14d67ff33806c3b10edef5a6af6d710f996 -Author: H-mudcup -Date: Wed Jan 7 10:16:16 2015 +0800 - - Delete 20141106 Tomahawk Music Player Returns With New Look, Features.md - -commit 8037854bae15996a4d79fa11cb6f346d36a93fd2 -Author: tinyeyeser -Date: Wed Jan 7 09:37:18 2015 +0800 - - 翻译中 by小眼儿 - -commit 6b8ab98e8c40ba846a9f0608a325c02c395366a2 -Merge: 2819923 16e313d -Author: geekpi -Date: Tue Jan 6 19:12:20 2015 +0800 - - Merge pull request #2206 from H-mudcup/master - - Translating by H-mudcup - -commit 2819923c91c230f43a29a1a2ed60d7b4602649b0 -Merge: 78aab17 21b9f1d -Author: geekpi -Date: Tue Jan 6 19:11:41 2015 +0800 - - Merge pull request #2208 from geekpi/master - - translated - -commit 21b9f1dbc216fc0cc667b0ac7e4cb2cf789e2c92 -Author: zhengsihua -Date: Tue Jan 6 18:56:05 2015 +0800 - - translated - -commit 068036a530a4aab7233c4ee5e7a27fbfab0bde66 -Author: zhengsihua -Date: Tue Jan 6 18:48:32 2015 +0800 - - deleted - -commit 78aab177aca431de3aea0c53d1113a50c30889d7 -Author: geekpi -Date: Tue Jan 6 17:54:21 2015 +0800 - - Update 20150105 Ubuntu apt-get and apt-cache commands with practical examples.md - -commit a2c2f6726eb6f3c87d8f26bc80cad4c85759989f -Author: ZTinoZ -Date: Tue Jan 6 17:38:16 2015 +0800 - - Translating by ZTinoZ - -commit a950929cddcbcd85e51b6dc0af62387c3f041d43 -Author: tinyeyeser -Date: Tue Jan 6 17:22:28 2015 +0800 - - 已翻译 by小眼儿 - -commit 91902126c4086880b256b06c215f4759a81c23b7 -Merge: ee0e950 f604661 -Author: tinyeyeser -Date: Tue Jan 6 17:15:23 2015 +0800 - - Merge pull request #2207 from tinyeyeser/master - - 已翻译 by小眼儿 - -commit f604661fa17704504c240b043f7d960daf7f46e0 -Author: tinyeyeser -Date: Tue Jan 6 17:11:37 2015 +0800 - - 已翻译 by小眼儿 - - Signed-off-by: tinyeyeser - -commit ee0e9502558cd774095f3b467bf9af40621a1c60 -Author: DeadFire -Date: Tue Jan 6 16:37:55 2015 +0800 - - 20150106-1 选题 - -commit 16e313d6a5a09b8879fc75a185d9d30b207f3b62 -Author: H-mudcup -Date: Tue Jan 6 12:37:04 2015 +0800 - - Update 20141106 Tomahawk Music Player Returns With New Look, Features.md - -commit 780113f8e666b2d652772347e5a033fa1c5e1ab0 -Merge: 3ff479d 9b4d773 -Author: H-mudcup -Date: Tue Jan 6 12:13:16 2015 +0800 - - Merge pull request #4 from LCTT/master - - 同步2015/1/6 - -commit 9b4d773824b01aa2e184e43bf7a654b8c12659ad -Merge: 1dff8e3 cd31073 -Author: Xingyu.Wang -Date: Mon Jan 5 21:56:25 2015 +0800 - - Merge pull request #2205 from Vic020/patch-26 - - 抢地主 - -commit 1dff8e3db67e54b23ff6fc36615fe60aec3c6e4e -Merge: 17bccaf 6e31b7e -Author: Xingyu.Wang -Date: Mon Jan 5 21:56:04 2015 +0800 - - Merge pull request #2204 from SPccman/master - - Quick systemd-nspawn guide - -commit cd31073929e78be980c951231883606c0f8d82b0 -Author: Vic___ -Date: Mon Jan 5 20:17:49 2015 +0800 - - Update 20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md - -commit 6e31b7ec439db2e50c644f59db754c04ad0b2c03 -Author: DoubleC <450760206@qq.com> -Date: Mon Jan 5 20:16:30 2015 +0800 - - Create Quick systemd-nspawn guide.md - - complete - -commit 06eb045b2855d3e2a722853b5b48b80e9b7d9fd7 -Author: DoubleC <450760206@qq.com> -Date: Mon Jan 5 20:13:07 2015 +0800 - - delete source file - - delete source file - -commit 52717946a7c72f42effb1af5f638f2407b32a627 -Merge: 49fbafb 17bccaf -Author: DoubleC <450760206@qq.com> -Date: Mon Jan 5 20:12:07 2015 +0800 - - Merge pull request #13 from LCTT/master - - Update - -commit 17bccaf9afd68897a1199dac07fec68db36b3d13 -Author: DeadFire -Date: Mon Jan 5 16:19:42 2015 +0800 - - 20150105-1 选题 - -commit df83a70203c28d382cbc2f7468fc47c3fc06e82e -Merge: ed63571 04de393 -Author: Xingyu.Wang -Date: Mon Jan 5 16:16:54 2015 +0800 - - Merge pull request #2203 from liaoishere/master - - [translated] 20141008 How to configure HTTP load balancer with HAProxy on Linux - -commit ed6357105ac697156ad373e0b57ffaff82dbab58 -Merge: 35b3139 e8b1750 -Author: Xingyu.Wang -Date: Mon Jan 5 16:16:27 2015 +0800 - - Merge pull request #2202 from barney-ro/master - - [translating]20141219 2015 will be the year Linux takes over the enterprise and other predictions - -commit 35b3139674e7705cd6b42c405807a3cd50d10621 -Author: tinyeyeser -Date: Mon Jan 5 16:13:28 2015 +0800 - - 翻译中 by小眼儿 - -commit 04de393fe77aa70f894a58b887e893d968948a51 -Author: liaoishere -Date: Mon Jan 5 13:48:11 2015 +0800 - - [translated] 20141008 How to configure HTTP load balancer with HAProxy on Linux - -commit d18ac9bd28a84786b144452cb159a24726655c7d -Author: ZTinoZ -Date: Mon Jan 5 13:30:10 2015 +0800 - - Translating by ZTinoZ - -commit e8b1750f68ab640023024fab3b9ffbe888e2d359 -Author: barney-ro -Date: Mon Jan 5 13:11:49 2015 +0800 - - [translating]20141219 2015 will be the year Linux takes over the enterprise and other predictions - -commit 460698dbc42fcf31992878e2fac57c6236d8c8c1 -Merge: ca03351 8f3fb80 -Author: Xingyu.Wang -Date: Mon Jan 5 12:47:57 2015 +0800 - - Merge pull request #2201 from liaoishere/master - - liaoishere is translating - -commit 8f3fb80c7f5fad2e8a047aa4ff28cf8b515ba6cd -Author: liaoishere -Date: Mon Jan 5 11:19:19 2015 +0800 - - liaoishere is translating - - translating 20141008 How to configure HTTP load balancer with HAProxy on Linux.md - -commit ca03351d4daf0e787cdbf451291cbec5a6c67041 -Merge: 5934485 c5c2288 -Author: joeren -Date: Mon Jan 5 10:13:30 2015 +0800 - - Merge pull request #2200 from GOLinux/master - - [Translated]20150104 How To Install Websvn In CentOS 7.md - -commit c5c22882993fc28a1b56309342905fd82e9ba326 -Author: GOLinux -Date: Mon Jan 5 10:12:16 2015 +0800 - - [Translated]20150104 How To Install Websvn In CentOS 7.md - -commit 593448563867c1d4de9a6f63487199d9566158a7 -Merge: 78eea5e b471789 -Author: joeren -Date: Mon Jan 5 09:51:05 2015 +0800 - - Merge pull request #2199 from GOLinux/master - - [Translating]20150104 How To Install Websvn In CentOS 7.md - -commit b47178940451cbb41697405138a2be9e9fe1e1e0 -Author: joeren -Date: Mon Jan 5 09:50:40 2015 +0800 - - Update 20150104 How To Install Websvn In CentOS 7.md - -commit 4b7691b3549f7745ef1001349865d8e0d0a9e11c -Merge: 5566a97 78eea5e -Author: joeren -Date: Mon Jan 5 09:49:17 2015 +0800 - - Merge pull request #22 from LCTT/master - - Update Repository - -commit 78eea5edfed41854db51cc6e5b1f738256d30b45 -Merge: a2c7dad 3ff479d -Author: joeren -Date: Mon Jan 5 09:48:23 2015 +0800 - - Merge pull request #2198 from H-mudcup/master - - Translated Flow ‘N Play Movie Player Has a Stylish Interface [Ubuntu Installation] - -commit a2c7dad8dff050496a23388832390478a6203caa -Merge: bd187e3 7c761d0 -Author: joeren -Date: Mon Jan 5 09:47:59 2015 +0800 - - Merge pull request #2197 from KayGuoWhu/master - - [translating] 20141222 A brief history of Linux malware - -commit bd187e3aea48f8cd6757ad0dde09dbc47b71ce62 -Merge: 1da8f35 031955c -Author: joeren -Date: Mon Jan 5 09:47:52 2015 +0800 - - Merge pull request #2196 from liaoishere/master - - translating 20141027 ntpq -p output - -commit 3ff479dae6f3a2a3c7f5edf6a084ef39492b26f1 -Author: H-mudcup -Date: Sun Jan 4 19:37:56 2015 +0800 - - Create 20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md - - Translated by H-mudcup - -commit c2be7bf490f560ec3f67626a892be1a22a7425ae -Author: H-mudcup -Date: Sun Jan 4 18:47:24 2015 +0800 - - Delete 20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md - -commit fc13165571778d6a6e535d7e2a381cb890917755 -Merge: 104d8c7 1da8f35 -Author: H-mudcup -Date: Sun Jan 4 18:46:01 2015 +0800 - - Merge pull request #3 from LCTT/master - - 同步 - -commit 031955c2a3eaaec352009c570de154d3a380a211 -Merge: acf066d 1da8f35 -Author: liaoishere -Date: Sun Jan 4 17:39:16 2015 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit acf066d9638e6dc9d31eb3fdb30a713ce1d3aa0b -Author: liaoishere -Date: Sun Jan 4 17:36:56 2015 +0800 - - [translated] 20141027 ntpq -p output - -commit 4b24d172b1e9994e18bc1668e76fd22fb55e8d45 -Author: ZTinoZ -Date: Sun Jan 4 17:00:07 2015 +0800 - - Translating by ZTinoZ - -commit 1da8f3500df779e2a01189bc9c43bb15c9d1b191 -Author: DeadFire -Date: Sun Jan 4 16:17:47 2015 +0800 - - 20150104-4 选题 - -commit 104d8c71df1e2819bda99abe74927a2a90efff90 -Merge: 5ea7de0 d3b1336 -Author: H-mudcup -Date: Sun Jan 4 15:28:06 2015 +0800 - - Merge pull request #2 from LCTT/master - - update 2015/1/4 - -commit d3b13366378e8e27bcb2a6c253144a4d9d62546a -Author: DeadFire -Date: Sun Jan 4 14:55:03 2015 +0800 - - 20150104-3 选题 - -commit 68819fccd8af60ca60c8077252ed7e1938df8ecd -Author: DeadFire -Date: Sun Jan 4 14:54:47 2015 +0800 - - 20150104-2 选题 - -commit 7c761d02f8c2caad2f9decb5ae794caa22bdcdab -Author: KayGuoWhu -Date: Sun Jan 4 14:40:38 2015 +0800 - - the first translating of 2015 - -commit fc1ec72d1e923ff3a1517fcf458cd79fd0521fef -Author: liaoishere -Date: Sun Jan 4 14:34:07 2015 +0800 - - liaoishere is translating 20141027 ntpq -p output - -commit ca450ff5f3f9e55e3b1a59d8ec54da7696b722b6 -Merge: 27ce29b 8d16e0b -Author: liaoishere -Date: Sun Jan 4 14:32:59 2015 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit 8d16e0b5be7332ad146f7fe0484f320ef4ad582c -Merge: 0425cc7 5ea7de0 -Author: Xingyu.Wang -Date: Sun Jan 4 11:20:34 2015 +0800 - - Merge pull request #2195 from H-mudcup/master - - Translating Flow ‘N Play Movie Player Has a Stylish Interface [Ubuntu Installation] - -commit 5ea7de03ae065dcf3f1583d3af4a76737b15d8c3 -Author: H-mudcup -Date: Sun Jan 4 11:15:17 2015 +0800 - - Update 20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md - -commit 17326e0e9c01181d316cca26a5a9dbe4559c77dd -Merge: d495db5 0425cc7 -Author: H-mudcup -Date: Sun Jan 4 11:01:59 2015 +0800 - - Merge pull request #1 from LCTT/master - - update 2015/1/4 - -commit 307441701b1037f680ed4b9b94aff0cc6508c0c3 -Merge: ddb74b9 0425cc7 -Author: ZhouJ-sh <32321321@qq.com> -Date: Sun Jan 4 10:46:18 2015 +0800 - - Merge pull request #3 from LCTT/master - - Merge from base - -commit 0425cc77cdd817b37854fd933e5f86969b733be8 -Author: DeadFire -Date: Sun Jan 4 10:36:31 2015 +0800 - - 20150104-1 选题 - -commit ae286d51cb46a4dfedc96ecca494d91e6ccc3032 -Merge: 4ea7103 d495db5 -Author: Xingyu.Wang -Date: Sun Jan 4 10:28:01 2015 +0800 - - Merge pull request #2194 from H-mudcup/master - - U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux - -commit d495db54a008d9b31019090081508c07ab49c03c -Author: H-mudcup -Date: Sun Jan 4 10:19:40 2015 +0800 - - Delete 20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md - -commit 70796857b7093a2b655a98f99c80e577de50edcf -Author: H-mudcup -Date: Sun Jan 4 10:12:49 2015 +0800 - - Create 20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md - -commit 5566a971b2c51d163f97a15422401550c358cd55 -Merge: 3b192a8 4ea7103 -Author: joeren -Date: Sun Jan 4 07:51:15 2015 +0800 - - Merge pull request #21 from LCTT/master - - Update Repository - -commit 27ce29b5199e53310cfd11896a48cdc984a3b6fe -Merge: f481c29 4ea7103 -Author: liaoishere -Date: Sun Jan 4 01:31:45 2015 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit 4ea710321c428240d68aa7e54649d3d8006f4342 -Merge: 3315e3d f98c9a1 -Author: Xingyu.Wang -Date: Sat Jan 3 20:51:09 2015 +0800 - - Merge pull request #2189 from liaoishere/master - - [translated] 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server - -commit f481c2995db787c978a6fcdd59978229063470c0 -Merge: f98c9a1 3315e3d -Author: liaoishere -Date: Sat Jan 3 14:25:11 2015 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit 3315e3ddcbb5517761dba9c4bde97f0905cf04de -Merge: 54bff27 8081292 -Author: geekpi -Date: Sat Jan 3 14:06:49 2015 +0800 - - Merge pull request #2193 from geekpi/master - - translated - -commit 8081292d0890dfccaf8869c648584cb81fa6f512 -Author: zhengsihua -Date: Sat Jan 3 14:02:14 2015 +0800 - - delete source file - -commit 773311b89d928498f20076360be67e8a9df135c7 -Merge: 3813262 d4431f3 -Author: zhengsihua -Date: Sat Jan 3 13:57:33 2015 +0800 - - Merge branch 'master' of https://github.com/geekpi/TranslateProject - -commit 54bff2750b9e95db880631d4b5bbb4f80e9012f1 -Merge: 349e04c d4431f3 -Author: geekpi -Date: Sat Jan 3 13:56:28 2015 +0800 - - Merge pull request #2192 from geekpi/master - - translating - -commit 381326294179b5860f84233cf8043f6143dac628 -Author: zhengsihua -Date: Sat Jan 3 13:55:32 2015 +0800 - - translated - -commit d4431f3774ea0b5b7f6bf733b78af7290574041c -Author: geekpi -Date: Sat Jan 3 00:04:12 2015 -0500 - - translating - -commit f98c9a1c08b0e04949badb72387522ab24be4e75 -Author: liaoishere -Date: Sat Jan 3 00:19:03 2015 +0800 - - [translated] 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server - -commit 349e04c3139cd17fca89f754784e890f3e6066b6 -Merge: 2195e0e daf91ce -Author: runningwater -Date: Sat Jan 3 00:01:18 2015 +0800 - - Merge pull request #2188 from liaoishere/master - - liaoishere is translating 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server - -commit daf91ce773096eb7b2b5a324dfa4ca49b95fc75a -Author: liaoishere -Date: Fri Jan 2 23:13:56 2015 +0800 - - liaoishere is translating 20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server - -commit 2195e0e84e2bb2a43da1a146ee6d990ff609a7f0 -Author: wxy -Date: Fri Jan 2 23:02:10 2015 +0800 - - PUB:20141115 How to perform system backup with backup-manager on Linux - - @GOLinux - -commit 656458d0777f210f84f978eda233a5b14e284f2f -Author: wxy -Date: Fri Jan 2 22:53:45 2015 +0800 - - 补充删除 - -commit e69e4f48de6fce460adb003ab4920a4e5e1ca117 -Author: wxy -Date: Fri Jan 2 22:41:11 2015 +0800 - - PUB:20141023 What are useful Bash aliases and functions - - @luoyutiantang - -commit 2ee23919969daed6097991c13964cf6cf1c46f3c -Merge: d7ca250 1609916 -Author: runningwater -Date: Fri Jan 2 19:59:10 2015 +0800 - - Merge pull request #2185 from H-mudcup/patch-1 - - Translating by H-mudcup - -commit d7ca25005bcbe76fdd6bd7a6388019714dcb247a -Merge: 0101a84 fa96853 -Author: geekpi -Date: Fri Jan 2 18:18:27 2015 +0800 - - Merge pull request #2187 from geekpi/master - - translated - -commit fa96853c90cdcf4404a1ba9bdd91e6494e6829f8 -Author: zhengsihua -Date: Fri Jan 2 18:15:46 2015 +0800 - - translated - -commit 0101a8408b7a4231a0cb9cfe068449c8a553d065 -Merge: becb5c0 aea12ba -Author: geekpi -Date: Fri Jan 2 17:03:26 2015 +0800 - - Merge pull request #2186 from geekpi/master - - translating - -commit aea12ba42b531f214ec02e3294ee91649add0ba1 -Author: zhengsihua -Date: Fri Jan 2 17:01:28 2015 +0800 - - translating - -commit becb5c029511647667aeede5566836e4362ad190 -Author: wxy -Date: Fri Jan 2 13:33:16 2015 +0800 - - PUB:20140915 10 Open Source Cloning Software For Linux Users - - @felixonmars - -commit f925f5db94bf83ba8a1b3958a8de354bf1136639 -Author: wxy -Date: Fri Jan 2 13:15:09 2015 +0800 - - PUB:20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux - - @geekpi - -commit 16de73e52f860bd33e6017ab2ca1d5dc3bb1f988 -Author: wxy -Date: Fri Jan 2 13:04:15 2015 +0800 - - 错误的放在了根下 - -commit 1609916663ad1fe0b4cc59715900d727141a43eb -Author: H-mudcup -Date: Fri Jan 2 12:41:58 2015 +0800 - - Translating by H-mudcup - - U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux - -commit f42e58092f7ceafd7f4340ddf03338f1fd426169 -Merge: e41ff61 7429dad -Author: Xingyu.Wang -Date: Thu Jan 1 23:14:19 2015 +0800 - - Merge pull request #2184 from SPccman/patch-13 - - SPccman - 下回请用所申领的文章标题作为 PR的标题哈。 - -commit 7429dad38ec3d3ec85defc572e565d26b2489d0a -Author: DoubleC <450760206@qq.com> -Date: Thu Jan 1 18:02:45 2015 +0800 - - SPccman - - 申领 - -commit e41ff61df76a302c9a085532bd323212b1baa39b -Merge: 7a0f9d6 189d460 -Author: Xingyu.Wang -Date: Thu Jan 1 16:29:55 2015 +0800 - - Merge pull request #2183 from geekpi/master - - translated - -commit 189d460a74588d3408caa9ad354414391028636f -Author: zhengsihua -Date: Thu Jan 1 11:45:53 2015 +0800 - - translated - -commit 7a0f9d6a49c6d0b9300900b9f7ad9529d7b448b7 -Merge: 7245158 682f441 -Author: geekpi -Date: Thu Jan 1 10:08:51 2015 +0800 - - Merge pull request #2182 from geekpi/master - - translating - -commit 682f441674eee44bd8bad38533e3ae18b79535de -Author: zhengsihua -Date: Thu Jan 1 10:06:48 2015 +0800 - - translating - -commit 7245158ee184d70b7dae84ac5208c37a43a9b5d3 -Merge: 7d05480 2fa94b2 -Author: runningwater -Date: Thu Jan 1 00:59:11 2015 +0800 - - Merge pull request #2181 from liaoishere/master - - [translated] 20141120 How to install Xen hypervisor on unused old hardwa... - -commit 2fa94b20bf7e9ada3a9ddbbfba5b9298cf79dab9 -Author: liaoishere -Date: Thu Jan 1 00:41:31 2015 +0800 - - [translated] 20141120 How to install Xen hypervisor on unused old hardware - -commit 7d05480104815f4abf0578fe37686ebc18d4065e -Author: wxy -Date: Thu Jan 1 00:17:50 2015 +0800 - - 归档201412,告别2014,谢谢各位 LCTTer! - -commit 36bb57baf207e100a27b060cd685c28e59f395b1 -Merge: 6f071e9 9f2e09e -Author: Xingyu.Wang -Date: Wed Dec 31 23:42:59 2014 +0800 - - Merge pull request #2180 from alim0x/master - - [translated]11 - The history of Android.md - 新年快乐~~ - -commit 6f071e9b3cb98c55ca9e5e80ccd62739c799e186 -Author: wxy -Date: Wed Dec 31 23:08:50 2014 +0800 - - PUB:20141222 Linus Torvalds Launches Linux Kernel 3.19 RC1, One of the Biggest So Far - - @geekpi - -commit e138c32c0d0c6275b1e2db0e9d541f12f8f9bb5b -Author: wxy -Date: Wed Dec 31 22:54:06 2014 +0800 - - PUB:20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Ou - - @zhouj-sh 明天就能见到了: http://linux.cn/article-4570-1.html - -commit a4b2d54341072ddf12590e2beeb30ce6f2c47b8f -Author: wxy -Date: Wed Dec 31 22:51:03 2014 +0800 - - 放错位置。。 - -commit 9f2e09ea39a5c6d1481f9570ed6c487d872a31da -Author: alim0x -Date: Wed Dec 31 22:41:43 2014 +0800 - - [translated]11 - The history of Android.md - -commit 4b20fc8ccbfffe9f9b4567ea098bb72d1550c3cc -Author: wxy -Date: Wed Dec 31 22:31:39 2014 +0800 - - 处理不完美的 PR - -commit 94a35875ac6c4471dcb9df5564d537f71afe31da -Merge: 7054d70 ef8c7bf -Author: Xingyu.Wang -Date: Wed Dec 31 22:26:47 2014 +0800 - - Merge pull request #2179 from barney-ro/master - - [translated]20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems - - 是的,是因为你给丢失了扩展名。 - -commit 7054d70600dbcf203a9d82af0fcb9ab4b71f5e73 -Merge: 36da19b ed7e244 -Author: Xingyu.Wang -Date: Wed Dec 31 22:26:05 2014 +0800 - - Merge pull request #2178 from H-mudcup/master - - 翻译完成20141226 The Good The Bad And The Ugly Of Linux In 2014.md - -commit 36da19b260e83120e17889cafe44856157265046 -Merge: 7354f5d a96dfa1 -Author: Xingyu.Wang -Date: Wed Dec 31 22:25:34 2014 +0800 - - Merge pull request #2177 from liaoishere/master - - liaosihere is translating - -commit 7354f5d8d248d6beed2ead7c6aabf0bf5a0bf9e3 -Merge: bea9184 ddb74b9 -Author: Xingyu.Wang -Date: Wed Dec 31 22:24:12 2014 +0800 - - Merge pull request #2176 from ZhouJ-sh/master - - 选题&翻译 Second Edition of Ubuntu Manual 14.04 LTS Is Out - - 谢谢您的首次参与,辛苦啦。不过建议您以后可以将您要推荐的选题给LCTT 的选题,由其添加,你可以自行认领。这样流程比较一致。不过您的这个选题的格式制作也很好。作为鼓励,新人的翻译会尽快发布~~ - -commit ef8c7bfa6c9c2899d26a12dd1a6df7007bf5ef05 -Author: Zhili.Yang -Date: Wed Dec 31 22:14:44 2014 +0800 - - Delete 20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md - -commit 7633fec9a5470014aca38f8d8065f7e72dfa6eb8 -Author: Zhili.Yang -Date: Wed Dec 31 22:13:02 2014 +0800 - - [translated]20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems - -commit ed7e2448b27175274ae3de46f11413dd519083d6 -Author: H-mudcup -Date: Wed Dec 31 18:30:32 2014 +0800 - - Create 20141226 The Good The Bad And The Ugly Of Linux In 2014.md - -commit 59e014701d68362b7c6f0bb1053a7256ddee93c9 -Author: H-mudcup -Date: Wed Dec 31 18:29:16 2014 +0800 - - Delete 20141226 The Good The Bad And The Ugly Of Linux In 2014.md - -commit a96dfa15d6a07733d8d02406578bf4768e454637 -Author: liaoishere -Date: Wed Dec 31 17:59:21 2014 +0800 - - liaosihere is translating - -commit ddb74b91fa9bdaef9d22b47243e454c207470562 -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Dec 31 17:45:52 2014 +0800 - - 选题 sources/news/20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Out - -commit af3bd6bf260ef52fa4ef1cb4754829bc7d70c9ba -Author: ZTinoZ -Date: Wed Dec 31 17:43:19 2014 +0800 - - Translating by ZTinoZ - -commit 3a97aad992ee78b3815f59d82890311602ec6d47 -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Dec 31 17:43:19 2014 +0800 - - translat /news/20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Out - -commit bea9184de731cd3d9cdaed11508319366a0cde62 -Merge: 2bcc32d 90e3fc4 -Author: Xingyu.Wang -Date: Wed Dec 31 13:25:48 2014 +0800 - - Merge pull request #2175 from ideas4u/patch-3 - - Update 20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mi... - -commit 90e3fc481bbc755f49f19bda36183cfe7add044b -Author: ideas4u -Date: Wed Dec 31 13:09:48 2014 +0800 - - Update 20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md - - translating req - -commit 2bcc32daec5f69a9bce752bd3e7f00b643b82db0 -Merge: cb2ce57 3a03323 -Author: Xingyu.Wang -Date: Wed Dec 31 12:58:25 2014 +0800 - - Merge pull request #2173 from ideas4u/patch-2 - - Create 20141211 How to use matplotlib for scientific plotting on Linux 已完成 - -commit cb2ce57b43cd89c2898a620e61635f6b861691e0 -Merge: 38fb9e5 587f865 -Author: Xingyu.Wang -Date: Wed Dec 31 12:58:09 2014 +0800 - - Merge pull request #2174 from ideas4u/patch-1 - - Delete 20141211 How to use matplotlib for scientific plotting on Linux.m... - -commit 587f865cb2bd27bdbb4090f6db9fc4f3538b3af2 -Author: ideas4u -Date: Wed Dec 31 12:55:26 2014 +0800 - - Delete 20141211 How to use matplotlib for scientific plotting on Linux.md - -commit 38fb9e504ca5a7edb42b7b033f37764b06d2d53e -Merge: 64d596e 7c5acd7 -Author: Xingyu.Wang -Date: Wed Dec 31 12:23:02 2014 +0800 - - Merge pull request #2171 from mtunique/master - - 【翻译完成】20141229 5 User Space Debugging Tools in Linux - -commit 7c5acd73f20bdea81542bf04c515fd0832fc08c1 -Author: mtunique -Date: Wed Dec 31 12:06:31 2014 +0800 - - 【翻译完成】20141229 5 User Space Debugging Tools in Linux - -commit 62ec8144152a046ca473fdd795285fb0d23e376d -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Dec 31 12:03:11 2014 +0800 - - 选题 20141230 Second Edition of Ubuntu Manual 14.04 LTS Is Out - -commit 909f645bf5b5a815391f4fade5a0a9f03d337b6d -Author: ZTinoZ -Date: Wed Dec 31 11:48:54 2014 +0800 - - Translating by ZTinoZ - -commit e9213927c5e39e29d3cab3032cd7abb3228fd176 -Author: mtunique -Date: Wed Dec 31 11:47:24 2014 +0800 - - 【翻译完成】20141229 5 User Space Debugging Tools in Linux - -commit 8b0e478477e0e4d6a9bef7d7809604868cbbef0b -Author: mtunique -Date: Wed Dec 31 11:45:24 2014 +0800 - - delete 20141229 5 User Space Debugging Tools in Linux.md - -commit a3b61d46f93527db1538238d376caaab06a0dad9 -Merge: 2bd8a0d 64d596e -Author: mtunique -Date: Wed Dec 31 11:44:07 2014 +0800 - - Merge remote-tracking branch 'lctt/master' - -commit 64d596e703116c1ece818626d98cfddada2b1da2 -Merge: e84fc42 c8c5ad2 -Author: Xingyu.Wang -Date: Wed Dec 31 11:04:37 2014 +0800 - - Merge pull request #2170 from H-mudcup/master - - update 2014/12/31 - -commit c8c5ad2a21321caa97514360dcad50eb42db48e2 -Author: H-mudcup -Date: Wed Dec 31 10:43:45 2014 +0800 - - Update 20141226 The Good The Bad And The Ugly Of Linux In 2014.md - - Translating by H-mudcup - -commit 146f514cb19f0e6ecd0524da62a0bec917a60c2a -Merge: 2daff13 e84fc42 -Author: ZhouJ-sh <32321321@qq.com> -Date: Wed Dec 31 10:39:52 2014 +0800 - - Merge pull request #2 from LCTT/master - - Merge from base - -commit ed7385ad7bce215f6f068da196a4c5556b6290d0 -Merge: 3923955 e84fc42 -Author: H-mudcup -Date: Wed Dec 31 10:36:24 2014 +0800 - - Merge pull request #3 from LCTT/master - - 更新2014年12月30日 - -commit e84fc42b9c8972831ed5d8d78ee9a58607dbafd8 -Merge: cd6228b 3b192a8 -Author: joeren -Date: Wed Dec 31 08:29:51 2014 +0800 - - Merge pull request #2169 from GOLinux/master - - [Translated] 20141224 Calife--A lightweight alternative to sudo.md - -commit 3b192a8aed6bd8c77da5f692b6d60f68e478eea9 -Author: GOLinux -Date: Wed Dec 31 08:27:07 2014 +0800 - - [Translated] 20141224 Calife--A lightweight alternative to sudo.md - -commit cd6228bc7810646208e22a01708b9b3f782cb9f6 -Merge: 70174be 82ac18e -Author: joeren -Date: Wed Dec 31 07:52:55 2014 +0800 - - Merge pull request #2168 from GOLinux/master - - [Translating]20141224 Calife--A lightweight alternative to sudo.md - -commit 82ac18e7e6a8f9a3109911533dcd4c3a2edc54dc -Author: joeren -Date: Wed Dec 31 07:52:28 2014 +0800 - - Update 20141224 Calife--A lightweight alternative to sudo.md - -commit dc8fc5d8a09e76b10f6effe7e609e36d75dea410 -Merge: b3d9bb7 70174be -Author: joeren -Date: Wed Dec 31 07:51:10 2014 +0800 - - Merge pull request #20 from LCTT/master - - Update Repository - -commit 70174bed6dbd5ccc51ab4dd7215923026ac1a48f -Merge: 95d5ce4 55be8f9 -Author: joeren -Date: Wed Dec 31 07:50:39 2014 +0800 - - Merge pull request #2167 from Vic020/master - - Translated: Linux FAQs with Answers--How to install Kingsoft Office on Linux - -commit 95d5ce4eb0dfa27a48013a8e020615b9a898e507 -Merge: acb74fb 2daff13 -Author: joeren -Date: Wed Dec 31 07:50:28 2014 +0800 - - Merge pull request #2166 from ZhouJ-sh/master - - 20141229 选题 2 Ways To Fix The UEFI Bootloader When Dual Booting Windo… - -commit acb74fb709c5faacadef795575b06e046abdd87a -Merge: 2ea4597 5cab529 -Author: joeren -Date: Wed Dec 31 07:50:14 2014 +0800 - - Merge pull request #2165 from Stevearzh/master - - Translating by Stevearzh - -commit 55be8f979ef92bcd893995ca0ed746b720c1ff62 -Author: Vic___ -Date: Tue Dec 30 22:49:59 2014 +0800 - - Moved - -commit 8bb194413564b652cb212b5143acb8e1f880fd90 -Author: Vic___ -Date: Tue Dec 30 22:48:53 2014 +0800 - - Translated - -commit 2daff130f975f6b6c566e3ca030f3e7e77d1b515 -Author: ZhouJ-sh <32321321@qq.com> -Date: Tue Dec 30 18:05:32 2014 +0800 - - translated 20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md - -commit 06c94466acd9089ff9f641666dbbb695d93900ce -Author: ZhouJ-sh <32321321@qq.com> -Date: Tue Dec 30 16:42:44 2014 +0800 - - 20141229 选题 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md - -commit 5cab52953e40e4dff4763a672888c53beb9d6b97 -Author: Stevearzh -Date: Tue Dec 30 14:43:41 2014 +0800 - - Translating by Stevearzh - -commit 2bd8a0dcaaf73a3b1686ae671704404baeac0dde -Merge: cea1528 2ea4597 -Author: mtunique -Date: Tue Dec 30 12:59:28 2014 +0800 - - Merge remote-tracking branch 'lctt/master' - -commit 2ea4597c9b7318eafbfac34e6674b41956110553 -Merge: 74b278b 0a3f390 -Author: Xingyu.Wang -Date: Tue Dec 30 12:23:45 2014 +0800 - - Merge pull request #2164 from ZTinoZ/master - - Translating by ZTinoZ - -commit 0a3f3906f5d07fc78c2d824665d6b4eb347fa45c -Author: ZTinoZ -Date: Tue Dec 30 11:50:33 2014 +0800 - - Translating by ZTinoZ - -commit e3991b36a9bc66dfc8f94bb5f718c7229ac3d6dc -Merge: 81f30fa 74b278b -Author: ZTinoZ -Date: Tue Dec 30 11:46:31 2014 +0800 - - Merge pull request #4 from LCTT/master - - Update the Repository - -commit 74b278b27b571bff6ddfdca295062f44ee6dcd0e -Merge: af1c4b6 81f30fa -Author: Xingyu.Wang -Date: Tue Dec 30 11:17:42 2014 +0800 - - Merge pull request #2163 from ZTinoZ/master - - Finish the translation by ZTinoZ - -commit af1c4b6b29ec0f87d747408546f3c34982a4e31b -Merge: 94fa3a1 6128f69 -Author: Xingyu.Wang -Date: Tue Dec 30 11:14:42 2014 +0800 - - Merge pull request #2162 from mtunique/patch-2 - - 【翻译中】5 User Space Debugging Tools in Linux - -commit 81f30fa2cabfe5cfa8b41d257538bba1f9657970 -Author: ZTinoZ -Date: Tue Dec 30 11:01:10 2014 +0800 - - Finish the translation by ZTinoZ - -commit cea15280546af2d1f5a47c33af6d775bb2bac6d2 -Merge: bf26401 94fa3a1 -Author: Tao Meng -Date: Tue Dec 30 10:57:00 2014 +0800 - - Merge pull request #1 from LCTT/master - - update - -commit 6128f6946fd72e0960a9145a972bc47b8f9ba602 -Author: Tao Meng -Date: Tue Dec 30 10:49:45 2014 +0800 - - 【翻译中】5 User Space Debugging Tools in Linux - - 【翻译中】5 User Space Debugging Tools in Linux - -commit 94fa3a1be59451035da2d1acf84844b2a89de3c6 -Merge: de39e53 b3d9bb7 -Author: joeren -Date: Tue Dec 30 10:18:00 2014 +0800 - - Merge pull request #2161 from GOLinux/master - - [Translated] 20141229 How to Create Btrfs Filesystem in Linux and its Features.md - -commit b3d9bb7ff393570fc9762f505134cd6dc983f309 -Author: GOLinux -Date: Tue Dec 30 10:16:14 2014 +0800 - - [Translated] 20141229 How to Create Btrfs Filesystem in Linux and its Features.md - -commit de39e5312bbc0b73e1367aae5d7cb99c0c70f763 -Merge: ab2f5a9 a183dfa -Author: joeren -Date: Tue Dec 30 09:07:32 2014 +0800 - - Merge pull request #2160 from GOLinux/master - - [Translating]20141229 How to Create Btrfs Filesystem in Linux and its Features.md - -commit a183dfaec77312c8a3f0baadc7077e068a439bed -Author: joeren -Date: Tue Dec 30 09:07:00 2014 +0800 - - Update 20141229 How to Create Btrfs Filesystem in Linux and its Features.md - -commit d6aa783d443a35125c9278bc93baabae9a8e3a82 -Merge: ddd7606 ab2f5a9 -Author: joeren -Date: Tue Dec 30 09:04:56 2014 +0800 - - Merge pull request #19 from LCTT/master - - Update Repository - -commit ab2f5a9d58613bf63651cd52b6873598f22e3d5b -Author: wxy -Date: Mon Dec 29 22:33:00 2014 +0800 - - PUB:20141219 Attic--Deduplicating backup program - - @GOLinux - -commit 79880065e17ad1248a7f97de8833404eb42f175c -Author: wxy -Date: Mon Dec 29 22:24:42 2014 +0800 - - PUB:20141211 Was 2014 The Year of Linux Desktop - - @ZTinoZ - -commit c1cb502768f3fd3944809571b7d7522c0a34a470 -Author: wxy -Date: Mon Dec 29 22:16:17 2014 +0800 - - PUB:20140818 Will Linux ever be able to give consumers what they want - - @zpl1025 - -commit c97974d2a66eaa8ff487b50c7efb2a00e70a0987 -Author: wxy -Date: Mon Dec 29 22:08:11 2014 +0800 - - PUB:20141224 Linux FAQs with Answers--How to install non-free packages on Debian - - @mtunique 翻译的不错! - -commit ae8643533bbac80f49d9f4543877f602180fa2c0 -Merge: c175bbf cc87adf -Author: geekpi -Date: Mon Dec 29 21:43:34 2014 +0800 - - Merge pull request #2159 from geekpi/master - - translated - -commit cc87adfebb04b01a06df2dbf39fa1c073005a68d -Author: zhengsihua -Date: Mon Dec 29 21:41:24 2014 +0800 - - translated - -commit c175bbf0d37c2fc38ccf865894a8325be94e1235 -Author: wxy -Date: Mon Dec 29 21:37:22 2014 +0800 - - PUB:20141008 How To Use Steam Music Player on Ubuntu Desktop - - @H-mudcup 翻译的不错~加油~ - -commit 3ff9ad2ebc41360bd34892e73db4bec6e07aee09 -Author: wxy -Date: Mon Dec 29 21:24:41 2014 +0800 - - PUB:20141219 The 'grinch' isn't a Linux vulnerability, Red Hat says - - @yupmoon 翻译的不错,我一字未易。 - -commit de1dee6f001eec52984b944f764474d6300a9a63 -Merge: 56bad99 8556494 -Author: geekpi -Date: Mon Dec 29 21:01:03 2014 +0800 - - Merge pull request #2158 from geekpi/master - - translating - -commit 8556494c08c8087450e152ffafe77960b6925109 -Author: zhengsihua -Date: Mon Dec 29 20:44:38 2014 +0800 - - translating - -commit 932c6512f6cdda6b8be86214b4399c2bdac0f120 -Author: ZTinoZ -Date: Mon Dec 29 18:14:40 2014 +0800 - - Translating by ZTinoZ - -commit 56bad99e5415123255791fcaecbc94574d53f981 -Author: DeadFire -Date: Mon Dec 29 15:27:10 2014 +0800 - - 20141229-1 选题 - -commit ddd760648cd26206e9c23503526054464432c5c2 -Merge: 6213d88 bf911bd -Author: joeren -Date: Mon Dec 29 09:13:59 2014 +0800 - - Merge pull request #18 from LCTT/master - - Update Repository - -commit 3923955df081bd2e934fff3a71f275f093473eaf -Merge: 8b08356 bf911bd -Author: H-mudcup -Date: Mon Dec 29 08:07:38 2014 +0800 - - Merge pull request #2 from LCTT/master - - 更新2014年12月29日 - -commit bf911bde6cff67b9d626c74911f781c833d38eb5 -Merge: b5ef4a3 bf26401 -Author: Xingyu.Wang -Date: Sun Dec 28 22:54:25 2014 +0800 - - Merge pull request #2155 from mtunique/master - - 【翻译中】20141224 Linux FAQs with Answers--How to install non-free packages on Debian - -commit b5ef4a3d2148495af4821926f2ec869792cf0596 -Merge: 6d421e2 8b08356 -Author: Xingyu.Wang -Date: Sun Dec 28 22:53:17 2014 +0800 - - Merge pull request #2154 from H-mudcup/master - - Translated 20141008 How To Use Steam Music Player on Ubuntu Desktop.md - 没事,原文本来也是要删除的。恭喜你完成了第一篇翻译!我会马上发布~ - -commit 71ef31dc95fa3b531f7fd2a6d81add97ff9f27b5 -Author: ZTinoZ -Date: Sun Dec 28 20:51:48 2014 +0800 - - Translating by ZTinoZ - -commit 6d421e21ca5e1545bbf86f493867c46edc9eb148 -Merge: 6472c49 e587300 -Author: geekpi -Date: Sun Dec 28 18:40:35 2014 +0800 - - Merge pull request #2157 from geekpi/master - - translated - -commit e587300c7caa8bb4a0b5a506e8031cd4c6cb7760 -Author: zhengsihua -Date: Sun Dec 28 18:39:29 2014 +0800 - - translated - -commit 6472c49a12e672ccab370842fc97812e8a6eacb7 -Merge: 268dc0e e5402df -Author: geekpi -Date: Sun Dec 28 17:49:17 2014 +0800 - - Merge pull request #2156 from geekpi/master - - translating - -commit e5402df860eaffc1e2f8029608853e39eddfe855 -Author: zhengsihua -Date: Sun Dec 28 17:47:19 2014 +0800 - - translating - -commit bf26401b0e5c9dea193697a5c777b445fabbb16c -Author: mtunique -Date: Sun Dec 28 15:41:12 2014 +0800 - - 【翻译完成】20141224 Linux FAQs with Answers--How to install non-free packages on Debian - -commit 86489418630ff0192d1287ac8270331aac63e5f2 -Author: mtunique -Date: Sun Dec 28 14:25:11 2014 +0800 - - Translating by mtunique - -commit 8b083563a9861cff2ce34283992afd18f647f360 -Author: H-mudcup -Date: Sun Dec 28 12:54:47 2014 +0800 - - Create 20141008 How To Use Steam Music Player on Ubuntu Desktop.md - -commit 71cff408b174ef03c50ce9537a8053095cb30903 -Author: H-mudcup -Date: Sun Dec 28 12:50:54 2014 +0800 - - Delete 20141008 How To Use Steam Music Player on Ubuntu Desktop.md - -commit e8d26c2bdfcfa5cec796325cc21658306433db6a -Author: H-mudcup -Date: Sun Dec 28 12:26:48 2014 +0800 - - Update 20141008 How To Use Steam Music Player on Ubuntu Desktop.md - -commit 268dc0eadd15d7594a7705304b872c1a067f95a1 -Merge: 77a96b8 4782651 -Author: runningwater -Date: Sat Dec 27 23:00:08 2014 +0800 - - Merge pull request #2153 from runningwater/master - - 翻译中 by runningwater - -commit 4782651a2d3510a32a338e98e3c8853c5515c776 -Author: runningwater -Date: Sat Dec 27 22:54:25 2014 +0800 - - 翻译中 by runningwater - -commit 77a96b8be04015a26d64081c1ee25fb7ad77d602 -Merge: 2eef77c 34eb334 -Author: runningwater -Date: Sat Dec 27 22:23:15 2014 +0800 - - Merge pull request #2152 from runningwater/master - - 翻译完成 - -commit 34eb334cb73079690da6d50c3e5f33aeb793f29b -Author: runningwater -Date: Sat Dec 27 22:18:21 2014 +0800 - - 翻译完成 - -commit 2eef77cedb7d037905b0baf298028f481dc49e66 -Merge: 8893327 e4d68ad -Author: geekpi -Date: Sat Dec 27 12:01:26 2014 +0800 - - Merge pull request #2151 from geekpi/master - - translated - -commit e4d68ad946aa6681705e0876fa3ea3b5fbd427e7 -Author: zhengsihua -Date: Sat Dec 27 11:58:41 2014 +0800 - - translated - -commit 62de838381f98bf53dd8cf19a339f4b463f3d2eb -Author: zhengsihua -Date: Sat Dec 27 11:14:34 2014 +0800 - - translating - -commit 88933273fa784867fce3310f1703b8b1a14c509d -Merge: 28a0950 bbe861a -Author: geekpi -Date: Fri Dec 26 21:29:26 2014 +0800 - - Merge pull request #2150 from geekpi/master - - translated - -commit bbe861a9c8de30cacdfad16046c92bb4403e3b41 -Author: zhengsihua -Date: Fri Dec 26 21:27:07 2014 +0800 - - translated - -commit 28a0950f812670bda7fd7aa9c6a03ef226a30b24 -Merge: e079c94 de67c15 -Author: geekpi -Date: Fri Dec 26 20:36:10 2014 +0800 - - Merge pull request #2149 from geekpi/master - - translating - -commit de67c15c07237fc464939ee35a6f543de530a09a -Author: zhengsihua -Date: Fri Dec 26 20:32:32 2014 +0800 - - translating - -commit bdc7f0da338fdf3201d90a86286130b13a682a67 -Merge: 2955a22 e079c94 -Author: H-mudcup -Date: Fri Dec 26 18:21:55 2014 +0800 - - Merge pull request #1 from LCTT/master - - 更新2014年12月26日 - -commit e079c94dcbba39bb1747803b4984a9a5dde2ac76 -Author: DeadFire -Date: Fri Dec 26 16:51:06 2014 +0800 - - 20141226-2 选题 - -commit 4ca1c3dc87ea51e77702afc126b2be2bac3869d5 -Author: ZTinoZ -Date: Fri Dec 26 15:56:59 2014 +0800 - - Translating by ZTinoZ - -commit a6eca5d1cd2c3edce28c9a02f0eb9457071495d6 -Author: DeadFire -Date: Fri Dec 26 14:52:02 2014 +0800 - - 20141226-1 选题 - -commit 90e28a3b7cbdf9cd018980c8864b13cdcb739a68 -Merge: beb172b 9ac2839 -Author: Xingyu.Wang -Date: Fri Dec 26 14:26:59 2014 +0800 - - Merge pull request #2147 from disylee/master - - Translated by disylee - -commit beb172b1d17386bd1e2e5ffd443b44575c166e08 -Merge: 2196b81 6a389b5 -Author: Xingyu.Wang -Date: Fri Dec 26 14:26:17 2014 +0800 - - Merge pull request #2146 from H-mudcup/patch-1 - - Update 20141008 How To Use Steam Music Player on Ubuntu Desktop.md - -commit 2196b810b6b14e0593ebc034eab217bd621801ce -Merge: 9d73eb5 005ce23 -Author: Xingyu.Wang -Date: Fri Dec 26 14:26:03 2014 +0800 - - Merge pull request #2145 from Vic020/patch-24 - - Update 20141224 Linux FAQs with Answers--How to install Kingsoft Office ... - -commit 9d73eb5a0ee79cba76aeab065d8665d97196bdc8 -Merge: 2955a22 6213d88 -Author: joeren -Date: Fri Dec 26 10:29:52 2014 +0800 - - Merge pull request #2148 from GOLinux/master - - [Translated] 20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md - -commit 6213d88fe8b83fcc288f09337e6ded15af600662 -Merge: dfa5842 2955a22 -Author: joeren -Date: Fri Dec 26 10:28:45 2014 +0800 - - Merge pull request #17 from LCTT/master - - Update Repository - -commit dfa5842c74e41919c0894b37f767479103c3d50b -Author: GOLinux -Date: Fri Dec 26 10:25:20 2014 +0800 - - [Translated] 20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md - -commit 9ac2839a5250dae875f7276063ccc45ddc81d0a0 -Author: disylee -Date: Fri Dec 26 02:04:23 2014 +0800 - - Translated by disylee - -commit 6a389b5471a7a793bfd5699b98e7f650ed40379d -Author: H-mudcup -Date: Thu Dec 25 23:09:29 2014 +0800 - - Update 20141008 How To Use Steam Music Player on Ubuntu Desktop.md - - Translating by H-mudcup - -commit 2955a222bb9aba254a11ba57bd2e3fbd385e7422 -Author: wxy -Date: Thu Dec 25 21:54:09 2014 +0800 - - 晋升 runningwater 为 core - -commit b1ffe063d1accf4df1152a67ae529f73f4bfb297 -Author: wxy -Date: Thu Dec 25 21:53:41 2014 +0800 - - PUB:20141119 10 SCP Commands to Transfer Files or Folders in Linux - - @ZTinoZ - -commit 005ce238f59ef692fcad41a92eed18ae9674e6bd -Author: Vic___ -Date: Thu Dec 25 21:13:35 2014 +0800 - - Update 20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md - -commit 4d1008437a1d6f612a875f259fa934686b345c7e -Author: ZTinoZ -Date: Thu Dec 25 17:55:07 2014 +0800 - - Translating by ZTinoZ - -commit e6966181f74065b07f0a221c6fb62aa434301ab9 -Author: wxy -Date: Thu Dec 25 11:06:18 2014 +0800 - - PUB:20141118 Linux FAQs with Answers--How to install phpMyAdmin on CentOS - - @ZTinoZ - -commit e20bf8816c3d190c4f34f4a91a2fdfe2736376b5 -Author: wxy -Date: Thu Dec 25 10:47:21 2014 +0800 - - PUB:20140915 Make Downloading Files Effortless - - @zpl1025 - -commit 16622478f52e8c3712b2f6f47980eec2cdc797d5 -Merge: ba0faf4 ddde7ce -Author: Xingyu.Wang -Date: Thu Dec 25 13:02:24 2014 +0800 - - Merge pull request #2144 from ZTinoZ/master - - Translating by ZTinoZ - -commit ddde7ce69dfba1cc974e7efb2287de604b386d3d -Author: ZTinoZ -Date: Thu Dec 25 12:04:23 2014 +0800 - - Translating by ZTinoZ - -commit 7720875b8dca1ffbfd8f70a497947b55a87709ce -Merge: 8527820 ba0faf4 -Author: ZTinoZ -Date: Thu Dec 25 11:35:17 2014 +0800 - - Merge pull request #3 from LCTT/master - - Update the Repositories - -commit ba0faf47d88accd9ebd96419715611de538e8f94 -Merge: 6b448d8 8527820 -Author: Xingyu.Wang -Date: Thu Dec 25 11:06:45 2014 +0800 - - Merge pull request #2143 from ZTinoZ/master - - Finish the translation by ZTinoZ - -commit 852782056e92d0a160ef1e00639f659f2767ab86 -Author: ZTinoZ -Date: Thu Dec 25 10:57:59 2014 +0800 - - Finish the translation by ZTinoZ - -commit 6b448d82636cb660bd3dc13f1912340c2700fe92 -Author: wxy -Date: Thu Dec 25 10:22:53 2014 +0800 - - PUB:20140910 Why Do Some Old Programming Languages Never Die - - @runningwater - -commit 7ff13e77dc81bd2cc69c2bcb3e69dae8fc1965a4 -Merge: 0ec62b6 e7864a8 -Author: joeren -Date: Thu Dec 25 08:39:26 2014 +0800 - - Merge pull request #2142 from GOLinux/master - - [Translated] 20141222 A Great Tool To Show Linux Command Progress Like ETA.md - -commit e7864a8716c6086e3d891f29c333bc0619707299 -Author: GOLinux -Date: Thu Dec 25 08:36:29 2014 +0800 - - [Translated] 20141222 A Great Tool To Show Linux Command Progress Like ETA.md - -commit 3893ee8c5f6f41c3c37a25193833367701ae1374 -Author: ZTinoZ -Date: Wed Dec 24 17:58:37 2014 +0800 - - Translating by ZTinoZ - -commit 0ec62b6055241db57f18a2aee95bd9d99812321c -Author: DeadFire -Date: Wed Dec 24 16:52:39 2014 +0800 - - 20141224-1 选题 - -commit b27de43b7456e86f7565de8ceca8f1ed26401ce0 -Merge: 3f605ee 514c1dc -Author: joeren -Date: Wed Dec 24 16:19:54 2014 +0800 - - Merge pull request #2141 from GOLinux/master - - [Translating]20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md - -commit 514c1dcc67f146a32680dbc7547f7297ba8dc10a -Author: joeren -Date: Wed Dec 24 16:19:16 2014 +0800 - - Update 20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md - -commit 3f605ee665c2703b98c0a850b1ebf86896ab63f7 -Merge: 9f8ddd2 0d14c15 -Author: joeren -Date: Wed Dec 24 16:17:07 2014 +0800 - - Merge pull request #2140 from GOLinux/master - - [Translating]20141222 A Great Tool To Show Linux Command Progress Like ETA.md - -commit 0d14c152732feac36b06dc77d72063555fa285b4 -Author: joeren -Date: Wed Dec 24 16:16:07 2014 +0800 - - Update 20141222 A Great Tool To Show Linux Command Progress Like ETA.md - -commit 9f8ddd2df48cae5683e21eaac78ea2011b26ce84 -Merge: 7631797 32f484e -Author: joeren -Date: Wed Dec 24 10:12:11 2014 +0800 - - Merge pull request #2139 from GOLinux/master - - [Translated] 20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md - -commit 32f484e215636f830df94750ef81d3e1b41c94e1 -Author: GOLinux -Date: Wed Dec 24 10:09:36 2014 +0800 - - [Translated] 20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md - -commit 7631797c0ef70c693b65f1b676fbbed8ce674c87 -Merge: 9afa538 e08247d -Author: joeren -Date: Wed Dec 24 08:33:28 2014 +0800 - - Merge pull request #2138 from GOLinux/master - - [Translating]20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md - -commit e08247d21a4e070836ed5b184bb510c20971f0b4 -Author: joeren -Date: Wed Dec 24 08:32:53 2014 +0800 - - Update 20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md - -commit a68b42975bf1901e6a57acd737ce9ac0b61f5ea1 -Merge: 1bb3f96 9afa538 -Author: joeren -Date: Wed Dec 24 08:32:05 2014 +0800 - - Merge pull request #16 from LCTT/master - - Update Repository - -commit 9afa5387f3d89c4e8bfd7a1987b012bd08fcc2dc -Author: DeadFire -Date: Tue Dec 23 16:47:50 2014 +0800 - - 20141223-3 选题 - -commit 059350f824e7fb0e6292b60e84cccdc84e05591e -Author: DeadFire -Date: Tue Dec 23 16:42:23 2014 +0800 - - 20141223-2 选题 - -commit dcad76a0f9e4b0ce71fe58ef7df00aad5bc62086 -Author: DeadFire -Date: Tue Dec 23 13:39:39 2014 +0800 - - 20141223-1 选题 - -commit 1bb3f967b17c0650d30ce61c1f3b87cc0a382a6d -Merge: ff344ec 683c969 -Author: joeren -Date: Tue Dec 23 13:09:02 2014 +0800 - - Merge pull request #15 from LCTT/master - - Update Repository - -commit 683c96900a25b5c12a34a519592dc0b7b5f00e27 -Merge: 614911f b7fb010 -Author: joeren -Date: Tue Dec 23 13:07:50 2014 +0800 - - Merge pull request #2137 from yupmoon/master - - tranlated - -commit a1a057e40fa1545e7d17dc88782c6e2a0c35dd2c -Author: ZTinoZ -Date: Tue Dec 23 00:03:00 2014 +0800 - - Translating by ZTinoZ - -commit b7fb0102844a8ae8e0fa74e8c7fe19cc99fcbe60 -Author: yupmoon -Date: Mon Dec 22 22:19:48 2014 +0800 - - tranlated - -commit 614911fde4e657f699718ba833a805d9c4fc483c -Author: wxy -Date: Mon Dec 22 21:37:51 2014 +0800 - - PUB:20141112 Intro to Systemd Runlevels and Service Management Commands - - @coloka - -commit 2cb3b0820d66168585297d70367d2f9926ad6794 -Author: wxy -Date: Mon Dec 22 21:12:49 2014 +0800 - - PUB:20141030 rsync Command to Exclude a List of Files and Directories in Linux - - @GOLinux - -commit 262a2df7b592a12177d8c3d38df45ec3b9ef145f -Author: wxy -Date: Mon Dec 22 21:06:35 2014 +0800 - - PUB:20141222 How to use Rsync Command In Linux With Examples - - @geekpi - -commit 1fc675e6b9e9a15f08436625946b09e701d1b3e2 -Merge: e3782e8 0d692e2 -Author: geekpi -Date: Mon Dec 22 20:51:47 2014 +0800 - - Merge pull request #2136 from geekpi/master - - translated - -commit 0d692e270385c6d8f8753a7a3b1b99b5ccef3e8b -Author: zhengsihua -Date: Mon Dec 22 20:48:39 2014 +0800 - - translated - -commit e3782e8f1f4d0b827d64936741c86fe33d6ea254 -Merge: 5bbf79d 53214ad -Author: geekpi -Date: Mon Dec 22 20:28:32 2014 +0800 - - Merge pull request #2135 from geekpi/master - - translating - -commit 53214ad958cdcacb61c3033faa78fc8d847b9d4d -Author: geekpi -Date: Mon Dec 22 07:27:32 2014 -0500 - - translating - -commit 5bbf79dc8c239aa90ca9c075105846b7c84e83e5 -Merge: c481ea2 4d6a428 -Author: Xingyu.Wang -Date: Mon Dec 22 20:16:51 2014 +0800 - - Merge pull request #2134 from yupmoon/master - - ###yupmoon translating### - -commit c481ea218042ad9fabb3d2bbfbd34391a8f25640 -Author: DeadFire -Date: Mon Dec 22 16:36:34 2014 +0800 - - 20141222-3 选题 - -commit 17669ee7a2a2997542965381937c9834f3584381 -Author: DeadFire -Date: Mon Dec 22 15:37:01 2014 +0800 - - 20141222-2 选题 - -commit 44d2576118470007af3df3aa30d1919817c0a74a -Author: DeadFire -Date: Mon Dec 22 14:26:16 2014 +0800 - - 20141222-1 选题 - -commit 4d6a4286880baa269053e49a40af9f6e8b150bf6 -Author: yupmoon -Date: Mon Dec 22 11:17:54 2014 +0800 - - ###yupmoon translating### - -commit 4813316cb3955e346e518027357d8db850d2f95d -Merge: e6ffb9c ff344ec -Author: joeren -Date: Mon Dec 22 10:23:14 2014 +0800 - - Merge pull request #2133 from GOLinux/master - - [Translated] 20141219 Attic--Deduplicating backup program.md - -commit ff344ec2202e80b2846748f840b960b525a67477 -Author: GOLinux -Date: Mon Dec 22 10:19:50 2014 +0800 - - [Translated] 20141219 Attic--Deduplicating backup program.md - -commit e6ffb9c85e388e730846c543d60e1210591f860d -Merge: 78ab7ce 2f4a7a1 -Author: joeren -Date: Mon Dec 22 09:26:14 2014 +0800 - - Merge pull request #2132 from GOLinux/master - - [Translating] 20141219 Attic--Deduplicating backup program.md - -commit 2f4a7a1f067851615057121acf06b9faf233a8a0 -Author: joeren -Date: Mon Dec 22 09:25:44 2014 +0800 - - Update 20141219 Attic--Deduplicating backup program.md - -commit 62faae4910ea47013e7b6736b1968003b3529cc2 -Merge: 4167376 78ab7ce -Author: joeren -Date: Mon Dec 22 09:24:13 2014 +0800 - - Merge pull request #14 from LCTT/master - - Update Repository - -commit 78ab7ce2dc0eb306f7e011c894e908308135db29 -Merge: 9029711 49fbafb -Author: joeren -Date: Mon Dec 22 09:23:35 2014 +0800 - - Merge pull request #2131 from SPccman/master - - How to filter, split or merge pcap files on Linux - -commit 90297119de3e2d3ca5433f2bf2c2dd53ce358470 -Author: wxy -Date: Sun Dec 21 23:19:15 2014 +0800 - - PUB:20141120 Postfix tips and Troubleshooting Commands - - @Vic020 - -commit 937f096a63a741fef0cff615f4a89f315f482e6f -Author: wxy -Date: Sun Dec 21 23:08:07 2014 +0800 - - PUB:20141120 5 Best Open Source Web Browser Security Apps - - @yupmoon - -commit 908ca37521c0797cd3dbe697f5c7c24c6e757f23 -Author: wxy -Date: Sun Dec 21 22:40:07 2014 +0800 - - PUB:20141104 Pitivi 0.94 Uses GTK HeaderBar, Squashes Umpteen Bugs - - @ThomazL - -commit 49fbafbafb84afb7ea4353d2a18f99917d29af27 -Author: DoubleC <450760206@qq.com> -Date: Sun Dec 21 21:33:32 2014 +0800 - - complete - - 翻已完成 - -commit 8eca31ef32807bce5b4a304bcae4c66abf2afb43 -Author: DoubleC <450760206@qq.com> -Date: Sun Dec 21 21:27:11 2014 +0800 - - delete source file - - 删除原文 - -commit 5a0c84097c7cf18a705c465e5ae03e2527e640c7 -Merge: bec12e6 801855b -Author: DoubleC <450760206@qq.com> -Date: Sun Dec 21 21:19:15 2014 +0800 - - Merge pull request #12 from LCTT/master - - update - -commit 801855bc1cd6a63984d942115b6180268f860c59 -Merge: fca7f96 b866001 -Author: geekpi -Date: Sun Dec 21 14:39:31 2014 +0800 - - Merge pull request #2130 from geekpi/master - - translated - -commit b866001dbd018b90e2946fb2f3a514ae33774476 -Author: zhengsihua -Date: Sun Dec 21 14:37:48 2014 +0800 - - translated - -commit fca7f966b0d361bdcc7165c408276a24f821359e -Merge: d551188 5c7518a -Author: geekpi -Date: Sun Dec 21 13:34:50 2014 +0800 - - Merge pull request #2129 from geekpi/master - - translating - -commit 5c7518a24514333aa9674d6f5a183b38880a645e -Author: zhengsihua -Date: Sun Dec 21 13:32:19 2014 +0800 - - translating - -commit d5511888d38be2efbfbed5c5904f045029aab98f -Author: wxy -Date: Sun Dec 21 11:25:13 2014 +0800 - - PUB:20141204 How To Drop Database In Oracle 11 Without Using DBCA - - @Vic020 - -commit 0f1eb122e3f8229e674cc42d6d86d195935d259d -Author: wxy -Date: Sun Dec 21 11:19:10 2014 +0800 - - PUB:20141120 How to visualize memory usage on Linux - - @coloka - -commit 0a5e8200b948e8373cc64881d1e33633726b917b -Author: wxy -Date: Sun Dec 21 11:07:54 2014 +0800 - - PUB:20141127 Some Sentences about Java - - @a598799539 - -commit a741a4ca81d8f6ad6b789e41e056b222ffff3cfc -Author: wxy -Date: Sun Dec 21 10:59:36 2014 +0800 - - PUB:20141021 How to monitor a log file on Linux with logwatch - - @runningwater - -commit 234a0ae94eb2fdf1ab4b26f7220f513074691d19 -Author: wxy -Date: Sun Dec 21 10:31:59 2014 +0800 - - PUB:20141029 Shell Scripting--Checking Conditions with if - - @ThomazL - -commit b3235ccc86fec902dcec99128edf73d379e826f7 -Author: wxy -Date: Sat Dec 20 21:54:46 2014 +0800 - - 清除过期文章,回收过期未完成文章 - - 以下诸位逾期未完成的文章收回: @barney-ro @mdjsjdqe @felixonmars (3篇!) @CHINAANSHE - @forsil - -commit dffdcdb1183accaf119c0f1e1518c0f6cb965bc6 -Author: wxy -Date: Sat Dec 20 21:39:26 2014 +0800 - - 更正格式 - -commit de02f24cfb57be4685b1b91ec1b07d4bf306c594 -Author: wxy -Date: Sat Dec 20 21:39:13 2014 +0800 - - 过期 - - @geekpi 十分抱歉,这篇已经过期较长时间了,不合适发布了。 - -commit a8e6c6ad0f5b8bc191f646e06cf017e6cba1bd88 -Merge: 7d0d098 6f9d4bd -Author: Xingyu.Wang -Date: Sat Dec 20 21:16:38 2014 +0800 - - Merge pull request #2128 from Stevearzh/master - - [translated by Stevearzh]20141211 NetHack.md - -commit 6f9d4bd84a6cb56dcff67c5345a4f522efdb6b7b -Author: Stevearzh -Date: Sat Dec 20 16:41:03 2014 +0800 - - translated by Stevearzh - -commit 7d0d0986794c10c86f0b3a85f948d763d674b0f5 -Merge: f5f0271 0674555 -Author: geekpi -Date: Sat Dec 20 12:44:17 2014 +0800 - - Merge pull request #2127 from geekpi/master - - translated - -commit 0674555003b85b2a52cb3ada1651ad35664d0c14 -Author: zhengsihua -Date: Sat Dec 20 12:43:00 2014 +0800 - - translated - -commit f5f0271abda5e8f0d605d2c7de92a8b6048aa110 -Merge: 858d6fa 85875e9 -Author: geekpi -Date: Sat Dec 20 11:56:00 2014 +0800 - - Merge pull request #2126 from geekpi/master - - translating - -commit 85875e9a38476de3ac755e73eddd231e4edbde61 -Author: zhengsihua -Date: Sat Dec 20 11:55:04 2014 +0800 - - translating - -commit 858d6fa45697b68ca12f84bf9b64d0bba87495c3 -Merge: aa0cd7f 690324d -Author: geekpi -Date: Fri Dec 19 22:47:51 2014 +0800 - - Merge pull request #2125 from geekpi/master - - translated - -commit 690324d4a9f5c52a76c680f018355e675100db8e -Author: zhengsihua -Date: Fri Dec 19 22:40:23 2014 +0800 - - translated - -commit aa0cd7f3f3ee048907d8222ae31536c51c52034f -Author: wxy -Date: Fri Dec 19 00:06:42 2014 +0800 - - PUB:20141024 Amazing 25 Linux Performance Monitoring Tools - - @andyxue - -commit f9bcb73ff1e52a45d04e9638fb32568670de21ca -Author: wxy -Date: Thu Dec 18 22:18:20 2014 +0800 - - PUB:20141013 Migrating LVM Partitions to New Logical Volume (Drive)--Part VI - - @GOLinux - -commit ca0e7cb31b530d525940b4722ee0ff1db516fa3d -Author: geekpi -Date: Fri Dec 19 21:19:33 2014 +0800 - - Update 20141219 Creating your First App on Linux with Python and Flask.md - -commit e760c6d12101932f01eca6efdeed0e15f2052bca -Author: geekpi -Date: Fri Dec 19 21:19:08 2014 +0800 - - Update 20141219 Creating your First App on Linux with Python and Flask.md - -commit b317ee66fac0ab178713efd7149db0b15e822631 -Merge: 08115c8 5ea8db6 -Author: geekpi -Date: Fri Dec 19 20:56:01 2014 +0800 - - Merge pull request #2124 from SPccman/patch-12 - - spccman................ - -commit bd6db6f132fb71e8098d004fcf7ad9459bb684dd -Author: ZTinoZ -Date: Fri Dec 19 17:57:23 2014 +0800 - - Translating by ZTinoZ - -commit 5ea8db6566c1850a460c9daa9545cd115760ffd6 -Author: DoubleC <450760206@qq.com> -Date: Fri Dec 19 17:35:40 2014 +0800 - - spccman................ - - 申领文章 - -commit 08115c855421316e5438b65ff669da2d5e8f0144 -Author: DeadFire -Date: Fri Dec 19 16:08:49 2014 +0800 - - 20141219-6 选题 - -commit 08a34699d6766a95723ba1759bd7fa0cf7d85ca7 -Author: DeadFire -Date: Fri Dec 19 15:10:59 2014 +0800 - - 20141219-5 选题 - -commit 5f9f46f87b62788df0a73a49dcaf2cbd5f485cd5 -Author: DeadFire -Date: Fri Dec 19 11:30:25 2014 +0800 - - 20141219-4 选题 - -commit 6703a353ee83ed56572d3bc8a715be07d2630999 -Author: DeadFire -Date: Fri Dec 19 11:18:34 2014 +0800 - - 20141219-3 选题 - -commit 3460e6ed4fd6e8c2122b17d6050e22e880216945 -Author: DeadFire -Date: Fri Dec 19 10:50:38 2014 +0800 - - 20141219-2 选题 - -commit 69f68536769e9d6b4d4e20a8fdefb33891a4fd65 -Author: DeadFire -Date: Fri Dec 19 10:22:36 2014 +0800 - - 20141219-1 选题 - -commit 4167376769e5c8d5ed17b40d30b2f85c0e3c0612 -Merge: 3b87ab6 16bfd25 -Author: joeren -Date: Fri Dec 19 08:42:20 2014 +0800 - - Merge pull request #13 from LCTT/master - - Update Repository - -commit 16bfd25d308fefb34bb7beb5e6e1e972485e7a6b -Merge: 74d6ae5 274277a -Author: geekpi -Date: Thu Dec 18 22:24:24 2014 +0800 - - Merge pull request #2123 from geekpi/master - - translated - -commit 274277a29fb127cf874ea8b74cf397003ea854aa -Author: zhengsihua -Date: Thu Dec 18 22:18:04 2014 +0800 - - translated - -commit 74d6ae5c9bfcbbbe41aaf07a60a870013a13c711 -Merge: 2c49bae ca2a561 -Author: geekpi -Date: Thu Dec 18 22:17:07 2014 +0800 - - Merge pull request #2122 from geekpi/master - - translating - -commit ca2a561ba171f76e154fffcc7a2beccba02e77c2 -Author: zhengsihua -Date: Thu Dec 18 22:15:06 2014 +0800 - - translating - -commit fc073c3cfc82831a49a6cbde550d5aeff4857f4c -Author: ZTinoZ -Date: Thu Dec 18 20:56:35 2014 +0800 - - Translating by ZTinoZ - -commit 2c49baeed82a4d0199f7cd8570a2110504635c70 -Author: wxy -Date: Thu Dec 18 00:34:55 2014 +0800 - - PUB:20141112 How to Remove Music Players from Ubuntu Sound Menu - - @disylee - -commit 5cacaf750349e67deb475da54c3e8d68048c068d -Author: wxy -Date: Thu Dec 18 00:08:35 2014 +0800 - - PUB:20140818 Why Your Company Needs To Write More Open Source Software - - @barney-ro - -commit 6dff097ea10967752d78ff9c87184cfb6810cd4b -Author: wxy -Date: Wed Dec 17 23:42:19 2014 +0800 - - PUB:05 - The history of Android - - @alim0x - -commit 86dbb67ef725febcf36c3dae16978b7b5643ccc4 -Author: wxy -Date: Wed Dec 17 23:31:40 2014 +0800 - - PUB:20141027 How to encrypt files and directories with eCryptFS on Linux - - @GOLinux - -commit 2f4ad746369b6334f94072008dea3dd07ae76da1 -Author: wxy -Date: Wed Dec 17 23:19:04 2014 +0800 - - PUB:20141021 Configuring layer-two peer-to-peer VPN using n2n - - @GOLinux - -commit 2537751954bd04f3fa4720a893113d9f4d07bd54 -Merge: b721315 a55029a -Author: Xingyu.Wang -Date: Wed Dec 17 22:11:27 2014 +0800 - - Merge pull request #2121 from johnhoow/master - - 翻译完成 - -commit b721315edf7ebc7654082f848422505c447c7c69 -Merge: 53e5d19 45f20f6 -Author: Xingyu.Wang -Date: Wed Dec 17 22:11:10 2014 +0800 - - Merge pull request #2120 from alim0x/master - - [translated]10 - The history of Android.md - -commit 03202e2dfdbe5a3c988a5e96573619e34446539d -Author: ZTinoZ -Date: Wed Dec 17 20:54:13 2014 +0800 - - Translating by ZTinoZ - -commit 53e5d1942d52ff0db67f5c334c5dc07f37090c6b -Author: DeadFire -Date: Wed Dec 17 16:27:13 2014 +0800 - - 20141217-2 选题 - -commit a55029a9f62ccc457bbaf6d6a0fed64ce1ba2ad7 -Author: johnhoow -Date: Wed Dec 17 15:12:20 2014 +0800 - - modify - -commit 36c48afc1d55cd0c604c9f4fe3f13d9095eedf8c -Author: johnhoow -Date: Wed Dec 17 15:10:20 2014 +0800 - - modify - -commit eded5eee9b6c3d8202a8c4812e546c510537bf9b -Author: johnhoow -Date: Wed Dec 17 15:04:57 2014 +0800 - - translated - -commit 45f20f6a52bae3c06c5186c3bd6f3d544eb8a206 -Author: alim0x -Date: Wed Dec 17 13:11:36 2014 +0800 - - [translated]10 - The history of Android.md - -commit 3b87ab6c50e0a9e4c00f022891a99f00f653bb91 -Merge: fda2d2a 24eaa2d -Author: joeren -Date: Wed Dec 17 11:55:11 2014 +0800 - - Merge pull request #12 from LCTT/master - - Update Repository - -commit 24eaa2d4de95e363da5746b72f5db05d7643d8fa -Author: DeadFire -Date: Wed Dec 17 10:57:09 2014 +0800 - - 20141217-1 选题 - -commit 48b58798712c2e2ed4974a2d429e4b2486c2da5b -Merge: f66dd60 eeb84d9 -Author: Xingyu.Wang -Date: Wed Dec 17 10:07:48 2014 +0800 - - Merge pull request #2119 from yupmoon/master - - translating Open source all over the world.md - -commit eeb84d9941ff75f93487f187f64477bc6c0f1e43 -Author: yupmoon -Date: Wed Dec 17 09:55:28 2014 +0800 - - yupmoon translating... - -commit ffd2d2188af2f0b451f538deba5506dd49a701b1 -Merge: 0a65b81 f66dd60 -Author: yupmoon -Date: Wed Dec 17 09:48:38 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit f66dd6081854bd04eb471cff9bb4f86b04bf2fd6 -Author: wxy -Date: Wed Dec 17 00:12:04 2014 +0800 - - PUB:20141017 How to check hard disk health on Linux using smartmontools - - @KayGuoWhu - -commit fd54eb2202aea934efbc05665087ae9394e60c42 -Author: wxy -Date: Tue Dec 16 23:55:43 2014 +0800 - - PUB:20141204 Readers' Choice Awards 2014--Linux Journal - - @yupmoon 翻译的不错! - -commit 4175ca0b64dbb28ba6f5e93a1f0c94c57a5de29b -Author: wxy -Date: Mon Dec 15 16:29:14 2014 +0800 - - PUB:20141211 Linux Kernel 3.18 Released, This Is What' s New - - @geekpi - -commit f627136220594de83b9c904ab7b2db14aaf4a4cc -Author: wxy -Date: Mon Dec 15 16:18:04 2014 +0800 - - PUB:20141013 Manage Multiple Logical Volume Management Disks using Striping I O--Part V - - @GOLinux - -commit e3e23caf5c1494f2af793919bee6a72f19c0cb2e -Merge: 67339eb bec12e6 -Author: Xingyu.Wang -Date: Tue Dec 16 23:19:36 2014 +0800 - - Merge pull request #2118 from SPccman/master - - How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS & How to create a custom backup plan for Debian with backupninja - -commit 67339eb6dd63394c2a115eb1e8deeb64fc50687a -Merge: d1eb322 ef10044 -Author: Xingyu.Wang -Date: Tue Dec 16 23:18:10 2014 +0800 - - Merge pull request #2117 from yupmoon/master - - choice awards ...translated - -commit d1eb3228fbe143ab7b9947224b37984cedbc9110 -Merge: 103c336 34ea47e -Author: Xingyu.Wang -Date: Tue Dec 16 23:17:00 2014 +0800 - - Merge pull request #2116 from ZTinoZ/master - - Translating by ZTinoZ - -commit bec12e6fcc5a86556e6f36aee65cdff0132f32d4 -Author: DoubleC <450760206@qq.com> -Date: Tue Dec 16 20:01:34 2014 +0800 - - 翻译完成 - -commit 246b2f862eb854f5c93f7b691cab9c73f90b8652 -Author: DoubleC <450760206@qq.com> -Date: Tue Dec 16 20:00:45 2014 +0800 - - 翻译完成 - - 这篇文章,之前应该还有一篇,本来要一起发上来的,群里面催了一下,就算了,这篇先发 - -commit 97fd96a1eff948f3a09b9502b5555dcc0e9c3172 -Author: DoubleC <450760206@qq.com> -Date: Tue Dec 16 19:57:43 2014 +0800 - - delete source file - - 删除原文 - -commit d64adef0e96fc9b0f19e602cfd26fc1d4d58eec9 -Author: DoubleC <450760206@qq.com> -Date: Tue Dec 16 19:57:08 2014 +0800 - - delete source file - -commit 34a4de8535d2eee6da877a96653898b380cc44cc -Merge: 1e95d12 103c336 -Author: DoubleC <450760206@qq.com> -Date: Tue Dec 16 19:47:22 2014 +0800 - - Merge pull request #11 from LCTT/master - - update - -commit 0a65b817548bd4471d0c01eb820199255a21dda9 -Merge: ef10044 103c336 -Author: yupmoon -Date: Tue Dec 16 16:56:25 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit ef10044316b5cc97a62d3ab0d9548165e03c532a -Author: yupmoon -Date: Tue Dec 16 16:52:31 2014 +0800 - - choice awards ...translated - -commit 34ea47e2c974dfa47167b2b815a1d2bf30aae55b -Author: ZTinoZ -Date: Tue Dec 16 09:32:20 2014 +0800 - - Translating by ZTinoZ - -commit 98d969797ea7d09a3355d3e9348494cedf6f8944 -Merge: fb7ea0e 103c336 -Author: ZhouJ-sh <32321321@qq.com> -Date: Tue Dec 16 09:29:53 2014 +0800 - - Merge pull request #1 from LCTT/master - - Merge from base - -commit 0f79c28187de7c512f059d2d89515175fb0b1ee2 -Merge: 174a778 103c336 -Author: ZTinoZ -Date: Tue Dec 16 09:27:57 2014 +0800 - - Merge pull request #2 from LCTT/master - - Update the repositories - -commit 103c336cb4e6994854a97ebbe3729abf92cbea2c -Merge: fc24411 fda2d2a -Author: joeren -Date: Tue Dec 16 08:44:59 2014 +0800 - - Merge pull request #2115 from GOLinux/master - - [Translated] 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md - -commit fda2d2ad7fd05262b6a4d1a63d7c54842bf6dd10 -Author: GOLinux -Date: Tue Dec 16 08:42:14 2014 +0800 - - [Translated] 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md - -commit fc2441129ac13bc6b929a10fdd2155910a94b680 -Merge: b435d45 d9ae8c1 -Author: joeren -Date: Tue Dec 16 08:14:55 2014 +0800 - - Merge pull request #2114 from GOLinux/master - - [Translating] 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md - -commit d9ae8c1739e941fd0ffa83fa136ab3e3d50ff7f5 -Author: joeren -Date: Tue Dec 16 08:14:24 2014 +0800 - - Update 20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md - -commit 9490898a5e8430ad11dca7d7307fcf52e9345199 -Merge: 8d9777a b435d45 -Author: joeren -Date: Tue Dec 16 08:13:17 2014 +0800 - - Merge pull request #11 from LCTT/master - - Update Repository - -commit b435d45abcc48326659ca53d3be3b2fe5b499412 -Merge: 5f03ba9 174a778 -Author: joeren -Date: Tue Dec 16 08:12:45 2014 +0800 - - Merge pull request #2113 from ZTinoZ/master - - Finish the translation by ZTinoZ - -commit 174a778200dd9ddd22e964ad016096f054fde705 -Author: ZTinoZ -Date: Mon Dec 15 20:50:20 2014 +0800 - - Finish the translation by ZTinoZ - -commit 8d9777a37eedabb0a6afd46125fffb3fd1f63a88 -Merge: 193c789 5f03ba9 -Author: joeren -Date: Mon Dec 15 09:43:08 2014 +0800 - - Merge pull request #10 from LCTT/master - - Update Repository - -commit 5f03ba9eaaef6c51b42cb22cd72f606709c6bf80 -Author: wxy -Date: Sun Dec 14 19:24:23 2014 +0800 - - PUB:20141009 How to set up RAID 10 for high performance and fault tolerant disk I or O on Linux - - @KayGuoWhu - -commit 50ea541534d677c0c0508b99d80b68fc3227a216 -Merge: 45b2034 553b97a -Author: geekpi -Date: Sun Dec 14 14:24:29 2014 +0800 - - Merge pull request #2112 from geekpi/master - - [Translated] What is a good free control panel for VPS.md - -commit 553b97ac39432d37ddf721607d6a2d726df4e61b -Author: zhengsihua -Date: Sun Dec 14 14:18:08 2014 +0800 - - [Translated] What is a good free control panel for VPS.md - -commit 45b203456d03ddba9c22de083139cd0176d253ac -Merge: 9d595b9 3de7f54 -Author: geekpi -Date: Sun Dec 14 13:16:43 2014 +0800 - - Merge pull request #2111 from geekpi/master - - [Translating] What is a good free control panel for VPS.md - -commit 3de7f543e2d4f3284e16fae6f137956811648be2 -Author: zhengsihua -Date: Sun Dec 14 13:15:40 2014 +0800 - - [Translating] What is a good free control panel for VPS.md - -commit 9d595b919ce63edaf0cb51fcefe5e1211ce1a6a2 -Merge: 961a502 3179279 -Author: geekpi -Date: Sun Dec 14 13:07:42 2014 +0800 - - Merge pull request #2110 from runningwater/master - - 【翻译中 by runningwater】 20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X - -commit 317927958edbe926639647895d400240254ded0b -Author: runningwater -Date: Sat Dec 13 20:02:23 2014 +0800 - - 翻译中 by runningwater - -commit 961a502a4aeac47bf71b8b00bb9b2e7e4431e0de -Merge: 2522c4a 7aeeb75 -Author: geekpi -Date: Sat Dec 13 13:02:49 2014 +0800 - - Merge pull request #2109 from geekpi/master - - [Translated] How to use Evernote from the command line on Linux.md - -commit 7aeeb75205813f2e8739ef4c2e0e9662b425aa94 -Author: zhengsihua -Date: Sat Dec 13 13:01:07 2014 +0800 - - [Translated] How to use Evernote from the command line on Linux.md - -commit 2522c4af102f69d5a9afd75321c83d9145f03d49 -Merge: 47f3bba 473785a -Author: geekpi -Date: Sat Dec 13 12:10:37 2014 +0800 - - Merge pull request #2108 from geekpi/master - - [Translating] How to use Evernote from the command line on Linux - -commit 473785ad1920b82d97a2716dea5287dc72962991 -Author: zhengsihua -Date: Sat Dec 13 12:01:57 2014 +0800 - - [Translating] How to use Evernote from the command line on Linux - -commit 47f3bba0d769d3217a5cd47f6f5c996668d66182 -Merge: 881d47a 434de3b -Author: Xingyu.Wang -Date: Sat Dec 13 01:27:13 2014 +0800 - - Merge pull request #2107 from geekpi/master - - [Translated] Linux Kernel 3.18 Released, This Is What’s New - -commit 434de3b52a29302875c41912bf7487baaadb2dc5 -Author: zhengsihua -Date: Fri Dec 12 22:12:44 2014 +0800 - - [Translated] Linux Kernel 3.18 Released, This Is What’s New - -commit 881d47afdb1fb4669c3913593ab5981777425136 -Merge: d902163 b875372 -Author: geekpi -Date: Fri Dec 12 21:38:05 2014 +0800 - - Merge pull request #2106 from geekpi/master - - [Translating] Linux Kernel 3.18 Released, This Is What’s New - -commit b875372fe0c1dcb282883738d820f2a69ac06a66 -Author: zhengsihua -Date: Fri Dec 12 21:18:12 2014 +0800 - - [Translating] Linux Kernel 3.18 Released, This Is What’s New - -commit 3a033231a90ce6d076a1b80a0d3657aa0aa76cbb -Author: ideas4u -Date: Fri Dec 12 16:21:39 2014 +0800 - - Create 20141211 How to use matplotlib for scientific plotting on Linux - -commit d902163264553da73b36788bc7d405974e0f065c -Author: carolinewuyan <309866211@qq.com> -Date: Fri Dec 12 11:03:58 2014 +0800 - - 已发布 - -commit 489d3b5224247f8373ae4beffaf02bb8e12d007d -Author: carolinewuyan <309866211@qq.com> -Date: Fri Dec 12 11:01:08 2014 +0800 - - 已校对 - -commit 193c78927bb15e7a16771961f3d7dfae6eb1db79 -Merge: 99bb0fc 48dd231 -Author: joeren -Date: Fri Dec 12 10:27:18 2014 +0800 - - Merge pull request #9 from LCTT/master - - Update Repository - -commit 48dd231c3d68b0a7de27ab2b15e9356210339550 -Merge: 46ac8d6 99bb0fc -Author: joeren -Date: Fri Dec 12 10:25:56 2014 +0800 - - Merge pull request #2100 from GOLinux/master - - Delete duplicated files - -commit 99bb0fc98f8dd0ae540fed760c2cccfbfefa4703 -Author: GOLinux -Date: Fri Dec 12 10:23:21 2014 +0800 - - Delete duplicated files - -commit 46ac8d67cdbfacd5dd4c3c38a4c3071642ceebc7 -Merge: 15a8c87 ddaf9d4 -Author: joeren -Date: Fri Dec 12 10:19:47 2014 +0800 - - Merge pull request #2099 from GOLinux/master - - 两篇重复文章,已有人领,请勿重复申领。 - -commit ddaf9d4c1ee0e5061e0e5a2705c1f1bf5b9f8dc0 -Author: joeren -Date: Fri Dec 12 10:18:37 2014 +0800 - - Update 20141205 How to use matplotlib for scientific plotting on Linux.md - -commit 323481080d169c6d6cec55e01e2f7247300136e1 -Author: joeren -Date: Fri Dec 12 10:17:14 2014 +0800 - - Update 20141211 How to configure a syslog server with rsyslog on Linux.md - -commit af0a365de2f7b61f355595f2dabb03e4473941bd -Merge: 9ff2c39 15a8c87 -Author: joeren -Date: Fri Dec 12 09:58:21 2014 +0800 - - Merge pull request #8 from LCTT/master - - Update Repository - -commit 15a8c875469a8655e5fa697859a62db61d2e845e -Merge: ef92116 c6883a4 -Author: joeren -Date: Fri Dec 12 09:57:48 2014 +0800 - - Merge pull request #2098 from Stevearzh/master - - Translating by Stevearzh - -commit ef921160cbbf66562f5852f571c346ff2c75a990 -Merge: 47eef26 e7c71dd -Author: joeren -Date: Fri Dec 12 09:57:40 2014 +0800 - - Merge pull request #2097 from ideas4u/patch-1 - - Update 20141211 How to use matplotlib for scientific plotting on Linux.m... - -commit c6883a43a02b6614078d33b3573e708b922abdfd -Author: Stevearzh -Date: Thu Dec 11 23:27:34 2014 +0800 - - Translating by Stevearzh - -commit 47eef26efebb6dd56ef94358838b9d3e978ef4ed -Merge: 888b79d f0baa45 -Author: geekpi -Date: Thu Dec 11 21:37:10 2014 +0800 - - Merge pull request #2094 from Vic020/master - - 忘记推送了~ - -commit 888b79d229ea448e532905ffc5608c313dcc196a -Merge: 7dcf341 a8dd5da -Author: geekpi -Date: Thu Dec 11 21:36:27 2014 +0800 - - Merge pull request #2095 from SPccman/patch-10 - - 文章重复 - -commit 7dcf341999e8e94af6ab9f4c342d48b68501c738 -Merge: 3ad2ea5 0bceb3d -Author: geekpi -Date: Thu Dec 11 21:35:56 2014 +0800 - - Merge pull request #2096 from SPccman/patch-11 - - translating - -commit d98dd820a1e7926e289e643df11cb356adcb01d2 -Author: ZTinoZ -Date: Thu Dec 11 21:01:27 2014 +0800 - - Translating by ZTinoZ - -commit 3ad2ea5e505e6cfbba527ebb558461be3acff51e -Author: carolinewuyan <309866211@qq.com> -Date: Thu Dec 11 20:57:06 2014 +0800 - - 已发布 - -commit f17bb612a0be28921313a4a63e9dda67134138fc -Author: carolinewuyan <309866211@qq.com> -Date: Thu Dec 11 20:52:46 2014 +0800 - - 已校对 - -commit e7c71dd8ef8839f6ecea6a0bbdea01023828e06d -Author: ideas4u -Date: Thu Dec 11 17:59:17 2014 +0800 - - Update 20141211 How to use matplotlib for scientific plotting on Linux.md - -commit 762cfef575fb3bb58459145c896ece565b28432b -Author: DeadFire -Date: Thu Dec 11 17:43:58 2014 +0800 - - 20141211-6 选题 - -commit 0bceb3dac69ce61188e0e5c26b59646d0c5fd580 -Author: DoubleC <450760206@qq.com> -Date: Thu Dec 11 17:39:39 2014 +0800 - - translating - - apply artical - -commit a8dd5da95d05adf2c5be221e0d90d8a26274c919 -Author: DoubleC <450760206@qq.com> -Date: Thu Dec 11 17:33:48 2014 +0800 - - 文章重复 - - 文章重复,我之前领了,还没翻完。 - -commit 123fc31871aba93608d7b7e4c98d5cabdb8fdbd5 -Author: DeadFire -Date: Thu Dec 11 17:28:44 2014 +0800 - - 20141211-5 选题 - -commit dd2676ef2beadca89353d654e1261aeaf167b064 -Author: DeadFire -Date: Thu Dec 11 17:14:19 2014 +0800 - - 20141211-4 选题 - -commit 8db52bfc8a70111f084f5d490b5d19cff70fd914 -Author: DeadFire -Date: Thu Dec 11 17:03:50 2014 +0800 - - 20141211-3 选题 - -commit ffafaea7f9a912f16416270c72b7cb664965362e -Author: DeadFire -Date: Thu Dec 11 16:52:08 2014 +0800 - - 20141211-2 选题 - -commit 073e360542163476b08c856c0b5dad2e320ac8b7 -Author: DeadFire -Date: Thu Dec 11 16:45:37 2014 +0800 - - 20141211-1 选题 - -commit f0baa4539e8d9ce0de8f264e003da4a18c45b63b -Author: Vic___ -Date: Thu Dec 11 15:12:51 2014 +0800 - - Moved - -commit d927d84e12f2841d10c6369ca94cfb91f3fcd330 -Author: Vic___ -Date: Thu Dec 11 15:12:16 2014 +0800 - - Translated - -commit 4bd2187c942b3d09458301f2972064ea4b4c7b9f -Merge: 2102c12 9ff2c39 -Author: joeren -Date: Thu Dec 11 09:27:16 2014 +0800 - - Merge pull request #2093 from GOLinux/master - - [Translated] 20141210 How to configure rsyslog client for remote logging on CentOS.md - -commit 9ff2c39e16a4771c89c12d17c45de652aefeb1c8 -Author: GOLinux -Date: Thu Dec 11 09:25:54 2014 +0800 - - [Translated] 20141210 How to configure rsyslog client for remote logging on CentOS.md - -commit 2102c1219cf1679f98b5a03bac9651502426bb82 -Merge: 609ec2d 128de94 -Author: joeren -Date: Thu Dec 11 08:43:52 2014 +0800 - - Merge pull request #2092 from GOLinux/master - - [Translating] 20141210 How to configure rsyslog client for remote logging on CentOS.md - -commit 128de94826ac7b5cd05da48f9ca6708e7bf33515 -Author: joeren -Date: Thu Dec 11 08:43:05 2014 +0800 - - Update 20141210 How to configure rsyslog client for remote logging on CentOS.md - -commit f64b0123db9dd57c718661499ef0093c8ab8b8ef -Merge: 27d61e5 609ec2d -Author: joeren -Date: Thu Dec 11 08:42:23 2014 +0800 - - Merge pull request #7 from LCTT/master - - Update Repository - -commit 609ec2df0faac26a31038574ae04aad31a01e9e5 -Merge: 281fa43 e2dd617 -Author: Xingyu.Wang -Date: Wed Dec 10 21:13:21 2014 +0800 - - Merge pull request #2091 from su-kaiyao/master - - su-kaiyao translated 20141205 10 free Commands to Check Memory Usage in Linux.md - -commit 281fa431422f271d63eb66a212b4f0434d44f127 -Merge: 0c763de 4bf1011 -Author: Xingyu.Wang -Date: Wed Dec 10 21:12:37 2014 +0800 - - Merge pull request #2090 from yupmoon/master - - yupmoon translating 20141204 Readers' Choice Awards 2014--Linux Journal - -commit e2dd61786bc8237e8258434a73882576ffabb903 -Author: su-kaiyao <1250471161@qq.com> -Date: Wed Dec 10 20:50:34 2014 +0800 - - su-kaiyao translated - -commit 4f9077ac9ee9dd7b7d80bbb646170854d55291ca -Author: ZTinoZ -Date: Wed Dec 10 20:07:20 2014 +0800 - - Translating by ZTinoZ - -commit 0c763de017fb1843829ba82a967f9fdbb879bf6e -Author: DeadFire -Date: Wed Dec 10 16:16:48 2014 +0800 - - 20141210-1 选题 - -commit 4bf101114ef54100a1a0e15b6449bbcc022a3bda -Author: yupmoon -Date: Wed Dec 10 11:15:05 2014 +0800 - - yupmoon translating - -commit 5cdb8d3f4e1ada39ab467a39f12271e0fb7d37b2 -Merge: e8816d2 27d61e5 -Author: joeren -Date: Wed Dec 10 10:06:30 2014 +0800 - - Merge pull request #2089 from GOLinux/master - - [Translated] 20141208 Nathive--A libre software image editor.md - -commit 27d61e5795d1ba68c8dfcfab28711c9b414f3f79 -Author: GOLinux -Date: Wed Dec 10 10:03:43 2014 +0800 - - [Translated] Two - -commit e8816d2a067e2aa40fcf04053cbf43385f1c9341 -Merge: de9a981 dc4b334 -Author: joeren -Date: Wed Dec 10 09:08:51 2014 +0800 - - Merge pull request #2088 from GOLinux/master - - [Translating] 20141208 Getting Started With Ubuntu 14.04 (PDF Guide).md - -commit dc4b3340b2f9efeee2a42d9ecc9bfb7458c6cb8c -Author: joeren -Date: Wed Dec 10 09:08:32 2014 +0800 - - Update 20141208 Getting Started With Ubuntu 14.04 (PDF Guide).md - -commit de9a981f8ab7fc3f449b374c34418d49d8f6997b -Merge: b36c5c7 b4133cf -Author: joeren -Date: Wed Dec 10 09:07:51 2014 +0800 - - Merge pull request #2087 from GOLinux/master - - [Translating] 20141208 Nathive--A libre software image editor.md - -commit b4133cfddc22f8e3cb91389a2340432ffca7e98a -Author: joeren -Date: Wed Dec 10 09:07:31 2014 +0800 - - Update 20141208 Nathive--A libre software image editor.md - -commit b36c5c7f68938c148bea8f9b73360939f7c48203 -Merge: 37f3fd2 5389dfc -Author: joeren -Date: Wed Dec 10 09:06:30 2014 +0800 - - Merge pull request #2086 from GOLinux/master - - [Translated] 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md - -commit 5389dfc5aad3a6bb9d0ab00b15145ad818f77f23 -Author: GOLinux -Date: Wed Dec 10 09:04:38 2014 +0800 - - [Translated] 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md - -commit 37f3fd2e711e25ca0774a6b9843f3a322670a1dd -Merge: 0934db2 0559d98 -Author: joeren -Date: Wed Dec 10 08:38:23 2014 +0800 - - Merge pull request #2085 from GOLinux/master - - [Translating] 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md - -commit 0559d9835646fd7e9c41b6c3ad68468428d17487 -Author: joeren -Date: Wed Dec 10 08:37:42 2014 +0800 - - Update 20141208 Linux FAQs with Answers--How to crop an image from the command line on Linux.md - -commit be9a8ac489d7fecd08f4bed91c9b2e6d1ed43c4f -Merge: d099251 0934db2 -Author: joeren -Date: Wed Dec 10 08:36:48 2014 +0800 - - Merge pull request #6 from LCTT/master - - Update Repository - -commit 0934db2eb8543ead4adc215d39e254f84343dc42 -Merge: 723d9b0 c55bac0 -Author: joeren -Date: Wed Dec 10 08:35:43 2014 +0800 - - Merge pull request #2084 from yupmoon/master - - translated - -commit 723d9b0ea1fcde8a9b8a78d1e861e36b3ffdd448 -Merge: 90d94f8 ab0ed58 -Author: joeren -Date: Wed Dec 10 08:35:32 2014 +0800 - - Merge pull request #2083 from Stevearzh/master - - [Translated by Stevearzh]Five Magnificent Linux Music Streaming Clients - -commit c55bac0729ea6db74e7d867275638f2e6351352b -Merge: 48d8eb3 90d94f8 -Author: yupmoon -Date: Tue Dec 9 22:58:00 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit 48d8eb34244fbc3b4cc0ca9e2de720e66eb51775 -Author: yupmoon -Date: Tue Dec 9 22:52:30 2014 +0800 - - translated - -commit 90d94f8b22daac8025ddad2308adae89c258d207 -Merge: fb7ea0e e04ad3b -Author: Xingyu.Wang -Date: Tue Dec 9 22:45:39 2014 +0800 - - Merge pull request #2082 from yupmoon/master - - yupmoon translating - 下回请修改 PR 的标题,带上文件名。 - -commit ab0ed58ba8c9b84023ef0eb508cc5bef3c9263e7 -Author: Stevearzh -Date: Tue Dec 9 22:10:32 2014 +0800 - - Translated by Stevearzh - -commit 521ad3dc3dec085e6b52d893b87b995523c312a8 -Author: Stevearzh -Date: Tue Dec 9 22:07:02 2014 +0800 - - Translated by Stevearzh - -commit e04ad3b1081977c7a32ee10ef949ed620e0df19e -Author: yupmoon -Date: Tue Dec 9 18:07:09 2014 +0800 - - yupmoon translating - -commit 4843057c838360371f90af236009f568b5b0b3a7 -Author: ZTinoZ -Date: Tue Dec 9 12:00:26 2014 +0800 - - Translating by ZTinoZ - -commit d099251ca2c9a3784044e9cd54c8c80ead061592 -Merge: 6e5d25a fb7ea0e -Author: joeren -Date: Tue Dec 9 11:58:55 2014 +0800 - - Merge pull request #5 from LCTT/master - - Update Repository - -commit fb7ea0e8367b7f17758d468c013b53acceb56530 -Merge: 907ab34 aebf340 -Author: Xingyu.Wang -Date: Tue Dec 9 10:04:29 2014 +0800 - - Merge pull request #2081 from coloka/master - - 【translating】How to configure a syslog server with rsyslog on Linux - -commit 907ab34aecda3f52bf0dc63ba9ab517b3928f337 -Author: wxy -Date: Tue Dec 9 00:16:58 2014 +0800 - - PUB:20141004 Practical Lessons in Peer Code Review - - @johnhoow - -commit dcd75324b12cf1a1c3d73ae99463e35f9d4e01b4 -Author: wxy -Date: Mon Dec 8 23:41:49 2014 +0800 - - PUB:20141030 How to run SQL queries against Apache log files on Linux - - @ThomazL - -commit aebf3406d683699672b214e45244a54613b8c577 -Author: coloka -Date: Mon Dec 8 23:13:05 2014 +0800 - - 【translating】How to configure a syslog server with rsyslog on Linux - -commit c12080cf74c4d9d4061497de60adf9ae37e8173c -Merge: 6919ef0 091fef5 -Author: Xingyu.Wang -Date: Mon Dec 8 21:37:41 2014 +0800 - - Merge pull request #2080 from Vic020/patch-23 - - 抢地主 - -commit 091fef52aa3b9da7055c5ccf2e15eb8b49aee6e7 -Author: Vic___ -Date: Mon Dec 8 18:38:06 2014 +0800 - - 抢地主 - -commit 88a89be1346aee4188575b1c9fff28063c5ca8be -Author: ZTinoZ -Date: Mon Dec 8 18:00:37 2014 +0800 - - Translating by ZTinoZ - -commit 6919ef07d64e7be757be0fb49c7e39b10b980770 -Merge: 8af28b6 98c3c32 -Author: Xingyu.Wang -Date: Mon Dec 8 16:22:52 2014 +0800 - - Merge pull request #2079 from su-kaiyao/master - - su-kaiyao translating 20141205 10 free Commands to Check Memory Usage in Linux.md - -commit 8af28b62a8dbc95328cd8bebb0652e3dab0d2bf3 -Merge: 1903cc9 36f58e0 -Author: Xingyu.Wang -Date: Mon Dec 8 16:20:55 2014 +0800 - - Merge pull request #2078 from disylee/patch-1 - - Update 20141203 Docker--Present and Future.md - -commit 1903cc9b554b5726305861934bcb6698e34a7319 -Author: DeadFire -Date: Mon Dec 8 16:19:15 2014 +0800 - - 20141208-3 选题 - -commit 177246828d3701a6d12c014511e6dd716d867df2 -Author: DeadFire -Date: Mon Dec 8 15:59:26 2014 +0800 - - 20141208-2 选题 - -commit 98c3c3272466e00d1bfbc0270253d4ae55803890 -Author: su-kaiyao <1250471161@qq.com> -Date: Mon Dec 8 14:30:03 2014 +0800 - - su-kaiyao translating - -commit 40573bc7c61f4100059f12bb81fda55f993cb148 -Author: DeadFire -Date: Mon Dec 8 11:23:55 2014 +0800 - - 20141208-1 选题 - -commit 36f58e07b0504b077e9d3a5e1f9e8068e4f65719 -Author: disylee -Date: Mon Dec 8 09:46:36 2014 +0800 - - Update 20141203 Docker--Present and Future.md - - by disylee - -commit 2205ebbc7fe5322d963787e03992e2be49f9b620 -Author: wxy -Date: Sun Dec 7 23:40:38 2014 +0800 - - PUB:20141125 Linux FAQs with Answers--How to fix ImportError--No module named scapy.all - - @GOLinux - -commit b6ea28565489965b2e92b233b48c2493f4200f12 -Author: wxy -Date: Sun Dec 7 23:12:29 2014 +0800 - - PUB:20140901 How to use on-screen virtual keyboard on Linux - - @forsil 翻译的不错。就是1、你没在文末写你的译者名称;2、请使用中文标点。 - -commit 6ed2cc9fdb86bfb357873c681462ea8bff035806 -Author: wxy -Date: Sun Dec 7 22:49:02 2014 +0800 - - PUB:20141204 Official Ubuntu 14.10 Utopic Unicorn T-Shirts Now Available to Buy - - @geekpi - -commit 20ccb6b22d9ec90faaaf62034e84222eab39ba81 -Author: wxy -Date: Sun Dec 7 22:34:51 2014 +0800 - - 移动到translated目录 - - @JonathanKang - -commit 00a6c2405e222a55587e420718b0efe314ff7224 -Merge: c34a215 7c27e83 -Author: Xingyu.Wang -Date: Sun Dec 7 22:31:12 2014 +0800 - - Merge pull request #2073 from coloka/master - - 【翻译完成】20141125 Four ways Linux is headed for no-downtime kernel patching.md - -commit c34a215975a8e54c4c6c06bb97f50e6bcbf75cb5 -Merge: a0607ee c8841c0 -Author: Xingyu.Wang -Date: Sun Dec 7 22:28:30 2014 +0800 - - Merge pull request #2072 from JonathanKang/master - - Translated - 忘记挪目录了吧?下次记得哦。 - -commit a0607eeaf892747caffa53ac5abe8bbe366470e7 -Merge: 0c4b458 e69d01e -Author: Xingyu.Wang -Date: Sun Dec 7 22:26:30 2014 +0800 - - Merge pull request #2071 from su-kaiyao/master - - su-kaiyao translated 20141204 How To Run Linux Programs From The Terminal In Background Mode.md - -commit 0c4b458f1a0d96464c28e1727f84bf7746e8461b -Merge: 6704154 9f0f5ca -Author: geekpi -Date: Sun Dec 7 17:45:10 2014 +0800 - - Merge pull request #2077 from geekpi/master - - translated - -commit 9f0f5ca11070cc542619aa74b74f834c5a6d9116 -Author: zhengsihua -Date: Sun Dec 7 17:43:57 2014 +0800 - - translated - -commit 6704154368db5ab5b27a6cdae92d34a6bd0dbf21 -Merge: d3bcd51 938c6fb -Author: geekpi -Date: Sun Dec 7 16:44:53 2014 +0800 - - Merge pull request #2076 from geekpi/master - - translating - -commit 938c6fb3946917506de88e748fc29c39163c9c5e -Author: zhengsihua -Date: Sun Dec 7 16:39:04 2014 +0800 - - translating - -commit c50cd50df5cc22acdeefba2d99df436231a809bb -Merge: d98d2b5 d3bcd51 -Author: zhengsihua -Date: Sun Dec 7 16:37:27 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject - -commit 7c27e836d8a4fdc105d443b5155e59d852ffea02 -Merge: ce00a0c d3bcd51 -Author: coloka -Date: Sun Dec 7 11:19:03 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject.git - -commit ce00a0c10ca71a593d87b8a6831445e7b92cc689 -Author: coloka -Date: Sun Dec 7 11:18:56 2014 +0800 - - 【翻译完成】20141125 Four ways Linux is headed for no-downtime kernel patching - -commit c8841c085193e40ed597c7afda073794d741d9de -Author: Jonathan Kang -Date: Sun Dec 7 10:04:48 2014 +0800 - - Translated - -commit e69d01e26072b178d650290137202300aa250769 -Author: su-kaiyao <1250471161@qq.com> -Date: Sat Dec 6 21:54:40 2014 +0800 - - su-kaiyao translated - -commit d3bcd518930881098af3e5abae645b5f54a24fa3 -Merge: 830e5a5 a5a76e1 -Author: Xingyu.Wang -Date: Sat Dec 6 17:10:48 2014 +0800 - - Merge pull request #2070 from su-kaiyao/master - - su-kaiyao translating 20141204 How To Run Linux Programs From The Terminal In Background Mode.md - -commit 830e5a546bd02b9a10a91845f5d6d6f0b86025ae -Merge: 5edd21d bae30fd -Author: Xingyu.Wang -Date: Sat Dec 6 17:10:16 2014 +0800 - - Merge pull request #2069 from SPccman/patch-9 - - Update 20141205 How to create a custom backup plan for Debian with backu... - -commit 5edd21de1f01fe5ad51c6fd4f54ea55e009bc256 -Merge: 1e7168c d8a14e7 -Author: Xingyu.Wang -Date: Sat Dec 6 17:09:54 2014 +0800 - - Merge pull request #2068 from Vic020/master - - Translated - -commit a5a76e14a91722e40d2b0f5d6cac9f3b5e56237a -Author: su-kaiyao <1250471161@qq.com> -Date: Sat Dec 6 12:50:01 2014 +0800 - - su-kaiyao translating - -commit bae30fddc09374099f4b7069383c93a612c0a4b4 -Author: DoubleC <450760206@qq.com> -Date: Sat Dec 6 10:26:22 2014 +0800 - - Update 20141205 How to create a custom backup plan for Debian with backupninja.md - - 申领文章 - -commit 1e7168c4d96f933be8e59265153307decf0ebd58 -Author: DeadFire -Date: Fri Dec 5 23:41:09 2014 +0800 - - 20141205-4 选题 - -commit d8a14e7733e99d7e58dcabdd735ce0dacdb726bd -Author: Vic___ -Date: Fri Dec 5 23:41:09 2014 +0800 - - moved - -commit 8160d35495568a58f2e3d757ac2ecbb5236374c6 -Author: Vic___ -Date: Fri Dec 5 23:39:50 2014 +0800 - - Translated - -commit d83bf7321b6577d9e5b9bf3e819c071ce0912ffd -Merge: c3983be 0c2eb30 -Author: geekpi -Date: Fri Dec 5 22:58:22 2014 +0800 - - Merge pull request #2067 from geekpi/master - - translated - -commit d98d2b5c2ffb579f4c87312eb71ae7b9bd24700d -Author: zhengsihua -Date: Fri Dec 5 22:57:29 2014 +0800 - - translated - -commit 0c2eb305197a2adeaa7d51313f3af2024b32ec10 -Author: geekpi -Date: Fri Dec 5 09:49:22 2014 -0500 - - translated - -commit c3983be1cd409a4589a204da1d5d5f982d694e08 -Merge: 65df647 f08ce4b -Author: geekpi -Date: Fri Dec 5 22:47:03 2014 +0800 - - Merge pull request #2066 from geekpi/master - - translating - -commit cc063420fe3107398e633f67f0182f2e925695a9 -Author: geekpi -Date: Fri Dec 5 09:45:42 2014 -0500 - - translated - -commit f08ce4b7c1e61240332ea29a0918c3f8d8295fb6 -Author: geekpi -Date: Fri Dec 5 09:40:03 2014 -0500 - - translating - -commit 65df647065b6983726e953f19d7b44add841d734 -Author: DeadFire -Date: Fri Dec 5 19:54:15 2014 +0800 - - 20141205-3 选题 - -commit e4f3b848e87ff381bd4f4721fd240a6ca3836aa2 -Author: DeadFire -Date: Fri Dec 5 19:40:19 2014 +0800 - - 20141205-2 选题 - -commit 5f026b35fd9dd9562339d08d70c02caddfe86f9a -Author: DeadFire -Date: Fri Dec 5 19:12:16 2014 +0800 - - 20141205-1 选题 - -commit 46a17ceea426244f45a1f279b5ba48e595eb8fa8 -Merge: 3ecb07a 6e5d25a -Author: joeren -Date: Fri Dec 5 10:49:23 2014 +0800 - - Merge pull request #2065 from GOLinux/master - - [Translated] 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md - -commit 6e5d25a194f525ef306cf6edf4bb1f9128249b4b -Author: GOLinux -Date: Fri Dec 5 10:47:29 2014 +0800 - - [Translated] 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md - -commit 3ecb07a280845f1d6dffa3467d62067b1e0d7dce -Merge: 12c7541 a5ca241 -Author: joeren -Date: Fri Dec 5 09:03:42 2014 +0800 - - Merge pull request #2064 from GOLinux/master - - [Translating] 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md - -commit a5ca2419279dfad8e36fc29bae5c41b9f415e241 -Author: joeren -Date: Fri Dec 5 09:02:52 2014 +0800 - - Update 20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md - -commit ba9cd41f27a5eccdf19e700d86a06e78a625fdd0 -Merge: f73e76a 12c7541 -Author: joeren -Date: Fri Dec 5 09:02:06 2014 +0800 - - Merge pull request #4 from LCTT/master - - Update Repository - -commit 12c754127f99b782bd98592843b4cdab0e0bbb0a -Merge: 3f9ed17 6d67300 -Author: bazz2 -Date: Fri Dec 5 08:12:28 2014 +0800 - - Merge pull request #2063 from bazz2/master - - [translating]Linux Namespaces - -commit 6d6730077c769d13c2cb6e02bb8355ac93500e75 -Author: bazz2 -Date: Fri Dec 5 08:06:33 2014 +0800 - - [translating]Linux Namespaces - -commit 3f9ed17fd20d5761d5b8af0be4289df99454ae1b -Author: wxy -Date: Thu Dec 4 23:52:45 2014 +0800 - - PUB:20141017 How to verify the authenticity and integrity of a downloaded file on Linux - - @geekpi - -commit 38909dfa5db9c08e5d272677bf62ee42e94b80d1 -Author: wxy -Date: Thu Dec 4 23:30:09 2014 +0800 - - PUB:20141021 How to create and use Python CGI scripts - - @su-kaiyao - -commit 04a0061a25307dfa23a3258081e34b7be45e92c6 -Merge: 552ad45 ad454b0 -Author: Xingyu.Wang -Date: Thu Dec 4 23:21:28 2014 +0800 - - Merge pull request #2060 from Vic020/patch-22 - - 抢地主,好吧,地主是你的了。。。 - -commit 552ad451f447e67da5671e1e1d7e7ba0d59ec619 -Merge: 2e30c5c 63cb892 -Author: geekpi -Date: Thu Dec 4 22:33:07 2014 +0800 - - Merge pull request #2062 from geekpi/master - - translated - -commit 63cb892335c04c296f0ed28237da2357122ea5a5 -Author: zhengsihua -Date: Thu Dec 4 22:31:50 2014 +0800 - - translated - -commit 2e30c5c5ecf56c33655e3cc7c3a9092b79bb6782 -Merge: 2bcf986 d78f215 -Author: geekpi -Date: Thu Dec 4 22:19:53 2014 +0800 - - Merge pull request #2061 from geekpi/master - - translating - -commit d78f21521459eb18ddd03d0be8abdea912d030b4 -Author: zhengsihua -Date: Thu Dec 4 22:18:48 2014 +0800 - - translating - -commit ad454b0a5d6d1a1eba170d9ad187baa3499618f8 -Author: Vic___ -Date: Thu Dec 4 20:33:22 2014 +0800 - - 抢地主 - -commit 2bcf9868369fb5fa3bd7956429203513afd0fd3d -Author: DeadFire -Date: Thu Dec 4 19:27:19 2014 +0800 - - 20141204-6 选题 - -commit 34d4475dede86febccf67af697c5ef6769b5b5f5 -Author: DeadFire -Date: Thu Dec 4 19:14:11 2014 +0800 - - 20141204-5 选题 - -commit 813e4c0d00af882368e17522776c3d1c6978b09e -Author: DeadFire -Date: Thu Dec 4 19:03:12 2014 +0800 - - 20141204-4 选题 - -commit b5bb90f1388949e4e46118854656b7b9bd8119d3 -Author: DeadFire -Date: Thu Dec 4 18:46:36 2014 +0800 - - 20141204-3 选题 - -commit 62bc5546f318f0f48caab1ce347994dff03881c7 -Author: DeadFire -Date: Thu Dec 4 18:11:07 2014 +0800 - - 20141204-2 选题 - -commit c5477e1bee70871f024221f351a14c3673cc8325 -Author: carolinewuyan <309866211@qq.com> -Date: Thu Dec 4 18:08:35 2014 +0800 - - 已发布 - -commit 70ca70d0cb470f3872ff2d439613a0736792b17c -Author: ZTinoZ -Date: Thu Dec 4 17:53:39 2014 +0800 - - Translating by ZTinoZ - -commit 15a0b00dd6acd188d9469bc1f4640ae2b204cd40 -Author: carolinewuyan <309866211@qq.com> -Date: Thu Dec 4 17:50:50 2014 +0800 - - 已校对 - -commit aa0a75d014c43cc32b48cf8816abde743afa3249 -Author: DeadFire -Date: Thu Dec 4 17:40:56 2014 +0800 - - 20141204-1 选题 - -commit c7d3faffccb7fcb4a5b7d4a99f5c3b439eff5486 -Author: carolinewuyan <309866211@qq.com> -Date: Thu Dec 4 16:59:55 2014 +0800 - - 已发布 - -commit 037ed20977f9d4fe782d922ea041dc8e52fb1b63 -Author: carolinewuyan <309866211@qq.com> -Date: Thu Dec 4 16:52:32 2014 +0800 - - 已校对 - -commit f73e76a188607ebb36f62e289e617cd39cc03181 -Merge: c63694f 70e2996 -Author: joeren -Date: Thu Dec 4 12:05:42 2014 +0800 - - Merge pull request #3 from LCTT/master - - Update Repository - -commit 70e2996b27decb5ef91bf76d5404fd5ac8877099 -Author: wxy -Date: Thu Dec 4 10:12:50 2014 +0800 - - PUB:20141017 Linux ss Tool to Identify Sockets or Network Connections with Examples - - @geekpi - -commit 4a987f333ecc03fd57260d8c024bc9e27430fe7f -Author: wxy -Date: Wed Dec 3 22:17:31 2014 +0800 - - PUB:20141023 What is a good command-line calculator on Linux - - @JonathanKang - -commit 61086fad22dc6edb024c5e4a71e7fd51f9f26e97 -Author: wxy -Date: Wed Dec 3 21:59:06 2014 +0800 - - PUB:20141022 Linux FAQs with Answers--How to fix sshd error--could not load host key - - @GOLinux - -commit b8fbf78801c91f75c470398e01c61624e8877a5d -Author: wxy -Date: Wed Dec 3 21:52:07 2014 +0800 - - PUB:20140910 How to create a cloud-based encrypted file system on Linux - - @felixonmars - -commit f9b557d2f785d0fd4eba7b6b52650977438f9a69 -Author: wxy -Date: Wed Dec 3 21:30:08 2014 +0800 - - PUB:20141119 When Microsoft Went A-Courting - - @GOLinux - -commit e78500a70f3adb9fbc4a5065d5b15e08d83bd997 -Merge: 986571c 914ae20 -Author: Xingyu.Wang -Date: Wed Dec 3 21:00:02 2014 +0800 - - Merge pull request #2058 from Stevearzh/master - - ignore .DS_Store - -commit 986571ceb9d51e34f88805616ce0b402735819b9 -Merge: dcb830a 08635e0 -Author: Xingyu.Wang -Date: Wed Dec 3 20:59:35 2014 +0800 - - Merge pull request #2057 from forsil/master - - forsil transliating ... - "Undelete Files on Linux Systems" - -commit dcb830a5d09fe08daed8032491ef3403c59bf5de -Merge: de32ba5 f7a105d -Author: Xingyu.Wang -Date: Wed Dec 3 20:59:14 2014 +0800 - - Merge pull request #2056 from JonathanKang/master - - JonathanKang is translating - -commit 9756548568a382f36db1cd9991c64bc2a3109881 -Author: ZTinoZ -Date: Wed Dec 3 17:55:57 2014 +0800 - - Translating by ZTinoZ - -commit 914ae202b7e207116e7d4edd4783b51cb40b909f -Author: Stevearzh -Date: Wed Dec 3 17:38:55 2014 +0800 - - Translating by Stevearzh - -commit 5590da98619fc2754dc9bc54cb9a462a5df0d48f -Author: Stevearzh -Date: Wed Dec 3 17:32:21 2014 +0800 - - ignore .DS_Store - -commit 08635e022f0999478a30a3923c5888d5d7f67891 -Author: forsil -Date: Wed Dec 3 16:43:22 2014 +0800 - - forsil transliating ... - -commit de32ba5c778ae71ea7273e4999b1a58cd4276ebb -Author: DeadFire -Date: Wed Dec 3 15:33:41 2014 +0800 - - 20141203-1 选题 - -commit f7a105d9afd140aa4f5900b6eb6e44d361109297 -Author: Jonathan Kang -Date: Wed Dec 3 15:28:22 2014 +0800 - - JonathanKang is translating - -commit 916a8498a19700fb456ae938e6484d65f040cc3e -Merge: ef504ac 3d70b82 -Author: Xingyu.Wang -Date: Wed Dec 3 14:01:09 2014 +0800 - - Merge pull request #2055 from mdjsjdqe/master - - Update 20141127 11 Useful Utilities To Supercharge Your Ubuntu Experienc... - -commit ef504acac1ae85005bd0b3d48be2c9f64b34b02e -Merge: 540ee1f 63a6eab -Author: Xingyu.Wang -Date: Wed Dec 3 14:00:48 2014 +0800 - - Merge pull request #2054 from forsil/master - - translate finished - "How to use on-screen virtual keyboard on Linux" - -commit 3d70b82e807e1423a74989ef87138077d7e7c740 -Author: mdjsjdqe -Date: Wed Dec 3 11:10:41 2014 +0800 - - Update 20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md - -commit 540ee1fc311cdbb83876eb18a7f37eb174063507 -Author: carolinewuyan <309866211@qq.com> -Date: Wed Dec 3 11:08:39 2014 +0800 - - 已发布 - -commit 63a6eab73dcf200b35cbc0da300b78c33fab0741 -Author: forsil -Date: Wed Dec 3 11:03:28 2014 +0800 - - translate finished - -commit 139911ff7ea18234e99ea6ae03e23c7712ee2aea -Author: carolinewuyan <309866211@qq.com> -Date: Tue Dec 2 23:35:03 2014 +0800 - - 已校对 - -commit 929fd236d48a51c476026315624a4aefba021ff3 -Author: wxy -Date: Tue Dec 2 23:09:28 2014 +0800 - - 更新成员列表 - -commit 6a95046f3d9d79390cda7cd741da558ec658f4a7 -Author: carolinewuyan <309866211@qq.com> -Date: Tue Dec 2 18:15:29 2014 +0800 - - 校对中 - -commit 48f48783210f2c6c0de58ac0c0ad73e4418174eb -Author: ZTinoZ -Date: Tue Dec 2 17:53:43 2014 +0800 - - Translating by ZTinoZ - -commit 1986af6f30e91a78506dc0d97d7e317a5570ca6d -Author: wxy -Date: Tue Dec 2 15:09:43 2014 +0800 - - PUB:20141124 15 pwd (Print Working Directory) Command Examples in Linux - - @geekpi - -commit cc40ae47a73ef47fe223eb6a14e862f3a4a721c5 -Author: wxy -Date: Tue Dec 2 14:47:09 2014 +0800 - - PUB:20141125 Linux FAQs with Answers--How to access a NAT guest from host with VirtualBox - - @geekpi - -commit 034e4ecb3ec9ebabbea35d063f7034aca5e5ab65 -Author: wxy -Date: Tue Dec 2 11:27:59 2014 +0800 - - PUB:20141119 Qshutdown--An avanced shutdown tool - - @GOLinux - -commit b7d68f825989f68a1b83d4b43f0880af1d0345f8 -Author: wxy -Date: Tue Dec 2 11:01:30 2014 +0800 - - PUB:20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu - - @DoubleShit - -commit cb91adb70f867853034a5225008bccaa75701bca -Merge: 2fc03df ac79d9b -Author: Xingyu.Wang -Date: Tue Dec 2 10:31:53 2014 +0800 - - Merge pull request #2052 from felixonmars/20141114-emoji - - [Translating] How To Use Emoji Anywhere With Twitter's Open Source Library - -commit 2fc03df34fc56cc3a8119f06820b4ffed381d4ab -Merge: 8027f1b c63694f -Author: joeren -Date: Tue Dec 2 08:43:34 2014 +0800 - - Merge pull request #2053 from GOLinux/master - - [Translated] 20141119 When Microsoft Went A-Courting.md - -commit c63694f8a1f390e81033aa2764a12413f15a19f1 -Author: GOLinux -Date: Tue Dec 2 08:41:59 2014 +0800 - - [Translated] 20141119 When Microsoft Went A-Courting.md - -commit ac79d9b0ffae29930eb5f4b79c613a340a6a479c -Author: Felix Yan -Date: Mon Dec 1 23:34:00 2014 +0800 - - [Translating] How To Use Emoji Anywhere With Twitter's Open Source Library - -commit ac5dcd7026784f873cfcf16ea2db27e68e411796 -Author: ZTinoZ -Date: Mon Dec 1 22:12:32 2014 +0800 - - Translating by ZTinoZ - -commit 8027f1b0daf235f4e2931574e37094dac4f7a202 -Merge: d08dc0b ed5987a -Author: Xingyu.Wang -Date: Mon Dec 1 21:20:29 2014 +0800 - - Merge pull request #2051 from ZTinoZ/master - - Translating by ZTinoZ - -commit ed5987a7af9acf8d0dc63db9f175c47452adc1a1 -Author: ZTinoZ -Date: Mon Dec 1 21:19:03 2014 +0800 - - Translating by ZTinoZ - -commit 2530f71c158391f719ab7f66ac3e90d1aa93f355 -Merge: bd3ce8c d08dc0b -Author: ZTinoZ -Date: Mon Dec 1 21:18:09 2014 +0800 - - Merge pull request #1 from LCTT/master - - Update Popular repositories - -commit d08dc0b89957905d29df0cd47a7694b732d0c88e -Author: wxy -Date: Mon Dec 1 21:09:33 2014 +0800 - - 回收 - -commit c40f1964980fc954fbb28e1567a492a836c34c7e -Author: wxy -Date: Mon Dec 1 21:09:23 2014 +0800 - - PUB:20141030 8 Tips to Solve Linux and Unix Systems Hard Disk Problmes Like Disk Full Or Can't Write to the Disk.md - - @ZTinoZ - -commit 487ac45d4b30348fc68aea1b7f78e53a5c522a91 -Author: wxy -Date: Mon Dec 1 20:38:20 2014 +0800 - - PUB:20140818 What are useful CLI tools for Linux system admins - - @zpl1025 - -commit 9cc94c8014c131e041a4ba8cff2881d677a780bd -Author: wxy -Date: Mon Dec 1 20:14:22 2014 +0800 - - PUB:20140826 20 Postfix Interview Questions and Answers - - @bazz2 - -commit c55d124ffbe9b26a2e853292ca4f6cc53a2c40ef -Author: wxy -Date: Mon Dec 1 10:21:44 2014 +0800 - - 归档 201411 - -commit db57f2d75508e89e50ca6c87492f58cd9be17cfd -Author: wxy -Date: Mon Dec 1 10:18:06 2014 +0800 - - PUB:20141014 How to monitor and troubleshoot a Linux server using sysdig.md - - @GOLinux - -commit 842b1db81234914e1f801e670d05ef28451fa54b -Merge: 6711373 1adfadc -Author: joeren -Date: Mon Dec 1 08:31:15 2014 +0800 - - Merge pull request #2050 from GOLinux/master - - [Translating] 20141119 When Microsoft Went A-Courting.md - -commit 1adfadc8967eb3408b1f23889fc15f3f19de55f5 -Author: joeren -Date: Mon Dec 1 08:29:25 2014 +0800 - - Update 20141119 When Microsoft Went A-Courting.md - -commit 1ef54f5f51238cf3b1dd70b30d14e9de990db63d -Merge: cbbc133 6711373 -Author: joeren -Date: Mon Dec 1 08:26:07 2014 +0800 - - Merge pull request #2 from LCTT/master - - Update Repository - -commit 671137363c8179aaea68cd95365bc112892aaeaa -Merge: 3f8ce06 a72c37d -Author: joeren -Date: Mon Dec 1 08:24:49 2014 +0800 - - Merge pull request #2049 from coloka/master - - 【翻译中】Four ways Linux is headed for no-downtime kernel patching - -commit a72c37dcaed0705132f5509fb925edf15617958e -Author: coloka -Date: Sun Nov 30 22:11:16 2014 +0800 - - 【翻译中】Four ways Linux is headed for no-downtime kernel patching - -commit 3f8ce069479dc1be41573a751a7fc55177684b91 -Author: wxy -Date: Sun Nov 30 21:10:06 2014 +0800 - - PUB:20141127 How to install Docker on CentOS 7 - - @felixonmars - -commit aa3fca6507b03db0897e0a22eec8e3e0c06b2302 -Merge: 23af494 bd3ce8c -Author: Xingyu.Wang -Date: Sun Nov 30 18:38:59 2014 +0800 - - Merge pull request #2048 from ZTinoZ/master - - Finish the translation by ZTinoZ - -commit 23af4948fe0f5bbf40806dc769639b2e89de07a6 -Merge: 5cef7cf 17d979d -Author: Xingyu.Wang -Date: Sun Nov 30 18:38:40 2014 +0800 - - Merge pull request #2045 from coloka/master - - 【翻译完成】20141117 Restricting process CPU usage using nice cpulimit and cgroups.md - -commit 5cef7cf448316f13f235eafa6ac3093ede244d29 -Merge: dcfa943 e0be268 -Author: geekpi -Date: Sun Nov 30 18:00:24 2014 +0800 - - Merge pull request #2047 from geekpi/master - - translated - -commit bd3ce8c9fdc63ccd287289e96ec66b0c3449740e -Author: ZTinoZ -Date: Sun Nov 30 17:33:29 2014 +0800 - - Finish the translation by ZTinoZ - -commit e0be26800b36696a2a62378c92f4a62fa831a718 -Author: geekpi -Date: Sun Nov 30 04:22:57 2014 -0500 - - translated - -commit dcfa943010298ae729316d8c6061b50049268041 -Merge: 25bf2ec c94225c -Author: geekpi -Date: Sun Nov 30 16:49:46 2014 +0800 - - Merge pull request #2046 from geekpi/master - - Translating - -commit c94225cdf5912dc04e9aebd2a363beedb7d75be8 -Author: geekpi -Date: Sun Nov 30 03:47:49 2014 -0500 - - Translating - -commit 17d979dfa0a1678bd9c6363d4de435e70d34c2c6 -Merge: cd27963 25bf2ec -Author: coloka -Date: Sun Nov 30 11:37:35 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject.git - -commit cd27963acc8a1c4bb1907537c50fee5e48db7717 -Author: coloka -Date: Sun Nov 30 11:37:20 2014 +0800 - - 【翻译完成】20141117 Restricting process CPU usage using nice cpulimit and cgroups.md - -commit 25bf2ecd2d7edbdfbe02b8cbcf4be37b6470e8d6 -Author: wxy -Date: Sun Nov 30 10:31:33 2014 +0800 - - PUB:04 - The history of Android - - @alim0x - -commit 125ceabe71c909a489f044279d6a21b6e9a8d8d4 -Author: wxy -Date: Sun Nov 30 10:05:10 2014 +0800 - - PUB:Meet systemd, the controversial project taking over a Linux distro near you - - @SPccman - -commit 1d67907640615266fab1c25ecbb9a189869873f6 -Author: wxy -Date: Fri Nov 28 09:46:46 2014 +0800 - - PUB:20141125 Linux FAQs with Answers--How to check glibc version on Linux - - @GOLinux - -commit 4774a8c6e80384dd2fa15d71afb55e85b60550b3 -Merge: f4b3167 84eaf6e -Author: Xingyu.Wang -Date: Sat Nov 29 22:50:20 2014 +0800 - - Merge pull request #2044 from disylee/master - - [ translated] by disylee - -commit 84eaf6ed1dcb11898f8c975782affbb7e08fce70 -Author: disylee -Date: Sat Nov 29 22:34:25 2014 +0800 - - disylee translated ok - -commit f4b31670e3051756ecd3525bce205f5e241a3043 -Merge: 528ed42 f552369 -Author: Xingyu.Wang -Date: Sat Nov 29 22:05:27 2014 +0800 - - Merge pull request #2043 from a598799539/master - - [Translated by a598799539] Some Sentences about Java - 哈哈,作为你的处翻,我会好好校对的哈~~ - -commit 528ed42501a3e9edf6d5a3a409e01c14ec7bde38 -Merge: 4cd7280 03e22ba -Author: Xingyu.Wang -Date: Sat Nov 29 22:04:24 2014 +0800 - - Merge pull request #2040 from Stevearzh/master - - [translated by Stevearzh]20141108 When hackers grow old.md - 赞!据说这篇比较难翻译,等我合并了仔细拜读:> - -commit 4cd7280436984d4331cdb42a539bfa05a3de8f8e -Merge: c89d8ad 3760bdc -Author: Xingyu.Wang -Date: Sat Nov 29 22:03:29 2014 +0800 - - Merge pull request #2039 from KayGuoWhu/master - - [Translated]20141127 What Makes a Good Programmer - -commit c89d8ada43e31266d164d8c2080dbeafae8e44b6 -Merge: c9684fa 1e95d12 -Author: Xingyu.Wang -Date: Sat Nov 29 22:03:08 2014 +0800 - - Merge pull request #2036 from SPccman/master - - Meet systemd, the controversial project taking over a Linux distro near you - -commit c9684fa307fc25b32c99c0c7e1a5a76de72895d1 -Merge: e80a538 04eb460 -Author: Xingyu.Wang -Date: Sat Nov 29 22:02:40 2014 +0800 - - Merge pull request #2035 from felixonmars/20141127-docker - - [Translated] How to install Docker on CentOS 7 - -commit e80a538719348619af9337fae1bce36f57492348 -Merge: b841012 e9d5996 -Author: Xingyu.Wang -Date: Sat Nov 29 22:01:38 2014 +0800 - - Merge pull request #2034 from DoubleShit/master - - [translated] 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu - -commit f552369682e10e6de62d6b5ec6bd01b311c0503c -Merge: 37715e5 b841012 -Author: a598799539 -Date: Sat Nov 29 21:00:38 2014 +0800 - - Merge branch 'master' of github.com:LCTT/TranslateProject - -commit 37715e5eca070baf14453a20446454281f0987f6 -Author: a598799539 -Date: Sat Nov 29 21:00:10 2014 +0800 - - translated Some Sentences about Java - -commit b8410122e9deb8b47426765f51c4a2ff6cb691f1 -Merge: e287fd8 cf40825 -Author: geekpi -Date: Sat Nov 29 19:21:56 2014 +0800 - - Merge pull request #2042 from geekpi/master - - translated - -commit cf408257c1fa3cf44239e7e032f477a680f64ed4 -Author: geekpi -Date: Sat Nov 29 06:15:26 2014 -0500 - - translated - -commit e287fd89c5a1381b5bcad0c72658772fc9ff6f15 -Merge: 592cc17 8858878 -Author: geekpi -Date: Sat Nov 29 17:05:39 2014 +0800 - - Merge pull request #2041 from geekpi/master - - [Translating] - -commit 885887800804be7948dca76ab52214eebbaf8d28 -Author: geekpi -Date: Sat Nov 29 03:18:11 2014 -0500 - - [Translating] - -commit 03e22baa0d96306b7183c857c778fb7bb731c68c -Author: Stevearzh -Date: Sat Nov 29 15:09:11 2014 +0800 - - translated by Stevearzh - -commit 50cbc2fd447c5621d0c54751b43f774415fbf41e -Author: Stevearzh -Date: Sat Nov 29 15:04:44 2014 +0800 - - translated by Stevearzh - -commit 3760bdc4603b29aa7accdb5be6efecc527b40664 -Author: KayGuoWhu -Date: Sat Nov 29 11:53:50 2014 +0800 - - translated - -commit 592cc17351b5adc64af6377d6f26e2b19079550f -Author: geekpi -Date: Fri Nov 28 22:53:55 2014 +0800 - - Update 20141125 Linux FAQs with Answers--How to access a NAT guest from host with VirtualBox.md - -commit db71d4442c3d8be3ec19b615b80608c0364469eb -Merge: 1cee614 1676f66 -Author: geekpi -Date: Fri Nov 28 22:52:11 2014 +0800 - - Merge pull request #2038 from geekpi/master - - trnalsted - -commit 1676f66d703f70f65368f3f10669138c3fb05e87 -Author: root -Date: Fri Nov 28 09:48:34 2014 -0500 - - translated - -commit 5992044cb9ee267f381784573d82eaeea3480f40 -Author: root -Date: Fri Nov 28 09:47:50 2014 -0500 - - translated - -commit 1cee61441beec17d9edcc982405342228e9ddd57 -Merge: 1a52ed9 392bd99 -Author: geekpi -Date: Fri Nov 28 22:45:22 2014 +0800 - - Merge pull request #2037 from geekpi/master - - translated - -commit 392bd99ec4570f4ac5dec6991a77e2da4f8f2861 -Author: root -Date: Fri Nov 28 09:41:00 2014 -0500 - - translated - -commit 1e95d12ee85a6fe6c554700865656748eac96b59 -Author: DoubleC <450760206@qq.com> -Date: Fri Nov 28 22:39:54 2014 +0800 - - Create Meet systemd, the controversial project taking over a Linux distro near you.md - - 翻已完成 - -commit 078ff0fc967f7893526d0abcd865121ea7de87fb -Author: DoubleC <450760206@qq.com> -Date: Fri Nov 28 22:37:46 2014 +0800 - - Delete 20141111 Meet systemd the controversial project taking over a Linux distro near you.md - - 删除原文 - -commit 014e7fdead98a360eae9a4f560cd751abffbbb55 -Merge: a49d56a 1a52ed9 -Author: DoubleC <450760206@qq.com> -Date: Fri Nov 28 22:36:38 2014 +0800 - - Merge pull request #10 from LCTT/master - - update - -commit 04eb460fb15f76a9fdf4d115c179cb5130bea98b -Author: Felix Yan -Date: Fri Nov 28 21:12:19 2014 +0800 - - [Translated] How to install Docker on CentOS 7 - -commit 04ed0501ac3e430a60c091ef0e7196fccd6bbe16 -Author: ZTinoZ -Date: Fri Nov 28 17:35:37 2014 +0800 - - Translating by ZTinoZ - -commit e9d59968c9603e851271496390879ca75881a2c2 -Author: DoubleShift -Date: Fri Nov 28 09:37:02 2014 +0200 - - Create 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu.md - - Translate finished. - -commit 2137e75ab5208a6f694816749b1b40f6a07ea027 -Author: DoubleShift -Date: Fri Nov 28 09:33:54 2014 +0200 - - Delete 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu.md - - finished - -commit 1a52ed9badba1087938d77e7567bc19019f3b847 -Merge: aae52f4 c8fc59b -Author: Xingyu.Wang -Date: Fri Nov 28 15:17:08 2014 +0800 - - Merge pull request #2033 from KayGuoWhu/master - - [Translating]20141127 What Makes a Good Programmer - -commit 4887c41da25d71e846fcb2ffbe54e02ea9c5d6f4 -Author: DoubleShift -Date: Fri Nov 28 08:44:07 2014 +0200 - - Update 20141017 UbuTricks--Script to install the latest versions of several games and applications in Ubuntu.md - - begin - -commit c8fc59b10c73bbef12fddaa52caac0ffb7491388 -Author: KayGuoWhu -Date: Fri Nov 28 11:31:15 2014 +0800 - - translating - -commit aae52f4fbfdae91d7442d3470f167b36635c5f4b -Author: carolinewuyan <309866211@qq.com> -Date: Fri Nov 28 09:49:55 2014 +0800 - - 已发布 - -commit 7f804823350d78083179d6e110f874eb02e48ee4 -Merge: cc49b47 4dc9efa -Author: Xingyu.Wang -Date: Fri Nov 28 09:37:35 2014 +0800 - - Merge pull request #2028 from felixonmars/20141127-docker - - [Translating] How to install Docker on CentOS 7 - -commit cc49b47b9f25325d41ac4c7b9f09f7bb804c3f2e -Merge: beb3a86 09517d9 -Author: Xingyu.Wang -Date: Fri Nov 28 09:37:16 2014 +0800 - - Merge pull request #2032 from LCTT/revert-2029-master - - Revert "[Translating]20141127 How to install Docker on CentOS 7" - -commit 09517d99ad04bb1c503984a461ddee9401faec56 -Author: Xingyu.Wang -Date: Fri Nov 28 09:36:39 2014 +0800 - - Revert "[Translating]20141127 How to install Docker on CentOS 7" - -commit cbbc1333fb1d420dab930a6965757e5e03e6dcc3 -Merge: 5651cf8 beb3a86 -Author: joeren -Date: Fri Nov 28 08:39:05 2014 +0800 - - Merge pull request #1 from LCTT/master - - Update Repository - -commit beb3a867e6bdbf0819041ee601b8b3c54c1b668f -Merge: 67c573e 5eae2f8 -Author: joeren -Date: Fri Nov 28 08:37:54 2014 +0800 - - Merge pull request #2027 from felixonmars/20141127-systemd-nspawn - - 选题: Quick systemd-nspawn guide - -commit 67c573e226d879e6d3866880708e14f4f142649e -Merge: bcee8eb 4e82237 -Author: joeren -Date: Fri Nov 28 08:37:05 2014 +0800 - - Merge pull request #2029 from KayGuoWhu/master - - [Translating]20141127 How to install Docker on CentOS 7 - -commit bcee8ebc95d1bddb7f21866c728a01af5a5c73ee -Merge: 6b7af44 db7184f -Author: joeren -Date: Fri Nov 28 08:36:55 2014 +0800 - - Merge pull request #2030 from a598799539/master - - [a598799539 Translating] Some Sentences about Java - -commit 6b7af4483a2e4e686a9cb6d2ad7d8b2f50a81c10 -Merge: 5819b92 6a9b807 -Author: joeren -Date: Fri Nov 28 08:36:42 2014 +0800 - - Merge pull request #2031 from forsil/master - - forsil translating ... - -commit 6a9b8071939047158a54c7e8015aa93eaaab63be -Author: forsil -Date: Thu Nov 27 21:29:11 2014 +0800 - - forsil translating ... - -commit 5819b928297f5cec8ed715a70b57f511565417d1 -Author: wxy -Date: Thu Nov 27 21:22:31 2014 +0800 - - PUB:20140905 Linux TCP or IP networking--net-tools vs. iproute2 - - @KayGuoWhu - -commit db7184f092ac3442614b4d40246e55571404b098 -Author: a598799539 -Date: Thu Nov 27 20:29:45 2014 +0800 - - [Translating] Some Sentences about Java - -commit 3b056857e3945ec823d58e45b27421f5f4e1116c -Author: DeadFire -Date: Thu Nov 27 19:20:59 2014 +0800 - - 20141127-6 选题 带一朵云去远行a598799539 推荐 - -commit 4e82237a0bfbc8a3e97cc533d1afb8c666d0e700 -Author: KayGuoWhu -Date: Thu Nov 27 19:17:27 2014 +0800 - - translating - -commit 85f53161391d52f1bd49b81a1f183536398f3979 -Author: DeadFire -Date: Thu Nov 27 19:06:39 2014 +0800 - - 20141127-5 选题 - -commit ea9fa87ebf012b610aae9406b4bd28a5afbe7316 -Author: ZTinoZ -Date: Thu Nov 27 18:01:21 2014 +0800 - - Translating by ZTinoZ - -commit 454f2c7c54dbd751cb012a23f6b820428bdb965b -Author: DeadFire -Date: Thu Nov 27 17:02:20 2014 +0800 - - 20141127-4 选题 - -commit 5ee99b55b407b09bd9a929eeb00ba9155d63fc13 -Author: carolinewuyan <309866211@qq.com> -Date: Thu Nov 27 17:00:52 2014 +0800 - - 已校对 - -commit bf803aed01b9759a6941fa5dcead90effa458889 -Author: DeadFire -Date: Thu Nov 27 15:22:35 2014 +0800 - - 20141127-3 选题 - -commit 161875b7ca164238201458f26b85ff8d832296cc -Author: DeadFire -Date: Thu Nov 27 15:06:22 2014 +0800 - - 20141127-2 选题 - -commit 4dc9efa9139a9f0b55aea28deec0cbe3456f2355 -Author: Felix Yan -Date: Thu Nov 27 14:20:59 2014 +0800 - - [Translating] How to install Docker on CentOS 7 - -commit 94fb2afe8488a2c415e3141afbf2cc06fe988938 -Author: DeadFire -Date: Thu Nov 27 14:15:44 2014 +0800 - - 20141127-1 选题 - -commit 5eae2f830b77108ded370822de86eb957bdc6867 -Author: Felix Yan -Date: Thu Nov 27 14:06:03 2014 +0800 - - fix a typo - -commit 6ccb1dbc8d77ec78c635b4739cca055dda5b1af7 -Author: Felix Yan -Date: Thu Nov 27 14:00:06 2014 +0800 - - 选题: Quick systemd-nspawn guide - -commit 62d43d894b178b7b4869209233d2b69c14ffa204 -Author: wxy -Date: Thu Nov 27 13:39:14 2014 +0800 - - PUB:20141108 How to Record Your Desktop Video and Audio Using 'Avconv' Tool in Ubuntu - - @ggaaooppeenngg - -commit 9e84442dcedb5b4e5b2dc532bf0aab00a38b8c4d -Author: carolinewuyan <309866211@qq.com> -Date: Thu Nov 27 13:31:42 2014 +0800 - - 已发布 - -commit 3cdfb5927ff234cecda1c2ada70af1f3170e2f75 -Author: wxy -Date: Thu Nov 27 13:04:12 2014 +0800 - - PUB:20141112 [Quick Tip] How To Fix Docky Compositing Error In Lubuntu - - @Vic020 - -commit 5651cf80d86e5232957ef3154bde7998fb0b2f10 -Merge: 3ed12bf d679d35 -Author: joeren -Date: Thu Nov 27 10:10:47 2014 +0800 - - Merge pull request #2025 from felixonmars/20141124-blkid - - [Translated] Linux blkid Command to Find Block Devices Details - -commit 3ed12bf71e7c73b844ec847c15913db1e0cd70cd -Author: wxy -Date: Wed Nov 26 23:35:03 2014 +0800 - - PUB:20141029 How to install LEMP stack nginx MariaDB or MySQL and php on CentOS - - @runningwater - -commit d679d351abd57688a6746a47bfda1a0f3d3e3a3b -Author: Felix Yan -Date: Wed Nov 26 23:09:04 2014 +0800 - - [Translated] Linux blkid Command to Find Block Devices Details - -commit c9b07707f9d9787dc3b0d505dad88d533f082be2 -Author: wxy -Date: Wed Nov 26 23:01:56 2014 +0800 - - PUB:20141029 How to create and manage LXC containers on Ubuntu - - @bazz2 - -commit 0ba87ce9233df4b8f3499e52f9bac12c793e45d1 -Author: wxy -Date: Wed Nov 26 22:47:43 2014 +0800 - - PUB:20141105 Linux FAQs with Answers--How to disable HTTP redirect in wget - - @geekpi - -commit 27d7992eee62f7ccaae99ee6c9ca1a4de064dc31 -Merge: 9a97823 7c1375c -Author: Xingyu.Wang -Date: Wed Nov 26 22:34:05 2014 +0800 - - Merge pull request #2024 from felixonmars/20141124-blkid - - Translating: Linux blkid Command to Find Block Devices Details - -commit 9a97823c5a7dfc856a80c9e0110a978cb0100282 -Merge: ad8ba0f fb74cc0 -Author: Xingyu.Wang -Date: Wed Nov 26 22:33:19 2014 +0800 - - Merge pull request #2023 from johnhoow/master - - Translating by johnhoow - -commit 7c1375cccd21403169ef71c3a9df97243b4676b5 -Author: Felix Yan -Date: Wed Nov 26 21:17:47 2014 +0800 - - Translating: Linux blkid Command to Find Block Devices Details - -commit b6b6d65891534befa4180054ee82720b065ca022 -Author: ZTinoZ -Date: Wed Nov 26 17:39:50 2014 +0800 - - Translating by ZTinoZ - -commit fb74cc08d50b8ccb9c3ae49f227b41494fd93b5f -Merge: a92cdfc ad8ba0f -Author: johnhoow -Date: Wed Nov 26 14:14:46 2014 +0800 - - johnhoow translating - -commit f5cc73c3f3cfc9da0f4e89e8da4470aa31792874 -Author: ZTinoZ -Date: Wed Nov 26 10:40:16 2014 +0800 - - Translating by ZTinoZ - -commit ad8ba0fe6218909c09a1250d1461894127e67662 -Merge: 1fde8e5 78d7bd2 -Author: joeren -Date: Wed Nov 26 09:28:52 2014 +0800 - - Merge pull request #2022 from GOLinux/master - - [Translated] Two Questions with Answers - -commit 78d7bd287e5a3c56d26b0e2023b74234c2283799 -Author: GOLinux -Date: Wed Nov 26 09:26:27 2014 +0800 - - [Translated] Two Questions with Answers - -commit 1fde8e52a8a9d1aa275e26a2898cde632f937a3f -Merge: 791ec3c e928d55 -Author: joeren -Date: Wed Nov 26 08:54:29 2014 +0800 - - Merge pull request #2021 from GOLinux/master - - [Translating] 20141125 Linux FAQs with Answers--How to check glibc version on Linux.md - -commit e928d55e38e7724008754548f922031266890836 -Author: joeren -Date: Wed Nov 26 08:53:57 2014 +0800 - - Update 20141125 Linux FAQs with Answers--How to check glibc version on Linux.md - -commit 791ec3c46a3a139d9289d2a74f1d9bd68d0d1b4f -Merge: 8b77845 10165c8 -Author: joeren -Date: Wed Nov 26 08:53:26 2014 +0800 - - Merge pull request #2020 from GOLinux/master - - [Translating] 20141125 Linux FAQs with Answers--How to fix ImportError--No module named scapy.all.md - -commit 10165c83041e87a7f1bd00d02a48c5beb2835151 -Author: joeren -Date: Wed Nov 26 08:52:46 2014 +0800 - - Update 20141125 Linux FAQs with Answers--How to fix ImportError--No module named scapy.all.md - -commit d12778e9e89e363ea45de81e18c0a4db6e0c2573 -Merge: 25e95b8 8b77845 -Author: joeren -Date: Wed Nov 26 08:51:56 2014 +0800 - - Merge pull request #51 from LCTT/master - - Update Repository - -commit 8b77845ed43e85c462816b6613f42e4176d92b13 -Merge: 6855a65 cd350b0 -Author: joeren -Date: Wed Nov 26 08:51:05 2014 +0800 - - Merge pull request #2018 from alim0x/master - - 09-the history of Android complete - -commit 6855a6597cede9ba9f993f16acd4dbf40967cf7b -Merge: 834ba47 64d08b7 -Author: joeren -Date: Wed Nov 26 08:50:56 2014 +0800 - - Merge pull request #2019 from Stevearzh/master - - Translating by Stevearzh - -commit 64d08b7b04c01ad104ed718dfc1f82c77e8922dd -Author: Stevearzh -Date: Wed Nov 26 00:12:01 2014 +0800 - - Translating by Stevearzh - -commit 834ba47dae70f87ce1fbebe7982aac0cde738965 -Author: wxy -Date: Tue Nov 25 23:38:36 2014 +0800 - - PUB:20141029 Linux FAQs with Answers--How to fix hda-duplex not supported in this QEMU binary - - @geekpi - -commit cd350b09ee20c1c2a7ef465125ec1a8c27c5352d -Author: alim0x -Date: Tue Nov 25 23:01:29 2014 +0800 - - 09-the history of Android complete - -commit 2edcc8b31f4139f3cdacdfe958ea3b0f3548b28c -Author: wxy -Date: Tue Nov 25 22:21:13 2014 +0800 - - PUB:20141024 How To Upgrade Ubuntu 14.04 Trusty To Ubuntu 14.10 Utopic - - @johnhoow 只发布了服务器小节。 - -commit 88408ef3e43b827164affecbe2099e91b6404b8a -Author: wxy -Date: Tue Nov 25 21:51:15 2014 +0800 - - PUB:How-to-debug-a-C or C++ program with GDB command-line debugger - - @SPccman - -commit 21286943d4b86c74f195bba55833ab697c9ba35e -Author: carolinewuyan <309866211@qq.com> -Date: Tue Nov 25 16:44:05 2014 +0800 - - 已校对 - -commit db81f42bb9b0e92d8e7db3fa5a9ada7a6f192899 -Author: wxy -Date: Tue Nov 25 16:40:55 2014 +0800 - - PUB:20140926 How to manage configurations in Linux with Puppet and Augeas - - @geekpi - -commit e794d67ce65ab4665518a0cdf28991a794391145 -Author: DeadFire -Date: Tue Nov 25 15:43:47 2014 +0800 - - 20141125-2 选题 - -commit 3e3d66eecfc53b8c3668215efadb7a02a99e7737 -Author: DeadFire -Date: Tue Nov 25 09:46:48 2014 +0800 - - 20141125-1 选题 - -commit f5a26d4b4a1bec283c88670d828bfa9cfda7cbee -Author: wxy -Date: Mon Nov 24 16:26:00 2014 +0800 - - PUB:20141012 Simple guide to forks in github and git - - @su-kaiyao @FingerLiu - -commit 5d4b860a47bc7e7fe6a621d923bcbd0023ca2f31 -Author: wxy -Date: Mon Nov 24 15:44:56 2014 +0800 - - PUB:20141023 6 Minesweeper Clones for Linux - - @GOLinux - -commit af83c76e78af061b4bf26356d8565751d8fdfd33 -Author: wxy -Date: Mon Nov 24 15:31:28 2014 +0800 - - PUB:20141008 The Why and How of Ansible and Docker - - @bazz2 很流畅! - -commit 59ecbb93ed9489e789e3ae3555b5b3c9cd455c2b -Author: DeadFire -Date: Mon Nov 24 16:06:52 2014 +0800 - - 20141124-2 选题 - -commit ea6654f3e1029f4da193d4a2c305539a2edea5a3 -Author: DeadFire -Date: Mon Nov 24 15:41:26 2014 +0800 - - 20141124-1 选题 - -commit 43079a4446d561f03a6de9d2ad8028a23634c38b -Merge: 9458bcc f3fe68f -Author: Xingyu.Wang -Date: Mon Nov 24 15:19:24 2014 +0800 - - Merge pull request #2015 from KayGuoWhu/master - - [Translating]20141108 When hackers grow old - 哈哈,没关系,这篇是挺难翻译的。。。 - -commit 9458bccfb6ef04f416637871fe452c58b25ae8ca -Merge: 3cf077c 25e95b8 -Author: joeren -Date: Mon Nov 24 09:28:00 2014 +0800 - - Merge pull request #2017 from GOLinux/master - - [Translated] 20141119 Qshutdown--An avanced shutdown tool.md - -commit 25e95b86cc5261b66455beab757dd694f6dc06c1 -Author: GOLinux -Date: Mon Nov 24 09:26:35 2014 +0800 - - [Translated] 20141119 Qshutdown--An avanced shutdown tool.md - -commit 3cf077c4e80282a6ed4edf513883a9224ede3ea3 -Merge: 3473507 efde8a2 -Author: joeren -Date: Mon Nov 24 09:23:58 2014 +0800 - - Merge pull request #2016 from GOLinux/master - - [Translated] 20141023 6 Minesweeper Clones for Linux.md - -commit efde8a206259eb8b4ee2fbe575e8205c588eb328 -Author: GOLinux -Date: Mon Nov 24 09:21:36 2014 +0800 - - [Translated] 20141023 6 Minesweeper Clones for Linux.md - -commit f3fe68f680eaa44fe2313450c46e756fa77ea60d -Author: KayGuoWhu -Date: Mon Nov 24 09:20:07 2014 +0800 - - stop translating - -commit 3473507b3eed42c8a7cb75918758d0bbcb009c49 -Merge: 6accdf1 76971a6 -Author: joeren -Date: Mon Nov 24 08:40:10 2014 +0800 - - Merge pull request #2014 from GOLinux/master - - [Translating] 20141023 6 Minesweeper Clones for Linux.md - -commit 76971a672c148636524c9f08584428a101e0e46c -Author: joeren -Date: Mon Nov 24 08:39:51 2014 +0800 - - Update 20141023 6 Minesweeper Clones for Linux.md - -commit 6accdf11b44eaa75d3e69ca3150f6f44e89ffe67 -Merge: ee7cef3 09c2778 -Author: joeren -Date: Mon Nov 24 08:38:36 2014 +0800 - - Merge pull request #2013 from GOLinux/master - - [Translating] 20141119 Qshutdown--An avanced shutdown tool.md - -commit 09c2778e955ea03754bf8c864f3e558edda770bc -Author: joeren -Date: Mon Nov 24 08:38:09 2014 +0800 - - Update 20141119 Qshutdown--An avanced shutdown tool.md - -commit f7e2ffda4fd2efcf418614331b31213822665df1 -Merge: 8d4ebf9 ee7cef3 -Author: joeren -Date: Mon Nov 24 08:36:38 2014 +0800 - - Merge pull request #50 from LCTT/master - - Update Repository - -commit ee7cef30c35a2f99fa20f26b5e06006ae6f4b021 -Merge: 68a784d 8ee9eb4 -Author: joeren -Date: Mon Nov 24 08:35:52 2014 +0800 - - Merge pull request #2012 from coloka/master - - 翻译完成:20141120 How to visualize memory usage on Linux.md - -commit 8ee9eb4893ad35de2e1f87c22de6ccaf3f38bb77 -Author: coloka -Date: Sun Nov 23 21:13:25 2014 +0800 - - 翻译完成:20141120 How to visualize memory usage on Linux.md - 翻译中:20141117 Restricting process CPU usage using nice cpulimit and cgroups.md - -commit 68a784d630ca20ae2523029edb45c9cf37f2c8d7 -Author: wxy -Date: Sun Nov 23 12:13:54 2014 +0800 - - PUB:20140901 How to install and configure ownCloud on Debian - - @geekpi - -commit 01f749ff651d08c33e77563a987098f7b510f573 -Author: wxy -Date: Sun Nov 23 11:51:55 2014 +0800 - - PUB:20140828 Setup Thin Provisioning Volumes in Logical Volume Management (LVM)--Part IV - - @GOLinux - -commit e95ffded0019d13d8478d520f801ad2c6a29f0a9 -Author: wxy -Date: Sun Nov 23 11:09:06 2014 +0800 - - PUB:20141027 Handy Disk Image Tools - - @barney-ro - -commit df66dcc31549c0db544e9fa96d4ffe342b0cd333 -Author: wxy -Date: Sat Nov 22 22:01:18 2014 +0800 - - PUB:20141115 LibreOffice 4.3.4 Released With 60 Bug Fixes v4.4 Shaping Up Nicely - - @ZTinoZ - -commit 891a533eeca72373fdff2c160427fcdd00d16347 -Merge: 424da1b d0cd7a6 -Author: Xingyu.Wang -Date: Sat Nov 22 21:09:41 2014 +0800 - - Merge pull request #2011 from ZTinoZ/master - - Translating by ZTinoZ - -commit d0cd7a648fde3e6cc7b4b320064c2db3868ca7ca -Author: ZTinoZ -Date: Sat Nov 22 20:57:33 2014 +0800 - - Translating by ZTinoZ - -commit 424da1b9fb8be94af487639d6347524668d00cd2 -Merge: 4436961 52bff59 -Author: Xingyu.Wang -Date: Sat Nov 22 20:22:31 2014 +0800 - - Merge pull request #2008 from coloka/master - - 【翻译完成】20141112 How to Debug CPU Regressions Using Flame Graphs.md - -commit a92cdfc2e86628214e4b3eeeaa0b89f8f4f2cf8b -Author: johnhoow -Date: Sat Nov 22 17:02:40 2014 +0800 - - johnhoow translating - -commit 4436961b4842bae7d02e404568ac56c74efde07a -Author: wxy -Date: Fri Nov 21 14:53:58 2014 +0800 - - PUB:03 - The history of Android - - @alim0x - -commit a5562536e3e4c08474f2911fc03f5d91077e0c62 -Author: wxy -Date: Thu Nov 20 14:40:51 2014 +0800 - - PUB:20141027 How to download an ISO image with BitTorrent fast and safely from the command line - - @wangjiezhe - -commit c75a469c338c91aab8d0ffc95f2ab1739a8a01de -Author: wxy -Date: Thu Nov 20 13:08:02 2014 +0800 - - PUB:20141106 timedatectl--Control Linux System Time and Date in Systemd - - @su-kaiyao - -commit 6dd41fdc522dc5b213c2621358b4cec6bd8a96b5 -Author: wxy -Date: Thu Nov 20 12:44:04 2014 +0800 - - PUB:20141106 Quick Tip Allow Services Through Firewall In openSUSE - - @Vic020 - -commit 2bd2708f9b16bc0e96a389f6bd28aabfc8145779 -Author: wxy -Date: Wed Nov 19 22:20:23 2014 +0800 - - PUB:20141017 pidstat - Monitor and Find Statistics for Linux Procesess - - @johnhoow - -commit 5aa9736f371d7d32ef5c68fdfa12a121c9f6bef6 -Merge: a1b4767 f87f093 -Author: geekpi -Date: Sat Nov 22 10:59:18 2014 +0800 - - Merge pull request #2006 from runningwater/master - - 【翻译中 by runningwater】10 SCP Commands to Transfer Files/Folders in Linux - -commit a1b47670bcadb3b1b185cb0c8f4851072a33fd4d -Merge: 1e413d3 0dc9479 -Author: geekpi -Date: Sat Nov 22 10:58:20 2014 +0800 - - Merge pull request #2007 from SPccman/patch-8 - - Update 20141111 Meet systemd the controversial project taking over a Lin... - -commit 1e413d3232d252cc9f9fe158fd6725d9965f6fb4 -Merge: ddaa80e 2db322f -Author: geekpi -Date: Sat Nov 22 10:57:22 2014 +0800 - - Merge pull request #2009 from geekpi/master - - [Translating] How To Make Raspberry Pi Boot In To GUI By Default - -commit 2db322fa4bf48dfa63610cffc8edc1b974779afd -Author: zhengsihua -Date: Sat Nov 22 10:56:06 2014 +0800 - - translated - -commit a813b7d0c4fe2e68bd66e49ca7152ca0ce7d8c11 -Author: zhengsihua -Date: Sat Nov 22 10:17:19 2014 +0800 - - [Translating] How To Make Raspberry Pi Boot In To GUI By Default - -commit 52bff59cacfd5110fff61f7eb8f97d0bbb2964fc -Author: coloka -Date: Fri Nov 21 23:23:22 2014 +0800 - - 修改文件夹 source -> translated - -commit 8fa646f2f4d7cd52183ea4a7bdd82c58f5557cab -Author: coloka -Date: Fri Nov 21 22:39:52 2014 +0800 - - 【翻译中】20141120 How to visualize memory usage on Linux.md - -commit 988a3f81572a1dbfa0db12b8943784200ae236b7 -Author: coloka -Date: Fri Nov 21 22:34:37 2014 +0800 - - 翻译完成 by coloka - -commit 3b25910a0976d572ac091fe34ec4972eddc6b7b3 -Merge: 4bbc010 ddaa80e -Author: coloka -Date: Fri Nov 21 22:32:35 2014 +0800 - - Merge branch 'master' of https://github.com/LCTT/TranslateProject.git - -commit 4bbc01058ce83f30ac78147092c63401c6e2aec8 -Author: coloka -Date: Fri Nov 21 22:32 \ No newline at end of file diff --git a/gihua b/gihua deleted file mode 100644 index e4cbf7acae..0000000000 --- a/gihua +++ /dev/null @@ -1,232 +0,0 @@ - - SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS - - Commands marked with * may be preceded by a number, _N. - Notes in parentheses indicate the behavior if _N is given. - A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K. - - h H Display this help. - q :q Q :Q ZZ Exit. - --------------------------------------------------------------------------- - - MMOOVVIINNGG - - e ^E j ^N CR * Forward one line (or _N lines). - y ^Y k ^K ^P * Backward one line (or _N lines). - f ^F ^V SPACE * Forward one window (or _N lines). - b ^B ESC-v * Backward one window (or _N lines). - z * Forward one window (and set window to _N). - w * Backward one window (and set window to _N). - ESC-SPACE * Forward one window, but don't stop at end-of-file. - d ^D * Forward one half-window (and set half-window to _N). - u ^U * Backward one half-window (and set half-window to _N). - ESC-) RightArrow * Left one half screen width (or _N positions). - ESC-( LeftArrow * Right one half screen width (or _N positions). - F Forward forever; like "tail -f". - r ^R ^L Repaint screen. - R Repaint screen, discarding buffered input. - --------------------------------------------------- - Default "window" is the screen height. - Default "half-window" is half of the screen height. - --------------------------------------------------------------------------- - - SSEEAARRCCHHIINNGG - - /_p_a_t_t_e_r_n * Search forward for (_N-th) matching line. - ?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line. - n * Repeat previous search (for _N-th occurrence). - N * Repeat previous search in reverse direction. - ESC-n * Repeat previous search, spanning files. - ESC-N * Repeat previous search, reverse dir. & spanning files. - ESC-u Undo (toggle) search highlighting. - &_p_a_t_t_e_r_n * Display only matching lines - --------------------------------------------------- - A search pattern may be preceded by one or more of: - ^N or ! Search for NON-matching lines. - ^E or * Search multiple files (pass thru END OF FILE). - ^F or @ Start search at FIRST file (for /) or last file (for ?). - ^K Highlight matches, but don't move (KEEP position). - ^R Don't use REGULAR EXPRESSIONS. - --------------------------------------------------------------------------- - - JJUUMMPPIINNGG - - g < ESC-< * Go to first line in file (or line _N). - G > ESC-> * Go to last line in file (or line _N). - p % * Go to beginning of file (or _N percent into file). - t * Go to the (_N-th) next tag. - T * Go to the (_N-th) previous tag. - { ( [ * Find close bracket } ) ]. - } ) ] * Find open bracket { ( [. - ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>. - ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_> - --------------------------------------------------- - Each "find close bracket" command goes forward to the close bracket - matching the (_N-th) open bracket in the top line. - Each "find open bracket" command goes backward to the open bracket - matching the (_N-th) close bracket in the bottom line. - - m_<_l_e_t_t_e_r_> Mark the current position with . - '_<_l_e_t_t_e_r_> Go to a previously marked position. - '' Go to the previous position. - ^X^X Same as '. - --------------------------------------------------- - A mark is any upper-case or lower-case letter. - Certain marks are predefined: - ^ means beginning of the file - $ means end of the file - --------------------------------------------------------------------------- - - CCHHAANNGGIINNGG FFIILLEESS - - :e [_f_i_l_e] Examine a new file. - ^X^V Same as :e. - :n * Examine the (_N-th) next file from the command line. - :p * Examine the (_N-th) previous file from the command line. - :x * Examine the first (or _N-th) file from the command line. - :d Delete the current file from the command line list. - = ^G :f Print current file name. - --------------------------------------------------------------------------- - - MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS - - -_<_f_l_a_g_> Toggle a command line option [see OPTIONS below]. - --_<_n_a_m_e_> Toggle a command line option, by name. - __<_f_l_a_g_> Display the setting of a command line option. - ___<_n_a_m_e_> Display the setting of an option, by name. - +_c_m_d Execute the less cmd each time a new file is examined. - - !_c_o_m_m_a_n_d Execute the shell command with $SHELL. - |XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command. - v Edit the current file with $VISUAL or $EDITOR. - V Print version number of "less". - --------------------------------------------------------------------------- - - OOPPTTIIOONNSS - - Most options may be changed either on the command line, - or from within less by using the - or -- command. - Options may be given in one of two forms: either a single - character preceded by a -, or a name preceded by --. - - -? ........ --help - Display help (from command line). - -a ........ --search-skip-screen - Search skips current screen. - -A ........ --SEARCH-SKIP-SCREEN - Search starts just after target line. - -b [_N] .... --buffers=[_N] - Number of buffers. - -B ........ --auto-buffers - Don't automatically allocate buffers for pipes. - -c ........ --clear-screen - Repaint by clearing rather than scrolling. - -d ........ --dumb - Dumb terminal. - -D [_x_n_._n] . --color=_x_n_._n - Set screen colors. (MS-DOS only) - -e -E .... --quit-at-eof --QUIT-AT-EOF - Quit at end of file. - -f ........ --force - Force open non-regular files. - -F ........ --quit-if-one-screen - Quit if entire file fits on first screen. - -g ........ --hilite-search - Highlight only last match for searches. - -G ........ --HILITE-SEARCH - Don't highlight any matches for searches. - -h [_N] .... --max-back-scroll=[_N] - Backward scroll limit. - -i ........ --ignore-case - Ignore case in searches that do not contain uppercase. - -I ........ --IGNORE-CASE - Ignore case in all searches. - -j [_N] .... --jump-target=[_N] - Screen position of target lines. - -J ........ --status-column - Display a status column at left edge of screen. - -k [_f_i_l_e] . --lesskey-file=[_f_i_l_e] - Use a lesskey file. - -K --quit-on-intr - Exit less in response to ctrl-C. - -L ........ --no-lessopen - Ignore the LESSOPEN environment variable. - -m -M .... --long-prompt --LONG-PROMPT - Set prompt style. - -n -N .... --line-numbers --LINE-NUMBERS - Don't use line numbers. - -o [_f_i_l_e] . --log-file=[_f_i_l_e] - Copy to log file (standard input only). - -O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e] - Copy to log file (unconditionally overwrite). - -p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n] - Start at pattern (from command line). - -P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t] - Define new prompt. - -q -Q .... --quiet --QUIET --silent --SILENT - Quiet the terminal bell. - -r -R .... --raw-control-chars --RAW-CONTROL-CHARS - Output "raw" control characters. - -s ........ --squeeze-blank-lines - Squeeze multiple blank lines. - -S ........ --chop-long-lines - Chop (truncate) long lines rather than wrapping. - -t [_t_a_g] .. --tag=[_t_a_g] - Find a tag. - -T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e] - Use an alternate tags file. - -u -U .... --underline-special --UNDERLINE-SPECIAL - Change handling of backspaces. - -V ........ --version - Display the version number of "less". - -w ........ --hilite-unread - Highlight first new line after forward-screen. - -W ........ --HILITE-UNREAD - Highlight first new line after any forward movement. - -x [_N[,...]] --tabs=[_N[,...]] - Set tab stops. - -X ........ --no-init - Don't use termcap init/deinit strings. - -y [_N] .... --max-forw-scroll=[_N] - Forward scroll limit. - -z [_N] .... --window=[_N] - Set size of window. - -" [_c[_c]] . --quotes=[_c[_c]] - Set shell quote characters. - -~ ........ --tilde - Don't display tildes after end of file. - -# [_N] .... --shift=[_N] - Horizontal scroll amount (0 = one half screen width) - ........ --no-keypad - Don't send termcap keypad init/deinit strings. - ........ --follow-name - The F command changes files if the input file is renamed. - ........ --use-backslash - Subsequent options use backslash as escape char. - - - --------------------------------------------------------------------------- - - LLIINNEE EEDDIITTIINNGG - - These keys can be used to edit text being entered - on the "command line" at the bottom of the screen. - - RightArrow ..................... ESC-l ... Move cursor right one character. - LeftArrow ...................... ESC-h ... Move cursor left one character. - ctrl-RightArrow ESC-RightArrow ESC-w ... Move cursor right one word. - ctrl-LeftArrow ESC-LeftArrow ESC-b ... Move cursor left one word. - HOME ........................... ESC-0 ... Move cursor to start of line. - END ............................ ESC-$ ... Move cursor to end of line. - BACKSPACE ................................ Delete char to left of cursor. - DELETE ......................... ESC-x ... Delete char under cursor. - ctrl-BACKSPACE ESC-BACKSPACE ........... Delete word to left of cursor. - ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor. - ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line. - UpArrow ........................ ESC-k ... Retrieve previous command line. - DownArrow ...................... ESC-j ... Retrieve next command line. - TAB ...................................... Complete filename & cycle. - SHIFT-TAB ...................... ESC-TAB Complete filename & reverse cycle. - ctrl-L ................................... Complete filename, list all. - - diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md deleted file mode 100644 index b4ddb4497c..0000000000 --- a/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md +++ /dev/null @@ -1,144 +0,0 @@ -Linux 有问必答: 如何在Ubuntu或者Debian中下载和安装ixgbe驱动 -================================================================================ -> **提问**: 我想为我的Intel 10G网卡下载安装最新的ixgbe。我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? - -Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现代的Linux发版已经将ixgbe作为一个可加载模块。然而,有些情况你不想要你机器上的已经编译和安装的ixgbe驱动。比如,你想要体验ixbge驱动的最新特性。同样,自带内核中的ixgbe中的一个默认问题是不允许你自定义旭东内核参数。如果你想要完全自动一ixgbe驱动(比如 RSS、多队列、中断阈值等等),你需要手动从源码编译ixgbe驱动。 - -这里是如何在Ubuntu、Debian或者它们的衍生版中下载安装ixgbe驱动。 - -### 第一步: 安装前提 ### - -安装之前,需要安装匹配的内核头文件和开发工具包。 - - $ sudo apt-get install linux-headers-$(uname -r) - $ sudo apt-get install gcc make - -### 第二步: 编译Ixgbe驱动 ### - -从[最新的ixgbe驱动][1]中下载源码。 - - $ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz - -如下编译ixgbe驱动。 - - $ tar xvfvz ixgbe-3.23.2.tar.gz - $ cd ixgbe-3.23.2/src - $ make - -### 第三步: 检查Ixgbe驱动 ### - -编译之后,你会看到在ixgbe-3.23.2/src目录下创建了**ixgbe.ko**。这就是会加载到内核之中的ixgbe驱动。 - -用modinfo命令检查内核模块的信息。注意你需要指定模块的绝对路径(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。输出中会显示ixgbe内核的版本。 - - $ modinfo ./ixgbe.ko - ----------- - - filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko - version: 3.23.2 - license: GPL - description: Intel(R) 10 Gigabit PCI Express Network Driver - author: Intel Corporation, - srcversion: 2ADA5E537923E983FA9DAE2 - alias: pci:v00008086d00001560sv*sd*bc*sc*i* - alias: pci:v00008086d00001558sv*sd*bc*sc*i* - alias: pci:v00008086d0000154Asv*sd*bc*sc*i* - alias: pci:v00008086d00001557sv*sd*bc*sc*i* - alias: pci:v00008086d0000154Fsv*sd*bc*sc*i* - alias: pci:v00008086d0000154Dsv*sd*bc*sc*i* - alias: pci:v00008086d00001528sv*sd*bc*sc*i* - alias: pci:v00008086d000010F8sv*sd*bc*sc*i* - alias: pci:v00008086d0000151Csv*sd*bc*sc*i* - alias: pci:v00008086d00001529sv*sd*bc*sc*i* - alias: pci:v00008086d0000152Asv*sd*bc*sc*i* - alias: pci:v00008086d000010F9sv*sd*bc*sc*i* - alias: pci:v00008086d00001514sv*sd*bc*sc*i* - alias: pci:v00008086d00001507sv*sd*bc*sc*i* - alias: pci:v00008086d000010FBsv*sd*bc*sc*i* - alias: pci:v00008086d00001517sv*sd*bc*sc*i* - alias: pci:v00008086d000010FCsv*sd*bc*sc*i* - alias: pci:v00008086d000010F7sv*sd*bc*sc*i* - alias: pci:v00008086d00001508sv*sd*bc*sc*i* - alias: pci:v00008086d000010DBsv*sd*bc*sc*i* - alias: pci:v00008086d000010F4sv*sd*bc*sc*i* - alias: pci:v00008086d000010E1sv*sd*bc*sc*i* - alias: pci:v00008086d000010F1sv*sd*bc*sc*i* - alias: pci:v00008086d000010ECsv*sd*bc*sc*i* - alias: pci:v00008086d000010DDsv*sd*bc*sc*i* - alias: pci:v00008086d0000150Bsv*sd*bc*sc*i* - alias: pci:v00008086d000010C8sv*sd*bc*sc*i* - alias: pci:v00008086d000010C7sv*sd*bc*sc*i* - alias: pci:v00008086d000010C6sv*sd*bc*sc*i* - alias: pci:v00008086d000010B6sv*sd*bc*sc*i* - depends: ptp,dca - vermagic: 3.11.0-19-generic SMP mod_unload modversions - parm: InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int) - parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int) - parm: MQ:Disable or enable Multiple Queues, default 1 (array of int) - parm: DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) - parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) - parm: VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int) - parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int) - parm: VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int) - parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int) - parm: LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int) - parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int) - parm: LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int) - parm: LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int) - parm: LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int) - parm: FdirPballoc:Flow Director packet buffer allocation level: - 1 = 8k hash filters or 2k perfect filters - 2 = 16k hash filters or 4k perfect filters - 3 = 32k hash filters or 8k perfect filters (array of int) - parm: AtrSampleRate:Software ATR Tx packet sample rate (array of int) - parm: FCoE:Disable or enable FCoE Offload, default 1 (array of int) - parm: LRO:Large Receive Offload (0,1), default 1 = on (array of int) - parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int) - -### 第四步: 测试Ixgbe驱动 ### - -在测试新的模块之前,如果你内核中已存在旧版本ixgbe模块的话你需要先移除它。 - - $ sudo rmmod ixgbe - -接着使用insmod命令插入新编译的ixgbe模块。确保指定一个模块的绝对路径。 - - $ sudo insmod ./ixgbe.ko - -如果上面的命令成功运行,就不会显示任何的信息。 - -如果你需要,你可以尝试加入额外的参数。比如,设置RSS的队列数量为16: - - $ sudo insmod ./ixgbe.ko RSS=16 - -检查**/var/log/kern.log**来查看ixgbe驱动是否成功激活。查看日志中的“Intel(R) 10 Gigabit PCI Express Network Driver”。ixgbe的版本信息应该和之前的modinfo的显示应该相同。 - - Sep 18 14:48:52 spongebob kernel: [684717.906254] Intel(R) 10 Gigabit PCI Express Network Driver - version 3.22.3 - -![](https://farm8.staticflickr.com/7583/16056721867_f06e152076_c.jpg) - -### 第五步: 安装Ixgbe驱动 ### - -一旦你验证新的ixgbe驱动已经成功家在,最后一步是在你的系统中安装驱动。 - - $ sudo make install - -**ixgbe.ko** 接着会安装在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。 - -这一步起,你可以用下面的modprobe命令加载ixgbe驱动了。注意你不必再指定绝对路径。 - - $ sudo modprobe ixgbe - -如果你希望在启动时家在ixgbe驱动,你可以在/etc/modules的最后加入“ixgbe”。 - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/download-install-ixgbe-driver-ubuntu-debian.html - -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://sourceforge.net/projects/e1000/files/ixgbe%20stable/ \ No newline at end of file From fdfd323db33cf60d3d3756528c7aae926cc2649b Mon Sep 17 00:00:00 2001 From: DeadFire Date: Sun, 25 Jan 2015 21:41:27 +0800 Subject: [PATCH 058/725] =?UTF-8?q?20150125-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dern Open Source Code Editors For Linux.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md diff --git a/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md b/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md new file mode 100644 index 0000000000..d3ed7d6dd9 --- /dev/null +++ b/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md @@ -0,0 +1,86 @@ +4 Best Modern Open Source Code Editors For Linux +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Open_Source_Editors.jpeg) + +Looking for **best programming editors in Linux**? If you ask the old school Linux users, their answer would be Vi, Vim, Emacs, Nano etc. But I am not talking about them. I am going to talk about new age, cutting edge, great looking, sleek and yet powerful, feature rich **best open source code editors for Linux** that would enhance your programming experience. + +### Best modern Open Source editors for Linux ### + +I use Ubuntu as my main desktop and hence I have provided installation instructions for Ubuntu based distributions. But this doesn’t make this list as **best text editors for Ubuntu** because the list is apt for any Linux distribution. Just to add, the list is not in any particular priority order. + +#### Brackets #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/brackets_UI.jpeg) + +[Brackets][1] is an open source code editor from [Adobe][2]. Brackets focuses exclusively on the needs of web designers with built in support for HTML, CSS and Java Script. It’s light weight and yet powerful. It provides you with inline editing and live preview. There are plenty of plugins available to further enhance your experience with Brackets. + +To [install Brackets in Ubuntu][3] and Ubuntu based distributions such as Linux Mint, you can use this unofficial PPA: + + sudo add-apt-repository ppa:webupd8team/brackets + sudo apt-get update + sudo apt-get install brackets + +For other Linux distributions, you can get the source code as well as binaries for Linux, OS X and Windows on its website. + +- [Download Brackets Source Code and Binaries][5] + +#### Atom #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Atom_Editor.jpeg) + +[Atom][5] is another modern and sleek looking open source editor for programmers. Atom is developed by Github and promoted as a “hackable text editor for the 21st century”. The looks of Atom resembles a lot like Sublime Text editor, a hugely popular but closed source text editors among programmers. + +Atom has recently released .deb and .rpm packages so that one can easily install Atom in Debian and Fedora based Linux distributions. Of course, its source code is available as well. + +- [Download Atom .deb][6] +- [Download Atom .rpm][7] +- [Get Atom source code][8] + +#### Lime Text #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/LimeTextEditor.jpeg) + +So you like Sublime Text editor but you are not comfortable with the fact that it is not open source. No worries. We have an [open source clone of Sublime Text][9], called [Lime Text][10]. It is built on Go, HTML and QT. The reason behind cloning of Sublime Text is that there are numerous bugs in Sublime Text 2 and Sublime Text 3 is in beta since forever. There are no transparency in its development, on whether the bugs are being fixed or not. + +So open source lovers, rejoice and get the source code of Lime Text from the link below: + +- [Get Lime Text Source Code][11] + +#### Light Table #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Light_Table.jpeg) + +Flaunted as “the next generation code editor”, [Light Table][12] is another modern looking, feature rich open source editor which is more of an IDE than a mere text editor. There are numerous extensions available to enhance its capabilities. Inline evaluation is what you would love in it. You have to use it to believe how useful Light Table actually is. + +- [Get Light Table Source Code][13] + +### What’s your pick? ### + +No, we are not limited to just four code editors in Linux. The list was about modern editors for programmers. Of course you have plenty of other options such as [Notepad++ alternative Notepadqq][14] or [SciTE][15] and many more. So, among these four, which one is your favorite code editor for Linux? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/best-modern-open-source-code-editors-for-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://brackets.io/ +[2]:http://www.adobe.com/ +[3]:http://itsfoss.com/install-brackets-ubuntu/ +[4]:https://github.com/adobe/brackets/releases +[5]:https://atom.io/ +[6]:https://atom.io/download/deb +[7]:https://atom.io/download/rpm +[8]:https://github.com/atom/atom/blob/master/docs/build-instructions/linux.md +[9]:http://itsfoss.com/lime-text-open-source-alternative/ +[10]:http://limetext.org/ +[11]:https://github.com/limetext/lime +[12]:http://lighttable.com/ +[13]:https://github.com/LightTable/LightTable +[14]:http://itsfoss.com/notepadqq-notepad-for-linux/ +[15]:http://itsfoss.com/scite-the-notepad-for-linux/ \ No newline at end of file From fe56ba65792cae43a69031fdf5b464c47f1a645b Mon Sep 17 00:00:00 2001 From: DeadFire Date: Sun, 25 Jan 2015 21:50:59 +0800 Subject: [PATCH 059/725] =?UTF-8?q?20150125-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Your Linux OS X Unix Shell Environment.md | 692 ++++++++++++++++++ 1 file changed, 692 insertions(+) create mode 100644 sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md diff --git a/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md b/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md new file mode 100644 index 0000000000..eafc6d21e5 --- /dev/null +++ b/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md @@ -0,0 +1,692 @@ +A Shell Primer: Master Your Linux, OS X, Unix Shell Environment +================================================================================ +On a Linux or Unix-like systems each user and process runs in a specific environment. An environment includes variables, settings, aliases, functions and more. Following is a very brief introduction to some useful shell environment commands, including examples of how to use each command and setup your own environment to increase productivity in the command prompt. + +![](http://s0.cyberciti.org/uploads/cms/2015/01/bash-shell-welcome-image.jpg) + +### Finding out your current shell ### + +Type any one of the following command at the Terminal app: + + ps $$ + ps -p $$ + +OR + + echo "$0" + +Sample outputs: + +[![Fig.01: Finding out your shell name](http://s0.cyberciti.org/uploads/cms/2015/01/finding-your-shell-like-a-pro.jpg)][1] +Fig.01: Finding out your shell name + +### Finding out installed shells ### + +To find out the full path for installed shell type: + + type -a zsh + type -a ksh + type -a sh + type -a bash + +Sample outputs: + +[![Fig.02: Finding out your shell path](http://s0.cyberciti.org/uploads/cms/2015/01/finding-and-verifying-shell-path.jpg)][2] +Fig.02: Finding out your shell path + +The /etc/shells file contains a list of the shells on the system. For each shell a single line should be present, consisting of the shell's path, relative to root. Type the following [cat command][3] to see shell database: + + cat /etc/shells + +Sample outputs: + + # List of acceptable shells for chpass(1). + # Ftpd will not allow users to connect who are not using + # one of these shells. + + /bin/bash + /bin/csh + /bin/ksh + /bin/sh + /bin/tcsh + /bin/zsh + /usr/local/bin/fish + +### Changing your current shell temporarily ### + +Just type the shell name. In this example, I'm changing from bash to zsh: + + zsh + +You just changed your shell temporarily to zsh. Also known as subshell. To exit from subshell/temporary shell, type the following command or hit CTRL-d: + + exit + +### Finding out subshell level/temporary shell nesting level ### + +The $SHLVL incremented by one each time an instance of bash is started. Type the following command: + + echo "$SHLVL" + +Sample outputs: + +[![Fig. 03: Bash shell nesting level (subshell numbers)](http://s0.cyberciti.org/uploads/cms/2015/01/a-nested-shell-level-command.jpg)][4] +Fig. 03: Bash shell nesting level (subshell numbers) + +### Changing your current shell permanently with chsh command ### + +Want to change your own shell from bash to zsh permanently? Try: + + chsh -s /bin/zsh + +Want to change the other user's shell from bash to ksh permanently? Try: + + sudo chsh -s /bin/ksh userNameHere + +### Finding out your current environment ### + +You need to use the + + env + env | more + env | less + env | grep 'NAME' + +Sample outputs: + + TERM_PROGRAM=Apple_Terminal + SHELL=/bin/bash + TERM=xterm-256color + TMPDIR=/var/folders/6x/45252d6j1lqbtyy_xt62h40c0000gn/T/ + Apple_PubSub_Socket_Render=/tmp/launch-djaOJg/Render + TERM_PROGRAM_VERSION=326 + TERM_SESSION_ID=16F470E3-501C-498E-B315-D70E538DA825 + USER=vivek + SSH_AUTH_SOCK=/tmp/launch-uQGJ2h/Listeners + __CF_USER_TEXT_ENCODING=0x1F5:0:0 + PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/go/bin:/usr/local/sbin/modemZapp:/Users/vivek/google-cloud-sdk/bin + __CHECKFIX1436934=1 + PWD=/Users/vivek + SHLVL=2 + HOME=/Users/vivek + LOGNAME=vivek + LC_CTYPE=UTF-8 + DISPLAY=/tmp/launch-6hNAhh/org.macosforge.xquartz:0 + _=/usr/bin/env + OLDPWD=/Users/vivek + +Here is a table of commonly used bash shell variables: + +![Fig.04: Common bash environment variables](http://s0.cyberciti.org/uploads/cms/2015/01/common-shell-vars.jpg) +Fig.04: Common bash environment variables + +> **Warning**: It is always a good idea not to change the following environment variables. Some can be changed and may results into unstable session for you: +> +> SHELL +> +> UID +> +> RANDOM +> +> PWD +> +> PPID +> +> SSH_AUTH_SOCK +> +> USER +> +> HOME +> +> LINENO + +### Displays the values of environment variables ### + +Use any one of the following command to show the values of environment variable called HOME: + + ## Use printenv ## + printenv HOME + + ## or use echo ## + echo "$HOME" + + # or use printf for portability ## + printf "%s\n" "$HOME" + +Sample outputs: + + /home/vivek + +### Adding or setting a new variables ### + +The syntax is as follows in bash or zsh or sh or ksh shell: + + ## The syntax is ## + VAR=value + FOO=bar + + ## Set the default editor to vim ## + EDITOR=vim + export $EDITOR + + ## Set default shell timeout for security ## + TMOUT=300 + export TMOUT + + ## You can directly use export command to set the search path for commands ## + export PATH=$PATH:$HOME/bin:/usr/local/bin:/path/to/mycoolapps + +Again, use the printenv or echo or printf command to see the values of environment variables called PATH, EDITOR, and TMOUT: + + printenv PATH + echo "$EDITOR" + printf "%s\n" $TMOUT + +### How do I change an existing environment variables? ### + +The syntax is as follows: + + export VAR=value + ## OR ## + VAR=value + export $VAR + + ## Change the default editor from vim to emacs ## + echo "$EDITOR" ## <--- print vim + EDITOR=emacs ## <--- change it + export $EDITOR ## <--- export it for next session too + echo "$EDITOR" ## <--- print emacs + +The syntax is as follows for the **tcsh shell for adding or changing a variables**: + + ## Syntax + setenv var value + printenv var + + ## Set foo variable with bar as a value ## + setenv foo bar + echo "$foo" + printenv foo + + ## Set PATH variable ## + setenv PATH $PATH\:$HOME/bin + echo "$PATH" + + ## set PAGER variable ## + setenv PAGER most + printf "%s\n" $PAGER + +### Finding your bash shell configuration files ### + +Type the following command to list your bash shell files, enter: + + ls -l ~/.bash* ~/.profile /etc/bash* /etc/profile + +Sample output: + +[![Fig.05: List all bash environment configuration files](http://s0.cyberciti.org/uploads/cms/2015/01/list-bash-enviroment-variables.jpg)][5] +Fig.05: List all bash environment configuration files + +To look at all your bash config files, enter: + + less ~/.bash* ~/.profile /etc/bash* /etc/profile + +You can edit bash config files one by one using the text editor such as vim or emacs: + + vim ~/.bashrc + +To edit files located in /etc/, type: + + ## first make a backup.. just in case + sudo cp -v /etc/bashrc /etc/bashrc.bak.22_jan_15 + + ######################################################################## + ## Alright, edit it to your hearts content and by all means, have fun ## + ## with your environment or just increase the productivity :) ## + ######################################################################## + sudo vim /etc/bashrc + +### Confused by Bash shell Initialization files? ### + +The following "bash file initialization" graph will help you: + +![](http://s0.cyberciti.org/uploads/cms/2015/01/BashStartupfiles.jpg) + +Depending on which shell is set up as your default, your user profile or system profile can be one of the following: + +### Finding your zsh shell configuration files ### + +The zsh [wiki][6] recommend the following command: + + strings =zsh | grep zshrc + +Sample outputs: + + /etc/zshrc + .zshrc + +Type the following command to list your zsh shell files, enter: + + ls -l /etc/zsh/* /etc/profile ~/.z* + +To look at all your zsh config files, enter: + + less /etc/zsh/* /etc/profile ~/.z* + +### Finding your ksh shell configuration files ### + +1. See ~/.profile or /etc/profile file. + +### Finding your tcsh shell configuration files ### + +1. See ~/.login, ~/.cshrc for the C shell. +2. See ~/.tcshrc and ~/.cshrc for the TC shell. + +### Can I have a script like this execute automatically every time I login? ### + +Yes, add your commands or aliases or other settings to ~/.bashrc (bash shell) or ~/.profile (sh/ksh/bash) or ~/.login (csh/tcsh) file. + +### Can I have a script like this execute automatically every time I logout? ### + +Yes, add your commands or aliases or other settings to ~/.bash_logout (bash) or ~/.logout (csh/tcsh) file. + +### History: Getting more info about your shell session ### + +Just type the history command to see session history: + + history + +Sample outputs: + + 9 ls + 10 vi advanced-cache.php + 11 cd .. + 12 ls + 13 w + 14 cd .. + 15 ls + 16 pwd + 17 ls + .... + .. + ... + 91 hddtemp /dev/sda + 92 yum install hddtemp + 93 hddtemp /dev/sda + 94 hddtemp /dev/sg0 + 95 hddtemp /dev/sg1 + 96 smartctl -d ata -A /dev/sda | grep -i temperature + 97 smartctl -d ata -A /dev/sg1 | grep -i temperature + 98 smartctl -A /dev/sg1 | grep -i temperature + 99 sensors + +Type history 20 to see the last 20 commands from your history: + + history 20 + +Sample outputs: + +[![Fig.06: View session history in the bash shell using history command](http://s0.cyberciti.org/uploads/cms/2015/01/history-outputs.jpg)][7] +Fig.06: View session history in the bash shell using history command + +You can reuses commands. Simply hit [Up] and [Down] arrow keys to see previous commands. Press [CTRL-r] from the shell prompt to search backwards through history buffer or file for a command. To repeat last command just type !! at a shell prompt: + + ls -l /foo/bar + !! + +To see command #93 (hddtemp /dev/sda)from above history session, type: + + !93 + +### Changing your identity with sudo or su ### + +The syntax is as follows: + + su userName + + ## To log in as a tom user ## + su tom + + ## To start a new login shell for tom user ## + su tom + + ## To login as root user ## + su - + + ## The sudo command syntax (must be configured on your system) ## + sudo -s + sudo tom + +See "[Linux Run Command As Another User][8]" post for more on sudo, su and runuser commands. + +### Shell aliases ### + +An alias is nothing but shortcut to commands. + +### Listing aliases ### + +Type the following command: + + alias + +Sample outputs: + + alias ..='cd ..' + alias ...='cd ../../../' + alias ....='cd ../../../../' + alias .....='cd ../../../../' + alias .4='cd ../../../../' + alias .5='cd ../../../../..' + alias bc='bc -l' + alias cd..='cd ..' + alias chgrp='chgrp --preserve-root' + alias chmod='chmod --preserve-root' + alias chown='chown --preserve-root' + alias cp='cp -i' + alias dnstop='dnstop -l 5 eth1' + alias egrep='egrep --color=auto' + alias ethtool='ethtool eth1' + +### Create an alias ### + +The bash/zsh syntax is: + + alias c='clear' + alias down='sudo /sbin/shutdown -h now' + +Type c alias for the system command clear, so we can type c instead of clear command to clear the screen: + + c + +Or type down to shutdown the Linux based server: + + down + +You can create as many aliases you want. See "[30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X][9]" for practical usage of aliases on Unix-like system. + +### Shell functions ### + +Bash/ksh/zsh functions allows you further customization of your environment. In this example, I'm creating a simple bash function called memcpu() to display top 10 cpu and memory eating process: + + memcpu() { echo "*** Top 10 cpu eating process ***"; ps auxf | sort -nr -k 3 | head -10; + echo "*** Top 10 memory eating process ***"; ps auxf | sort -nr -k 4 | head -10; } + +Just type memcpu to see the info on screen: + + memcpu + + *** Top 10 cpu eating process *** + nginx 39559 13.0 0.2 264020 35168 ? S 04:26 0:00 \_ /usr/bin/php-cgi + nginx 39545 6.6 0.1 216484 13088 ? S 04:25 0:04 \_ /usr/bin/php-cgi + nginx 39471 6.2 0.6 273352 81704 ? S 04:22 0:17 \_ /usr/bin/php-cgi + nginx 39544 5.7 0.1 216484 13084 ? S 04:25 0:03 \_ /usr/bin/php-cgi + nginx 39540 5.5 0.1 221260 19296 ? S 04:25 0:04 \_ /usr/bin/php-cgi + nginx 39542 5.4 0.1 216484 13152 ? S 04:25 0:04 \_ /usr/bin/php-cgi + nixcraft 39543 5.3 0.1 216484 14096 ? S 04:25 0:04 \_ /usr/bin/php-cgi + nixcraft 39538 5.2 0.1 221248 18608 ? S 04:25 0:04 \_ /usr/bin/php-cgi + nixcraft 39539 5.0 0.1 216484 16272 ? S 04:25 0:04 \_ /usr/bin/php-cgi + nixcraft 39541 4.8 0.1 216484 14860 ? S 04:25 0:04 \_ /usr/bin/php-cgi + + *** Top 10 memory eating process *** + 498 63859 0.5 4.0 2429652 488084 ? Ssl 2014 177:41 memcached -d -p 11211 -u memcached -m 2048 -c 18288 -P /var/run/memcached/memcached.pid -l 10.10.29.68 -L + mysql 64221 4.2 3.4 4653600 419868 ? Sl 2014 1360:40 \_ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock + nixcraft 39418 0.4 1.1 295312 138624 ? S 04:17 0:02 | \_ /usr/bin/php-cgi + nixcraft 39419 0.5 0.9 290284 113036 ? S 04:18 0:02 | \_ /usr/bin/php-cgi + nixcraft 39464 0.7 0.8 294356 99200 ? S 04:20 0:02 | \_ /usr/bin/php-cgi + nixcraft 39469 0.3 0.7 288400 91256 ? S 04:20 0:01 | \_ /usr/bin/php-cgi + nixcraft 39471 6.2 0.6 273352 81704 ? S 04:22 0:17 \_ /usr/bin/php-cgi + vivek 39261 2.2 0.6 253172 82812 ? S 04:05 0:28 \_ /usr/bin/php-cgi + squid 9995 0.0 0.5 175152 72396 ? S 2014 27:00 \_ (squid) -f /etc/squid/squid.conf + cybercit 3922 0.0 0.4 303380 56304 ? S Jan10 0:13 | \_ /usr/bin/php-cgi + +See "[how to write and use shell functions][10]" for more information. + +### Putting it all together: Customizing your Linux or Unix bash shell working environment ### + +Now, you are ready to configure your environment using bash shell. I'm only covering bash. But the theory remains same from zsh, ksh and other common shells. Let us see how to adopt shell to my need as a sysadmin. Edit your ~/.bashrc file and append settings. Here are some useful configuration options for you. + +#### #1: Setting up bash path and environment variables #### + + # Set path ## + export PATH=$PATH:/usr/local/bin:/home/vivek/bin:/opt/firefox/bin:/opt/oraapp/bin + + # Also set path for cd command + export CDPATH=.:$HOME:/var/www + +Use less or most command as a pager: + + export PAGER=less + +Set vim as default text editor for us: + + export EDITOR=vim + export VISUAL=vim + export SVN_EDITOR="$VISUAL" + +Set Oracle database specific stuff: + + export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server + export ORACLE_SID=XE + export NLS_LANG=$($ORACLE_HOME/bin/nls_lang.sh) + +Set JAVA_HOME and other paths for java as per java version: + + export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre + + # Add ORACLE, JAVA to PATH + export PATH=$PATH:$ORACLE_HOME/bin:$JAVA_HOME/bin + +Secure my remote [SSH login using keychain for password less login][11]: + + # No need to input password again ever + /usr/bin/keychain $HOME/.ssh/id_rsa + source $HOME/.keychain/$HOSTNAME-sh + +Finally, [turn on bash command completion][12] + + source /etc/bash_completio + +#### #2: Setting up bash command prompt #### + +Set [custom bash prompt (PS1)][13]: + + PS1='{\u@\h:\w }\$ ' + +#### #3: Setting default file permissions #### + + ## Set default to 644 ## + umask 022 + +#### #4: Control your shell history settings #### + + # Dont put duplicate lines in the history + HISTCONTROL=ignoreboth + + # Ignore these commands + HISTIGNORE="reboot:shutdown *:ls:pwd:exit:mount:man *:history" + + # Set history length via HISTSIZE and HISTFILESIZE + export HISTSIZE=10000 + export HISTFILESIZE=10000 + + # Add timestamp to history file. + export HISTTIMEFORMAT="%F %T " + + #Append to history, don't overwrite + shopt -s histappend + +#### #5: Set the time zone for your session #### + + ## set to IST for my own session ## + TZ=Asia/Kolkata + +#### #6: Setting up shell line editing interface #### + + ## use a vi-style line editing interface for bash from default emacs mode ## + set -o vi + +#### #7: Setting up your favorite aliases #### + + ## add protection ## + alias rm='rm -i' + alias cp='cp -i' + alias mv='mv -i' + + ## Memcached ## + alias mcdstats='/usr/bin/memcached-tool 10.10.29.68:11211 stats' + alias mcdshow='/usr/bin/memcached-tool 10.10.29.68:11211 display' + alias mcdflush='echo "flush_all" | nc 10.10.29.68 11211' + + ## Default command options ## + alias vi='vim' + alias grep='grep --color=auto' + alias egrep='egrep --color=auto' + alias fgrep='fgrep --color=auto' + alias bc='bc -l' + alias wget='wget -c' + alias chown='chown --preserve-root' + alias chmod='chmod --preserve-root' + alias chgrp='chgrp --preserve-root' + alias rm='rm -I --preserve-root' + alias ln='ln -i' + +Here are some additional OS X Unix bash shell aliases: + + # Open desktop apps from bash + alias preview="open -a '$PREVIEW'" + alias safari="open -a safari" + alias firefox="open -a firefox" + alias chrome="open -a google\ chrome" + alias f='open -a Finder ' + + # Get rid of those .DS_Store files + alias dsclean='find . -type f -name .DS_Store -delete' + +#### #8: Colour my world #### + + # Get colored grep output + alias grep='grep --color=auto' + export GREP_COLOR='1;33' + + # colored ls too + export LSCOLORS='Gxfxcxdxdxegedabagacad' + # Gnu/linux ls + ls='ls --color=auto' + + # BSD/os x ls command + # alias ls='ls -G' + +#### #9: Setting up your favorite bash functions #### + + # Show top 10 history command on screen + function ht { + history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head + } + + # Wrapper for host and ping command + # Accept http:// or https:// or ftps:// names for domain and hostnames + _getdomainnameonly(){ + local h="$1" + local f="${h,,}" + # remove protocol part of hostname + f="${f#http://}" + f="${f#https://}" + f="${f#ftp://}" + f="${f#scp://}" + f="${f#scp://}" + f="${f#sftp://}" + # remove username and/or username:password part of hostname + f="${f#*:*@}" + f="${f#*@}" + # remove all /foo/xyz.html* + f=${f%%/*} + # show domain name only + echo "$f" + } + + + ping(){ + local array=( $@ ) # get all args in an array + local len=${#array[@]} # find the length of an array + local host=${array[$len-1]} # get the last arg + local args=${array[@]:0:$len-1} # get all args before the last arg in $@ in an array + local _ping="/bin/ping" + local c=$(_getdomainnameonly "$host") + [ "$t" != "$c" ] && echo "Sending ICMP ECHO_REQUEST to \"$c\"..." + # pass args and host + $_ping $args $c + } + + host(){ + local array=( $@ ) + local len=${#array[@]} + local host=${array[$len-1]} + local args=${array[@]:0:$len-1} + local _host="/usr/bin/host" + local c=$(_getdomainnameonly "$host") + [ "$t" != "$c" ] && echo "Performing DNS lookups for \"$c\"..." + $_host $args $c + } + +#### #10: Configure bash shell behavior via shell shopt options command #### + +Finally, you can [make changes to your bash shell environment using set and shopt][14] commands: + + # Correct dir spellings + shopt -q -s cdspell + + # Make sure display get updated when terminal window get resized + shopt -q -s checkwinsize + + # Turn on the extended pattern matching features + shopt -q -s extglob + + # Append rather than overwrite history on exit + shopt -s histappend + + # Make multi-line commandsline in history + shopt -q -s cmdhist + + # Get immediate notification of background job termination + set -o notify + + # Disable [CTRL-D] which is used to exit the shell + set -o ignoreeof + +### Conclusion ### + +This post is by no means comprehensive. It provided a short walkthrough of how to customize your enviorment. For a thorough look at bash/ksh/zsh/csh/tcsh capabilities, I suggest you read the man page by typing the following command: + + man bash + man zsh + man tcsh + man ksh + +> This article was contributed by Aadrika T. J.; Editing and additional content added by admin. You can too [contribute to nixCraft][15]. + +-------------------------------------------------------------------------------- + +via: http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/ + +作者:[nixCraft][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.cyberciti.biz/tips/about-us +[1]:http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/attachment/finding-your-shell-like-a-pro/ +[2]:http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/attachment/finding-and-verifying-shell-path/ +[3]:http://www.cyberciti.biz/faq/linux-unix-appleosx-bsd-cat-command-examples/ +[4]:http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/attachment/a-nested-shell-level-command/ +[5]:http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/attachment/list-bash-enviroment-variables/ +[6]:http://zshwiki.org/home/config/files +[7]:http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/attachment/history-outputs/ +[8]:http://www.cyberciti.biz/open-source/command-line-hacks/linux-run-command-as-different-user/ +[9]:http://www.cyberciti.biz/tips/bash-aliases-mac-centos-linux-unix.html +[10]:http://bash.cyberciti.biz/guide/Chapter_9:_Functions +[11]:http://www.cyberciti.biz/faq/ssh-passwordless-login-with-keychain-for-scripts/ +[12]:http://www.cyberciti.biz/faq/fedora-redhat-scientific-linuxenable-bash-completion/ +[13]:http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html +[14]:http://bash.cyberciti.biz/guide/Setting_shell_options +[15]:http://www.cyberciti.biz/write-for-nixcraft/ \ No newline at end of file From 4f2ddf816a43342b681d51f36d0a62ad7913ad70 Mon Sep 17 00:00:00 2001 From: Ping Yang Date: Sun, 25 Jan 2015 22:02:10 +0800 Subject: [PATCH 060/725] Translating --- ...o create and configure a MySQL user from the command line.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md b/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md index 09f29434e4..c021158400 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md +++ b/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md @@ -1,3 +1,5 @@ +Ping Translating + Linux FAQs with Answers--How to create and configure a MySQL user from the command line ================================================================================ > **Question**: I would like to create a new user account on MySQL server, and apply appropriate permissions and resource limits to the account. How can I create and configure a MySQL user from the command line? From 172b9dc837f00143613422813eb71a444f0a4e87 Mon Sep 17 00:00:00 2001 From: Ping Yang Date: Sun, 25 Jan 2015 22:05:57 +0800 Subject: [PATCH 061/725] Translating --- ...nux FAQs with Answers--How to check memory usage on Linux.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md index ecd5ba10da..0ed5ab4394 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md +++ b/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md @@ -1,3 +1,5 @@ +Ping Translating + Linux FAQs with Answers--How to check memory usage on Linux ================================================================================ > **Question**: I would like to monitor memory usage on my Linux system. What are the available GUI-based or command-line tools for checking current memory usage of Linux? From 0a49bf86cd5bf22e8537a8e1d548f12d0ff39316 Mon Sep 17 00:00:00 2001 From: Ping Yang Date: Sun, 25 Jan 2015 22:11:38 +0800 Subject: [PATCH 062/725] Translating --- ...AQs with Answers--How to set a custom HTTP header in curl.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md b/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md index 37622009f1..f52527cd8a 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md +++ b/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md @@ -1,3 +1,5 @@ +Ping Translating + Linux FAQs with Answers--How to set a custom HTTP header in curl ================================================================================ > **Question**: I am trying to fetch a URL with curl command, but want to set a few custom header fields in the outgoing HTTP request. How can I use a custom HTTP header with curl? From 77b3ca0f17a749b68e6a46b5bd76decfad3c9e1a Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 25 Jan 2015 22:49:39 +0800 Subject: [PATCH 063/725] PUB:20141117 Restricting process CPU usage using nice cpulimit and cgroups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @coloka 翻译的不错! --- ...U usage using nice cpulimit and cgroups.md | 195 +++++++++++++++++ ...U usage using nice cpulimit and cgroups.md | 196 ------------------ 2 files changed, 195 insertions(+), 196 deletions(-) create mode 100644 published/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md delete mode 100644 translated/tech/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md diff --git a/published/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md b/published/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md new file mode 100644 index 0000000000..5ca233ae98 --- /dev/null +++ b/published/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md @@ -0,0 +1,195 @@ +使用 nice、cpulimit 和 cgroups 限制 cpu 占用率 +================================================================================ + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/juggle.jpg) + +Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的能够正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。 + +但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢? + +**答案是需要由用户来为内核指定进程的优先级** + +大部分进程启动时的优先级是相同的,因此Linux内核会公平地进行调度。 如果想让一个CPU密集型的进程运行在较低优先级,那么你就得事先配置好调度器。 + +下面介绍3种控制进程运行时间的方法: + +- 使用 nice 命令手动降低任务的优先级。 +- 使用 cpulimit 命令不断的暂停进程,以控制进程所占用处理能力不超过特定限制。 +- 使用linux内建的**control groups(控制组)**功能,它提供了限制进程资源消耗的机制。 + +我们来看一下这3个工具的工作原理和各自的优缺点。 + +### 模拟高cpu占用率 ### + +在分析这3种技术前,我们要先安装一个工具来模拟高CPU占用率的场景。我们会用到CentOS作为测试系统,并使用[Mathomatic toolkit][1]中的质数生成器来模拟CPU负载。 + +很不幸,在CentOS上这个工具没有预编译好的版本,所以必须要从源码进行安装。先从 http://mathomatic.orgserve.de/mathomatic-16.0.5.tar.bz2 这个链接下载源码包并解压。然后进入 **mathomatic-16.0.5/primes** 文件夹,运行 **make** 和 **sudo make install** 进行编译和安装。这样,就把 **matho-primes** 程序安装到了 **/usr/local/bin** 目录中。 + +接下来,通过命令行运行: + + /usr/local/bin/matho-primes 0 9999999999 > /dev/null & + +程序运行后,将输出从0到9999999999之间的质数。因为我们并不需要这些输出结果,直接将输出重定向到/dev/null就好。 + +现在,使用top命令就可以看到matho-primes进程榨干了你所有的cpu资源。 + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image00.jpg) + +好了,接下来(按q键)退出 top 并杀掉 matho-primes 进程(使用 fg 命令将进程切换到前台,再按 CTRL+C) + +### nice命令 ### + +下来介绍一下nice命令的使用方法,nice命令可以修改进程的优先级,这样就可以让进程运行得不那么频繁。 **这个功能在运行cpu密集型的后台进程或批处理作业时尤为有用。** nice值的取值范围是[-20,19],-20表示最高优先级,而19表示最低优先级。 Linux进程的默认nice值为0。使用nice命令(不带任何参数时)可以将进程的nice值设置为10。这样调度器就会将此进程视为较低优先级的进程,从而减少cpu资源的分配。 + +下面来看一个例子,我们同时运行两个 **matho-primes** 进程,一个使用nice命令来启动运行,而另一个正常启动运行: + + nice matho-primes 0 9999999999 > /dev/null & + matho-primes 0 9999999999 > /dev/null & + +再运行top命令。 + + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image05.jpg) + +看到没,正常运行的进程(nice值为0)获得了更多的cpu运行时间,相反的,用nice命令运行的进程占用的cpu时间会较少(nice值为10)。 + +在实际使用中,如果你要运行一个CPU密集型的程序,那么最好用nice命令来启动它,这样就可以保证其他进程获得更高的优先级。 也就是说,即使你的服务器或者台式机在重载的情况下,也可以快速响应。 + +nice 还有一个关联命令叫做 renice,它可以在运行时调整进程的 nice 值。使用 renice 命令时,要先找出进程的 PID。下面是一个例子: + + renice +10 1234 + +其中,1234是进程的 PID。 + +测试完 **nice** 和 **renice** 命令后,记得要将 **matho-primes** 进程全部杀掉。 + +### cpulimit命令 ### + +接下来介绍 **cpulimit** 命令的用法。 **cpulimit** 命令的工作原理是为进程预设一个 cpu 占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。 + +cpulimit 的优势是可以控制进程的cpu使用率的上限值。但与 nice 相比也有缺点,那就是即使 cpu 是空闲的,进程也不能完全使用整个 cpu 资源。 + +在 CentOS 上,可以用下面的方法来安装它: + + wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip + unzip cpulimit.zip + cd cpulimit-master + make + sudo cp src/cpulimit /usr/bin + +上面的命令行,会先从从 GitHub 上将源码下载到本地,然后再解压、编译、并安装到 /usr/bin 目录下。 + +cpulimit 的使用方式和 nice 命令类似,但是需要用户使用 **-l** 选项显式地定义进程的 cpu 使用率上限值。举例说明: + + cpulimit -l 50 matho-primes 0 9999999999 > /dev/null & + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image03.jpg) + +从上面的例子可以看出 matho-primes 只使用了50%的 cpu 资源,剩余的 cpu 时间都在 idle。 + +cpulimit 还可以在运行时对进程进行动态限制,使用 **-p** 选项来指定进程的 PID,下面是一个实例: + + cpulimit -l 50 -p 1234 + +其中,1234是进程的 PID。 + +### cgroups 命令集 ### + +最后介绍,功能最为强大的控制组(cgroups)的用法。cgroups 是 Linux 内核提供的一种机制,利用它可以指定一组进程的资源分配。 具体来说,使用 cgroups,用户能够限定一组进程的 cpu 占用率、系统内存消耗、网络带宽,以及这几种资源的组合。 + +对比nice和cpulimit,**cgroups 的优势**在于它可以控制一组进程,不像前者仅能控制单进程。同时,nice 和 cpulimit 只能限制 cpu 使用率,而 cgroups 则可以限制其他进程资源的使用。 + +对 cgroups 善加利用就可以控制好整个子系统的资源消耗。就拿 CoreOS 作为例子,这是一个专为大规模服务器部署而设计的最简化的 Linux 发行版本,它的 upgrade 进程就是使用 cgroups 来管控。这样,系统在下载和安装升级版本时也不会影响到系统的性能。 + +下面做一下演示,我们将创建两个控制组(cgroups),并对其分配不同的 cpu 资源。这两个控制组分别命名为“cpulimited”和“lesscpulimited”。 + +使用 cgcreate 命令来创建控制组,如下所示: + + sudo cgcreate -g cpu:/cpulimited + sudo cgcreate -g cpu:/lesscpulimited + +其中“-g cpu”选项用于设定 cpu 的使用上限。除 cpu 外,cgroups 还提供 cpuset、memory、blkio 等控制器。cpuset 控制器与 cpu 控制器的不同在于,cpu 控制器只能限制一个 cpu 核的使用率,而 cpuset 可以控制多个 cpu 核。 + +cpu 控制器中的 cpu.shares 属性用于控制 cpu 使用率。它的默认值是 1024,我们将 lesscpulimited 控制组的 cpu.shares 设为1024(默认值),而 cpulimited 设为512,配置后内核就会按照2:1的比例为这两个控制组分配资源。 + +要设置cpulimited 组的 cpu.shares 为 512,输入以下命令: + + sudo cgset -r cpu.shares=512 cpulimited + +使用 cgexec 命令来启动控制组的运行,为了测试这两个控制组,我们先用cpulimited 控制组来启动 matho-primes 进程,命令行如下: + + sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null & + +打开 top 可以看到,matho-primes 进程占用了所有的 cpu 资源。 + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image01.jpg) + +因为只有一个进程在系统中运行,不管将其放到哪个控制组中启动,它都会尽可能多的使用cpu资源。cpu 资源限制只有在两个进程争夺cpu资源时才会生效。 + +那么,现在我们就启动第二个 matho-primes 进程,这一次我们在 lesscpulimited 控制组中来启动它: + + sudo cgexec -g cpu:lesscpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null & + +再打开 top 就可以看到,cpu.shares 值大的控制组会得到更多的 cpu 运行时间。 + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image02.jpg) + +现在,我们再在 cpulimited 控制组中增加一个 matho-primes 进程: + + sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null & + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image04.jpg) + +看到没,两个控制组的 cpu 的占用率比例仍然为2:1。其中,cpulimited 控制组中的两个 matho-primes 进程获得的cpu 时间基本相当,而另一组中的 matho-primes 进程显然获得了更多的运行时间。 + +更多的使用方法,可以在 Red Hat 上查看详细的 cgroups 使用[说明][2]。(当然CentOS 7也有) + +### 使用Scout来监控cpu占用率 ### + +监控cpu占用率最为简单的方法是什么?[Scout][3] 工具能够监控能够自动监控进程的cpu使用率和内存使用情况。 + +![](https://dl.dropboxusercontent.com/u/468982/blog/server_view/processes.png) + +[Scout][3]的触发器(trigger)功能还可以设定 cpu 和内存的使用门限,超出门限时会自动产生报警。 + +从这里可以获取 [Scout][4] 的试用版。 + +### 总结 ### + +![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/overview.png) + +计算机的系统资源是非常宝贵的。上面介绍的这3个工具能够帮助大家有效地管理系统资源,特别是cpu资源: + +- **nice**可以一次性调整进程的优先级。 +- **cpulimit**在运行cpu密集型任务且要保持系统的响应性时会很有用。 +- **cgroups**是资源管理的瑞士军刀,同时在使用上也很灵活。 + +-------------------------------------------------------------------------------- + +via: http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups + +译者:[coloka](https://github.com/coloka) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.mathomatic.org/ +[2]:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Resource_Management_and_Linux_Containers_Guide/chap-Introduction_to_Control_Groups.html +[3]:https://scoutapp.com/ +[4]:https://scoutapp.com/ +[5]: +[6]: +[7]: +[8]: +[9]: +[10]: +[11]: +[12]: +[13]: +[14]: +[15]: +[16]: +[17]: +[18]: +[19]: +[20]: \ No newline at end of file diff --git a/translated/tech/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md b/translated/tech/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md deleted file mode 100644 index 7dd9bc4851..0000000000 --- a/translated/tech/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md +++ /dev/null @@ -1,196 +0,0 @@ -使用nice、cpulimit和cgroups限制cpu占用率 -================================================================================ -注:本文中的图片似乎都需要翻墙后才能看到,发布的时候注意 - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/juggle.jpg) - -Linux内核是一名了不起的马戏表演者,它在进程和系统资源间小心地玩着杂耍,并保持系统的能够正常运转。 同时,内核也很公正:它将资源公平地分配给各个进程。 - -但是,如果你需要给一个重要进程提高优先级时,该怎么做呢? 或者是,如何降低一个进程的优先级? 又或者,如何限制一组进程所使用的资源呢? - -**答案是需要由用户来为内核指定进程的优先级** - -大部分进程启动时的优先级时相同的,因此Linux内核会公平地进行调度。 如果想让一个CPU密集型的进程运行在低优先级,那么你就得事先配置好调度器。 - -下面介绍3种控制进程运行时间的方法: - -- 使用nice命令手动减低任务的优先级。 -- 使用cpulimit命令控制进程的运行时间上限。 -- 使用linux内建的**control groups**功能,它提供了限制进程资源消耗的机制。 - -我们来看一下这3个工具的工作原理和各自的优缺点。 - -### 模拟高cpu占用率 ### - -在分析这3种技术前,我们要先安装一个工具来模拟高CPU占用率的场景。我们会用到CentOS作为测试系统,并使用[Mathomatic toolkit][1]中的质数生成器来模拟CPU负载。 - -很不幸,在CentOS上这个工具没有预编译好的版本,所以必须要从源码进行安装。先从http://mathomatic.orgserve.de/mathomatic-16.0.5.tar.bz2这个链接下载源码包并解压。然后进入**mathomatic-16.0.5/primes**文件夹,运行**make** 和 **sudo make install**进行编译和安装。这样,就把**matho-primes**程序安装到了**/usr/local/bin**目录中。 - -接下来,通过命令行运行: - - /usr/local/bin/matho-primes 0 9999999999 > /dev/null & - -程序运行后,将输出从0到9999999999之间的质数。因为我们并不需要这些输出结果,直接将输出重定向到/dev/null就好。 - -现在,使用top命令就可以看到matho-primes进程榨干了你所有的cpu资源。 - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image00.jpg) - -好了,接下来退出top(按q键)并杀掉matho-primes进程(使用fg命令将进程切换到前台,再按CTRL+C) - -### nice命令 ### -下来介绍一下nice命令的使用方法,nice命令可以修改进程的优先级,这样就可以让进程运行得不那么频繁。 **这个功能在运行cpu密集型的后台进程或批处理作业时尤为有用。** nice值的取值范围是[-20,19],-20表示最高优先级,而19表示最低优先级。 Linux进程的默认nice值为0。使用nice命令(不带任何参数时)可以将进程的nice值设置为10。这样调度器就会将此进程视为低优先级的进程,从而减少cpu资源的分配。 - -下面来看一个例子,我们同时运行两个**matho-primes**进程,一个使用nice命令来启动运行,而另一个正常启动运行: - - nice matho-primes 0 9999999999 > /dev/null & - matho-primes 0 9999999999 > /dev/null & - -再运行top命令。 - - - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image05.jpg) - -看到没,正常运行的进程(nice值为0)获得了更多的cpu运行时间,相反的,用nice命令运行的进程占用的cpu时间会较少(nice值为10)。 - -在实际使用中,如果你要运行一个CPU密集型的程序,那么最好用nice命令来启动它,这样就可以保证其他进程获得更高的优先级。 也就是说,即使你的服务器或者台式机在重载的情况下,也可以快速响应。 - -nice还有一个关联命令叫做renice,它可以在运行时调整进程的nice值。使用renice命令时,要先找出进程的PID。下面是一个例子: - - renice +10 1234 - -其中,1234是进程的PID。 - -测试完**nice** 和 **renice**命令后,记得要将**matho-primes**进程全部杀掉。 - -### cpulimit命令 ### - -接下来介绍 **cpulimit** 命令的用法。 **cpulimit** 命令的工作原理是为进程预设一个cpu占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit使用 SIGSTOP和SIGCONT这两个信号来控制进程。它不会修改进程的nice值,而是通过监控进程的cpu占用率来做出动态调整。 - -cpulimit的优势是可以控制进程的cpu使用率的上限值。但与nice相比也有缺点,那就是即使cpu是空闲的,进程也不能完全使用整个cpu资源。 - -在CentOS上,可以用下面的方法来安装: - - wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip - unzip cpulimit.zip - cd cpulimit-master - make - sudo cp src/cpulimit /usr/bin - -上面的命令行,会先从从GitHub上将源码下载到本地,然后再解压、编译、并安装到/usr/bin目录下。 - -cpulimit的使用方式和nice命令类似,但是需要用户使用-l选项显式地定义进程的cpu使用率上限值。举例说明: - - cpulimit -l 50 matho-primes 0 9999999999 > /dev/null & - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image03.jpg) - -从上面的例子可以看出matho-primes只使用了50%的cpu资源,剩余的cpu时间都为idle。 - -You can also limit a currently running process by specifying its PID using the ‘-p’ parameter. For example -cpulimit还可以在运行时对进程进行动态限制,使用-p选项来指定进程的PID,下面是一个实例: - - cpulimit -l 50 -p 1234 - -其中,1234是进程的PID。 - -### cgroups命令集 ### - -最后介绍,功能最为强大的控制组(cgroups)的用法。cgroups是Linux内核提供的一种机制,利用它可以指定一组进程的资源分配。 具体来说,使用cgroups,用户能够限定一组进程的cpu占用率、系统内存消耗、网络带宽,以及这几种资源的组合。 - -对比nice和cpulimit,**cgroups的优势**在于它可以控制一组进程,不像前者仅能控制单进程。同时,nice和cpulimit只能限制cpu使用率,而cgroups可以限制其他进程资源的使用。 - -对cgroups善加利用就可以控制好整个子系统的资源消耗。就拿CoreOS作为例子,这是一个专为大规模服务器部署而设计的最简化的Linux发行版本,它的upgrade进程就是使用cgroups来管控。这样,系统在下载和安装升级版本时也不会影响到系统的性能。 - -下面做一下演示,我们将创建两个控制组(cgroups),并对其分配不同的cpu资源。这两个控制组分别命名为“cpulimited”和“lesscpulimited”。 - -使用cgcreate命令来创建控制组,如下所示: - - sudo cgcreate -g cpu:/cpulimited - sudo cgcreate -g cpu:/lesscpulimited - -其中“-g cpu”选项用于设定cpu的使用上限。除此cpu外,cgroups还提供cpuset、memory、blkio等控制器。cpuset控制器与cpu控制器的不同在于,cpu控制器只能限制一个cpu核的使用率,而cpuset可以控制多个cpu核。 - -cpu控制器中的cpu.shares属性用于控制cpu使用率。它的默认值是1024,我们将lesscpulimited控制组的cpu.shares设为1024(默认值),而cpulimited设为512,配置后内核就会按照2:1的比例为这两个控制组分配资源。 - -To set the cpu.shares to 512 in the cpulimited group, type: - - sudo cgset -r cpu.shares=512 cpulimited - -使用cgexec命令来启动控制组的运行,为了测试这两个控制组,我们先用cpulimited控制组来启动matho-primes进程,命令行如下: - - sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null & - -打开top可以看到,matho-primes进程占用了所有的cpu资源。 - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image01.jpg) - -因为只有一个进程在系统中运行,不管将其放到哪个控制组中启动,它都会尽可能多的使用cpu资源。cpu资源限制只有在两个进程争夺cpu资源时才会生效。 - -那么,现在我们就启动第二个matho-primes进程,这一次我们在lesscpulimited控制组中来启动它: - - sudo cgexec -g cpu:lesscpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null & - -再打开top就可以看到,cpu.shares值大的控制组会得到更多的cpu运行时间。 - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image02.jpg) - -现在,我们再在cpulimited控制组中增加一个matho-primes进程: - - sudo cgexec -g cpu:cpulimited /usr/local/bin/matho-primes 0 9999999999 > /dev/null & - -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/image04.jpg) - -看到没,两个控制组的cpu的占用率比例仍然为2:1。其中,cpulimited控制组中的两个matho-primes进程获得的cpu时间基本相当,而另一组中的matho-primes进程显然获得了更多的运行时间。 - -更多的使用方法,可以在Red Hat上查看详细的cgroups使用[说明][2]。(当然CentOS 7也有) - -### 使用Scout来监控cpu占用率 ### - -监控cpu占用率最为简单的方法是什么?[Scout][3]工具能够监控能够自动监控进程的cpu使用率和内存使用情况。 - -![](https://dl.dropboxusercontent.com/u/468982/blog/server_view/processes.png) - -[Scout][3]的触发器(trigger)功能还可以设定cpu和内存的使用门限,超出门限时会自动产生报警。 - -从这里可以获取[Scout][4]的试用版。 - -### 总结 ### -![](https://dl.dropboxusercontent.com/u/468982/blog/cpu_usage_blog/overview.png) - -计算机的系统资源是非常宝贵的。上面介绍的这3个工具能够帮助大家有效地管理系统资源,特别是cpu资源: - -- **nice**可以一次性调整进程的优先级。 -- **cpulimit**在运行cpu密集型任务且要保持系统的响应性时会很有用。 -- **cgroups**是资源管理的瑞士军刀,同时在使用上也很灵活。 - --------------------------------------------------------------------------------- - -via: http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups - -译者:[coloka](https://github.com/coloka) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://www.mathomatic.org/ -[2]:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Resource_Management_and_Linux_Containers_Guide/chap-Introduction_to_Control_Groups.html -[3]:https://scoutapp.com/ -[4]:https://scoutapp.com/ -[5]: -[6]: -[7]: -[8]: -[9]: -[10]: -[11]: -[12]: -[13]: -[14]: -[15]: -[16]: -[17]: -[18]: -[19]: -[20]: \ No newline at end of file From e44e56151d063e91272318bdc0df3f4c4badbb09 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Sun, 25 Jan 2015 23:10:58 +0800 Subject: [PATCH 064/725] Translating by ZTinoZ --- ...0141223 20 Linux Commands Interview Questions & Answers.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 17a1179b8e..2b1fa24d92 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -82,9 +82,9 @@ 答: # find / -name core -exec rm {} \; -**问:15 What is the purpose of strings command ?** +**问:15 strings命令有什么作用?** -答: The strings command is used to extract and display the legible contents of a non-text file. +答: strings命令用来extract and display the legible contents of a non-text file. **问:16 What is the use tee filter ?** From 6f3210474b26f7dc6ab7294c674ec8c8d662572e Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 25 Jan 2015 23:41:16 +0800 Subject: [PATCH 065/725] PUB:20141124 Important 10 Linux ps command Practical Examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @johnhoow 忠实原文翻译比较好~ --- ... 10 Linux ps command Practical Examples.md | 186 ++++++++++++++++++ ... 10 Linux ps command Practical Examples.md | 186 ------------------ 2 files changed, 186 insertions(+), 186 deletions(-) create mode 100644 published/20141124 Important 10 Linux ps command Practical Examples.md delete mode 100644 translated/tech/20141124 Important 10 Linux ps command Practical Examples.md diff --git a/published/20141124 Important 10 Linux ps command Practical Examples.md b/published/20141124 Important 10 Linux ps command Practical Examples.md new file mode 100644 index 0000000000..6423db4a2a --- /dev/null +++ b/published/20141124 Important 10 Linux ps command Practical Examples.md @@ -0,0 +1,186 @@ +10个重要的Linux ps命令实战 +================================================================================ +Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具。这个工具能在命令行中使用。 + +### PS 命令是什么 ### + +查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想不断更新查看的这个状态,可以使用top命令。 + +ps命令支持三种使用的语法格式 + +1. UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符 +2. BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符 +3. GNU 风格的长选项,选项前有两个“-”连字符 + +我们能够混用这几种风格,但是可能会发生冲突。本文使用 UNIX 风格的ps命令。这里有在日常生活中使用较多的ps命令的例子。 + +### 1. 不加参数执行ps命令 ### + +这是一个基本的 **ps** 使用。在控制台中执行这个命令并查看结果。 + +![不加选项执行ps命令](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_no_options.png) + +结果默认会显示4列信息。 + +- PID: 运行着的命令(CMD)的进程编号 +- TTY: 命令所运行的位置(终端) +- TIME: 运行着的该命令所占用的CPU处理时间 +- CMD: 该进程所运行的命令 + +这些信息在显示时未排序。 + +### 2. 显示所有当前进程 ### + +使用 **-a** 参数。**-a 代表 all**。同时加上x参数会显示没有控制终端的进程。 + + $ ps -ax + +这个命令的结果或许会很长。为了便于查看,可以结合less命令和管道来使用。 + + $ ps -ax | less + +![ps all 信息](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_ax.png) + +### 3. 根据用户过滤进程 ### + +在需要查看特定用户进程的情况下,我们可以使用 **-u** 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令: + + $ ps -u pungki + +![通过用户过滤](http://blog.linoxide.com/wp-content/uploads/2014/10/ps__u.png) + +### 4. 通过cpu和内存使用来过滤进程 ### + +也许你希望把结果按照 CPU 或者内存用量来筛选,这样你就找到哪个进程占用了你的资源。要做到这一点,我们可以使用 **aux 参数**,来显示全面的信息: + + $ ps -aux | less + +![显示全面信息](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_aux.png) + +当结果很长时,我们可以使用管道和less命令来筛选。 + +默认的结果集是未排好序的。可以通过 **--sort**命令来排序。 + +根据 **CPU 使用**来升序排序 + + $ ps -aux --sort -pcpu | less + +![根据cpu使用排序](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_aux_sort_cpu.png) + +根据 **内存使用** 来升序排序 + + $ ps -aux --sort -pmem | less + +![根据内存使用来排序](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_aux_sort_mem.png) + +我们也可以将它们合并到一个命令,并通过管道显示前10个结果: + + $ ps -aux --sort -pcpu,+pmem | head -n 10 + +### 5. 通过进程名和PID过滤 ### + +使用 **-C 参数**,后面跟你要找的进程的名字。比如想显示一个名为getty的进程的信息,就可以使用下面的命令: + + $ ps -C getty + +![通过进程名和PID过滤](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_C.png) + +如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表: + + $ ps -f -C getty + +![通过进程名和PID过滤](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_C_f.png) + +### 6. 根据线程来过滤进程 ### + +如果我们想知道特定进程的线程,可以使用**-L 参数**,后面加上特定的PID。 + + $ ps -L 1213 + +![根据线程来过滤进程](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_L.png) + +### 7. 树形显示进程 ### + +有时候我们希望以树形结构显示进程,可以使用 **-axjf** 参数。 + + $ps -axjf + +![树形显示进程](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_axjf.png) + +或者可以使用另一个命令。 + + $ pstree + +![树形显示进程](http://blog.linoxide.com/wp-content/uploads/2014/10/pstree.png) + +### 8. 显示安全信息 ### + +如果想要查看现在有谁登入了你的服务器。可以使用ps命令加上相关参数: + + $ ps -eo pid,user,args + +**参数 -e** 显示所有进程信息,**-o 参数**控制输出。**Pid**,**User 和 Args**参数显示**PID,运行应用的用户**和**该应用**。 + +![显示安全信息](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_security_1.png) + +能够与**-e 参数** 一起使用的关键字是**args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start**。 + +### 9. 格式化输出root用户(真实的或有效的UID)创建的进程 ### + +系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令: + + $ ps -U root -u root u + +**-U 参数**按真实用户ID(RUID)筛选进程,它会从用户列表中选择真实用户名或 ID。真实用户即实际创建该进程的用户。 + +**-u** 参数用来筛选有效用户ID(EUID)。 + +最后的**u**参数用来决定以针对用户的格式输出,由**User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND**这几列组成。 + +这里有上面的命令的输出结果: + +![show real and effective User ID](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_root_real_effective_ID.png) + +### 10. 使用PS实时监控进程状态 ### + +ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。 + +当有一种情况,我们需要像上面第四点中提到的通过CPU和内存的使用率来筛选进程,并且我们希望结果能够每秒刷新一次。为此,我们可以**将ps命令和watch命令结合起来**。 + + $ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’ + +![组合 ps 和 watch](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_watch_1.png) + +如果输出太长,我们也可以限制它,比如前20条,我们可以使用**head**命令来做到。 + + $ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’ + +![组合 ps 和 watch](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_watch_2.png) + +这里的动态查看并不像top或者htop命令一样。**但是使用ps的好处是**你能够定义显示的字段,你能够选择你想查看的字段。 + +举个例子,**如果你只需要看名为'pungki'用户的信息**,你可以使用下面的命令: + + $ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’ + +![组合 ps 和 watch](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_watch_3.png) + +### 结论 ### + +你也许每天都会使用ps命令来监控你的Linux系统。但是事实上,你可以通过ps命令的参数来生成各种你需要的报表。 + +ps命令的另一个优势是ps是各种 Linux系统都默认安装的,因此你只要用就行了。 + +不要忘了通过 man ps来查看更多的参数。(LCTT 译注:由于 ps 命令古老而重要,所以它在不同的 UNIX、BSD、Linux 等系统中的参数不尽相同,因此如果你用的不是 Linux 系统,请查阅你的文档了解具体可用的参数。) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/how-tos/linux-ps-command-examples/ + +作者:[Pungki Arianto][a] +译者:[johnhoow](https://github.com/johnhoow) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/pungki/ diff --git a/translated/tech/20141124 Important 10 Linux ps command Practical Examples.md b/translated/tech/20141124 Important 10 Linux ps command Practical Examples.md deleted file mode 100644 index 7e1ece4787..0000000000 --- a/translated/tech/20141124 Important 10 Linux ps command Practical Examples.md +++ /dev/null @@ -1,186 +0,0 @@ -10个重要的Linux ps命令实战 -================================================================================ -Linux作为Unix的衍生操作系统,Linux拥有内建用来查看当前进程的工具。这个工具能在命令行中使用。 - -### PS 命令是什么 ### - -查看它的man手册可以看到,ps命令能够给出当前系统中进程的快照。它能捕获系统在某一事件的进程状态。如果你想实时更新这个状态,可以使用top命令。 - -ps命令支持三种使用的语法格式 - -1. UNIX 风格,一定要被分组并且必须有Dash引导使用(可以理解为必须在dash中使用,dash是一种shell) -2. BSD 风格,一点要被分组但不一定要在dash中使用 -3. GNU 风格,能够在两种dash中使用 - -我们能够混用这几种风格,但是可能会发生冲突。本文使用UNIX风格的ps命令。这里有在日常生活中使用较多的ps命令的例子。 - -### 1. 不加参数执行ps命令 ### - -这是一个基本的 **ps** 使用。只要在控制台中执行这个命令并查看结果。 - -![不加选项执行ps命令](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_no_options.png) - -结果默认会显示4列信息。 - -- PID: 运行命令(CMD)的进程编号 -- TTY: 命令运行的位置 -- TIME: 说明运行这个命令所用的CPU时间 -- CMD: 作为当前进程运行的命令 - -这些信息在显示时未排序。 - -### 2. 显示所有当前进程 ### - -使用 **-a** 参数。**-a 代表 all**。同时加上x参数会显示没有控制终端的进程。 - - $ ps -ax - -这个命令的结果或许会很长。为获得简练的信息,可以结合less命令和管道来使用。 - - $ ps -ax | less - -![ps all 信息](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_ax.png) - -### 3. 根据用户过滤进程 ### - -在需要查看特点用户的进程是情况下,我们可以使用 **-u** 参数。比如我们要查看用户'pungki'的进程,可以通过下面的命令 - - $ ps -u pungki - -![通过user过滤](http://blog.linoxide.com/wp-content/uploads/2014/10/ps__u.png) - -### 4. 通过cpu和内存使用来过滤进程 ### - -可以使用 **aux 参数**,来显示全面的信息: - - $ ps -aux | less - -![显示全面信息](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_aux.png) - -当结果很长时,我们可以使用管道和less命令来筛选。 -默认的结果集是未排好序的。可以通过 **--sort**命令好排序。 - -根据 **CPU 使用**来升序排序 - - $ ps -aux --sort -pcpu | less - -![根据cpu使用排序](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_aux_sort_cpu.png) - -根据 **内存使用** 来升序排序 - - $ ps -aux --sort -pmem | less - -![根据内存使用来排序](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_aux_sort_mem.png) - -我们也可以通过管道显示前10个结果: - - $ ps -aux --sort -pcpu,+pmem | head -n 10 - -### 5. 通过进程name和id过滤 ### - -使用 **-C 参数**,后面跟你要找的进程的name。比如想显示一个名为getty的进程的信息,就可以使用下面的命令: - - $ ps -C getty - -![通过进程name和id过滤](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_C.png) - -如果想要看到更多的细节,我们可以使用-f参数来查看格式化的信息列表: - - $ ps -f -C getty - -![通过进程name和id过滤](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_C_f.png) - -### 6. 根据线程来过滤进程 ### - -如果我们想知道特定进程的线程,可以使用**-L 参数**,后面加上特定的PID。 - - $ ps -L 1213 - -![根据线程来过滤进程](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_L.png) - -### 7. 分层显示进程 ### - -使用 **-axjf** 参数。 - - $ps -axjf - -![分层显示进程](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_axjf.png) - -或者可以使用另一个命令。 - - $ pstree - -![分层显示进程](http://blog.linoxide.com/wp-content/uploads/2014/10/pstree.png) - -### 8. 显示安全信息 ### - -如果想要查看现在有谁登入了你的server。可以使用ps命令加上相关参数: - - $ ps -eo pid,user,args - -**参数 -e** 显示所有进程信息 **-o 参数**控制输出。**Pid**,**User 和 Args**参数显示**PID,运行应用的用户**和**运行的应用**。 - -![显示安全信息](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_security_1.png) - -能够与**-e 参数** 一起使用的关键字是**args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart and start**。 - -### 9. 格式化输出root用户创建的进程 ### - -系统管理员想要查看由root用户运行的进程和这个进程的其他相关信息时,可以通过下面的命令: - - $ ps -U root -u root u - -**-U 参数**用来选择特定的用户ID(在userlist中存在的用户名或ID)。用户ID用来标识创建进程的用户。 - -While the **-u paramater** will select by effective user ID (EUID) -**-u** 参数用来筛选有效的用户ID。 - - -最后的**u**参数用来确定结果的输出格式,由**User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME and COMMAND**这几列组成。 - -这里有上面的命令的输出结果 - -![show real and effective User ID](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_root_real_effective_ID.png) - -### 10. 使用PS实时监控进程状态 ### - -ps 命令会显示你系统当前的进程状态,但是这个结果是静态的。 -当有一种情况,我们需要想上面第四点中提到的通过CPU和内存的使用率来过滤进程。并且我们希望结果能够每秒更新一次。为此,我们可以**将ps命令和watch命令结合起来**。 - - $ watch -n 1 ‘ps -aux --sort -pmem, -pcpu’ - -![combine ps with watch](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_watch_1.png) - -并且可以通过**head**命令还进行限制。 - - $ watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’ - -![combine ps with watch](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_watch_2.png) - -这里的动态查看不想top或者htop命令。**但是使用ps的好处是**你能够定义显示的字段。你能够选择你想查看的字段。 - -举个例子,**如果你只先看名为'pungki'用户的信息**,你可以使用下面的命令: - - $ watch -n 1 ‘ps -aux -U pungki u --sort -pmem, -pcpu | head 20’ - -![combine ps with watch](http://blog.linoxide.com/wp-content/uploads/2014/10/ps_watch_3.png) - -### 结论 ### - -你可能会使用ps命令来监控你的Linux系统。但是事实上,你可以通过ps命令的参数来生成各种你需要的报表。 - -ps命令的另一个优势是ps是系统默认安装的。因此你只要用就行了。 - -可以通过 man ps来查看更多的参数。 - --------------------------------------------------------------------------------- - -via: http://linoxide.com/how-tos/linux-ps-command-examples/ - -作者:[Pungki Arianto][a] -译者:[johnhoow](https://github.com/johnhoow) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/pungki/ From 4b4cead2c4becf09db39d1ef7aa4a14ca352258f Mon Sep 17 00:00:00 2001 From: disylee Date: Mon, 26 Jan 2015 01:22:59 +0800 Subject: [PATCH 066/725] translated --- ... C or C++ program with Nemiver debugger.md | 0 ... C or C++ program with Nemiver debugger.md | 126 ++++++++++++++++++ 2 files changed, 126 insertions(+) rename {sources/tech => translated}/20150104 How to debug a C or C++ program with Nemiver debugger.md (100%) create mode 100644 translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md diff --git a/sources/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md b/translated/20150104 How to debug a C or C++ program with Nemiver debugger.md similarity index 100% rename from sources/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md rename to translated/20150104 How to debug a C or C++ program with Nemiver debugger.md diff --git a/translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md b/translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md new file mode 100644 index 0000000000..b5dc4c34a7 --- /dev/null +++ b/translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md @@ -0,0 +1,126 @@ +使用Nemiver调试器找出C/C++程序中的bug +================================================================================ + +如果你读过[my post on GDB][1],你就会明白我认为一个调试器对一段C/C++程序来说意味着多么的重要和有用。然而,如果一个像GDB的命令行对你而言听起来更像一个问题而不是一个解决方案,那么你也许会对Nemiver更感兴趣。[Nemiver][2] 是一款基于GTK+的独立图形化用于C/C++程序的调试器,同时它以GDB作为其后端。最令人佩服的是其速度和稳定性,Nemiver时一个非常可靠,具备许多优点的调试工具。 + +### Nemiver的安装 ### + +基于Debian发行版,它的安装时非常直接简单如下: + + $ sudo apt-get install nemiver + +在Arch Linux中安装如下: + + $ sudo pacman -S nemiver + +在Fedora中安装如下: + + $ sudo yum install nemiver + +如果你选择自己变异,[GNOME website][3]中最新源码包可用。 + +最令人欣慰的是,它能够很好地与GNOME环境像结合。 + +### Nemiver的基本用法 ### + +启动Nemiver的命令: + + $ nemiver + +你也可以通过执行一下命令来启动: + + $ nemiver [path to executable to debug] + +你会注意到如果在调试模式下执行编译(-g标志表示GCC)将会更有帮助。 + +还有一个优点是Nemiver的快速加载,所以你应该可以马上看到主屏幕的默认布局。 + + + + + +![](https://farm9.staticflickr.com/8679/15535277554_d320f6692c_c.jpg) + +默认情况下,断点通常位于主函数的第一行。这样就可以空出时间让你去认识调试器的基本功能: + +![](https://farm9.staticflickr.com/8669/16131832596_bc68ae18a8_o.jpg) + +- Next line (mapped to F6) +- Step inside a function (F7) +- Step out of a function (Shift+F7) +- 下一行 (映射到F6) +- 执行内部行数(F7) +- 执行外部函数(Shift+F7) ## 我不确定这个保留哪个都翻译出来了 ## + +但是由于我个人的喜好是“Run to cursor(运行至光标)”,该选项使你的程序运行精确至你光标下的行,并且默认映射到F11. + +下一步,断点通常是容易使用的。最快捷的方式是使用F8设置一个断点在相应的行。但是Nemiver也有一个更富在的菜单在“Debug”项,这允许你在一个特定的函数,行数,二进制位置文件的位置,或者类似一个异常,分支或者exec的事件。 + +![](https://farm8.staticflickr.com/7579/16157622315_d680a63896_z.jpg) + + +你也可以通过追踪来查看一个变量。在“Debug”选项,你可以通过命名来匹配一个表达式来检查。然后也可以通过将其添加到列表中以方便访问。这可能是最有用的一个功能虽然我从未因为浓厚的兴趣将鼠标悬停在一个变量来获取它的值。值得注意的是,将鼠标放置在相应位置时不生效的。如果想要让它更好地工作,Nemiver是可以看到结构并给所有成员的变量赋值。 + +![](https://farm8.staticflickr.com/7465/15970310470_7ed020c613.jpg) + + +谈到方便地访问信息,我也非常欣赏这个程序的平面布局。默认情况下,代码在上个部分,标签在下半部分。这授予你访问中断输出、文本追踪、断点列表、注册地址、内存映射和变量控制。但是注意到在“Edit”“Preferences”“Layout”下你可以选择不同的布局,包括动态修改。 + +![](https://farm9.staticflickr.com/8606/15971551549_00e4cdd32e_c.jpg) + +![](https://farm8.staticflickr.com/7525/15535277594_026fef17c1_z.jpg) + + +自然而然,一旦你设置了所有短点,观察点和布局,您可以在“File”下很方便地保存以免你不小心关掉Nemiver。 + + +### Nemiver的高级用法 ### + + +到目前为止,我们讨论的都是Nemiver的基本特征,例如,你马上开始喝调试一个简单的程序需要什么。如果你有更高的药求,特别是对于一些更佳复杂的程序,你应该会对接下来提到的这些特征更感兴趣。 + + +#### 调试一个正在运行的进程 #### + + +Nemiver允许你连接到一个正在运行的进程进行调试。在“File”菜单,你可以过滤出正在运行的进程,并连接到这个进程。 + +![](https://farm9.staticflickr.com/8593/16155720571_00e4cdd32e_z.jpg) + + +#### 通过TCP连接远程调试一个程序 #### + +Nemiver支持远程调试,当你在一台远程机器设置一个轻量级调试服务器,你可以通过调试服务器启动Nemiver从另一台机器去调试承载远程服务器上的目标。如果出于某些原因,你不能在远程机器上吗很好地驾驭Nemiver或者GDB,那么远程调试对于你来说将非常有用。在“File”菜单下,指定二进制文件、共享库的地址和端口。 + +![](https://farm8.staticflickr.com/7469/16131832746_c47dee4ef1.jpg) + +#### 使用你的GDB二进制进行调试 #### + +如果你想自行通过Nemiver进行编译,你可以在“Edit(编辑)”“Preferences(首选项)”“Debug(调试)”下给GDB制定一个新的位置。如果你想在Nemiver使用GDB的定制版本,那么这个选项对你来说是非常实用的。 + + +#### 循序一个子进程或者父进程 #### + +Nemiver是可以兼容一个子进程或者附近成的。想激活这个功能,请到“Debugger”下面的“Preferences(首选项)”。 + +![](https://farm8.staticflickr.com/7512/16131832716_5724ff434c_z.jpg) + +总而言之,Nemiver大概是我最喜欢的没有IDE的调试程序。在我看来,它甚至可以击败GDB,并且[命令行][4]程序对我本身来说更接地气。所以,如果你从未使用过的话,我会强烈推荐你使用。我只能庆祝我们团队背后给了我这么一个可靠、稳定的程序。 + +你对Nemiver有什么见解?你是否也考虑它作为独立的调试工具?或者仍然坚持使用IDE?让我们在评论中探讨吧。 + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/debug-program-nemiver-debugger.html + +作者:[Adrien Brochard][a] +译者:[disylee](https://github.com/disylee) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/adrien +[1]:http://xmodulo.com/gdb-command-line-debugger.html +[2]:https://wiki.gnome.org/Apps/Nemiver +[3]:https://download.gnome.org/sources/nemiver/0.9/ +[4]:http://xmodulo.com/recommend/linuxclibook From 7acbc7034b255f8583ef39e526ab69569c0a5a9b Mon Sep 17 00:00:00 2001 From: runningwater Date: Mon, 26 Jan 2015 10:12:17 +0800 Subject: [PATCH 067/725] Update 20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md --- ...Can Write a Single ISO to 20 USB Drives Simultaneously.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md b/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md index c1d1106e03..a23c070ac7 100644 --- a/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md +++ b/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md @@ -1,3 +1,4 @@ +(translating by runningwater) This App Can Write a Single ISO to 20 USB Drives Simultaneously ================================================================================ **If I were to ask you to burn a single Linux ISO to 17 USB thumb drives how would you go about doing it?** @@ -49,11 +50,11 @@ Bugs and pull requests can be longed on the GitHub page for the project, which i via: http://www.omgubuntu.co.uk/2015/01/gnome-multiwriter-iso-usb-utility 作者:[Joey-Elijah Sneddon][a] -译者:[译者ID](https://github.com/译者ID) +译者:[runningwater](https://github.com/runningwater) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://plus.google.com/117485690627814051450/?rel=author [1]:https://github.com/hughsie/gnome-multi-writer/ -[2]:https://github.com/hughsie/gnome-multi-writer/ \ No newline at end of file +[2]:https://github.com/hughsie/gnome-multi-writer/ From b591981031badf8363f09bcc6d8d4fbc65035ac1 Mon Sep 17 00:00:00 2001 From: runningwater Date: Mon, 26 Jan 2015 10:14:25 +0800 Subject: [PATCH 068/725] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=B8=AD=20by=20runn?= =?UTF-8?q?ingwater?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...pp Can Write a Single ISO to 20 USB Drives Simultaneously.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md b/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md index a23c070ac7..130311ef12 100644 --- a/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md +++ b/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md @@ -1,4 +1,4 @@ -(translating by runningwater) +(translating by runningwater ) This App Can Write a Single ISO to 20 USB Drives Simultaneously ================================================================================ **If I were to ask you to burn a single Linux ISO to 17 USB thumb drives how would you go about doing it?** From a69c9e40e05455cfaaa89cb53846a1e2f7f89441 Mon Sep 17 00:00:00 2001 From: Ping Date: Mon, 26 Jan 2015 10:47:15 +0800 Subject: [PATCH 069/725] Translated 20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md --- ...gure a MySQL user from the command line.md | 108 ------------------ ...gure a MySQL user from the command line.md | 107 +++++++++++++++++ 2 files changed, 107 insertions(+), 108 deletions(-) delete mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md create mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md b/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md deleted file mode 100644 index c021158400..0000000000 --- a/sources/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md +++ /dev/null @@ -1,108 +0,0 @@ -Ping Translating - -Linux FAQs with Answers--How to create and configure a MySQL user from the command line -================================================================================ -> **Question**: I would like to create a new user account on MySQL server, and apply appropriate permissions and resource limits to the account. How can I create and configure a MySQL user from the command line? - -To access a MySQL server, you need to log in to the server using a user account. Each MySQL user account has a number of attributes associated with it, such as user name, password, as well as privileges and resource limits. Privileges are user-specific permissions defining what you can do inside a MySQL server, while resource limits set the limitations on the amount of server resource allowed for for the user. Creating or updating a MySQL user involves managing all these attributes of the user account. - -Here is how to create and configure a MySQL user on Linux. - -You first log in to MySQL server as the root. - - $ mysql -u root -p - -When prompted for authentication, enter the MySQL root password. - -![](https://farm8.staticflickr.com/7482/16024190060_fff53d8840_b.jpg) - -### Create a MySQL User ### - -To create a new user with username 'myuser' and password 'mypassword', use the following command. - - mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; - -Once a user is created, all its account details including an encrypted password, privileges and resource limits are stored in a table called **user** in a special database named **mysql**. - -To verify that the account is created successfully, run: - - mysql> SELECT host, user, password FROM mysql.user WHERE user='myuser'; - -### Grant Privileges to MySQL User ### - -A newly created MySQL user comes with zero access privilege, which means that you cannot do anything inside MySQL server. You need to grant necessary privileges to the user. Some of available privileges are the following. - -- **ALL**: all privileges available. -- **CREATE**: create databases, tables or indices. -- **LOCK_TABLES**: lock databases. -- **ALTER**: alter tables. -- **DELETE**: delete tables. -- **INSERT**: insert tables or columns. -- **SELECT**: select tables or columns. -- **CREATE_VIEW**: create views. -- **SHOW_DATABASES**: show databases. -- **DROP**: drop daabases, tables or views. - -To grant a particular privilege to user 'myuser', use the following command. - - mysql> GRANT ON .
TO 'myuser'@'localhost'; - -In the above, is expressed as a comma-separated list of privileges. If you want to grant privileges for any database (or table), place an asterisk (*) in the database (or table) name. - -For example, to grant CREATE and INSERT privileges for all databases/tables: - - mysql> GRANT CREATE, INSERT ON *.* TO 'myuser'@'localhost'; - -To verify the granted privileges of the user: - - mysql> SHOW GRANTS FOR 'myuser'@'localhost'; - -![](https://farm8.staticflickr.com/7556/16209665261_923282bddd_c.jpg) - -To grant all privileges to all databases/tables: - - mysql> GRANT ALL ON *.* TO 'myuser'@'localhost'; - -You can also remove existing privileges from a user. To revoke existing privileges from the account 'myuser', use the following command. - - mysql> REVOKE ON .
FROM 'myuser'@'localhost'; - -### Add Resource Limits to MySQL User ### - -In MySQL, you can place limits on MySQL resource usage for individual users. The available resource limits are the following. - -- **MAX_QUERIES_PER_HOUR**: number of allowed queries per hour. -- **MAX_UPDATES_PER_HOUR**: number of allowed updates per hour. -- **MAX_CONNECTIONS_PER_HOUR**: number of allowed logins per hour. -- **MAX_USER_CONNECTIONS**: number of simultaneous connections to the server. - -To add a resource limit to the account 'myuser', use the following command. - - mysql> GRANT USAGE ON .
TO 'myuser'@'localhost' WITH ; - -In , you can specify multiple resource limits separated by space. - -For example, to add MAX_QUERIES_PER_HOUR and MAX_CONNECTIONS_PER_HOUR resource limits: - - mysql> GRANT USAGE ON *.* TO 'myuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 30 MAX_CONNECTIONS_PER_HOUR 6; - -To verify the resource limits of the user: - - mysql> SHOW GRANTS FOR 'myuser'@'localhost; - -![](https://farm8.staticflickr.com/7537/16025443759_5cb4177bc6_c.jpg) - -The last important step after creating and configuring a MySQL user is to run: - - mysql> FLUSH PRIVILEGES; - -so that the changes take effect. Now the MySQL user account is good to go! - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/create-configure-mysql-user-command-line.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md b/translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md new file mode 100644 index 0000000000..9318d87821 --- /dev/null +++ b/translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md @@ -0,0 +1,107 @@ +Linux有问必答: 如何通过命令行创建和设置一个MySQL用户 +================================================================================ + +> **问题**:我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制。如何通过命令行的方式来创建并且设置一个MySQL用户呢? + +要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行。每个MySQL用户帐号都有许多与之相关连的属性,例如用户名、密码以及权限和资源限制。"权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用许可。创建或更新一个用户涉及到了对用户帐号所有属性的管理。 + +下面展示了如何在Linux中创建和设置一个MySQL用户。 + +首先以root身份登录到MySQL服务器中。 + + $ mysql -u root -p + +当验证提示出现的时候,输入MySQL的root帐号的密码。 + +![](https://farm8.staticflickr.com/7482/16024190060_fff53d8840_b.jpg) + +### 创建一个MySQL用户 ### + +使用如下命令创建一个用户名和密码分别为"myuser"和"mypassword"的用户。 + + mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; + +一旦用户被创建后,包括加密的密码、权限和资源限制在内的所有帐号细节都会被存储在一个名为**user**的表中,这个表则存在与**mysql**这个特殊的数据库里。 + +运行下列命令,验证帐号是否创建成功 + + mysql> SELECT host, user, password FROM mysql.user WHERE user='myuser'; + +### 赋予MySQL用户权限 ### + +一个新建的MySQL用户没有任何访问权限,这就意味着你不能在MySQL数据库中进行任何操作。你得赋予用户必要的权限。以下是一些可用的权限: + +- **ALL**: 所有可用的权限 +- **CREATE**: 创建库、表和索引 +- **LOCK_TABLES**: 锁定表. +- **ALTER**: 修改表. +- **DELETE**: 删除表. +- **INSERT**: 插入表或列. +- **SELECT**: 选择表或列. +- **CREATE_VIEW**: 创建视图. +- **SHOW_DATABASES**: 展示数据库. +- **DROP**: 删除库、表和视图. + +运行以下命令赋予"myuser"用户特定权限。 + + mysql> GRANT ON .
TO 'myuser'@'localhost'; + +以上命令中,`` 代表着用逗号分隔的权限列表。如果你想要将权限赋予任意数据库(或表),那么使用星号(*)来代替数据库(或表)的名字。 + +例如,为所有数据库/表赋予 CREATE 和 INSERT 权限: + + mysql> GRANT CREATE, INSERT ON *.* TO 'myuser'@'localhost'; + +验证给用户赋予的全权限: + + mysql> SHOW GRANTS FOR 'myuser'@'localhost'; + +![](https://farm8.staticflickr.com/7556/16209665261_923282bddd_c.jpg) + +将全部的权限赋予所有数据库/表: + + mysql> GRANT ALL ON *.* TO 'myuser'@'localhost'; + +你也可以将用户现有的权限删除。使用以下命令废除"myuser"帐号的现有权限: + + mysql> REVOKE ON .
FROM 'myuser'@'localhost'; + +### 为用户添加资源限制 ### + +在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。可用的资源限制如下: + +- **MAX_QUERIES_PER_HOUR**: 允许的每小时最大请求数量. +- **MAX_UPDATES_PER_HOUR**: 允许的每小时最大更新数量. +- **MAX_CONNECTIONS_PER_HOUR**: 允许的每小时最大连接(译者注:[其与 MySQL全局变量: max_user_connections 共同决定用户到数据库的同时连接数量](http://dev.mysql.com/doc/refman/5.0/en/user-resources.html))数量. +- **MAX_USER_CONNECTIONS**: 对服务器的同时连接量. + +使用以下命令为"myuser"帐号增加一个资源限制: + + mysql> GRANT USAGE ON .
TO 'myuser'@'localhost' WITH ; + +在 `` 中你可以指定多个使用空格分隔开的资源限制。 + +例如,增加 MAX_QUERIES_PER_HOUR 和 MAX_CONNECTIONS_PER_HOUR 资源限制: + + mysql> GRANT USAGE ON *.* TO 'myuser'@'localhost' WITH MAX_QUERIES_PER_HOUR 30 MAX_CONNECTIONS_PER_HOUR 6; + +验证用户的资源限制: + + mysql> SHOW GRANTS FOR 'myuser'@'localhost; + +![](https://farm8.staticflickr.com/7537/16025443759_5cb4177bc6_c.jpg) + +创建和设置一个MySQL用户最后的一个重要步骤: + + mysql> FLUSH PRIVILEGES; + +如此一来更改便生效了。现在MySQL用户帐号就可以使用了。 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/create-configure-mysql-user-command-line.html + +译者:[Ping](http://weibo.com/370321376) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From a8a749726c0afdfc1be3b4c6deafa65791ca2cf4 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 26 Jan 2015 11:31:56 +0800 Subject: [PATCH 070/725] =?UTF-8?q?20150126-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...26 4 lvcreate Command Examples on Linux.md | 120 +++++++++++++ ...ning up Ubuntu 14.10,14.04,13.10 system.md | 163 ++++++++++++++++++ ...Without Rebooting on CentOS 7 or RHEL 7.md | 90 ++++++++++ 3 files changed, 373 insertions(+) create mode 100644 sources/tech/20150126 4 lvcreate Command Examples on Linux.md create mode 100644 sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md create mode 100644 sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md diff --git a/sources/tech/20150126 4 lvcreate Command Examples on Linux.md b/sources/tech/20150126 4 lvcreate Command Examples on Linux.md new file mode 100644 index 0000000000..ae7e177116 --- /dev/null +++ b/sources/tech/20150126 4 lvcreate Command Examples on Linux.md @@ -0,0 +1,120 @@ +4 lvcreate Command Examples on Linux +================================================================================ +Logical volume management (LVM) is a widely-used technique and extremely flexible disk management scheme. It basically contain three basic command : + +a. Creates the physical volumes using **pvcreate** +b. Create the volume group and add partition into volume group using **vgcreate** +c. Create a new logical volume using **lvcreate** + +![](http://www.ehowstuff.com/wp-content/uploads/2015/01/lvm-diagram1.jpg) + +The following examples focus on the command to create a logical volume in an existing volume group, **lvcreate**. **lvcreate** is the command do allocating logical extents from the free physical extent pool of that volume group. Normally logical volumes use up any space available on the underlying physical volumes on a next-free basis. Modifying the logical volume will frees and reallocates space in the physical volumes. The following **lvcreate** command has been tested on linux CentOS 5, CentOS 6, CentOS 7, RHEL 5, RHEl 6 and RHEL 7 version. + +### 4 lvcreate Command Examples on Linux : ### + +1. The following command creates a logical volume 15 gigabytes in size in the volume group vg_newlvm : + + [root@centos7 ~]# lvcreate -L 15G vg_newlvm + +2. The following command creates a 2500 MB linear logical volume named centos7_newvol in the volume group +vg_newlvm, creating the block device /dev/vg_newlvm/centos7_newvol : + + [root@centos7 ~]# lvcreate -L 2500 -n centos7_newvol vg_newlvm + +3. You can use the -l argument of the **lvcreate** command to specify the size of the logical volume in extents. You can also use this argument to specify the percentage of the volume group to use for the logical volume. The following command creates a logical volume called centos7_newvol that uses 50% of the total space in volume group vg_newlvm : + + [root@centos7 ~]# lvcreate -l 50%VG -n centos7_newvol vg_newlvm + +4. The following command creates a logical volume called centos7_newvol that uses all of the unallocated space in the volume group vg_newlvm : + + [root@centos7 ~]# lvcreate --name centos7_newvol -l 100%FREE vg_newlvm + +To see more **lvcreate** command options, issue the following command : + + [root@centos7 ~]# lvcreate --help + +---------- + + lvcreate: Create a logical volume + + lvcreate + [-A|--autobackup {y|n}] + [-a|--activate [a|e|l]{y|n}] + [--addtag Tag] + [--alloc AllocationPolicy] + [--cachemode CacheMode] + [-C|--contiguous {y|n}] + [-d|--debug] + [-h|-?|--help] + [--ignoremonitoring] + [--monitor {y|n}] + [-i|--stripes Stripes [-I|--stripesize StripeSize]] + [-k|--setactivationskip {y|n}] + [-K|--ignoreactivationskip] + {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] | + -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} + [-M|--persistent {y|n}] [--major major] [--minor minor] + [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]] + [-n|--name LogicalVolumeName] + [--noudevsync] + [-p|--permission {r|rw}] + [--[raid]minrecoveryrate Rate] + [--[raid]maxrecoveryrate Rate] + [-r|--readahead ReadAheadSectors|auto|none] + [-R|--regionsize MirrorLogRegionSize] + [-T|--thin [-c|--chunksize ChunkSize] + [--discards {ignore|nopassdown|passdown}] + [--poolmetadatasize MetadataSize[bBsSkKmMgG]]] + [--poolmetadataspare {y|n}] + [--thinpool ThinPoolLogicalVolume{Name|Path}] + [-t|--test] + [--type VolumeType] + [-v|--verbose] + [-W|--wipesignatures {y|n}] + [-Z|--zero {y|n}] + [--version] + VolumeGroupName [PhysicalVolumePath...] + + lvcreate + { {-s|--snapshot} OriginalLogicalVolume[Path] | + [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize} + {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume] + -V|--virtualsize VirtualSize} + [-c|--chunksize] + [-A|--autobackup {y|n}] + [--addtag Tag] + [--alloc AllocationPolicy] + [-C|--contiguous {y|n}] + [-d|--debug] + [--discards {ignore|nopassdown|passdown}] + [-h|-?|--help] + [--ignoremonitoring] + [--monitor {y|n}] + [-i|--stripes Stripes [-I|--stripesize StripeSize]] + [-k|--setactivationskip {y|n}] + [-K|--ignoreactivationskip] + {-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] | + -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} + [--poolmetadatasize MetadataVolumeSize[bBsSkKmMgG]] + [-M|--persistent {y|n}] [--major major] [--minor minor] + [-n|--name LogicalVolumeName] + [--noudevsync] + [-p|--permission {r|rw}] + [-r|--readahead ReadAheadSectors|auto|none] + [-t|--test] + [--thinpool ThinPoolLogicalVolume[Path]] + [-v|--verbose] + [--version] + [PhysicalVolumePath...] + +-------------------------------------------------------------------------------- + +via: http://www.ehowstuff.com/4-lvcreate-command-examples-on-linux/ + +作者:[skytech][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ehowstuff.com/author/mhstar/ \ No newline at end of file diff --git a/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md b/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md new file mode 100644 index 0000000000..d87948bc59 --- /dev/null +++ b/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md @@ -0,0 +1,163 @@ +Cleaning up Ubuntu 14.10,14.04,13.10 system +================================================================================ +We have already discussed [Cleaning up a Ubuntu GNU/Linux system][1] and this tutorial is updated with new ubuntu versions and more tools added. + +If you want to clean your ubuntu machine you need to follow these simple steps to remove all unnecessary junk files. + +### Remove partial packages ### + +This is yet another built-in feature, but this time it is not used in Synaptic Package Manager. It is used in the Terminal. Now, in the Terminal, key in the following command + + sudo apt-get autoclean + +Then enact the package clean command. What this commnad does is to clean remove .deb packages that apt caches when you install/update programs. To use the clean command type the following in a terminal window: + + sudo apt-get clean + +You can then use the autoremove command. What the autoremove command does is to remove packages installed as dependencies after the original package is removed from the system. To use autoremove tye the following in a terminal window: + + sudo apt-get autoremove + +### Remove unnecessary locale data ### + +For this we need to install localepurge.Automagically remove unnecessary locale data.This is just a simple script to recover diskspace wasted for unneeded locale files and localized man pages. It will automagically be invoked upon completion of any apt installation run. + +Install localepurge in Ubuntu + + sudo apt-get install localepurge + +After installing anything with apt-get install, localepurge will remove all translation files and translated man pages in languages you cannot read. + +If you want to configure localepurge you need to edit /etc/locale.nopurge + +This can save you several megabytes of disk space, depending on the packages you have installed. + +Example:- + +I am trying to install dicus using apt-get + +sudo apt-get install discus + +after end of this installation you can see something like below + +localepurge: Disk space freed in /usr/share/locale: 41860K + +### Remove "orphaned" packages ### + +If you want to remove orphaned packages you need to install deborphan package. + +Install deborphan in Ubuntu + + sudo apt-get install deborphan + +### Using deborphan ### + +Open Your terminal and enter the following command + + sudo deborphan | xargs sudo apt-get -y remove --purge + +### Remove "orphaned" packages Using GtkOrphan ### + +GtkOrphan (a Perl/Gtk2 application for debian systems) is a graphical tool which analyzes the status of your installations, looking for orphaned libraries. It implements a GUI front-end for deborphan, adding the package-removal capability. + +### Install GtkOrphan in Ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install gtkorphan + +#### Screenshot #### + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/41.png) + +### Remove Orphan packages using Wajig ### + +simplified Debian package management front end.Wajig is a single commandline wrapper around apt, apt-cache, dpkg,/etc/init.d scripts and more, intended to be easy to use and providing extensive documentation for all of its functions. + +With a suitable sudo configuration, most (if not all) package installation as well as creation tasks can be done from a user shell. Wajig is also suitable for general system administration.A Gnome GUI command ‘gjig' is also included in the package. + +### Install Wajig in Ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install wajig + +### Debfoster --- Keep track of what you did install ### + +debfoster maintains a list of installed packages that were explicitly requested rather than installed as a dependency. Arguments are entirely optional, debfoster can be invoked per se after each run of dpkg and/or apt-get. + +Alternatively you can use debfoster to install and remove packages by specifying the packages on the command line. Packages suffixed with a --- are removed while packages without a suffix are installed. + +If a new package is encountered or if debfoster notices that a package that used to be a dependency is now an orphan, it will ask you what to do with it. If you decide to keep it, debfoster will just take note and continue. If you decide that this package is not interesting enough it will be removed as soon as debfoster is done asking questions. If your choices cause other packages to become orphaned more questions will ensue. + +### Install debfoster in Ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install debfoster + +### Using debfoster ### + +to create the initial keepers file use the following command + + sudo debfoster -q + +you can always edit the file /var/lib/debfosterkeepers which defines the packages you want to remain on your system. + +to edit the keepers file type + + sudo vi /var/lib/debfoster/keepers + +To force debfoster to remove all packages that aren't listed in this list or dependencies of packages that are listed in this list.It will also add all packages in this list that aren't installed. So it makes your system comply with this list. Do this + + sudo debfoster -f + +To keep track of what you installed additionally do once in a while : + + sudo debfoster + +### xdiskusage -- Check where the space on your hard drive goes ### + +Displays a graphic of your disk usage with du.xdiskusage is a user-friendly program to show you what is using up all your disk space. It is based on the design of the "xdu" program written by Phillip C. Dykstra. Changes have been made so it runs "du" for you, and can display the free space left on the disk, and produce a PostScript version of the display.xdiskusage is nice if you want to easily see where the space on your hard drive goes. + +### Install xdiskusage in Ubuntu ### + + sudo apt-get install xdiskusage + +If you want to open this application you need to use the following command + + sudo xdiskusage + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/5.png) + +Once it opens you should see similar to the following screen + +### Bleachbit ### + +BleachBit quickly frees disk space and tirelessly guards your privacy. Free cache, delete cookies, clear Internet history, shred temporary files, delete logs, and discard junk you didn't know was there. Designed for Linux and Windows systems, it wipes clean a thousand applications including Firefox, Internet Explorer, Adobe Flash, Google Chrome, Opera, Safari,and more. Beyond simply deleting files, BleachBit includes advanced features such as shredding files to prevent recovery, wiping free disk space to hide traces of files deleted by other applications, and vacuuming Firefox to make it faster. Better than free, BleachBit is open source. + +### Install Bleachbit in ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install bleachbit + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/6.png) + +### Using Ubuntu-Tweak ### + +You can also Use [Ubuntu-Tweak][2] To clean up your system + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/cleaning-up-a-ubuntu-gnulinux-system-updated-with-ubuntu-14-10-and-more-tools-added.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html +[2]:http://www.ubuntugeek.com/www.ubuntugeek.com/install-ubuntu-tweak-on-ubuntu-14-10.html \ No newline at end of file diff --git a/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md b/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md new file mode 100644 index 0000000000..2e6886bddf --- /dev/null +++ b/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md @@ -0,0 +1,90 @@ +How to Add a New Hard Disk Without Rebooting on CentOS 7/ RHEL 7 +================================================================================ +Normally when you have added new storage to a running Virtual machine, you probably won’t see the new storage automatically. This is because the SCSI bus to which the storage devices are connected needs to be rescanned to make the new hardware visible. The is one simple command to rescan the SCSI Bus and add SCSI Devices. The following steps has been tested on CentOS 7 and RHEL 7. + +1. Add the new 20GB from the ESXi or vCenter : + +![](http://www.ehowstuff.com/wp-content/uploads/2015/01/Create-new-LVM-CentOS7-1.png) + +2. Show current disk and partition : + + [root@centos7 ~]# fdisk -l + +---------- + + Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + Disk label type: dos + Disk identifier: 0x0006b96a + + Device Boot Start End Blocks Id System + /dev/sda1 * 2048 1026047 512000 83 Linux + /dev/sda2 1026048 62914559 30944256 8e Linux LVM + + Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + + + Disk /dev/mapper/centos-root: 29.5 GB, 29536288768 bytes, 57688064 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + +3. Identify host bus number : + + [root@centos7 ~]# ls /sys/class/scsi_host/ + host0 host1 host2 + +4. Rescan the SCSI Bus to Add a SCSI Devices : + + [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan + [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan + [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan + +5. Verify the disk and partiton and make sure 20GB has been added. In this case, the following line appeared “Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors” and confirmed that 20GB has been added without reboot the server : + + [root@centos7 ~]# fdisk -l + + Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + Disk label type: dos + Disk identifier: 0x0006b96a + + Device Boot Start End Blocks Id System + /dev/sda1 * 2048 1026047 512000 83 Linux + /dev/sda2 1026048 62914559 30944256 8e Linux LVM + + Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + + + Disk /dev/mapper/centos-root: 29.5 GB, 29536288768 bytes, 57688064 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + + + Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors + Units = sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + +-------------------------------------------------------------------------------- + +via: http://www.ehowstuff.com/how-to-add-a-new-hard-disk-without-rebooting-on-centos-7-rhel-7/ + +作者:[skytech][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ehowstuff.com/author/mhstar/ \ No newline at end of file From de7ac71f92b4a05335c473f47c901763eccd5d38 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 26 Jan 2015 11:56:20 +0800 Subject: [PATCH 071/725] =?UTF-8?q?20150126-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Processes Of A Specific User With slay.md | 50 +++++ ...Installing Cisco Packet tracer in Linux.md | 197 ++++++++++++++++++ 2 files changed, 247 insertions(+) create mode 100644 sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md create mode 100644 sources/tech/20150126 Installing Cisco Packet tracer in Linux.md diff --git a/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md b/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md new file mode 100644 index 0000000000..ea6695de1f --- /dev/null +++ b/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md @@ -0,0 +1,50 @@ +How To Kill All Processes Of A Specific User With ‘slay’ +================================================================================ +**slay** written by **Chris Ausbrooks** is a command line tool that can be used to kill all running processes of a specific user. slay will be useful to system administrators who finds out certain users are running process they shouldn’t have. + +slay is available in the official repositories of most distros. + +To install + +### Ubuntu and it’s derivatives ### + + sudo apt-get install slay + +### Arch Linux and Its derivatives ### + + sudo pacman -S slay + +### Fedora and its derivatives ### + + sudo yum install slay + +### Usage ### + +You need administrative rights to use slay, + +to kill all processes of a specific user all you need is: + + sudo slay + +For example; if I want to kill all processes of a user named **amitooo** + + ~ sudo slay amitooo + slay: Done. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/slay-amitoo-kpenee.png) + +You should see feedback for slay when done slaying. + +Enjoy. + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/kill-processes-specific-user-slay/ + +作者:[ Enock Seth Nyamador][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/seth/ \ No newline at end of file diff --git a/sources/tech/20150126 Installing Cisco Packet tracer in Linux.md b/sources/tech/20150126 Installing Cisco Packet tracer in Linux.md new file mode 100644 index 0000000000..edac7a7490 --- /dev/null +++ b/sources/tech/20150126 Installing Cisco Packet tracer in Linux.md @@ -0,0 +1,197 @@ +Installing Cisco Packet tracer in Linux +================================================================================ +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Main_picture.png) + +### What is Cisco Packet tracer ? ### + +**Cisco Packet tracer** is a powerful network simulator tool which used to trained while we do some Cisco certifications. It provide us good Interface view for every router’s, and networking devices which with many options same as using the physical machines we can use unlimited devices in a network. We can create multiple network in single project to get trained like a professionals. packet tracer will provide us with simulated application layer protocols such as **HTTP**, **DNS**, Routing with **RIP**, **OSPF**, **EIGRP** etc. + +Now it has been released including **ASA 5505 firewall** with command line configurations. Packet tracer available commonly for Windows, but not for Linux distributions. Here we can download and get install Cisco package tracer. + +#### Newly released version of Cisco packet tracer: #### + +The next Cisco Packet Tracer version will be Cisco Packet Tracer 6.2 currently it’s under development. + +### My Environment Setup: ### + +**Hostname** : desktop1.unixmen.com + +**IP address** : 192.168.0.167 + +**Operating system** : Ubuntu 14.04 LTS Desktop + + # hostname + + # ifconfig | grep inet + + # lsb_release -a + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_001.png) + +### Step 1: First we need to download the Cisco Packet tracer. ### + +To download Packet Tracer from official website we need to have a token, sign into Cisco NetSpace and select CCNA > Cisco Packet Tracer from the Offerings menu to start the download. If we don’t have a token you can get from below link which i have uploaded in Dropbox. + +Official Website: [https://www.netacad.com/][1] + +Many of them don’t have a token to download packet tracer. For that i have uploaded it in dropbox you can get packet tracer from below URL. + +[Download Cisco Packet Tracer 6.1.1][2] + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_002.png) + +### Step 2: Install Java: ### + +To get install packet tracer we need to have install Java, To get install java we can use the default or add the PPA repository and update the package cache to get install java. + +Install the default jre using + + # sudo apt-get install default-jre + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_003.png) + +(or) + +Use the below step to get install Java Run-time and set the Environment. + +Download Java from official website : [Download Java][3] + + # tar -zxvf jre-8u31-linux-x64.tar.gz + + # sudo mkdir -p /usr/lib/jvm + + # sudo mv -v jre1.8.0_31 /usr/lib/jvm/ + + # cd /usr/lib/jvm/ + + # sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jre1.8.0_31/bin/java" 1 + + # sudo update-alternatives --set "java" "/usr/lib/jvm/jre1.8.0_31/bin/java" + +Set the environment for java by editing the profile file and add the location. While we adding in profile file java will available for every user’s in our machine. + + # sudo vi /etc/profile + +Add the following entries to the bottom of your /etc/profile file: + + export JAVA_HOME=/usr/lib/jvm/jre1.8.0_31 + export PATH=$PATH:/usr/java/jre1.8.0_31/bin + +Run the below command to activate java path immediately. + + # . /etc/profile + +Check for the Java version and Environment: + + # echo $JAVA_HOME + + # java -version + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_004.png) + +### Step 3: Enable 32bit architecture support: ### + +For Packet tracer we need some of 32bit packages. To get install 32bit packages we need to install some of dependencies using below commands. + + # sudo dpkg --add-architecture i386 + # sudo apt-get update + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_005.png) + + # sudo apt-get install libc6:i386 + + # sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 + + # sudo apt-get install libnss3-1d:i386 libqt4-qt3support:i386 libssl1.0.0:i386 libqtwebkit4:i386 libqt4-scripttools:i386 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_006.png) + +### Step 4: Extract and install the package: ### + +Extract the downloaded package using tar command. + + # mv Cisco\ Packet\ Tracer\ 6.1.1\ Linux.tar.gz\?dl\=0 Cisco_Packet_tracer.tar.gz + + # tar -zxvf Cisco_Packet_tracer.tar.gz + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_007.png) + +Navigate to the extracted directory + + # cd PacketTracer611Student + +Now it’s time to start the installation , Installation is very simple and just take few seconds. + + # sudo ./install + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_008.png) + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_009.png) + +To working with Package tracer we need to set the environment for that Cisco have provided the environment script, We need to run the script using root user to set the environment variable. + + # sudo ./set_ptenv.sh + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_010.png) + +That’s it for installation step’s. next we need to create a Desktop Icon for Packet tracer. + +Create the Desktop Icon by creating desktop file under. + + # sudo su + + # cd /usr/share/applications + + # sudo vim packettracer.desktop + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_011.png) + +Append the Below content to the file using vim editor or your favourite one. + + [Desktop Entry] + Name= Packettracer + Comment=Networking + GenericName=Cisco Packettracer + Exec=/opt/packettracer/packettracer + Icon=/usr/share/icons/packettracer.jpeg + StartupNotify=true + Terminal=false + Type=Application + +Save and quit using wq! + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_012.png) + +### Step 5: Run the packet tracer ### + + # sudo packettracer + +That’s it we have successfully installed the packet tracer in Linux, These above steps are suitable for every debian based Linux distributions. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_013.png) + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/pkt_014.png) + +### Resources ### + +Home page:[Netacad][4] + +### Conclusion: ### + +Here we have seen how to install packet tracer in Linux distribution, Hope you have find a way to get install your favorite Simulator in Linux. + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/installing-cisco-packet-tracer-linux/ + +作者:[babin][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/babin/ +[1]:https://www.netacad.com/ +[2]:https://www.dropbox.com/s/5evz8gyqqvq3o3v/Cisco%20Packet%20Tracer%206.1.1%20Linux.tar.gz?dl=0 +[3]:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html +[4]:https://www.netacad.com/ \ No newline at end of file From a7e8a8e2bd1b40c1610452fde52d2594d453b8f8 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Mon, 26 Jan 2015 12:05:24 +0800 Subject: [PATCH 072/725] translating by KayGuoWhu --- sources/talk/20150121 If a 32-bit integer overflows.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20150121 If a 32-bit integer overflows.md b/sources/talk/20150121 If a 32-bit integer overflows.md index bf7c447f25..fc8c375919 100644 --- a/sources/talk/20150121 If a 32-bit integer overflows.md +++ b/sources/talk/20150121 If a 32-bit integer overflows.md @@ -1,3 +1,4 @@ +KayGuoWhu translating If a 32-bit integer overflows, can we use a 40-bit structure instead of a 64-bit long one? --------- From d9b0be7d67f69a5a2e7a9d6da36ff40a7d623ecd Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Mon, 26 Jan 2015 13:06:34 +0800 Subject: [PATCH 073/725] translating --- ...26 How To Kill All Processes Of A Specific User With slay.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md b/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md index ea6695de1f..4a733e3d8f 100644 --- a/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md +++ b/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md @@ -1,3 +1,5 @@ +Translating---geekpi + How To Kill All Processes Of A Specific User With ‘slay’ ================================================================================ **slay** written by **Chris Ausbrooks** is a command line tool that can be used to kill all running processes of a specific user. slay will be useful to system administrators who finds out certain users are running process they shouldn’t have. From c10708718cbda8d46ce64228dfa83534ddcfd632 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Mon, 26 Jan 2015 13:14:48 +0800 Subject: [PATCH 074/725] translated --- ... Processes Of A Specific User With slay.md | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) rename {sources => translated}/tech/20150126 How To Kill All Processes Of A Specific User With slay.md (50%) diff --git a/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md b/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md similarity index 50% rename from sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md rename to translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md index 4a733e3d8f..ce796cbeef 100644 --- a/sources/tech/20150126 How To Kill All Processes Of A Specific User With slay.md +++ b/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md @@ -1,43 +1,41 @@ -Translating---geekpi - -How To Kill All Processes Of A Specific User With ‘slay’ +如何用‘slay’杀掉指定用户的所有进程 ================================================================================ -**slay** written by **Chris Ausbrooks** is a command line tool that can be used to kill all running processes of a specific user. slay will be useful to system administrators who finds out certain users are running process they shouldn’t have. +**slay** 是**Chris Ausbrooks**写的一款用于杀掉指定用户所有运行进程的命令行工具。slay对系统管理员而言在找出那些不应该运行进程的用户是很有用的。 -slay is available in the official repositories of most distros. +slay在大多数发行版中都有官方仓库。 -To install +安装 -### Ubuntu and it’s derivatives ### +### Ubuntu 和它的衍生版 ### sudo apt-get install slay -### Arch Linux and Its derivatives ### +### Arch Linux 和它的衍生版 ### sudo pacman -S slay -### Fedora and its derivatives ### +### Fedora 和它的衍生版 ### sudo yum install slay -### Usage ### +### 用法 ### -You need administrative rights to use slay, +你应该有管理员权限来使用slay, -to kill all processes of a specific user all you need is: +要杀掉指定用户的进程,你就要: sudo slay -For example; if I want to kill all processes of a user named **amitooo** +比如:我想杀掉用户**amitooo**的所有进程。 ~ sudo slay amitooo slay: Done. ![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/slay-amitoo-kpenee.png) -You should see feedback for slay when done slaying. +当slay运行完成后,你应该就可以看到反馈了。 -Enjoy. +享受吧。 -------------------------------------------------------------------------------- From fb769c5ba47b287b37b941b829cadcf50d45c1a0 Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Mon, 26 Jan 2015 13:17:48 +0800 Subject: [PATCH 075/725] translating --- ...d a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md b/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md index 2e6886bddf..d5c4ea4794 100644 --- a/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md +++ b/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md @@ -1,3 +1,5 @@ +Translating---geekpi + How to Add a New Hard Disk Without Rebooting on CentOS 7/ RHEL 7 ================================================================================ Normally when you have added new storage to a running Virtual machine, you probably won’t see the new storage automatically. This is because the SCSI bus to which the storage devices are connected needs to be rescanned to make the new hardware visible. The is one simple command to rescan the SCSI Bus and add SCSI Devices. The following steps has been tested on CentOS 7 and RHEL 7. From 8c42525e549f8398ae97ad36831f57e37c599deb Mon Sep 17 00:00:00 2001 From: zhengsihua Date: Mon, 26 Jan 2015 13:27:28 +0800 Subject: [PATCH 076/725] translated --- ...l Processes Of A Specific User With slay.md | 2 +- ... Without Rebooting on CentOS 7 or RHEL 7.md | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) rename {sources => translated}/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md (77%) diff --git a/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md b/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md index ce796cbeef..897c4c16c7 100644 --- a/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md +++ b/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md @@ -42,7 +42,7 @@ slay在大多数发行版中都有官方仓库。 via: http://www.unixmen.com/kill-processes-specific-user-slay/ 作者:[ Enock Seth Nyamador][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md b/translated/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md similarity index 77% rename from sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md rename to translated/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md index d5c4ea4794..104f05e0a7 100644 --- a/sources/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md +++ b/translated/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md @@ -1,14 +1,12 @@ -Translating---geekpi - -How to Add a New Hard Disk Without Rebooting on CentOS 7/ RHEL 7 +如何不用重启在CentOS 7/ RHEL 7中添加一块新硬盘 ================================================================================ -Normally when you have added new storage to a running Virtual machine, you probably won’t see the new storage automatically. This is because the SCSI bus to which the storage devices are connected needs to be rescanned to make the new hardware visible. The is one simple command to rescan the SCSI Bus and add SCSI Devices. The following steps has been tested on CentOS 7 and RHEL 7. +通常在你在虚拟机中添加一块新硬盘时,你可能会看到新硬盘没有自动加载。这是因为连接到硬盘的SCSI总线需要重新扫描来使得新硬盘可见。这里有一个简单的命令来重新扫描SCSI总线和SCSI设备。下面这几步在CentOS 7 和RHEL 7 中测试过。 -1. Add the new 20GB from the ESXi or vCenter : +1. 在ESXi或者vCenter中添加一块新的20G硬盘: ![](http://www.ehowstuff.com/wp-content/uploads/2015/01/Create-new-LVM-CentOS7-1.png) -2. Show current disk and partition : +2. 显示当前磁盘分区: [root@centos7 ~]# fdisk -l @@ -36,18 +34,18 @@ Normally when you have added new storage to a running Virtual machine, you proba Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes -3. Identify host bus number : +3. 确定主机总线号 [root@centos7 ~]# ls /sys/class/scsi_host/ host0 host1 host2 -4. Rescan the SCSI Bus to Add a SCSI Devices : +4. 重新扫描SCSI总线来添加设备 [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan -5. Verify the disk and partiton and make sure 20GB has been added. In this case, the following line appeared “Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors” and confirmed that 20GB has been added without reboot the server : +5. 验证磁盘和分区并确保20GB硬盘已经添加了。在本例中,出现了下面这行 “Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors” 并且确认新盘添加后没有重启服务器: [root@centos7 ~]# fdisk -l @@ -84,7 +82,7 @@ Normally when you have added new storage to a running Virtual machine, you proba via: http://www.ehowstuff.com/how-to-add-a-new-hard-disk-without-rebooting-on-centos-7-rhel-7/ 作者:[skytech][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 30323a0989ae3d4397c0f890f6663769e2a5413e Mon Sep 17 00:00:00 2001 From: Ping Date: Mon, 26 Jan 2015 14:44:36 +0800 Subject: [PATCH 077/725] Translated sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl --- ...How to set a custom HTTP header in curl.md | 46 ------------------- ...How to set a custom HTTP header in curl.md | 44 ++++++++++++++++++ 2 files changed, 44 insertions(+), 46 deletions(-) delete mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md create mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md b/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md deleted file mode 100644 index f52527cd8a..0000000000 --- a/sources/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md +++ /dev/null @@ -1,46 +0,0 @@ -Ping Translating - -Linux FAQs with Answers--How to set a custom HTTP header in curl -================================================================================ -> **Question**: I am trying to fetch a URL with curl command, but want to set a few custom header fields in the outgoing HTTP request. How can I use a custom HTTP header with curl? - -curl is a powerful command-line tool that can transfer data to and from a server over network. It supports a number of transfer protocols, notably HTTP/HTTPS, and many others such as FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS, etc. When you send out an HTTP request for a URL with curl, it uses a default HTTP header with only essential header fields (e.g., User-Agent, Host, and Accept). - -![](https://farm8.staticflickr.com/7568/16225032086_fb8f1c508a_b.jpg) - -In some cases, however, you may want to override the default header or even add a custom header field in an HTTP request. For example, you may want to override "Host" field to test a [load balancer][1], or spoof "User-Agent" string to get around browser-specific access restriction. In other cases, you may be accessing a website which requires a specific cookie, or testing a REST-ful API with various custom parameters in the header. - -To handle all these cases, curl provides an easy way to fully control the HTTP header of outgoing HTTP requests. The parameter you want to use is "-H" or equivalently "--header". - -The "-H" option can be specified multiple times with curl command to define more than one HTTP header fields. - -For example, the following command sets three HTTP header fields, i.e., overriding "Host" field, and add two fields ("Accept-Language" and "Cookie"). - - $ curl -H 'Host: 157.166.226.25' -H 'Accept-Language: es' -H 'Cookie: ID=1234' http://cnn.com - -![](https://farm8.staticflickr.com/7520/16250111432_de39638ec0_c.jpg) - -For standard HTTP header fields such as "User-Agent", "Cookie", "Host", there is actually another way to setting them. The curl command offers designated options for setting these header fields: - -- **-A (or --user-agent)**: set "User-Agent" field. -- **-b (or --cookie)**: set "Cookie" field. -- **-e (or --referer)**: set "Referer" field. - -For example, the following two commands are equivalent. Both of them change "User-Agent" string in the HTTP header. - - $ curl -H "User-Agent: my browser" http://cnn.com - $ curl -A "my browser" http://cnn.com - -wget is another command-line tool which you can use to fetch a URL similar to curl, and wget also allows you to use a custom HTTP header. Check out [this post][2] for details on wget command. - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/custom-http-header-curl.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://xmodulo.com/haproxy-http-load-balancer-linux.html -[2]:http://xmodulo.com/how-to-use-custom-http-headers-with-wget.html \ No newline at end of file diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md b/translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md new file mode 100644 index 0000000000..7c382558eb --- /dev/null +++ b/translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md @@ -0,0 +1,44 @@ +Linux有问必答:如何在curl中设置自定义的HTTP头 +================================================================================ +> **问题**:我正尝试使用curl命令获取一个URL,但除此之外我还想在传出的HTTP请求中设置一些自定义的头部字段。我如何能够在curl中使用自定义的HTTP头呢? + +curl是一个强大的命令行工具,它可以通过网络将信息传递给服务器或者从服务器获取数据。他支持很多的传输协议,尤其是HTTP/HTTPS以及其他诸如FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS协议等。当你使用curl向一个URL发送HTTP请求的时候,它会使用一个默认只包含必要的头部字段(如:User-Agent, Host, and Accept)的HTTP头。 + +![](https://farm8.staticflickr.com/7568/16225032086_fb8f1c508a_b.jpg) + +在一些个例中,或许你想要在一个HTTP请求中覆盖掉默认的HTTP头或者添加一个新的自定义头部字段。例如,你或许想要重写“HOST”字段来测试一个[负载均衡][1],或者通过重写"User-Agent"字符串来欺骗特定浏览器以解决其访问限制的问题。 + +为了解决所有这些问题,curl提供了一个简单的方法来完全控制传出HTTP请求的HTTP头。你需要的这个参数是“-H” 或者 “--header”。 + +为了定义多个HTTP头部字段,"-H"选项可以在curl命令中被多次指定。 + +例如:以下命令设置了3个HTTP头部字段。也就是说,重写了“HOST”字段,并且添加了两个字段("Accept-Language" 和 "Cookie") + + $ curl -H 'Host: 157.166.226.25' -H 'Accept-Language: es' -H 'Cookie: ID=1234' http://cnn.com + +![](https://farm8.staticflickr.com/7520/16250111432_de39638ec0_c.jpg) + +对于"User-Agent", "Cookie", "Host"这类标准的HTTP头部字段,通常会有另外一种设置方法。curl命令提供了特定的选项来对这些头部字段进行设置: + +- **-A (or --user-agent)**: 设置 "User-Agent" 字段. +- **-b (or --cookie)**: 设置 "Cookie" 字段. +- **-e (or --referer)**: 设置 "Referer" 字段. + +例如,以下两个命令是等效的。这两个命令同样都对HTTP头的"User-Agent"字符串进行了更改。 + + $ curl -H "User-Agent: my browser" http://cnn.com + $ curl -A "my browser" http://cnn.com + +wget是另外一个类似于curl,可以用来获取URL的命令行工具。并且wget也一样允许你使用一个自定义的HTTP头。点击[这里][2]查看wget命令的详细信息。 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/custom-http-header-curl.html + +译者:[Ping](http://mr-ping.com) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/haproxy-http-load-balancer-linux.html +[2]:http://xmodulo.com/how-to-use-custom-http-headers-with-wget.html \ No newline at end of file From fa73025dc787a11b28f5c225df8d2b532221e24a Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 26 Jan 2015 15:24:25 +0800 Subject: [PATCH 078/725] =?UTF-8?q?20150126-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0126 CD Audio Grabbers--Graphical Based.md | 128 ++++++++++++++++++ ...ving your log files to RAM Using Ramlog.md | 112 +++++++++++++++ ...A TCP or UDP Network Monitoring Utility.md | 64 +++++++++ 3 files changed, 304 insertions(+) create mode 100644 sources/share/20150126 CD Audio Grabbers--Graphical Based.md create mode 100644 sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md create mode 100644 sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md diff --git a/sources/share/20150126 CD Audio Grabbers--Graphical Based.md b/sources/share/20150126 CD Audio Grabbers--Graphical Based.md new file mode 100644 index 0000000000..5dcfa26cca --- /dev/null +++ b/sources/share/20150126 CD Audio Grabbers--Graphical Based.md @@ -0,0 +1,128 @@ +CD Audio Grabbers - Graphical Based +================================================================================ +CD audio grabbers are designed to extract ("rip") the raw digital audio (in a format commonly called CDDA) from a compact disc to a file or other output. This type of software enables a user to encode the digital audio into a variety of formats, and download and upload disc info from freedb, an internet compact disc database. + +Is copying CDs legal? Under US copyright law, converting an original CD to digital files for personal use has been cited as qualifying as 'fair use'. However, US copyright law does not explicitly allow or forbid making copies of a personally-owned audio CD, and case law has not yet established what specific scenarios are permitted as fair use. The copyright position is much clearer in the UK. From 2014 it become legal for UK citizens to make copies of CDs, MP3s, DVD, Blu-rays and e-books. This only applies if the individual owns the physical media being ripped, and the copy is made only for their own private use. For other countries in the European Union, member nations can allow a private copy exception too. + +If you are not sure what the position is for the country you live in, please check your local copyright law to make sure that you are on the right side of the law before using the software featured in this two page article. + +To some extent, it may seem a bit of a chore to rip CDs. Streaming services like Spotify and Google Play Music offer access to a huge library of music in a convenient form, and without having to rip your CD collection. However, if you already have a large CD collection, it is still desirable to be able to convert your CDs to enjoy on mobile devices like smartphones, tablets, and portable MP3 players. + +This two page article highlights my favorite audio CD grabbers. I pick the best four graphical audio grabbers, and the best four console audio grabbers. All of the utilities are released under an open source license. + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/freac.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-freac.png) + +fre:ac is an open source audio converter and CD ripper that supports a wide range of popular formats and encoders. The utility currently converts between MP3, MP4/M4A, WMA, Ogg Vorbis, FLAC, AAC, WAV and Bonk formats. It comes with several different presents for the LAME encoder. + +#### Features include: #### + +- Easy to learn and use +- Converter for MP3, MP4/M4A, WMA, Ogg Vorbis, FLAC, AAC, WAV and Bonk formats +- Integrated CD ripper with CDDB/freedb title database support +- Multi-core optimized encoders to speed up conversions on modern PCs +- Full Unicode support for tags and file names +- Easy to learn and use, still offers expert options when you need them +- Joblists +- Can use Winamp 2 input plugins +- Multilingual user interface available in 41 languages + +- Website: [freac.org][1] +- Developer: Robert Kausch +- License: GNU GPL v2 +- Version Number: 20141005 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/Audex.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-Audex.png) + +Audex is an easy to use open source audio CD ripping application. Whilst it is in a fairly early stage of development, this KDE desktop tool is stable, slick and simple to use. + +The assistant is able to create profiles for LAME, OGG Vorbis (oggenc), FLAC, FAAC (AAC/MP4) and RIFF WAVE. Beyond the assistant you can define your own profile, which means, that Audex works together with commmand line encoders in general. + +#### Features include: #### + +- Extract with CDDA Paranoia +- Extract and encode run parallel +- Filename editing with local and remote CDDB/FreeDB database +- Submit new entries to CDDB/FreeDB database +- Metadata correction tools like capitalize etc +- Multi-profile extraction (with one commandline-encoder per profile) +- Fetch covers from the internet and store them in the database +- Create playlists, cover and template-based-info files in target directory +- Create extraction and encoding protocols +- Transfer files to a FTP-server +- Internationalization support + +- Website: [kde.maniatek.com/audex][2] +- Developer: Marco Nelles +- License: GNU GPL v3 +- Version Number: 0.79 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/SoundJuicer.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-SoundJuicer.png) + +Sound Juicer is a lean CD ripper using GTK+ and GStreamer. It extracts audio from CDs and converts it into audio files. Sound Juicer can also play audio tracks directly from the CD, offering a preview before ripping. + +It supports any audio codec supported by a GStreamer plugin, including MP3, Ogg Vorbis, FLAC, and uncompressed PCM formats. + +It is an established part of the GNOME desktop environment. + +#### Features include: #### + +- Automatic track tagging via CDDB +- Encoding to ogg / vorbis, FLAC and raw WAV +- Easy to configure encoding path +- Multiple genres +- Internationalization support + +- Website: [burtonini.com][3] +- Developer: Ross Burton +- License: GNU GPL v2 +- Version Number: 3.14 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/ripperX.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-ripperX.png) + +ripperX is an open source graphical interface for ripping CD audio tracks and encoding them to Ogg, MP2, MP3, or FLAC formats. It's goal is to be easy to use, requiring only a few mouse clicks to convert an entire album. It supports CDDB lookups for album and track information. + +It uses cdparanoia to convert (i.e. "rip") CD audio tracks to WAV files, and then calls the Vorbis/Ogg encoder oggenc to convert the WAV to an OGG file. It can also call flac to perform lossless compression on the WAV file, resulting in a FLAC file. + +#### Features include: #### + +- Very simple to use +- Rip audio CD tracks into WAV, MP3, OGG, or FLAC files +- Supports CDDB lookups +- Supports ID3v2 tags +- Pause the ripping process + +- Website: [sourceforge.net/projects/ripperx][4] +- Developer: Marc André Tanner +- License: MIT/X Consortium License +- Version Number: 2.8.0 + +-------------------------------------------------------------------------------- + +via: http://www.linuxlinks.com/article/20150125043738417/AudioGrabbersGraphical.html + +作者:Frazer Kline +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.freac.org/ +[2]:http://kde.maniatek.com/audex/ +[3]:http://burtonini.com/blog/computers/sound-juicer +[4]:http://sourceforge.net/projects/ripperx/ \ No newline at end of file diff --git a/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md new file mode 100644 index 0000000000..db03257941 --- /dev/null +++ b/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md @@ -0,0 +1,112 @@ +Improve system performance by moving your log files to RAM Using Ramlog +================================================================================ +Ramlog act as a system daemon. On startup it creates ramdisk, it copies files from /var/log into ramdisk and mounts ramdisk as /var/log. All logs after that will be updated on ramdisk. Logs on harddrive are kept in folder /var/log.hdd which is updated when ramlog is restarted or stopped. On shutdown it saves log files back to harddisk so logs are consistent. Ramlog 2.x is using tmpfs by default, ramfs and kernel ramdisk are suppored as well. Program rsync is used for log synchronization. + +Note: Logs not saved to harddrive are lost in case of power outage or kernel panic. + +Install ramlog if you have enough of free memory and you want to keep your logs on ramdisk. It is good for notebook users, for systems with UPS or for systems running from flash -- to save some write cycles. + +How it works and what it does: + +1.Ramlog starts among the first daemons (it depends on other daemons you have installed). + +2.Directory /var/log.hdd is created and hardlinked to /var/log. + +3.In case tmpfs (default) or ramfs is used, it is mounted over /var/log + +If kernel ramdisk is used, ramdisk created in /dev/ram9 and it is mounted to /var/log, by default ramlog takes all ramdisk memory specified by kernel argument "ramdisk_size". + +5.All other daemons are started and all logs are updated in ramdisk. Logrotate works on ramdisk as well. + +6.In case ramlog is restarted (by default it is one time per day), directory /var/log.hdd is synchronized with /var/log using rsync. Frequency of the automatic log saves can be controller via cron, by default, the ramlog file is placed into /etc/cron.daily + +7.On shutdown ramlog shuts among the last daemons. + +8. During ramlog stop phase files from /var/log.hdd are synchronized with /var/log +Then /var/log is unmounted, /var/log.hdd is unmounted as well and empty directory /var/log.hdd is deleted. + +**Note:- This article is for advanced users only** + +### Install Ramlog in Ubuntu ### + +First you need to download the .deb package from [here][1] using the following command + + wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb + +Now you should be having ramlog_2.0.0_all.deb package install this package using the following command + + sudo dpkg -i ramlog_2.0.0_all.deb + +This will complete the installation now you need to run the following commands + + sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 . + +#Now update sysklogd in init levels, so it is stopped properly before ramlog is stopped: + + sudo update-rc.d -f sysklogd remove + + sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 . + +Now you need to restart your system + + sudo reboot + +After rebooting you need to run ‘ramlog getlogsize' to determine the size of your actual /var/log.Add about 40% to that number to ensure your ramdisk has sufficient size -- this will be the ramdisk size + +Edit your boot manager config file such as /etc/grub.conf, /boot/grub/menu.lst or /etc/lilo.conf and add update the actual kernel by adding kernel paramter ‘ramdisk_size=xxx' where xxx is calculated ramdisk size + +### Configuring Ramlog ### + +Ramlog configuration file is located in /etc/default/ramlog on deb based systems and you can set there below variables: + +Variable (with default value): + +Description: + + RAMDISKTYPE=0 + # Values: + # 0 -- tmpfs (can be swapped) -- default + # 1 -- ramfs (no max size in older kernels, + # cannot be swapped, not SELinux friendly) + # 2 -- old kernel ramdisk + TMPFS_RAMFS_SIZE= + #Maximum size of memory to be used by tmpfs or ramfs. + # The value can be percentage of total RAM or size in megabytes -- for example: + # TMPFS_RAMFS_SIZE=40% + # TMPFS_RAMFS_SIZE=100m + # Empty value means default tmpfs/ramfs size which is 50% of total RAM. + # For more options please check ‘man mount', section ‘Mount options for tmpfs' + # (btw -- ramfs supports size limit in newer kernels + # as well despite man says there are no mount options) + # It has only effect if RAMDISKTYPE=0 or 1 + KERNEL_RAMDISK_SIZE=MAX + #Kernel ramdisk size in kilobytes or MAX to use entire ramdisk. + #It has only effect if RAMDISKTYPE=2 + LOGGING=1 + # 0=off, 1=on Logs can be found in /var/log/ramdisk + LOGNAME=ramlog + # name of the ramlog log file (makes sense if LOGGING=1) + VERBOSE=1 + # 0=off, 1=on (if 1, teststartstop puts detials + # to the logs and it is called after start or stop fails) + +### How to uninstall Ubuntu ### + +Open the terminal and run the following command + + sudo dpkg -P ramlog + +Note: If ramlog was running before you uninstalled it, you should reboot your box to finish uninstallation procedure. + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb \ No newline at end of file diff --git a/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md b/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md new file mode 100644 index 0000000000..cc6badecc2 --- /dev/null +++ b/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md @@ -0,0 +1,64 @@ +iptraf: A TCP/UDP Network Monitoring Utility +================================================================================ +[iptraf][1] is an ncurses-based IP LAN monitor that generates various network statistics including TCP info, UDP counts, ICMP and OSPF information, Ethernet load info, node stats, IP checksum errors, and others. + +Its ncurses-based user interface also saves users from remembering command line switches. + +### Features ### + +- An IP traffic monitor that shows information on the IP traffic passing over your network. Includes TCP flag information, packet and byte counts, ICMP details, OSPF packet types. +- General and detailed interface statistics showing IP, TCP, UDP, ICMP, non-IP and other IP packet counts, IP checksum errors, interface activity, packet size counts. +- A TCP and UDP service monitor showing counts of incoming and outgoing packets for common TCP and UDP application ports +- A LAN statistics module that discovers active hosts and shows statistics showing the data activity on them +- TCP, UDP, and other protocol display filters, allowing you to view only traffic you’re interested in. +- Logging +- Supports Ethernet, FDDI, ISDN, SLIP, PPP, and loopback interface types. +- Utilizes the built-in raw socket interface of the Linux kernel, allowing it to be used over a wide range of supported network cards. +- Full-screen, menu-driven operation. + +To install + +### Ubuntu and it’s derivatives ### + + sudo apt-get install iptraf + +### Arch Linux and Its derivatives ### + + sudo pacman -S iptra + +### Fedora and its derivatives ### + + sudo yum install iptraf + +### Usage ### + +If the **iptraf** command is issued without any command-line options, the program comes up in interactive mode, with the various facilities accessed through the main menu. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/iptraf_1.png) + +Menu for easy navigation. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/iptraf_2.png) + +Selecting interfaces to monitor. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/iptraf_3.png) + +Traffic from interface **ppp0** + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/iptraf_4.png) + +Enjoy! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/iptraf-tcpudp-network-monitoring-utility/ + +作者:[Enock Seth Nyamador][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/seth/ +[1]:http://iptraf.seul.org/about.html \ No newline at end of file From f069f6bca7d4d8057d9d96b4e8c2188b37f70dcb Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 26 Jan 2015 16:52:38 +0800 Subject: [PATCH 079/725] Translating by ZTinoZ --- ...x Commands Interview Questions & Answers.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 2b1fa24d92..7e73344c2d 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -78,29 +78,29 @@ 答: # find /var \! -atime -90 -**问:14 在整个目录树下查找核心文件并Search for core files in the entire directory tree and delete them as found without prompting for confirmation** +**问:14 在整个目录树下查找核心文件,如发现则删除它们且不提示确认信息。** 答: # find / -name core -exec rm {} \; **问:15 strings命令有什么作用?** -答: strings命令用来extract and display the legible contents of a non-text file. +答: strings命令用来提取和显示非文本文件的清晰内容。 -**问:16 What is the use tee filter ?** +**问:16 tee filter有什么作用 ?** -答: The tee filter is used to send an output to more than one destination. It can send one copy of the output to a file and another to the screen (or some other program) if used with pipe. +答: tee filter用来向多个目标发送输出内容。它可以向一个文件发送一份输出的拷贝并且如果使用管道的话可以在屏幕上(或一些其它程序)输出其它内容。 linuxtechi@localhost:~$ ll /etc | nl | tee /tmp/ll.out -In the above example, the output from ll is numbered and captured in /tmp/ll.out file. The output is also displayed on the screen. +在以上例子中,从ll输出的是在 /tmp/ll.out 文件中被捕获的,输出同样在屏幕上显示了出来。 -**问:17 What would the command export PS1 = ”$LOGNAME@`hostname`:\$PWD: do ?** +**问:17 export PS1 = ”$LOGNAME@`hostname`:\$PWD: 这条命令是在做什么?** -答: The export command provided will change the login prompt to display username, hostname, and the current working directory. +答: 这条export命令会更改登录提示符来显示用户名、本机名和当前工作目录。 -**问:18 What would the command ll | awk ‘{print $3,”owns”,$9}’ do ?** +**问:18 ll | awk ‘{print $3,”owns”,$9}’ 这条命令是在做什么?** -答: The ll command provided will display file names and their owners. +答: 这条ll命令会显示这些文件的文件名和它们的拥有者。 **问:19 What is the use of at command in linux ?** From 27e6ee1ab9b7f86e3e39447f3f606d04e73642c7 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Mon, 26 Jan 2015 20:32:48 +0800 Subject: [PATCH 080/725] =?UTF-8?q?20150126=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...illion Users Stolen from Dating Website.md | 50 +++++++++++++++++++ ...Integrate Linux Kernel 3.19 Branch Soon.md | 33 ++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md create mode 100644 sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md diff --git a/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md new file mode 100644 index 0000000000..449f159b00 --- /dev/null +++ b/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md @@ -0,0 +1,50 @@ +Data of 20 Million Users Stolen from Dating Website +---------- +*Info includes Gmail, Hotmail and Yahoo emails* + +![Details could belong to users of online dating website Topface](http://i1-news.softpedia-static.com/images/news2/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179-2.jpg) + +#A database containing details of more than 20 million users of an online dating website has been allegedly stolen by a hacker. + +It is unclear at the moment if the information has been dumped into the public domain, but someone using the online alias “Mastermind” claims to have it, according to a post on an undisclosed paste site. + +#List contains hundreds of domains from all over the world + +The individual claims that the details are 100% valid and Daniel Ingevaldson, Chief Technology Officer at Easy Solutions, said in a blog post on Sunday that the list included email addresses from Hotmail, Yahoo and Gmail. + +Easy Solutions is a US-based company that provides security products for detecting and preventing cyber fraud across different computer platforms. + +According to Ingevaldson, the list contains over 7 million credentials from Hotmail, 2.5 million from Yahoo, and 2.2 million from Gmail.com. + +It is unclear if “credentials” refers to usernames and passwords that can be used to access the email accounts or the account of the dating website. Also, it is unknown whether the database stored the passwords in a secure manner or if they were available in plain text. + +An email address is often used as the username for an online service, to which the user can log in with a unique password. However, password recycling is a common practice for many users and the same string could be used to sign in to multiple online accounts. + +“The list appears to be international in nature with hundreds of domains listed from all over the world. Hackers and fraudsters are likely to leverage stolen credentials to commit fraud not on the original hacked site, but to use them to exploit password re-use to automatically scan and compromise other sites including banking, travel and email providers,” [says Ingevaldson](1). + +#More information is expected to emerge + +According to our sources, the affected website is Topface, an online dating location that touts over 90 million users. The business is headquartered in Sankt Petersburg, Russia, and it advertises that more than 50% of its users are from outside Russia. + +We contacted Topface to confirm or deny whether they suffered a breach recently that could have resulted in exposing a database this big; we are yet to receive an answer from the company. + +The credentials could have been stolen without perpetrators needing to gain unauthorized access, as Easy Solutions draws attention to the fact that email phishing may also have been used to get the info straight from the clients of the website. + +Easy Solutions could not be contacted through the online form available on its website, but we tried alternative communication and are currently waiting for more details. + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml + +本文发布时间:26 Jan 2015, 10:20 GMT + +作者:[Ionut Ilascu][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/ionut-ilascu +[1]:http://newblog.easysol.net/dating-site-breached/ \ No newline at end of file diff --git a/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md b/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md new file mode 100644 index 0000000000..1fa678a6c1 --- /dev/null +++ b/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md @@ -0,0 +1,33 @@ +Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon +---- +*A new kernel branch is being tracked by Ubuntu* + +![Ubuntu 15.04 shortcuts](http://i1-news.softpedia-static.com/images/news2/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121-2.jpg) + +#The Linux kernel is one of the most important components in a distribution and Ubuntu users are interested to know what will be used in the stable edition for the 15.04 branch, which is scheduled to arrive in a couple of months. + +The Ubuntu and the Linux kernel development cycles are not in sync and it's hard to anticipate what version will eventually land in Ubuntu 15.04. For now, Ubuntu 15.04 (Vivid Vervet) is using Linux kernel 3.18, but the developers are already looking to implement the 3.19 branch. + +"Our Vivid kernel remains based on the v3.18.2 upstream stable kernel, but we'll be rebasing to v3.18.3 shortly. We'll also be re-basing our unstable branch to v3.19-rc5 and get that uploaded to our team PPA soon," [said](1) Canonical's Joseph Salisbury. + +Linux kernel 3.19 is still under development and it will take a few weeks to see a stable version, but it's enough time to implement it in Ubuntu and test it properly. It won't be possible to get the 3.20 branch, for example, even if it launches before the April 23. + +You can [download Ubuntu 15.04](2) right now from Softpedia and give it a spin. It's a daily build and it contains all the improvements made so far to the distribution. + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml + +本文发布时间:25 Jan 2015, 20:39 GMT + +作者:[Silviu Stahie][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie +[1]:https://lists.ubuntu.com/archives/ubuntu-devel/2015-January/038644.html +[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml \ No newline at end of file From 08913fe46b0c50b3b1c6f5acbd27ffa58f11e360 Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Mon, 26 Jan 2015 21:28:10 +0800 Subject: [PATCH 081/725] translated translated --- ...How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename translated/tech/{How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md => 20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md} (100%) diff --git a/translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md b/translated/tech/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md similarity index 100% rename from translated/tech/How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md rename to translated/tech/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md From ebaeee7b0ada477ecb337c4ea9ddcdd6f7124413 Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Mon, 26 Jan 2015 21:35:39 +0800 Subject: [PATCH 082/725] apply for tranlasting --- .../tech/20150123 How to make a file immutable on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150123 How to make a file immutable on Linux.md b/sources/tech/20150123 How to make a file immutable on Linux.md index 3eb0394bd1..7d46d1de68 100644 --- a/sources/tech/20150123 How to make a file immutable on Linux.md +++ b/sources/tech/20150123 How to make a file immutable on Linux.md @@ -1,3 +1,5 @@ +Translating by Medusar + How to make a file immutable on Linux ================================================================================ Suppose you want to write-protect some important files on Linux, so that they cannot be deleted or tampered with by accident or otherwise. In other cases, you may want to prevent certain configuration files from being overwritten automatically by software. While changing their ownership or permission bits on the files by using chown or chmod is one way to deal with this situation, this is not a perfect solution as it cannot prevent any action done with root privilege. That is when chattr comes in handy. @@ -69,4 +71,4 @@ via: http://xmodulo.com/make-file-immutable-linux.html 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://xmodulo.com/author/nanni \ No newline at end of file +[a]:http://xmodulo.com/author/nanni From 35df6c2eb4290be50d2e4e8a54f8bd5860ef3b9d Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Mon, 26 Jan 2015 21:56:18 +0800 Subject: [PATCH 083/725] apply for translating --- sources/tech/20150123 How to make a file immutable on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20150123 How to make a file immutable on Linux.md b/sources/tech/20150123 How to make a file immutable on Linux.md index 7d46d1de68..3fd0e4bd01 100644 --- a/sources/tech/20150123 How to make a file immutable on Linux.md +++ b/sources/tech/20150123 How to make a file immutable on Linux.md @@ -1,4 +1,4 @@ -Translating by Medusar +Translating by Medusar How to make a file immutable on Linux ================================================================================ From a40444a97d3551542a7513ef137cad7cad0a26f1 Mon Sep 17 00:00:00 2001 From: Medusar <939958749@qq.com> Date: Mon, 26 Jan 2015 22:25:03 +0800 Subject: [PATCH 084/725] apply for tranlasting --- sources/tech/20150123 How to make a file immutable on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20150123 How to make a file immutable on Linux.md b/sources/tech/20150123 How to make a file immutable on Linux.md index 3fd0e4bd01..7d46d1de68 100644 --- a/sources/tech/20150123 How to make a file immutable on Linux.md +++ b/sources/tech/20150123 How to make a file immutable on Linux.md @@ -1,4 +1,4 @@ -Translating by Medusar +Translating by Medusar How to make a file immutable on Linux ================================================================================ From 0bdc48e49b26136a687d5fc64b5ceaf499eae46f Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 26 Jan 2015 22:46:58 +0800 Subject: [PATCH 085/725] PUB:20141210 How to use Evernote from the command line on Linux.md @geekpi --- ...Evernote from the command line on Linux.md | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) rename {translated/tech => published}/20141210 How to use Evernote from the command line on Linux.md (61%) diff --git a/translated/tech/20141210 How to use Evernote from the command line on Linux.md b/published/20141210 How to use Evernote from the command line on Linux.md similarity index 61% rename from translated/tech/20141210 How to use Evernote from the command line on Linux.md rename to published/20141210 How to use Evernote from the command line on Linux.md index a243e67fc4..e02e9db712 100644 --- a/translated/tech/20141210 How to use Evernote from the command line on Linux.md +++ b/published/20141210 How to use Evernote from the command line on Linux.md @@ -1,10 +1,10 @@ 如何在Linux的命令行中使用Evernote ================================================================================ -这周让我们继续什么学习如个使用Linux命令行管理和组织信息。在命令行中管理[你的个人花费][1]后,我建议你在命令行中管理你的笔记,特别地是,当你笔记放在Evernote中时。为防止你从来没有听说过,[Evernote][2]专门有一个用户有好的在线服务用来在不同的设备间同步笔记。除了提供花哨的基于Web的API,Evernote还发布了在Windows、Mac、[Android][3]和iOS上的客户端。然而至今还没有官方的Linux客户端可用。老实说在众多的非官方Linux程序中,一个程序一出现就吸引了所有的命令行爱好者:[Geeknote][4] +这周让我们继续学习如何使用Linux命令行管理和组织信息。在命令行中管理[你的个人花费][1]后,我建议你在命令行中管理你的笔记,特别是当你用Evernote记录笔记时。要是你从来没有听说过它,[Evernote][2] 专门有一个用户友好的在线服务可以在不同的设备间同步笔记。除了提供花哨的基于Web的API,Evernote还发布了在Windows、Mac、[Android][3]和iOS上的客户端。然而至今还没有官方的Linux客户端可用。老实说在众多的非官方Linux客户端中,有一个程序一出现就吸引了所有的命令行爱好者,它就是[Geeknote][4]。 ### Geeknote 的安装 ### -Geeknote使用Python开发的。因此,在开始之前请确保你已经安装了Python(最好是2.7的版本)和git。 +Geeknote是使用Python开发的。因此,在开始之前请确保你已经安装了Python(最好是2.7的版本)和git。 #### 在 Debian、 Ubuntu 和 Linux Mint 中 #### @@ -26,38 +26,38 @@ Geeknote使用Python开发的。因此,在开始之前请确保你已经安装 ### Geeknote 的基本使用 ### -一旦你安装玩Geeknote后,你应该将Geeknote与你的Evernote账号关联: +一旦你安装完Geeknote后,你应该将Geeknote与你的Evernote账号关联: $ geeknote login -接着输入你的emial地址、密码、和你的二步验证码。如果你没有后者,忽略它并按下回车。 +接着输入你的email地址、密码和你的二步验证码。如果你没有后者的话,忽略它并按下回车。 ![](https://farm8.staticflickr.com/7525/15761947888_7bc71bf216_o.jpg) -很明显,你需要一个Evernote账号来完成这些,因此先去注册。 +显然你需要一个Evernote账号来完成这些,因此先去注册吧。 -一旦完成这一切之后,你就可以开始了,创建新的笔记并编辑它们。 +完成这些之后,你就可以开始创建新的笔记并编辑它们了。 -但是首先,你需要设置你最喜欢的文本编辑器: +不过首先,你还需要设置你最喜欢的文本编辑器: $ geeknote settings --editor vim -接着,常规创建一条新笔记的语法是: +然后,一般创建一条新笔记的语法是: $ geeknote create --title [title of the new note] (--content [content] --tags [comma-separated tags] --notebook [comma-separated notebooks]) -上面的命令中,只有‘title’是必须的,它会与一条新笔记的标题相关联。其他的标注可以为笔记添加额外的元数据:添加标签来与你的笔记关联、指定放在那个笔记本里。同样,如果你的标题或者内容还有空格,不要忘记将它们放在引号中。 +上面的命令中,只有‘title’是必须的,它会与一条新笔记的标题相关联。其他的标注可以为笔记添加额外的元数据:添加标签来与你的笔记关联、指定放在那个笔记本里。同样,如果你的标题或者内容中有空格,不要忘记将它们放在引号中。 比如: $ geeknote create --title "My note" --content "This is a test note" --tags "finance, business, important" --notebook "Family" -通常上,下一步就是编辑你的笔记。语法很相似: +然后,你可以编辑你的笔记。语法很相似: $ geeknote edit --note [title of the note to edit] (--title [new title] --tags [new tags] --notebook [new notebooks]) -注意可选的参数如标题、标签和笔记本,用来修改笔记的元数据。比如,你可以用下面的命令重命名笔记: +注意可选的参数如新的标题、标签和笔记本,用来修改笔记的元数据。你也可以用下面的命令重命名笔记: $ geeknote edit --note [old title] --title [new title] @@ -65,13 +65,13 @@ Geeknote使用Python开发的。因此,在开始之前请确保你已经安装 $ geeknote find --search [text-to-search] --tags [comma-separated tags] --notebook [comma-separated notebooks] --date [date-or-date-range] --content-search -默认上,上面的命令会通过标题搜索笔记。 用"--content-search"选项,就可以搜索它们的内容。 +默认地上面的命令会通过标题搜索笔记。 用"--content-search"选项,就可以按内容搜索。 比如: $ geeknote find --search "*restaurant" --notebooks "Family" --date 31.03.2014-31.08.2014 -显示制定标题的笔记: +显示指定标题的笔记: $ geeknote show [title] @@ -89,13 +89,13 @@ Geeknote使用Python开发的。因此,在开始之前请确保你已经安装 小心这是真正的删除。它会从云存储中删除这条笔记。 -最后有很多的选项来管理标签和笔记本。我想最有用的是显示笔记本列表。 +最后有很多的选项来管理标签和笔记本。我想最有用的就是显示笔记本列表。 $ geeknote notebook-list ![](https://farm8.staticflickr.com/7472/15762063420_43e3ee17da_o.jpg) -下面的非常相像。你可以猜到,可以用下面的命令列出所有的标签: +下面的命令非常相像。你可以猜到,可以用下面的命令列出所有的标签: $ geeknote tag-list @@ -107,27 +107,25 @@ Geeknote使用Python开发的。因此,在开始之前请确保你已经安装 $ geeknote tag-create --title [tag title] -一旦你了解了窍门,很明显语法是非常连贯且明确的。 +一旦你了解了窍门,很明显这些语法是非常自然明确的。 如果你想要了解更多,不要忘记查看[官方文档][6]。 ### 福利 ### -As a bonus, Geeknote comes with the utility gnsync, which allows for file synchronization between your Evernote account and your local computer. However, I find its syntax a bit dry: -福利的是,Geeknote自带的gnsync工具可以让你在Evernote和本地计算机之间同步。然而,我发现它的语法有点枯燥: +作为福利,Geeknote自带的gnsync工具可以让你在Evernote和本地计算机之间同步。不过,我发现它的语法有点枯燥: $ gnsync --path [where to sync] (--mask [what kind of file to sync] --format [in which format] --logpath [where to write the log] --notebook [which notebook to use]) -下面是这些的意义。 - +下面是这些参数的意义。 - **--path /home/adrien/Documents/notes/**: 与Evernote同步笔记的位置。 -- **--mask "*.txt"**: 只同步纯文本文件。默认上,gnsync会尝试同步所有文件。 +- **--mask "*.txt"**: 只同步纯文本文件。默认gnsync会尝试同步所有文件。 - **--format markdown**: 你希望它们是纯文本或者markdown格式(默认是纯文本)。 - **--logpath /home/adrien/gnsync.log**: 同步日志的位置。为防出错,gnsync会在那里写入日志信息。 -- **--notebook "Family"**: 同步哪个笔记本中的笔记。如果你那里留空,程序会创建一个以你同步文件夹命令的笔记本。 +- **--notebook "Family"**: 同步哪个笔记本中的笔记。如果留空,程序会创建一个以你同步文件夹命令的笔记本。 -总结来说,Geeknote是一款花哨的Evernote的命令行客户端。我个人不常使用Evernote,但它仍然很漂亮和有用。命令行一方面让它变得很极客且很容易与shell脚本结合。同样,还有Git上fork出来的Geeknote,在ArchLinux AUR上称为[geeknote-improved-git][7],貌似它有更多的特性和比其他分支更积极的开发。但在我看来,还很值得再看看。 +总的来说,Geeknote是一款漂亮的Evernote的命令行客户端。我个人不常使用Evernote,但它仍然很漂亮和有用。命令行一方面让它变得很极客且很容易与shell脚本结合。此外,在Git上还有Geeknote的一个分支项目,在ArchLinux AUR上称为[geeknote-improved-git][7],貌似它有更多的特性和比其他分支更积极的开发。我觉得值得去看看。 你认为Geeknote怎么样? 有什么你想用的么?或者你更喜欢使用传统的程序?在评论区中让我们知道。 @@ -137,7 +135,7 @@ via: http://xmodulo.com/evernote-command-line-linux.html 作者:[Adrien Brochard][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 6f887cd259fa4ba28b9ff91d2649d6d8ac0047fc Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 26 Jan 2015 22:58:11 +0800 Subject: [PATCH 086/725] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @disylee --- ... C or C++ program with Nemiver debugger.md | 111 ------------------ 1 file changed, 111 deletions(-) delete mode 100644 translated/20150104 How to debug a C or C++ program with Nemiver debugger.md diff --git a/translated/20150104 How to debug a C or C++ program with Nemiver debugger.md b/translated/20150104 How to debug a C or C++ program with Nemiver debugger.md deleted file mode 100644 index fb3f313038..0000000000 --- a/translated/20150104 How to debug a C or C++ program with Nemiver debugger.md +++ /dev/null @@ -1,111 +0,0 @@ -hi ! 让我来翻译 - -How to debug a C/C++ program with Nemiver debugger -================================================================================ -If you read [my post on GDB][1], you know how important and useful a debugger I think can be for a C/C++ program. However, if a command line debugger like GDB sounds more like a problem than a solution to you, you might be more interested in Nemiver. [Nemiver][2] is a GTK+-based standalone graphical debugger for C/C++ programs, using GDB as its back-end. Admirable for its speed and stability, Nemiver is a very reliable debugger filled with goodies. - -### Installation of Nemiver ### - -For Debian based distributions, it should be pretty straightforward: - - $ sudo apt-get install nemiver - -For Arch Linux: - - $ sudo pacman -S nemiver - -For Fedora: - - $ sudo yum install nemiver - -If you prefer compiling yourself, the latest sources are available from [GNOME website][3]. - -As a bonus, it integrates very well with the GNOME environment. - -### Basic Usage of Nemiver ### - -Start Nemiver with the command: - - $ nemiver - -You can also summon it with an executable with: - - $ nemiver [path to executable to debug] - -Note that Nemiver will be much more helpful if the executable is compiled in debug mode (the -g flag with GCC). - -A good thing is that Nemiver is really fast to load, so you should instantly see the main screen in the default layout. - -![](https://farm9.staticflickr.com/8679/15535277554_d320f6692c_c.jpg) - -By default, a breakpoint has been placed in the first line of the main function. This gives you the time to recognize the basic debugger functions: - -![](https://farm9.staticflickr.com/8669/16131832596_bc68ae18a8_o.jpg) - -- Next line (mapped to F6) -- Step inside a function (F7) -- Step out of a function (Shift+F7) - -But maybe my personal favorite is the option "Run to cursor" which makes the program run until a precise line under your cursor, and is by default mapped to F11. - -Next, the breakpoints are also easy to use. The quick way to lay a breakpoint at a line is using F8. But Nemiver also has a more complex menu under "Debug" which allows you to set up a breakpoint at a particular function, line number, location of binary file, or even at an event like an exception, a fork, or an exec. - -![](https://farm8.staticflickr.com/7579/16157622315_d680a63896_z.jpg) - -You can also watch a variable by tracking it. In "Debug" you can inspect an expression by giving its name and examining it. It is then possible to add it to the list of controlled variable for easy access. This is probably one of the most useful aspects as I have never been a huge fan of hovering over a variable to get its value. Note that hovering does work though. And to make it even better, Nemiver is capable of watching a struct, and giving you the values of all the member variables. - -![](https://farm8.staticflickr.com/7465/15970310470_7ed020c613.jpg) - -Talking about easy access to information, I also really appreciate the layout of the program. By default, the code is in the upper half and the tabs in the lower part. This grants you access to a terminal for output, a context tracker, a breakpoints list, register addresses, memory map, and variable control. But note that under "Edit" "Preferences" "Layout" you can select different layouts, including a dynamic one for you to modify. - -![](https://farm9.staticflickr.com/8606/15971551549_00e4cdd32e_c.jpg) - -![](https://farm8.staticflickr.com/7525/15535277594_026fef17c1_z.jpg) - -And naturally, once you set up all your breakpoints, watch-points, and layout, you can save your session under “File” for easy retrieval in case you close Nemiver. - -### Advanced Usage of Nemiver ### - -So far, we talked about the basic features of Nemiver, i.e., what you need to get started and debug simple programs immediately. If you have more advanced needs, and especially more complex programs, you might be more interested in some of these features mentioned here. - -#### Debugging a running process #### - -Nemiver allows you to attach to a running process for debugging. Under the "File" menu, you can filter the list of running processes, and connect to a process. - -![](https://farm9.staticflickr.com/8593/16155720571_00e4cdd32e_z.jpg) - -#### Debugging a program remotely over a TCP connection #### - -Nemiver supports remote-debugging, where you set up a lightweight debug server on a remote machine, and launch Nemiver from another machine to debug a remote target hosted by the debug server. Remote debugging can be useful if you cannot run full-fledged Nemiver or GDB on the remote machine for some reason. Under the "File" menu, specify the binary, shared library location, and the address and port. - -![](https://farm8.staticflickr.com/7469/16131832746_c47dee4ef1.jpg) - -#### Using your own GDB binary to debug #### - -In case you compiled Nemiver yourself, you can specify a new location for GDB under "Edit" "Preferences" "Debug". This option can be useful if you want to use a custom version of GDB in Nemiver for some reason. - -#### Follow a child or parent process #### - -Nemiver is capable of following a child or parent process in case your program forks. To enable this feature, go to "Preferences" under "Debugger" tab. - -![](https://farm8.staticflickr.com/7512/16131832716_5724ff434c_z.jpg) - -To conclude, Nemiver is probably my favorite program for debugging without an IDE. It even beats GDB in my opinion, and [command line][4] programs generally have a good grip on me. So if you have never used it, I really recommend it. I can only congratulate the team behind it for giving us such a reliable and stable program. - -What do you think of Nemiver? Would you consider it for standalone debugging? Or do you still stick to an IDE? Let us know in the comments. - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/debug-program-nemiver-debugger.html - -作者:[Adrien Brochard][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/adrien -[1]:http://xmodulo.com/gdb-command-line-debugger.html -[2]:https://wiki.gnome.org/Apps/Nemiver -[3]:https://download.gnome.org/sources/nemiver/0.9/ -[4]:http://xmodulo.com/recommend/linuxclibook From 5b57f85a743b663d1819318f89b548ee48fc138e Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 26 Jan 2015 23:15:52 +0800 Subject: [PATCH 087/725] PUB:20141204 How To Run Linux Programs From The Terminal In Background Mode @su-kaiyao --- ...ms From The Terminal In Background Mode.md | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) rename {translated/tech => published}/20141204 How To Run Linux Programs From The Terminal In Background Mode.md (57%) diff --git a/translated/tech/20141204 How To Run Linux Programs From The Terminal In Background Mode.md b/published/20141204 How To Run Linux Programs From The Terminal In Background Mode.md similarity index 57% rename from translated/tech/20141204 How To Run Linux Programs From The Terminal In Background Mode.md rename to published/20141204 How To Run Linux Programs From The Terminal In Background Mode.md index a045e9f7fd..b346272331 100644 --- a/translated/tech/20141204 How To Run Linux Programs From The Terminal In Background Mode.md +++ b/published/20141204 How To Run Linux Programs From The Terminal In Background Mode.md @@ -1,29 +1,29 @@ -如何从终端以后台模式运行Linux程序 +如何在终端下以后台模式运行Linux程序 === ![Linux Terminal Window.](http://0.tqn.com/y/linux/1/W/r/G/1/terminal.JPG) -Linux终端窗口。 +*Linux终端窗口* -这是一个简短但是非常有用的教程:它向你展示从终端运行Linux应用程序的同时,如何保证终端仍然在控制之中。 +这是一个简短但是非常有用的教程:它向你展示从终端运行Linux应用程序的同时,如何保证终端仍然可以操作。 -在Linux中有许多方式可以打开一个终端,这主要取决于你分类的选择和桌面环境。 +在Linux中有许多方式可以打开一个终端,这主要取决于你的发行版的选择和桌面环境。 -使用Ubuntu,你可以使用CTRL + ALT + T组合键打开一个终端。你也可以点击超级键(Windows键)打开一个终端窗口。在键盘上,[打开Ubuntu Dash][1],然后搜索"TERM"。点击"Term"图标将会打开一个终端窗口。 +使用Ubuntu的话,你可以使用CTRL + ALT + T组合键打开一个终端。你也可以点击超级键(Windows键)打开一个终端窗口。在键盘上,[打开Ubuntu Dash][1],然后搜索"TERM"。点击"Term"图标将会打开一个终端窗口。 -其他诸如XFCE, KDE, LXDE, Cinnamon和MATE的桌面环境,你将会在菜单中发现终端。还有一些分类会把终端图标放在入口处,或者在面板上放置终端启动器。 +其他诸如XFCE, KDE, LXDE, Cinnamon和MATE的桌面环境,你将会在菜单中发现“终端”这个应用。还有一些发行版会把终端图标放在菜单项,或者在面板上放置终端启动器。 -你可以在终端输入一个程序的名字来启动一个应用。举例,你可以通过输入"firefox"启动火狐浏览器。 +你可以在终端里面输入一个程序的名字来启动一个应用。举例,你可以通过输入"firefox"启动火狐浏览器。 -从终端运行程序的好处是一可以包含额外的选项。 +从终端运行程序的好处是可以使用额外的选项。 -举个例子,如果你输入下面的命令,一个新的火狐浏览器将会打开,而且默认的搜索引擎将会搜索引用之间的术语: +举个例子,如果你输入下面的命令,一个新的火狐浏览器将会打开,而且默认的搜索引擎将会搜索引号之间的词语: firefox -search "Linux.About.Com" -你会发现,如果你运行火狐浏览器,应用程序将被打开,并且控制将会回到终端,这将意味着你可以继续在终端工作。 +你会发现,如果你运行火狐浏览器,应用程序打开后,控制权将会回到终端(重新出现了命令提示符),这将意味着你可以继续在终端工作。 -通常情况下,如果你通过终端运行一个程序,程序将被打开,并且直到那个程序关闭结束,你将不会重新获得终端的控制权。这是因为你是在前台打开程序的。 +通常情况下,如果你通过终端运行一个程序,程序打开后,并且直到那个程序关闭结束,你都将不会获得终端的控制权。这是因为你是在前台打开程序的。 想要从终端运行一个程序,并且立即将终端的控制权返回给你,你需要以后台进程的方式打开程序。 @@ -31,11 +31,11 @@ Linux终端窗口。 libreoffice & -在终端中仅仅提供程序的名字,应用程序可能运行不了。如果程序不存在于一个设置了路径变量的文件夹中,你需要指定完成的路径名来运行程序。 +在终端中仅仅提供程序的名字,应用程序可能运行不了。如果程序不存在于一个设置在PATH 环境变量的文件夹中,你需要指定完整的路径名来运行程序。 /path/to/yourprogram & -如果你并不确定一个程序是否存在于Linux文件结构,使用find或者locate命令来查询应用程序。 +如果你并不确定一个程序是否存在于Linux文件系统中,使用find或者locate命令来查找该应用程序。 找一个文件的语法如下: @@ -45,7 +45,7 @@ Linux终端窗口。 find / -name firefox -输出会很快掠过,所以你可以以管道的方式控制输出的多少: +输出会很快滚动出很多,所以你可以以管道的方式控制输出的多少: find / -name firefox | more @@ -57,26 +57,25 @@ find命令将会返回因权限拒绝而发生错误的文件夹数量,这些 sudo find / -name firefox | more -如果你知道你想寻找的文件在你的当前文件夹结构中,你可以一个点代替先前的斜线,如下: +如果你知道你想寻找的文件在你的当前文件夹中,你可以一个点代替先前的斜线,如下: sudo find . -name firefox | more -你可能不需要sudo来提升权限。如果你在home文件夹结构中寻找文件,sudo就不需要。 +你可能不需要sudo来提升权限。如果你在home文件夹中寻找文件,sudo就不需要。 一些应用程序需要提升用户权限来运行,你可能得到一个缺少权限的错误,除非你使用一个具有足够权限的用户,或者使用sudo提升你的权限。 -下面是一个小花招。如果你运行一个程序,而且它需要提升权限来运行,输入下面命令: +下面是一个小花招。如果你运行一个程序,而且它需要提升权限来运行,输入下面命令来提升权限重新执行: sudo !! --- -via: http://linux.about.com/od/commands/fl/How-To-Run-Linux-Programs-From-T -he-Terminal-In-Background-Mode.htm +via: http://linux.about.com/od/commands/fl/How-To-Run-Linux-Programs-From-The-Terminal-In-Background-Mode.htm 作者:[Gary Newell][a] 译者:[su-kaiyao](https://github.com/su-kaiyao) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中> 国](http://linux.cn/) 荣誉推出 From ede062c16382f58bf115f10a0ca08d5b5f263792 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 26 Jan 2015 23:37:16 +0800 Subject: [PATCH 088/725] PUB:20141205 10 free Commands to Check Memory Usage in Linux @su-kaiyao --- ...Commands to Check Memory Usage in Linux.md | 62 +++++++------------ 1 file changed, 23 insertions(+), 39 deletions(-) rename {translated/tech => published}/20141205 10 free Commands to Check Memory Usage in Linux.md (75%) diff --git a/translated/tech/20141205 10 free Commands to Check Memory Usage in Linux.md b/published/20141205 10 free Commands to Check Memory Usage in Linux.md similarity index 75% rename from translated/tech/20141205 10 free Commands to Check Memory Usage in Linux.md rename to published/20141205 10 free Commands to Check Memory Usage in Linux.md index fe56c55f93..e95227288c 100644 --- a/translated/tech/20141205 10 free Commands to Check Memory Usage in Linux.md +++ b/published/20141205 10 free Commands to Check Memory Usage in Linux.md @@ -1,24 +1,22 @@ -10个检测Linux内存使用情况的‘free’命令 +检测 Linux 内存使用情况的 free 命令的10个例子 === -**Linux**是最有名的开源操作系统之一,它拥有着极其巨大的指令集。确定**物理内存**和**交换内存**所有可用空间的最重要,也是唯一的方法是使用“**free**”命令。 +**Linux**是最有名的开源操作系统之一,它拥有着极其巨大的命令集。确定**物理内存**和**交换内存**所有可用空间的最重要、也是唯一的方法是使用“**free**”命令。 -Linux “**free**”命令通过给出**Linux/Unix**操作系统中内核已使用的**buffers**情况,来提供**物理内存**和**交换内存**的总使用量和可用量。 +Linux “**free**”命令可以给出类**Linux/Unix**操作系统中**物理内存**和**交换内存**的总使用量、可用量及内核使用的**缓冲区**情况。 ![10 Linux Free Command Examples](http://www.tecmint.com/wp-content/uploads/2012/09/Linux-Free-commands.png) -这篇文章提供一些带有参数选项的“**free**”命令,这些命令对于你更好地利用你的内存会有帮助。 +这篇文章提供一些各种参数选项的“**free**”命令,这些命令对于你更好地利用你的内存会有帮助。 ### 1. 显示你的系统内存 ### -free命令用于检测**物理内存**和**交换内存**已使用量和可用量(单位为**KB**)。下面演示命令的使用情况。 +free命令用于检测**物理内存**和**交换内存**已使用量和可用量(默认单位为**KB**)。下面演示命令的使用情况。 # free - total used free shared buffers cach -ed - Mem: 1021628 912548 109080 0 120368 6555 -48 + total used free shared buffers cached + Mem: 1021628 912548 109080 0 120368 655548 -/+ buffers/cache: 136632 884996 Swap: 4194296 0 4194296 @@ -28,21 +26,18 @@ ed # free -b - total used free shared buffers cach -ed - Mem: 1046147072 934420480 111726592 0 123256832 6712811 -52 + total used free shared buffers cached + Mem: 1046147072 934420480 111726592 0 123256832 671281152 -/+ buffers/cache: 139882496 906264576 Swap: 4294959104 0 4294959104 ### 3. 以千字节为单位显示内存 ### -加上**-k**参数的free命令,以(KB)**千字节**为单位显示内存大小。 +加上**-k**参数的free命令(默认单位,所以可以不用使用它),以(KB)**千字节**为单位显示内存大小。 # free -k - total used free shared buffers cach -ed + total used free shared buffers cached Mem: 1021628 912520 109108 0 120368 655548 -/+ buffers/cache: 136604 885024 Swap: 4194296 0 4194296 @@ -53,10 +48,8 @@ ed # free -m - total used free shared buffers cach -ed - Mem: 997 891 106 0 117 6 -40 + total used free shared buffers cached + Mem: 997 891 106 0 117 640 -/+ buffers/cache: 133 864 Swap: 4095 0 4095 @@ -66,8 +59,7 @@ ed # free -g total used free shared buffers cached - Mem: 0 0 0 0 0 - 0 + Mem: 0 0 0 0 0 0 -/+ buffers/cache: 0 0 Swap: 3 0 3 @@ -77,10 +69,8 @@ ed # free -t - total used free shared buffers cache -d - Mem: 1021628 912520 109108 0 120368 6555 -48 + total used free shared buffers cached + Mem: 1021628 912520 109108 0 120368 655548 -/+ buffers/cache: 136604 885024 Swap: 4194296 0 4194296 Total: 5215924 912520 4303404 @@ -91,10 +81,8 @@ d # free -o - total used free shared buffers cache -d - Mem: 1021628 912520 109108 0 120368 6555 -48 + total used free shared buffers cached + Mem: 1021628 912520 109108 0 120368 655548 Swap: 4194296 0 4194296 ### 8. 定期时间间隔更新内存状态 ### @@ -103,10 +91,8 @@ d # free -s 5 - total used free shared buffers cach -ed - Mem: 1021628 912368 109260 0 120368 6555 -48 + total used free shared buffers cached + Mem: 1021628 912368 109260 0 120368 655548 -/+ buffers/cache: 136452 885176 Swap: 4194296 0 4194296 @@ -116,10 +102,8 @@ ed # free -l - total used free shared buffers cach -ed - Mem: 1021628 912368 109260 0 120368 6555 -48 + total used free shared buffers cached + Mem: 1021628 912368 109260 0 120368 655548 Low: 890036 789064 100972 High: 131592 123304 8288 -/+ buffers/cache: 136452 885176 @@ -139,7 +123,7 @@ via: http://www.tecmint.com/check-memory-usage-in-linux/ 作者:[Ravi Saive][a] 译者:[su-kaiyao](https://github.com/su-kaiyao) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中> 国](http://linux.cn/) 荣誉推出 From 42cca97ee1b0475dfe096a54cc7a2fcba88895b5 Mon Sep 17 00:00:00 2001 From: runningwater Date: Mon, 26 Jan 2015 23:52:17 +0800 Subject: [PATCH 089/725] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...gle ISO to 20 USB Drives Simultaneously.md | 60 ------------------- ...gle ISO to 20 USB Drives Simultaneously.md | 59 ++++++++++++++++++ 2 files changed, 59 insertions(+), 60 deletions(-) delete mode 100644 sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md create mode 100644 translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md diff --git a/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md b/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md deleted file mode 100644 index 130311ef12..0000000000 --- a/sources/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md +++ /dev/null @@ -1,60 +0,0 @@ -(translating by runningwater ) -This App Can Write a Single ISO to 20 USB Drives Simultaneously -================================================================================ -**If I were to ask you to burn a single Linux ISO to 17 USB thumb drives how would you go about doing it?** - -Code savvy folks would write a little bash script to automate the process, and a large number would use a GUI tool like the USB Startup Disk Creator to burn the ISO to each drive in turn, one by one. But the rest of us would fast conclude that neither method is ideal. - -### Problem > Solution ### - -![GNOME MultiWriter in action](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/gnome-multi-writer.jpg) - -GNOME MultiWriter in action - -Richard Hughes, a GNOME developer, faced a similar dilemma. He wanted to create a number of USB drives pre-loaded with an OS, but wanted a tool simple enough for someone like his dad to use. - -His response was to create a **brand new app** that combines both approaches into one easy to use tool. - -It’s called “[GNOME MultiWriter][1]” and lets you write a single ISO or IMG to multiple USB drives at the same time. - -It nixes the need to customize or create a command line script and relinquishes the need to waste an afternoon performing an identical set of actions on repeat. - -All you need is this app, an ISO, some thumb-drives and lots of empty USB ports. - -### Use Cases and Installing ### - -![The app can be installed on Ubuntu](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/mutli-writer-on-ubuntu.jpg) - -The app can be installed on Ubuntu - -The app has a pretty defined usage scenario, that being situations where USB sticks pre-loaded with an OS or live image are being distributed. - -That being said, it should work just as well for anyone wanting to create a solitary bootable USB stick, too — and since I’ve never once successfully created a bootable image from Ubuntu’s built-in disk creator utility, working alternatives are welcome news to me! - -Hughes, the developer, says it **supports up to 20 USB drives**, each being between 1GB and 32GB in size. - -The drawback (for now) is that GNOME MultiWriter is not a finished, stable product. It works, but at this early blush there are no pre-built binaries to install or a PPA to add to your overstocked software sources. - -If you know your way around the usual configure/make process you can get it up and running in no time. On Ubuntu 14.10 you may also need to install the following packages first: - - sudo apt-get install gnome-common yelp-tools libcanberra-gtk3-dev libudisks2-dev gobject-introspection - -If you get it up and running, give it a whirl and let us know what you think! - -Bugs and pull requests can be longed on the GitHub page for the project, which is where you’ll also found tarball downloads for manual installation. - -- [GNOME MultiWriter on Github][2] - --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2015/01/gnome-multiwriter-iso-usb-utility - -作者:[Joey-Elijah Sneddon][a] -译者:[runningwater](https://github.com/runningwater) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:https://github.com/hughsie/gnome-multi-writer/ -[2]:https://github.com/hughsie/gnome-multi-writer/ diff --git a/translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md b/translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md new file mode 100644 index 0000000000..098350741f --- /dev/null +++ b/translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md @@ -0,0 +1,59 @@ +支持同时把单个 ISO 文件写入 20 个 USB 驱动盘的应用程序 +================================================================================ +**我的问题是如何把一个Linux ISO 文件烧录到 17 个 USB 拇指驱动盘?** + +精通代码的会写一个 bash 脚本来自动化处理,而大部分的人会使用像 USB 启动盘创建器这样的图形用户界面工具来把 ISO 文件一个一个的烧录到驱动盘中。但剩下的还有一些人会很快得出结论,两种方法都不太理想。 + +### 问题 > 解决 ### + +![GNOME MultiWriter in action](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/gnome-multi-writer.jpg) + +GNOME MultiWriter 在运行当中 + +Richard Hughes,一个 GNOME 开发者,也面临着类似的困境。他要创建一批预装操作系统的 USB 驱动盘,需要一个足够简单的工具,使得像他父亲这样的用户也能使用。 + +他的反应是开发**品牌性的新应用程序**,使上面的两种方法合二为一,创造出易用的一款工具。 + +它的名字就叫 “[GNOME MultiWriter][1]”。同时可以把单个的 ISO 或 IMG 文件写入多个 USB 驱动盘。 + +它不支持个性化自定义或命令行执行的功能,使用它就可以省掉浪费一下午的时间来对相同的操作的重复动作。 + +您需要的就是这一款应用程序、一个 ISO 镜像文件、一些拇指驱动盘以用许多空 USB 接口。 + +### 用例和安装 ### + +![The app can be installed on Ubuntu](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/mutli-writer-on-ubuntu.jpg) + +该应用程序可以在 Ubuntu 上安装 + +这款应用程序的定义使用场景很不错,正适合使用于预装正要发布的操作系统或 live 映像的 USB 棒上。 + +那就是说,任何人想要创建一个单独可启动的 USB 棒的话,也是一样的适用 - 因我用 Ubuntu 的内置磁盘创建工具来创建可引导的映像从来没有一次成功过的,所以这方案对我来说是个好消息! + +它的开发者 Hughes 说它**最高能支持20个 USB驱动盘**,每个盘的大小在 1GB 到 32GB之间。 + +GNOME MultiWriter 不好的地方(到现在为止)就是它还没有一个完结、稳定的成品。它是能工作,但在早期的时候,还没有可安装的二进制版本或可添加到你庞大软件源的 PPA。 + +如果您知道通常的 configure/make 的操作流程的话,可以获取其源码并随时都可以编译运行。在 Ubuntu14.10 系统上,你可能还需要首先安装以下软件包: + + sudo apt-get install gnome-common yelp-tools libcanberra-gtk3-dev libudisks2-dev gobject-introspection + +如果您得到并运行起来,已经玩转的话,给我们分享下您的感受! + +此项目托管在 GitHub 上,盼望对其提出问题缺陷和发起 pull 请求,在上面也可以找到压缩包下载,进行手动安装。 + +- [Github 上的 GNOME MultiWriter][2] + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/01/gnome-multiwriter-iso-usb-utility + +作者:[Joey-Elijah Sneddon][a] +译者:[runningwater](https://github.com/runningwater) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:https://github.com/hughsie/gnome-multi-writer/ +[2]:https://github.com/hughsie/gnome-multi-writer/ From 60eb4d92980528450bcaec26cd6e873e0cb52ef7 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 27 Jan 2015 08:30:00 +0800 Subject: [PATCH 090/725] Update 20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译这篇文章。 --- .../20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md b/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md index d87948bc59..2c4ee5b2d6 100644 --- a/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md +++ b/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md @@ -1,3 +1,5 @@ +FSSLC Translating ! + Cleaning up Ubuntu 14.10,14.04,13.10 system ================================================================================ We have already discussed [Cleaning up a Ubuntu GNU/Linux system][1] and this tutorial is updated with new ubuntu versions and more tools added. @@ -160,4 +162,4 @@ via: http://www.ubuntugeek.com/cleaning-up-a-ubuntu-gnulinux-system-updated-with [a]:http://www.ubuntugeek.com/author/ubuntufix [1]:http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html -[2]:http://www.ubuntugeek.com/www.ubuntugeek.com/install-ubuntu-tweak-on-ubuntu-14-10.html \ No newline at end of file +[2]:http://www.ubuntugeek.com/www.ubuntugeek.com/install-ubuntu-tweak-on-ubuntu-14-10.html From 7b9ed3b38f79b4e94b3acfe35062cc0b908dac94 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 27 Jan 2015 10:15:20 +0800 Subject: [PATCH 091/725] PUB:20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server @GOLinux --- ...et engine and webserver) on Ubuntu 14.10 Server.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) rename {translated/tech => published}/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md (93%) diff --git a/translated/tech/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md b/published/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md similarity index 93% rename from translated/tech/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md rename to published/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md index f9d13170de..200f28f0be 100644 --- a/translated/tech/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md +++ b/published/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md @@ -11,9 +11,9 @@ Jetty被广泛用于多种项目和产品,都可以在开发环境和生产环 - 灵活和可扩展 - 小足迹 - 可嵌入 -- 异步 +- 异步支持 - 企业弹性扩展 -- Apache和Eclipse双重许可 +- Apache和Eclipse双重许可证 ### ubuntu 14.10 server上安装Jetty 9 ### @@ -71,10 +71,9 @@ Java将会安装到/usr/lib/jvm/java-8-openjdk-i386,同时在该目录下会 #### ** ERROR: JETTY_HOME not set, you need to set it or install in a standard location #### -你需要确保在/etc/default/jetty文件中设置了正确的Jetty家目录路径, -你可以使用以下URL来测试jetty +你需要确保在/etc/default/jetty文件中设置了正确的Jetty家目录路径,你可以使用以下URL来测试jetty。 -Jetty现在应该运行在8085端口,打开浏览器并访问http://serverip:8085,你应该可以看到Jetty屏幕。 +Jetty现在应该运行在8085端口,打开浏览器并访问http://服务器IP:8085,你应该可以看到Jetty屏幕。 #### Jetty服务检查 #### @@ -96,7 +95,7 @@ via: http://www.ubuntugeek.com/install-jetty-9-java-servlet-engine-and-webserver 作者:[ruchi][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2037d825cc4d12cdf10859634c043f416aea96e1 Mon Sep 17 00:00:00 2001 From: shipsw Date: Tue, 27 Jan 2015 13:29:10 +0800 Subject: [PATCH 092/725] Auditd - Tool for Security Auditing on Linux Server Auditd - Tool for Security Auditing on Linux Server --- ...104 Auditd--Tool for Security Auditing on Linux Server.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md b/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md index 9375385927..e5b148a4df 100644 --- a/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md +++ b/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md @@ -1,3 +1,6 @@ +Translating by shipsw + + Auditd - Tool for Security Auditing on Linux Server ================================================================================ First of all , we wish all our readers **Happy & Prosperous New YEAR 2015** from our Linoxide team. So lets start this new year explaining about Auditd tool. @@ -200,4 +203,4 @@ via: http://linoxide.com/how-tos/auditd-tool-security-auditing/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/pungki/ -[1]:http://linoxide.com/tools/wajig-package-management-debian/ \ No newline at end of file +[1]:http://linoxide.com/tools/wajig-package-management-debian/ From 71bd0f676a25dfe7d07e7080276a8633891c0f68 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 27 Jan 2015 15:37:39 +0800 Subject: [PATCH 093/725] =?UTF-8?q?20150127-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...How to limit network bandwidth on Linux.md | 90 +++++++++++++++++++ ...27 Install Jetty Web Server On CentOS 7.md | 78 ++++++++++++++++ ...ID--A Graphical Wi-Fi Scanner for Linux.md | 61 +++++++++++++ 3 files changed, 229 insertions(+) create mode 100644 sources/tech/20150127 How to limit network bandwidth on Linux.md create mode 100644 sources/tech/20150127 Install Jetty Web Server On CentOS 7.md create mode 100644 sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md diff --git a/sources/tech/20150127 How to limit network bandwidth on Linux.md b/sources/tech/20150127 How to limit network bandwidth on Linux.md new file mode 100644 index 0000000000..1deaa38b49 --- /dev/null +++ b/sources/tech/20150127 How to limit network bandwidth on Linux.md @@ -0,0 +1,90 @@ +How to limit network bandwidth on Linux +================================================================================ +If you often run multiple networking applications on your Linux desktop, or share bandwidth among multiple computers at home, you will want to have a better control over bandwidth usage. Otherwise, when you are downloading a big file with a downloader, your interactive SSH session may become sluggish to the point where it's unusable. Or when you sync a big folder over Dropbox, your roommate may complain that video streaming at her computer gets choppy. + +In this tutorial, I am going to describe two different ways to rate limit network traffic on Linux. + +### Rate Limit an Application on Linux ### + +One way to rate limit network traffic is via a command-line tool called [trickle][1]. The trickle command allows you to shape the traffic of any particular program by "pre-loading" a rate-limited socket library at run-time. A nice thing about trickle is that it runs purely in user-space, meaning you don't need root privilege to restrict the bandwidth usage of a program. To be compatible with trickle, the program must use socket interface with no statically linked library. trickle can be handy when you want to rate limit a program which does not have a built-in bandwidth control functionality. + +To install trickle on Ubuntu, Debian and their derivatives: + + $ sudo apt-get install trickle + +To install trickle on Fedora or CentOS/RHEL (with [EPEL repository][2]): + + $ sudo yum install trickle + +Basic usage of trickle is as follows. Simply put, you prepend trickle (with rate) in front of the command you are trying to run. + + $ trickle -d -u + +This will limit the download and upload rate of to specified values (in KBytes/s). + +For example, set the maximum upload bandwidth of your scp session to 100 KB/s: + + $ trickle -u 100 scp backup.tgz alice@remote_host.com: + +If you want, you can set the maximum download speed (e.g., 300 KB/s) of your Firefox browser by creating a [custom launcher][3] with the following command. + + trickle -d 300 firefox %u + +Finally, trickle can run in a daemon mode, where it can restrict the "aggregate" bandwidth usage of all running programs launched via trickle. To launch trickle as a daemon (i.e., trickled): + + $ sudo trickled -d 1000 + +Once the trickled daemon is running in the background, you can launch other programs via trickle. If you launch one program with trickle, its maximum download rate is 1000 KB/s. If you launch another program with trickle, each of them will be rate limited to 500 KB/s, etc. + +### Rate Limit a Network Interface on Linux ### + +Another way to control your bandwidth resource is to enforce bandwidth limit on a per-interface basis. This is useful when you are sharing your upstream Internet connection with someone else. Like anything else, Linux has a tool for you. [wondershaper][4] exactly does that: rate-limit a network interface. + +wondershaper is in fact a shell script which uses [tc][5] to define traffic shaping and QoS for a specific network interface. Outgoing traffic is shaped by being placed in queues with different priorities, while incoming traffic is rate-limited by packet dropping. + +In fact, the stated goal of wondershaper is much more than just adding bandwidth cap to an interface. wondershaper tries to maintain low latency for interactive sessions such as SSH while bulk download or upload is going on. Also, it makes sure that bulk upload (e.g., Dropbox sync) does not suffocate download, and vice versa. + +To install wondershaper on Ubuntu, Debian and their derivatives: + + $ sudo apt-get install wondershaper + +To install wondershaper on Fedora or CentOS/RHEL (with [EPEL repository][6]): + + $ sudo yum install wondershaper + +Basic usage of wondershaper is as follows. + + $ sudo wondershaper + +For example, to set the maximum download/upload bandwidth for eth0 to 1000Kbit/s and 500Kbit/s, respectively: + + $ sudo wondershaper eth0 1000 500 + +You can remove the rate limit by running: + + $ sudo wondershaper clear eth0 + +If you are interested in how wondershaper works, you can read its shell script (/sbin/wondershaper). + +### Conclusion ### + +In this tutorial, I introduced two different ways to control your bandwidth usages on Linux desktop, on per-application or per-interface basis. Both tools are extremely user-friendly, offering you a quick and easy way to shape otherwise unconstrained traffic. For those of you who want to know more about rate control on Linux, refer to [the Linux bible][7]. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/limit-network-bandwidth-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://monkey.org/~marius/trickle +[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[3]:http://xmodulo.com/create-desktop-shortcut-launcher-linux.html +[4]:http://lartc.org/wondershaper/ +[5]:http://lartc.org/manpages/tc.txt +[6]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[7]:http://www.lartc.org/lartc.html \ No newline at end of file diff --git a/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md b/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md new file mode 100644 index 0000000000..0cfb868498 --- /dev/null +++ b/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md @@ -0,0 +1,78 @@ +Install Jetty Web Server On CentOS 7 +================================================================================ +[Jetty][1] is a pure Java-based HTTP **(Web) server** and Java Servlet container. Jetty is now often used for machine to machine communications, usually within larger software frameworks. But the other Web Servers are usually associated with serving documents to humans. Jetty is developed as a free and open source project as part of the Eclipse Foundation. The web server is used in products such as Apache ActiveMQ, Alfresco, Apache Geronimo, Apache Maven, Apache Spark, Google App Engine, Eclipse, FUSE, Twitter’s Streaming API and Zimbra. + +This article explains ‘How to install jetty web server in your CentOS server’. + +**First of all we have to install java JDK, By the following command:** + + yum -y install java-1.7.0-openjdk wget + +**After the JDK installation, We will download the latest version of Jetty:** + + wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.5.v20141112.tar.gz + +**Extract and move the the downloaded package to /opt:** + + tar zxvf jetty-distribution-9.2.5.v20141112.tar.gz -C /opt/ + +**Rename the file name to jetty:** + + mv /opt/jetty-distribution-9.2.5.v20141112/ /opt/jetty + +**Create a user called jetty:** + + useradd -m jetty + +**Change the ownership of jetty:** + + chown -R jetty:jetty /opt/jetty/ + +**Make a Symlink jetty.sh to /etc/init.d directory to create a start up script file:** + + ln -s /opt/jetty/bin/jetty.sh /etc/init.d/jetty + +**Add script:** + + chkconfig --add jetty + +**Make the jetty web server auto starts on system boot:** + + chkconfig --level 345 jetty on + +**Open /etc/default/jetty in your favorite editor and replace port and listening address desired value:** + + vi /etc/default/jetty + +---------- + + JETTY_HOME=/opt/jetty + JETTY_USER=jetty + JETTY_PORT=8080 + JETTY_HOST=50.116.24.78 + JETTY_LOGS=/opt/jetty/logs/ + +**We finished the installation, Now you have to start the jetty service.** + + service jetty start + +All done! + +Now you can access jetty web sever in **http://:8080** + +That’s it! + +Cheers!! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/install-jetty-web-server-centos-7/ + +作者:[Jijo][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/jijo/ +[1]:http://eclipse.org/jetty/ \ No newline at end of file diff --git a/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md b/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md new file mode 100644 index 0000000000..2a004ed174 --- /dev/null +++ b/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md @@ -0,0 +1,61 @@ +LinSSID – A Graphical Wi-Fi Scanner for Linux +================================================================================ +### Introduction ### + +As you may know, **LinSSID** is a simple graphical software that can be used to find the wireless networks available.It is completely open source, written in C++ using Linux wireless tools, Qt5, and Qwt 6.1., and is similar to **Inssider** (MS Windows) in terms of look and functionality. + +### Installation ### + +You can install it either using source, or using a PPA if you use DEB based systems such as Ubuntu, and LinuxMint etc. + +You can download and install LinSSID using source packages from [this link][1]. + +Here, we will install and test this software on Ubuntu 14.04 LTS using PPA. + +Add the LinSSID PPA, and install it by typing. + + sudo add-apt-repository ppa:wseverin/ppa + sudo apt-get update + sudo apt-get install linssid + +### Usage ### + +Once you installed, launch it either from menu or unity. + +You”ll be asked to enter the administrative user password of your system. + +![Password required for iwlist scan_001](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Password-required-for-iwlist-scan_001.png) + +This is how LinSSID interface looks. + +![LinSSID_002](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/LinSSID_002.png) + +Now, select the network interface you used to connect to the Wireless networks, for example wlan0 in my case. Click the Play button to search the list of available wi-fi networks. + +After a new seconds, LinSSID will display the wi-fi networks. + +![LinSSID_003](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/LinSSID_003.png) + +As you see in the above screenshot, LinSSID displays the details of SSID names, MAC Id, Channel, Privacy, Cipher, Signal, and Protocol etc. Ofcourse, you can make LinSSID to display more options such as Security, bandwidth details etc. To do that, go to **View** menu, and select the desired option. Also, it displays the graphs of signal strength by channel and over time. Additionally, It works both on 2.4Ghz, and 5Ghz channels. + +That’s it. Hope this tool will useful for you. + +Cheers!! + +Reference Links: + +- [LinSSID Homepage][2] + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/linssid-graphical-wi-fi-scanner-linux/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:http://sourceforge.net/projects/linssid/files/ +[2]:http://sourceforge.net/projects/linssid/ \ No newline at end of file From 0da40258cd79b4928f2016f4eb08c274e8944627 Mon Sep 17 00:00:00 2001 From: tinyeyeser Date: Tue, 27 Jan 2015 16:20:59 +0800 Subject: [PATCH 094/725] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E4=B8=AD=20by?= =?UTF-8?q?=E5=B0=8F=E7=9C=BC=E5=84=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...126 Data of 20 Million Users Stolen from Dating Website.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md index 449f159b00..2a1dea8478 100644 --- a/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md +++ b/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md @@ -1,3 +1,5 @@ +翻译中 by小眼儿 + Data of 20 Million Users Stolen from Dating Website ---------- *Info includes Gmail, Hotmail and Yahoo emails* @@ -47,4 +49,4 @@ via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-W 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://news.softpedia.com/editors/browse/ionut-ilascu -[1]:http://newblog.easysol.net/dating-site-breached/ \ No newline at end of file +[1]:http://newblog.easysol.net/dating-site-breached/ From 4afd140f709a9e6a4430b5fdb00aa71351704b64 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 27 Jan 2015 16:28:04 +0800 Subject: [PATCH 095/725] =?UTF-8?q?20150127-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../talk/20150127 Windows 10 versus Linux.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sources/talk/20150127 Windows 10 versus Linux.md diff --git a/sources/talk/20150127 Windows 10 versus Linux.md b/sources/talk/20150127 Windows 10 versus Linux.md new file mode 100644 index 0000000000..e2cdfc14c1 --- /dev/null +++ b/sources/talk/20150127 Windows 10 versus Linux.md @@ -0,0 +1,31 @@ +Windows 10 versus Linux +================================================================================ +![](https://farm4.staticflickr.com/3852/14863156322_e4edbae70e_t.jpg) + +Windows 10 seemed to dominate the headlines today, even in many Linux circles. Leading the pack is Brian Fagioli at betanews.com saying Windows 10 is ringing the death knell for Linux desktops. Microsoft announced today that Windows 10 will be free for loyal Windows users and Steven J. Vaughan-Nichols said it's the newest Open Source company. Then Matt Hartley compares Windows 10 to Ubuntu and Jesse Smith reviews Windows 10 from a Linux user's perspective. + +**Windows 10** was the talk around water coolers today with Microsoft's [announcement][1] that it would be free for Windows 7 and up users. Here in Linuxland, that didn't go unnoticed. Brian Fagioli at betanews.com, a self-proclaimed Linux fan, said today, "Windows 10 closes the door entirely. The year of the Linux desktop will never happen. Rest in peace." [Fagioli explained][2] that Microsoft listened to user complaints and not only addressed them but improved way beyond that. He said Linux missed the boat by failing to capitalize on the Windows 8 unpopularity and ultimate failure. Then he concluded that we on the fringe must accept our "shattered dreams" thanks to Windows 10. + +**H**owever, Jesse Smith, of Distrowatch.com fame, said Microsoft isn't making it easy to find the download, but it is possible and he did it. The installer was simple enough except for the partitioner, which was quite limited and almost scary. After finally getting into Windows 10, Smith said the layout was "sparce" without a lot of the distractions folks hated about 7. The menu is back and the start screen is gone. A new package manager looks a lot like Ubuntu's and Android's according to Smith, but requires an online Microsoft account to use. [Smith concludes][3] in part, "Windows 10 feels like a beta for an early version of Android, a consumer operating system that is designed to be on-line all the time. It does not feel like an operating system I would use to get work done." + +**S**mith's [full article][4] compares Windows 10 to Linux quite a bit, but Matt Hartley today posted an actual Windows 10 vs Linux report. [He said][5] both installers were straightforward and easy Windows still doesn't dual boot easily and Windows provides encryption by default but Ubuntu offers it as an option. At the desktop Hartley said Windows 10 "is struggling to let go of its Windows 8 roots." He thought the Windows Store looks more polished than Ubuntu's but didn't really like the "tile everything" approach to newly installed apps. In conclusion, Hartley said, "The first issue is that it's going to be a free upgrade for a lot of Windows users. This means the barrier to entry and upgrade is largely removed. Second, it seems this time Microsoft has really buckled down on listening to what their users want." + +**S**teven J. Vaughan-Nichols today said that Microsoft is the newest Open Source company; not because it's going to be releasing Windows 10 as a free upgrade but because Microsoft is changing itself from a software company to a software as a service company. And, according to Vaughan-Nichols, Microsoft needs Open Source to do it. They've been working on it for years beginning with Novell/SUSE. Not only that, they've been releasing software as Open Source as well (whatever the motives). [Vaughan-Nichols concluded][6], "Most people won't see it, but Microsoft -- yes Microsoft -- has become an open-source company." + +-------------------------------------------------------------------------------- + +via: http://ostatic.com/blog/windows-10-versus-linux + +作者:[Susan Linton][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ostatic.com/member/susan-linton +[1]:https://news.google.com/news/section?q=microsoft+windows+10+free&ie=UTF-8&oe=UTF-8 +[2]:http://betanews.com/2015/01/25/windows-10-is-the-final-nail-in-the-coffin-for-the-linux-desktop/ +[3]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ +[4]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ +[5]:http://www.datamation.com/open-source/windows-vs-linux-the-2015-version-1.html +[6]:http://www.zdnet.com/article/microsoft-the-open-source-company/ \ No newline at end of file From 00c9b5043f4935e6f9516c50fbc0325c15acc711 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 27 Jan 2015 16:48:43 +0800 Subject: [PATCH 096/725] =?UTF-8?q?20150127-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Tricks to Secure and Customize Websites.md | 422 ++++++++++++++++++ 1 file changed, 422 insertions(+) create mode 100644 sources/tech/20150127 25 Useful Apache '.htaccess' Tricks to Secure and Customize Websites.md diff --git a/sources/tech/20150127 25 Useful Apache '.htaccess' Tricks to Secure and Customize Websites.md b/sources/tech/20150127 25 Useful Apache '.htaccess' Tricks to Secure and Customize Websites.md new file mode 100644 index 0000000000..e9e8ecb4eb --- /dev/null +++ b/sources/tech/20150127 25 Useful Apache '.htaccess' Tricks to Secure and Customize Websites.md @@ -0,0 +1,422 @@ +25 Useful Apache ‘.htaccess’ Tricks to Secure and Customize Websites +================================================================================ +Websites are important parts of our lives. They serve the means to expand businesses, share knowledge and lots more. Earlier restricted to providing only static contents, with introduction of dynamic client and server side scripting languages and continued advancement of existing static language like html to html5, adding every bit of dynamicity is possible to the websites and what left is expected to follow soon in near future. + +With websites, comes the need of a unit that can display these websites to a huge set of audience all over the globe. This need is fulfilled by the servers that provide means to host a website. This includes a list of servers like: Apache HTTP Server, Joomla, and WordPress that allow one to host their websites. + +![Apache htaccess Tricks](http://www.tecmint.com/wp-content/uploads/2015/01/htaccess-tricks.jpg) +25 htaccess Tricks + +One who wants to host a website can create a local server of his own or can contact any of above mentioned or any another server administrator to host his website. But the actual issue starts from this point. Performance of a website depends mainly on following factors: + +- Bandwidth consumed by the website. +- How secure is the website against hackers. +- Optimism when it comes to data search through the database +- User-friendliness when it comes to displaying navigation menus and providing more UI features. + +Alongside this, various factors that govern success of servers in hosting websites are: + +- Amount of data compression achieved for a particular website. +- Ability to simultaneously serve multiple clients asking for a same or different website. +- Securing the confidential data entered on the websites like: emails, credit card details and so on. +- Allowing more and more options to enhance dynamicity to a website. + +This article deals with one such feature provided by the servers that help enhance performance of websites along with securing them from bad bots, hotlinks etc. i.e. ‘.htaccess‘ file. + +### What is .htaccess? ### + +htaccess (or hypertext access) are the files that provide options for website owners to control the server environment variables and other parameters to enhance functionality of their websites. These files can reside in any and every directory in the directory tree of the website and provide features to the directory and the files and folders inside it. + +What are these features? Well these are the server directives i.e. the lines that instruct server to perform a specific task, and these directives apply only to the files and folders inside the folder in which this file is placed. These files are hidden by default as all Operating System and the web servers are configured to ignore them by default but making the hidden files visible can make you see this very special file. What type of parameters can be controlled is the topic of discussion of subsequent sections. + +Note: If .htaccess file is placed in /apache/home/www/Gunjit/ directory then it will provide directives for all the files and folders in that directory, but if this directory contains another folder namely: /Gunjit/images/ which again has another .htaccess file then the directives in this folder will override those provided by the master .htaccess file (or file in the folder up in hierarchy). + +### Apache Server and .htaccess files ### + +Apache HTTP Server colloquially called Apache was named after a Native American Tribe Apache to respect its superior skills in warfare strategy. Build on C/C++ and XML it is cross-platform web server which is based on NCSA HTTPd server and has a key role in growth and advancement of World Wide Web. + +Most commonly used on UNIX, Apache is available for wide variety of platforms including FreeBSD, Linux, Windows, Mac OS, Novel Netware etc. In 2009, Apache became the first server to serve more than 100 million websites. + +Apache server has one .htaccess file per user in www/ directory. Although these files are hidden but can be made visible if required. In www/ directory there are a number of folders each pertaining to a website named on user’s or owner’s name. Apart from this you can have one .htaccess file in each folder which configured files in that folder as stated above. + +How to configure htaccess file on Apache server is as follows… + +### Configuration on Apache Server ### + +There can be two cases: + +#### Hosting website on own server #### + +In this case, if .htaccess files are not enabled, you can enable .htaccess files by simply going to httpd.conf (Default configuration file for Apache HTTP Daemon) and finding the section. + + + +And locate the line that says… + + AllowOverride None + +And correct it to. + + AllowOverride All + +Now, on restarting Apache, .htaccess will work. + +#### Hosting website on different hosting provider server #### + +In this case it is better to consult the hosting admin, if they allow access to .htaccess files. + +### 25 ‘.htaccess’ Tricks of Apache Web Server for Websites ### + +#### 1. How to enable mod_rewrite in .htaccess file #### + +mod_rewrite option allows you to use redirections and hiding your true URL with redirecting to some other URL. This option can prove very useful allowing you to replace the lengthy and long URL’s to short and easy to remember ones. + +To allow mod_rewrite just have a practice to add the following line as the first line of your .htaccess file. + + Options +FollowSymLinks + +This option allows you to follow symbolic links and thus enable the mod_rewrite option on the website. Replacing the URL with short and crispy one is presented later on. + +#### 2. How to Allow or Deny Access to Websites #### + +htaccess file can allow or deny access of website or a folder or files in the directory in which it is placed by using order, allow and deny keywords. + +**Allowing access to only 192.168.3.1 IP** + + Order Allow, Deny + Deny from All + Allow from 192.168.3.1 + + OR + + Order Allow, Deny + Allow from 192.168.3.1 + +Order keyword here specifies the order in which allow, deny access would be processed. For the above ‘Order’ statement, the Allow statements would be processed first and then the deny statements would be processed. + +**Denying access to only one IP Address** + +The below lines provide the means to allow access of the website to all the users accept one with IP Address: 192.168.3.1. + + rder Allow, Deny + Deny from 192.168.3.1 + Allow from All + + OR + + + Order Deny, Allow + Deny from 192.168.3.1 + +#### 3. Generate Apache Error documents for different error codes. #### + +Using some simple lines, we can fix the error document that run on different error codes generated by the server when user/client requests a page not available on the website like most of us would have seen the ‘404 Page not found’ page in their web browser. ‘.htaccess’ files specify what action to take in case of such error conditions. + +To do this, the following lines are needed to be added to the ‘.htaccess’ files: + + ErrorDocument + +‘ErrorDocument’ is a keyword, error-code can be any of 401, 403, 404, 500 or any valid error representing code and lastly, ‘path-of-document’ represents the path on the local machine (in case you are using your own local server) or on the server (in case you are using any other’s server to host your website). + +**Example:** + + ErrorDocument 404 /error-docs/error-404.html + +The above line sets the document ‘error-404.html’ placed in error-docs folder to be displayed in case the 404 error is reported by the server for any invalid request for a page by the client. + +rrorDocument 404 "404 Page not found

The page you request is not present. Check the URL you have typed

" + +The above representation is also correct which places the string representing a usual html file. + +#### 4. Setting/Unsetting Apache server environment variables #### + +In .htaccess file you can set or unset the global environment variables that server allow to be modified by the hosters of the websites. For setting or unsetting the environment variables you need to add the following lines to your .htaccess files. + +**Setting the Environment variables** + + SetEnv OWNER “Gunjit Khera” + +Unsetting the Environment variables + + UnsetEnv OWNER + +#### 5. Defining different MIME types for files #### + +MIME (Multipurpose Internet Multimedia Extensions) are the types that are recognized by the browser by default when running any web page. You can define MIME types for your website in .htaccess files, so that different types of files as defined by you can be recognized and run by the server. + + + AddType application/javascript js + AddType application/x-font-ttf ttf ttc + + +Here, mod_mime.c is the module for controlling definitions of different MIME types and if you have this module installed on your system then you can use this module to define different MIME types for different extensions used in your website so that server can understand them. + +#### 6. How to Limit the size of Uploads and Downloads in Apache #### + +.htaccess files allow you the feature to control the amount of data being uploaded or downloaded by a particular client from your website. For this you just need to append the following lines to your .htaccess file: + + php_value upload_max_filesize 20M + php_value post_max_size 20M + php_value max_execution_time 200 + php_value max_input_time 200 + +The above lines set maximum upload size, maximum size of data being posted, maximum execution time i.e. the maximum time the a user is allowed to execute a website on his local machine, maximum time constrain within on the input time. + +#### 7. Making Users to download .mp3 and other files before playing on your website. #### + +Mostly, people play songs on websites before downloading them to check the song quality etc. Being a smart seller you can add a feature that can come in very handy for you which will not let any user play songs or videos online and users have to download them for playing. This is very useful as online playing of songs and videos consumes a lot of bandwidth. + +Following lines are needed to be added to be added to your .htaccess file: + + AddType application/octet-stream .mp3 .zip + +#### 8. Setting Directory Index for Website #### + +Most of website developers would already know that the first page that is displayed i.e. the home page of a website is named as ‘index.html’ .Many of us would have seen this also. But how is this set? + +.htaccess file provides a way to list a set of pages which would be scanned in order when a client requests to visit home page of the website and accordingly any one of the listed set of pages if found would be listed as the home page of the website and displayed to the user. + +Following line is needed to be added to produce the desired effect. + + DirectoryIndex index.html index.php yourpage.php + +The above line specifies that if any request for visiting the home page comes by any visitor then the above listed pages will be searched in order in the directory firstly: index.html which if found will be displayed as the sites home page, otherwise list will proceed to the next page i.e. index.php and so on till the last page you have entered in the list. + +#### 9. How to enable GZip compression for Files to save site’s bandwidth. #### + +This is a common observation that heavy sites generally run bit slowly than light weight sites that take less amount of space. This is just because for a heavy site it takes time to load the huge script files and images before displaying them on the client’s web browser. + +This is a common mechanism that when a browser requests a web page, server provides the browser with that webpage and now to locally display that web page, the browser has to download that page and then run the script inside that page. + +What GZip compression does here is saving the time required to serve a single customer thus increasing the bandwidth. The source files of the website on the server are kept in compressed form and when the request comes from a user then these files are transferred in compressed form which are then uncompressed and executed on the server. This improves the bandwidth constrain. + +Following lines can allow you to compress the source files of your website but this requires mod_deflate.c module to be installed on your server. + + + AddOutputFilterByType DEFLATE text/plain + AddOutputFilterByType DEFLATE text/html + AddOutputFilterByType DEFLATE text/xml + AddOutputFilterByType DEFLATE application/html + AddOutputFilterByType DEFLATE application/javascript + AddOutputFilterByType DEFLATE application/x-javascript + + +#### 10. Playing with the File types. #### + +There are certain conditions that the server assumes by default. Like: .php files are run on the server, similarly .txt files say for example are meant to be displayed. Like this we can make some executable cgi-scripts or files to be simply displayed as the source code on our website instead of being executed. + +To do this observe the following lines from a .htaccess file. + + RemoveHandler cgi-script .php .pl .py + AddType text/plain .php .pl .py + +These lines tell the server that .pl (perl script), .php (PHP file) and .py (Python file) are meant to just be displayed and not executed as cgi-scripts. + +#### 11. Setting the Time Zone for Apache server #### + +The power and importance of .htaccess files can be seen by the fact that this can be used to set the Time Zone of the server accordingly. This can be done by setting a global Environment variable ‘TZ’ of the list of global environment variables that are provided by the server to each of the hosted website for modification. + +Due to this reason only, we can see time on the websites (that display it) according to our time zone. May be some other person hosting his website on the server would have the timezone set according to the location where he lives. + +Following lines set the Time Zone of the Server. + + SetEnv TZ India/Kolkata + +#### 12. How to enable Cache Control on Website #### + +A very interesting feature of browser, most have observed is that on opening one website simultaneously more than one time, the latter one opens fast as compared to the first time. But how is this possible? Well in this case, the browser stores some frequently visited pages in its cache for faster access later on. + +But for how long? Well this answer depends on you i.e. on the time you set in your .htaccess file for Cache control. The .htaccess file can specify the amount of time for which the pages of website can stay in the browser’s cache and after expiration of time, it must revalidate i.e. pages would be deleted from the Cache and recreated the next time user visits the site. + +Following lines implement Cache Control for your website. + + + Header Set Cache-Control "max-age=3600, public" + + + Header Set Cache-Control "public" + Header Set Expires "Sat, 24 Jan 2015 16:00:00 GMT" + + +The above lines allow caching of the pages which are inside the directory in which .htaccess files are placed for 1 hour. + +#### 13. Configuring a single file, the option. #### + +Usually the content in .htaccess files apply to all the files and folders inside the directory in which the file is placed, but you can also provide some special permissions to a special file, like denying access to that file only or so on. + +For this you need to add tag to your file in a way like this: + + + Order allow, deny + Deny from 188.100.100.0 + + +This is a simple case of denying a file ‘conf.html’ from access by IP 188.100.100.0, but you can add any or every feature described for .htaccess file till now including the features yet to be described to the file like: Cache-control, GZip compression. + +This feature is used by most of the servers to secure .htaccess files which is the reason why we are not able to see the .htaccess files on the browsers. How the files are authenticated is demonstrated in subsequent heading. + +#### 14. Enabling CGI scripts to run outside of cgi-bin folder. #### + +Usually servers run CGI scripts that are located inside the cgi-bin folder but, you can enable running of CGI scripts located in your desired folder but just adding following lines to .htaccess file located in the desired folder and if not, then creating one, appending following lines: + + AddHandler cgi-script .cgi + Options +ExecCGI + +#### 15. How to enable SSI on Website with .htaccess #### + +Server side includes as the name suggests would be related to something included at the server side. But what? Generally when we have many pages in our website and we have a navigation menu on our home page that displays links to other pages then, we can enable SSI (Server Size Includes) option that allows all the pages displayed in the navigation menu to be included with the home page completely. + +The SSI allows inclusion of multiple pages as if content they contain is a part of a single page so that any editing needed to be done is done in one file only which saves a lot of disk space. This option is by default enabled on servers but for .shtml files. + +In case you want to enable it for .html files you need to add following lines: + + AddHandler server-parsed .html + +After this following in the html file would lead to SSI. + + + +#### 16. How to Prevent website Directory Listing #### + +To prevent any client being able to list the directories of the website on the server at his local machine add following lines to the file inside the directory you don’t want to get listed. + + Options -Indexes + +#### 17. Changing Default charset and language headers. #### + +.htaccess files allow you to modify the character set used i.e. ASCII or UNICODE, UTF-8 etc. for your website along with the default language used for the display of content. + +Following server’s global environment variables allow you to achieve above feature. + + AddDefaultCharset UTF-8 + DefaultLanguage en-US + +**Re-writing URL’s: Redirection Rules** + +Re-writing feature simply means replacing the long and un-rememberable URL’s with short and easy to remember ones. But, before going into this topic there are some rules and some conventions for special symbols used later on in this article. + +**Special Symbols:** + + Symbol Meaning + ^ - Start of the string + $ - End of the String + | - Or [a|b] – a or b + [a-z] - Any of the letter between a to z + + - One or more occurrence of previous letter + * - Zero or more occurrence of previous letter + ? - Zero or one occurrence of previous letter + +**Constants and their meaning:** + + Constant Meaning + NC - No-case or case sensitive + L - Last rule – stop processing further rules + R - Temporary redirect to new URL + R=301 - Permanent redirect to new URL + F - Forbidden, send 403 header to the user + P - Proxy – grab remote content in substitution section and return it + G - Gone, no longer exists + S=x - Skip next x rules + T=mime-type - Force specified MIME type + E=var:value - Set environment variable var to value + H=handler - Set handler + PT - Pass through – in case of URL’s with additional headers. + QSA - Append query string from requested to substituted URL + +#### 18. Redirecting a non-www URL to a www URL. #### + +Before starting with the explanation, lets first see the lines that are needed to be added to .htaccess file to enable this feature. + + RewriteEngine ON + RewriteCond %{HTTP_HOST} ^abc\.net$ + RewriteRule (.*) http://www.abc.net/$1 [R=301,L] + +The above lines enable the Rewrite Engine and then in second line check all those URL’s that pertain to host abc.net or have the HTTP_HOST environment variable set to “abc.net”. + +For all such URL’s the code permanently redirects them (as R=301 rule is enabled) to the new URL http://www.abc.net/$1 where $1 is the non-www URL having host as abc.net. The non-www URL is the one in bracket and is referred by $1. + +#### 19. Redirecting entire website to https. #### + +Following lines will help you transfer entire website to https: + + RewriteEngine ON + RewriteCond %{HTTPS} !on + RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} + +The above lines enable the re-write engine and then check the value of HTTPS environment variable. If it is on then re-write the entire pages of the website to https. + +#### 20. A custom redirection example #### + +For example, redirect url ‘http://www.abc.net?p=100&q=20 ‘ to ‘http://www.abc.net/10020pq’. + + RewriteEngine ON + RewriteRule ^http://www.abc.net/([0-9]+)([0-9]+)pq$ ^http://www.abc.net?p=$1&q=$2 + +In above lines, $1 represents the first bracket and $2 represents the second bracket. + +#### 21. Renaming the htaccess file #### + +For preventing the .htaccess file from the intruders and other people from viewing those files you can rename that file so that it is not accessed by client’s browser. The line that does this is: + + AccessFileName htac.cess + +#### 22. How to Prevent Image Hotlinking for your Website #### + +Another problem that is major factor of large bandwidth consumption by the websites is the problem of hot links which are links to your websites by other websites for display of images mostly of your website which consumes your bandwidth. This problem is also called as ‘bandwidth theft’. + +A common observation is when a site displays the image contained in some other site due to this hot-linking your site needs to be loaded and at the stake of your site’s bandwidth, the other site’s images are displayed. To prevent this for like: images such as: .gif, .jpeg etc. following lines of code would help: + + RewriteEngine ON + RewriteCond %{HTTP_REFERER} !^$ + RewriteCond %{HTTP_REFERERER} !^http://(www\.)?mydomain.com/.*$ [NC] + RewriteRule \.(gif|jpeg|png)$ - [F]. + +The above lines check if the HTTP_REFERER is not set to blank or not set to any of the links in your websites. If this is happening then all the images in your page are replaced by 403 forbidden. + +#### 23. How to Redirect Users to Maintenance Page. #### + +In case your website is down for maintenance and you want to notify all your clients that need to access your websites about this then for such cases you can add following lines to your .htaccess websites that allow only admin access and replace the site pages having links to any .jpg, .css, .gif, .js etc. + + RewriteCond %{REQUEST_URI} !^/admin/ [NC] + RewriteCond %{REQUEST_URI} !^((.*).css|(.*).js|(.*).png|(.*).jpg) [NC] + RewriteRule ^(.*)$ /ErrorDocs/Maintainence_Page.html + [NC,L,U,QSA] + +These lines check if the Requested URL contains any request for any admin page i.e. one starting with ‘/admin/’ or any request to ‘.png, .jpg, .js, .css’ pages and for any such requests it replaces that page to ‘ErrorDocs/Maintainence_Page.html’. + +#### 24. Mapping IP Address to Domain Name #### + +Name servers are the servers that convert a specific IP Address to a domain name. This mapping can also be specified in the .htaccess files in the following manner. + + For Mapping L.M.N.O address to a domain name www.hellovisit.com + RewriteCond %{HTTP_HOST} ^L\.M\.N\.O$ [NC] + RewriteRule ^(.*)$ http://www.hellovisit.com/$1 [L,R=301] + +The above lines check if the host for any page is having the IP Address as: L.M.N.O and if so the page is mapped to the domain name http://www.hellovisit.com by the third line by permanent redirection. + +#### 25. FilesMatch Tag #### + +Like tag that is used to apply conditions to a single file, can be used to match to a group of files and apply some conditions to the group of files as below: + + + Order Allow, Deny + Deny from All + + +### Conclusion ### + +The list of tricks that can be done with .htaccess files is much more. Thus, this gives us an idea how powerful this file is and how much security and dynamicity and other features it can give to your website. + +We’ve tried our best to cover as much as htaccess tricks in this article, but incase if we’ve missed any important trick, or you most welcome to post your htaccess ideas and tricks that you know via comments section below – we will include those in our article too… + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/apache-htaccess-tricks/ + +作者:[Gunjit Khera][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/gunjitk94/ \ No newline at end of file From 32d3f3d3d248134f677a669ca45c4f938a2e4c79 Mon Sep 17 00:00:00 2001 From: Ping Date: Tue, 27 Jan 2015 16:40:52 +0800 Subject: [PATCH 097/725] Translated by Ping --- ...ers--How to check memory usage on Linux.md | 113 ------------------ ...ers--How to check memory usage on Linux.md | 113 ++++++++++++++++++ 2 files changed, 113 insertions(+), 113 deletions(-) delete mode 100644 sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md create mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md deleted file mode 100644 index 0ed5ab4394..0000000000 --- a/sources/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md +++ /dev/null @@ -1,113 +0,0 @@ -Ping Translating - -Linux FAQs with Answers--How to check memory usage on Linux -================================================================================ -> **Question**: I would like to monitor memory usage on my Linux system. What are the available GUI-based or command-line tools for checking current memory usage of Linux? - -When it comes to optimizing the performance of a Linux system, physical memory is the single most important factor. Naturally, Linux offers a wealth of options to monitor the usage of the precious memory resource. Different tools vary in terms of their monitoring granularity (e.g., system-wide, per-process, per-user), interface (e.g., GUI, command-line, ncurses) or running mode (e.g., interactive, batch mode). - -Here is a non-exhaustive list of GUI or command-line tools to choose from to check used and free memory on Linux platform. - -### 1. /proc/meminfo ### - -The simpliest method to check RAM usage is via /proc/meminfo. This dynamically updated virtual file is actually the source of information displayed by many other memory related tools such as free, top and ps tools. From the amount of available/free physical memory to the amount of buffer waiting to be or being written back to disk, /proc/meminfo has everything you want to know about system memory usage. Process-specific memory information is also available from /proc//statm and /proc//status - - $ cat /proc/meminfo - -![](https://farm8.staticflickr.com/7483/15989497899_bb6afede11_b.jpg) - -### 2. atop ### - -The atop command is an ncurses-based interactive system and process monitor for terminal environments. It shows a dynamically-updated summary of system resources (CPU, memory, network, I/O, kernel), with colorized warnings in case of high system load. It also offers a top-like view of processes (or users) along with their resource usage, so that system admin can tell which processes or users are responsible for system load. Reported memory statistics include total/free memory, cached/buffer memory and committed virtual memory. - - $ sudo atop - -![](https://farm8.staticflickr.com/7552/16149756146_893773b84c_b.jpg) - -### 3. free ### - -The free command is a quick and easy way to get an overview of memory usage gleaned from /proc/meminfo. It shows a snapshot of total/free physical memory and swap space of the system, as well as used/free buffer space in the kernel. - - $ free -h -![](https://farm8.staticflickr.com/7531/15988117988_ba8c6b7b63_b.jpg) - -### 4. GNOME System Monitor ### - -GNOME System Monitor is a GUI application that shows a short history of system resource utilization for CPU, memory, swap space and network. It also offers a process view of CPU and memory usage. - - $ gnome-system-monitor - -![](https://farm8.staticflickr.com/7539/15988118078_279f0da494_c.jpg) - -### 5. htop ### - -The htop command is an ncurses-based interactive processor viewer which shows per-process memory usage in real time. It can report resident memory size (RSS), total program size in memory, library size, shared page size, and dirty page size for all running processes. You can scroll the (sorted) list of processes horizontally or vertically. - - $ htop - -![](https://farm9.staticflickr.com/8236/8599814378_de071de408_c.jpg) - -### 6. KDE System Monitor ### - -While GNOME desktop has GNOME System Monitor, KDE desktop has its own counterpart: KDE System Monitor. Its functionality is mostly similar to GNOME version, i.e., showing a real-time history of system resource usage, as well as a process list along with per-process CPU/memory consumption. - - $ ksysguard - -![](https://farm8.staticflickr.com/7479/15991397329_ec5d786ffd_c.jpg) - -### 7. memstat ### - -The memstat utility is useful to identify which executable(s), process(es) and shared libraries are consuming virtual memory. Given a process ID, memstat identifies how much virtual memory is used by the process' associated executable, data, and shared libraries. - - $ memstat -p - -![](https://farm8.staticflickr.com/7518/16175635905_1880e50055_b.jpg) - -### 8. nmon ### - -The nmon utility is an ncurses-based system benchmark tool which can monitor CPU, memory, disk I/O, kernel, filesystem and network resources in interactive mode. As for memory usage, it can show information such as total/free memory, swap space, buffer/cached memory, virtual memory page in/out statistics, all in real time. - - $ nmon - -![](https://farm9.staticflickr.com/8648/15989760117_30f62f4aba_b.jpg) - -### 9. ps ### - -The ps command can show per-process memory usage in real-time. Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used). You can sort the process list by using "--sort" option. For example, to sort in the decreasing order of RSS: - - $ ps aux --sort -rss - -![](https://farm9.staticflickr.com/8602/15989881547_ca40839c19_c.jpg) - -### 10. smem ### - -The [smem][1] command allows you to measure physical memory usage by different processes and users based on information available from /proc. It utilizes proportional set size (PSS) metric to accurately quantify effective memory usage of Linux processes. Memory usage analysis can be exported to graphical charts such as bar and pie graphs. - - $ sudo smem --pie name -c "pss" - -![](https://farm8.staticflickr.com/7466/15614838428_eed7426cfe_c.jpg) - -### 11. top ### - -The top command offers a real-time view of running processes, along with various process-specific resource usage statistics. Memory related information includes %MEM (memory utilization percentage), VIRT (total amount of virtual memory used), SWAP (amount of swapped-out virtual memory), CODE (amount of physical memory allocated for code execution), DATA (amount of physical memory allocated to non-executable data), RES (total amount of physical memory used; CODE+DATA), and SHR (amount of memory potentially shared with other processes). You can sort the process list based on memory usage or size. - -![](https://farm8.staticflickr.com/7464/15989760047_eb8d51d9f2_c.jpg) - -### 12. vmstat ### - -The vmstat command-line utility displays instantaneous and average statistics of various system activities covering CPU, memory, interrupts, and disk I/O. As for memory information, the command shows not only physical memory usage (e.g., tota/used memory and buffer/cache memory), but also virtual memory statistics (e.g., memory paged in/out, swapped in/out). - - $ vmstat -s - -![](https://farm9.staticflickr.com/8582/15988236860_3f142008d2_b.jpg) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/check-memory-usage-linux.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://xmodulo.com/visualize-memory-usage-linux.html \ No newline at end of file diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md new file mode 100644 index 0000000000..a04fdb1f52 --- /dev/null +++ b/translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md @@ -0,0 +1,113 @@ +Linux有问必答:如何检查Linux的内存使用状况 +================================================================================ + +>**问题**:我想要监测Linux系统的内存使用状况。有哪些可用的图形界面或者命令行工具来检查当前内存使用情况? + +当涉及到Linux系统性能优化的时候,物理内存是一个最重要的因素。自然的,Linux提供了丰富的选择来监测对于珍贵的内存资源的使用。不同的工具,在监测粒度(例如:全系统范围, 每个进程, 每个用户),接口(例如:图形用户界面, 命令行, ncurses)或者运行模式(交互模式, 批量处理模式)上都不尽相同。 + +下面是一个可供选择的但并不全面的图形或命令行工具列表,这些工具用来检查并且释放Linux平台中内存。 + +### 1. /proc/meminfo ### + +一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是许多信息资源的集中展示,这些资源来自于诸如free,top和ps这些与内存相关的工具。从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。特定进程的内存信息也可以通过“/proc//statm”和“/proc//status”来获取。 + + $ cat /proc/meminfo + +![](https://farm8.staticflickr.com/7483/15989497899_bb6afede11_b.jpg) + +### 2. atop ### + +atop命令是用于终端环境的基于ncurses的交互系统和进程监测工具。它展示了动态更新的系统资源(中央处理器, 内存, 网络, 输入/输出, 内核)摘要,并且用醒目的颜色将高系统负载的警告信息标注出来。它同样提供了类似于top的线程(或用户)资源使用视图,因此系统管理员可以指出哪个进程或者用户对系统负载负责。内存统计报告包括了总计/闲置内存,缓存的/缓冲的内存 和 提交的虚拟内存。 + + $ sudo atop + +![](https://farm8.staticflickr.com/7552/16149756146_893773b84c_b.jpg) + +### 3. free ### + +free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。它提供了一个快照用于展示总计/闲置的物理内存和系统交换区,以及已使用/闲置的内核缓冲区。 + + $ free -h + +![](https://farm8.staticflickr.com/7531/15988117988_ba8c6b7b63_b.jpg) + +### 4. GNOME System Monitor ### + +GNOME System Monitor 是一个图形界面应用,它展示了包括中央处理器,内存,交换区和网络在内的系统资源使用率的短暂历史记录。它同时也可以提供一个带有中央处理器和内存使用情况的进程视图。 + + $ gnome-system-monitor + +![](https://farm8.staticflickr.com/7539/15988118078_279f0da494_c.jpg) + +### 5. htop ### + +htop命令是一个基于ncurses的交互处理视图,它实时展示了每个进程的内存使用情况。它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享文件大小、和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。 + + $ htop + +![](https://farm9.staticflickr.com/8236/8599814378_de071de408_c.jpg) + +### 6. KDE System Monitor ### + +就像GNOME桌面拥有GNOME System Monitor一样,KDE桌面也有它自己的对口应用:KDE System Monitor。这个工具的功能与GNOME版本极其相似,也就是说,它同样展示了一个关于系统资源使用情况,以及带有每个进程的中央处理器/内存消耗情况的实时历史记录。 + + $ ksysguard + +![](https://farm8.staticflickr.com/7479/15991397329_ec5d786ffd_c.jpg) + +### 7. memstat ### + +memstat工具对于识别正在消耗虚拟内存的可执行文件、进程和共享库非常有用。给出一个进程识别号,memstat即可识别出与之相关联的可执行文件、数据和共享库究竟使用了多少虚拟内存。 + + $ memstat -p + +![](https://farm8.staticflickr.com/7518/16175635905_1880e50055_b.jpg) + +### 8. nmon ### + +nmon工具是一个基于ncurses系统基准测试工具,它能够以交互方式监测中央处理器、内存、磁盘输入/输出、内核、文件系统以及网络资源。对于内存使用状况而言,它能够展示像总计/闲置内存、交换区、缓冲的/缓存的内存,虚拟内存页面输入输出统计,所有这些都是实时的。 + + $ nmon + +![](https://farm9.staticflickr.com/8648/15989760117_30f62f4aba_b.jpg) + +### 9. ps ### + +ps命令能够实时展示每个进程的内存使用状况。内存使用报告里包括了 %MEM (物理内存使用百分比), VSZ (虚拟内存使用总量), and RSS (物理内存使用总量)。你可以使用“--sort”选项来对进程列表排序。例如,按照RSS降序排序: + + $ ps aux --sort -rss + +![](https://farm9.staticflickr.com/8602/15989881547_ca40839c19_c.jpg) + +### 10. smem ### + +[smem][1]命令允许你测定不同进程和用户的物理内存使用状况,这些信息来源于“/proc”目录。它利用比例设置大小(PSS)指标来精确量化Linux进程的有效内存使用情况。内存使用分析能够扩展成为柱状图或者饼图类的图形化图表。 + + $ sudo smem --pie name -c "pss" + +![](https://farm8.staticflickr.com/7466/15614838428_eed7426cfe_c.jpg) + +### 11. top ### + +top命令提供了一个运行中进程的实时视图,以及特定进程的各种资源使用统计信息。与内存相关的信息包括 %MEM (内存使用率), VIRT (虚拟内存使用总量), SWAP (交换出的虚拟内存使用量), CODE (分配给代码执行的物理内存数量), DATA (分配给无需执行的数据的物理内存数量), RES (物理内存使用总量; CODE+DATA), and SHR (有可能与其他进程共享的内存数量).你能够基于内存使用情况或者大小对进程列表进行排序。 + +![](https://farm8.staticflickr.com/7464/15989760047_eb8d51d9f2_c.jpg) + +### 12. vmstat ### + +vmstat命令行工具显示涵盖了中央处理器、内存、中断和磁盘输入/输出在内的各种系统活动的瞬时和平均统计数据。对于内存信息而言,命令不仅仅展示了物理内存使用情况(例如总计/已使用内存和缓冲的/缓存的内存),还同样展示了虚拟内存统计数据(例如,内存的页输入/输出,交换输入/输出) + + $ vmstat -s + +![](https://farm9.staticflickr.com/8582/15988236860_3f142008d2_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/check-memory-usage-linux.html + +译者:[Ping](https://github.com/mr-ping) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/visualize-memory-usage-linux.html \ No newline at end of file From 164091f5c507fd73180580fe6b9a7603e5f14984 Mon Sep 17 00:00:00 2001 From: Ping Date: Tue, 27 Jan 2015 16:54:56 +0800 Subject: [PATCH 098/725] Ping Translating --- ...0150126 iptraf--A TCP or UDP Network Monitoring Utility.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md b/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md index cc6badecc2..f39d53a47d 100644 --- a/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md +++ b/sources/tech/20150126 iptraf--A TCP or UDP Network Monitoring Utility.md @@ -1,3 +1,5 @@ +Ping -- Translating + iptraf: A TCP/UDP Network Monitoring Utility ================================================================================ [iptraf][1] is an ncurses-based IP LAN monitor that generates various network statistics including TCP info, UDP counts, ICMP and OSPF information, Ethernet load info, node stats, IP checksum errors, and others. @@ -61,4 +63,4 @@ via: http://www.unixmen.com/iptraf-tcpudp-network-monitoring-utility/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.unixmen.com/author/seth/ -[1]:http://iptraf.seul.org/about.html \ No newline at end of file +[1]:http://iptraf.seul.org/about.html From 16571b7dff5621e08eb55fa98dd93adf334b599f Mon Sep 17 00:00:00 2001 From: su-kaiyao <1250471161@qq.com> Date: Tue, 27 Jan 2015 17:41:57 +0800 Subject: [PATCH 099/725] =?UTF-8?q?=E5=AF=92=E5=81=87=E5=88=B0=E4=BA=86?= =?UTF-8?q?=EF=BC=8C=E9=A2=86=E4=B8=80=E7=AF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...150125 4 Best Modern Open Source Code Editors For Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md b/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md index d3ed7d6dd9..43ff7e9877 100644 --- a/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md +++ b/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md @@ -1,3 +1,5 @@ +su-kaiyao translating + 4 Best Modern Open Source Code Editors For Linux ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Open_Source_Editors.jpeg) @@ -83,4 +85,4 @@ via: http://itsfoss.com/best-modern-open-source-code-editors-for-linux/ [12]:http://lighttable.com/ [13]:https://github.com/LightTable/LightTable [14]:http://itsfoss.com/notepadqq-notepad-for-linux/ -[15]:http://itsfoss.com/scite-the-notepad-for-linux/ \ No newline at end of file +[15]:http://itsfoss.com/scite-the-notepad-for-linux/ From 68c7c4c0fe65ac2a318172917e03781cfb602f47 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 27 Jan 2015 20:32:00 +0800 Subject: [PATCH 100/725] PUB:20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian @geekpi --- ...t into command line on Ubuntu or Debian.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/tech => published}/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md (68%) diff --git a/translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md b/published/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md similarity index 68% rename from translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md rename to published/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md index 64cb1b36e0..93bca3583c 100644 --- a/translated/tech/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md +++ b/published/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md @@ -1,30 +1,30 @@ -Linux 有问必答:如何在Ubuntu或者Debian中启动进入命令行 +Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行 ================================================================================ > **提问**:我运行的是Ubuntu桌面,但是我希望启动后临时进入命令行。有什么简便的方法可以启动进入终端? -Linux桌面自带了一个显示管理器(比如:GDM、KDM、LightDM),它们可以让计算机启动自动进入一个基于GUI的登录环境。然而,如果你要直接启动进入终端怎么办? 比如,你在排查桌面相关的问题或者想要运行一个不需要GUI的发行程序。 +Linux桌面自带了一个显示管理器(比如:GDM、KDM、LightDM),它们可以让计算机启动自动进入一个基于GUI的登录环境。然而,如果你要直接启动进入终端怎么办? 比如,你在排查桌面相关的问题或者想要运行一个不需要GUI的应用程序。 -注意你可以通过按下Ctrl+Alt+F1到F6临时从桌面GUI切换到虚拟终端。然而,在本例中你的桌面GUI仍在后台运行,这不同于纯文本模式启动。 +注意虽然你可以通过按下Ctrl+Alt+F1到F6临时从桌面GUI切换到虚拟终端。然而,在这种情况下你的桌面GUI仍在后台运行,这不同于纯文本模式启动。 在Ubuntu或者Debian桌面中,你可以通过传递合适的内核参数在启动时启动文本模式。 ### 启动临时进入命令行 ### -如果你想要禁止桌面GUI并只有一次进入文本模式,你可以使用GRUB菜单。 +如果你想要禁止桌面GUI并临时进入一次文本模式,你可以使用GRUB菜单。 首先,打开你的电脑。当你看到初始的GRUB菜单时,按下‘e’。 ![](https://farm8.staticflickr.com/7490/16112246542_bc1875a397_z.jpg) -接着会进入下一屏,这里你可以修改内核启动选项。向下滚动到以“linux”开始的行,这里就是内核参数的列表。删除列表中的“quiet”和“splash”。在列表中添加“text”。 +接着会进入下一屏,这里你可以修改内核启动选项。向下滚动到以“linux”开始的行,这里就是内核参数的列表。删除参数列表中的“quiet”和“splash”。在参数列表中添加“text”。 ![](https://farm8.staticflickr.com/7471/15493282603_8a70f70af2_z.jpg) -升级的内核选项列表看上去像这样。按下Ctrl+x继续启动。这会一次性以详细模式启动控制台。 +升级的内核选项列表看上去像这样。按下Ctrl+x继续启动。这会以详细模式启动控制台一次(LCTT译注:由于没有保存修改,所以下次重启还会进入 GUI)。 ![](https://farm8.staticflickr.com/7570/15925676530_b11af59243_z.jpg) -永久启动进入命令行。 +### 永久启动进入命令行 ### 如果你想要永久启动进入命令行,你需要[更新定义了内核启动参数GRUB设置][1]。 @@ -32,7 +32,7 @@ Linux桌面自带了一个显示管理器(比如:GDM、KDM、LightDM), $ sudo vi /etc/default/grub -查找以GRUB_CMDLINE_LINUX_DEFAULT开头的行,并用“#”注释这行。这会禁止初始屏幕,而启动详细模式(也就是说显示详细的的启动过程)。 +查找以GRUB\_CMDLINE\_LINUX\_DEFAULT开头的行,并用“#”注释这行。这会禁止初始屏幕,而启动详细模式(也就是说显示详细的的启动过程)。 更改GRUB_CMDLINE_LINUX="" 成: @@ -48,7 +48,7 @@ Linux桌面自带了一个显示管理器(比如:GDM、KDM、LightDM), $ sudo update-grub -这时,你的桌面应该从GUI启动切换到控制台启动了。可以通过重启验证。 +这时,你的桌面应该可以从GUI启动切换到控制台启动了。可以通过重启验证。 ![](https://farm8.staticflickr.com/7518/16106378151_81ac6b5a49_b.jpg) @@ -57,7 +57,7 @@ Linux桌面自带了一个显示管理器(比如:GDM、KDM、LightDM), via: http://ask.xmodulo.com/boot-into-command-line-ubuntu-debian.html 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 47913d0680c69a8446d671c8f89e9fb1fdb9d76a Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 27 Jan 2015 20:52:18 +0800 Subject: [PATCH 101/725] PUB:How to filter, split or merge pcap files on Linux @SPccman --- ...ter, split or merge pcap files on Linux.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/tech => published}/How to filter, split or merge pcap files on Linux.md (61%) diff --git a/translated/tech/How to filter, split or merge pcap files on Linux.md b/published/How to filter, split or merge pcap files on Linux.md similarity index 61% rename from translated/tech/How to filter, split or merge pcap files on Linux.md rename to published/How to filter, split or merge pcap files on Linux.md index 3c3335544d..82caa80cbd 100644 --- a/translated/tech/How to filter, split or merge pcap files on Linux.md +++ b/published/How to filter, split or merge pcap files on Linux.md @@ -1,7 +1,7 @@ Linux下如何过滤、分割以及合并 pcap 文件 ============= -如果你是个网络管理员,并且你的工作包括测试一个[入侵侦测系统][1]或一些网络访问控制策略,那么你通常需要抓取数据包并且在离线状态下分析这些文件。当需要保存捕获的数据包时,我们会想到 libpcap 的数据包格式被广泛使用于许多开源的嗅探工具以及捕包程序。如果 pcap 文件被用于入侵测试或离线分析的话,那么在将他们[注入][2]网络之前通常要先对 pcap 文件进行一些操作。 +如果你是一个测试[入侵侦测系统][1]或一些网络访问控制策略的网络管理员,那么你经常需要抓取数据包并在离线状态下分析这些文件。当需要保存捕获的数据包时,我们一般会存储为 libpcap 的数据包格式 pcap,这是一种被许多开源的嗅探工具以及捕包程序广泛使用的格式。如果 pcap 文件被用于入侵测试或离线分析的话,那么在将他们[注入][2]网络之前通常要先对 pcap 文件进行一些操作。 ![](https://farm8.staticflickr.com/7570/15425147404_a69f416673_c.jpg) @@ -9,9 +9,9 @@ Linux下如何过滤、分割以及合并 pcap 文件 ### Editcap 与 Mergecap### -Wireshark,是最受欢迎的 GUI 嗅探工具,实际上它来源于一套非常有用的命令行工具集。其中包括 editcap 与 mergecap。editcap 是一个万能的 pcap 编辑器,它可以过滤并且能以多种方式来分割 pcap 文件。mergecap 可以将多个 pcap 文件合并为一个。 这篇文章就是基于这些 Wireshark 命令行工具。 +Wireshark,是最受欢迎的 GUI 嗅探工具,实际上它带了一套非常有用的命令行工具集。其中包括 editcap 与 mergecap。editcap 是一个万能的 pcap 编辑器,它可以过滤并且能以多种方式来分割 pcap 文件。mergecap 可以将多个 pcap 文件合并为一个。 这篇文章就是基于这些 Wireshark 命令行工具的。 -如果你已经安装过Wireshark了,那么这些工具已经在你的系统中了。如果还没装的话,那么我们接下来就安装 Wireshark 命令行工具。 需要注意的是,在基于 Debian 的发行版上我们可以不用安装 Wireshark GUI 而仅安装 命令行工具,但是在 Red Hat 及 基于它的发行版中则需要安装整个 Wireshark 包。 +如果你已经安装过 Wireshark 了,那么这些工具已经在你的系统中了。如果还没装的话,那么我们接下来就安装 Wireshark 命令行工具。 需要注意的是,在基于 Debian 的发行版上我们可以不用安装 Wireshark GUI 而仅安装命令行工具,但是在 Red Hat 及 基于它的发行版中则需要安装整个 Wireshark 包。 **Debian, Ubuntu 或 Linux Mint** @@ -27,15 +27,15 @@ Wireshark,是最受欢迎的 GUI 嗅探工具,实际上它来源于一套非 通过 editcap, 我们能以很多不同的规则来过滤 pcap 文件中的内容,并且将过滤结果保存到新文件中。 -首先,以“起止时间”来过滤 pcap 文件。 " - A < start-time > and " - B < end-time > 选项可以过滤出处在这个时间段到达的数据包(如,从 2:30 ~ 2:35)。时间的格式为 “ YYYY-MM-DD HH:MM:SS"。 +首先,以“起止时间”来过滤 pcap 文件。 " - A < start-time > 和 " - B < end-time > 选项可以过滤出在这个时间段到达的数据包(如,从 2:30 ~ 2:35)。时间的格式为 “ YYYY-MM-DD HH:MM:SS"。 - $ editcap -A '2014-12-10 10:11:01' -B '2014-12-10 10:21:01' input.pcap output.pcap + $ editcap -A '2014-12-10 10:11:01' -B '2014-12-10 10:21:01' input.pcap output.pcap 也可以从某个文件中提取指定的 N 个包。下面的命令行从 input.pcap 文件中提取100个包(从 401 到 500)并将它们保存到 output.pcap 中: $ editcap input.pcap output.pcap 401-500 -使用 "-D< dup-window >" (dup-window可以看成是对比的窗口大小,仅与此范围内的包进行对比)选项可以提取出重复包。每个包都依次与它之前的 < dup-window > -1 个包对比长度与MD5值,如果有匹配的则丢弃。 +使用 "-D < dup-window >" (dup-window可以看成是对比的窗口大小,仅与此范围内的包进行对比)选项可以提取出重复包。每个包都依次与它之前的 < dup-window > -1 个包对比长度与MD5值,如果有匹配的则丢弃。 $ editcap -D 10 input.pcap output.pcap @@ -71,13 +71,13 @@ Wireshark,是最受欢迎的 GUI 嗅探工具,实际上它来源于一套非 如果要忽略时间戳,仅仅想以命令行中的顺序来合并文件,那么使用 -a 选项即可。 -例如,下列命令会将 input.pcap文件的内容写入到 output.pcap, 并且将 input2.pcap 的内容追加在后面。 +例如,下列命令会将 input.pcap 文件的内容写入到 output.pcap, 并且将 input2.pcap 的内容追加在后面。 $ mergecap -a -w output.pcap input.pcap input2.pcap ###总结### -在这篇指导中,我演示了多个 editcap、 mergecap 操作 pcap 文件的案例。除此之外,还有其它的相关工具,如 [reordercap][3]用于将数据包重新排序,[text2pcap][4] 用于将pcap 文件转换为 文本格式, [pcap-diff][5]用于比较 pcap 文件的异同,等等。当进行网络入侵测试及解决网络问题时,这些工具与[包注入工具][6]非常实用,所以最好了解他们。 +在这篇指导中,我演示了多个 editcap、 mergecap 操作 pcap 文件的例子。除此之外,还有其它的相关工具,如 [reordercap][3]用于将数据包重新排序,[text2pcap][4] 用于将 pcap 文件转换为文本格式, [pcap-diff][5]用于比较 pcap 文件的异同,等等。当进行网络入侵测试及解决网络问题时,这些工具与[包注入工具][6]非常实用,所以最好了解他们。 你是否使用过 pcap 工具? 如果用过的话,你用它来做过什么呢? @@ -86,8 +86,8 @@ Wireshark,是最受欢迎的 GUI 嗅探工具,实际上它来源于一套非 via: http://xmodulo.com/filter-split-merge-pcap-linux.html 作者:[Dan Nanni][a] -译者:[SPccman](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[SPccman](https://github.com/SPccman) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 611bccf6a542e4d2a6a27434359339e579f91402 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 27 Jan 2015 21:24:24 +0800 Subject: [PATCH 102/725] PUB:20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik @mr-ping --- ...our Apps and PPAs in Ubuntu Using Aptik.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) rename {translated/tech => published}/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md (86%) diff --git a/translated/tech/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md b/published/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md similarity index 86% rename from translated/tech/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md rename to published/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md index d55bf79f62..5b422eaef6 100644 --- a/translated/tech/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md +++ b/published/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md @@ -2,9 +2,9 @@ ================================================================================ ![00_lead_image_aptik](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x300x00_lead_image_aptik.png.pagespeed.ic.n3TJwp8YK_.png) -当你想重装Ubuntu或者仅仅是想安装它的一个新版本的时候,寻到一个便捷的方法去重新安装之前的应用并且重置其设置是很有用的。此时 *Aptik* 粉墨登场,它可以帮助你轻松实现。 +当你想重装Ubuntu或者仅仅是想安装它的一个新版本的时候,如果有个便捷的方法来重新安装之前的应用并且重置其设置会很方便的。此时 *Aptik* 粉墨登场,它可以帮助你轻松实现。 -Aptik(自动包备份和回复)是一个可以用在Ubuntu,Linux Mint, 和其他基于Debian以及Ubuntu的Linux发行版上的应用,它允许你将已经安装过的包括软件库、下载包、安装的应用及其主题和设置在内的PPAs(个人软件包存档)备份到外部的U盘、网络存储或者类似于Dropbox的云服务上。 +Aptik(自动包备份和恢复)是一个可以用在Ubuntu,Linux Mint 和其他基于Debian以及Ubuntu的Linux发行版上的应用,它允许你将已经安装过的包括软件库、下载包、安装的应用和主题、用户设置在内的PPAs(个人软件包存档)备份到外部的U盘、网络存储或者类似于Dropbox的云服务上。 注意:当我们在此文章中说到输入某些东西的时候,如果被输入的内容被引号包裹,请不要将引号一起输入进去,除非我们有特殊说明。 @@ -16,7 +16,7 @@ Aptik(自动包备份和回复)是一个可以用在Ubuntu,Linux Mint, 和 ![01_command_to_add_repository](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x99x01_command_to_add_repository.png.pagespeed.ic.UfVC9QLj54.png) -输入下边的命令到提示符旁边,来确保资源库已经是最新版本。 +在命令行提示符输入下边的命令,来确保资源库已经是最新版本。 sudo apt-get update @@ -86,11 +86,11 @@ Aptik的主窗口显示出来了。从“Backup Directory”下拉列表中选 接下来,“Downloaded Packages (APT Cache)”的项目只对重装同样版本的Ubuntu有用处。它会备份下你系统缓存(/var/cache/apt/archives)中的包。如果你是升级系统的话,可以跳过这个条目,因为针对新系统的包会比现有系统缓存中的包更加新一些。 -备份和回复下载过的包,这可以在重装Ubuntu,并且重装包的时候节省时间和网络带宽。因为一旦你把这些包恢复到系统缓存中之后,他们可以重新被利用起来,这样下载过程就免了,包的安装会更加快捷。 +备份和恢复下载过的包,这可以在重装Ubuntu,并且重装包的时候节省时间和网络带宽。因为一旦你把这些包恢复到系统缓存中之后,他们可以重新被利用起来,这样下载过程就免了,包的安装会更加快捷。 如果你是重装相同版本的Ubuntu系统的话,点击 “Downloaded Packages (APT Cache)” 右侧的 “Backup” 按钮来备份系统缓存中的包。 -注意:当你备份下载过的包的时候是没有二级对话框出现。你系统缓存 (/var/cache/apt/archives) 中的包会被拷贝到备份目录下一个名叫 “archives” 的文件夹中,当整个过程完成后会出现一个对话框来告诉你备份已经完成。 +注意:当你备份下载过的包的时候是没有二级对话框出现的。你系统缓存 (/var/cache/apt/archives) 中的包会被拷贝到备份目录下一个名叫 “archives” 的文件夹中,当整个过程完成后会出现一个对话框来告诉你备份已经完成。 ![16_downloaded_packages_backed_up](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x544x16_downloaded_packages_backed_up.png.pagespeed.ic.z8ysuwzQAK.png) @@ -104,7 +104,7 @@ Aptik的主窗口显示出来了。从“Backup Directory”下拉列表中选 ![18_clicking_backup_for_software_selections](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x530x18_clicking_backup_for_software_selections.png.pagespeed.ic.QI5D-IgnP_.png) -名为 “packages.list” and “packages-installed.list” 的两个文件出现在了备份目录中,并且一个用来通知你备份完成的对话框出现。点击 ”OK“关闭它。 +备份目录中出现了两个名为 “packages.list” 和“packages-installed.list” 的文件,并且会弹出一个通知你备份完成的对话框。点击 ”OK“关闭它。 注意:“packages-installed.list”文件包含了所有的包,而 “packages.list” 在包含了所有包的前提下还指出了那些包被选择上了。 @@ -120,27 +120,27 @@ Aptik的主窗口显示出来了。从“Backup Directory”下拉列表中选 ![21_zipping_settings_files](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x530x21_zipping_settings_files.png.pagespeed.ic.dgoBj7egqv.png) -当打包完成后,打包后的文件被拷贝到备份目录下,另外一个备份成功的对话框出现。点击”OK“,关掉。 +当打包完成后,打包后的文件被拷贝到备份目录下,另外一个备份成功的对话框出现。点击“OK”关掉。 ![22_app_settings_backed_up](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x530x22_app_settings_backed_up.png.pagespeed.ic.Mb6utyLJ3W.png) -来自 “/usr/share/themes” 目录的主题和来自 “/usr/share/icons” 目录的图标也可以备份。点击 “Themes and Icons” 右侧的 “Backup” 来进行此操作。“Backup Themes” 对话框默认选择了所有的主题和图标。你可以安装需要取消到一些然后点击 “Backup” 进行备份。 +放在 “/usr/share/themes” 目录的主题和放在 “/usr/share/icons” 目录的图标也可以备份。点击 “Themes and Icons” 右侧的 “Backup” 来进行此操作。“Backup Themes” 对话框默认选择了所有的主题和图标。你可以安装需要的、取消一些不要的,然后点击 “Backup” 进行备份。 ![22a_backing_up_themes_and_icons](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x530x22a_backing_up_themes_and_icons.png.pagespeed.ic.KXa8W3YhyF.png) -主题被打包拷贝到备份目录下的 “themes” 文件夹中,图标被打包拷贝到备份目录下的 “icons” 文件夹中。然后成功提示对话框出现,点击”OK“关闭它。 +主题被打包拷贝到备份目录下的 “themes” 文件夹中,图标被打包拷贝到备份目录下的 “icons” 文件夹中。然后成功提示对话框出现,点击“OK”关闭它。 ![22b_themes_and_icons_backed_up](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x530x22b_themes_and_icons_backed_up.png.pagespeed.ic.ejjRaymD39.png) -一旦你完成了需要的备份,点击主界面左上角的”X“关闭 Aptik 。 +一旦你完成了需要的备份,点击主界面左上角的“X”关闭 Aptik 。 ![23_closing_aptik](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x542x23_closing_aptik.png.pagespeed.ic.pNk9Vt3--l.png) -备份过的文件已存在于你选择的备份目录中,可以随时取阅。 +备份过的文件已存在于你选择的备份目录中,可以随时查看。 ![24_backup_files_in_directory](http://cdn5.howtogeek.com/wp-content/uploads/2014/12/650x374x24_backup_files_in_directory.png.pagespeed.ic.vwblOfN915.png) -当你重装Ubuntu或者安装新版本的Ubuntu后,在新的系统中安装 Aptik 并且将备份好的文件置于新系统中让其可被使用。运行 Aptik,并使用每个条目的 “Restore” 按钮来恢复你的软件源、应用、包、设置、主题以及图标。 +当你重装Ubuntu或者安装新版本的Ubuntu后,在新的系统中安装 Aptik 并且将备份好的文件置于新系统中使用。运行 Aptik,并使用每个条目的 “Restore” 按钮来恢复你的软件源、应用、包、设置、主题以及图标。 -------------------------------------------------------------------------------- @@ -148,7 +148,7 @@ via: http://www.howtogeek.com/206454/how-to-backup-and-restore-your-apps-and-ppa 作者:Lori Kaufman 译者:[Ping](https://github.com/mr-ping) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2539cba212909abdeae1e9f6f3060006c3ed034e Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 27 Jan 2015 21:47:20 +0800 Subject: [PATCH 103/725] PUB:20141222 How to Sync Time Properly with NTP Server in CentOS 7.x @GOLinux --- ...c Time Properly with NTP Server in CentOS 7.x.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) rename {translated/tech => published}/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md (70%) diff --git a/translated/tech/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md b/published/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md similarity index 70% rename from translated/tech/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md rename to published/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md index 80a8237b6d..d8bfbd7c49 100644 --- a/translated/tech/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md +++ b/published/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md @@ -1,6 +1,6 @@ CentOS 7.x中正确设置时间与时钟服务器同步 ================================================================================ -**Chrony**是一个开源而自由的应用,它能帮助你保持系统时钟与时钟服务器同步,因此让你的时间保持精确。它由两个程序组成,分别是chronyd和chronyc。chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机获取或丢失时间的比率,并对此进行补偿。chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上干这些事,也可以在一台不同的远程计算机上干这些事。 +**Chrony**是一个开源的自由软件,它能帮助你保持系统时钟与时钟服务器(NTP)同步,因此让你的时间保持精确。它由两个程序组成,分别是chronyd和chronyc。chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。 在像CentOS 7之类基于RHEL的操作系统上,已经默认安装有Chrony。 @@ -10,19 +10,17 @@ CentOS 7.x中正确设置时间与时钟服务器同步 **server** - 该参数可以多次用于添加时钟服务器,必须以"server "格式使用。一般而言,你想添加多少服务器,就可以添加多少服务器。 - Example: server 0.centos.pool.ntp.org server 3.europe.pool.ntp.org -**stratumweight** - stratumweight指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,CentOS中设置为0,让chronyd在选择源时忽略层。 +**stratumweight** - stratumweight指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级。 -**driftfile** - chronyd程序的主要行为之一,就是根据实际时间计算出计算机获取或丢失时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至它可能有机会从时钟服务器获得好的估值。 +**driftfile** - chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。 **rtcsync** - rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。 **allow / deny** - 这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。 - Examples: allow 192.168.4.5 deny 192.168/16 @@ -30,11 +28,10 @@ CentOS 7.x中正确设置时间与时钟服务器同步 **bindcmdaddress** - 该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级。 - Example: bindcmdaddress 127.0.0.1 bindcmdaddress ::1 -**makestep** - 通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该回转过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时调停系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。 +**makestep** - 通常,chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。 ### 使用chronyc ### @@ -66,7 +63,7 @@ via: http://linoxide.com/linux-command/chrony-time-sync/ 作者:[Adrian Dinu][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 0c6739c7e49b1db508c7f8d1e01e09e1795fd139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E4=BC=AF=E7=91=9E?= Date: Tue, 27 Jan 2015 22:21:48 +0800 Subject: [PATCH 104/725] Update 20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md --- ... to Boot Linux ISO Images Directly From Your Hard Drive.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md b/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md index 0a1670da58..b7ccf253f9 100644 --- a/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md +++ b/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md @@ -1,4 +1,4 @@ -How to Boot Linux ISO Images Directly From Your Hard Drive +[xieborui translating]How to Boot Linux ISO Images Directly From Your Hard Drive ================================================================================ Hi all, today we'll teach you an awesome interesting stuff related with the Operating System Disk Image and Booting. Now, try many OS you like without installing them in your Physical Hard Drive and without burning DVDs or USBs. @@ -75,4 +75,4 @@ via: http://linoxide.com/linux-how-to/boot-linux-iso-images-directly-hard-drive/ [a]:http://linoxide.com/author/arunp/ [1]:http://ubuntu.com/ [2]:http://linuxmint.com/ -[3]:http://git.marmotte.net/git/glim/tree/grub2 \ No newline at end of file +[3]:http://git.marmotte.net/git/glim/tree/grub2 From 62a61ee56d422586c0e5b4936dd3671552d462fb Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Tue, 27 Jan 2015 22:59:18 +0800 Subject: [PATCH 105/725] =?UTF-8?q?20150127=20=E9=80=89=E9=A2=98=20Bug=20i?= =?UTF-8?q?n=20Wi-Fi=20Direct=20Android=20Implementation=20Causes=20Denial?= =?UTF-8?q?=20of=20Service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Implementation Causes Denial of Service.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md diff --git a/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md b/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md new file mode 100644 index 0000000000..8829296d18 --- /dev/null +++ b/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md @@ -0,0 +1,49 @@ +Bug in Wi-Fi Direct Android Implementation Causes Denial of Service +---- +*Google marks the issue as having low severity, is not in a hurry to fix it* + +![Wi-Fi Direct glitch crashes Android](http://i1-news.softpedia-static.com/images/news2/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299-2.jpg) + +#A vulnerability in the way Android handles Wi-Fi Direct connections leads to rebooting the device when searching for peers to connect to, which can be anything from other phones, cameras, gaming devices, computers, or printers. + +The Wi-Fi Direct technology allows devices capable of wireless connection to establish communication directly, without the need to join a local network. + +##Security company insisted on proper coordination for a fix + +The vulnerability allows an attacker to send a specially crafted 802.11 Probe Response frame to the device and crashes it due to an unhandled exception occurring on the WiFi monitoring class. + +Core Security discovered the flaw (CVE-2014-0997) through its CoreLabs team, and reported it to Google back in September 2014. The vendor acknowledged it but classified the glitch as having low severity, with no timeline for a fix being provided. + +The same answer was received by Core Security each time they contacted the Android security team to inform of a timeframe for rolling out a fix. The last reply of this kind was received on January 20, meaning that there is no patch for the time being. On Monday, the security company made their findings public. + +The security company created a (proof-of-concept)[1] to demonstrate the validity of the results obtained during their research. + +According to the technical details of the vulnerability, some Android devices can be induced a denial-of-service condition if they receive a malformed wpa_supplicant event, which makes available the interface between the wireless driver and the Android platform framework. + +##Google is not in a hurry to eliminate the problem + +The relaxed stance from the Android security team regarding the issue may be on account of the fact that denial-of-service condition occurs only for a short period of time, when scanning for peers. + +More than this, the result is not severe in nature as it consists in rebooting the device. There is no risk of data exfiltration or an attack that could lead to this, which would make it unappealing to a threat actor. On the other hand, a patch should be provided regardless, in order to mitigate any potential future risks. + +Core Security says that the issue was not detected on Android 5.0.1 and above, and among the devices affected they found Nexus 5 and 4 running version 4.4.4 of the mobile operating system, LG D806 and Samsung SM-T310 with Android 4.2.2, and Motorola RAZR HD with build 4.1.2 of the OS. + +For the time being, mitigation consists in refraining from using Wi-Fi Direct or updating to a non-vulnerable version of Android. + + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299.shtml + +本文发布时间:27 Jan 2015, 09:11 GMT + +作者:[Ionut Ilascu][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/ionut-ilascu +[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service \ No newline at end of file From f44993845aedc2a8a27bd072d0a7e2e6fe0e1034 Mon Sep 17 00:00:00 2001 From: mtunique Date: Wed, 28 Jan 2015 00:21:35 +0800 Subject: [PATCH 106/725] translated Linux FAQs with Answers--How to check disk space on Linux with df command --- ...eck disk space on Linux with df command.md | 158 ------------------ 1 file changed, 158 deletions(-) delete mode 100644 sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md deleted file mode 100644 index b6595f555c..0000000000 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md +++ /dev/null @@ -1,158 +0,0 @@ -translating by mtunique -Linux FAQs with Answers--How to check disk space on Linux with df command -================================================================================ -> **问题**: 我知道在Linux上我可以用df命令来查看I know I can use df command to check a file system's disk space usage on Linux. Can you show me practical examples of the df command so that I can make the most out of it? - -As far as disk storage is concerned, there are many command-line or GUI-based tools that can tell you about current disk space usage. These tools report on detailed disk utilization in various human-readable formats, such as easy-to-understand summary, detailed statistics, or [intuitive visualization][1]. If you simply want to know how much free disk space is available for different file systems, then df command is probably all you need. - -![](https://farm9.staticflickr.com/8632/15505309473_51bffec3f1_b.jpg) - -The df command can report on disk utilization of any "mounted" file system. There are different ways this command can be invoked. Here are some **useful** df **command examples**. - -### Display in Human-Readable Format ### - -By default, the df command reports disk space in 1K blocks, which is not easily interpretable. The "-h" parameter will make df print disk space in a more human-readable format (e.g., 100K, 200M, 3G). - - $ df -h - ----------- - - Filesystem Size Used Avail Use% Mounted on - /dev/mapper/ubuntu-root 909G 565G 299G 66% / - none 4.0K 0 4.0K 0% /sys/fs/cgroup - udev 3.9G 4.0K 3.9G 1% /dev - tmpfs 785M 1.2M 784M 1% /run - none 5.0M 0 5.0M 0% /run/lock - none 3.9G 63M 3.8G 2% /run/shm - none 100M 48K 100M 1% /run/user - /dev/sda1 228M 98M 118M 46% /boot - -### Display Inode Usage ### - -When you monitor disk usage, you must watch out for not only disk space, but also "inode" usage. In Linux, inode is a data structure used to store metadata of a particular file, and when a file system is created, a pre-defined number of inodes are allocated. This means that a file system can run out of space not only because big files use up all available space, but also because many small files use up all available inodes. To display inode usage, use "-i" option. - - $ df -i - ----------- - - Filesystem Inodes IUsed IFree IUse% Mounted on - /dev/mapper/ubuntu-root 60514304 1217535 59296769 3% / - none 1004417 13 1004404 1% /sys/fs/cgroup - udev 1000623 552 1000071 1% /dev - tmpfs 1004417 608 1003809 1% /run - none 1004417 11 1004406 1% /run/lock - none 1004417 288 1004129 1% /run/shm - none 1004417 28 1004389 1% /run/user - /dev/sda1 124496 346 124150 1% /boot - -### Display Disk Usage Grant Total ### - -By default, the df command shows disk utilization of individual file systems. If you want to know the total disk usage over all existing file systems, add "--total" option. - - $ df -h --total - ----------- - - Filesystem Size Used Avail Use% Mounted on - /dev/mapper/ubuntu-root 909G 565G 299G 66% / - none 4.0K 0 4.0K 0% /sys/fs/cgroup - udev 3.9G 4.0K 3.9G 1% /dev - tmpfs 785M 1.2M 784M 1% /run - none 5.0M 0 5.0M 0% /run/lock - none 3.9G 62M 3.8G 2% /run/shm - none 100M 48K 100M 1% /run/user - /dev/sda1 228M 98M 118M 46% /boot - total 918G 565G 307G 65% - - -### Display File System Types ### - -By default, the df command does not show file system type information. Use "-T" option to add file system types to the output. - - $ df -T - ----------- - - Filesystem Type 1K-blocks Used Available Use% Mounted on - /dev/mapper/ubuntu-root ext4 952893348 591583292 312882844 66% / - none tmpfs 4 0 4 0% /sys/fs/cgroup - udev devtmpfs 4002492 4 4002488 1% /dev - tmpfs tmpfs 803536 1196 802340 1% /run - none tmpfs 5120 0 5120 0% /run/lock - none tmpfs 4017668 60176 3957492 2% /run/shm - none tmpfs 102400 48 102352 1% /run/user - /dev/sda1 ext2 233191 100025 120725 46% /boot - -### Include or Exclude a Specific File System Type ### - -If you want to know free space of a specific file system type, use "-t " option. You can use this option multiple times to include more than one file system types. - - $ df -t ext2 -t ext4 - ----------- - - Filesystem 1K-blocks Used Available Use% Mounted on - /dev/mapper/ubuntu-root 952893348 591583380 312882756 66% / - /dev/sda1 233191 100025 120725 46% /boot - -To exclude a specific file system type, use "-x " option. You can use this option multiple times as well. - - $ df -x tmpfs - -### Display Disk Usage of a Specific Mount Point ### - -If you specify a mount point with df, it will report disk usage of the file system mounted at that location. If you specify a regular file (or a directory) instead of a mount point, df will display disk utilization of the file system which contains the file (or the directory). - - $ df / - ----------- - - Filesystem 1K-blocks Used Available Use% Mounted on - /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / - ----------- - - $ df /home/dev - ----------- - - Filesystem 1K-blocks Used Available Use% Mounted on - /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / - -### Display Information about Dummy File Systems ### - -If you want to display disk space information for all existing file systems including dummy file systems, use "-a" option. Here, dummy file systems refer to pseudo file systems which do not have corresponding physical devices, e.g., tmpfs, cgroup virtual file system or FUSE file systems. These dummy filesystems have size of 0, and are not reported by df without "-a" option. - - $ df -a - ----------- - - Filesystem 1K-blocks Used Available Use% Mounted on - /dev/mapper/ubuntu-root 952893348 591578716 312887420 66% / - proc 0 0 0 - /proc - sysfs 0 0 0 - /sys - none 4 0 4 0% /sys/fs/cgroup - none 0 0 0 - /sys/fs/fuse/connections - none 0 0 0 - /sys/kernel/debug - none 0 0 0 - /sys/kernel/security - udev 4002492 4 4002488 1% /dev - devpts 0 0 0 - /dev/pts - tmpfs 803536 1196 802340 1% /run - none 5120 0 5120 0% /run/lock - none 4017668 58144 3959524 2% /run/shm - none 102400 48 102352 1% /run/user - none 0 0 0 - /sys/fs/pstore - cgroup 0 0 0 - /sys/fs/cgroup/cpuset - cgroup 0 0 0 - /sys/fs/cgroup/hugetlb - /dev/sda1 233191 100025 120725 46% /boot - vmware-vmblock 0 0 0 - /run/vmblock-fuse - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/check-disk-space-linux-df-command.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://xmodulo.com/visualize-disk-usage-linux.html From 743040498a7bde86504080532f931cf31c5cd461 Mon Sep 17 00:00:00 2001 From: mtunique Date: Wed, 28 Jan 2015 00:23:25 +0800 Subject: [PATCH 107/725] move 20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md --- ...eck disk space on Linux with df command.md | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md diff --git a/translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md new file mode 100644 index 0000000000..6b1d65ca8b --- /dev/null +++ b/translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md @@ -0,0 +1,156 @@ +Linux有问必答:在Linux下如何用df命令检查磁盘空间? +================================================================================ +> **问题**: 我知道在Linux上我可以用df命令来查看磁盘使用空间。你能告诉我df命令的实际例子使我可以最大限度得利用它吗? + +对于磁盘存储方面,有很多命令行或基于GUI的工具,它可以告诉你关于当前磁盘空间的使用情况。这些工具用各种人们可读的格式展示磁盘利用率的详细信息,比如易于理解的总结,详细的统计信息或直观的[可视化报告][1]。如果你只想知道不同文件系统有多少空闲的磁盘空间,那么df命令可能是你所需要的。 + +![](https://farm9.staticflickr.com/8632/15505309473_51bffec3f1_b.jpg) + +df命令可以展示任何“mounted”文件系统的磁盘利用率。该命令可以用不同的方式调用。这里有一些**有用的** df **命令例子**. + +### 用人们可读的方式展示 ### + +默认情况下,df命令用1K为块来展示磁盘空间,这不容易解释。“-h”参数使df用更可读的方式打印磁盘空间(例如 100K,200M,3G)。 + + $ df -h + +---------- + + Filesystem Size Used Avail Use% Mounted on + /dev/mapper/ubuntu-root 909G 565G 299G 66% / + none 4.0K 0 4.0K 0% /sys/fs/cgroup + udev 3.9G 4.0K 3.9G 1% /dev + tmpfs 785M 1.2M 784M 1% /run + none 5.0M 0 5.0M 0% /run/lock + none 3.9G 63M 3.8G 2% /run/shm + none 100M 48K 100M 1% /run/user + /dev/sda1 228M 98M 118M 46% /boot + +### 展示Inode使用情况 ### + +当你监视磁盘使用情况时,你必须注意的不仅仅是磁盘空间还有“inode”的使用情况。在Linux中,inode是用来存储特定文件的元数据的一种数据结构,在创建一个文件系统时,inode的预先定义数量将被分配。这意味着,一个文件系统可能耗尽空间不只是因为大文件用完了所有可用空间,也可能是因为很多小文件用完了所有可能的inode。用“-i”选项展示inode使用情况。 + + $ df -i + +---------- + + Filesystem Inodes IUsed IFree IUse% Mounted on + /dev/mapper/ubuntu-root 60514304 1217535 59296769 3% / + none 1004417 13 1004404 1% /sys/fs/cgroup + udev 1000623 552 1000071 1% /dev + tmpfs 1004417 608 1003809 1% /run + none 1004417 11 1004406 1% /run/lock + none 1004417 288 1004129 1% /run/shm + none 1004417 28 1004389 1% /run/user + /dev/sda1 124496 346 124150 1% /boot + +### 展示磁盘总利用率 ### + +默认情况下, df命令显示磁盘的单个文件系统的利用率。如果你想知道的所有文件系统的总磁盘使用量,增加“ --total ”选项。 + $ df -h --total + +---------- + + Filesystem Size Used Avail Use% Mounted on + /dev/mapper/ubuntu-root 909G 565G 299G 66% / + none 4.0K 0 4.0K 0% /sys/fs/cgroup + udev 3.9G 4.0K 3.9G 1% /dev + tmpfs 785M 1.2M 784M 1% /run + none 5.0M 0 5.0M 0% /run/lock + none 3.9G 62M 3.8G 2% /run/shm + none 100M 48K 100M 1% /run/user + /dev/sda1 228M 98M 118M 46% /boot + total 918G 565G 307G 65% - + +### 展示文件系统类型 ### + +默认情况下,df命令不现实文件系统类型信息。用“-T”选项来添加文件系统信息到输出中。 + + $ df -T + +---------- + + Filesystem Type 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root ext4 952893348 591583292 312882844 66% / + none tmpfs 4 0 4 0% /sys/fs/cgroup + udev devtmpfs 4002492 4 4002488 1% /dev + tmpfs tmpfs 803536 1196 802340 1% /run + none tmpfs 5120 0 5120 0% /run/lock + none tmpfs 4017668 60176 3957492 2% /run/shm + none tmpfs 102400 48 102352 1% /run/user + /dev/sda1 ext2 233191 100025 120725 46% /boot + +### 包含或排除特定的文件系统类型 ### + +如果你想知道特定文件系统类型的剩余空间,用“-t ”选项。你可以多次使用这个选项来包含更多的文件系统类型。 + + $ df -t ext2 -t ext4 + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591583380 312882756 66% / + /dev/sda1 233191 100025 120725 46% /boot + +排除特定的文件系统类型,用“-x ”选项。同样,你可以用这个选项多次。 + + $ df -x tmpfs + +### 显示一个具体的挂载点磁盘使用情况 ### + +如果你用df指定一个挂载点,它将报告挂载在那个地方的文件系统的磁盘使用情况。如果你指定一个普通文件(或一个目录)而不是一个挂载点,df将现实包含这个文件(或目录)的文件系统的磁盘利用率。 + + $ df / + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / + +---------- + + $ df /home/dev + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / + +### 现实虚拟文件系统的信息 ### + +如果你想显示所有已经存在的文件系统(包括虚拟文件系统)的磁盘空间信息,用“-a”选项。这里,虚拟文件系统是指没有相对应的物理设备的假的文件系统,例如,tmpfs,cgroup虚拟文件系统或FUSE文件安系统。这些虚拟文件系统大小为0,不用“-a”选项将不会被报告出来。 + + $ df -a + +---------- + + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mapper/ubuntu-root 952893348 591578716 312887420 66% / + proc 0 0 0 - /proc + sysfs 0 0 0 - /sys + none 4 0 4 0% /sys/fs/cgroup + none 0 0 0 - /sys/fs/fuse/connections + none 0 0 0 - /sys/kernel/debug + none 0 0 0 - /sys/kernel/security + udev 4002492 4 4002488 1% /dev + devpts 0 0 0 - /dev/pts + tmpfs 803536 1196 802340 1% /run + none 5120 0 5120 0% /run/lock + none 4017668 58144 3959524 2% /run/shm + none 102400 48 102352 1% /run/user + none 0 0 0 - /sys/fs/pstore + cgroup 0 0 0 - /sys/fs/cgroup/cpuset + cgroup 0 0 0 - /sys/fs/cgroup/hugetlb + /dev/sda1 233191 100025 120725 46% /boot + vmware-vmblock 0 0 0 - /run/vmblock-fuse + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/check-disk-space-linux-df-command.html + +译者:[mtunique](https://github.com/mtunique) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/visualize-disk-usage-linux.html From 8b7c46f9004bf28d29a6c008e572c0651ed3e900 Mon Sep 17 00:00:00 2001 From: bazz2 Date: Wed, 28 Jan 2015 08:51:38 +0800 Subject: [PATCH 108/725] half the work --- .../tech/20141204 Linux Namespaces.md | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) rename {sources => translated}/tech/20141204 Linux Namespaces.md (75%) diff --git a/sources/tech/20141204 Linux Namespaces.md b/translated/tech/20141204 Linux Namespaces.md similarity index 75% rename from sources/tech/20141204 Linux Namespaces.md rename to translated/tech/20141204 Linux Namespaces.md index 6424d8f6a4..4d81eddcb9 100644 --- a/sources/tech/20141204 Linux Namespaces.md +++ b/translated/tech/20141204 Linux Namespaces.md @@ -1,33 +1,32 @@ -[bazz2222222222] -Linux Namespaces +Linux ռ ================================================================================ -### Background ### +### ### -Starting from kernel 2.6.24, Linux supports 6 different types of namespaces. Namespaces are useful in creating processes that are more isolated from the rest of the system, without needing to use full low level virtualization technology. +2.6.24ں˿ʼLinux ֧6ֲͬ͵ռ䡣ǵij֣ʹûĽܹϵͳøӳףӶҪ̫ײ⻯ -- **CLONE_NEWIPC**: IPC Namespaces: SystemV IPC and POSIX Message Queues can be isolated. -- **CLONE_NEWPID**: PID Namespaces: PIDs are isolated, meaning that a virtual PID inside of the namespace can conflict with a PID outside of the namespace. PIDs inside the namespace will be mapped to other PIDs outside of the namespace. The first PID inside the namespace will be '1' which outside of the namespace is assigned to init -- **CLONE_NEWNET**: Network Namespaces: Networking (/proc/net, IPs, interfaces and routes) are isolated. Services can be run on the same ports within namespaces, and "duplicate" virtual interfaces can be created. -- **CLONE_NEWNS**: Mount Namespaces. We have the ability to isolate mount points as they appear to processes. Using mount namespaces, we can achieve similar functionality to chroot() however with improved security. -- **CLONE_NEWUTS**: UTS Namespaces. This namespaces primary purpose is to isolate the hostname and NIS name. -- **CLONE_NEWUSER**: User Namespaces. Here, user and group IDs are different inside and outside of namespaces and can be duplicated. +- **CLONE_NEWIPC**: ̼ͨ(IPC)ռ䣬Խ SystemV IPC POSIX Ϣж +- **CLONE_NEWPID**: ID ռ䣬 ID ˼ռڵĽ ID ܻռĽ ID ͻռڵĽ ID ӳ䵽ռʱʹһ ID˵ռ ID Ϊ1Ḷ̌ռָ init ̡ +- **CLONE_NEWNET**: ռ䣬ڸԴ/proc/netIP ַ·ɵȣ̨̿ڲͬռڵͬ˿ϣûһ +- **CLONE_NEWNS**: ռ䣬ʱԽصϵͳ룬ʹʱǿԴﵽ chroot ĹܣڰȫԷ chroot ߡ +- **CLONE_NEWUTS**: UTS ռ䣬ҪĿǶϢNIS +- **CLONE_NEWUSER**: ûռ䣬ͬ ID һû ID ID ռDzһģڲͬռڿԴͬ ID -Let's look first at the structure of a C program, required to demonstrate process namespaces. The following has been tested on Debian 6 and 7. First, we need to allocate a page of memory on the stack, and set a pointer to the end of that memory page. We use **alloca** to allocate stack memory rather than malloc which would allocate memory on the heap. + C ԽΪʾռʱҪõ C ԡIJԹ Debian 6 Debian 7 ִСȣջڷһҳڴռ䣬ָָڴҳĩβʹ **alloca()** ڴ棬Ҫ malloc() ڴڶϡ void *mem = alloca(sysconf(_SC_PAGESIZE)) + sysconf(_SC_PAGESIZE); -Next, we use **clone** to create a child process, passing the location of our child stack 'mem', as well as the required flags to specify a new namespace. We specify 'callee' as the function to execute within the child space: +Ȼʹ **clone()** ӽ̣ջռĵַ "mem"ԼָռıǡͬʱǻָcalleeΪӽеĺ mypid = clone(callee, mem, SIGCHLD | CLONE_NEWIPC | CLONE_NEWPID | CLONE_NEWNS | CLONE_FILES, NULL); -After calling **clone** we then wait for the child process to finish, before terminating the parent. If not, the parent execution flow will continue and terminate immediately after, clearing up the child with it: +**clone** ֮Ҫڸеȴӽ˳Ļ̻ȥֱ̽ӽ̱ɹ¶̣ while (waitpid(mypid, &r, 0) < 0 && errno == EINTR) { continue; } -Lastly, we'll return to the shell with the exit code of the child: +ӽ˳ǻص shell 档 if (WIFEXITED(r)) { @@ -35,7 +34,7 @@ Lastly, we'll return to the shell with the exit code of the child: } return EXIT_FAILURE; -Now, let's look at the **callee** function: +Ľܵ **callee** £ static int callee() { @@ -48,7 +47,7 @@ Now, let's look at the **callee** function: return ret; } -Here, we mount a **/proc** filesystem, and then set the uid (User ID) and gid (Group ID) to the value of 'u' before spawning the **/bin/bash** shell. [LXC][1] is an OS level virtualization tool utilizing cgroups and namespaces for resource isolation. Let's put it all together, setting 'u' to 65534 which is user "nobody" and group "nogroup" on Debian: + **/proc** ļϵͳû ID IDֵΪuȻ **/bin/bash** [LXC][1] Dzϵͳ⻯ߣʹ cgroups ռԴķ롣ǰдһ𣬱uֵΪ65534 Debian ϵͳУǡnobody͡nogroup #define _GNU_SOURCE #include @@ -90,7 +89,7 @@ Here, we mount a **/proc** filesystem, and then set the uid (User ID) and gid (G return ret; } -To execute the code produces the following: +ִĴ룺 root@w:~/pen/tmp# gcc -O -o ns.c -Wall -Werror -ansi -c89 ns.c root@w:~/pen/tmp# ./ns From 226fcd1cc5d0e12c554535e27988c3c1d8a5a6cf Mon Sep 17 00:00:00 2001 From: tinyeyeser Date: Wed, 28 Jan 2015 08:54:35 +0800 Subject: [PATCH 109/725] =?UTF-8?q?=E5=B7=B2=E7=BF=BB=E8=AF=91=20by?= =?UTF-8?q?=E5=B0=8F=E7=9C=BC=E5=84=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: tinyeyeser --- ...illion Users Stolen from Dating Website.md | 52 ------------------- ...illion Users Stolen from Dating Website.md | 51 ++++++++++++++++++ 2 files changed, 51 insertions(+), 52 deletions(-) delete mode 100644 sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md create mode 100644 translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md diff --git a/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md deleted file mode 100644 index 2a1dea8478..0000000000 --- a/sources/news/20150126 Data of 20 Million Users Stolen from Dating Website.md +++ /dev/null @@ -1,52 +0,0 @@ -翻译中 by小眼儿 - -Data of 20 Million Users Stolen from Dating Website ----------- -*Info includes Gmail, Hotmail and Yahoo emails* - -![Details could belong to users of online dating website Topface](http://i1-news.softpedia-static.com/images/news2/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179-2.jpg) - -#A database containing details of more than 20 million users of an online dating website has been allegedly stolen by a hacker. - -It is unclear at the moment if the information has been dumped into the public domain, but someone using the online alias “Mastermind” claims to have it, according to a post on an undisclosed paste site. - -#List contains hundreds of domains from all over the world - -The individual claims that the details are 100% valid and Daniel Ingevaldson, Chief Technology Officer at Easy Solutions, said in a blog post on Sunday that the list included email addresses from Hotmail, Yahoo and Gmail. - -Easy Solutions is a US-based company that provides security products for detecting and preventing cyber fraud across different computer platforms. - -According to Ingevaldson, the list contains over 7 million credentials from Hotmail, 2.5 million from Yahoo, and 2.2 million from Gmail.com. - -It is unclear if “credentials” refers to usernames and passwords that can be used to access the email accounts or the account of the dating website. Also, it is unknown whether the database stored the passwords in a secure manner or if they were available in plain text. - -An email address is often used as the username for an online service, to which the user can log in with a unique password. However, password recycling is a common practice for many users and the same string could be used to sign in to multiple online accounts. - -“The list appears to be international in nature with hundreds of domains listed from all over the world. Hackers and fraudsters are likely to leverage stolen credentials to commit fraud not on the original hacked site, but to use them to exploit password re-use to automatically scan and compromise other sites including banking, travel and email providers,” [says Ingevaldson](1). - -#More information is expected to emerge - -According to our sources, the affected website is Topface, an online dating location that touts over 90 million users. The business is headquartered in Sankt Petersburg, Russia, and it advertises that more than 50% of its users are from outside Russia. - -We contacted Topface to confirm or deny whether they suffered a breach recently that could have resulted in exposing a database this big; we are yet to receive an answer from the company. - -The credentials could have been stolen without perpetrators needing to gain unauthorized access, as Easy Solutions draws attention to the fact that email phishing may also have been used to get the info straight from the clients of the website. - -Easy Solutions could not be contacted through the online form available on its website, but we tried alternative communication and are currently waiting for more details. - --------------------------------------------------------------------------------- - -via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml - -本文发布时间:26 Jan 2015, 10:20 GMT - -作者:[Ionut Ilascu][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/ionut-ilascu -[1]:http://newblog.easysol.net/dating-site-breached/ diff --git a/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md new file mode 100644 index 0000000000..14c5249dc3 --- /dev/null +++ b/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md @@ -0,0 +1,51 @@ +2000万用户网站数据遭泄露 +---------- +*泄露数据包括Gmail、Hotmail以及Yahoo邮箱* + +![泄露的数据很可能来自于线数据网站Topface](http://i1-news.softpedia-static.com/images/news2/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179-2.jpg) + +#一名黑客非法窃取了在线数据网站Topface一个包含2000万用户资料的数据库。 + +目前并不清楚这些数据是否已经公开,但是根据某些未公开页面的消息说,某个使用在线代理工具“Mastermind”的人声称掌握着这些数据。 + +#泄露数据列表涵盖了全世界数百个域名 + +此人号称泄露数据的内容100%可用,而Easy Solutions的CTO,Daniel Ingevaldson 周日在一篇博客中说道,泄露数据包括Hotmail、Yahoo和Gmail等邮箱地址。 + +Easy Solutions是一家位于美国的公司,提供多个不同平台的网络检测与安全防护产品。 + +据Ingevaldson所说,泄露的数据中,700万来自于Hotmail,250万来自于Yahoo,220万来自于Gmail.com。 + +我们并不清楚这些数据是可以直接登录邮箱账户的用户名密码,还是只是登录数据网站的账户。另外,也不清楚这些数据在数据库中是加密状态还是明文存在的。 + +邮箱地址常常被用于在线网站的登录用户名,用户可以凭借唯一密码进行登录。然而重复使用同一个密码是许多用户的常用作法,同一个密码可以登录许多在线账户。 + + +[Ingevaldson 还说](1):“看起来,这些数据事实上涵盖了全世界数百个域名。除了原始的被黑的网页,黑客和不法分子很可能利用窃取的帐密进行暴库、自动扫描、危害包括银行业、旅游业以及email提供商在内的多个网站。” + +#预计将披露更多信息 + +据我们的多个消息源爆料,数据的泄露源就是Topface,一个包含9000万用户的在线数据网站。其总部位于俄罗斯圣彼得堡,超过50%的用户来自于俄罗斯以外的国家。 + +我们联系了Topface,向他们求证最近是否遭受了可能导致如此大量数据泄露的网络攻击;但目前我们仍未收到该公司的回复。 + +攻击者可能无需获得非法访问权限就窃取了这些数据,Easy Solutions 推测攻击者很可能针对网站客户端使用钓鱼邮件直接获取到了用户数据。 + +我们无法通过Easy Solutions的在线网站联系到它们,但我们已经尝试通过其他交互方式联系了它们,目前正在等待更多信息的披露。 + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml + +本文发布时间:26 Jan 2015, 10:20 GMT + +作者:[Ionut Ilascu][a] + +译者:[Mr小眼儿](https://github.com/tinyeyeser) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/ionut-ilascu +[1]:http://newblog.easysol.net/dating-site-breached/ \ No newline at end of file From 4e879557df2f47a5cd685843dbc08ce46e3cf458 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 28 Jan 2015 10:08:36 +0800 Subject: [PATCH 110/725] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50126 Data of 20 Million Users Stolen from Dating Website.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md index 14c5249dc3..b4de21c0eb 100644 --- a/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md +++ b/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md @@ -48,4 +48,4 @@ via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-W 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://news.softpedia.com/editors/browse/ionut-ilascu -[1]:http://newblog.easysol.net/dating-site-breached/ \ No newline at end of file +[1]:http://newblog.easysol.net/dating-site-breached/ From 5f06c4ea2555f5dfa23de3910d6e9546b6f249c1 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 28 Jan 2015 10:26:39 +0800 Subject: [PATCH 111/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...illion Users Stolen from Dating Website.md | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md index b4de21c0eb..2fd4acc06d 100644 --- a/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md +++ b/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md @@ -1,37 +1,36 @@ -2000万用户网站数据遭泄露 +交友网站的2000万用户数据遭泄露 ---------- *泄露数据包括Gmail、Hotmail以及Yahoo邮箱* -![泄露的数据很可能来自于线数据网站Topface](http://i1-news.softpedia-static.com/images/news2/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179-2.jpg) +![泄露的数据很可能来自于在线交友网站Topface](http://i1-news.softpedia-static.com/images/news2/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179-2.jpg) -#一名黑客非法窃取了在线数据网站Topface一个包含2000万用户资料的数据库。 +#一名黑客非法窃取了在线交友网站Topface一个包含2000万用户资料的数据库。 -目前并不清楚这些数据是否已经公开,但是根据某些未公开页面的消息说,某个使用在线代理工具“Mastermind”的人声称掌握着这些数据。 +目前并不清楚这些数据是否已经公开,但是根据某些未公开页面的消息说,某个网名为“Mastermind”的人声称掌握着这些数据。 #泄露数据列表涵盖了全世界数百个域名 -此人号称泄露数据的内容100%可用,而Easy Solutions的CTO,Daniel Ingevaldson 周日在一篇博客中说道,泄露数据包括Hotmail、Yahoo和Gmail等邮箱地址。 +此人号称泄露数据的内容100%真实有效,而Easy Solutions的CTO,Daniel Ingevaldson 周日在一篇博客中说道,泄露数据包括Hotmail、Yahoo和Gmail等邮箱地址。 Easy Solutions是一家位于美国的公司,提供多个不同平台的网络检测与安全防护产品。 据Ingevaldson所说,泄露的数据中,700万来自于Hotmail,250万来自于Yahoo,220万来自于Gmail.com。 -我们并不清楚这些数据是可以直接登录邮箱账户的用户名密码,还是只是登录数据网站的账户。另外,也不清楚这些数据在数据库中是加密状态还是明文存在的。 +我们并不清楚这些数据是可以直接登录邮箱账户的用户名和密码,还是登录交友网站的账户。另外,也不清楚这些数据在数据库中是加密状态还是明文存在的。 邮箱地址常常被用于在线网站的登录用户名,用户可以凭借唯一密码进行登录。然而重复使用同一个密码是许多用户的常用作法,同一个密码可以登录许多在线账户。 - -[Ingevaldson 还说](1):“看起来,这些数据事实上涵盖了全世界数百个域名。除了原始的被黑的网页,黑客和不法分子很可能利用窃取的帐密进行暴库、自动扫描、危害包括银行业、旅游业以及email提供商在内的多个网站。” +[Ingevaldson 还说](1):“看起来,这些数据事实上涵盖了全世界数百个域名。除了原始被黑的网页,黑客和不法分子很可能利用窃取的帐密进行暴库、自动扫描、危害包括银行业、旅游业以及email提供商在内的多个网站。” #预计将披露更多信息 -据我们的多个消息源爆料,数据的泄露源就是Topface,一个包含9000万用户的在线数据网站。其总部位于俄罗斯圣彼得堡,超过50%的用户来自于俄罗斯以外的国家。 +据我们的多个消息源爆料,数据的泄露源就是Topface,一个包含9000万用户的在线交友网站。其总部位于俄罗斯圣彼得堡,超过50%的用户来自于俄罗斯以外的国家。 我们联系了Topface,向他们求证最近是否遭受了可能导致如此大量数据泄露的网络攻击;但目前我们仍未收到该公司的回复。 攻击者可能无需获得非法访问权限就窃取了这些数据,Easy Solutions 推测攻击者很可能针对网站客户端使用钓鱼邮件直接获取到了用户数据。 -我们无法通过Easy Solutions的在线网站联系到它们,但我们已经尝试通过其他交互方式联系了它们,目前正在等待更多信息的披露。 +我们无法通过Easy Solutions的在线网站联系到他们,但我们已经尝试了其他交互通讯方式,目前正在等待更多信息的披露。 -------------------------------------------------------------------------------- @@ -43,7 +42,7 @@ via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-W 译者:[Mr小眼儿](https://github.com/tinyeyeser) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From dca9140beb63c885315375c433d3d3f055664b27 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 28 Jan 2015 10:43:12 +0800 Subject: [PATCH 112/725] Finish the translation by ZTinoZ --- ...0 Linux Commands Interview Questions & Answers.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rename {sources => translated}/talk/20141223 20 Linux Commands Interview Questions & Answers.md (89%) diff --git a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/translated/talk/20141223 20 Linux Commands Interview Questions & Answers.md similarity index 89% rename from sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md rename to translated/talk/20141223 20 Linux Commands Interview Questions & Answers.md index 7e73344c2d..40d5019c52 100644 --- a/sources/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/translated/talk/20141223 20 Linux Commands Interview Questions & Answers.md @@ -36,7 +36,7 @@ # diff -Naur old_file new_file > diff_file -旧文件和新文件要么都是单个的文件要么都是包含文件的目录,r选项支持目录树递归。 +旧文件和新文件要么都是单个的文件要么都是包含文件的目录,-r参数支持目录树递归。 一旦diff文件创建好,我们就能在旧的文件上打上补丁,把它变成新文件: @@ -76,7 +76,7 @@ **问:13 如何在/var目录下找出90天之内未被访问过的文件?** -答: # find /var \! -atime -90 +答: # find /var \\! -atime -90 **问:14 在整个目录树下查找核心文件,如发现则删除它们且不提示确认信息。** @@ -102,13 +102,13 @@ 答: 这条ll命令会显示这些文件的文件名和它们的拥有者。 -**问:19 What is the use of at command in linux ?** +**问:19 :Linux中的at命令有什么用?** -答: The at command is used to schedule a one-time execution of a program in the future. All submitted jobs are spooled in the /var/spool/at directory and executed by the atd daemon when the scheduled time arrives. +答: at命令用来安排一个程序在未来的做一次一次性执行。所有提交的任务都被放在 /var/spool/at 目录下并且到了执行时间的时候通过atd守护进程来执行。 -**问:20 What is the role of lspci command in linux ?** +**问:20 linux中lspci命令的作用是什么?** -答: The lspci command displays information about PCI buses and the devices attached to your system. Specify -v, -vv, or -vvv for detailed output. With the -m option, the command produces more legible output. +答: lspci命令用来显示你的系统上PCI总线和附加设备的信息。指定-v,-vv或-vvv来获取详细输出,加上-r参数的话,命令的输出则会更具有易读性。 -------------------------------------------------------------------------------- From 39f39dccb7f1d82fb7126b5ec90c47ce2a707fc9 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 11:09:24 +0800 Subject: [PATCH 113/725] Update 20150127 Install Jetty Web Server On CentOS 7.md --- sources/tech/20150127 Install Jetty Web Server On CentOS 7.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md b/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md index 0cfb868498..d7c4b41a24 100644 --- a/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md +++ b/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md @@ -1,3 +1,5 @@ +Translating---geekpi + Install Jetty Web Server On CentOS 7 ================================================================================ [Jetty][1] is a pure Java-based HTTP **(Web) server** and Java Servlet container. Jetty is now often used for machine to machine communications, usually within larger software frameworks. But the other Web Servers are usually associated with serving documents to humans. Jetty is developed as a free and open source project as part of the Eclipse Foundation. The web server is used in products such as Apache ActiveMQ, Alfresco, Apache Geronimo, Apache Maven, Apache Spark, Google App Engine, Eclipse, FUSE, Twitter’s Streaming API and Zimbra. @@ -75,4 +77,4 @@ via: http://www.unixmen.com/install-jetty-web-server-centos-7/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.unixmen.com/author/jijo/ -[1]:http://eclipse.org/jetty/ \ No newline at end of file +[1]:http://eclipse.org/jetty/ From 42ec379de6e7182f8e315c968adeccbc1fe84183 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 28 Jan 2015 11:21:02 +0800 Subject: [PATCH 114/725] =?UTF-8?q?20150128-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...A New Web Browser Built for Power Users.md | 60 ++++++++ ...A Package Is Installed Or Not In Ubuntu.md | 137 ++++++++++++++++++ 2 files changed, 197 insertions(+) create mode 100644 sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md create mode 100644 sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md diff --git a/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md new file mode 100644 index 0000000000..c55a5fabe7 --- /dev/null +++ b/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md @@ -0,0 +1,60 @@ +Meet Vivaldi — A New Web Browser Built for Power Users +================================================================================ +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) + +**A brand new web browser has arrived this week that aims to meet the needs of power users — and it’s already available for Linux.** + +Vivaldi is the name of this new browser and it has been launched as a tech preview (read: a beta without the responsibility) for 64-bit Linux machines, Windows and Mac. It is built — shock — on the tried-and-tested open-source frameworks of Chromium, Blink and Google’s open-source V8 JavaScript engine (among other projects). + +Does the world really want another browser? Vivaldi, the brain child of former Opera Software CEO Jon von Tetzchner, is less concerned about want and more about need. + +Vivaldi is being built with the sort of features that keyboard preferring tab addicts need. It is not being pitched at users who find Firefox perplexing or whose sole criticism of Chrome is that it moved the bookmarks button. + +That’s not tacky marketing spiel either. Despite the ‘technical preview’ badge it comes with, Vivaldi is already packed with features that demonstrate its power user slant. + +Plenty of folks feel left behind and underserved by the simplified, paired back offerings other software companies are producing. Vivaldi, even at this early juncture, looks well placed to succeed in winning them over. + +### Vivaldi Features ### + +A few of Vivaldi’s key features already present include: + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/quick.jpg) + +**Quick Commands** (Ctrl + Q) is an in-app HUD that lets you quickly filter through settings, options and features, be it opening a bookmark or hiding the status bar, using your keyboard. No clicks needed. + +**Tab Stacks** let you clean up your workspace by grouping separate tabs into one, and then using a keyboard command or the tab preview picker to switch between them. + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/tab-stacks.jpg) + +A collapsible **side panel** that houses extra features (just like old Opera) including a (not yet working) mail client, contacts, bookmarks browser and note taking section that lets you take and annotate screenshots. + +A bunch of other features are on offer too, including customizable keyboard shortcuts, a tabs bar that can be set on any edge of the browser (or hidden entirely), privacy options and a speed dial with folders. + +### Opera Mark II ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/vivaldi-settings-in-ubuntu-750x434.jpg) + +It’s not a leap to see Vivaldi as the true successor to Opera post-Presto (Opera’s old, proprietary rendering engine). Opera (which also pushed out a minor new update today) has split out many of its “power user” features as it chases a lighter, more manageable set of features. + +Vivaldi wants to pick up the baggage Opera has been so keen to offload. And while that might not help it grab marketshare it will see it grab the attention of power users, many of whom will no doubt already be using Linux. + +### Download ### + +Interested in taking it for a spin? You can. Vivaldi is available to download for Windows, Mac and 64-bit Linux distributions. On the latter you have a choice of Debian or RPM installer. + +Bear in mind that it’s not finished and that more features (including extensions, sync and more) are planned for future builds. + +- [Download Vivaldi Tech Preview for Linux][1] + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power-users + +作者:[Joey-Elijah Sneddon][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:https://vivaldi.com/#Download \ No newline at end of file diff --git a/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md new file mode 100644 index 0000000000..6b68f02b1e --- /dev/null +++ b/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md @@ -0,0 +1,137 @@ +Linux Basics: How To Check If A Package Is Installed Or Not In Ubuntu +================================================================================ +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/04/ubuntu-790x558.png) + +If you’re managing Debian or Ubuntu servers, probably, you may use **dpkg** or **apt-get** commands often. These two commands are used to install, remove, update packages. + +In this brief tutorial, let us see how to check if a package is installed or not in DEB based systems. + +To check whether a particular package for example firefox, is installed or not using command: + + dpkg -s firefox + +Sample output: + + Package: firefox + Status: install ok installed + Priority: optional + Section: web + Installed-Size: 93339 + Maintainer: Ubuntu Mozilla Team + Architecture: amd64 + Version: 35.0+build3-0ubuntu0.14.04.2 + Replaces: kubuntu-firefox-installer + Provides: gnome-www-browser, iceweasel, www-browser + Depends: lsb-release, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.17), libcairo2 (>= 1.2.4), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.78), libfontconfig1 (>= 2.9.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.0), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.14.0), libstartup-notification0 (>= 0.8), libstdc++6 (>= 4.6), libx11-6, libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxrender1, libxt6 + Recommends: xul-ext-ubufox, libcanberra0, libdbusmenu-glib4, libdbusmenu-gtk4 + Suggests: ttf-lyx + Conffiles: + /etc/firefox/syspref.js 09e457e65435a1a043521f2bd19cd2a1 + /etc/apport/blacklist.d/firefox ee63264f847e671832d42255912ce144 + /etc/apport/native-origins.d/firefox 7c26b75c7c2b715c89cc6d85338252a4 + /etc/apparmor.d/usr.bin.firefox f54f7a43361c7ecfa3874abca2f292cf + Description: Safe and easy web browser from Mozilla + Firefox delivers safe, easy web browsing. A familiar user interface, + enhanced security features including protection from online identity theft, + and integrated search let you get the most out of the web. + Xul-Appid: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} + +As you see in the above output, the firefox is installed. + +Also, you can do the same using **dpkg-query** command. This command displays the decent output, and ofcourse, you can wild cards too. + + dpkg-query -l firefox + +Sample output: + + Desired=Unknown/Install/Remove/Purge/Hold + | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend + |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) + ||/ Name Version Architecture Description + +++-====================================-=======================-=======================-============================================================================= + ii firefox 35.0+build3-0ubuntu0.14 amd64 Safe and easy web browser from Mozilla + +To list all installed package in your system, enter the following command + + dpkg --get-selections + +Sample output: + + abiword install + abiword-common install + accountsservice install + acl install + adduser install + alsa-base install + alsa-utils install + anacron install + app-install-data install + apparmor install + . + . + . + zeitgeist install + zeitgeist-core install + zeitgeist-datahub install + zenity install + zenity-common install + zip install + zlib1g:amd64 install + zlib1g:i386 install + +The above might be very long depending upon the number of packages you have installed on your system. + +You can also filter through **grep** to get results for the exact package you need. For example, I want to see which gcc packages are already installed on my system using **dpkg** command: + + dpkg --get-selections | grep gcc + +Sample output: + + gcc install + gcc-4.8 install + gcc-4.8-base:amd64 install + gcc-4.8-base:i386 install + gcc-4.9-base:amd64 install + gcc-4.9-base:i386 install + libgcc-4.8-dev:amd64 install + libgcc1:amd64 install + libgcc1:i386 install + +Additionally, you can find location of the files within a package using the parameter “**-L**”. + + dpkg -L gcc-4.8 + +Sample output: + + /. + /usr + /usr/share + /usr/share/doc + /usr/share/doc/gcc-4.8-base + /usr/share/doc/gcc-4.8-base/README.Bugs + /usr/share/doc/gcc-4.8-base/NEWS.html + /usr/share/doc/gcc-4.8-base/quadmath + /usr/share/doc/gcc-4.8-base/quadmath/changelog.gz + /usr/share/doc/gcc-4.8-base/gcc + . + . + . + /usr/bin/x86_64-linux-gnu-gcc-4.8 + /usr/bin/x86_64-linux-gnu-gcc-ar-4.8 + /usr/bin/x86_64-linux-gnu-gcov-4.8 + +That’s all for now. Hope this short tutorial will useful for you. + +Good day! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/linux-basics-check-package-installed-not-ubuntu/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ \ No newline at end of file From c4cf2f2a7d87d487d831f99fd7b0a48936947ae8 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 11:35:02 +0800 Subject: [PATCH 115/725] translated --- ...27 Install Jetty Web Server On CentOS 7.md | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md b/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md index d7c4b41a24..3cdb89ca76 100644 --- a/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md +++ b/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md @@ -1,48 +1,46 @@ -Translating---geekpi - -Install Jetty Web Server On CentOS 7 +在CentOS 7中安装Jetty服务器 ================================================================================ -[Jetty][1] is a pure Java-based HTTP **(Web) server** and Java Servlet container. Jetty is now often used for machine to machine communications, usually within larger software frameworks. But the other Web Servers are usually associated with serving documents to humans. Jetty is developed as a free and open source project as part of the Eclipse Foundation. The web server is used in products such as Apache ActiveMQ, Alfresco, Apache Geronimo, Apache Maven, Apache Spark, Google App Engine, Eclipse, FUSE, Twitter’s Streaming API and Zimbra. +[Jetty][1] 是一款纯Java的HTTP **(Web) 服务器**和Java Servlet容器。 通常在更大的网络框架中,Jetty经常用于设备间的通信。但是其他Web服务器通常给人类传递文件。Jetty是一个Eclipse基金中免费开源项目。这个Web服务器用于如Apache ActiveMQ、 Alfresco、 Apache Geronimo、 Apache Maven、 Apache Spark、Google App Engine、 Eclipse、 FUSE、 Twitter的 Streaming API 和 Zimbra中。 -This article explains ‘How to install jetty web server in your CentOS server’. +这篇文章会解释‘如何在CentOS服务器中安装Jetty服务器’。 -**First of all we have to install java JDK, By the following command:** +**首先我们要用下面的命令安装JDK:** yum -y install java-1.7.0-openjdk wget -**After the JDK installation, We will download the latest version of Jetty:** +**JDK安装之后,我们就可以下载最新版本的Jetty了:** wget http://download.eclipse.org/jetty/stable-9/dist/jetty-distribution-9.2.5.v20141112.tar.gz -**Extract and move the the downloaded package to /opt:** +**解压并移动下载的包到/opt:** tar zxvf jetty-distribution-9.2.5.v20141112.tar.gz -C /opt/ -**Rename the file name to jetty:** +**重命名文件夹名为jetty:** mv /opt/jetty-distribution-9.2.5.v20141112/ /opt/jetty -**Create a user called jetty:** +**创建一个jetty用户:** useradd -m jetty -**Change the ownership of jetty:** +**改变jetty文件夹的所属用户:** chown -R jetty:jetty /opt/jetty/ -**Make a Symlink jetty.sh to /etc/init.d directory to create a start up script file:** +**为jetty.sh创建一个软链接到 /etc/init.d directory 来创建一个启动脚本文件:** ln -s /opt/jetty/bin/jetty.sh /etc/init.d/jetty -**Add script:** +**添加脚本:** chkconfig --add jetty -**Make the jetty web server auto starts on system boot:** +**是jetty在系统启动时启动:** chkconfig --level 345 jetty on -**Open /etc/default/jetty in your favorite editor and replace port and listening address desired value:** +**使用你最喜欢的文本编辑器打开 /etc/default/jetty 并修改端口和监听地址:** vi /etc/default/jetty @@ -54,24 +52,24 @@ This article explains ‘How to install jetty web server in your CentOS server JETTY_HOST=50.116.24.78 JETTY_LOGS=/opt/jetty/logs/ -**We finished the installation, Now you have to start the jetty service.** +**我们完成了安装,现在可以启动jetty服务了 ** service jetty start -All done! +完成了! -Now you can access jetty web sever in **http://:8080** +现在你可以在 **http://:8080** 中访问了 -That’s it! +就是这样。 -Cheers!! +干杯!! -------------------------------------------------------------------------------- via: http://www.unixmen.com/install-jetty-web-server-centos-7/ 作者:[Jijo][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 8bd4ee503f0540e33a4887e85997e77c2c62b8d2 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 11:35:50 +0800 Subject: [PATCH 116/725] Rename sources/tech/20150127 Install Jetty Web Server On CentOS 7.md to sources/translated/20150127 Install Jetty Web Server On CentOS 7.md --- .../20150127 Install Jetty Web Server On CentOS 7.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sources/{tech => translated}/20150127 Install Jetty Web Server On CentOS 7.md (100%) diff --git a/sources/tech/20150127 Install Jetty Web Server On CentOS 7.md b/sources/translated/20150127 Install Jetty Web Server On CentOS 7.md similarity index 100% rename from sources/tech/20150127 Install Jetty Web Server On CentOS 7.md rename to sources/translated/20150127 Install Jetty Web Server On CentOS 7.md From de548c0edf1e8332f34d02ed866d1906552e5f13 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 28 Jan 2015 11:42:32 +0800 Subject: [PATCH 117/725] =?UTF-8?q?20150128-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... The top 10 rookie open source projects.md | 153 ++++++++++++++++++ ...s Point Signal Strength With wifi-linux.md | 86 ++++++++++ 2 files changed, 239 insertions(+) create mode 100644 sources/talk/20150128 The top 10 rookie open source projects.md create mode 100644 sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md diff --git a/sources/talk/20150128 The top 10 rookie open source projects.md b/sources/talk/20150128 The top 10 rookie open source projects.md new file mode 100644 index 0000000000..0dfcb07a48 --- /dev/null +++ b/sources/talk/20150128 The top 10 rookie open source projects.md @@ -0,0 +1,153 @@ +The top 10 rookie open source projects +================================================================================ +Black Duck presents its Open Source Rookies of the Year -- the 10 most exciting, active new projects germinated by the global open source community + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_01-100564902-orig.jpeg) + +### Open Source Rookies of the Year ### + +Each year sees the start of thousands of new open source projects. Only a handful gets real traction. Some projects gain momentum by building on existing, well-known technologies; others truly break new ground. Many projects are created to solve a simple development problem, while others begin with loftier intentions shared by like-minded developers around the world. + +Since 2009, the open source software logistics company Black Duck has identified the [Open Source Rookies of the Year][1], based on activity tracked by its [Open Hub][2] (formerly Ohloh) site. This year, we're delighted to present 10 winners and two honorable mentions for 2015, selected from thousands of open source projects. Using a weighted scoring system, points were awarded based on project activity, the pace of commits, and several other factors. + +Open source has become the industry's engine of innovation. This year, for example, growth in projects related to Docker containerization trumped every other rookie area -- and not coincidentally reflected the most exciting area of enterprise technology overall. At the very least, the projects described here provide a window on what the global open source developer community is thinking, which is fast becoming a good indicator of where we're headed. + +### 2015 Open Source Rookie of the Year: DebOps ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_02-100564903-orig.jpeg) + +[DebOps][3] is a collection of [Ansible][4] playbooks and roles, scalable from one container to an entire data center. Founder Maciej Delmanowski open-sourced DebOps to ensure his work outlived his current work environment and could grow in strength and depth from outside contributors. + +DebOps began at a small university in Poland that ran its own data center, where everything was configured by hand. Crashes sometimes led to days of downtime -- and Delmanowski realized that a configuration management system was needed. Starting with a Debian base, DebOps is a group of Ansible playbooks that configure an entire data infrastructure. The project has been implemented in many different working environments, and the founders plan to continue supporting and improving it as time goes on. + +### 2015 Open Source Rookie of the Year: Code Combat ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_03-100564904-gallery.idge.jpg) + +The traditional pen-and-paper way of learning falls short for technical subjects. Games, however, are all about engagement -- which is why the founders of [CodeCombat][5] went about creating a multiplayer programming game to teach people how to code. + +At its inception, CodeCombat was an idea for a startup, but the founders decided to create an open source project instead. The idea blossomed within the community, and the project gained contributors at a steady rate. A mere two months after its launch, the game was accepted into Google’s Summer of Code. The game reaches a broad audience and is available in 45 languages. CodeCombat hopes to become the standard for people who want to learn to code and have fun at the same time. + +### 2015 Open Source Rookie of the Year: Storj ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_04-100564905-gallery.idge.jpg) + +[Storj][6] is a peer-to-peer cloud storage network that implements end-to-end encryption, enabling users to transfer and share data without reliance on a third party. Based on bitcoin blockchain technology and peer-to-peer protocols, Storj provides secure, private, and encrypted cloud storage. + +Opponents of cloud-based data storage worry about cost efficiencies and vulnerability to attack. Intended to address both concerns, Storj is a private cloud storage marketplace where space is purchased and traded via Storjcoin X (SJCX). Files uploaded to Storj are shredded, encrypted, and stored across the community. File owners are the sole individuals who possess keys to the encrypted information. + +The proof of concept for this decentralized cloud storage marketplace was first presented at the Texas Bitcoin Conference Hackathon in 2014. After winning first place in the hackathon, the project founders and leaders used open forums, Reddit, bitcoin forums, and social media to grow an active community, now an essential part of the Storj decision-making process. + +### 2015 Open Source Rookie of the Year: Neovim ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_05-100564906-orig.jpg) + +Since its inception in 1991, Vim has been a beloved text editor adopted by millions of software developers. [Neovim][6] is the next generation. + +The software development ecosystem has experienced exponential growth and innovation over the past 23 years. Neovim founder Thiago de Arruda knew that Vim was lacking in modern-day features and development speed. Although determined to preserve the signature features of Vim, the community behind Neovim seeks to improve and evolve the technology of its favorite text editor. Crowdfunding initially enabled de Arruda to focus six uninterrupted months on launching this endeavor. He credits the Neovim community for supporting the project and for inspiring him to continue contributing. + +### 2015 Open Source Rookie of the Year: CockroachDB ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_06-100564907-orig.jpg) + +Former Googlers are bringing a big-company data solution to open source in the form of [CockroachDB][8], a scalable, geo-replicated, transactional data store. + +To maintain the terabytes of data transacted over its global online properties, Google developed Spanner. This powerful tool provides Google with scalability, survivability, and transactionality -- qualities that the team behind CockroachDB is serving up to the open source community. Like an actual cockroach, CockroachDB can survive without its head, tolerating the failure of any node. This open source project has a devoted community of experienced contributors, actively cultivated by the founders via social media, GitHub, networking, conferences, and meet-ups. + +### 2015 Open Source Rookie of the Year: Kubernetes ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_07-100564908-orig.jpg) + +In introducing containerized software development to the open source community, [Docker][9] has become the backbone of a strong, innovative set of tools and technologies. [Kubernetes][10], which Google introduced last June, is an open source container management tool used to accelerate development and simplify operations. + +Google has been using containers for years in its internal operations. At the summer 2014 DockerCon, the Internet giant open-sourced Kubernetes, which was developed to meet the needs of the exponentially growing Docker ecosystem. Through collaborations with other organizations and projects, such as Red Hat and CoreOS, Kubernetes project managers have grown their project to be the No. 1 downloaded tool on the Docker Hub. The Kubernetes team hopes to expand the project and grow the community, so software developers can spend less time managing infrastructure and more time building the apps they want. + +### 2015 Open Source Rookie of the Year: Open Bazaar ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_08-100564909-orig.jpg) + +[OpenBazaar][11] is a decentralized marketplace for trading with anyone using bitcoin. The proof of concept for OpenBazaar was born at a hackathon, where its founders combined BitTorent, bitcoin, and traditional financial server methodologies to create a censorship-resistant trading platform. The OpenBazaar team sought new members, and before long they were able to expand the OpenBazaar community immensely. The table stakes of OpenBazaar -- transparency and a common goal to revolutionize trade and commerce -- are helping founders and contributors work toward a real-world, uncontrolled, and decentralized marketplace. + +### 2015 Open Source Rookie of the Year: IPFS ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_09-100564910-orig.jpg) + +[IPFS (InterPlanetary File System)][12] is a global, versioned, peer-to-peer file system.It synthesizes many of the ideas behind Git, BitTorrent, and HTTP to bring a new data and data structure transport protocol to the open Web. + +Open source is known for developing simple solutions to complex problems that result in many innovations, but these powerful projects represent only one slice of the open source community. IFPS belong to a more radical group whose proof of concept seems daring, outrageous, and even unattainable -- in this case, a peer-to-peer distributed file system that seeks to connect all computing devices. This possible HTTP replacement maintains a community through multiple mediums, including the Git community and an IRC channel that has more than 100 current contributors. This “crazy” idea will be available for alpha testing in 2015. + +### 2015 Open Source Rookie of the Year: cAdvisor ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_10-100564911-orig.jpg) + +[cAdvisor (Container Advisor)][13] is a daemon that collects, aggregates, processes, and exports information about running containers, providing container users with an understanding of resource usage and performance characteristics. For each container, cAdvisor keeps resource isolation parameters, historical resource usage, histograms of complete historical resource usage, and network statistics. This data is exported by container and across machines. + +cAdvisor can run on most Linux distros and supports many container types, including Docker. It has become the de facto monitoring agent for containers, has been integrated into many systems, and is one of the most downloaded images on the Docker Hub. The team hopes to grow cAdvisor to understand application performance more deeply and to integrate this information into clusterwide systems. + +### 2015 Open Source Rookie of the Year: Terraform ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_11-100564912-orig.jpg) + +[Terraform][14] provides a common configuration to launch infrastructure, from physical and virtual servers to email and DNS providers. The idea is to encompass everything from custom in-house solutions to services offered by public cloud platforms. Once launched, Terraform enables ops to change infrastructure safely and efficiently as the configuration evolves. + +Working at a devops company, Terraform.io's founders identified a pain point in codifying the knowledge required to build a complete data center, from plugged-in servers to a fully networked and functional data center. Infrastructure is described using a high-level configuration syntax, which allows a blueprint of your data center to be versioned and treated as you would any other code. Sponsorship from the well-respected open source company HashiCorp helped launch the project. + +### Honorable mention: Docker Fig ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_12-100564913-orig.jpg) + +[Fig][15] provides fast, isolated development environments using [Docker][16]. It moves the configuration required to orchestrate Docker into a simple fig.yml file. It handles all the work of building and running containers and forwarding their ports, as well as sharing volumes and linking them. + +Orchard formed Fig last year to create a new system of tools to make Docker work. It was developed as a way of setting up development environments with Docker, enabling users to define the exact environment for their apps, while also running databases and caches inside Docker. Fig solved a major pain point for developers. Docker fully supports this open source project and [recently purchased Orchard][17] to expand the reach of Fig. + +### Honorable mention: Drone ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_13-100564916-orig.jpg) + +[Drone][18] is a Continuous Integration platform built on Docker and [written in Go][19]. The Drone project grew out of frustration with existing available technologies and processes for setting up development environments. + +Drone provides a simple approach to automated testing and continuous delivery: Simply pick a Docker image tailored to your needs, connect GitHub, and commit. Drone uses Docker containers to provision isolated testing environments, giving every project complete control over its stack without the burden of traditional server administration. The community behind Drone is 100 contributors strong and hopes to bring this project to the enterprise and to mobile app development. + +### Open source rookies ### + +![](http://images.techhive.com/images/article/2015/01/open_source_rookies_14-100564941-orig.jpg) + +- [Open Source Rookies of the 2014 Year][20] +- [InfoWorld's 2015 Technology of the Year Award winners][21] +- [Bossies: The Best of Open Source Software Awards][22] +- [15 essential open source tools for Windows admins][23] + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2875439/open-source-software/the-top-10-rookie-open-source-projects.html + +作者:[Black Duck Software][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Black-Duck-Software/ +[1]:https://www.blackducksoftware.com/open-source-rookies +[2]:https://www.openhub.net/ +[3]:https://github.com/debops/debops +[4]:http://www.infoworld.com/article/2612397/data-center/review--ansible-orchestration-is-a-veteran-unix-admin-s-dream.html +[5]:https://codecombat.com/ +[6]:http://storj.io/ +[7]:http://neovim.org/ +[8]:https://github.com/cockroachdb/cockroach +[9]:http://www.infoworld.com/resources/16373/application-virtualization/the-beginners-guide-to-docker +[10]:http://kubernetes.io/ +[11]:https://openbazaar.org/ +[12]:http://ipfs.io/ +[13]:https://github.com/google/cadvisor +[14]:https://www.terraform.io/ +[15]:http://www.fig.sh/ +[16]:http://www.infoworld.com/resources/16373/application-virtualization/the-beginners-guide-to-docker +[17]:http://www.infoworld.com/article/2608546/application-virtualization/docker-acquires-orchard-in-a-sign-of-rising-ambitions.html +[18]:https://drone.io/ +[19]:http://www.infoworld.com/article/2683845/google-go/164121-Fast-guide-to-Go-programming.html +[20]:https://www.blackducksoftware.com/open-source-rookies +[21]:http://www.infoworld.com/article/2871935/application-development/infoworlds-2015-technology-of-the-year-award-winners.html +[22]:http://www.infoworld.com/article/2688104/open-source-software/article.html +[23]:http://www.infoworld.com/article/2854954/microsoft-windows/15-essential-open-source-tools-for-windows-admins.html \ No newline at end of file diff --git a/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md new file mode 100644 index 0000000000..d652b15d8c --- /dev/null +++ b/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md @@ -0,0 +1,86 @@ +How To Monitor Access Point Signal Strength With wifi-linux +================================================================================ +As a python geek I love exploring new python tools on github that target the linux users. Today I discovered a simple application written in python programming language that can be used to monitor access point signal strength. + +I have been experimenting for about two hours with **wifi-linux** and it works great but I would like to see some unittests in the near future from the author as the command **plot** is not working on my machine and is also causing some errors. + +### What is wifi-linux ### + +According to the official readme.md file on author's github account wifi-linux is a very simple python script which collects RSSI information about wifi access points around you and draws graphics showing RSSI activity. + +The author states that the program also draws RSSI activity graphic and this can be generated with the command plot but unfortunetly it is not working for me. wifi-linux supports other commands such as **bp** to add a breakpoint, **print** to print some statistics and **start changer**. + +The wifi-linux application has the folowing dependencies: + +- dbus-python +- gnuplot-py + +So first we have to install all the package dependencies for our project in order to run it in our linux machine. + +### Install pakages required by wifi-linux ### + +I tried to install python-dbus by using the pip tool which is used to manage python packages but it did not work and the reason for this is that pip looks for setup.py, which dbus-python doesn't have. So the following command is not going to work. + + pip install dbus-python + +And to make sure it does not work give it a try. It is a very high probability that you will get the following error displayed on your console. + + IOError: [Errno 2] No such file or directory: '/tmp/pip_build_oltjano/dbus-python/setup.py' + +How did I manage to solve this problem? It is very simple. I installed the the system package for the Python DBUS bindings using the following command. + + sudo apt-get install python-dbus + +The above command will work only in machines that make use of the apt-get package manager such as Debian and Ubuntu. + +Then the second dependency we have to take care is the gnuplot-py. Download it, extract using the tar utility and then run setup.py install to install the python package. + +First step is to download gnuplot-py. + + wget http://prdownloads.sourceforge.net/gnuplot-py/gnuplot-py-1.8.tar.gz + +Then use the tar utility to extract it. + + tar xvf gnuplot-py-1.8.tar.gz + +Then use the cd command to change directory. + + cd gnuplot-py-1.8 + +Once there then run the following command to install the package gunplot-py on your system. + + sudo setup.py install + +Once the installation is finished you are ready to run the wifi-linux on your machine. Just download it and use the following command to run the script. + +Download wifi-linux on your local machine by using the following command. + + wget https://github.com/dixel/wifi-linux/archive/master.zip + +Extract the master.zip archive and then use the following command to run the python script list_rsssi.py + + python list_rssi.py + +The following screenshot shows wifi-linux in action. + +![wifi-linux to monitor wifi signal strength](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux.png) + +Then the command **bp** is executed to add a breakpoint like shown below. + +![the bp command in wifi-linux](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux2.png) + +The command **print** can be used to display stats on the console of your machine. An example of its usage is shown below. + +![the print command](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux3.png) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi-linux/ + +作者:[Oltjano Terpollari][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/oltjano/ \ No newline at end of file From 3d2f5499edb81cdf61c7415246495c0458f9a577 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 12:19:38 +0800 Subject: [PATCH 118/725] Rename sources/translated/20150127 Install Jetty Web Server On CentOS 7.md to translated/tech/20150127 Install Jetty Web Server On CentOS 7.md --- .../tech}/20150127 Install Jetty Web Server On CentOS 7.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources/translated => translated/tech}/20150127 Install Jetty Web Server On CentOS 7.md (100%) diff --git a/sources/translated/20150127 Install Jetty Web Server On CentOS 7.md b/translated/tech/20150127 Install Jetty Web Server On CentOS 7.md similarity index 100% rename from sources/translated/20150127 Install Jetty Web Server On CentOS 7.md rename to translated/tech/20150127 Install Jetty Web Server On CentOS 7.md From d41d49ab7e0d1a0bfb023e36b53d5cbc034e84b4 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 28 Jan 2015 12:49:31 +0800 Subject: [PATCH 119/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0150126 Data of 20 Million Users Stolen from Dating Website.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/news => published}/20150126 Data of 20 Million Users Stolen from Dating Website.md (100%) diff --git a/translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md b/published/20150126 Data of 20 Million Users Stolen from Dating Website.md similarity index 100% rename from translated/news/20150126 Data of 20 Million Users Stolen from Dating Website.md rename to published/20150126 Data of 20 Million Users Stolen from Dating Website.md From a43c57cda8eec9586de5644ee58b58ec1013e23b Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 27 Jan 2015 23:57:15 -0500 Subject: [PATCH 120/725] add a file for PR#2296 --- ...nstall ixgbe driver on Ubuntu or Debian.md | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md new file mode 100644 index 0000000000..aab015201e --- /dev/null +++ b/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md @@ -0,0 +1,144 @@ +Linux 有问必答: 如何在Ubuntu或者Debian中下载和安装ixgbe驱动 +================================================================================ +> **提问**: 我想为我的Intel 10G网卡下载安装最新的ixgbe。我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? + +Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现代的Linux发版已经将ixgbe作为一个可加载模块。然而,有些情况你不想要你机器上的已经编译和安装的ixgbe驱动。比如,你想要体验ixbge驱动的最新特性。同样,自带内核中的ixgbe中的一个默认问题是不允许你自定义旭东内核参数。如果你想要完全自动一ixgbe驱动(比如 RSS、多队列、中断阈值等等),你需要手动从源码编译ixgbe驱动。 + +这里是如何在Ubuntu、Debian或者它们的衍生版中下载安装ixgbe驱动。 + +### 第一步: 安装前提 ### + +安装之前,需要安装匹配的内核头文件和开发工具包。 + + $ sudo apt-get install linux-headers-$(uname -r) + $ sudo apt-get install gcc make + +### 第二步: 编译Ixgbe驱动 ### + +从[最新的ixgbe驱动][1]中下载源码。 + + $ wget http://sourceforge.net/projects/e1000/files/ixgbe%20stable/3.23.2/ixgbe-3.23.2.tar.gz + +如下编译ixgbe驱动。 + + $ tar xvfvz ixgbe-3.23.2.tar.gz + $ cd ixgbe-3.23.2/src + $ make + +### 第三步: 检查Ixgbe驱动 ### + +编译之后,你会看到在ixgbe-3.23.2/src目录下创建了**ixgbe.ko**。这就是会加载到内核之中的ixgbe驱动。 + +用modinfo命令检查内核模块的信息。注意你需要指定模块的绝对路径(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。输出中会显示ixgbe内核的版本。 + + $ modinfo ./ixgbe.ko + +---------- + + filename: /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko + version: 3.23.2 + license: GPL + description: Intel(R) 10 Gigabit PCI Express Network Driver + author: Intel Corporation, + srcversion: 2ADA5E537923E983FA9DAE2 + alias: pci:v00008086d00001560sv*sd*bc*sc*i* + alias: pci:v00008086d00001558sv*sd*bc*sc*i* + alias: pci:v00008086d0000154Asv*sd*bc*sc*i* + alias: pci:v00008086d00001557sv*sd*bc*sc*i* + alias: pci:v00008086d0000154Fsv*sd*bc*sc*i* + alias: pci:v00008086d0000154Dsv*sd*bc*sc*i* + alias: pci:v00008086d00001528sv*sd*bc*sc*i* + alias: pci:v00008086d000010F8sv*sd*bc*sc*i* + alias: pci:v00008086d0000151Csv*sd*bc*sc*i* + alias: pci:v00008086d00001529sv*sd*bc*sc*i* + alias: pci:v00008086d0000152Asv*sd*bc*sc*i* + alias: pci:v00008086d000010F9sv*sd*bc*sc*i* + alias: pci:v00008086d00001514sv*sd*bc*sc*i* + alias: pci:v00008086d00001507sv*sd*bc*sc*i* + alias: pci:v00008086d000010FBsv*sd*bc*sc*i* + alias: pci:v00008086d00001517sv*sd*bc*sc*i* + alias: pci:v00008086d000010FCsv*sd*bc*sc*i* + alias: pci:v00008086d000010F7sv*sd*bc*sc*i* + alias: pci:v00008086d00001508sv*sd*bc*sc*i* + alias: pci:v00008086d000010DBsv*sd*bc*sc*i* + alias: pci:v00008086d000010F4sv*sd*bc*sc*i* + alias: pci:v00008086d000010E1sv*sd*bc*sc*i* + alias: pci:v00008086d000010F1sv*sd*bc*sc*i* + alias: pci:v00008086d000010ECsv*sd*bc*sc*i* + alias: pci:v00008086d000010DDsv*sd*bc*sc*i* + alias: pci:v00008086d0000150Bsv*sd*bc*sc*i* + alias: pci:v00008086d000010C8sv*sd*bc*sc*i* + alias: pci:v00008086d000010C7sv*sd*bc*sc*i* + alias: pci:v00008086d000010C6sv*sd*bc*sc*i* + alias: pci:v00008086d000010B6sv*sd*bc*sc*i* + depends: ptp,dca + vermagic: 3.11.0-19-generic SMP mod_unload modversions + parm: InterruptType:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default IntMode (deprecated) (array of int) + parm: IntMode:Change Interrupt Mode (0=Legacy, 1=MSI, 2=MSI-X), default 2 (array of int) + parm: MQ:Disable or enable Multiple Queues, default 1 (array of int) + parm: DCA:Disable or enable Direct Cache Access, 0=disabled, 1=descriptor only, 2=descriptor and data (array of int) + parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) + parm: VMDQ:Number of Virtual Machine Device Queues: 0/1 = disable, 2-16 enable (default=8) (array of int) + parm: max_vfs:Number of Virtual Functions: 0 = disable (default), 1-63 = enable this many VFs (array of int) + parm: VEPA:VEPA Bridge Mode: 0 = VEB (default), 1 = VEPA (array of int) + parm: InterruptThrottleRate:Maximum interrupts per second, per vector, (0,1,956-488281), default 1 (array of int) + parm: LLIPort:Low Latency Interrupt TCP Port (0-65535) (array of int) + parm: LLIPush:Low Latency Interrupt on TCP Push flag (0,1) (array of int) + parm: LLISize:Low Latency Interrupt on Packet Size (0-1500) (array of int) + parm: LLIEType:Low Latency Interrupt Ethernet Protocol Type (array of int) + parm: LLIVLANP:Low Latency Interrupt on VLAN priority threshold (array of int) + parm: FdirPballoc:Flow Director packet buffer allocation level: + 1 = 8k hash filters or 2k perfect filters + 2 = 16k hash filters or 4k perfect filters + 3 = 32k hash filters or 8k perfect filters (array of int) + parm: AtrSampleRate:Software ATR Tx packet sample rate (array of int) + parm: FCoE:Disable or enable FCoE Offload, default 1 (array of int) + parm: LRO:Large Receive Offload (0,1), default 1 = on (array of int) + parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599 based adapters, default 0 = Disable (array of int) + +### 第四步: 测试Ixgbe驱动 ### + +在测试新的模块之前,如果你内核中已存在旧版本ixgbe模块的话你需要先移除它。 + + $ sudo rmmod ixgbe + +接着使用insmod命令插入新编译的ixgbe模块。确保指定一个模块的绝对路径。 + + $ sudo insmod ./ixgbe.ko + +如果上面的命令成功运行,就不会显示任何的信息。 + +如果你需要,你可以尝试加入额外的参数。比如,设置RSS的队列数量为16: + + $ sudo insmod ./ixgbe.ko RSS=16 + +检查**/var/log/kern.log**来查看ixgbe驱动是否成功激活。查看日志中的“Intel(R) 10 Gigabit PCI Express Network Driver”。ixgbe的版本信息应该和之前的modinfo的显示应该相同。 + + Sep 18 14:48:52 spongebob kernel: [684717.906254] Intel(R) 10 Gigabit PCI Express Network Driver - version 3.22.3 + +![](https://farm8.staticflickr.com/7583/16056721867_f06e152076_c.jpg) + +### 第五步: 安装Ixgbe驱动 ### + +一旦你验证新的ixgbe驱动已经成功家在,最后一步是在你的系统中安装驱动。 + + $ sudo make install + +**ixgbe.ko** 接着会安装在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。 + +这一步起,你可以用下面的modprobe命令加载ixgbe驱动了。注意你不必再指定绝对路径。 + + $ sudo modprobe ixgbe + +如果你希望在启动时家在ixgbe驱动,你可以在/etc/modules的最后加入“ixgbe”。 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/download-install-ixgbe-driver-ubuntu-debian.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://sourceforge.net/projects/e1000/files/ixgbe%20stable/ From e3b73270a102d2fdbadc3e12b4ba34c06d28f593 Mon Sep 17 00:00:00 2001 From: bazz2 Date: Wed, 28 Jan 2015 13:56:16 +0800 Subject: [PATCH 121/725] [translated by bazz2]Linux Namespace --- translated/tech/20141204 Linux Namespaces.md | 38 ++++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/translated/tech/20141204 Linux Namespaces.md b/translated/tech/20141204 Linux Namespaces.md index 4d81eddcb9..aae091f29c 100644 --- a/translated/tech/20141204 Linux Namespaces.md +++ b/translated/tech/20141204 Linux Namespaces.md @@ -101,18 +101,18 @@ Linux nobody 5 0.0 0.0 2784 1064 pts/1 R+ 21:21 0:00 ps auxw nobody@w:~/pen/tmp$ -Notice that the UID and GID are set to that of nobody and nogroup. Specifically notice that the full ps output shows only two running processes and that their PIDs are 1 and 5 respectively. Now, let's move on to using ip netns to work with network namespaces. First, let's confirm that no namespaces exist currently: +עĽUID GID ó nobody nogroup ˣر ps ֻ̣ǵ ID ֱ15LCTTעĽ CLONE_NEWPID ʱᵽĹܣ߳ڵռڣ ID Ϊ1ӳ䵽ռ65534ռ ID Ϊ1Ľһֱ initֵʹ ip netns ռ䡣һȷǰϵͳûռ䣺 root@w:~# ip netns list Object "netns" is unknown, try "ip help". -In this case, either ip needs an upgrade, or the kernel does. Assuming you have a kernel newer than 2.6.24, it's most likely **ip**. After upgrading, **ip netns list** should by default return nothing. Let's add a new namespace called 'ns1': +£ҪϵͳںˣԼ ip ߡں˰2.6.24ip ߰汾Ҳ࣬2.6.24LCTTעip iproute װṩ˰װ汾ں˰汾ºú**ip netns list** ûռڵ²ϢӸΪns1ռ俴 root@w:~# ip netns add ns1 root@w:~# ip netns list ns1 -First, let's list the current interfaces: +г root@w:~# ip link list 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT @@ -120,7 +120,7 @@ First, let's list the current interfaces: 2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 1000 link/ether 00:0c:29:65:25:9e brd ff:ff:ff:ff:ff:ff -Now to create a new virtual interface, and add it to our new namespace. Virtual interfaces are created in pairs, and are linked to each other - imagine a virtual crossover cable: +µӵռ䡣ҪɶԴ뽻°ɣ root@w:~# ip link add veth0 type veth peer name veth1 root@w:~# ip link list @@ -133,9 +133,9 @@ Now to create a new virtual interface, and add it to our new namespace. Virtual 4: veth0: mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether f2:f7:5e:e2:22:ac brd ff:ff:ff:ff:ff:ff -**ifconfig** -a will also now show the addition of both veth0 and veth1. +ʱ **ifconfig** -a Ҳʾӵ veth0 veth1 -Great, now to assign our new interfaces to the namespace. Note that ip **netns exec** is used to execute commands within the namespace: +ܺãڽݿӵռȥעһ£ ip **netns exec** ڽռִУLCTTעĽʾ ns1 ռУֻ lo veth1 root@w:~# ip link set veth1 netns ns1 root@w:~# ip netns exec ns1 ip link list @@ -144,21 +144,21 @@ Great, now to assign our new interfaces to the namespace. Note that ip **netns e 3: veth1: mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether d2:e9:52:18:19:ab brd ff:ff:ff:ff:ff:ff -**ifconfig** -a will now only show veth0, as veth1 is in the ns1 namespace. +ʱ **ifconfig** -a ֻʾ veth0ʾ veth1Ϊ ns1 ռС -Should we want to delete veth0/veth1: +ɾ veth1ִ ip netns exec ns1 ip link del veth1 -We can now assign IP address 192.168.5.5/24 to veth0 on our host: +Ϊ veth0 IP ַ ifconfig veth0 192.168.5.5/24 -And assign veth1 192.168.5.10/24 within ns1: +ռΪ veth1 IP ַ ip netns exec ns1 ifconfig veth1 192.168.5.10/24 up -To execute ip addr **list** on both our host and within our namespace: +ռִ ip addr **list**  root@w:~# ip addr list 1: lo: mtu 65536 qdisc noqueue state UNKNOWN @@ -185,7 +185,7 @@ To execute ip addr **list** on both our host and within our namespace: inet6 fe80::10bd:b6ff:fe76:a6eb/64 scope link valid_lft forever preferred_lft forever -To view routing tables inside and outside of the namespace: +ռ鿴·ɱ root@w:~# ip route list default via 192.168.3.1 dev eth0 proto static @@ -194,7 +194,7 @@ To view routing tables inside and outside of the namespace: root@w:~# ip netns exec ns1 ip route list 192.168.5.0/24 dev veth1 proto kernel scope link src 192.168.5.10 -Lastly, to connect our physical and virtual interfaces, we'll require a bridge. Let's bridge eth0 and veth0 on the host, and then use DHCP to gain an IP within the ns1 namespace: +󣬽ϣҪõŽӡǽ veth0 Žӵ eth0 ns1 ռʹ DHCP Զȡ IP ַ root@w:~# brctl addbr br0 root@w:~# brctl addif br0 eth0 @@ -209,7 +209,7 @@ Lastly, to connect our physical and virtual interfaces, we'll require a bridge. inet6 fe80::20c:29ff:fe65:259e/64 scope link valid_lft forever preferred_lft forever -br0 has been assigned an IP of 192.168.3.122/24. Now for the namespace: +Ϊ br0 IP ַΪ192.168.3.122/24Ϊռַ root@w:~# ip netns exec ns1 dhclient veth1 root@w:~# ip netns exec ns1 ip addr list @@ -221,17 +221,17 @@ br0 has been assigned an IP of 192.168.3.122/24. Now for the namespace: inet6 fe80::10bd:b6ff:fe76:a6eb/64 scope link valid_lft forever preferred_lft forever -Excellent! veth1 has been assigned 192.168.3.248/24 +ڣ veth1 IP ó 192.168.3.248/24 ˡ -------------------------------------------------------------------------------- via: http://www.howtoforge.com/linux-namespaces -作者:[aziods][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +ߣ[aziods][a] +ߣ[bazz2](https://github.com/bazz2) +Уԣ[УID](https://github.com/УID) -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + [LCTT](https://github.com/LCTT/TranslateProject) ԭ룬[Linuxй](http://linux.cn/) Ƴ [a]:http://www.howtoforge.com/forums/private.php?do=newpm&u=138952 [1]:http://en.wikipedia.org/wiki/LXC From f8d13bbc415c8cb4e88329eb2e180b1b4240f9d1 Mon Sep 17 00:00:00 2001 From: bazz2 Date: Wed, 28 Jan 2015 14:10:07 +0800 Subject: [PATCH 122/725] [gbk->utf-8]Linux Namespaces --- translated/tech/20141204 Linux Namespaces.md | 72 ++++++++++---------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/translated/tech/20141204 Linux Namespaces.md b/translated/tech/20141204 Linux Namespaces.md index aae091f29c..522131a50b 100644 --- a/translated/tech/20141204 Linux Namespaces.md +++ b/translated/tech/20141204 Linux Namespaces.md @@ -1,32 +1,32 @@ -Linux ռ +Linux 命名空间 ================================================================================ -### ### +### 背景 ### -2.6.24ں˿ʼLinux ֧6ֲͬ͵ռ䡣ǵij֣ʹûĽܹϵͳøӳףӶҪ̫ײ⻯ +从2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。它们的出现,使用户创建的进程能够与系统分离得更加彻底,从而不需要考虑太多底层的虚拟化技术。 -- **CLONE_NEWIPC**: ̼ͨ(IPC)ռ䣬Խ SystemV IPC POSIX Ϣж -- **CLONE_NEWPID**: ID ռ䣬 ID ˼ռڵĽ ID ܻռĽ ID ͻռڵĽ ID ӳ䵽ռʱʹһ ID˵ռ ID Ϊ1Ḷ̌ռָ init ̡ -- **CLONE_NEWNET**: ռ䣬ڸԴ/proc/netIP ַ·ɵȣ̨̿ڲͬռڵͬ˿ϣûһ -- **CLONE_NEWNS**: ռ䣬ʱԽصϵͳ룬ʹʱǿԴﵽ chroot ĹܣڰȫԷ chroot ߡ -- **CLONE_NEWUTS**: UTS ռ䣬ҪĿǶϢNIS -- **CLONE_NEWUSER**: ûռ䣬ͬ ID һû ID ID ռDzһģڲͬռڿԴͬ ID +- **CLONE_NEWIPC**: 进程间通信(IPC)的命名空间,可以将 SystemV 的 IPC 和 POSIX 的消息队列独立出来。 +- **CLONE_NEWPID**: 进程 ID 的命名空间,进程 ID 独立,意思就是命名空间内的进程 ID 可能会与命名空间外的进程 ID 冲突,于是命名空间内的进程 ID 映射到命名空间外时会使用另外一个进程 ID。比如说,命名空间内 ID 为1的进程,在命名空间外就是指 init 进程。 +- **CLONE_NEWNET**: 网络命名空间,用于隔离网络资源(/proc/net、IP 地址、网卡、路由等)。后台进程可以运行在不同命名空间内的相同端口上,用户还可以虚拟出一块网卡。 +- **CLONE_NEWNS**: 挂载命名空间,进程运行时可以将挂载点与系统分离,使用这个功能时,我们可以达到 chroot 的功能,而在安全性方面比 chroot 更高。 +- **CLONE_NEWUTS**: UTS 命名空间,主要目的是独立出主机名和网络信息服务(NIS)。 +- **CLONE_NEWUSER**: 用户命名空间,同进程 ID 一样,用户 ID 和组 ID 在命名空间内外是不一样的,并且在不同命名空间内可以存在相同的 ID。 - C ԽΪʾռʱҪõ C ԡIJԹ Debian 6 Debian 7 ִСȣջڷһҳڴռ䣬ָָڴҳĩβʹ **alloca()** ڴ棬Ҫ malloc() ڴڶϡ +本文用 C 语言介绍上述概念,因为演示进程命名空间的时候需要用到 C 语言。下面的测试过程在 Debian 6 和 Debian 7 上执行。首先,在栈内分配一页内存空间,并将指针指向内存页的末尾。这里我们使用 **alloca()** 函数来分配内存,不要用 malloc() 函数,它会把内存分配在堆上。 void *mem = alloca(sysconf(_SC_PAGESIZE)) + sysconf(_SC_PAGESIZE); -Ȼʹ **clone()** ӽ̣ջռĵַ "mem"ԼָռıǡͬʱǻָcalleeΪӽеĺ +然后使用 **clone()** 函数创建子进程,传入栈空间的地址 "mem",以及指定命名空间的标记。同时我们还指定“callee”作为子进程运行的函数。 mypid = clone(callee, mem, SIGCHLD | CLONE_NEWIPC | CLONE_NEWPID | CLONE_NEWNS | CLONE_FILES, NULL); -**clone** ֮Ҫڸеȴӽ˳Ļ̻ȥֱ̽ӽ̱ɹ¶̣ +**clone** 之后我们要在父进程中等待子进程先退出,否则的话,父进程会继续运行下去,直到进程结束,留下子进程变成孤儿进程: while (waitpid(mypid, &r, 0) < 0 && errno == EINTR) { continue; } -ӽ˳ǻص shell 档 +最后当子进程退出后,我们会回到 shell 界面。 if (WIFEXITED(r)) { @@ -34,7 +34,7 @@ Linux } return EXIT_FAILURE; -Ľܵ **callee** £ +上文介绍的 **callee** 函数功能如下: static int callee() { @@ -47,7 +47,7 @@ Linux return ret; } - **/proc** ļϵͳû ID IDֵΪuȻ **/bin/bash** [LXC][1] Dzϵͳ⻯ߣʹ cgroups ռԴķ롣ǰдһ𣬱uֵΪ65534 Debian ϵͳУǡnobody͡nogroup +程序挂载 **/proc** 文件系统,设置用户 ID 和组 ID,值都为“u”,然后运行 **/bin/bash** 程序,[LXC][1] 是操作系统级的虚拟化工具,使用 cgroups 和命名空间来完成资源的分离。现在我们把所有代码放在一起,变量“u”的值设为65534,在 Debian 系统中,这是“nobody”和“nogroup”: #define _GNU_SOURCE #include @@ -89,7 +89,7 @@ Linux return ret; } -ִĴ룺 +执行以下命令来运行上面的代码: root@w:~/pen/tmp# gcc -O -o ns.c -Wall -Werror -ansi -c89 ns.c root@w:~/pen/tmp# ./ns @@ -101,18 +101,18 @@ Linux nobody 5 0.0 0.0 2784 1064 pts/1 R+ 21:21 0:00 ps auxw nobody@w:~/pen/tmp$ -עĽUID GID ó nobody nogroup ˣر ps ֻ̣ǵ ID ֱ15LCTTעĽ CLONE_NEWPID ʱᵽĹܣ߳ڵռڣ ID Ϊ1ӳ䵽ռ65534ռ ID Ϊ1Ľһֱ initֵʹ ip netns ռ䡣һȷǰϵͳûռ䣺 +注意上面的结果,UID 和 GID 被设置成 nobody 和 nogroup 了,特别是 ps 工具只输出两个进程,它们的 ID 分别是1和5(LCTT注:这就是上文介绍 CLONE_NEWPID 时提到的功能,在线程所在的命名空间内,进程 ID 可以为1,映射到命名空间外就是65534;而命名空间外的 ID 为1的进程一直是 init)。接下来轮到使用 ip netns 来设置网络的命名空间。第一步先确定当前系统没有命名空间: root@w:~# ip netns list Object "netns" is unknown, try "ip help". -£ҪϵͳںˣԼ ip ߡں˰2.6.24ip ߰汾Ҳ࣬2.6.24LCTTעip iproute װṩ˰װ汾ں˰汾ºú**ip netns list** ûռڵ²ϢӸΪns1ռ俴 +这种情况下,你需要更新你的系统内核,以及 ip 工具。这里假设你的内核版高于2.6.24,ip 工具版本也差不多,高于2.6.24(LCTT注:ip 工具由 iproute 安装包提供,此安装包版本与内核版本相近)。更新好后,**ip netns list** 在没有命名空间存在的情况下不会输出任务信息。加个名为“ns1”的命名空间看看: root@w:~# ip netns add ns1 root@w:~# ip netns list ns1 -г +列出网卡: root@w:~# ip link list 1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT @@ -120,7 +120,7 @@ Linux 2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 1000 link/ether 00:0c:29:65:25:9e brd ff:ff:ff:ff:ff:ff -µӵռ䡣ҪɶԴ뽻°ɣ +创建新的虚拟网卡,加到命名空间。虚拟网卡需要成对创建,互相关联——想想交叉电缆吧: root@w:~# ip link add veth0 type veth peer name veth1 root@w:~# ip link list @@ -133,9 +133,9 @@ Linux 4: veth0: mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether f2:f7:5e:e2:22:ac brd ff:ff:ff:ff:ff:ff -ʱ **ifconfig** -a Ҳʾӵ veth0 veth1 +这个时候 **ifconfig** -a 命令也能显示新添加的 veth0 和 veth1 两块网卡。 -ܺãڽݿӵռȥעһ£ ip **netns exec** ڽռִУLCTTעĽʾ ns1 ռУֻ lo veth1 +很好,现在将这两份块网卡加到命名空间中去。注意一下,下面的 ip **netns exec** 命令用于将后面的命令在命名空间中执行(LCTT注:下面的结果显示了在 ns1 这个网络命名空间中,只存在 lo 和 veth1 两块网卡): root@w:~# ip link set veth1 netns ns1 root@w:~# ip netns exec ns1 ip link list @@ -144,21 +144,21 @@ Linux 3: veth1: mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 link/ether d2:e9:52:18:19:ab brd ff:ff:ff:ff:ff:ff -ʱ **ifconfig** -a ֻʾ veth0ʾ veth1Ϊ ns1 ռС +这个时候 **ifconfig** -a 命令只能显示 veth0,不能显示 veth1,因为后者现在在 ns1 命名空间中。 -ɾ veth1ִ +如果想删除 veth1,可以执行下面的命令: ip netns exec ns1 ip link del veth1 -Ϊ veth0 IP ַ +为 veth0 分配 IP 地址: ifconfig veth0 192.168.5.5/24 -ռΪ veth1 IP ַ +在命名空间内为 veth1 分配 IP 地址: ip netns exec ns1 ifconfig veth1 192.168.5.10/24 up -ռִ ip addr **list**  +在命名空间内外执行 ip addr **list** 命令: root@w:~# ip addr list 1: lo: mtu 65536 qdisc noqueue state UNKNOWN @@ -185,7 +185,7 @@ Linux inet6 fe80::10bd:b6ff:fe76:a6eb/64 scope link valid_lft forever preferred_lft forever -ռ鿴·ɱ +在命名空间内外查看路由表: root@w:~# ip route list default via 192.168.3.1 dev eth0 proto static @@ -194,7 +194,7 @@ Linux root@w:~# ip netns exec ns1 ip route list 192.168.5.0/24 dev veth1 proto kernel scope link src 192.168.5.10 -󣬽ϣҪõŽӡǽ veth0 Žӵ eth0 ns1 ռʹ DHCP Զȡ IP ַ +最后,将虚拟网卡连到物理网卡上,我们需要用到桥接。这里做的是将 veth0 桥接到 eth0,而 ns1 命名空间内则使用 DHCP 自动获取 IP 地址: root@w:~# brctl addbr br0 root@w:~# brctl addif br0 eth0 @@ -209,7 +209,7 @@ Linux inet6 fe80::20c:29ff:fe65:259e/64 scope link valid_lft forever preferred_lft forever -Ϊ br0 IP ַΪ192.168.3.122/24Ϊռַ +为网桥 br0 分配的 IP 地址为192.168.3.122/24。接下来为命名空间分配地址: root@w:~# ip netns exec ns1 dhclient veth1 root@w:~# ip netns exec ns1 ip addr list @@ -221,17 +221,19 @@ Linux inet6 fe80::10bd:b6ff:fe76:a6eb/64 scope link valid_lft forever preferred_lft forever -ڣ veth1 IP ó 192.168.3.248/24 ˡ +现在, veth1 的 IP 被设置成 192.168.3.248/24 了。 -------------------------------------------------------------------------------- via: http://www.howtoforge.com/linux-namespaces -ߣ[aziods][a] -ߣ[bazz2](https://github.com/bazz2) -Уԣ[УID](https://github.com/УID) +作者:[aziods][a] +译者:[bazz2](https://github.com/bazz2) +校对:[校对者ID](https://github.com/校对者ID) - [LCTT](https://github.com/LCTT/TranslateProject) ԭ룬[Linuxй](http://linux.cn/) Ƴ +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.howtoforge.com/forums/private.php?do=newpm&u=138952 [1]:http://en.wikipedia.org/wiki/LXC + + From f4f61f060a02c449e8bd8149cb1e1976e797a70f Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 28 Jan 2015 14:20:08 +0800 Subject: [PATCH 123/725] PUB:20141008 How to configure HTTP load balancer with HAProxy on Linux @liaoishere --- ...TTP load balancer with HAProxy on Linux.md | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) rename {translated/tech => published}/20141008 How to configure HTTP load balancer with HAProxy on Linux.md (82%) diff --git a/translated/tech/20141008 How to configure HTTP load balancer with HAProxy on Linux.md b/published/20141008 How to configure HTTP load balancer with HAProxy on Linux.md similarity index 82% rename from translated/tech/20141008 How to configure HTTP load balancer with HAProxy on Linux.md rename to published/20141008 How to configure HTTP load balancer with HAProxy on Linux.md index 216483ab3c..bd7c865cda 100644 --- a/translated/tech/20141008 How to configure HTTP load balancer with HAProxy on Linux.md +++ b/published/20141008 How to configure HTTP load balancer with HAProxy on Linux.md @@ -1,18 +1,17 @@ -如何在 Linux 上使用 HAProxy 配置 HTTP 负载均衡器 +使用 HAProxy 配置 HTTP 负载均衡器 ================================================================================ -随着基于 Web 的应用和服务的增多,IT 系统管理员肩上的责任也越来越重。当遇到不可预期的事件如流量达到高峰,流量增大或者内部的挑战比如硬件的损坏或紧急维修,无论如何,你的 Web 应用都必须要保持可用性。甚至现在流行的 devops 和持续交付也可能威胁到你的 Web 服务的可靠性和性能的一致性。 +随着基于 Web 的应用和服务的增多,IT 系统管理员肩上的责任也越来越重。当遇到不可预期的事件如流量达到高峰,流量增大或者内部的挑战比如硬件的损坏或紧急维修,无论如何,你的 Web 应用都必须要保持可用性。甚至现在流行的 devops 和持续交付(CD)也可能威胁到你的 Web 服务的可靠性和性能的一致性。 -不可预测,不一直的性能表现是你无法接受的。但是我们怎样消除这些缺点呢?大多数情况下一个合适的负载均衡解决方案可以解决这个问题。今天我会给你们介绍如何使用 [HAProxy][1] 配置 HTTP 负载均衡器。 +不可预测,不一致的性能表现是你无法接受的。但是我们怎样消除这些缺点呢?大多数情况下一个合适的负载均衡解决方案可以解决这个问题。今天我会给你们介绍如何使用 [HAProxy][1] 配置 HTTP 负载均衡器。 ###什么是 HTTP 负载均衡? ### -HTTP 负载均衡是一个网络解决方案,它将发入的 HTTP 或 HTTPs 请求分配至一组提供相同的 Web 应用内容的服务器用于响应。通过将请求在这样的多个服务器间进行均衡,负载均衡器可以防止服务器出现单点故障,可以提升整体的可用性和响应速度。它还可以让你能够简单的通过添加或者移除服务器来进行横向扩展或收缩,对工作负载进行调整。 +HTTP 负载均衡是一个网络解决方案,它将进入的 HTTP 或 HTTPs 请求分配至一组提供相同的 Web 应用内容的服务器用于响应。通过将请求在这样的多个服务器间进行均衡,负载均衡器可以防止服务器出现单点故障,可以提升整体的可用性和响应速度。它还可以让你能够简单的通过添加或者移除服务器来进行横向扩展或收缩,对工作负载进行调整。 ### 什么时候,什么情况下需要使用负载均衡? ### 负载均衡可以提升服务器的使用性能和最大可用性,当你的服务器开始出现高负载时就可以使用负载均衡。或者你在为一个大型项目设计架构时,在前端使用负载均衡是一个很好的习惯。当你的环境需要扩展的时候它会很有用。 - ### 什么是 HAProxy? ### HAProxy 是一个流行的开源的 GNU/Linux 平台下的 TCP/HTTP 服务器的负载均衡和代理软件。HAProxy 是单线程,事件驱动架构,可以轻松的处理 [10 Gbps 速率][2] 的流量,在生产环境中被广泛的使用。它的功能包括自动健康状态检查,自定义负载均衡算法,HTTPS/SSL 支持,会话速率限制等等。 @@ -24,13 +23,13 @@ HAProxy 是一个流行的开源的 GNU/Linux 平台下的 TCP/HTTP 服务器的 ### 准备条件 ### 你至少要有一台,或者最好是两台 Web 服务器来验证你的负载均衡的功能。我们假设后端的 HTTP Web 服务器已经配置好并[可以运行][3]。 -You will need at least one, or preferably two web servers to verify functionality of your load balancer. We assume that backend HTTP web servers are already [up and running][3]. + -### 在 Linux 中安装 HAProxy ### +## 在 Linux 中安装 HAProxy ## 对于大多数的发行版,我们可以使用发行版的包管理器来安装 HAProxy。 -#### 在 Debian 中安装 HAProxy #### +### 在 Debian 中安装 HAProxy ### 在 Debian Wheezy 中我们需要添加源,在 /etc/apt/sources.list.d 下创建一个文件 "backports.list" ,写入下面的内容 @@ -41,25 +40,25 @@ You will need at least one, or preferably two web servers to verify functionalit # apt­ get update # apt ­get install haproxy -#### 在 Ubuntu 中安装 HAProxy #### +### 在 Ubuntu 中安装 HAProxy ### # apt ­get install haproxy -#### 在 CentOS 和 RHEL 中安装 HAProxy #### +### 在 CentOS 和 RHEL 中安装 HAProxy ### # yum install haproxy -### 配置 HAProxy ### +## 配置 HAProxy ## 本教程假设有两台运行的 HTTP Web 服务器,它们的 IP 地址是 192.168.100.2 和 192.168.100.3。我们将负载均衡配置在 192.168.100.4 的这台服务器上。 为了让 HAProxy 工作正常,你需要修改 /etc/haproxy/haproxy.cfg 中的一些选项。我们会在这一节中解释这些修改。一些配置可能因 GNU/Linux 发行版的不同而变化,这些会被标注出来。 -#### 1. 配置日志功能 #### +### 1. 配置日志功能 ### 你要做的第一件事是为 HAProxy 配置日志功能,在排错时日志将很有用。日志配置可以在 /etc/haproxy/haproxy.cfg 的 global 段中找到他们。下面是针对不同的 Linux 发型版的 HAProxy 日志配置。 -**CentOS 或 RHEL:** +#### CentOS 或 RHEL:#### 在 CentOS/RHEL中启用日志,将下面的: @@ -82,7 +81,7 @@ You will need at least one, or preferably two web servers to verify functionalit # service rsyslog restart -**Debian 或 Ubuntu:** +####Debian 或 Ubuntu:#### 在 Debian 或 Ubuntu 中启用日志,将下面的内容 @@ -106,7 +105,7 @@ You will need at least one, or preferably two web servers to verify functionalit # service rsyslog restart -#### 2. 设置默认选项 #### +### 2. 设置默认选项 ### 下一步是设置 HAProxy 的默认选项。在 /etc/haproxy/haproxy.cfg 的 default 段中,替换为下面的配置: @@ -124,7 +123,7 @@ You will need at least one, or preferably two web servers to verify functionalit 上面的配置是当 HAProxy 为 HTTP 负载均衡时建议使用的,但是并不一定是你的环境的最优方案。你可以自己研究 HAProxy 的手册并配置它。 -#### 3. Web 集群配置 #### +### 3. Web 集群配置 ### Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡中的大多数设置都在这里。现在我们会创建一些基本配置,定义我们的节点。将配置文件中从 frontend 段开始的内容全部替换为下面的: @@ -141,14 +140,14 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 server web01 192.168.100.2:80 cookie node1 check server web02 192.168.100.3:80 cookie node2 check -"listen webfarm *:80" 定义了负载均衡器监听的地址和端口。为了教程的需要,我设置为 "\*" 表示监听在所有接口上。在真实的场景汇总,这样设置可能不太合适,应该替换为可以从 internet 访问的那个网卡接口。 +"listen webfarm \*:80" 定义了负载均衡器监听的地址和端口。为了教程的需要,我设置为 "*" 表示监听在所有接口上。在真实的场景汇总,这样设置可能不太合适,应该替换为可以从 internet 访问的那个网卡接口。 stats enable stats uri /haproxy?stats stats realm Haproxy\ Statistics stats auth haproxy:stats -上面的设置定义了,负载均衡器的状态统计信息可以通过 http:///haproxy?stats 访问。访问需要简单的 HTTP 认证,用户名为 "haproxy" 密码为 "stats"。这些设置可以替换为你自己的认证方式。如果你不需要状态统计信息,可以完全禁用掉。 +上面的设置定义了,负载均衡器的状态统计信息可以通过 http://\/haproxy?stats 访问。访问需要简单的 HTTP 认证,用户名为 "haproxy" 密码为 "stats"。这些设置可以替换为你自己的认证方式。如果你不需要状态统计信息,可以完全禁用掉。 下面是一个 HAProxy 统计信息的例子 @@ -160,7 +159,7 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 - **source**:对请求的客户端 IP 地址进行哈希计算,根据哈希值和服务器的权重将请求调度至后端服务器。 - **uri**:对 URI 的左半部分(问号之前的部分)进行哈希,根据哈希结果和服务器的权重对请求进行调度 - **url_param**:根据每个 HTTP GET 请求的 URL 查询参数进行调度,使用固定的请求参数将会被调度至指定的服务器上 -- **hdr(name**):根据 HTTP 首部中的 字段来进行调度 +- **hdr(name**):根据 HTTP 首部中的 \ 字段来进行调度 "cookie LBN insert indirect nocache" 这一行表示我们的负载均衡器会存储 cookie 信息,可以将后端服务器池中的节点与某个特定会话绑定。节点的 cookie 存储为一个自定义的名字。这里,我们使用的是 "LBN",你可以指定其他的名称。后端节点会保存这个 cookie 的会话。 @@ -169,25 +168,25 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 上面是我们的 Web 服务器节点的定义。服务器有由内部名称(如web01,web02),IP 地址和唯一的 cookie 字符串表示。cookie 字符串可以自定义,我这里使用的是简单的 node1,node2 ... node(n) -### 启动 HAProxy ### +## 启动 HAProxy ## 如果你完成了配置,现在启动 HAProxy 并验证是否运行正常。 -#### 在 Centos/RHEL 中启动 HAProxy #### +### 在 Centos/RHEL 中启动 HAProxy ### 让 HAProxy 开机自启,使用下面的命令 # chkconfig haproxy on # service haproxy start -当然,防火墙需要开放 80 端口,想下面这样 +当然,防火墙需要开放 80 端口,像下面这样 -**CentOS/RHEL 7 的防火墙** +####CentOS/RHEL 7 的防火墙#### # firewall­cmd ­­permanent ­­zone=public ­­add­port=80/tcp # firewall­cmd ­­reload -**CentOS/RHEL 6 的防火墙** +####CentOS/RHEL 6 的防火墙#### 把下面内容加至 /etc/sysconfig/iptables 中的 ":OUTPUT ACCEPT" 段中 @@ -197,9 +196,9 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 # service iptables restart -#### 在 Debian 中启动 HAProxy #### +### 在 Debian 中启动 HAProxy ### -#### 启动 HAProxy #### +启动 HAProxy # service haproxy start @@ -207,7 +206,7 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 ­A INPUT ­p tcp ­­dport 80 ­j ACCEPT -#### 在 Ubuntu 中启动HAProxy #### +### 在 Ubuntu 中启动HAProxy ### 让 HAProxy 开机自动启动在 /etc/default/haproxy 中配置 @@ -221,7 +220,7 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 # ufw allow 80 -### 测试 HAProxy ### +## 测试 HAProxy ## 检查 HAProxy 是否工作正常,我们可以这样做 @@ -239,7 +238,7 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 $ curl http://192.168.100.4/test.php -我们多次使用这个命令此时,会发现交替的输出下面的内容(因为使用了轮询算法): +我们多次运行这个命令此时,会发现交替的输出下面的内容(因为使用了轮询算法): Server IP: 192.168.100.2 X-Forwarded-for: 192.168.100.4 @@ -251,13 +250,13 @@ Web 集群配置定义了一组可用的 HTTP 服务器。我们的负载均衡 如果我们停掉一台后端 Web 服务,curl 命令仍然正常工作,请求被分发至另一台可用的 Web 服务器。 -### 总结 ### +## 总结 ## -现在你有了一个完全可用的负载均衡器,以轮询的模式对你的 Web 节点进行负载均衡。还可以去实验其他的配置选项以适应你的环境。希望这个教程可以帮会组你们的 Web 项目有更好的可用性。 +现在你有了一个完全可用的负载均衡器,以轮询的模式对你的 Web 节点进行负载均衡。还可以去实验其他的配置选项以适应你的环境。希望这个教程可以帮助你们的 Web 项目有更好的可用性。 你可能已经发现了,这个教程只包含单台负载均衡的设置。这意味着我们仍然有单点故障的问题。在真实场景中,你应该至少部署 2 台或者 3 台负载均衡以防止意外发生,但这不是本教程的范围。 -如果 你有任何问题或建议,请在评论中提出,我会尽我的努力回答。 +如果你有任何问题或建议,请在评论中提出,我会尽我的努力回答。 -------------------------------------------------------------------------------- @@ -265,11 +264,11 @@ via: http://xmodulo.com/haproxy-http-load-balancer-linux.html 作者:[Jaroslav Štěpánek][a] 译者:[Liao](https://github.com/liaoishere) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://xmodulo.com/author/jaroslav [1]:http://www.haproxy.org/ [2]:http://www.haproxy.org/10g.html -[3]:http://xmodulo.com/how-to-install-lamp-server-on-ubuntu.html +[3]:http://linux.cn/article-1567-1.html From df3a8b808d446041974cd641b4b904f1b87ee6e7 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 28 Jan 2015 14:24:55 +0800 Subject: [PATCH 124/725] =?UTF-8?q?=E6=B8=85=E9=99=A4=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...SO Images Directly From Your Hard Drive.md | 78 ------------------- 1 file changed, 78 deletions(-) delete mode 100644 sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md diff --git a/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md b/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md deleted file mode 100644 index b7ccf253f9..0000000000 --- a/sources/tech/20150123 How to Boot Linux ISO Images Directly From Your Hard Drive.md +++ /dev/null @@ -1,78 +0,0 @@ -[xieborui translating]How to Boot Linux ISO Images Directly From Your Hard Drive -================================================================================ -Hi all, today we'll teach you an awesome interesting stuff related with the Operating System Disk Image and Booting. Now, try many OS you like without installing them in your Physical Hard Drive and without burning DVDs or USBs. - -We can boot Linux ISO files directly from your hard drive with Linux’s GRUB2 boot loader. We can boot any Linux Distribution's using this method without creating bootable USBs, Burn DVDs, etc but the changes made will be temporary. - -![boot iso files directly from hard drive in grub2](http://blog.linoxide.com/wp-content/uploads/2015/01/boot-iso-files-directly-from-hard-drive-in-grub2.png) - -### 1. Get the ISO of the Linux Distributions: ### - -Here, we're gonna create Menu of Ubuntu 14.04 LTS "Trusty" and Linux Mint 17.1 LTS "Rebecca" so, we downloaded them from their official site: - -Ubuntu from : [http://ubuntu.com/][1] And Linux Mint from: [http://linuxmint.com/][2] - -You can download ISO files of required linux distributions from their respective websites. If you have mirror of the iso files hosted near your area or country, it is recommended if you have no sufficient internet download speed. - -### 2. Determine the Hard Drive Partition’s Path ### - -GRUB uses a different “device name” scheme than Linux does. On a Linux system, /dev/sda0 is the first partition on the first hard disk — **a** means the first hard disk and **0** means its first partition. In GRUB, (hd0,1) is equivalent to /dev/sda0. The **0** means the first hard disk, while **1** means the first partition on it. In other words, in a GRUB device name, the disk numbers start counting at 0 and the partition numbers start counting at 1. For example, (hd3,6) refers to the sixth partition on the fourth hard disk. - -You can use the **fdisk -l** command to view this information. On Ubuntu, open a Terminal and run the following command: - - $ sudo fdisk -l - -![fdisk-l view the list of the hard disk and its partitions](http://blog.linoxide.com/wp-content/uploads/2015/01/fdisk-l.png) - -You’ll see a list of Linux device paths, which you can convert to GRUB device names on your own. For example, below we can see the system partition is /dev/sda1 — so that’s (hd0,1) for GRUB. - -### 3. Adding boot menu to Grub2 ### - -The easiest way to add a custom boot entry is to edit the /etc/grub.d/40_custom script. This file is designed for user-added custom boot entries. After editing the file, the contents of your /etc/defaults/grub file and the /etc/grub.d/ scripts will be combined to create a /boot/grub/grub.cfg file. You shouldn't edit this file by hand. It’s designed to be automatically generated from settings you specify in other files. - -So we’ll need to open the /etc/grub.d/40_custom file for editing with root privileges. On Ubuntu, you can do this by opening a Terminal window and running the following command: - - $ sudo nano /etc/grub.d/40_custom - -Unless we’ve added other custom boot entries, we should see a mostly empty file. We'll need to add one or more ISO-booting sections to the file below the commented lines. - - ===== - menuentry “Ubuntu 14.04 ISO” { - set isofile=”/home/linoxide/Downloads/ubuntu-14.04.1-desktop-amd64.iso” - loopback loop (hd0,1)$isofile - linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash - initrd (loop)/casper/initrd.lz - } - menuentry "Linux Mint 17.1 Cinnamon ISO" { - set isofile=”/home/linoxide/Downloads/mint-17.1-desktop-amd64.iso” - loopback loop (hd0,1)$isofile - linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=${isofile} quiet splash - initrd (loop)/casper/initrd.lz - } - -![Grub2 Menu configuration for adding the ISOs](http://blog.linoxide.com/wp-content/uploads/2015/01/grub-added-iso.png) - -**Important Note**: Different Linux distributions require different boot entries with different boot options. The GRUB Live ISO Multiboot project offers a variety of [menu entries for different Linux distributions][3]. You should be able to adapt these example menu entries for the ISO file you want to boot. You can also just perform a web search for the name and release number of the Linux distribution you want to boot along with “boot from ISO in GRUB” to find more information. - -### 4. Updating Grub2 ### - -To make the custom menu entries active, we'll run "sudo update-grub" - - sudo update-grub - -Hurray, we have successfully added our brand new linux distribution's ISO to our GRUB Menu. Now, we'll be able to boot them and enjoy trying them. You can add many distributions and try them all. Note that the changes made in those OS will don't be kept preserved, which means you'll loose changes made in that distros after the restart. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/boot-linux-iso-images-directly-hard-drive/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:http://ubuntu.com/ -[2]:http://linuxmint.com/ -[3]:http://git.marmotte.net/git/glim/tree/grub2 From 28c16bb997c81ac3e29efe9fd4f79634b0ab4499 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 28 Jan 2015 14:28:00 +0800 Subject: [PATCH 125/725] Translating by ZTinoZ --- ... Linux FAQs with Answers--How to check CPU info on Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index b9a9712a49..f099000ef2 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -1,3 +1,4 @@ +Translating by ZTinoZ Linux FAQs with Answers--How to check CPU info on Linux ================================================================================ > **Question**: I would like to know detailed information about the CPU processor of my computer. What are the available methods to check CPU information on Linux? @@ -112,4 +113,4 @@ via: http://ask.xmodulo.com/check-cpu-info-linux.html [1]:http://xmodulo.com/how-to-find-number-of-cpu-cores-on.html [2]:http://en.wikipedia.org/wiki/CPUID [3]:http://xmodulo.com/identify-cpu-processor-architecture-linux.html -[4]:http://xmodulo.com/identify-cpu-processor-architecture-linux.html \ No newline at end of file +[4]:http://xmodulo.com/identify-cpu-processor-architecture-linux.html From 210f5b5c5fbeed38a06ff84cb59d004c562561f2 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 28 Jan 2015 14:13:54 +0800 Subject: [PATCH 126/725] =?UTF-8?q?20150128-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...unities driving open source development.md | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 sources/talk/20150128 7 communities driving open source development.md diff --git a/sources/talk/20150128 7 communities driving open source development.md b/sources/talk/20150128 7 communities driving open source development.md new file mode 100644 index 0000000000..3b3c450cf8 --- /dev/null +++ b/sources/talk/20150128 7 communities driving open source development.md @@ -0,0 +1,86 @@ +7 communities driving open source development +================================================================================ +Not so long ago, the open source model was the rebellious kid on the block, viewed with suspicion by established industry players. Today, open initiatives and foundations are flourishing with long lists of vendor committers who see the model as a key to innovation. + +![](http://images.techhive.com/images/article/2015/01/0_opensource-title-100539095-orig.jpg) + +### Open Development of Tech Drives Innovation ### + +Over the past two decades, open development of technology has come to be seen as a key to driving innovation. Even companies that once saw open source as a threat have come around — Microsoft, for example, is now active in a number of open source initiatives. To date, most open development has focused on software. But even that is changing as communities have begun to coalesce around open hardware initiatives. Here are seven organizations that are successfully promoting and developing open technologies, both hardware and software. + +### OpenPOWER Foundation ### + +![](http://images.techhive.com/images/article/2015/01/1_openpower-100539100-orig.jpg) + +The [OpenPOWER Foundation][2] was founded by IBM, Google, Mellanox, Tyan and NVIDIA in 2013 to drive open collaboration hardware development in the same spirit as the open source software development which has found fertile ground in the past two decades. + +IBM seeded the foundation by opening up its Power-based hardware and software technologies, offering licenses to use Power IP in independent hardware products. More than 70 members now work together to create custom open servers, components and software for Linux-based data centers. + +In April, OpenPOWER unveiled a technology roadmap based on new POWER8 process-based servers capable of analyzing data 50 times faster than the latest x86-based systems. In July, IBM and Google released a firmware stack. October saw the availability of NVIDIA GPU accelerated POWER8 systems and the first OpenPOWER reference server from Tyan. + +### The Linux Foundation ### + +![](http://images.techhive.com/images/article/2015/01/2_the-linux-foundation-100539101-orig.jpg) + +Founded in 2000, [The Linux Foundation][2] is now the host for the largest open source, collaborative development effort in history, with more than 180 corporate members and many individual and student members. It sponsors the work of key Linux developers and promotes, protects and advances the Linux operating system and collaborative software development. + +Some of its most successful collaborative projects include Code Aurora Forum (a consortium of companies with projects serving the mobile wireless industry), MeeGo (a project to build a Linux kernel-based operating system for mobile devices and IVI) and the Open Virtualization Alliance (which fosters the adoption of free and open source software virtualization solutions). + +### Open Virtualization Alliance ### + +![](http://images.techhive.com/images/article/2015/01/3_open-virtualization-alliance-100539102-orig.jpg) + +The [Open Virtualization Alliance (OVA)][3] exists to foster the adoption of free and open source software virtualization solutions like Kernel-based Virtual Machine (KVM) through use cases and support for the development of interoperable common interfaces and APIs. KVM turns the Linux kernel into a hypervisor. + +Today, KVM is the most commonly used hypervisor with OpenStack. + +### The OpenStack Foundation ### + +![](http://images.techhive.com/images/article/2015/01/4_the-openstack-foundation-100539096-orig.jpg) + +Originally launched as an Infrastructure-as-a-Service (IaaS) product by NASA and Rackspace hosting in 2010, the [OpenStack Foundation][4] has become the home for one of the biggest open source projects around. It boasts more than 200 member companies, including AT&T, AMD, Avaya, Canonical, Cisco, Dell and HP. + +Organized around a six-month release cycle, the foundation's OpenStack projects are developed to control pools of processing, storage and networking resources through a data center — all managed or provisioned through a Web-based dashboard, command-line tools or a RESTful API. So far, the collaborative development supported by the foundation has resulted in the creation of OpenStack components including OpenStack Compute (a cloud computing fabric controller that is the main part of an IaaS system), OpenStack Networking (a system for managing networks and IP addresses) and OpenStack Object Storage (a scalable redundant storage system). + +### OpenDaylight ### + +![](http://images.techhive.com/images/article/2015/01/5_opendaylight-100539097-orig.jpg) + +Another collaborative project to come out of the Linux Foundation, [OpenDaylight][5] is a joint initiative of industry vendors, like Dell, HP, Oracle and Avaya founded in April 2013. Its mandate is the creation of a community-led, open, industry-supported framework consisting of code and blueprints for Software-Defined Networking (SDN). The idea is to provide a fully functional SDN platform that can be deployed directly, without requiring other components, though vendors can offer add-ons and enhancements. + +### Apache Software Foundation ### + +![](http://images.techhive.com/images/article/2015/01/6_apache-software-foundation-100539098-orig.jpg) + +The [Apache Software Foundation (ASF)][7] is home to nearly 150 top level projects ranging from open source enterprise automation software to a whole ecosystem of distributed computing projects related to Apache Hadoop. These projects deliver enterprise-grade, freely available software products, while the Apache License is intended to make it easy for users, whether commercial or individual, to deploy Apache products. + +ASF was incorporated in 1999 as a membership-based, not-for-profit corporation with meritocracy at its heart — to become a member you must first be actively contributing to one or more of the foundation's collaborative projects. + +### Open Compute Project ### + +![](http://images.techhive.com/images/article/2015/01/7_open-compute-project-100539099-orig.jpg) + +An outgrowth of Facebook's redesign of its Oregon data center, the [Open Compute Project (OCP)][7] aims to develop open hardware solutions for data centers. The OCP is an initiative made up of cheap, vanity-free servers, modular I/O storage for Open Rack (a rack standard designed for data centers to integrate the rack into the data center infrastructure) and a relatively "green" data center design. + +OCP board members include representatives from Facebook, Intel, Goldman Sachs, Rackspace and Microsoft. + +OCP recently announced two options for licensing: an Apache 2.0-like license that allows for derivative works and a more prescriptive license that encourages changes to be rolled back into the original software. + +-------------------------------------------------------------------------------- + +via: http://www.networkworld.com/article/2866074/opensource-subnet/7-communities-driving-open-source-development.html + +作者:[Thor Olavsrud][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.networkworld.com/author/Thor-Olavsrud/ +[1]:http://openpowerfoundation.org/ +[2]:http://www.linuxfoundation.org/ +[3]:https://openvirtualizationalliance.org/ +[4]:http://www.openstack.org/foundation/ +[5]:http://www.opendaylight.org/ +[6]:http://www.apache.org/ +[7]:http://www.opencompute.org/ \ No newline at end of file From 35bdd1c7421014618a0aeb9c290191fe87e364f8 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 28 Jan 2015 14:47:57 +0800 Subject: [PATCH 127/725] =?UTF-8?q?20150128-4=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150128 Docker-1 Moving to Docker.md | 81 ++++++ ...-2 Setting up a private Docker registry.md | 241 +++++++++++++++++ ...utomated Docker-based Rails deployments.md | 253 ++++++++++++++++++ 3 files changed, 575 insertions(+) create mode 100644 sources/tech/20150128 Docker-1 Moving to Docker.md create mode 100644 sources/tech/20150128 Docker-2 Setting up a private Docker registry.md create mode 100644 sources/tech/20150128 Docker-3 Automated Docker-based Rails deployments.md diff --git a/sources/tech/20150128 Docker-1 Moving to Docker.md b/sources/tech/20150128 Docker-1 Moving to Docker.md new file mode 100644 index 0000000000..6917b3b7b1 --- /dev/null +++ b/sources/tech/20150128 Docker-1 Moving to Docker.md @@ -0,0 +1,81 @@ +Moving to Docker +================================================================================ +![](http://cocoahunter.com/content/images/2015/01/docker1.jpeg) + +[TL;DR] This is the first post in a series of 3 on how my company moved its infrastructure from PaaS to Docker based deployment. If you want, you can skip the intro (this post) and head directly to the technical topics (links at the bottom of the page). + +---------- + +In the last month I've been strggling with devops. This is my very personal story and experience in trying to streamline a deployment process of a Raila app with Docker. + +When I started my company – [Touchware][1] – in 2012 I was a lone developer. Things were small, uncomplicated, they didn't require a lot of maintenance, nor they needed to scale all that much. During the course of last year though, we grew quite a lot (we are now a team of 10 people) and our server-side applications and API grew both in terms of scope and scale. + +### Step 1 - Heroku ### + +We still are a very small team and we need to make things going and run as smoothly as possible. When we looked for possible solutions, we decided to stick with something that would have removed from our shoulders the burden of managing hardware. Since we develop mainly Rails based applications and Heroku has a great support for RoR and various kind of DBs and cached (Postgres / Mongo / Redis etc.), the smartest choice seemed to be going with [Heroku][2]. And that's what we did. + +Heroku has a great support and great documentation and deploying apps is just so snappy! Only problem is, when you start growing, you need to have piles of cash around to pay the bills. Not the best deal, really. + +### Step 2 - Dokku ### + +In a rush to try and cut the costs, we decided to try with Dokku. [Dokku][3], quoting the Github repo is a + +> Docker powered mini-Heroku in around 100 lines of Bash + +We launched some instances on [DigitalOcean][4] with Dokku pre-installed and we gave it spin. Dokku is very much like Heroku, but when you have complex applications for whom you need to twear params, or where you need certain dependencies, it's just not gonna work out. We had an app where we needed to apply multiple transformations on images and we couldn't find a way to install the correct version of imagemagick into the dokku-based Docker container that was hosting our Rails app. We still have a couple of very simple apps that are running on Dokku, but we had to move some of them back to Heroku. + +### Step 3 - Docker ### + +A couple of months ago, since the problem of devops and managing production apps was resurfacing, I decided to try out [Docker][5]. Docker, in simple terms, allows developers to containerize applications and to ease the deployment. Since a Docker container basically has all the dependencies it needs to run your app, if everything runs fine on your laptop, you can be sure it'll also run like a champ in production on a remote server, be it an AWS E2C instance or a VPS on DigitalOcean. + +Docker IMHO is particularly interesting for the following reasons: + +- it promotes modularization and separation of concerns: you need to start thinking about your apps in terms of logical components (load balancer: 1 container, DB: 1 container, webapp: 1 container etc.); +- it's very flexible in terms of deployment options: containers can be deployed to a wide variety of HW and can be easily redeployed to different servers / providers; +- it allows for a very fine grained tuning of your app environment: you build the images your containers runs from, so you have plenty of options for configuring your environment exactly as you would like to. + +There are howerver some downsides: + +- the learning curve is quite steep (this is probably a very personal problem, but I'm talking as a software dev and not as a skilled operations professional); +- setup is not simple, especially if you want to have a private registry / repository (more about this later). + +Following are some tips I put together during the course of the last week with the findings of someone that is new to the game. + +---------- + +In the following articles we'll see how to setup a semi-automated Docker based deployment system. + +- [Setting up a private Docker registry][6] +- [Configuring a Rails app for semi-automated deployment][7] + +-------------------------------------------------------------------------------- + +via: http://cocoahunter.com/2015/01/23/docker-1/ + +作者:[Michelangelo Chasseur][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://cocoahunter.com/author/michelangelo/ +[1]:http://www.touchwa.re/ +[2]:http://cocoahunter.com/2015/01/23/docker-1/www.heroku.com +[3]:https://github.com/progrium/dokku +[4]:http://cocoahunter.com/2015/01/23/docker-1/www.digitalocean.com +[5]:http://www.docker.com/ +[6]:http://cocoahunter.com/2015/01/23/docker-2/ +[7]:http://cocoahunter.com/2015/01/23/docker-3/ +[8]: +[9]: +[10]: +[11]: +[12]: +[13]: +[14]: +[15]: +[16]: +[17]: +[18]: +[19]: +[20]: \ No newline at end of file diff --git a/sources/tech/20150128 Docker-2 Setting up a private Docker registry.md b/sources/tech/20150128 Docker-2 Setting up a private Docker registry.md new file mode 100644 index 0000000000..9a9341b4b7 --- /dev/null +++ b/sources/tech/20150128 Docker-2 Setting up a private Docker registry.md @@ -0,0 +1,241 @@ +Setting up a private Docker registry +================================================================================ +![](http://cocoahunter.com/content/images/2015/01/docker2.jpg) + +[TL;DR] This is the second post in a series of 3 on how my company moved its infrastructure from PaaS to Docker based deployment. + +- [First part][1]: where I talk about the process we went thru before approaching Docker; +- [Third pard][2]: where I show how to automate the entire process of building images and deploying a Rails app with Docker. + +---------- + +Why would ouy want ot set up a provate registry? Well, for starters, Docker Hub only allows you to have one free private repo. Other companies are beginning to offer similar services, but they are all not very cheap. In addition, if you need to deploy production ready applications built with Docker, you might not want to publish those images on the public Docker Hub. + +This is a very pragmatic approach to dealing with the intricacies of setting up a private Docker registry. For the tutorial we will be using a small 512MB instance on DigitalOcean (from now on DO). I also assume you already know the basics of Docker since I will be concentrating on some more complicated stuff. + +### Local set up ### + +First of all you need to install **boot2docker** and docker CLI. If you already have your basic Docker environment up and running, you can just skip to the next section. + +From the terminal run the following command[1][3]: + + brew install boot2docker docker + +If everything is ok[2][4], you will now be able to start the VM inside which Docker will run with the following command: + + boot2docker up + +Follow the instructions, copy and paste the export commands that boot2docker will print in the terminal. If you now run `docker ps` you should be greeted by the following line + + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + +Ok, Docker is ready to go. This will be enough for the moment. Let's go back to setting up the registry. + +### Creating the server ### + +Log into you DO account and create a new Droplet by selecting an image with Docker pre-installed[^n]. + +![](http://cocoahunter.com/content/images/2015/01/Screenshot-2015-01-20-18-26-14.png) + +You should receive your root credentials via email. Log into your instance and run `docker ps` to see if eveything is ok. + +### Setting up AWS S3 ### + +We are going to use Amazon Simple Storage Service (S3) as the storage layer for our registry / repository. We will need to create a bucket and user credentials to allow our docker container accessoing it. + +Login into your AWS account (if you don't have one you can set one up at [http://aws.amazon.com/][5]) and from the console select S3 (Simple Storage Service). + +![](http://cocoahunter.com/content/images/2015/01/Screenshot-2015-01-20-19-29-21.png) + +Click on **Create Bucket**, enter a unique name for your bucket (and write it down, we're gonna need it later), then click on **Create**. + +![](http://cocoahunter.com/content/images/2015/01/Screenshot-2015-01-20-19-22-50.png) + +That's it! We're done setting up the storage part. + +### Setup AWS access credentials ### + +We are now going to create a new user. Go back to your AWS console and select IAM (Identity & Access Management). + +![](http://cocoahunter.com/content/images/2015/01/Screenshot-2015-01-20-19-29-08.png) + +In the dashboard, on the left side of the webpage, you should click on Users. Then select **Create New Users**. + +You should be presented with the following screen: + +![](http://cocoahunter.com/content/images/2015/01/Screenshot-2015-01-20-19-31-42.png) + +Enter a name for your user (e.g. docker-registry) and click on Create. Write down (or download the csv file with) your Access Key and Secret Access Key that we'll need when running the Docker container. Go back to your users list and select the one you just created. + +Under the Permission section, click on Attach User Policy. In the next screen, you will be presented with multiple choices: select Custom Policy. + +![](http://cocoahunter.com/content/images/2015/01/Screenshot-2015-01-20-19-41-21.png) + +Here's the content of the custom policy: + + { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "SomeStatement", + "Effect": "Allow", + "Action": [ + "s3:*" + ], + "Resource": [ + "arn:aws:s3:::docker-registry-bucket-name/*", + "arn:aws:s3:::docker-registry-bucket-name" + ] + } + ] + } + +This will allow the user (i.e. the registry) to manage (read/write) content on the bucket (make sure to use the bucket name you previously defined when setting up AWS S3). To sum it up: when you'll be pushing Docker images from your local machine to your repository, the server will be able to upload them to S3. + +### Installing the registry ### + +Now let's head back to our DO server and SSH into it. We are going to use[^n] one of the [official Docker registry images][6]. + +Let's start our registry with the following command: + + docker run \ + -e SETTINGS_FLAVOR=s3 \ + -e AWS_BUCKET=bucket-name \ + -e STORAGE_PATH=/registry \ + -e AWS_KEY=your_aws_key \ + -e AWS_SECRET=your_aws_secret \ + -e SEARCH_BACKEND=sqlalchemy \ + -p 5000:5000 \ + --name registry \ + -d \ + registry + +Docker should pull the required fs layers from the Docker Hub and eventually start the daemonised container. + +### Testing the registry ### + +If everything worked out, you should now be able to test the registry by pinging it and by searching its content (though for the time being it's still empty). + +Our registry is very basic and it does not provide any means of authentication. Since there are no easy ways of adding authentication (at least none that I'm aware of that are easy enough to implment in order to justify the effort), I've decided that the easiest way of querying / pulling / pushing the registry is an unsecure (over HTTP) connection tunneled thru SSH. + +Opening an SSH tunnel from your local machine is straightforward: + + ssh -N -L 5000:localhost:5000 root@your_registry.com + +The command is tunnelling connections over SSH from port 5000 of the registry server (which is the one we exposed with the `docker run` command in the previous paragraph) to port 5000 on the localhost. + +If you now browse to the following address [http://localhost:5000/v1/_ping][7] you should get the following very simple response + + {} + +This just means that the registry is working correctly. You can also list the whole content of the registry by browsing to [http://localhost:5000/v1/search][8] that will get you a similar response: + + { + "num_results": 2, + "query": "", + "results": [ + { + "description": "", + "name": "username/first-repo" + }, + { + "description": "", + "name": "username/second-repo" + } + ] + } + +### Building an image ### + +Let's now try and build a very simple Docker image to test our newly installed registry. On your local machine, create a Dockerfile with the following content[^n]: + + # Base image with ruby 2.2.0 + FROM ruby:2.2.0 + + MAINTAINER Michelangelo Chasseur + +...and build it: + + docker build -t localhost:5000/username/repo-name . + +The `localhost:5000` part is especially important: the first part of the name of a Docker image will tell the `docker push` command the endpoint towards which we are trying to push our image. In our case, since we are connecting to our remote private registry via an SSH tunnel, `localhost:5000` represents exactly the reference to our registry. + +If everything works as expected, when the command returns, you should be able to list your newly created image with the `docker images` command. Run it and see it for yourself. + +### Pushing to the registry ### + +Now comes the trickier part. It took a me a while to realize what I'm about to describe, so just be patient if you don't get it the first time you read and try to follow along. I know that all this stuff will seem pretty complicated (and it would be if you didn't automate the process), but I promise in the end it will all make sense. In the next post I will show a couple of shell scripts and Rake tasks that will automate the whole process and will let you deploy a Rails to your registry app with a single easy command. + +The docker command you are running from your terminal is actually using the boot2docker VM to run the containers and do all the magic stuff. So when we run a command like `docker push some_repo` what is actually happening is that it's the boot2docker VM that is reacing out for the registry, not our localhost. + +This is an extremely important point to understand: in order to push the Docker image to the remote private registry, the SSH tunnel needs to be established from the boot2docker VM and not from your local machine. + +There are a couple of ways to go with it. I will show you the shortest one (which is not probably the easiest to understand, but it's the one that will let us automate the process with shell scripts). + +First of all though we need to sort one last thing with SSH. + +### Setting up SSH ### + +Let's add our boot2docker SSH key to our remote server (registry) known hosts. We can do so using the ssh-copy-id utility that you can install with the following command shouldn't you already have it: + + brew install ssh-copy-id + +Then run: + + ssh-copy-id -i /Users/username/.ssh/id_boot2docker root@your-registry.com + +Make sure to substitute `/Users/username/.ssh/id_boot2docker` with the correct path of your ssh key. + +This will allow us to connect via SSH to our remote registry without being prompted for the password. + +Finally let's test it out: + + boot2docker ssh "ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &" & + +To break things out a little bit: + +- `boot2docker ssh` lets you pass a command as a parameter that will be executed by the boot2docker VM; +- the final `&` indicates that we want our command to be executed in the background; +- `ssh -o 'StrictHostKeyChecking no' -i /Users/michelangelo/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@registry.touchwa.re &` is the actual command our boot2docker VM will run; + - the `-o 'StrictHostKeyChecking no'` will make sure that we are not prompted with security questions; + - the `-i /Users/michelangelo/.ssh/id_boot2docker` indicates which SSH key we want our VM to use for authentication purposes (note that this should be the key you added to your remote registry in the previous step); + - finally we are opening a tunnel on mapping port 5000 to localhost:5000. + +### Pulling from another server ### + +You should now be able to push your image to the remote registry by simply issuing the following command: + + docker push localhost:5000/username/repo_name + +In the [next post][9] we'll se how to automate some of this stuff and we'll containerize a real Rails application. Stay tuned! + +P.S. Please use the comments to let me know of any inconsistencies or fallacies in my tutorial. Hope you enjoyed it! + +1. I'm also assuming you are running on OS X. +1. For a complete list of instructions to set up your docker environment and requirements, please visit [http://boot2docker.io/][10] +1. Select Image > Applications > Docker 1.4.1 on 14.04 at the time of this writing. +1. [https://github.com/docker/docker-registry/][11] +1. This is just a stub, in the next post I will show you how to bundle a Rails application into a Docker container. + +-------------------------------------------------------------------------------- + +via: http://cocoahunter.com/2015/01/23/docker-2/ + +作者:[Michelangelo Chasseur][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://cocoahunter.com/author/michelangelo/ +[1]:http://cocoahunter.com/2015/01/23/docker-1/ +[2]:http://cocoahunter.com/2015/01/23/docker-3/ +[3]:http://cocoahunter.com/2015/01/23/docker-2/#fn:1 +[4]:http://cocoahunter.com/2015/01/23/docker-2/#fn:2 +[5]:http://aws.amazon.com/ +[6]:https://registry.hub.docker.com/_/registry/ +[7]:http://localhost:5000/v1/_ping +[8]:http://localhost:5000/v1/search +[9]:http://cocoahunter.com/2015/01/23/docker-3/ +[10]:http://boot2docker.io/ +[11]:https://github.com/docker/docker-registry/ \ No newline at end of file diff --git a/sources/tech/20150128 Docker-3 Automated Docker-based Rails deployments.md b/sources/tech/20150128 Docker-3 Automated Docker-based Rails deployments.md new file mode 100644 index 0000000000..f450361a68 --- /dev/null +++ b/sources/tech/20150128 Docker-3 Automated Docker-based Rails deployments.md @@ -0,0 +1,253 @@ +Automated Docker-based Rails deployments +================================================================================ +![](http://cocoahunter.com/content/images/2015/01/docker3.jpeg) + +[TL;DR] This is the third post in a series of 3 on how my company moved its infrastructure from PaaS to Docker based deployment. + +- [First part][1]: where I talk about the process we went thru before approaching Docker; +- [Second part][2]: where I explain how setting up a private registry for in house secure deployments. + +---------- + +In this final part we will see how to automate the whole deployment process with a real world (though very basic) example. + +### Basic Rails app ### + +Let's dive into the topic right away and bootstrap a basic Rails app. For the purpose of this demonstration I'm going to use Ruby 2.2.0 and Rails 4.1.1 + +From the terminal run: + + $ rvm use 2.2.0 + $ rails new && cd docker-test + +Let's create a basic controller: + + $ rails g controller welcome index + +...and edit `routes.rb` so that the root of the project will point to our newly created welcome#index method: + + root 'welcome#index' + +Running `rails s` from the terminal and browsing to [http://localhost:3000][3] should bring you to the index page. We're not going to make anything fancier to the app, it's just a basic example to prove that when we'll build and deploy the container everything is working. + +### Setup the webserver ### + +We are going to use Unicorn as our webserver. Add `gem 'unicorn'` and `gem 'foreman'` to the Gemfile and bundle it up (run `bundle install` from the command line). + +Unicorn needs to be configured when the Rails app launches, so let's put a **unicorn.rb** file inside the **config** directory. [Here is an example][4] of a Unicorn configuration file. You can just copy & paste the content of the Gist. + +Let's also add a Procfile with the following content inside the root of the project so that we will be able to start the app with foreman: + + web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb + +If you now try to run the app with **foreman start** everything should work as expected and you should have a running app on [http://localhost:5000][5] + +### Building a Docker image ### + +Now let's build the image inside which our app is going to live. In the root of our Rails project, create a file named **Dockerfile** and paste in it the following: + + # Base image with ruby 2.2.0 + FROM ruby:2.2.0 + + # Install required libraries and dependencies + RUN apt-get update && apt-get install -qy nodejs postgresql-client sqlite3 --no-install-recommends && rm -rf /var/lib/apt/lists/* + + # Set Rails version + ENV RAILS_VERSION 4.1.1 + + # Install Rails + RUN gem install rails --version "$RAILS_VERSION" + + # Create directory from where the code will run + RUN mkdir -p /usr/src/app + WORKDIR /usr/src/app + + # Make webserver reachable to the outside world + EXPOSE 3000 + + # Set ENV variables + ENV PORT=3000 + + # Start the web app + CMD ["foreman","start"] + + # Install the necessary gems + ADD Gemfile /usr/src/app/Gemfile + ADD Gemfile.lock /usr/src/app/Gemfile.lock + RUN bundle install --without development test + + # Add rails project (from same dir as Dockerfile) to project directory + ADD ./ /usr/src/app + + # Run rake tasks + RUN RAILS_ENV=production rake db:create db:migrate + +Using the provided Dockerfile, let's try and build an image with the following command[1][7]: + + $ docker build -t localhost:5000/your_username/docker-test . + +And again, if everything worked out correctly, the last line of the long log output should read something like: + + Successfully built 82e48769506c + $ docker images + REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE + localhost:5000/your_username/docker-test latest 82e48769506c About a minute ago 884.2 MB + +Let's try and run the container! + + $ docker run -d -p 3000:3000 --name docker-test localhost:5000/your_username/docker-test + +You should be able to reach your Rails app running inside the Docker container at port 3000 of your boot2docker VM[2][8] (in my case [http://192.168.59.103:3000][6]). + +### Automating with shell scripts ### + +Since you should already know from the previous post3 how to push your newly created image to a private regisitry and deploy it on a server, let's skip this part and go straight to automating the process. + +We are going to define 3 shell scripts and finally tie it all together with rake. + +### Clean ### + +Every time we build our image and deploy we are better off always clean everything. That means the following: + +- stop (if running) and restart boot2docker; +- remove orphaned Docker images (images that are without tags and that are no longer used by your containers). + +Put the following into a **clean.sh** file in the root of your project. + + echo Restarting boot2docker... + boot2docker down + boot2docker up + + echo Exporting Docker variables... + sleep 1 + export DOCKER_HOST=tcp://192.168.59.103:2376 + export DOCKER_CERT_PATH=/Users/user/.boot2docker/certs/boot2docker-vm + export DOCKER_TLS_VERIFY=1 + + sleep 1 + echo Removing orphaned images without tags... + docker images | grep "" | awk '{print $3}' | xargs docker rmi + +Also make sure to make the script executable: + + $ chmod +x clean.sh + +### Build ### + +The build process basically consists in reproducing what we just did before (docker build). Create a **build.sh** script at the root of your project with the following content: + + docker build -t localhost:5000/your_username/docker-test . + +Make the script executable. + +### Deploy ### + +Finally, create a **deploy.sh** script with this content: + + # Open SSH connection from boot2docker to private registry + boot2docker ssh "ssh -o 'StrictHostKeyChecking no' -i /Users/username/.ssh/id_boot2docker -N -L 5000:localhost:5000 root@your-registry.com &" & + + # Wait to make sure the SSH tunnel is open before pushing... + echo Waiting 5 seconds before pushing image. + + echo 5... + sleep 1 + echo 4... + sleep 1 + echo 3... + sleep 1 + echo 2... + sleep 1 + echo 1... + sleep 1 + + # Push image onto remote registry / repo + echo Starting push! + docker push localhost:5000/username/docker-test + +If you don't understand what's going on here, please make sure you've read thoroughfully [part 2][9] of this series of posts. + +Make the script executable. + +### Tying it all together with rake ### + +Having 3 scripts would now require you to run them individually each time you decide to deploy your app: + +1. clean +1. build +1. deploy / push + +That wouldn't be much of an effort, if it weren't for the fact that developers are lazy! And lazy be it, then! + +The final step to wrap things up, is tying the 3 parts together with rake. + +To make things even simpler you can just append a bunch of lines of code to the end of the already present Rakefile in the root of your project. Open the Rakefile file - pun intended :) - and paste the following: + + namespace :docker do + desc "Remove docker container" + task :clean do + sh './clean.sh' + end + + desc "Build Docker image" + task :build => [:clean] do + sh './build.sh' + end + + desc "Deploy Docker image" + task :deploy => [:build] do + sh './deploy.sh' + end + end + +Even if you don't know rake syntax (which you should, because it's pretty awesome!), it's pretty obvious what we are doing. We have declared 3 tasks inside a namespace (docker). + +This will create the following 3 tasks: + +- rake docker:clean +- rake docker:build +- rake docker:deploy + +Deploy is dependent on build, build is dependent on clean. So every time we run from the command line + + $ rake docker:deploy + +All the script will be executed in the required order. + +### Test it ### + +To see if everything is working, you just need to make a small change in the code of your app and run + + $ rake docker:deploy + +and see the magic happening. Once the image has been uploaded (and the first time it could take quite a while), you can ssh into your production server and pull (thru an SSH tunnel) the docker image onto the server and run. It's that easy! + +Well, maybe it takes a while to get accustomed to how everything works, but once it does, it's almost (almost) as easy as deploying with Heroku. + +P.S. As always, please let me have your ideas. I'm not sure this is the best, or the fastest, or the safest way of doing devops with Docker, but it certainly worked out for us. + +- make sure to have **boot2docker** up and running. +- If you don't know your boot2docker VM address, just run `$ boot2docker ip` +- if you don't, you can read it [here][10] + +-------------------------------------------------------------------------------- + +via: http://cocoahunter.com/2015/01/23/docker-3/ + +作者:[Michelangelo Chasseur][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://cocoahunter.com/author/michelangelo/ +[1]:http://cocoahunter.com/docker-1 +[2]:http://cocoahunter.com/2015/01/23/docker-2/ +[3]:http://localhost:3000/ +[4]:https://gist.github.com/chasseurmic/0dad4d692ff499761b20 +[5]:http://localhost:5000/ +[6]:http://192.168.59.103:3000/ +[7]:http://cocoahunter.com/2015/01/23/docker-3/#fn:1 +[8]:http://cocoahunter.com/2015/01/23/docker-3/#fn:2 +[9]:http://cocoahunter.com/2015/01/23/docker-2/ +[10]:http://cocoahunter.com/2015/01/23/docker-2/ \ No newline at end of file From dc77f8c9a5c2ae22f9aaf224d4b5e18ab204c228 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 28 Jan 2015 16:36:59 +0800 Subject: [PATCH 128/725] Translating by ZTinoZ --- ...ux FAQs with Answers--How to check CPU info on Linux.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index f099000ef2..a7c7993d89 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -1,9 +1,8 @@ -Translating by ZTinoZ -Linux FAQs with Answers--How to check CPU info on Linux +Linux有问必答时间--如何查看Linux系统的CPU信息 ================================================================================ -> **Question**: I would like to know detailed information about the CPU processor of my computer. What are the available methods to check CPU information on Linux? +> **问题**: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么? -Depending on your need, there are various pieces of information you may need to know about the CPU processor(s) of your computer, such as CPU vendor name, model name, clock speed, number of sockets/cores, L1/L2/L3 cache configuration, available processor capabilities (e.g., hardware virtualization, AES, MMX, SSE), and so on. In Linux, there are many command line or GUI-based tools that are used to show detailed information about your CPU hardware. +根据你的需要,there are various pieces of information you may need to know about the CPU processor(s) of your computer, such as CPU vendor name, model name, clock speed, number of sockets/cores, L1/L2/L3 cache configuration, available processor capabilities (e.g., hardware virtualization, AES, MMX, SSE), and so on. In Linux, there are many command line or GUI-based tools that are used to show detailed information about your CPU hardware. ### 1. /proc/cpuinfo ### From dd544d31aef81644229c6644d82d30d4f5bb23fb Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Wed, 28 Jan 2015 20:44:04 +0800 Subject: [PATCH 129/725] Delete 20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完成,删除该文档。 --- ...ning up Ubuntu 14.10,14.04,13.10 system.md | 165 ------------------ 1 file changed, 165 deletions(-) delete mode 100644 sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md diff --git a/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md b/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md deleted file mode 100644 index 2c4ee5b2d6..0000000000 --- a/sources/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md +++ /dev/null @@ -1,165 +0,0 @@ -FSSLC Translating ! - -Cleaning up Ubuntu 14.10,14.04,13.10 system -================================================================================ -We have already discussed [Cleaning up a Ubuntu GNU/Linux system][1] and this tutorial is updated with new ubuntu versions and more tools added. - -If you want to clean your ubuntu machine you need to follow these simple steps to remove all unnecessary junk files. - -### Remove partial packages ### - -This is yet another built-in feature, but this time it is not used in Synaptic Package Manager. It is used in the Terminal. Now, in the Terminal, key in the following command - - sudo apt-get autoclean - -Then enact the package clean command. What this commnad does is to clean remove .deb packages that apt caches when you install/update programs. To use the clean command type the following in a terminal window: - - sudo apt-get clean - -You can then use the autoremove command. What the autoremove command does is to remove packages installed as dependencies after the original package is removed from the system. To use autoremove tye the following in a terminal window: - - sudo apt-get autoremove - -### Remove unnecessary locale data ### - -For this we need to install localepurge.Automagically remove unnecessary locale data.This is just a simple script to recover diskspace wasted for unneeded locale files and localized man pages. It will automagically be invoked upon completion of any apt installation run. - -Install localepurge in Ubuntu - - sudo apt-get install localepurge - -After installing anything with apt-get install, localepurge will remove all translation files and translated man pages in languages you cannot read. - -If you want to configure localepurge you need to edit /etc/locale.nopurge - -This can save you several megabytes of disk space, depending on the packages you have installed. - -Example:- - -I am trying to install dicus using apt-get - -sudo apt-get install discus - -after end of this installation you can see something like below - -localepurge: Disk space freed in /usr/share/locale: 41860K - -### Remove "orphaned" packages ### - -If you want to remove orphaned packages you need to install deborphan package. - -Install deborphan in Ubuntu - - sudo apt-get install deborphan - -### Using deborphan ### - -Open Your terminal and enter the following command - - sudo deborphan | xargs sudo apt-get -y remove --purge - -### Remove "orphaned" packages Using GtkOrphan ### - -GtkOrphan (a Perl/Gtk2 application for debian systems) is a graphical tool which analyzes the status of your installations, looking for orphaned libraries. It implements a GUI front-end for deborphan, adding the package-removal capability. - -### Install GtkOrphan in Ubuntu ### - -Open the terminal and run the following command - - sudo apt-get install gtkorphan - -#### Screenshot #### - -![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/41.png) - -### Remove Orphan packages using Wajig ### - -simplified Debian package management front end.Wajig is a single commandline wrapper around apt, apt-cache, dpkg,/etc/init.d scripts and more, intended to be easy to use and providing extensive documentation for all of its functions. - -With a suitable sudo configuration, most (if not all) package installation as well as creation tasks can be done from a user shell. Wajig is also suitable for general system administration.A Gnome GUI command ‘gjig' is also included in the package. - -### Install Wajig in Ubuntu ### - -Open the terminal and run the following command - - sudo apt-get install wajig - -### Debfoster --- Keep track of what you did install ### - -debfoster maintains a list of installed packages that were explicitly requested rather than installed as a dependency. Arguments are entirely optional, debfoster can be invoked per se after each run of dpkg and/or apt-get. - -Alternatively you can use debfoster to install and remove packages by specifying the packages on the command line. Packages suffixed with a --- are removed while packages without a suffix are installed. - -If a new package is encountered or if debfoster notices that a package that used to be a dependency is now an orphan, it will ask you what to do with it. If you decide to keep it, debfoster will just take note and continue. If you decide that this package is not interesting enough it will be removed as soon as debfoster is done asking questions. If your choices cause other packages to become orphaned more questions will ensue. - -### Install debfoster in Ubuntu ### - -Open the terminal and run the following command - - sudo apt-get install debfoster - -### Using debfoster ### - -to create the initial keepers file use the following command - - sudo debfoster -q - -you can always edit the file /var/lib/debfosterkeepers which defines the packages you want to remain on your system. - -to edit the keepers file type - - sudo vi /var/lib/debfoster/keepers - -To force debfoster to remove all packages that aren't listed in this list or dependencies of packages that are listed in this list.It will also add all packages in this list that aren't installed. So it makes your system comply with this list. Do this - - sudo debfoster -f - -To keep track of what you installed additionally do once in a while : - - sudo debfoster - -### xdiskusage -- Check where the space on your hard drive goes ### - -Displays a graphic of your disk usage with du.xdiskusage is a user-friendly program to show you what is using up all your disk space. It is based on the design of the "xdu" program written by Phillip C. Dykstra. Changes have been made so it runs "du" for you, and can display the free space left on the disk, and produce a PostScript version of the display.xdiskusage is nice if you want to easily see where the space on your hard drive goes. - -### Install xdiskusage in Ubuntu ### - - sudo apt-get install xdiskusage - -If you want to open this application you need to use the following command - - sudo xdiskusage - -![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/5.png) - -Once it opens you should see similar to the following screen - -### Bleachbit ### - -BleachBit quickly frees disk space and tirelessly guards your privacy. Free cache, delete cookies, clear Internet history, shred temporary files, delete logs, and discard junk you didn't know was there. Designed for Linux and Windows systems, it wipes clean a thousand applications including Firefox, Internet Explorer, Adobe Flash, Google Chrome, Opera, Safari,and more. Beyond simply deleting files, BleachBit includes advanced features such as shredding files to prevent recovery, wiping free disk space to hide traces of files deleted by other applications, and vacuuming Firefox to make it faster. Better than free, BleachBit is open source. - -### Install Bleachbit in ubuntu ### - -Open the terminal and run the following command - - sudo apt-get install bleachbit - -![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/6.png) - -### Using Ubuntu-Tweak ### - -You can also Use [Ubuntu-Tweak][2] To clean up your system - --------------------------------------------------------------------------------- - -via: http://www.ubuntugeek.com/cleaning-up-a-ubuntu-gnulinux-system-updated-with-ubuntu-14-10-and-more-tools-added.html - -作者:[ruchi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html -[2]:http://www.ubuntugeek.com/www.ubuntugeek.com/install-ubuntu-tweak-on-ubuntu-14-10.html From 1a136b0aaf83e49a543ed41db44b85f94849bd29 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Wed, 28 Jan 2015 21:06:42 +0800 Subject: [PATCH 130/725] Translated "20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完成 "20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md" --- ...ning up Ubuntu 14.10,14.04,13.10 system.md | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md diff --git a/translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md b/translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md new file mode 100644 index 0000000000..a49467781e --- /dev/null +++ b/translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md @@ -0,0 +1,204 @@ +清理 Ubuntu 14.10,14.04,13.10 系统 +================================================================================ +前面我们已经讨论了[如何清理 Ubuntu GNU/Linux 系统][1],这篇教程将在原有教程的基础上,增加对新的 Ubuntu 发行版本的支持,并介绍更多的工具。 + +假如你想清理你的 Ubuntu 主机,你可以按照以下的一些简单步骤来移除所有不需要的垃圾文件。 + +### 移除多余软件包 ### + +这又是一个内置功能,但这次我们不必使用新得立包管理软件(Synaptic Package Manager),而是在终端中达到目的。 + +现在,在终端窗口中键入如下命令: + +``` +sudo apt-get autoclean +``` + +这便激活了包清除命令。这个命令所做的工作是: 自动清除那些当你安装或升级程序时系统所缓存的 `.deb` 包(即清除 `/var/cache/apt/archives` 目录,不过只清理过时的包)。如果需要使用 清除命令,只需在终端窗口中键入以下命令: + +``` +sudo apt-get clean +``` + +然后你就可以使用自动移除命令。这个命令所做的工作是:清除那些 在系统中被某个已经卸载的软件 作为依赖所安装的软件包。要使用自动移除命令,在终端窗口中键入以下命令: + +``` +sudo apt-get autoremove +``` + +### 移除不需要的本地数据 ### + +为达到此目的,我们需要安装 `localepurge` 软件,它将自动移除一些不需要的本地数据。这个软件是一个简单的脚本,它将从那些 不再需要的本地文件和本地联机手册( man pages ) 所占用的空间中回收磁盘空间。这个软件将在任何 apt 安装命令运行时 被自动激活。 + +在 Ubuntu 中安装 `localepurge` + +``` +sudo apt-get install localepurge +``` + +在通过 `apt-get install` 安装任意软件后, localepurge 将移除所有 不是使用你系统中所设定语言的 翻译文件和翻译的联机手册。 + +假如你想设置 `localepurge`,你需要编辑 `/ect/locale.nopurge` 文件。 + +根据你已经安装的软件,这将为你节省几兆的磁盘空间。 + +例子:- + +假如我试着使用 `apt-get` 来安装 `dicus`软件: + +``` +sudo apt-get install discus +``` + +在软件安装完毕之后,你将看到如下提示: + +> localepurge: Disk space freed in /usr/share/locale: 41860K + +### 移除 孤包 ### + +假如你想移除孤包,你需要安装 `deborphan` 软件: + +在 Ubuntu 中安装 `deborphan` : + +``` +sudo apt-get install deborphan +``` + +### 使用 deborphan ### + +打开终端并键入如下命令即可: + +``` +sudo deborphan | xargs sudo apt-get -y remove --purge +``` + +### 使用 GtkOrphan 来移除 孤包 ### + +`GtkOrphan` (一个针对 debian 系发行版本的 Perl/Gtk2 应用) 是一个分析 用户安装过程状态并查找孤立库文件的图形化工具, 它为 `deborphan` 提供了一个 GUI 前端,并具备移除软件包的功能。 + +### 在 Ubuntu 中安装 GtkOrphan ### + +打开终端并运行如下命令: + +``` +sudo apt-get install gtkorphan +``` + +#### 一张截图 #### + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/41.png) + +### 使用 Wajig 移除孤包 ### + +`Wajig`是 Debian 包管理系统中一个简单的软件包管理前端。它将 apt、apt-cache、 dpkg、 /etc/init.d 中的脚本等 通过一个单一命令集成在一起,它的设计初衷是 使用简单 和 为它所包含的函数提供丰富的文档。 + +通过适当的 `sudo`配置,大多数(如果不是全部)的软件包安装和创建等任务可以通过 一个用户 shell 来完成。`Wajig` 也适用于一般的系统管理。另外,一个 Gnome GUI 命令 `gjig`也被囊括在这个软件包之中。 + +### 在 Ubuntu 中安装 Wajig ### + +打开终端并运行如下命令: + +``` +sudo apt-get install wajig +``` + +### Debfoster --- 跟踪你在安装过程中的操作 ### + +debfoster 将会维护一个列有 被明确要求安装的软件包的列表,但不包括那些作为某个软件的依赖而被安装的软件包。参数是完全可选的,你甚至可以使得 在 dpkg 和/或 apt-get 每次运行之后的每一秒内 激活 debfoster 。 + +另外,你还可以在命令行中使用 debfoster 来安装或移除某些特定的软件包。那些后缀为 `---` 的软件包将会被移除,而没有后缀的软件包将会被安装。 + +假如一个新的软件包或 debfoster 注意到 作为某个软件包的依赖的软件包 是一个孤包,则 debfoster 将会询问你下一步如何操作。若你决定保留这个孤包, debfoster 将只会进行记录并继续安装过程;若你觉得这个软件包不足以引起你的兴趣,在 debfoster 询问这个问题后,它将移除这个软件包。进一步的,如果你的决定使得其他的软件包变为孤包,更多的提问将会接踵而来。 + +### 在 Ubuntu 中安装 debfoster ### + +打开终端并运行如下命令: + +``` +sudo apt-get install debfoster +``` + +### 使用 debfoster ### + +为了创建一个 初始跟踪文件,可以使用如下命令: + +``` +sudo debfoster -q +``` + +你总可以编辑 `/var/lib/debfoster/keepers` 文件,来定义那些 你想留在系统中的软件包。 + +为了编辑这个文件,可以键入: + +``` +sudo vi /var/lib/debfoster/keepers +``` + +强制使 debfoster 去移除 所有没有被列在上面这个文件的软件包 或 安装作为某些列在这个文件中的软件包的依赖, 它也会添加所有在这个列表中没有被安装的软件包。若要根据这个列表来执行相关操作,只需执行 + +``` +sudo debfoster -f +``` + +若需要跟踪你新安装的软件包,你需要时不时地执行如下命令: + +``` +sudo debfoster +``` + +### xdiskusage -- 查看你的硬盘空间都去哪儿了 ### + +图形化地展示磁盘使用情况的 du.xdiskusage 是一个用户友好型程序,它将为你展示你所有磁盘的使用情况。 它是在 Phillip C. Dykstra 所写的 “xdu” 程序的基础上设计的。一些改变使得它可以为你运行 “du”命令,并显示磁盘的剩余空间,并且假如你想清晰地了解你的磁盘空间都去哪儿了,它还可以生成一个 PostScript 格式的名为 display.xdiskusage 的文件。 + +### 在 Ubuntu 中安装 xdiskusage ### + +只需使用如下命令: + +``` +sudo apt-get install xdiskusage +``` + +若你想打开这个应用,你需要使用如下命令: + +``` +sudo xdiskusage +``` + +一旦这个应用被打开,你将看到如下图所示的界面: + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/5.png) + + +### Bleachbit ### + +BleachBit 能快速地释放磁盘空间并不知疲倦地保护你的隐私。它可以 释放缓存,删除 cookie,清除 Internet 上网历史,粉碎临时文件,删除日志,丢弃你所不知道存在何处的垃圾。为 Linux 和 Windows 系统设计,它支持擦除清理数以千计的应用程序,如 Firefox, Internet Explorer, Adobe Flash, Google Chrome, Opera, Safari 等等。除了简单地删除文件,BleachBit 还包括许多高级功能,诸如 粉碎文件以防止恢复,擦除磁盘空间 来隐藏被其他应用程序所删除文件的痕迹,为火狐“除尘”,使其速度更快等。比免费更好,BleachBit 是一个开源软件。 + +### 在 Ubuntu 中安装 Bleachbit ### + +打开终端并运行如下命令: + +``` +sudo apt-get install bleachbit +``` + +### 一张截图 ### + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/6.png) + +### 使用 Ubuntu-Tweak ### + +最后,你也可以使用 [Ubuntu-Tweak][2] 来清理你的系统。 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/cleaning-up-a-ubuntu-gnulinux-system-updated-with-ubuntu-14-10-and-more-tools-added.html + +作者:[ruchi][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html +[2]:http://www.ubuntugeek.com/www.ubuntugeek.com/install-ubuntu-tweak-on-ubuntu-14-10.html From b9aaa625d48b6171ff286fdd88de6973004a1d0e Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 21:08:50 +0800 Subject: [PATCH 131/725] Update 20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md --- ...How To Check If A Package Is Installed Or Not In Ubuntu.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md index 6b68f02b1e..7fe8ae172c 100644 --- a/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md +++ b/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md @@ -1,3 +1,5 @@ +Translating-----geekpi + Linux Basics: How To Check If A Package Is Installed Or Not In Ubuntu ================================================================================ ![](http://180016988.r.cdn77.net/wp-content/uploads/2014/04/ubuntu-790x558.png) @@ -134,4 +136,4 @@ via: http://www.unixmen.com/linux-basics-check-package-installed-not-ubuntu/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.unixmen.com/author/sk/ \ No newline at end of file +[a]:http://www.unixmen.com/author/sk/ From 4ad74fa941a3713540e25d57a90448c84feb9e3b Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 21:22:44 +0800 Subject: [PATCH 132/725] translated --- ...A Package Is Installed Or Not In Ubuntu.md | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) rename {sources => translated}/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md (77%) diff --git a/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md similarity index 77% rename from sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md rename to translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md index 7fe8ae172c..9139b8dd92 100644 --- a/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md +++ b/translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md @@ -1,18 +1,16 @@ -Translating-----geekpi - -Linux Basics: How To Check If A Package Is Installed Or Not In Ubuntu +Linux 基础:如何在Ubuntu上检查是否已经安装了一个包 ================================================================================ ![](http://180016988.r.cdn77.net/wp-content/uploads/2014/04/ubuntu-790x558.png) -If you’re managing Debian or Ubuntu servers, probably, you may use **dpkg** or **apt-get** commands often. These two commands are used to install, remove, update packages. +如果你正在管理Debian或者Ubuntu服务器,你也许会经常使用**dpkg** 或者 **apt-get**命令。这两个命令用来安装、卸载和更新包。 -In this brief tutorial, let us see how to check if a package is installed or not in DEB based systems. +在本篇中,让我们看下如何在基于DEB的系统下检查是否安装了一个包。 -To check whether a particular package for example firefox, is installed or not using command: +要检查特定的包,比如firefox是否安装了,使用这个命令: dpkg -s firefox -Sample output: +示例输出: Package: firefox Status: install ok installed @@ -38,13 +36,13 @@ Sample output: and integrated search let you get the most out of the web. Xul-Appid: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} -As you see in the above output, the firefox is installed. +如上所见,firefox已经安装了。 -Also, you can do the same using **dpkg-query** command. This command displays the decent output, and ofcourse, you can wild cards too. +同样,你可以使用**dpkg-query** 命令。这个命令会有一个更好的输出,当然,你可以用通配符。 dpkg-query -l firefox -Sample output: +示例输出: Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend @@ -53,11 +51,11 @@ Sample output: +++-====================================-=======================-=======================-============================================================================= ii firefox 35.0+build3-0ubuntu0.14 amd64 Safe and easy web browser from Mozilla -To list all installed package in your system, enter the following command +要列出你系统中安装的包,输入下面的命令: dpkg --get-selections -Sample output: +示例输出: abiword install abiword-common install @@ -81,13 +79,13 @@ Sample output: zlib1g:amd64 install zlib1g:i386 install -The above might be very long depending upon the number of packages you have installed on your system. +上面的输出可能会非常长,这依赖于你的系统已安装的包。 -You can also filter through **grep** to get results for the exact package you need. For example, I want to see which gcc packages are already installed on my system using **dpkg** command: +你同样可以通过**grep**来过滤割到更精确的包。比如,我想要使用**dpkg**命令查看系统中安装的gcc包: dpkg --get-selections | grep gcc -Sample output: +示例输出: gcc install gcc-4.8 install @@ -99,11 +97,11 @@ Sample output: libgcc1:amd64 install libgcc1:i386 install -Additionally, you can find location of the files within a package using the parameter “**-L**”. +额外的,你可以使用“**-L**”参数来找出包中文件的位置。 dpkg -L gcc-4.8 -Sample output: +示例输出: /. /usr @@ -122,16 +120,16 @@ Sample output: /usr/bin/x86_64-linux-gnu-gcc-ar-4.8 /usr/bin/x86_64-linux-gnu-gcov-4.8 -That’s all for now. Hope this short tutorial will useful for you. +就是这样了。希望这篇对你有用。 -Good day! +美好的一天! -------------------------------------------------------------------------------- via: http://www.unixmen.com/linux-basics-check-package-installed-not-ubuntu/ 作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 9b23ad7309c2fcad36cf88c9feb0ffad9da26917 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 21:28:56 +0800 Subject: [PATCH 133/725] Rename translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md to sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md --- ...cs--How To Check If A Package Is Installed Or Not In Ubuntu.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated => sources}/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md (100%) diff --git a/translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md similarity index 100% rename from translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md rename to sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md From ab71b2b62bf5448d4986411c7ce0bcc7f906ebd4 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 28 Jan 2015 21:30:00 +0800 Subject: [PATCH 134/725] translated --- ...cs--How To Check If A Package Is Installed Or Not In Ubuntu.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md (100%) diff --git a/sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md similarity index 100% rename from sources/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md rename to translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md From 4854a7761095b1b10506828ba05337baaed2eb6a Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 29 Jan 2015 08:53:56 +0800 Subject: [PATCH 135/725] Update 20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【translating】准备翻译这篇文章。 --- ...nd And Remove Duplicate Files Instantly From Hard Drive.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md b/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md index d81a33de40..b9e9598d16 100644 --- a/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md +++ b/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md @@ -1,3 +1,5 @@ +Translating by FSSlc + dupeGuru – Find And Remove Duplicate Files Instantly From Hard Drive ================================================================================ ### Introduction ### @@ -95,4 +97,4 @@ via: http://www.unixmen.com/dupeguru-find-remove-duplicate-files-instantly-hard- [a]:http://www.unixmen.com/author/sk/ [1]:http://www.hardcoded.net/dupeguru/ [2]:http://www.hardcoded.net/dupeguru_me/ -[3]:http://www.hardcoded.net/dupeguru_pe/ \ No newline at end of file +[3]:http://www.hardcoded.net/dupeguru_pe/ From 77d386e9c72afc3ccbaaa057e5d09e1493f7766e Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 29 Jan 2015 10:48:40 +0800 Subject: [PATCH 136/725] translating --- .../20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md b/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md index 2a004ed174..489e78dfaf 100644 --- a/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md +++ b/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md @@ -1,3 +1,5 @@ +Translating---geekpi + LinSSID – A Graphical Wi-Fi Scanner for Linux ================================================================================ ### Introduction ### @@ -58,4 +60,4 @@ via: http://www.unixmen.com/linssid-graphical-wi-fi-scanner-linux/ [a]:http://www.unixmen.com/author/sk/ [1]:http://sourceforge.net/projects/linssid/files/ -[2]:http://sourceforge.net/projects/linssid/ \ No newline at end of file +[2]:http://sourceforge.net/projects/linssid/ From 17e8c6440bc21ca8c8068170b2ed2f1532c461b5 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Thu, 29 Jan 2015 10:55:40 +0800 Subject: [PATCH 137/725] [translating] 20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md --- ...ll Primer--Master Your Linux OS X Unix Shell Environment.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md b/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md index eafc6d21e5..4f46e43dd7 100644 --- a/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md +++ b/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md @@ -1,3 +1,4 @@ +zpl1025 A Shell Primer: Master Your Linux, OS X, Unix Shell Environment ================================================================================ On a Linux or Unix-like systems each user and process runs in a specific environment. An environment includes variables, settings, aliases, functions and more. Following is a very brief introduction to some useful shell environment commands, including examples of how to use each command and setup your own environment to increase productivity in the command prompt. @@ -689,4 +690,4 @@ via: http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx [12]:http://www.cyberciti.biz/faq/fedora-redhat-scientific-linuxenable-bash-completion/ [13]:http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html [14]:http://bash.cyberciti.biz/guide/Setting_shell_options -[15]:http://www.cyberciti.biz/write-for-nixcraft/ \ No newline at end of file +[15]:http://www.cyberciti.biz/write-for-nixcraft/ From 543d0957b8cacf54fa53b02e48cb3d119f2e2f12 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 29 Jan 2015 11:08:31 +0800 Subject: [PATCH 138/725] translated --- ...ID--A Graphical Wi-Fi Scanner for Linux.md | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md b/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md index 489e78dfaf..5935a4545c 100644 --- a/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md +++ b/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md @@ -1,59 +1,58 @@ -Translating---geekpi - -LinSSID – A Graphical Wi-Fi Scanner for Linux +LinSSID - 一款Linux下的图形化Wi-Fi扫描器 ================================================================================ -### Introduction ### +### 介绍 ### -As you may know, **LinSSID** is a simple graphical software that can be used to find the wireless networks available.It is completely open source, written in C++ using Linux wireless tools, Qt5, and Qwt 6.1., and is similar to **Inssider** (MS Windows) in terms of look and functionality. +如你所知,**LinSSID** 是一款可以用于寻找可用无线网络的图形化软件。它完全开源,用C++写成,使用了Linux无线工具、Qt5、Qwt6.1,它在外观和功能上与**Inssider** (MS Windows)相近。 -### Installation ### +### 安装 ### -You can install it either using source, or using a PPA if you use DEB based systems such as Ubuntu, and LinuxMint etc. +你可以使用源码安装,如果你使用的是基于DEB的系统比如Ubuntu和LinuxMint等等,你也可以使用PPA安装。 -You can download and install LinSSID using source packages from [this link][1]. +你可用从[this link][1]这个链接下载并安装LinSSID。 -Here, we will install and test this software on Ubuntu 14.04 LTS using PPA. +这里我门将使用PPA来安装并测试这个软件。 -Add the LinSSID PPA, and install it by typing. +添加LinSSID的PPA并输入下面的命令安装。 sudo add-apt-repository ppa:wseverin/ppa sudo apt-get update sudo apt-get install linssid -### Usage ### +### 用法 ### -Once you installed, launch it either from menu or unity. +安装完成之后,你可以从菜单或者unity中启动。 -You”ll be asked to enter the administrative user password of your system. +你将被要求输入管理员密码。 ![Password required for iwlist scan_001](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Password-required-for-iwlist-scan_001.png) -This is how LinSSID interface looks. +这就是LinSSID的界面。 ![LinSSID_002](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/LinSSID_002.png) -Now, select the network interface you used to connect to the Wireless networks, for example wlan0 in my case. Click the Play button to search the list of available wi-fi networks. +现在选择你想要连接无线网络的网卡,比如这里是wlan0.点击Play按钮来搜寻wi-fi网络列表。 -After a new seconds, LinSSID will display the wi-fi networks. +几秒钟之后,LinSSID就会显示wi-fi网络了。 ![LinSSID_003](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/LinSSID_003.png) -As you see in the above screenshot, LinSSID displays the details of SSID names, MAC Id, Channel, Privacy, Cipher, Signal, and Protocol etc. Ofcourse, you can make LinSSID to display more options such as Security, bandwidth details etc. To do that, go to **View** menu, and select the desired option. Also, it displays the graphs of signal strength by channel and over time. Additionally, It works both on 2.4Ghz, and 5Ghz channels. +如你在上面的截屏中所见,LinSSID显示SSID名、MAC ID、通道、隐私、加密方式、信号和协议等等信息。当然,你可以让LinSSID显示更多的选项,比如安全、带宽等等。要显示这些,进入**View**菜单并选择需要的选项。同样,它显示了不同通道中的信号随着时间信号强度的变化。最后,它可以工作在2.4Ghz和5Ghz通道上。 -That’s it. Hope this tool will useful for you. -Cheers!! +就是这样。希望这个工具对你有用。 -Reference Links: +干杯!! -- [LinSSID Homepage][2] +参考链接: + +- [LinSSID 主页][2] -------------------------------------------------------------------------------- via: http://www.unixmen.com/linssid-graphical-wi-fi-scanner-linux/ 作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d561a85fbea44255e02bd2d1577568a8cdb98198 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 29 Jan 2015 11:11:10 +0800 Subject: [PATCH 139/725] Rename sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md to translated/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md --- .../tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md (100%) diff --git a/sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md b/translated/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md similarity index 100% rename from sources/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md rename to translated/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md From 7b143a8b5bcc95550f6577ea400fa095fdf8885e Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 29 Jan 2015 14:42:46 +0800 Subject: [PATCH 140/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...gration From 2.2 to 2.4 on Ubuntu 14.04.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md index f4edd9e627..dc42dae33a 100644 --- a/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md +++ b/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md @@ -1,21 +1,21 @@ -Ubuntu 14.04 Apache2.2迁移2.4问题解决 +小贴士:在 Ubuntu 14.04 中Apache从2.2迁移到2.4的问题 ================================================================================ -如果你进行了一次**Ubuntu**从12.04到14.04的升级,那么这次升级还包括了一个重大的升级--**Apache**从2.2版本到2.4版本。**Apache**的这次升级带来了许多性能提升,但是如果继续使用2.2的配置会导致很多错误。 +如果你进行了一次**Ubuntu**从12.04到14.04的升级,那么它还包括了一个重大的升级--**Apache**从2.2版本升级到2.4版本。**Apache**的这次升级带来了许多性能提升,但是如果继续使用2.2的配置文件会导致很多错误。 ### 访问控制的改变 ### -从**Apache 2.4**起,授权(authorization)开始启用,比起2.2的一个检查一个数据存储,授权更加灵活。过去很难确定那些命令授权应用了,但是授权(authorization)的引入解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 +从**Apache 2.4**起,授权(authorization)开始启用,比起2.2的一个检查一个数据存储,授权更加灵活。过去很难确定授权如何并且以什么样的顺序被应用,但是授权容器指令的介绍解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 这就是为什么大多数的升级失败是由于错误配置,2.2的访问控制基于IP地址,主机名和其他字符通过使用指令Order,来设置Allow, Deny或 Satisfy,但是2.4,这些一切被新模板授权(authorization)来替代检查。 -为了弄清楚这些,可以来看一些虚拟主机的例子,这些可以在/etc/apache2/sites-enabled/default 或者 /etc/apache2/sites-enabled/网页名称 中找到: +为了弄清楚这些,可以来看一些虚拟主机的例子,这些可以在/etc/apache2/sites-enabled/default 或者 /etc/apache2/sites-enabled/你的网页名称 中找到: -老2.2虚拟主机配置: +旧的2.2虚拟主机配置: Order allow,deny Allow from all -新2.4虚拟主机配置: +新的2.4虚拟主机配置: Require all granted @@ -23,24 +23,24 @@ Ubuntu 14.04 Apache2.2迁移2.4问题解决 ### .htaccess 问题 ### -升级后如果一些设置不执行或者得到重定向错误,检查是否这些设置是在.htaccess文件中。如果是,2.4已经不再使用.htaccess文件,在2.4中默认使用AllowOverride指令来设置,因此忽略了.htaccess文件。你需要做的就是改变和增加AllowOverride All命令到你的页面配置文件中。 +升级后如果一些设置不执行或者得到重定向错误,检查是否这些设置是在.htaccess文件中。如果是,2.4已经不再使用.htaccess文件,在2.4中默认使用AllowOverride指令来设置,因此忽略了.htaccess文件。你需要做的全部就是改变或者添加AllowOverride All命令到你的网站配置文件中。 上面截图中,可以看见AllowOverride All指令。 ### 丢失配置文件或者模块 ### -根据我的经验,这次升级带了其他问题就是老模块和配置文件不再需要或者不被支持了。所以你必须十分清楚Apache不再支持的各种文件,并且在老配置中移除这些老模块来解决问题。之后你可以搜索和安装相似的模块来替代。 +根据我的经验,这次升级带来的另一个问题就是在2.4中旧模块和配置文件不再需要或者不被支持了。你将会收到一条“Apache不能包含这个相应文件”的明确警告,你需要做的是在配置文件中移除这些导致问题的命令行。之后你可以搜索和安装相似的模块来替代。 -### 其他需要的知道的小改变 ### +### 其他需要了解的小改变 ### 这里还有一些其他改变的需要考虑,虽然这些通常只会发生警告,而不是错误。 -- MaxClients重命名为MaxRequestWorkers,使之有更准确的描述。而异步MPM,如event,客服端最大连接数不量比与工作线程数。老名字依然支持。 +- MaxClients重命名为MaxRequestWorkers,使之有更准确的描述。而异步MPM,如event,客户端最大连接数不量比于工作线程数。旧的名字依然支持。 - DefaultType命令无效,使用它已经没有任何效果了。需要使用其他配置设定来替代它 - EnableSendfile默认关闭 - FileETag 默认"MTime Size"(没有INode) -- KeepAlive 只接受On或Off值。之前的任何值不是Off或者0都认为是On -- Mutex 替代 Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex, 和 WatchdogMutexPath 。需要删除或者替代所有2.2老配置的设置。 +- KeepAlive 只接受“On”或“Off”值。之前的任何不是“Off”或者“0”的值都被认为是“On” +- Mutex 已经替代了 Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex 和 WatchdogMutexPath 。你需要做的是估计一下这些被移动的指令在2.2中的使用情况,来决定是否删除或者使用Mutex来替代。 -------------------------------------------------------------------------------- From 46d31701a4ab2de3ceb43f028d0d14f22c94bba8 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 29 Jan 2015 14:43:23 +0800 Subject: [PATCH 141/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md index dc42dae33a..49c465d17d 100644 --- a/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md +++ b/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md @@ -48,7 +48,7 @@ via: http://linoxide.com/linux-how-to/apache-migration-2-2-to-2-4-ubuntu-14-04/ 作者:[Adrian Dinu][a] 译者:[Vic020/VicYu](http://vicyu.net) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7ad95a117bec657a46f4ca6b4bdf635e01c2fe2b Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 29 Jan 2015 20:47:02 +0800 Subject: [PATCH 142/725] Delete 20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕,删除原文。 --- ...plicate Files Instantly From Hard Drive.md | 100 ------------------ 1 file changed, 100 deletions(-) delete mode 100644 sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md diff --git a/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md b/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md deleted file mode 100644 index b9e9598d16..0000000000 --- a/sources/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md +++ /dev/null @@ -1,100 +0,0 @@ -Translating by FSSlc - -dupeGuru – Find And Remove Duplicate Files Instantly From Hard Drive -================================================================================ -### Introduction ### - -Disk full is one of the big trouble for us. No matter how we’re careful, sometimes we might copy the same file to multiple locations, or download the same file twice unknowingly. Therefore, sooner or later we will end up with disk full error message, which is worst when we really need some space to store important data. If you believe your system has multiple duplicate files, then **dupeGuru** might help you. - -dupeGuru team have also developed applications called **dupeGuru Music Edition** to remove duplicate music files, and **dupeGuru Picture Edition** to remove duplicate pictures. - -### 1. dupeGuru (Standard Edition) ### - -For those who don’t know about [dupeGuru][1], It is a free, open source, cross-platform application that can used to find and remove the duplicate files in your system. It will run under Linux, Windows, and Mac OS X platforms. It uses a quick fuzzy matching algorithm to find the duplicate files in minutes. Also, you can tweak dupeGuru to find exactly what kind of duplicate files you want to, and eliminate what kind of files from deletion. It supports English, French, German, Chinese (Simplified), Czech, Italian, Armenian, Russian, Ukrainian, Brazilian, and Vietnamese. - -#### Install dupeGuru On Ubuntu 14.10/14.04/13.10/13.04/12.04 #### - -dupeGuru developers have created a Ubuntu PPA to ease the installation. To install dupeGuru, enter the following commands one by one in your Terminal. - - sudo apt-add-repository ppa:hsoft/ppa - sudo apt-get update - sudo apt-get install dupeguru-se - -#### Usage #### - -Usage is very simple. Launch dupeGuru either from Unity Dash or Menu. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru_007.png) - -Click + button on the bottom, and add the folder you want to scan. Click Scan button to start finding the duplicate files. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru_008.png) - -If the selected folder contains any duplicate files, it will display them. As you in the below screen shot, I have a duplicate file in the Downloads directory. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Results_009.png) - -Now, you can decide what to do. You can either delete the duplicate file, or rename it, or copy/move it to another location. To do that select the duplicate files, or check the box that says “**Dupes only**” on the Menu bar. If you selected the Dupes only option, the duplicates files will only visible. So you can select and delete them easily. Click on the **Actions** drop-down box. Finally, select the action you want to perform. Here, I just want to delete the duplicate file, so I selected the option: **Send marked to Recycle bin**. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Menu_010.png) - -Then, click **Proceed** to delete the duplicate files. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Deletion-Options_011.png) - -### 2. dupeGuru Music Edition ### - -[dupeGuru Music Edition][2] or dupeGuru ME in short, is just like dupeGuru. It does everything dupeGuru does, but it has more information columns (such as bitrate, duration, tags, etc..) and more scan types (filename with fields, tags and audio content). Like dupeGuru, dupeGuru ME also runs on Linux, Windows, and Mac OS X. - -It supports variety of formats such as MP3, WMA, AAC (iTunes format), OGG, FLAC, loss-less AAC and loss-less WMA etc, - -#### Install dupeGuru ME On Ubuntu 14.10/14.04/13.10/13.04/12.04 #### - -Now, we don’t have to add any PPA, because already the added in the previous steps. So, enter the following command to install from your Terminal. - - sudo apt-get install dupeguru-me - -#### Usage #### - -Launch it either from Unity dash or Menu. The usage, interface, and look of dupeGuru ME is similar to normal dupeGuru. Add the folder you to scan and select the action you want to perform. The duplicate music files will be deleted. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Music-Edition-Results_012.png) - -### 3. dupeGuru Picture Edition ### - -[dupeGuru Picture Edition][3], or duepGuru PE in short, is a tool to find duplicate pictures on your computer. It is as like as dupeGuru, but is specialized for duplicate pictures matching. dupeGuru PE runs on Linux, Windows, and Mac OS X. - -dupeGuru PE supports JPG, PNG, TIFF, GIF and BMP formats. All these formats can be compared together. The Mac OS X version of dupeGuru PE also supports PSD and RAW (CR2 and NEF) formats. - -#### Install dupeGuru PE On Ubuntu 14.10/14.04/13.10/13.04/12.04 #### - -As we have already added the PPA, We don’t need to add PPA for dupeGuru either. Just, run the following command to install it. - - sudo apt-get install dupeguru-pe - -#### Usage #### - -It’s also look like dupeGuru, and dupeGuru ME in terms of usage, interface, and look.I wonder why the developer have created there separate versions for each category. It would be better, a single application has all of the above three features combined. - -Launch it, add the folder you want to scan, and select the action you want to perform. That’s it. you duplicated files will be gone. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Picture-Edition-Results_014.png) - -If you can’t remove them in case of any security problems, note down the location of the files, and manually delete them either from Terminal or File manager. - -Cheers! - --------------------------------------------------------------------------------- - -via: http://www.unixmen.com/dupeguru-find-remove-duplicate-files-instantly-hard-drive/ - -作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.unixmen.com/author/sk/ -[1]:http://www.hardcoded.net/dupeguru/ -[2]:http://www.hardcoded.net/dupeguru_me/ -[3]:http://www.hardcoded.net/dupeguru_pe/ From ae1bd97ef60a9230a400cee35df766099a65bef4 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 29 Jan 2015 21:26:35 +0800 Subject: [PATCH 143/725] =?UTF-8?q?=E3=80=90translated=E3=80=91=2020141127?= =?UTF-8?q?=20dupeGuru--Find=20And=20Remove=20Duplicate=20Files=20Instantl?= =?UTF-8?q?y=20From=20Hard=20Drive?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕 “20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive” --- ...plicate Files Instantly From Hard Drive.md | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md diff --git a/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md b/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md new file mode 100644 index 0000000000..17da6a9508 --- /dev/null +++ b/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md @@ -0,0 +1,105 @@ +dupeGuru - 直接从硬盘中查找并移除重复文件 +================================================================================ + +### 简介 ### + +对我们来说,磁盘被装满是一个较大的困扰。无论我们如何小心谨慎,我们总可能将相同的文件复制到多个不同的地方,或者在不知情的情况下,重复下载了同一个文件。因此,迟早你会看到“磁盘已满”的错误提示,若此时我们确实需要一些磁盘空间来存储重要数据,以上情形无疑是最糟糕的。假如你确信自己的系统中有重复文件,那么 **dupeGuru** 可能会帮助到你。 + +dupeGuru 团队也开发了名为 **dupeGuru 音乐版** 的应用来移除重复的音乐文件,和名为 **dupeGuru 图片版** 的应用来移除重复的图片文件。 + +### 1. dupeGuru (标准版) ### + +对于那些不熟悉 [dupeGuru][1] 的人来说,它是一个免费,开源,跨平台的应用,其用途是在系统中查找和移除重复文件。它可以在 Linux, Windows, 和 Mac OS X 等平台下使用。通过使用一个快速的模糊匹配算法,它可以在几分钟内找到重复文件。同时,你还可以调整 dupeGuru 使它去精确查找特定文件类型的重复文件,以及从你想删除的文件中,消除特定的某些文件。它支持英语、 法语、 德语、 中文 (简体)、 捷克语、 意大利语、亚美尼亚语、 俄语、乌克兰语、巴西语和越南语。 + +#### 在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru #### + +dupeGuru 开发者已经构建了一个 Ubuntu PPA (Personal Package Archives)来简化安装过程。为了安装 dupeGuru,依次在终端中键入以下命令: + +``` +sudo apt-add-repository ppa:hsoft/ppa +sudo apt-get update +sudo apt-get install dupeguru-se +``` + +### 使用 ### + +使用非常简单,可从 Unity 面板或菜单中启动 dupeGuru 。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru_007.png) + +点击位于底部的 `+` 按钮来添加你想扫描的文件目录。点击 `扫描` 按钮开始查找重复文件。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru_008.png) + +一旦所选目录中含有重复文件,则它将在窗口中展示重复文件。正如你所看到的,在下面的截图中,我的下载目录中有一个重复文件。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Results_009.png) + +现在,你可以决定下一步如何操作。你可以删除这个重复的文件,或者对它进行重命名,抑或是 复制/移动 这个文件到另一个位置。为此,选定该重复文件,或 在菜单栏中选定写有“**仅显示重复**”选项 ,如果你选择了“**仅显示重复**”选项,则只有重复文件在窗口中可见,这样你便可以轻易地选择并删除这些文件。点击“操作”下拉菜单,最后选择你将执行的操作。在这里,我只想删除重复文件,所以我选择了“移动标记文件到垃圾箱”这个选项。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Menu_010.png) + +接着,点击“继续”选项来移除重复文件。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Deletion-Options_011.png) + +### 2. dupeGuru 音乐版 ### + +[dupeGuru 音乐版][2] 或 简称 dupeGuru ME ,它的功能与 dupeGuru 类似。它拥有 dupeGuru 的所有功能,但它包含更多的信息列 (如比特率,持续时间,标签等)和更多的扫描类型(如带有字段的文件名,标签以及音频内容)。同 dupeGuru 一样, dupeGuru ME 也运行在 Linux, Windows, 和 Mac OS X 中。 + +它支持众多的格式,诸如 MP3, WMA, AAC (iTunes 格式), OGG, FLAC, 即失真率较少的 AAC 和 WMA 格式等。 + +#### 在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru ME #### + +现在,我们不必再添加任何 PPA,因为在前面的步骤中,我们已经进行了添加。所以在终端中键入以下命令来安装它: + +``` +sudo apt-get install dupeguru-me +``` + +### 使用 ### + +你可以从 Unity 面板或菜单中启动它。dupeGuru ME 的使用方法,操作界面和外观与正常的 dupeGuru 类似。添加你想扫描的目录并选择你想执行的操作。重复的音乐文件就会被删除。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Music-Edition-Results_012.png) + +### 3. dupeGuru 图片版 ### + +[dupeGuru 图片版][3],或简称为 duepGuru PE,是一个在你的电脑中查找重复图片的工具。它与 dupeGuru 类似,但独具匹配重复图片的功能。dupeGuru PE 可运行在 Linux, Windows, 和 Mac OS X 中。 + +dupeGuru PE 支持 JPG, PNG, TIFF, GIF 和 BMP 等图片格式。所有的这些格式可以被同时比较。Mac OS X 版的 dupeGuru PE 还支持 PSD 和 RAW (CR2 和 NEF) 格式。 + +#### 在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru PE #### + +由于我们已经添加了 PPA, 我们也不必为 dupeGuru PE 添加 PPA。只需运行如下命令来安装它。 + +``` +sudo apt-get install dupeguru-pe +``` + +#### 使用 #### + +就使用方法,操作界面和外观而言,它与 dupeGuru ,dupeGuru ME 类似。我就纳闷为什么开发者为不同的类别开发了不同的版本。我想如果开发一个结合以上三个版本功能的应用,或许会更好。 + +启动它,添加你想扫描的目录,并选择你想执行的操作。就这样,你的重复文件将消失。 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Picture-Edition-Results_014.png) + +如若因为任何的安全问题而不能移除某些重复文件,请记下这些文件的位置,通过终端或文件管理器来手动删除它们。 + +欢呼吧! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/dupeguru-find-remove-duplicate-files-instantly-hard-drive/ + +作者:[SK][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:http://www.hardcoded.net/dupeguru/ +[2]:http://www.hardcoded.net/dupeguru_me/ +[3]:http://www.hardcoded.net/dupeguru_pe/ From c2d349c526fb7937b23c78f2cd217f4c5b4384a9 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 30 Jan 2015 08:12:32 +0800 Subject: [PATCH 144/725] PUB:20141203 Docker--Present and Future MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @disylee 这篇是挺难的,我校对也花了一晚上呢,辛苦你啦~ --- .../20141203 Docker--Present and Future.md | 158 ++++++++++++++++ .../20141203 Docker--Present and Future.md | 168 ------------------ 2 files changed, 158 insertions(+), 168 deletions(-) create mode 100644 published/20141203 Docker--Present and Future.md delete mode 100644 translated/talk/20141203 Docker--Present and Future.md diff --git a/published/20141203 Docker--Present and Future.md b/published/20141203 Docker--Present and Future.md new file mode 100644 index 0000000000..bdec540363 --- /dev/null +++ b/published/20141203 Docker--Present and Future.md @@ -0,0 +1,158 @@ +Docker 的现状与未来 +================================================================================ + +### Docker - 迄今为止发生的那些事情 ### + +Docker 是一个专为 Linux 容器而设计的工具集,用于‘构建、交付和运行’分布式应用。它最初是 DotCloud 的一个开源项目,于2013年3月发布。这个项目越来越受欢迎,以至于 DotCloud 公司都更名为 Docker 公司(并最终[出售了原有的 PaaS 业务][1])。[Docker 1.0][2]是在2014年6月发布的,而且延续了之前每月更新一个版本的传统。 + +Docker 1.0版本的发布标志着 Docker 公司认为该平台已经充分成熟,足以用于生产环境中(由该公司与合作伙伴提供付费支持选择)。每个月发布的更新表明该项目正在迅速发展,比如增添一些新特性、解决一些他们发现的问题。该项目已经成功地分离了‘运行’和‘交付’两件事,所以来自任何版本的 Docker 镜像源都可以与其它版本共同使用(具备向前和向后兼容的特性),这为 Docker 应对快速变化提供了稳定的保障。 + +Docker 之所以能够成为最受欢迎的开源项目之一可能会被很多人看做是炒作,但是也是由其坚实的基础所决定的。Docker 的影响力已经得到整个行业许多大企业的支持,包括亚马逊, Canonical 公司, CenturyLink, 谷歌, IBM, 微软, New Relic, Pivotal, 红帽和 VMware。这使得只要有 Linux 的地方,Docker 就可以无处不在。除了这些鼎鼎有名的大公司以外,许多初创公司也在围绕着 Docker 发展,或者改变他们的发展方向来与 Docker 更好地结合起来。这些合作伙伴们(无论大或小)都将帮助推动 Docker 核心项目及其周边生态环境的快速发展。 + +### Docker 技术简要综述 ### + +Docker 利用 Linux 的一些内核机制例如 [cGroups][3]、命名空间和 [SElinux][4] 来实现容器之间的隔离。起初 Docker 只是 [LXC][5] 容器管理器子系统的前端,但是在 0.9 版本中引入了 [libcontainer][6],这是一个原生的 go 语言库,提供了用户空间和内核之间的接口。 + +容器是基于 [AUFS][7] 这样的联合文件系统的,它允许跨多个容器共享组件,如操作系统镜像和已安装的相关库。这种文件系统的分层方法也被 [Dockerfile][8] 的 DevOps 工具所利用,这些工具能够缓存成功完成的操作。这就省下了安装操作系统和相关应用程序依赖包的时间,极大地加速测试周期。另外,在容器之间的共享库也能够减少内存的占用。 + +一个容器是从一个镜像开始运行的,它可以来自本地创建,本地缓存,或者从一个注册库(registry)下载。Docker 公司运营的 [Docker Hub 公有注册库][9],为各种操作系统、中间件和数据库提供了官方仓库存储。各个组织和个人都可以在 docker Hub 上发布的镜像的公有库,也可以注册成私有仓库。由于上传的镜像可以包含几乎任何内容,所以 Docker 提供了一种自动构建工具(以往称为“可信构建”),镜像可以从一种称之为 Dockerfile 的镜像内容清单构建而成。 + +### 容器 vs. 虚拟机 ### + +容器会比虚拟机更高效,因为它们能够分享一个内核和分享应用程序库。相比虚拟机系统,这也将使得 Docker 使用的内存更小,即便虚拟机利用了内存超量使用的技术。部署容器时共享底层的镜像层也可以减少存储占用。IBM 的 Boden Russel 已经做了一些[基准测试][10]来说明两者之间的不同。 + +相比虚拟机系统,容器具有较低系统开销的优势,所以在容器中,应用程序的运行效率将会等效于在同样的应用程序在虚拟机中运行,甚至效果更佳。IBM 的一个研究团队已经发表了一本名为[虚拟机与 Linux 容器的性能比较]的文章[11]。 + +容器只是在隔离特性上要比虚拟机逊色。虚拟机可以利用如 Intel 的 VT-d 和 VT-x 技术的 ring-1 [硬件隔离][12]技术。这种隔离可以防止虚拟机突破和彼此交互。而容器至今还没有任何形式的硬件隔离,这使它容易受到攻击。一个称为 [Shocker][13] 的概念攻击验证表明,在 Docker 1.0 之前的版本是存在这种脆弱性的。尽管 Docker 1.0 修复了许多由 Shocker 漏洞带来的较为严重的问题,Docker 的 CTO Solomon Hykes 仍然[说][14],“当我们可以放心宣称 Docker 的开箱即用是安全的,即便是不可信的 uid0 程序(超级用户权限程序),我们将会很明确地告诉大家。”Hykes 的声明承认,其漏洞及相关的风险依旧存在,所以在容器成为受信任的工具之前将有更多的工作要做。 + +对于许多用户案例而言,在容器和虚拟机之间二者选择其一是种错误的二分法。Docker 同样可以在虚拟机中工作的很好,这让它可以用在现有的虚拟基础措施、私有云或者公有云中。同样也可以在容器里跑虚拟机,这也类似于谷歌在其云平台的使用方式。像 IaaS 服务这样普遍可用的基础设施,能够即时提供所需的虚拟机,可以预期容器与虚拟机一起使用的情景将会在数年后出现。容器管理和虚拟机技术也有可能被集成到一起提供一个两全其美的方案;这样,一个硬件信任锚微虚拟化所支撑的 libcontainer 容器,可与前端 Docker 工具链和生态系统整合,而使用提供更好隔离性的不同后端。微虚拟化(例如 Bromium 的 [vSentry][15] 和 VMware 的 [Project Fargo][16])已经用于在桌面环境中以提供基于硬件的应用程序隔离,所以类似的方法也可以用于 libcontainer,作为 Linux内核中的容器机制的替代技术。 + +### ‘容器化’ 的应用程序 ### + +几乎所有 Linux 应用程序都可以在 Docker 容器中运行,并没有编程语言或框架的限制。唯一的实际限制是以操作系统的角度来允许容器做什么。即使如此,也可以在特权模式下运行容器,从而大大减少了限制(与之对应的是容器中的应用程序的风险增加,可能导致损坏主机操作系统)。 + +容器都是从镜像开始运行的,而镜像也可以从运行中的容器获取。本质上说,有两种方法可以将应用程序放到容器中,分别是手动构建和 Dockerfile。 + +#### 手动构建 #### + +手动构建从启动一个基础的操作系统镜像开始,然后在交互式终端中用你所选的 Linux 提供的包管理器安装应用程序及其依赖项。Zef Hemel 在‘[使用 Linux 容器来支持便携式应用程序部署][17]’的文章中讲述了他部署的过程。一旦应用程序被安装之后,容器就可以被推送至注册库(例如Docker Hub)或者导出为一个tar文件。 + +#### Dockerfile #### + +Dockerfile 是一个用于构建 Docker 容器的脚本化系统。每一个 Dockerfile 定义了开始的基础镜像,以及一系列在容器中运行的命令或者一些被添加到容器中的文件。Dockerfile 也可以指定对外的端口和当前工作目录,以及容器启动时默认执行的命令。用 Dockerfile 构建的容器可以像手工构建的镜像一样推送或导出。Dockerfile 也可以用于 Docker Hub 的自动构建系统,即在 Docker 公司的控制下从头构建,并且该镜像的源代码是任何需要使用它的人可见的。 + +#### 单进程? #### + +无论镜像是手动构建还是通过 Dockerfile 构建,有一个要考虑的关键因素是当容器启动时仅启动一个进程。对于一个单一用途的容器,例如运行一个应用服务器,运行一个单一的进程不是一个问题(有些关于容器应该只有一个单独的进程的争议)。对于一些容器需要启动多个进程的情况,必须先启动 [supervisor][18] 进程,才能生成其它内部所需的进程。由于容器内没有初始化系统,所以任何依赖于 systemd、upstart 或类似初始化系统的东西不修改是无法工作的。 + +### 容器和微服务 ### + +全面介绍使用微服务结构体系的原理和好处已经超出了这篇文章的范畴(在 [InfoQ eMag: Microservices][19] 有全面阐述)。然而容器是绑定和部署微服务实例的捷径。 + +大规模微服务部署的多数案例都是部署在虚拟机上,容器只是用于较小规模的部署上。容器具有共享操作系统和公用库的的内存和硬盘存储的能力,这也意味着它可以非常有效的并行部署多个版本的服务。 + +### 连接容器 ### + +一些小的应用程序适合放在单独的容器中,但在许多案例中应用程序需要分布在多个容器中。Docker 的成功包括催生了一连串新的应用程序组合工具、编制工具及平台作为服务(PaaS)的实现。在这些努力的背后,是希望简化从一组相互连接的容器来创建应用的过程。很多工具也在扩展、容错、性能管理以及对已部署资产进行版本控制方面提供了帮助。 + +#### 连通性 #### + +Docker 的网络功能是相当原始的。在同一主机,容器内的服务可以互相访问,而且 Docker 也可以通过端口映射到主机操作系统,使服务可以通过网络访问。官方支持的提供连接能力的库叫做 [libchan][20],这是一个提供给 Go 语言的网络服务库,类似于[channels][21]。在 libchan 找到进入应用的方法之前,第三方应用仍然有很大空间可提供配套的网络服务。例如,[Flocker][22] 已经采取了基于代理的方法使服务实现跨主机(以及底层存储)的移植。 + +#### 合成 #### + +Docker 本身拥有把容器连接在一起的机制,与元数据相关的依赖项可以被传递到相依赖的容器中,并用于环境变量和主机入口。如 [Fig][23] 和 [geard][24] 这样的应用合成工具可以在单一文件中展示出这种依赖关系图,这样多个容器就可以汇聚成一个连贯的系统。CenturyLink 公司的 [Panamax][25] 合成工具类似 Fig 和 geard 的底层实现方法,但新增了一些基于 web 的用户接口,并直接与 GitHub 相结合,以便于应用程序分享。 + +#### 编制 #### + +像 [Decking][26]、New Relic 公司的 [Centurion][27] 和谷歌公司的 [Kubernetes][28] 这样的编制系统都是旨在协助容器的部署和管理其生命周期系统。也有许多 [Apache Mesos][30] (特别是 [Marathon(马拉松式)持续运行很久的框架])的案例(例如[Mesosphere][29])已经被用于配合 Docker 一起使用。通过为应用程序与底层基础架构之间(例如传递 CPU 核数和内存的需求)提供一个抽象的模型,编制工具提供了两者的解耦,简化了应用程序开发和数据中心操作。有很多各种各样的编制系统,因为许多来自内部系统的以前开发的用于大规模容器部署的工具浮现出来了;如 Kubernetes 是基于谷歌的 [Omega][32] 系统的,[Omega][32] 是用于管理遍布谷歌云环境中容器的系统。 + +虽然从某种程度上来说合成工具和编制工具的功能存在重叠,但这也是它们之间互补的一种方式。例如 Fig 可以被用于描述容器间如何实现功能交互,而 Kubernetes pods(容器组)可用于提供监控和扩展。 + +#### 平台(即服务)#### + +有一些 Docker 原生的 PaaS 服务实现,例如 [Deis][33] 和 [Flynn][34] 已经显现出 Linux 容器在开发上的的灵活性(而不是那些“自以为是”的给出一套语言和框架)。其它平台,例如 CloudFoundry、OpenShift 和 Apcera Continuum 都已经采取将 Docker 基础功能融入其现有的系统的技术路线,这样基于 Docker 镜像(或者基于 Dockerfile)的应用程序也可以与之前用支持的语言和框架的开发的应用一同部署和管理。 + +### 所有的云 ### + +由于 Docker 能够运行在任何正常更新内核的 Linux 虚拟机中,它几乎可以用在所有提供 IaaS 服务的云上。大多数的主流云厂商已经宣布提供对 Docker 及其生态系统的支持。 + +亚马逊已经把 Docker 引入它们的 Elastic Beanstalk 系统(这是在底层 IaaS 上的一个编制系统)。谷歌使 Docker 成为了“可管理的 VM”,它提供了GAE PaaS 和GCE IaaS 之间的中转站。微软和 IBM 也都已经宣布了基于 Kubernetes 的服务,这样可以在它们的云上部署和管理多容器应用程序。 + +为了给现有种类繁多的后端提供可用的一致接口,Docker 团队已经引进 [libswarm][35], 它可以集成于众多的云和资源管理系统。Libswarm 所阐明的目标之一是“通过切换服务来源避免被特定供应商套牢”。这是通过呈现一组一致的服务(与API相关联的)来完成的,该服务会通过特定的后端服务所实现。例如 Docker 服务器将支持本地 Docker 命令行工具的 Docker 远程 API 调用,这样就可以管理一组服务供应商的容器了。 + +基于 Docker 的新服务类型仍在起步阶段。总部位于伦敦的 Orchard 实验室提供了 Docker 的托管服务,但是 Docker 公司表示,收购 Orchard 后,其相关服务不会置于优先位置。Docker 公司也出售了之前 DotCloud 的PaaS 业务给 cloudControl。基于更早的容器管理系统的服务例如 [OpenVZ][36] 已经司空见惯了,所以在一定程度上 Docker 需要向主机托管商们证明其价值。 + +### Docker 及其发行版 ### + +Docker 已经成为大多数 Linux 发行版例如 Ubuntu、Red Hat 企业版(RHEL)和 CentOS 的一个标准功能。遗憾的是这些发行版的步调和 Docker 项目并不一致,所以在发布版中找到的版本总是远远落后于最新版本。例如 Ubuntu 14.04 版本中的版本是 Docker 0.9.1,而当 Ubuntu 升级至 14.04.1 时 Docker 版本并没有随之升级(此时 Docker 已经升至 1.1.2 版本)。在发行版的软件仓库中还有一个名字空间的冲突,因为 “Docker” 也是 KDE 系统托盘的名字;所以在 Ubuntu 14.04 版本中相关安装包的名字和命令行工具都是使用“Docker.io”的名字。 + +在企业级 Linux 的世界中,情况也并没有因此而不同。CentOS 7 中的 Docker 版本是 0.11.1,这是 Docker 公司宣布准备发行 Docker 1.0 产品版本之前的开发版。Linux 发行版用户如果希望使用最新版本以保障其稳定、性能和安全,那么最好地按照 Docker 的[安装说明][37]进行,使用 Docker 公司的所提供的软件库而不是采用发行版的。 + +Docker 的到来也催生了新的 Linux 发行版,如 [CoreOS][38] 和红帽的 [Project Atomic][39],它们被设计为能运行容器的最小环境。这些发布版相比传统的发行版,带着更新的内核及 Docker 版本,对内存的使用和硬盘占用率也更低。新发行版也配备了用于大型部署的新工具,例如 [fleet][40](一个分布式初始化系统)和[etcd][41](用于元数据管理)。这些发行版也有新的自我更新机制,以便可以使用最新的内核和 Docker。这也意味着使用 Docker 的影响之一是它抛开了对发行版和相关的包管理解决方案的关注,而对 Linux 内核(及使用它的 Docker 子系统)更加关注。 + +这些新发行版也许是运行 Docker 的最好方式,但是传统的发行版和它们的包管理器对容器来说仍然是非常重要的。Docker Hub 托管的官方镜像有 Debian、Ubuntu 和 CentOS,以及一个‘半官方’的 Fedora 镜像库。RHEL 镜像在Docker Hub 中不可用,因为它是 Red Hat 直接发布的。这意味着在 Docker Hub 的自动构建机制仅仅用于那些纯开源发行版下(并愿意信任那些源于 Docker 公司团队提供的基础镜像)。 + +Docker Hub 集成了如 Git Hub 和 Bitbucket 这样源代码控制系统来自动构建包管理器,用于管理构建过程中创建的构建规范(在Dockerfile中)和生成的镜像之间的复杂关系。构建过程的不确定结果并非是 Docker 的特定问题——而与软件包管理器如何工作有关。今天构建完成的是一个版本,明天构建的可能就是更新的版本,这就是为什么软件包管理器需要升级的原因。容器抽象(较少关注容器中的内容)以及容器扩展(因为轻量级资源利用率)有可能让这种不确定性成为 Docker 的痛点。 + +### Docker 的未来 ### + +Docker 公司对核心功能(libcontainer),跨服务管理(libswarm) 和容器间的信息传递(libchan)的发展上提出了明确的路线。与此同时,该公司已经表明愿意收购 Orchard 实验室,将其纳入自身生态系统。然而 Docker 不仅仅是 Docker 公司的,这个项目的贡献者也来自许多大牌贡献者,其中不乏像谷歌、IBM 和 Red Hat 这样的大公司。在仁慈独裁者、CTO Solomon Hykes 掌舵的形势下,为公司和项目明确了技术领导关系。在前18个月的项目中通过成果输出展现了其快速行动的能力,而且这种趋势并没有减弱的迹象。 + +许多投资者正在寻找10年前 VMware 公司的 ESX/vSphere 平台的特征矩阵,并试图找出虚拟机的普及而带动的企业预期和当前 Docker 生态系统两者的距离(和机会)。目前 Docker 生态系统正缺乏类似网络、存储和(对于容器的内容的)细粒度版本管理,这些都为初创企业和创业者提供了机会。 + +随着时间的推移,在虚拟机和容器(Docker 的“运行”部分)之间的区别将变得没那么重要了,而关注点将会转移到“构建”和“交付”方面。这些变化将会使“Docker发生什么?”变得不如“Docker将会给IT产业带来什么?”那么重要了。 + + +-------------------------------------------------------------------------------- + +via: http://www.infoq.com/articles/docker-future + +作者:[Chris Swan][a] +译者:[disylee](https://github.com/disylee) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoq.com/author/Chris-Swan +[1]:http://blog.dotcloud.com/dotcloud-paas-joins-cloudcontrol +[2]:http://www.infoq.com/news/2014/06/docker_1.0 +[3]:https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt +[4]:http://selinuxproject.org/page/Main_Page +[5]:https://linuxcontainers.org/ +[6]:http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/ +[7]:http://aufs.sourceforge.net/aufs.html +[8]:https://docs.docker.com/reference/builder/ +[9]:https://registry.hub.docker.com/ +[10]:http://bodenr.blogspot.co.uk/2014/05/kvm-and-docker-lxc-benchmarking-with.html?m=1 +[11]:http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf +[12]:https://en.wikipedia.org/wiki/X86_virtualization#Hardware-assisted_virtualization +[13]:http://stealth.openwall.net/xSports/shocker.c +[14]:https://news.ycombinator.com/item?id=7910117 +[15]:http://www.bromium.com/products/vsentry.html +[16]:http://cto.vmware.com/vmware-docker-better-together/ +[17]:http://www.infoq.com/articles/docker-containers +[18]:http://docs.docker.com/articles/using_supervisord/ +[19]:http://www.infoq.com/minibooks/emag-microservices +[20]:https://github.com/docker/libchan +[21]:https://gobyexample.com/channels +[22]:http://www.infoq.com/news/2014/08/clusterhq-launch-flocker +[23]:http://www.fig.sh/ +[24]:http://openshift.github.io/geard/ +[25]:http://panamax.io/ +[26]:http://decking.io/ +[27]:https://github.com/newrelic/centurion +[28]:https://github.com/GoogleCloudPlatform/kubernetes +[29]:https://mesosphere.io/2013/09/26/docker-on-mesos/ +[30]:http://mesos.apache.org/ +[31]:https://github.com/mesosphere/marathon +[32]:http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/41684.pdf +[33]:http://deis.io/ +[34]:https://flynn.io/ +[35]:https://github.com/docker/libswarm +[36]:http://openvz.org/Main_Page +[37]:https://docs.docker.com/installation/#installation +[38]:https://coreos.com/ +[39]:http://www.projectatomic.io/ +[40]:https://github.com/coreos/fleet +[41]:https://github.com/coreos/etcd diff --git a/translated/talk/20141203 Docker--Present and Future.md b/translated/talk/20141203 Docker--Present and Future.md deleted file mode 100644 index da2b1b7b48..0000000000 --- a/translated/talk/20141203 Docker--Present and Future.md +++ /dev/null @@ -1,168 +0,0 @@ -Docker的现状与未来 -================================================================================ - -### Docker - 故事渊源流长 ### - -Docker是一个专为Linux容器而设计的工具集,用于‘构建,交付和运行’分布式应用。它最初是通过DotCloud作为一个开源项目在2013年3月的时候发布的。这个项目越来越受欢迎,这使得DotCloud更名为Docker公司(并最终 [出售了原有的PaaS业务][1]).[Docker 1.0][2]是在2014年6月发布的,而且延续了之前每月更新一个版本的习惯。 - - -1.0版本的发布标志着Docker公司认为这个平台的充分成熟已经足以用于生产环境中(由本公司与合作伙伴提供付费支持选项).每个月发布的更新显示,该项目正在迅速发展,增添一些新特性、解决一些他们发现的问题。然而该项目已经成功地从‘运行’和‘交付’实现分离,所以任何版本的Docker镜像源都可以与其它版本共同使用(具备向前和向后兼容的特性),这为Docker使用的快速变化提供了稳定的保障。 - -Docker之所以能够成为最受欢迎的开源项目之一除了很多人会认为是的炒作成分,也是由坚实的物质基础奠定的。Docker的影响力已经得到整个行业许多品牌的支持,包括亚马逊, Canonical公司, 世纪互联, 谷歌, IBM, 微软, New Relic, Pivotal, 红帽和VMware. 这使只要Linux可使用的地方,Docker的使用便无处不在。除了这些鼎鼎有名的大公司以外,许多初创公司也在围绕着Docker在成长,或者改变他们的发展方向来与Docker更好地结合起来。这些合作关系(无论大于小)都将帮助推动Docker核心项目及其周边生态环境的快速发展。 - - -### Docker技术的简要综述 ### - -Docker利用Linux的一些内核工具例如[cGroups][3],命名空间和[SElinux][4]来实现容器之间的隔离。起初Docker只是[LXC][5]容器管理器子系统的前端,但是在0.9版本中引入了[libcontainer][6],这是原生go语言库用于提供用户空间和内核之间的接口。 - -容器位于联合文件系统的顶部,例如[AUFS][7],它允许跨多个容器共享例如操作系统镜和安装相关库的组件。在文件系统中的分层方法也利用[ Dockerfile ] [8]中的DevOps工具,这些工具能够成功地完成高速缓存的操作。利用等待时间来安装操作系统和相关应用程序依赖包将会极大地加速测试周期。容器之间的共享库也能够减少内存的占用。 - -一个容器是从一个镜像开始运行的,它可以本地创建,本地缓存,或者通过注册表来下载。Docker公司经营的 [Docker 公有注册库][9],这为各种操作系统、中间件和数据库提供了主机官方仓库。组织和个人可以在docker公司的为镜像创建公有库,并且也有举办私人仓库的订阅服务。由于上传的镜像会包含几乎所有Docker提供的自动化构建工具(以往称为“受信任的构建”),它的镜像是从Dockerfile创建的,而Dockerfile是镜像内容的清单。 - -### 容器 vs 虚拟机 ### - -容器会比虚拟机更高效,因为它们能够分享一个内核和分享共享应用程序库。相比虚拟机系统,这也将使得Docker使用的内存空间很小,即使虚拟机利用了内存超量使用的技术。部署容器时共享底层的镜像层也可以减少内存的占用。IBM的Boden Russel已经做了一些[基准测试][10]说明两者的不同。 - -相比虚拟机系统,容器呈现出较低系统开销的优势,所以在容器中,应用程序的运行效率将会等效于在同样的应用程序在虚拟机中运行甚至效果更佳。IBM的一个研究团队已经发表了一本名为[虚拟机与Linux容器的性能比较]的文章[11]. - - -容器在隔离特性上要比虚拟机逊色。虚拟机可以利用ring-1[硬件隔离][12]例如Intel的VT-d和VT-x技术。这种隔离可以防止虚拟机爆发和彼此交互。而容器至今还没有任何形式的硬件隔离,这使它容易受到攻击。一个命名为[Shocker][13]的概念攻击验证表明,在之前的1.0版本中Docker是存在这种脆弱性的。尽管Docker1.0修复了许多由于Shocker漏洞引发较为的严重问题,Docker的CTO Solomon Hykes仍然[表态][14],“当我们自然而然地说Docker的开箱即用是安全的,即便包含了不收信任的uid0程序,我们将会很明确地这样表述。”Hykes的声明承认,其它的漏洞及相关的风险依旧存在,所以在容器成为受信任的工具之前将有更多的工作需要被完成。 - -对于许多用户案例而言,在容器和虚拟机两者之间选择一种是一种错误的二分法。Docker同样可以在虚拟机中很好工作,它可以被用于现有的虚拟基础措施、私有云或者公有云。同样也可以在容器里跑虚拟机,这也是谷歌使用云平台的一部分。给予一个广泛可利用的基础设施例如IaaS服务,可以为虚拟机提供合理的预期需求,这个合理的预期即容器与虚拟机一起使用的情景将会在数年后出现。容器管理和虚拟机技术有可能被集成到一起提供一个两全其美的方案;所以,位于libcontainer 容器后面的硬件信任锚微虚拟化实施例,可与前端 Docker 工具链和生态系统整合,而不同于后端使用的是能够提供更好绝缘性。微虚拟化(例如Bromium的[vSentry][15]和VMware的 [Project Fargo][16])已经在桌面环境中使用以提供应用程序之间基于硬件的隔离,所以类似的方法可以用于连接libcontainer代替Linux内核中的容器机制。 - -### ‘Dockerizing’ 应用程序 ### - -几乎所有Linux应用程序都可以在Docker容器中运行。它们不受任何语言的选择或框架的限制。唯一在实践中受限的是从操作系统的角度来允许容器做什么。即使如此,bar可以在特权模式下通过运行容器,从而大大减少了控制(并相应地增加了容器中的应用程序,这将会导致损坏主机操作系统存在的风险)。 - - -容器都是从镜像开始运行的,而镜像也可以从运行中的容器获取。通常使用2中方法从容器中获取应用程序,分别是手动获取和Dockerfile.. - -#### 手动构建 #### - -手动构建首先通过基础操作系统镜像启动一个基本操作。交互式的终端可以安装应用程序和用于包管理的依赖项来选择所需要的Linux风格。Zef Hemel在‘[使用Linux容器来支持便携式应用程序部署][17]’的文章中讲述了他部署的过程。一旦应用程序被安装之后,容器可以被推送至注册中心(例如Docker Hub)或者导出一个tar文件。 - -#### Dockerfile #### - -Dockerfile是一个用于构建Docker容器的脚本化系统。每一个Dockerfile定义了开始的基础镜像,从一系列的命令在容器中运行或者一些列的文件被添加到容器中。当容器启动时默认命令会在启动时被执行,Dockerfile也可以指定对外的端口和当前工作目录。容器类似手工构建一样可以通过可推送或导出的Dockerfiles来构建。Dockerfiles也可以被用于Docker Hub的自动构建系统,使用的镜像受Docker公司的控制并且该镜像源代码是任何人可视的。 - - -####仅仅一个进程? #### - -无论镜像是手动构建还是通过Dockerfile构建,有一个关键的考虑因素是当容器启动时,只有一个进程进程被启动。对于一个容器一对一服务的目的,例如运行一个应用服务器,运行一个单一的进程不是一个问题(有些关于容器应该只有一个单独的进程的争议)。对于一些容器需要启动多个进程的情况,必须先启动 [supervisor][18]进程,才能生成其它内部所需的进程。 - -### 容器和微服务 ### - -一个完整的关于使用微服务结构体系的原理和好处已经远远超出了这篇文章(并已经覆盖了[InfoQ eMag: Microservices][19])的范围).然而容器是微服务捆绑和部署实例的捷径。 - -尽管大多数实际案例表明大量的微服务目前还是大多数部署在虚拟机,容器相对拥有较小的部署机会。容器具备位操作系统共享内存和硬盘占用量的能力,库常见的应用程序代码也意味着并排部署多个办法的服务是非常高效的。 - -### 连接容器 ### - -一些小的应用程序适合放在单独的容器中,但在许多案例中应用程序将遍布多个容器。Docker的成功包括催生了一连串的新应用程序组合工具、业务流程工具和实现平台作为服务(PaaS)过程。许多工具还帮助实现缩放、容错、业务管理以及对已部署资产进行版本控制。 - - -#### 连接 #### - -Docker的网络功能是相当原始的。在同一主机,容器内的服务和一互相访问,而且Docker也可以通过端口映射到主机操作系统使服务可以通过网络服务被调用。官方的赞助方式是连接到[libchan][20],这是一个提供给Go语言的网络服务库,类似于[channels][21]。直至libcan找到方法进入应用程序,第三方应用仍然有很大空间可提供配套的网络服务。例如,[Flocker][22]已经采取了基于代理的方法使服务实现跨主机(以及底层存储)移植。 - -#### 合成 #### - -Docker本身拥有把容器连接在一起的机制,与元数据相关的依赖项可以被传递到相依赖的容器并用于环境变量和主机入口的消耗。应用合成工具例如[Fig][23]和[geard][24]展示出其依赖关系图在一个独立的文件中,于是多个容器可以汇聚成一个连贯的系统。世纪互联公司的[Panamax][25]合成工具类似底层Fig和 geard的方法,但新增了一些基于web的用户接口,并直接与GitHub相结合,以便于应用程序可以直接被共享。 - -#### 业务流程 #### - -业务流程系统例如[Decking][26],New Relic公司的[Centurion][27]和谷歌公司的[Kubernetes][28]都是旨在帮助部署容器和管理其生命周期系统。也有无数的例子(例如[Apache Mesos][30](特别是[Marathon(马拉松式)持续运行很久的框架] 的 [Mesosphere][29]正在与Docker一起使用。通过为应用程序(例如传递CPU核数和内存的需求)与底层基础架构之间提供一个抽象的模型,业务流程工具提供了解耦,旨在简化应用程序开发和数据中心操作。还有各种各样的业务流程系统,因为人们已经淘汰了以前开发的内部系统,取而代之的是大量容器部署的管理系统;例如Kubernetes是基于谷歌的[Omega][32]系统,这个系统用于管理谷歌区域内的容器。 - -虽然从某种程度上来说合成工具和业务流程工具的功能存在重叠,另外这也是它们之间互补的一种方式。例如Fig可以被用于描述容器间如何实现功能交互,而Kubernetes pods可能用于提供监控和缩放。 - - -#### 平台 (类似一个服务) #### - -大量的Docker已经实现本地PaaS安装部署,例如[Deis][33] 和 [Flynn][34]的出现并在现实中得到利用,Linux容器在很大程度上为开发人员提供了灵活性(而不是“固执己见”地给出一组语言和框架)。其它平台例如CloudFoundry, OpenShift 和 Apcera Continuum都已经采取Docker基础功能融入其现有的系统,这样基于Docker镜像(或者基于Dockerfile)的应用程序也可以用之前支持的语言和框架一起部署和管理。 - -### 支持所有的云 ### - -由于Docker能够在任何的Linux虚拟机中运行并合理地更新内核,它几乎可以为所有云提供IaaS服务。大多数的云厂商已经宣布对码头及其生态系统提供附加支持。 - -亚马逊已经把Docker引入它们的Elastic Beanstalk系统(这是在底层IaaS的一个业务流程系统)。谷歌已经启用‘managed VMs'’,这是提供 -程序引擎PaaS和计算引擎IaaS之间的中转站。微软和IBM都已经宣布基于Kubernetes的服务,所以多容器应用程序可以在它们的云上被部署和管理。 - -为了给现有种类繁多的后端提供可用的一致接口,Docker团队已经引进[libswarm][35], 它能用于集成众多云和资源管理系统。Libswarm所阐明的目标之一是‘避免供应商通过交换任何服务锁定另一个’。这是通过呈现一组一致服务(与API相关联的)来完成的,该服务会附加执行特定的后端服务。例如装有Docker服务的服务器将对Docker命令行工具展示Docker远程API,这样容器就可以被托管在一些列的服务供应商。 - -基于Docker的新服务类型仍在起步阶段。总部位于伦敦的Orchard实验室提供了Docker的托管服务,但是Docker公司表示,收购后,Orchard的服务将不会是一个有优先事项。Docker公司也出售之前DotCloud的PaaS业务给cloudControl。基于就更早前的容器管理系统的服务例如[OpenVZ][36]已经司空见惯了,所以在一定程度上Docker需要向托管供应商证明其价值。 - -### Docker 及其发行版 ### - -Docker已经成为大多数Linux发行版例如Ubuntu,Red Hat企业版(RHEL)和CentOS的一个标准功能。遗憾的是发布是以不同的移动速度到Docker项目,所以在发布版中找到的版本总是远远落后于可用版本。例如Ubuntu 14.04版本是对应Docker 0.9.1版本发布的,但是并没有相应的版本更改点当Ubuntu升级至14.04.1(这个时候Docker已经升至1.1.2版本)。由于Docker也是一个KDE系统托盘,所以在官方库同样存在命名问题;所以在Ubuntu14.04版本中相关安装包的名字和命令行工具都是使用‘Docker.io’命名。 - -在企业版的Linux世界中,情况也并没有因此而不同。CentOS7伴随着Docker 0.11.1的到来,该发行版本即是之前Docker公司宣布准备发行Docker 1.0版本的准备版。Linux发行版用户希望最新版本可以承诺其稳定性,性能和安全性能够更完善,并且更好地结合[安装说明][37]和使用Docker公司的库托管而不是采取包括其分布的版本库。 - -Docker的到来催生了新的Linux发行版本例如[CoreOS][38]和红帽被用于设计为运行容器最小环境的[Project Atomic][39]。这些发布版相比传统的发布版伴随着更多新内核和Docker版本的特性。它们对内存的使用和硬盘占用率更小。新的发行也配备了新的工具用于大型部署例如[fleet][40],这是‘一个分布式init系统’和[etcd][41]是用于元数据管理。也有新机制用于更新发布版本身来使得内核和Docker可以被使用。这也意味着使用Docker的影响之一是它抛开分布版和相关的包管理解决方案的关注,使Linux内核(即Docker子系统正在使用)更加重要。 - -新的发布版将是运行Docker的最好方式,但是传统的发布版本和它们的包管理对容器来说仍然是非常重要的。Docker Hub托管的官方镜像有Debian,Ubuntu和CentOS。当然也有一个‘半官方’的库用于Fedora镜像。RHEL镜像在Docker Hub中不可用,因为是从Red Hat直接发布的。这意味着在Docker Hub的自动构建机制仅仅用于那些纯粹的开源发布版不(并愿意信任基于Docker公司团队所策划镜像的出处)。 - - -虽然Docker Hub与源代码控制系统相结合,例如Git Hub和Bitbucket在构建过程中用于自动创建包管理及生成规范之间的复杂关系(在Dockerfile中),并在构建过程中建立镜像。在构建过程中的非确定性结果并非是Docker具体的问题——这个是由于软件包如何管理工作的结果。在构建完成的当天将会给出一个版本,这个构建完成的另外一次将会得到最新版本,这就是为什么软件包管理需要升级措施。容器的抽象(较少关注一个容器的内容)以及容器的分散(因为轻量级资源利用率)是更有可能与Docker获取关联的痛点。 - -### Docker的未来 ### - -Docker公司对核心功能(libcontainer),跨服务管理(libswarm) 和容器间的信息传递(libchan)的发展提出了明确的路线。与此同时公司已经表明愿意利用自身生态系统和收购Orchard实验室。然而Docker相比Docker公司意味着更多,随着项目的壮大,越来越多对这个项目的 -大牌贡献者,其中不乏像谷歌、IBM和Red Hat这样的大公司。在仁慈独裁者CTO Solomon Hykes 掌舵的形势下,为公司和项目明确了技术领导的关系。在前18个月的项目中通过成果输出展现了快速行动的能力,而且这种趋势并没有减弱的迹象。 - -许多投资者正在寻找10年前VMware公司的ESX/vSphere平台的特征矩阵,并找出虚拟机的普及而驱动的企业预期和当前Docker生态系统两者的距离(和机会)。目前Docker生态系统正缺乏类似网络、存储和版本细粒度的管理(对容器的内容),这些都为初创企业和在职人员提供机会。 - -随着时间的推移,在虚拟机和容器(Docker的运行部分)之间的区别将变得不重要了,而关注点将会转移到‘构建’和‘交付’缓解。这些变化将会使‘Docker发生什么?’这个问题变得比‘Docker将会给IT产业带来什么?’更不重要了。 - - --------------------------------------------------------------------------------- - -via: http://www.infoq.com/articles/docker-future - -作者:[Chris Swan][a] -译者:[disylee](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.infoq.com/author/Chris-Swan -[1]:http://blog.dotcloud.com/dotcloud-paas-joins-cloudcontrol -[2]:http://www.infoq.com/news/2014/06/docker_1.0 -[3]:https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt -[4]:http://selinuxproject.org/page/Main_Page -[5]:https://linuxcontainers.org/ -[6]:http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/ -[7]:http://aufs.sourceforge.net/aufs.html -[8]:https://docs.docker.com/reference/builder/ -[9]:https://registry.hub.docker.com/ -[10]:http://bodenr.blogspot.co.uk/2014/05/kvm-and-docker-lxc-benchmarking-with.html?m=1 -[11]:http://domino.research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/rc25482.pdf -[12]:https://en.wikipedia.org/wiki/X86_virtualization#Hardware-assisted_virtualization -[13]:http://stealth.openwall.net/xSports/shocker.c -[14]:https://news.ycombinator.com/item?id=7910117 -[15]:http://www.bromium.com/products/vsentry.html -[16]:http://cto.vmware.com/vmware-docker-better-together/ -[17]:http://www.infoq.com/articles/docker-containers -[18]:http://docs.docker.com/articles/using_supervisord/ -[19]:http://www.infoq.com/minibooks/emag-microservices -[20]:https://github.com/docker/libchan -[21]:https://gobyexample.com/channels -[22]:http://www.infoq.com/news/2014/08/clusterhq-launch-flocker -[23]:http://www.fig.sh/ -[24]:http://openshift.github.io/geard/ -[25]:http://panamax.io/ -[26]:http://decking.io/ -[27]:https://github.com/newrelic/centurion -[28]:https://github.com/GoogleCloudPlatform/kubernetes -[29]:https://mesosphere.io/2013/09/26/docker-on-mesos/ -[30]:http://mesos.apache.org/ -[31]:https://github.com/mesosphere/marathon -[32]:http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/41684.pdf -[33]:http://deis.io/ -[34]:https://flynn.io/ -[35]:https://github.com/docker/libswarm -[36]:http://openvz.org/Main_Page -[37]:https://docs.docker.com/installation/#installation -[38]:https://coreos.com/ -[39]:http://www.projectatomic.io/ -[40]:https://github.com/coreos/fleet -[41]:https://github.com/coreos/etcd From 3db0238c24b2c60c9aaf011228d4f563a4249b90 Mon Sep 17 00:00:00 2001 From: bazz2 Date: Fri, 30 Jan 2015 08:38:00 +0800 Subject: [PATCH 145/725] [bazz2 translating] How to Configure Chroot Environment in Ubuntu 14.04 --- ...0114 How to Configure Chroot Environment in Ubuntu 14.04.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md b/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md index 63acd23a67..540789d367 100644 --- a/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md +++ b/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md @@ -1,3 +1,4 @@ +[bazz2222222] How to Configure Chroot Environment in Ubuntu 14.04 ================================================================================ There are many instances when you may wish to isolate certain applications, user, or environments within a Linux system. Different operating systems have different methods of achieving isolation, and in Linux, a classic way is through a `chroot` environment. @@ -143,4 +144,4 @@ via: http://linoxide.com/ubuntu-how-to/configure-chroot-environment-ubuntu-14-04 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunp/ -[1]:https://launchpad.net/ubuntu/+archivemirrors \ No newline at end of file +[1]:https://launchpad.net/ubuntu/+archivemirrors From 0f47cdd6f304d3576e79b8725999d5f3ebf7f860 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Fri, 30 Jan 2015 13:57:52 +0800 Subject: [PATCH 146/725] =?UTF-8?q?20150130=20=E9=80=89=E9=A2=98=202015013?= =?UTF-8?q?0=20OpenJDK=207=20Vulnerabilities=20Closed=20in=20Ubuntu=2014.0?= =?UTF-8?q?4=20and=20Ubuntu=2014.10.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md diff --git a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md new file mode 100644 index 0000000000..3b77b69017 --- /dev/null +++ b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md @@ -0,0 +1,33 @@ +OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10 +---- +*Users have been advised to upgrade as soon as possible* + +##Canonical published details about a new OpenJDK 7 version has been pushed to the Ubuntu 14.04 LTS and Ubuntu 14.10 repositories. This update fixes a number of problems and various vulnerabilities. + +The Ubuntu maintainers have upgraded the OpenJDK packages in the repositories and numerous fixes have been implemented. This is an important update and it covers a few libraries. + +"Several vulnerabilities were discovered in the OpenJDK JRE related to information disclosure, data integrity and availability. An attacker could +exploit these to cause a denial of service or expose sensitive data over the network,” reads the security notice. + +Also, "a vulnerability was discovered in the OpenJDK JRE related to information disclosure and integrity. An attacker could exploit this to +expose sensitive data over the network." + +These are just a couple of the vulnerabilities identified and corrected by the developer and implemented by the maintainers/., and for a more detailed description of the problems, you can see Canonical's security notification. Users have been advised to upgrade their systems as soon as possible. + +The flaws can be fixed if you upgrade your system to the latest openjdk-7-related packages specific to each distribution. To apply the patch, users will have to run the Update Manager application. In general, a standard system update will make all the necessary changes. All Java-related applications will have to be restarted. + +-------------------------------------------------------------------------------- + +via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtmll + +本文发布时间:29 Jan 2015, 16:53 GMT + +作者:[Silviu Stahie][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie \ No newline at end of file From f5d8d4a52f166b69a99a8f1c87c6028dac32bae5 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Fri, 30 Jan 2015 14:04:33 +0800 Subject: [PATCH 147/725] =?UTF-8?q?20150130=20=E9=80=89=E9=A2=98=202015013?= =?UTF-8?q?0=20OpenJDK=207=20Vulnerabilities=20Closed=20in=20Ubuntu=2014.0?= =?UTF-8?q?4=20and=20Ubuntu=2014.10.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... as the Most Beautiful LibreOffice Ever.md | 38 +++++++++++++++++++ ...Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md diff --git a/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md b/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md new file mode 100644 index 0000000000..3718ee58a6 --- /dev/null +++ b/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md @@ -0,0 +1,38 @@ +LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever +---- +*The developer has made a lot of UI improvements* + +![LibreOffice 4.4](http://i1-news.softpedia-static.com/images/news2/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575-2.jpg) + +The Document Foundation has just announced that a new major update has been released for LibreOffice and it brings important UI improvements, enough for them to call this the most beautiful version ever. + +The Document Foundation doesn't usually make the UI the main focus of an update, but now the developers are saying that this is the most beautiful release made so far and that says a lot. Fortunately, this version is not just about interface fixes and there are plenty of other major improvements that should really provide a very good reason to get LibreOffice 4.4. + +LibreOffice has been gaining quite a lot of fans and users, and the past couple of years have been very successful. The office suite is implemented by default in most of the important Linux distributions out there and it was adopted by numerous administrations and companies across the world. LibreOffice is proving to be a difficult adversary for Microsoft's Office and each new version makes it even better. +LibreOffice 4.4 brings a lot of new features + +If we move aside all the improvements made to the interface, we're still left with a ton of fixes and changes. The Document Foundation takes its job very seriously and all upgrades really improve the users' experience tremendously. + +"LibreOffice 4.4 has got a lot of UX and design love, and in my opinion is the most beautiful ever. We have completed the dialog conversion, redesigned menu bars, context menus, toolbars, status bars and rulers to make them much more useful. The Sifr monochrome icon theme is extended and now the default on OS X. We also developed a new Color Selector, improved the Sidebar to integrate more smoothly with menus, and reworked many user interface details to follow today’s UX trends," [says Jan "Kendy" Holesovsky](1), a member of the Membership Committee and the leader of the design team. + +Some of the other improvements include much better support for OOXML file formats, the source code has been "groomed" and cleaned after a Coverity Scan analysis, digital signatures for exported PDF files, improved import filters for Microsoft Visio, Microsoft Publisher and AbiWord files, and Microsoft Works spreadsheets, and much more. + +For now, the PPA doesn't have the latest version, but that should change soon. For the time being, you can download the [LibreOffice 4.4](2) source packages from Softpedia, if you want to compile them yourself. + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575.shtml + +本文发布时间:29 Jan 2015, 14:16 GMT + +作者:[Silviu Stahie][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie +[1]:http://blog.documentfoundation.org/2015/01/29/libreoffice-4-4-the-most-beautiful-libreoffice-ever/ +[2]:http://linux.softpedia.com/get/Office/Office-Suites/LibreOffice-60713.shtml \ No newline at end of file diff --git a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md index 3b77b69017..552f98e3f2 100644 --- a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md +++ b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md @@ -18,7 +18,7 @@ The flaws can be fixed if you upgrade your system to the latest openjdk-7-relate -------------------------------------------------------------------------------- -via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtmll +via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml 本文发布时间:29 Jan 2015, 16:53 GMT From 8f67ae408eadcc3ef4fafd11d5e022930ecf0a38 Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Fri, 30 Jan 2015 14:04:33 +0800 Subject: [PATCH 148/725] =?UTF-8?q?20150130=20=E9=80=89=E9=A2=98=202015013?= =?UTF-8?q?0=20OpenJDK=207=20Vulnerabilities=20Closed=20in=20Ubuntu=2014.0?= =?UTF-8?q?4=20and=20Ubuntu=2014.10.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... as the Most Beautiful LibreOffice Ever.md | 38 +++++++++++++++++++ ...Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md diff --git a/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md b/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md new file mode 100644 index 0000000000..ddcd650327 --- /dev/null +++ b/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md @@ -0,0 +1,38 @@ +LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever +---- +*The developer has made a lot of UI improvements* + +![LibreOffice 4.4](http://i1-news.softpedia-static.com/images/news2/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575-2.jpg) + +The Document Foundation has just announced that a new major update has been released for LibreOffice and it brings important UI improvements, enough for them to call this the most beautiful version ever. + +The Document Foundation doesn't usually make the UI the main focus of an update, but now the developers are saying that this is the most beautiful release made so far and that says a lot. Fortunately, this version is not just about interface fixes and there are plenty of other major improvements that should really provide a very good reason to get LibreOffice 4.4. + +LibreOffice has been gaining quite a lot of fans and users, and the past couple of years have been very successful. The office suite is implemented by default in most of the important Linux distributions out there and it was adopted by numerous administrations and companies across the world. LibreOffice is proving to be a difficult adversary for Microsoft's Office and each new version makes it even better. +LibreOffice 4.4 brings a lot of new features + +If we move aside all the improvements made to the interface, we're still left with a ton of fixes and changes. The Document Foundation takes its job very seriously and all upgrades really improve the users' experience tremendously. + +"LibreOffice 4.4 has got a lot of UX and design love, and in my opinion is the most beautiful ever. We have completed the dialog conversion, redesigned menu bars, context menus, toolbars, status bars and rulers to make them much more useful. The Sifr monochrome icon theme is extended and now the default on OS X. We also developed a new Color Selector, improved the Sidebar to integrate more smoothly with menus, and reworked many user interface details to follow today’s UX trends," [says Jan "Kendy" Holesovsky](1), a member of the Membership Committee and the leader of the design team. + +Some of the other improvements include much better support for OOXML file formats, the source code has been "groomed" and cleaned after a Coverity Scan analysis, digital signatures for exported PDF files, improved import filters for Microsoft Visio, Microsoft Publisher and AbiWord files, and Microsoft Works spreadsheets, and much more. + +For now, the PPA doesn't have the latest version, but that should change soon. For the time being, you can download the [LibreOffice 4.4](2) source packages from Softpedia, if you want to compile them yourself. + +-------------------------------------------------------------------------------- + +via: http://news.softpedia.com/news/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575.shtml + +本文发布时间:29 Jan 2015, 14:16 GMT + +作者:[Silviu Stahie][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie +[1]:http://blog.documentfoundation.org/2015/01/29/libreoffice-4-4-the-most-beautiful-libreoffice-ever/ +[2]:http://linux.softpedia.com/get/Office/Office-Suites/LibreOffice-60713.shtml \ No newline at end of file diff --git a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md index 3b77b69017..a1652fbd04 100644 --- a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md +++ b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md @@ -18,7 +18,7 @@ The flaws can be fixed if you upgrade your system to the latest openjdk-7-relate -------------------------------------------------------------------------------- -via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtmll +via: http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml 本文发布时间:29 Jan 2015, 16:53 GMT From 06afd512503fcd970c1988522d94ab2dbca144c7 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Fri, 30 Jan 2015 16:20:31 +0800 Subject: [PATCH 149/725] [translated] 20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md --- ... Your Linux OS X Unix Shell Environment.md | 334 +++++++++--------- 1 file changed, 166 insertions(+), 168 deletions(-) rename {sources => translated}/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md (56%) diff --git a/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md b/translated/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md similarity index 56% rename from sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md rename to translated/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md index 4f46e43dd7..2709602c87 100644 --- a/sources/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md +++ b/translated/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md @@ -1,45 +1,44 @@ -zpl1025 -A Shell Primer: Master Your Linux, OS X, Unix Shell Environment +Shell入门:掌握Linux,OS X,Unix的Shell环境 ================================================================================ -On a Linux or Unix-like systems each user and process runs in a specific environment. An environment includes variables, settings, aliases, functions and more. Following is a very brief introduction to some useful shell environment commands, including examples of how to use each command and setup your own environment to increase productivity in the command prompt. +在Linux或类Unix系统中,每个用户和进程都运行在一个特定环境中。这个环境包含了变量,设置,别名,函数以及更多的。下面是对Shell环境下一些常用命令的简单介绍,包括每个命令如何使用的例子,以及在命令行下设定你自己的环境来提高效率。 ![](http://s0.cyberciti.org/uploads/cms/2015/01/bash-shell-welcome-image.jpg) -### Finding out your current shell ### +### 找出你当前的shell ### -Type any one of the following command at the Terminal app: +在终端应用中输入下面命令中的任意一个: ps $$ ps -p $$ -OR +或者 echo "$0" -Sample outputs: +输出范例: -[![Fig.01: Finding out your shell name](http://s0.cyberciti.org/uploads/cms/2015/01/finding-your-shell-like-a-pro.jpg)][1] -Fig.01: Finding out your shell name +[![图1: Finding out your shell name](http://s0.cyberciti.org/uploads/cms/2015/01/finding-your-shell-like-a-pro.jpg)][1] +图1:找出当前的shell -### Finding out installed shells ### +### 找出所有已安装的shell ### -To find out the full path for installed shell type: +找到已安装shell的完整路径: type -a zsh type -a ksh type -a sh type -a bash -Sample outputs: +输出范例: [![Fig.02: Finding out your shell path](http://s0.cyberciti.org/uploads/cms/2015/01/finding-and-verifying-shell-path.jpg)][2] -Fig.02: Finding out your shell path +图2:找出shell的路径 -The /etc/shells file contains a list of the shells on the system. For each shell a single line should be present, consisting of the shell's path, relative to root. Type the following [cat command][3] to see shell database: +文件/etc/shells里包含了系统支持的shell列表。每一行代表一个shell,是相对根目录的完整路径。用这个[cat命令][3]来查看这些数据: cat /etc/shells -Sample outputs: +输出范例: # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using @@ -53,47 +52,47 @@ Sample outputs: /bin/zsh /usr/local/bin/fish -### Changing your current shell temporarily ### +### 临时改变当前shell ### -Just type the shell name. In this example, I'm changing from bash to zsh: +只需要输入shell的名字。在下面的例子里,我从bash切换到了zsh: zsh -You just changed your shell temporarily to zsh. Also known as subshell. To exit from subshell/temporary shell, type the following command or hit CTRL-d: +这只是临时改变了系统shell。也叫做子shell。要从子/临时shell退出,输入下面的命令或者按下CTRL-D: exit -### Finding out subshell level/temporary shell nesting level ### +### 找出子shell的层级或临时shell的嵌套层级 ### -The $SHLVL incremented by one each time an instance of bash is started. Type the following command: +每个bash实例启动后,变量$SHLVL的值都会加一。输入下面的命令: echo "$SHLVL" -Sample outputs: +示例输出: [![Fig. 03: Bash shell nesting level (subshell numbers)](http://s0.cyberciti.org/uploads/cms/2015/01/a-nested-shell-level-command.jpg)][4] -Fig. 03: Bash shell nesting level (subshell numbers) +图3:Bash shell嵌套层级(子shell数目) -### Changing your current shell permanently with chsh command ### +### 通过chsh命令永久变更系统shell ### -Want to change your own shell from bash to zsh permanently? Try: +想要把当前系统shell从bash永久换成zsh?试试这个: chsh -s /bin/zsh -Want to change the other user's shell from bash to ksh permanently? Try: +想把其他用户的shell从bash永久换成ksh?试试这个: sudo chsh -s /bin/ksh userNameHere -### Finding out your current environment ### +### 查看当前的环境 ### -You need to use the +你需要用到 env env | more env | less env | grep 'NAME' -Sample outputs: +示例输出: TERM_PROGRAM=Apple_Terminal SHELL=/bin/bash @@ -116,12 +115,12 @@ Sample outputs: _=/usr/bin/env OLDPWD=/Users/vivek -Here is a table of commonly used bash shell variables: +下面是bash shell里一些常见变量的列表: ![Fig.04: Common bash environment variables](http://s0.cyberciti.org/uploads/cms/2015/01/common-shell-vars.jpg) -Fig.04: Common bash environment variables +图4:常见bash环境变量 -> **Warning**: It is always a good idea not to change the following environment variables. Some can be changed and may results into unstable session for you: +> **注意**:下面这些环境变量没事不要乱改。很可能会造成不稳定的shell会话: > > SHELL > @@ -141,163 +140,162 @@ Fig.04: Common bash environment variables > > LINENO -### Displays the values of environment variables ### +### 显示环境变量的值 ### -Use any one of the following command to show the values of environment variable called HOME: +使用下面任意一条命令显示环境变量HOME的值: - ## Use printenv ## + ## 使用printenv ## printenv HOME - ## or use echo ## + ## 或者用echo ## echo "$HOME" - # or use printf for portability ## + # 考虑到可移植性,也可以用printf ## printf "%s\n" "$HOME" -Sample outputs: +示例输出: /home/vivek -### Adding or setting a new variables ### +### 增加或设定一个新变量 ### -The syntax is as follows in bash or zsh or sh or ksh shell: +下面是bash,zsh,sh和ksh的语法: - ## The syntax is ## + ## 语法 ## VAR=value FOO=bar - ## Set the default editor to vim ## + ## 设定vim为默认文本编辑器 ## EDITOR=vim export $EDITOR - ## Set default shell timeout for security ## + ## 考虑安全性,设定默认shell连接超时时间 ## TMOUT=300 export TMOUT - ## You can directly use export command to set the search path for commands ## + ## 你可以直接使用export命令设定命令的搜素路径 ## export PATH=$PATH:$HOME/bin:/usr/local/bin:/path/to/mycoolapps -Again, use the printenv or echo or printf command to see the values of environment variables called PATH, EDITOR, and TMOUT: +然后,使用printenv或者echo或printf命令查看环境变量PATH,EDITOR,和TMOUT的值: printenv PATH echo "$EDITOR" printf "%s\n" $TMOUT -### How do I change an existing environment variables? ### +### 怎么修改一个现有的环境变量? ### -The syntax is as follows: +下面是语法: export VAR=value - ## OR ## + ## 或者 ## VAR=value export $VAR - ## Change the default editor from vim to emacs ## - echo "$EDITOR" ## <--- print vim - EDITOR=emacs ## <--- change it - export $EDITOR ## <--- export it for next session too - echo "$EDITOR" ## <--- print emacs + ## 把默认文本编辑器从vim改为emacs ## + echo "$EDITOR" ## <--- 屏幕输出vim + EDITOR=emacs ## <--- 修改 + export $EDITOR ## <--- 让修改在其他会话生效 + echo "$EDITOR" ## <--- 屏幕输出emacs -The syntax is as follows for the **tcsh shell for adding or changing a variables**: +**tcsh shell下增加和修改变量**的语法是下面这样的: - ## Syntax + ## 语法 setenv var value printenv var - ## Set foo variable with bar as a value ## + ## 设置变量foo的值为bar ## setenv foo bar echo "$foo" printenv foo - ## Set PATH variable ## + ## 设置变量PATH ## setenv PATH $PATH\:$HOME/bin echo "$PATH" - ## set PAGER variable ## + ## 设置变量PAGER ## setenv PAGER most printf "%s\n" $PAGER -### Finding your bash shell configuration files ### +### 找出bash shell的配置文件 ### -Type the following command to list your bash shell files, enter: +用下面的命令列出bash shell的文件: ls -l ~/.bash* ~/.profile /etc/bash* /etc/profile -Sample output: +示例输出: [![Fig.05: List all bash environment configuration files](http://s0.cyberciti.org/uploads/cms/2015/01/list-bash-enviroment-variables.jpg)][5] -Fig.05: List all bash environment configuration files +图5:列出bash的所有配置文件 -To look at all your bash config files, enter: +要查看所有的bash配置文件,输入: less ~/.bash* ~/.profile /etc/bash* /etc/profile -You can edit bash config files one by one using the text editor such as vim or emacs: +可以使用文字编辑器比如vim或emacs来一个一个编辑bash配置文件: vim ~/.bashrc -To edit files located in /etc/, type: +编辑/etc/目录下的文件,输入: - ## first make a backup.. just in case + ## 首先是备份,以防万一 sudo cp -v /etc/bashrc /etc/bashrc.bak.22_jan_15 ######################################################################## - ## Alright, edit it to your hearts content and by all means, have fun ## - ## with your environment or just increase the productivity :) ## + ## 然后,随心所欲随便改吧,好好玩玩shell环境或者提高一下效率:) ## ######################################################################## sudo vim /etc/bashrc -### Confused by Bash shell Initialization files? ### +### 被Bash shell初始化过程中应用的文件搞糊涂了吗? ### -The following "bash file initialization" graph will help you: +下面的"bash初始化文件"流程图应该有些帮助: ![](http://s0.cyberciti.org/uploads/cms/2015/01/BashStartupfiles.jpg) -Depending on which shell is set up as your default, your user profile or system profile can be one of the following: +根据账户设定的默认shell,你的用户配置或系统配置可能是下面其中一种: -### Finding your zsh shell configuration files ### +### 找出zsh shell配置文件 ### -The zsh [wiki][6] recommend the following command: +zsh的[wiki][6]中建议用下面的命令: strings =zsh | grep zshrc -Sample outputs: +示例输出: /etc/zshrc .zshrc -Type the following command to list your zsh shell files, enter: +输入下面的命令列出你的zsh shell文件: ls -l /etc/zsh/* /etc/profile ~/.z* -To look at all your zsh config files, enter: +查看所有zsh配置文件: less /etc/zsh/* /etc/profile ~/.z* -### Finding your ksh shell configuration files ### +### 找出ksh shell配置文件 ### -1. See ~/.profile or /etc/profile file. +1. 查看~/.profile或者/etc/profile文件。 -### Finding your tcsh shell configuration files ### +### 找出tcsh shell配置文件 ### -1. See ~/.login, ~/.cshrc for the C shell. -2. See ~/.tcshrc and ~/.cshrc for the TC shell. +1. C shell查看~/.login,~/.cshrc文件。 +2. TC shell查看~/.tcshrc和~/.cshrc文件。 -### Can I have a script like this execute automatically every time I login? ### +### 我可以写个类似这样每次登录时都自动执行的脚本吗? ### -Yes, add your commands or aliases or other settings to ~/.bashrc (bash shell) or ~/.profile (sh/ksh/bash) or ~/.login (csh/tcsh) file. +是的,把你的命令或别名或其他设定添加到~/.bashrc(bash shell)或者~/.profile(sh/ksh/bash)或者~/.login(csh/tcsh)文件中。 -### Can I have a script like this execute automatically every time I logout? ### +### 我可以写个类似这样每次登出都自动执行的脚本吗? ### -Yes, add your commands or aliases or other settings to ~/.bash_logout (bash) or ~/.logout (csh/tcsh) file. +是的,把你的命令或别名或其他设定添加到~/.bash_logout(bash)或者~/.logout(csh/tcsh)文件。 -### History: Getting more info about your shell session ### +### history:获取关于shell会话的更多信息 ### -Just type the history command to see session history: +输入history命令来查看本次会话的历史: history -Sample outputs: +示例输出: 9 ls 10 vi advanced-cache.php @@ -321,56 +319,56 @@ Sample outputs: 98 smartctl -A /dev/sg1 | grep -i temperature 99 sensors -Type history 20 to see the last 20 commands from your history: +输入history 20来查看命令历史的后20条: history 20 -Sample outputs: +示例输出: [![Fig.06: View session history in the bash shell using history command](http://s0.cyberciti.org/uploads/cms/2015/01/history-outputs.jpg)][7] -Fig.06: View session history in the bash shell using history command +图6:在bash shell中使用history命令查看会话历史 -You can reuses commands. Simply hit [Up] and [Down] arrow keys to see previous commands. Press [CTRL-r] from the shell prompt to search backwards through history buffer or file for a command. To repeat last command just type !! at a shell prompt: +你可以重复使用命令。简单地按下[上]或[下]方向键就可以查看之前的命令。在shell提示符下按下[CTRL-R]可以向后搜索历史缓存或文件来查找命令。重复最后一次命令,只需要在shell提示符下输入!!就好了: ls -l /foo/bar !! -To see command #93 (hddtemp /dev/sda)from above history session, type: +在以上的历史记录中查看命令#93 (hddtemp /dev/sda),输入: !93 -### Changing your identity with sudo or su ### +### 使用sudo或su改变用户 ### -The syntax is as follows: +下面是语法: su userName - ## To log in as a tom user ## + ## 登录为tom用户 ## su tom - ## To start a new login shell for tom user ## + ## 为用户tom打开一个新的shell会话 ## su tom - ## To login as root user ## + ## 登录为root用户 ## su - - ## The sudo command syntax (must be configured on your system) ## + ## sudo命令语法(必须在系统中配置有这个命令) ## sudo -s sudo tom -See "[Linux Run Command As Another User][8]" post for more on sudo, su and runuser commands. +看看帖子"[Linux下使用其他用户身份运行命令][8]"更多地了解sudo,su和runuser命令。 -### Shell aliases ### +### shell别名 ### -An alias is nothing but shortcut to commands. +别名仅仅是命令的一个快捷方式。 -### Listing aliases ### +### 列出所有的别名 ### -Type the following command: +输入下面的命令: alias -Sample outputs: +示例输出: alias ..='cd ..' alias ...='cd ../../../' @@ -388,31 +386,31 @@ Sample outputs: alias egrep='egrep --color=auto' alias ethtool='ethtool eth1' -### Create an alias ### +### 设定一个别名 ### -The bash/zsh syntax is: +bash/zsh语法: alias c='clear' alias down='sudo /sbin/shutdown -h now' -Type c alias for the system command clear, so we can type c instead of clear command to clear the screen: +对于命令clear可以输入c别名,这样我们就可以输入c代替clear命令来清空屏幕: c -Or type down to shutdown the Linux based server: +或者输入down来关闭基于Linux的服务器: down -You can create as many aliases you want. See "[30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X][9]" for practical usage of aliases on Unix-like system. +你可以设定任意多的别名。看下"[Linux/Unix/Mac OS X系统中的30个方便的bash shell别名][9]"了解在类Unix系统中别名的实际应用。 -### Shell functions ### +### shell函数 ### -Bash/ksh/zsh functions allows you further customization of your environment. In this example, I'm creating a simple bash function called memcpu() to display top 10 cpu and memory eating process: +Bash/ksh/zsh函数允许你更进一步地配置shell环境。在这个例子中,我写了一个简单的名叫memcpu()的bash函数,用来显示前10个最占用CPU和内存的进程: memcpu() { echo "*** Top 10 cpu eating process ***"; ps auxf | sort -nr -k 3 | head -10; echo "*** Top 10 memory eating process ***"; ps auxf | sort -nr -k 4 | head -10; } -Just type memcpu to see the info on screen: +输入memcpu就可以在屏幕上看到下面的信息: memcpu @@ -440,95 +438,95 @@ Just type memcpu to see the info on screen: squid 9995 0.0 0.5 175152 72396 ? S 2014 27:00 \_ (squid) -f /etc/squid/squid.conf cybercit 3922 0.0 0.4 303380 56304 ? S Jan10 0:13 | \_ /usr/bin/php-cgi -See "[how to write and use shell functions][10]" for more information. +看下"[如何编写和应用shell函数][10]"了解更多信息。 -### Putting it all together: Customizing your Linux or Unix bash shell working environment ### +### 综合一下:定制你自己的Linux或Unix bash shell工作环境 ### -Now, you are ready to configure your environment using bash shell. I'm only covering bash. But the theory remains same from zsh, ksh and other common shells. Let us see how to adopt shell to my need as a sysadmin. Edit your ~/.bashrc file and append settings. Here are some useful configuration options for you. +现在,你将使用bash shell配置自己的环境。我只介绍bash。但是理论上zsh,ksh和其他常用shell都差不多。让我们看看如何调整shell来适合我作为系统管理员的需求。编辑你的~/.bashrc文件来附加设定。下面是一些常用的配置选项。 -#### #1: Setting up bash path and environment variables #### +#### #1: 设定bash路径和环境变量 #### - # Set path ## + # 设定路径 ## export PATH=$PATH:/usr/local/bin:/home/vivek/bin:/opt/firefox/bin:/opt/oraapp/bin - # Also set path for cd command + # 为cd命令设定路径 export CDPATH=.:$HOME:/var/www -Use less or most command as a pager: +使用less或more命令作为翻页器: export PAGER=less -Set vim as default text editor for us: +设定vim作为默认文本编辑器: export EDITOR=vim export VISUAL=vim export SVN_EDITOR="$VISUAL" -Set Oracle database specific stuff: +设定Oracle数据库特别要求的参数: export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server export ORACLE_SID=XE export NLS_LANG=$($ORACLE_HOME/bin/nls_lang.sh) -Set JAVA_HOME and other paths for java as per java version: +设定JAVA_HOME和其他java路径,比如java版本: export JAVA_HOME=/usr/lib/jvm/java-6-sun/jre - # Add ORACLE, JAVA to PATH + # 把ORACLE和JAVA加入到PATH里 export PATH=$PATH:$ORACLE_HOME/bin:$JAVA_HOME/bin -Secure my remote [SSH login using keychain for password less login][11]: +[使用密钥实现免密码登录][11]让ssh远程登录更安全: - # No need to input password again ever + # 再也不用输密码了 /usr/bin/keychain $HOME/.ssh/id_rsa source $HOME/.keychain/$HOSTNAME-sh -Finally, [turn on bash command completion][12] +最后,[打开bash命令补齐][12] source /etc/bash_completio -#### #2: Setting up bash command prompt #### +#### #2: 设定bash命令提示符 #### -Set [custom bash prompt (PS1)][13]: +设定[定制的bash提示符(PS1)][13]: PS1='{\u@\h:\w }\$ ' -#### #3: Setting default file permissions #### +#### #3: 设定默认文件权限 #### - ## Set default to 644 ## + ## 设定默认权限为644 ## umask 022 -#### #4: Control your shell history settings #### +#### #4: 调整shell命令历史设定 #### - # Dont put duplicate lines in the history + # 不往命令历史里写入相同的行 HISTCONTROL=ignoreboth - # Ignore these commands + # 忽略这些命令 HISTIGNORE="reboot:shutdown *:ls:pwd:exit:mount:man *:history" - # Set history length via HISTSIZE and HISTFILESIZE + # 通过HISTSIZE和HISTFILESIZE设定命令历史的长度 export HISTSIZE=10000 export HISTFILESIZE=10000 - # Add timestamp to history file. + # 为命令历史文件增加时间戳 export HISTTIMEFORMAT="%F %T " - #Append to history, don't overwrite + # 附加到命令历史文件,俄不是覆盖 shopt -s histappend -#### #5: Set the time zone for your session #### +#### #5: 设定shell会话的时区 #### - ## set to IST for my own session ## + ## 为我自己的shell会话设定IST(印度标准时间) ## TZ=Asia/Kolkata -#### #6: Setting up shell line editing interface #### +#### #6: 设定shell行编辑接口 #### - ## use a vi-style line editing interface for bash from default emacs mode ## + ## 使用vi风格的行编辑接口,替代bash默认的emacs模式 ## set -o vi -#### #7: Setting up your favorite aliases #### +#### #7: 设定自己喜好的别名 #### - ## add protection ## + ## 增加一些保护 ## alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' @@ -538,7 +536,7 @@ Set [custom bash prompt (PS1)][13]: alias mcdshow='/usr/bin/memcached-tool 10.10.29.68:11211 display' alias mcdflush='echo "flush_all" | nc 10.10.29.68 11211' - ## Default command options ## + ## 默认命令参数 ## alias vi='vim' alias grep='grep --color=auto' alias egrep='egrep --color=auto' @@ -551,41 +549,41 @@ Set [custom bash prompt (PS1)][13]: alias rm='rm -I --preserve-root' alias ln='ln -i' -Here are some additional OS X Unix bash shell aliases: +下面是一些额外的OS X Unix bash shell别名: - # Open desktop apps from bash + # 从bash打开桌面应用 alias preview="open -a '$PREVIEW'" alias safari="open -a safari" alias firefox="open -a firefox" alias chrome="open -a google\ chrome" alias f='open -a Finder ' - # Get rid of those .DS_Store files + # 清理那些.DS_Store文件 alias dsclean='find . -type f -name .DS_Store -delete' -#### #8: Colour my world #### +#### #8: 让世界充满色彩 #### - # Get colored grep output + # 彩色的grep输出 alias grep='grep --color=auto' export GREP_COLOR='1;33' - # colored ls too + # 彩色的ls export LSCOLORS='Gxfxcxdxdxegedabagacad' - # Gnu/linux ls + # Gnu/linux的ls ls='ls --color=auto' - # BSD/os x ls command + # BSD/os x的ls命令 # alias ls='ls -G' -#### #9: Setting up your favorite bash functions #### +#### #9: 设定自己喜好的bash函数 #### - # Show top 10 history command on screen + # 在屏幕上显示10个最近的历史命令 function ht { history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head } - # Wrapper for host and ping command - # Accept http:// or https:// or ftps:// names for domain and hostnames + # host和ping命令的替代 + # 接受http:// 或 https:// 或 ftps:// 名称用作域或主机名 _getdomainnameonly(){ local h="$1" local f="${h,,}" @@ -629,48 +627,48 @@ Here are some additional OS X Unix bash shell aliases: $_host $args $c } -#### #10: Configure bash shell behavior via shell shopt options command #### +#### #10: 通过shell shopt命令设定bash shell行为 #### -Finally, you can [make changes to your bash shell environment using set and shopt][14] commands: +最后,你可以[使用set和shopt命令调整bash shell环境][14]: - # Correct dir spellings + # 目录拼写纠正 shopt -q -s cdspell - # Make sure display get updated when terminal window get resized + # 保证每次终端窗口改变大小后会更新显示 shopt -q -s checkwinsize - # Turn on the extended pattern matching features + # 打开高级模式匹配功能 shopt -q -s extglob - # Append rather than overwrite history on exit + # 退出时附加命令历史而不是覆盖 shopt -s histappend - # Make multi-line commandsline in history + # 在命令历史使用多行 shopt -q -s cmdhist - # Get immediate notification of background job termination + # 在后台任务结束时立刻通知 set -o notify - # Disable [CTRL-D] which is used to exit the shell + # 禁用[CTRL-D]来结束shell set -o ignoreeof -### Conclusion ### +### 总结 ### -This post is by no means comprehensive. It provided a short walkthrough of how to customize your enviorment. For a thorough look at bash/ksh/zsh/csh/tcsh capabilities, I suggest you read the man page by typing the following command: +这个帖子不难理解。它简短地将如何定制用户环境从头介绍了一下。要深入了解bash/ksh/zsh/csh/tcsh/的能力,我建议你用下面的命令阅读man文档: man bash man zsh man tcsh man ksh -> This article was contributed by Aadrika T. J.; Editing and additional content added by admin. You can too [contribute to nixCraft][15]. +> 这篇文章由Aadrika T. J.贡献;由admin编辑并增加了额外内容。你也可以[为nixCraft做出贡献][15]。 -------------------------------------------------------------------------------- via: http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx-environment/ 作者:[nixCraft][a] -译者:[译者ID](https://github.com/译者ID) +译者:[zpl1025](https://github.com/zpl1025) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 217c388f6f0f230f15f6b5d0f385fc63198616a9 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Fri, 30 Jan 2015 16:28:02 +0800 Subject: [PATCH 150/725] [translating] Bug in Wi-Fi Direct Android Implementation Causes Denial of Service --- ...i Direct Android Implementation Causes Denial of Service.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md b/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md index 8829296d18..4e3337ef3e 100644 --- a/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md +++ b/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md @@ -1,3 +1,4 @@ +zpl1025 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service ---- *Google marks the issue as having low severity, is not in a hurry to fix it* @@ -46,4 +47,4 @@ via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Ca 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://news.softpedia.com/editors/browse/ionut-ilascu -[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service \ No newline at end of file +[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service From db6b82569e8b23d902ea1953a6a6705bf1e6e339 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 30 Jan 2015 17:04:17 +0800 Subject: [PATCH 151/725] Translating by ZTinoZ --- ...Linux FAQs with Answers--How to check CPU info on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index a7c7993d89..9d5d9844cf 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -2,11 +2,11 @@ Linux有问必答时间--如何查看Linux系统的CPU信息 ================================================================================ > **问题**: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么? -根据你的需要,there are various pieces of information you may need to know about the CPU processor(s) of your computer, such as CPU vendor name, model name, clock speed, number of sockets/cores, L1/L2/L3 cache configuration, available processor capabilities (e.g., hardware virtualization, AES, MMX, SSE), and so on. In Linux, there are many command line or GUI-based tools that are used to show detailed information about your CPU hardware. +根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名、模型名、时钟频率、套接字/内核的数量, L1/L2/L3缓存配置、可用的处理器能力(比如:硬件虚拟化、AES, MMX, SSE)等等。在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息。 ### 1. /proc/cpuinfo ### -The simpliest method is to check /proc/cpuinfo. This virtual file shows the configuration of available CPU hardware. +最简单的方法就是查看 /proc/cpuinfo ,这个虚拟文件展示的是可用CPU硬件的配置。 $ more /proc/cpuinfo From 37517534c7d2c72154ca9271dbeca767f11d3755 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Fri, 30 Jan 2015 17:35:31 +0800 Subject: [PATCH 152/725] [translated] 20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service --- ...Implementation Causes Denial of Service.md | 50 ------------------- ...Implementation Causes Denial of Service.md | 49 ++++++++++++++++++ 2 files changed, 49 insertions(+), 50 deletions(-) delete mode 100644 sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md create mode 100644 translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md diff --git a/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md b/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md deleted file mode 100644 index 4e3337ef3e..0000000000 --- a/sources/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md +++ /dev/null @@ -1,50 +0,0 @@ -zpl1025 -Bug in Wi-Fi Direct Android Implementation Causes Denial of Service ----- -*Google marks the issue as having low severity, is not in a hurry to fix it* - -![Wi-Fi Direct glitch crashes Android](http://i1-news.softpedia-static.com/images/news2/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299-2.jpg) - -#A vulnerability in the way Android handles Wi-Fi Direct connections leads to rebooting the device when searching for peers to connect to, which can be anything from other phones, cameras, gaming devices, computers, or printers. - -The Wi-Fi Direct technology allows devices capable of wireless connection to establish communication directly, without the need to join a local network. - -##Security company insisted on proper coordination for a fix - -The vulnerability allows an attacker to send a specially crafted 802.11 Probe Response frame to the device and crashes it due to an unhandled exception occurring on the WiFi monitoring class. - -Core Security discovered the flaw (CVE-2014-0997) through its CoreLabs team, and reported it to Google back in September 2014. The vendor acknowledged it but classified the glitch as having low severity, with no timeline for a fix being provided. - -The same answer was received by Core Security each time they contacted the Android security team to inform of a timeframe for rolling out a fix. The last reply of this kind was received on January 20, meaning that there is no patch for the time being. On Monday, the security company made their findings public. - -The security company created a (proof-of-concept)[1] to demonstrate the validity of the results obtained during their research. - -According to the technical details of the vulnerability, some Android devices can be induced a denial-of-service condition if they receive a malformed wpa_supplicant event, which makes available the interface between the wireless driver and the Android platform framework. - -##Google is not in a hurry to eliminate the problem - -The relaxed stance from the Android security team regarding the issue may be on account of the fact that denial-of-service condition occurs only for a short period of time, when scanning for peers. - -More than this, the result is not severe in nature as it consists in rebooting the device. There is no risk of data exfiltration or an attack that could lead to this, which would make it unappealing to a threat actor. On the other hand, a patch should be provided regardless, in order to mitigate any potential future risks. - -Core Security says that the issue was not detected on Android 5.0.1 and above, and among the devices affected they found Nexus 5 and 4 running version 4.4.4 of the mobile operating system, LG D806 and Samsung SM-T310 with Android 4.2.2, and Motorola RAZR HD with build 4.1.2 of the OS. - -For the time being, mitigation consists in refraining from using Wi-Fi Direct or updating to a non-vulnerable version of Android. - - --------------------------------------------------------------------------------- - -via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299.shtml - -本文发布时间:27 Jan 2015, 09:11 GMT - -作者:[Ionut Ilascu][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/ionut-ilascu -[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service diff --git a/translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md b/translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md new file mode 100644 index 0000000000..fa3139f2dc --- /dev/null +++ b/translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md @@ -0,0 +1,49 @@ +Wi-Fi直连的Android实现中的Bug导致拒绝服务 +---- +*Google标记这个问题为低严重性,并不急着修复* + +![Wi-Fi Direct glitch crashes Android](http://i1-news.softpedia-static.com/images/news2/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299-2.jpg) + +#Android处理Wi-Fi直连连接的方式中的一个漏洞会导致在搜索连接节点的时候设备重启,这个节点可能是其他手机,摄像头,游戏设备,电脑或是打印机等任何设备。 + +Wi-Fi直连技术允许无线设备之间直接建立通信,而不用加入到本地网络中。 + +##安全公司致力于协调修复这个问题 + +这个漏洞允许攻击者发送一个特定的修改过的802.11侦测响应帧给设备,从而因为WiFi监控类中的一个未处理的异常导致设备重启。 + +Core Security通过自己的CoreLabs团队发现了这个下次(CVE-2014-0997),早在2014年9月就汇报给了Google。这家供应商确认了这个问题,却把它列为低严重性,并不提供修复时间表。 + +每次Core Security联系Android安全组要求提供修复时间表的时候都会收到同样的答复。最后一次答复是1月20日,意味着这么段时间中都没有补丁。在星期一的时候,这家安全公司公布了他们的发现。 + +这家安全公司建立了一个(概念证明)[1]来展示他们研究结果的有效性。 + +根据这个漏洞的技术细节,一些Android设备在收到一个错误的wpa_supplicant事件后可能会进入拒绝服务状态,这些事件让无线驱动和Android平台框架之间的接口有效。 + +##Google并不着急结束这个问题 + +Android安全组对于这个问题的放松态度可能是基于这个原因,这种拒绝服务状态只发生在扫描节点这一小段时间。 + +不仅如此,实际上结果也并不严重,因为它会导致设备重启。不存在数据泄漏的风险或是能引起这个问题的攻击,不会吸引攻击者。另一方面,不管怎样都应该提供一个补丁,以减轻任何未来的潜在风险。 + +Core Security声称在Android 5.0.1及以上版本中没有测试到这个问题,他们发现的受影响的设备有运行移动操作系统版本4.4.4的Nexus 5和4,运行Android 4.2.2的LG D806和Samsung SM-T310,以及4.1.2版本系统的Motorola RAZR HD。 + +目前,减轻影响的方式是尽量不用Wi-Fi直连,或者升级到没有漏洞的Android版本。 + + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299.shtml + +本文发布时间:27 Jan 2015, 09:11 GMT + +作者:[Ionut Ilascu][a] + +译者:[zpl1025](https://github.com/zpl1025) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/ionut-ilascu +[1]:http://www.coresecurity.com/advisories/android-wifi-direct-denial-service From 3121e70dd93a29bc26b1e1372d254cfb21b77bc3 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Fri, 30 Jan 2015 17:40:11 +0800 Subject: [PATCH 153/725] [transltaing] Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon --- ... Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md b/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md index 1fa678a6c1..9ec2de9a13 100644 --- a/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md +++ b/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md @@ -1,3 +1,4 @@ +zpl1025 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon ---- *A new kernel branch is being tracked by Ubuntu* @@ -30,4 +31,4 @@ via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-W [a]:http://news.softpedia.com/editors/browse/silviu-stahie [1]:https://lists.ubuntu.com/archives/ubuntu-devel/2015-January/038644.html -[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml \ No newline at end of file +[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml From e05018392e35cd7935fe66da49db56f134e950a6 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Fri, 30 Jan 2015 18:05:46 +0800 Subject: [PATCH 154/725] [translated] 20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon --- ...Integrate Linux Kernel 3.19 Branch Soon.md | 34 ------------------- ...Integrate Linux Kernel 3.19 Branch Soon.md | 33 ++++++++++++++++++ 2 files changed, 33 insertions(+), 34 deletions(-) delete mode 100644 sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md create mode 100644 translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md diff --git a/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md b/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md deleted file mode 100644 index 9ec2de9a13..0000000000 --- a/sources/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md +++ /dev/null @@ -1,34 +0,0 @@ -zpl1025 -Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon ----- -*A new kernel branch is being tracked by Ubuntu* - -![Ubuntu 15.04 shortcuts](http://i1-news.softpedia-static.com/images/news2/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121-2.jpg) - -#The Linux kernel is one of the most important components in a distribution and Ubuntu users are interested to know what will be used in the stable edition for the 15.04 branch, which is scheduled to arrive in a couple of months. - -The Ubuntu and the Linux kernel development cycles are not in sync and it's hard to anticipate what version will eventually land in Ubuntu 15.04. For now, Ubuntu 15.04 (Vivid Vervet) is using Linux kernel 3.18, but the developers are already looking to implement the 3.19 branch. - -"Our Vivid kernel remains based on the v3.18.2 upstream stable kernel, but we'll be rebasing to v3.18.3 shortly. We'll also be re-basing our unstable branch to v3.19-rc5 and get that uploaded to our team PPA soon," [said](1) Canonical's Joseph Salisbury. - -Linux kernel 3.19 is still under development and it will take a few weeks to see a stable version, but it's enough time to implement it in Ubuntu and test it properly. It won't be possible to get the 3.20 branch, for example, even if it launches before the April 23. - -You can [download Ubuntu 15.04](2) right now from Softpedia and give it a spin. It's a daily build and it contains all the improvements made so far to the distribution. - --------------------------------------------------------------------------------- - -via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml - -本文发布时间:25 Jan 2015, 20:39 GMT - -作者:[Silviu Stahie][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/silviu-stahie -[1]:https://lists.ubuntu.com/archives/ubuntu-devel/2015-January/038644.html -[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml diff --git a/translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md b/translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md new file mode 100644 index 0000000000..5ff335214f --- /dev/null +++ b/translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md @@ -0,0 +1,33 @@ +Ubuntu 15.04即将整合Linux内核3.19分支 +---- +*Ubuntu已经开始跟踪一个新的内核分支* + +![Ubuntu 15.04 shortcuts](http://i1-news.softpedia-static.com/images/news2/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121-2.jpg) + +#Linux内核是一个发行版中最重要的组成部分,Ubuntu用户很想知道哪个版本将用于15.04分支的稳定版中,预计几个月后就会发布。 + +Ubuntu和Linux内核开发周期并不同步,所以很难预测最终哪个版本将应用在Ubuntu 15.04中。目前,Ubuntu 15.04(长尾黑颚猴)使用的是Linux内核3.18,但是开发者们已经准备应用3.19分支了。 + +“我们的Vivid内核仍然基于v3.18.2的稳定内核上游,但是我们很快将基础变更到v3.18.3。我们也将把我们的非稳定版分支的基础变更到v3.19-rc5,然后上传到我们的团队PPA。”Canonical的Joseph Salisbury[说](1)。 + +Linux内核3.19仍然处于开发阶段,预计还要几个星期才会出稳定版本,但是有充足的时间将它加入到Ubuntu中并测试。不可能等到3.20分支了,举个例子,即使它能在4月23日前发布。 + +你现在就可以从Softpedia[下载Ubuntu 15.04](2),试用一下。这是一个每日构建版本,会包含发行版中目前已经做出的所有改善。 + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml + +本文发布时间:25 Jan 2015, 20:39 GMT + +作者:[Silviu Stahie][a] + +译者:[zpl1025](https://github.com/zpl1025) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie +[1]:https://lists.ubuntu.com/archives/ubuntu-devel/2015-January/038644.html +[2]:http://linux.softpedia.com/get/Linux-Distributions/Ubuntu-Vivid-Vervet-103651.shtml From 4ff41b3e8b0f403569df77bd1bc6f8874752d861 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Fri, 30 Jan 2015 18:13:38 +0800 Subject: [PATCH 155/725] [translating] Test drive Linux with nothing but a flash drive --- ...20141030 Test drive Linux with nothing but a flash drive.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md b/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md index 84d5b7a9d4..7b5c5511c8 100644 --- a/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md +++ b/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md @@ -1,3 +1,4 @@ +zpl1025 Test drive Linux with nothing but a flash drive ================================================================================ ![Penguins gathered together: Linux for the win](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png) @@ -72,4 +73,4 @@ via: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive [a]:https://opensource.com/users/scottnesbitt [1]:http://en.wikipedia.org/wiki/ISO_image [2]:http://unetbootin.sourceforge.net/ -[3]:http://en.wikipedia.org/wiki/BIOS \ No newline at end of file +[3]:http://en.wikipedia.org/wiki/BIOS From af6cb2be2ec5021489295cfdedad8fc88f918bce Mon Sep 17 00:00:00 2001 From: Vic___ Date: Sat, 31 Jan 2015 09:56:09 +0800 Subject: [PATCH 156/725] =?UTF-8?q?=E5=BC=BA=E5=9C=B0=E4=B8=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20150126 4 lvcreate Command Examples on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150126 4 lvcreate Command Examples on Linux.md b/sources/tech/20150126 4 lvcreate Command Examples on Linux.md index ae7e177116..bce08cc203 100644 --- a/sources/tech/20150126 4 lvcreate Command Examples on Linux.md +++ b/sources/tech/20150126 4 lvcreate Command Examples on Linux.md @@ -1,3 +1,5 @@ + Vic020 + 4 lvcreate Command Examples on Linux ================================================================================ Logical volume management (LVM) is a widely-used technique and extremely flexible disk management scheme. It basically contain three basic command : @@ -117,4 +119,4 @@ via: http://www.ehowstuff.com/4-lvcreate-command-examples-on-linux/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.ehowstuff.com/author/mhstar/ \ No newline at end of file +[a]:http://www.ehowstuff.com/author/mhstar/ From 1611855c9b25df3a870ff5c935b4607975f331d7 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sat, 31 Jan 2015 11:15:16 +0800 Subject: [PATCH 157/725] Update 20150127 How to limit network bandwidth on Linux.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译这篇文章。 by FSSlc --- .../tech/20150127 How to limit network bandwidth on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150127 How to limit network bandwidth on Linux.md b/sources/tech/20150127 How to limit network bandwidth on Linux.md index 1deaa38b49..5507b3283d 100644 --- a/sources/tech/20150127 How to limit network bandwidth on Linux.md +++ b/sources/tech/20150127 How to limit network bandwidth on Linux.md @@ -1,3 +1,5 @@ +[Translating] by FSSlc + How to limit network bandwidth on Linux ================================================================================ If you often run multiple networking applications on your Linux desktop, or share bandwidth among multiple computers at home, you will want to have a better control over bandwidth usage. Otherwise, when you are downloading a big file with a downloader, your interactive SSH session may become sluggish to the point where it's unusable. Or when you sync a big folder over Dropbox, your roommate may complain that video streaming at her computer gets choppy. @@ -87,4 +89,4 @@ via: http://xmodulo.com/limit-network-bandwidth-linux.html [4]:http://lartc.org/wondershaper/ [5]:http://lartc.org/manpages/tc.txt [6]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[7]:http://www.lartc.org/lartc.html \ No newline at end of file +[7]:http://www.lartc.org/lartc.html From 2d9fe2df0130c2a4af2710b6d11922db6ae92998 Mon Sep 17 00:00:00 2001 From: Stevearzh Date: Sat, 31 Jan 2015 19:16:18 +0800 Subject: [PATCH 158/725] translated by Stevearzh --- ...114 Why Mac users don't switch to Linux.md | 82 ------------------- ...114 Why Mac users don't switch to Linux.md | 81 ++++++++++++++++++ 2 files changed, 81 insertions(+), 82 deletions(-) delete mode 100644 sources/talk/20150114 Why Mac users don't switch to Linux.md create mode 100644 translated/talk/20150114 Why Mac users don't switch to Linux.md diff --git a/sources/talk/20150114 Why Mac users don't switch to Linux.md b/sources/talk/20150114 Why Mac users don't switch to Linux.md deleted file mode 100644 index 6a72276819..0000000000 --- a/sources/talk/20150114 Why Mac users don't switch to Linux.md +++ /dev/null @@ -1,82 +0,0 @@ -[Translating by Stevearzh] -Why Mac users don’t switch to Linux -================================================================================ -Linux and Mac users share at least one common thing: they prefer not to use Windows. But after that the two groups part company and tend to go their separate ways. But why don’t more Mac users switch to Linux? Is there something that prevents Mac users from making the jump? - -[Datamation took a look at these questions][1] and tried to answer them. Datamation’s conclusion was that it’s really about the applications and workflow, not the operating system: - -> …there are some instances where replacing existing applications with new options isn’t terribly practical – both in workflow and in overall functionality. This is an area where, sadly, Apple has excelled in. So while it’s hardly “impossible” to get around these issues, they are definitely a large enough challenge that it will give the typical Mac enthusiast pause. -> -> But outside of Web developers, honestly, I don’t see Mac users “en masse,” seeking to disrupt their workflows for the mere idea of avoiding the upgrade to OS X Yosemite. Granted, having seen Yosemite up close – Mac users who are considered power users will absolutely find this change-up to be hideous. However, despite poor OS X UI changes, the core workflow for existing Mac users will remain largely unchanged and unchallenged. -> -> No, I believe Linux adoption will continue to be sporadic and random. Ever-growing, but not something that is easily measured or accurately calculated. - -I agree to a certain extent with Datamation’s take on the importance of applications and workflows, both things are important and matter in the choice of a desktop operating system. But I think there’s something more going on with Mac users than just that. I believe that there’s a different mentality that exists between Linux and Mac users, and I think that’s the real reason why many Mac users don’t switch to Linux. - -![](http://jimlynch.com/wp-content/uploads/2015/01/mac-users-switch-to-linux.jpeg) - -### It’s all about control for Linux users ### - -Linux users tend to want control over their computing experience, they want to be able to change things to make them the way that they want them. One simply cannot do that in the same way with OS X or any other Apple products. With Apple you get what they give you for the most part. - -For Mac (and iOS) users this is fine, they seem mostly content to stay within Apple’s walled garden and live according to whatever standards and options Apple gives them. But this is totally unacceptable to most Linux users. People who move to Linux usually come from Windows, and it’s there that they develop their loathing for someone else trying to define or control their computing experiences. - -And once someone like that has tasted the freedom that Linux offers, it’s almost impossible for them to want to go back to living under the thumb of Apple, Microsoft or anyone else. You’d have to pry Linux from their cold, dead fingers before they’d accept the computing experience created for them Apple or Microsoft. - -But you won’t find that same determination to have control among most Mac users. For them it’s mostly about getting the most out of whatever Apple has done with OS X in its latest update. They tend to adjust fairly quickly to new versions of OS X and even when unhappy with Apple’s changes they seem content to continue living within Apple’s walled garden. - -So the need for control is a huge difference between Mac and Linux users. I don’t see it as a problem though since it just reflects the reality of two very different attitudes toward using computers. - -### Mac users need Apple’s support mechanisms ### - -Linux users are also different in the sense that they don’t mind getting their hands dirty by getting “under the hood” of their computers. Along with control comes the personal responsibility of making sure that their Linux systems work well and efficiently, and digging into the operating system is something that many Linux users have no problem doing. - -When a Linux user needs to fix something, chances are they will attempt to do so immediately themselves. If that doesn’t work then they’ll seek additional information online from other Linux users and work through the problem until it has been resolved. - -But Mac users are most likely not going to do that to the same extent. That is probably one of the reasons why Apple stores are so popular and why so many Mac users opt to buy Apple Care when they get a new Mac. A Mac user can simply take his or her computer to the Apple store and ask someone to fix it for them. There they can belly up to the Genius Bar and have their computer looked at by someone Apple has paid to fix it. - -Most Linux users would blanche at the thought of doing such a thing. Who wants some guy you don’t even know to lay hands on your computer and start trying to fix it for you? Some Linux users would shudder at the very idea of such a thing happening. - -So it would be hard for a Mac user to switch to Linux and suddenly be bereft of the support from Apple that he or she was used to getting in the past. Some Mac users might feel very vulnerable and uncertain if they were cut off from the Apple mothership in terms of support. - -### Mac users love Apple’s hardware ### - -The Datamation article focused on software, but I believe that hardware also matters to Mac users. Most Apple customers tend to love Apple’s hardware. When they buy a Mac, they aren’t just buying it for OS X. They are also buying Apple’s industrial design expertise and that can be an important differentiator for Mac users. Mac users are willing to pay more because they perceive that the overall value they are getting from Apple for a Mac is worth it. - -Linux users, on the other hand, seem less concerned by such things. I think they tend to focus more on cost and less on the looks or design of their computer hardware. For them it’s probably about getting the most value from the hardware at the lowest cost. They aren’t in love with the way their computer hardware looks in the same way that some Mac users probably are, and so they don’t make buying decisions based on it. - -I think both points of view on hardware are equally valid. It ultimately gets down to the needs of the individual user and what matters to them when they choose to buy or, in the case of some Linux users, build their computer. Value is the key for both groups, and each has its own perceptions of what constitutes real value in a computer. - -Of course it is [possible to run Linux on a Mac][2], directly or indirectly via virtual machine. So a user that really liked Apple’s hardware does have the option of keeping their Mac but installing Linux on it. - -### Too many Linux distros to choose from? ### - -Another reason that might make it hard for a Mac user to move to Linux is the sheer number of distributions to choose from in the world of Linux. While most Linux users probably welcome the huge diversity of distros available, it could also be very confusing for a Mac user who hasn’t learned to navigate those choices. - -Over time I think a Mac user would learn and adjust by figuring out which distribution worked best for him or her. But in the short term it might be a very daunting hurdle to overcome after being used to OS X for a long period of time. I don’t think it’s insurmountable, but it’s definitely something that is worth mentioning here. - -Of course we do have helpful resources like [DistroWatch][3] and even my own [Desktop Linux Reviews][4] blog that can help people find the right Linux distribution. Plus there are many articles available about “the best Linux distro” and that sort of thing that Mac users can use as resources when trying to figure out the distribution they want to use. - -But one of the reasons why Apple customers buy Macs is the simplicity and all-in-one solution that they offer in terms of the hardware and software being unified by Apple. So I am not sure how many Mac users would really want to spend the time trying to find the right Linux distribution. It might be something that puts them off really considering the switch to Linux. - -### Mac users are apples and Linux users are oranges ### - -I see nothing wrong with Mac and Linux users going their separate ways. I think we’re just talking about two very different groups of people, and it’s a good thing that both groups can find and use the operating system and software that they prefer. Let Mac users enjoy OS X and let Linux users enjoy Linux, and hopefully both groups will be happy and content with their computers. - -Every once in a while a Mac user might stray over to Linux or vice versa, but for the most part I think the two groups live in different worlds and mostly prefer to stay separate and apart from one another. I generally don’t compare the two because when you get right down to it, it’s really just a case of apples and oranges. - --------------------------------------------------------------------------------- - -via: http://jimlynch.com/linux-articles/why-mac-users-dont-switch-to-linux/ - -作者:[Jim Lynch][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://jimlynch.com/author/Jim/ -[1]:http://www.datamation.com/open-source/why-linux-isnt-winning-over-mac-users-1.html -[2]:http://www.howtogeek.com/187410/how-to-install-and-dual-boot-linux-on-a-mac/ -[3]:http://distrowatch.com/ -[4]:http://desktoplinuxreviews.com/ \ No newline at end of file diff --git a/translated/talk/20150114 Why Mac users don't switch to Linux.md b/translated/talk/20150114 Why Mac users don't switch to Linux.md new file mode 100644 index 0000000000..ae5337b1f2 --- /dev/null +++ b/translated/talk/20150114 Why Mac users don't switch to Linux.md @@ -0,0 +1,81 @@ +为什么 Mac 用户不选择 Linux +================================================================================ +Linux 与 Mac 用户至少有一个共同点:他们都不太喜欢用 Windows。但除了这点外,二者再也无法达成其他共识,只得分道扬镳。为什么 Mac 用户不选择 Linux 呢?是什么因素致使 Mac 用户做出了这种选择的? + +[Datamation 就此问题做了一番调查][1],并试图进行解答。Datamation 的结论是,所有原因都只归结于众多应用及工作区,而非操作系统的关系: + +> …某些事例表明,尝试用新应用接替现有应用,并非会是很糟糕的体验 - 对工作区和实用性来说都是如此。但不幸的是,苹果在这些方面做得非常好。因此,在几乎不可能改变这些事实的情况下,想要拉拢那些 Mac忠实用户实在是很大的挑战。 + +> 不过老实来说,除了 Web 开发者,我还没见过 Mac 用户仅仅为了避免升级到 OS X Yosemite 而 “ +en masse”(法语:共同,一起) 尝试变更他们的工作区。诚然,经历过 Yosemite 更新后 - 考虑过权限的用户应该会发现这方面已经变得非常令人讨厌。并且,OS X 除了在 UI 方面几乎没有变化,针对现有 Mac 用户的核心工作区也在最大程度上保持了原样。 + +> 但,我相信 Linux 在未来将会继续保持多样化特点。Linux 会继续成长,但绝不是经过精确计量般得一成不变。 + +我大体上同意 Datamation 关于应用和工作区的重要性的结论,在选择操作系统时这两方面是必须要考虑顾及的。但我认为对 Mac 用户来说,选择 Mac 有比这两方面更重要的因素。我相信是不同的心态造就了 Linux 和 Mac 用户,并且我认为这才是为什么 Mac 用户不选择 Linux 的真实原因。 + +![](http://jimlynch.com/wp-content/uploads/2015/01/mac-users-switch-to-linux.jpeg) + +### 控制权才是 Linux 用户最看重的地方 ### +Linux 用户倾向于控制电脑上的所有细节,他们试图作出一切能做的努力使操作系统变成他们想要的样子。但这种方式并不适用于 OS X 以及其他任何苹果的产品。如果你使用了苹果的产品,就意味着绝大多数情况下,你只能按照苹果预先设定的模式来使用它们。 + +对 Mac(以及 iOS)用户来说这没什么,因为他们似乎并不在乎生活在苹果那围墙高筑的花园里,仅仅使用那些苹果给予他们的标准和选择。但这对绝大多数 Linux 用户来说是完全不能接受的。Linux 的新用户通常来自 Windows,正是从那里,他们开始厌恶那些告诉他们什么才叫操作系统,并试图限制操作系统权限的东西的。 + +自从他们尝到使用自由的 Linux 系统所带来的甜头之后,他们就再也不会再回到苹果或者微软的监牢里去了。即使你在他们死后,把 Linux 从他们那冰冷僵硬的手指下撬出来,他们也不会接受苹果和微软那种糟糕的操作系统。 + +但绝大部分 Mac 用户不会有这样的意志和决心。对他们来说当苹果升级 OS X 时放弃他们现有的习惯方式是非常容易的。在苹果那围墙高筑的花园里,即使他们不满意苹果的变化,他们也会迅速地接受。 + +因此,对控制权的渴望是 Mac 用户与 Linux 用户的最大不同。但我并未把它视为一个问题,尽管这反映出使用电脑的两类人的截然不同的态度。 + +### Mac 用户离不开苹果的技术支持 ### + +Linux 用户与 Mac 用户的区别也体现在 Linux 用户并不介意亲自维护自己的电脑。虽然维护电脑及控制操作系统都是很大的责任,但 Linux 用户还是愿意独自承担,愿意通过自己的力量使他们的系统工作得更棒更有效率,并且深入了解操作系统是每一位 Linux 用户都乐衷的事情。 + +当 Linux 用户遇到问题的时,他们会迅速地尝试自己来解决问题。如果这不奏效的话,他们会在网上寻找其他用户在遇到类似问题是怎么解决的,并不断进行尝试,直到问题解决。 + +但 Mac 用户却不大会这样。这也许是为什么苹果零售店如此火爆、为什么如此多的 Mac 用户在拿到新 Mac 的时候会选择购买苹果维护服务的原因。Mac 用户会很轻易得带着 TA 的电脑去苹果零售店,走进天才吧并要求苹果的工作人员为其查看和修复电脑。 + +绝大多数 Linux 用户连想都不会像这种事情。谁会愿意让一个你都不认识的家伙碰你的电脑并维修它呢? + +因此对 Mac 用户来说,很难抛弃过去可以从苹果那里得到的技术支持,转而使用 Linux。这种选择会令某些 Mac 用户觉得自己的电脑将变得非常脆弱、容易被攻击,他们如同离开母亲怀抱的婴儿般充满了无助感。 + +### Mac 用户喜爱苹果的硬件 ### + +Datamation 发表的文章中主要研究了软件方面的原因,但我认为硬件因素同样对 Mac 用户有很大影响。绝大部分 Mac 用户非常喜爱苹果的硬件。TA 们购买 Mac 并不仅仅是为了 OS X。苹果那精美的工艺设计也是 Mac 用户购买时着重考虑的一点。Mac 用户愿意支付高价购买电脑,因为他们认为这样绝对是物有所值的。 + +另一方面,Linux 用户似乎并不会考虑这些东西。我认为他们更偏向于在他们的电脑外观上花费较少的金钱。对他们来说,花费最少的金钱来获取尽可能好的硬件才是最重要的。他们并不像 Mac 用户一样热衷于电脑的外观,因此这一点并不是他们在购买电脑时考虑的地方。 + +我认为对于硬件的两种不同观点是没有高低之分的。这仅仅和用户的不同需求有关,仅仅会在他们购买电脑时影响他们,或者对某些 Linux 用户来说只是因为他们想要自己组装电脑而已。两种观点只是因为出发点不同、对于电脑的真正价值体现所在之处的理解不同罢了。 + +当然[在 Mac 上运行 Linux 是可能的][2],直接运行或者间接地通过虚拟机运行。因此真心喜欢苹果硬件的 Mac 用户是可以选择在 Mac 上安装 Linux 的。 + +### Linux 发行版太多了不知道选哪个? ### + +另一个让 Mac 用户无法选择 Linux 的原因是:要从从众多 Linux 发行版当中选择一个实在是太困难了。在大多数 Linux 并不抗拒的多元化发行版时代,没有任何相关知识的 Mac 用户感到十分困惑。 + +我认为,随着时间的推移,Mac 用户是可以找出不适应最适合自己的发行版的。但在短时间内,尤其是在长时期得使用 OS X 之后,这是一个艰巨的任务。我不认为这个问题是无法克服的,但却有必要在这里提一下。 + +当然我们可以给 Mac 用户指明道路,推荐参考 [DistroWatch][3] 还有我们人的博客 [Desktop Linux Reviews][4],这都有助于 Mac 用户找到正确的 Linux 发行版。再说一条,网上有很多诸如“最好的 Linux 发行版”等类似的文章,当 Mac 用户想要寻找适合自己使用的发行版时可以参考一下。 + +但有苹果顾客购买 Mac 的其中一个原因是苹果硬件软件协调统一起来的简便性和易用性。所以我不确定有多少 Mac 用户愿意花费时间找出适合自己的 Linux 发行版。也许是否要使用 Linux 确实会令 TA 们考虑一阵子了。 + +### Mac 用户是苹果,Linux 用户是橘子 ### + +Mac 用户与 Linux 用户分道扬镳我认为并没有什么不妥。我认为我们只是在谈论两类完全不同的人群,这是一件好事,因为两类人群都在按自己四环的方式去使用操作系统和软件。让 Mac 用户和 Linux 用户各自沉浸在 OS X 和 Linux 中吧,希望他们都能高兴,都能对自己的电脑满意。 + +也许 Mac 用户会偶然走入 Linux 的世界并开始转向 Linux,但我认为绝大多数时候,两类人都愿意呆在在不同的世界并不与对方接触。通常来说我并不会随意比较二者,尤其是你已经自己拿定主意的时候,况且这只不过是选苹果还是选橘子的问题罢了。 + +-------------------------------------------------------------------------------- + +via: http://jimlynch.com/linux-articles/why-mac-users-dont-switch-to-linux/ + +作者:[Jim Lynch][a] +译者:[Stevearzh](https://github.com/Stevearzh) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://jimlynch.com/author/Jim/ +[1]:http://www.datamation.com/open-source/why-linux-isnt-winning-over-mac-users-1.html +[2]:http://www.howtogeek.com/187410/how-to-install-and-dual-boot-linux-on-a-mac/ +[3]:http://distrowatch.com/ +[4]:http://desktoplinuxreviews.com/ \ No newline at end of file From f97c46490fbe9cb77142a52ea0510bccca8dc1be Mon Sep 17 00:00:00 2001 From: 2q1w2007 <2q1w2007@163.com> Date: Sat, 31 Jan 2015 21:56:30 +0800 Subject: [PATCH 159/725] =?UTF-8?q?20150131=20=E9=80=89=E9=A2=98=202015013?= =?UTF-8?q?1=20WordPress=20Can=20Be=20Used=20to=20Leverage=20Critical=20Gh?= =?UTF-8?q?ost=20Flaw=20in=20Linux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...o Leverage Critical Ghost Flaw in Linux.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md diff --git a/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md b/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md new file mode 100644 index 0000000000..3d132079a4 --- /dev/null +++ b/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md @@ -0,0 +1,49 @@ +WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux +----- +*Users are advised to apply available patches immediately* + +![WordPress validating pingback’s post URL](http://i1-news.softpedia-static.com/images/news2/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730-2.jpg) + +**The vulnerability revealed this week by security researchers at Qualys, who dubbed it [Ghost](1), could be taken advantage of through WordPress or other PHP applications to compromise web servers.** + +The glitch is a buffer overflow that can be triggered by an attacker to gain command execution privileges on a Linux machine. It is present in the glibc’s “__nss_hostname_digits_dots()” function that can be used by the “gethostbyname()” function. + +##PHP applications can be used to exploit the glitch + +Marc-Alexandre Montpas at Sucuri says that the problem is significant because these functions are used in plenty of software and server-level mechanism. + +“An example of where this could be a big issue is within WordPress itself: it uses a function named wp_http_validate_url() to validate every pingback’s post URL,” which is carried out through the “gethostbyname()” function wrapper used by PHP applications, he writes in a blog post on Wednesday. + +An attacker could use this method to introduce a malicious URL designed to trigger the vulnerability on the server side and thus obtain access to the machine. + +In fact, security researchers at Trustwave created [proof-of-concept](2) code that would cause the buffer overflow using the pingback feature in WordPress. + +##Multiple Linux distributions are affected + +Ghost is present in glibc versions up to 2.17, which was made available in May 21, 2013. The latest version of glibc is 2.20, available since September 2014. + +However, at that time it was not promoted as a security fix and was not included in many Linux distributions, those offering long-term support (LTS) in particular. + +Among the impacted operating systems are Debian 7 (wheezy), Red Hat Enterprise Linux 6 and 7, CentOS 6 and 7, Ubuntu 12.04. Luckily, Linux vendors have started to distribute updates with the fix that mitigates the risk. Users are advised to waste no time downloading and applying them. + +In order to demonstrate the flaw, Qualys has created an exploit that allowed them remote code execution through the Exim email server. The security company said that it would not release the exploit until the glitch reached its half-life, meaning that the number of the affected systems has been reduced by 50%. + +Vulnerable application in Linux are clockdiff, ping and arping (under certain conditions), procmail, pppd, and Exim mail server. + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730.shtml + +本文发布时间:30 Jan 2015, 17:36 GMT + +作者:[Ionut Ilascu][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/ionut-ilascu +[1]:http://news.softpedia.com/news/Linux-Systems-Affected-by-14-year-old-Vulnerability-in-Core-Component-471428.shtml +[2]:http://blog.spiderlabs.com/2015/01/ghost-gethostbyname-heap-overflow-in-glibc-cve-2015-0235.html From a9b73de3d3340c03ce805e268857621f80a7b102 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 1 Feb 2015 10:16:31 +0800 Subject: [PATCH 160/725] PUB:20150121 Linux FAQs with Answers--How to check disk space on Linux with df command @mtunique --- ...eck disk space on Linux with df command.md | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) rename {translated/tech => published}/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md (88%) diff --git a/translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/published/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md similarity index 88% rename from translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md rename to published/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md index 6b1d65ca8b..adecdd2520 100644 --- a/translated/tech/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md +++ b/published/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md @@ -1,4 +1,4 @@ -Linux有问必答:在Linux下如何用df命令检查磁盘空间? +在 Linux 下你所不知道的 df 命令的那些功能 ================================================================================ > **问题**: 我知道在Linux上我可以用df命令来查看磁盘使用空间。你能告诉我df命令的实际例子使我可以最大限度得利用它吗? @@ -10,7 +10,7 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 ### 用人们可读的方式展示 ### -默认情况下,df命令用1K为块来展示磁盘空间,这不容易解释。“-h”参数使df用更可读的方式打印磁盘空间(例如 100K,200M,3G)。 +默认情况下,df命令用1K为块来展示磁盘空间,这看起来不是很直观。“-h”参数使df用更可读的方式打印磁盘空间(例如 100K,200M,3G)。 $ df -h @@ -28,7 +28,7 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 ### 展示Inode使用情况 ### -当你监视磁盘使用情况时,你必须注意的不仅仅是磁盘空间还有“inode”的使用情况。在Linux中,inode是用来存储特定文件的元数据的一种数据结构,在创建一个文件系统时,inode的预先定义数量将被分配。这意味着,一个文件系统可能耗尽空间不只是因为大文件用完了所有可用空间,也可能是因为很多小文件用完了所有可能的inode。用“-i”选项展示inode使用情况。 +当你监视磁盘使用情况时,你必须注意的不仅仅是磁盘空间还有“inode”的使用情况。在Linux中,inode是用来存储特定文件的元数据的一种数据结构,在创建一个文件系统时,inode的预先定义数量将被分配。这意味着,**一个文件系统可能耗尽空间不只是因为大文件用完了所有可用空间,也可能是因为很多小文件用完了所有可能的inode**。用“-i”选项展示inode使用情况。 $ df -i @@ -46,7 +46,8 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 ### 展示磁盘总利用率 ### -默认情况下, df命令显示磁盘的单个文件系统的利用率。如果你想知道的所有文件系统的总磁盘使用量,增加“ --total ”选项。 +默认情况下, df命令显示磁盘的单个文件系统的利用率。如果你想知道的所有文件系统的总磁盘使用量,增加“ --total ”选项(见最下面的汇总行)。 + $ df -h --total ---------- @@ -64,7 +65,7 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 ### 展示文件系统类型 ### -默认情况下,df命令不现实文件系统类型信息。用“-T”选项来添加文件系统信息到输出中。 +默认情况下,df命令不显示文件系统类型信息。用“-T”选项来添加文件系统信息到输出中。 $ df -T @@ -92,13 +93,13 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 /dev/mapper/ubuntu-root 952893348 591583380 312882756 66% / /dev/sda1 233191 100025 120725 46% /boot -排除特定的文件系统类型,用“-x ”选项。同样,你可以用这个选项多次。 +排除特定的文件系统类型,用“-x ”选项。同样,你可以用这个选项多次来排除多种文件系统类型。 $ df -x tmpfs ### 显示一个具体的挂载点磁盘使用情况 ### -如果你用df指定一个挂载点,它将报告挂载在那个地方的文件系统的磁盘使用情况。如果你指定一个普通文件(或一个目录)而不是一个挂载点,df将现实包含这个文件(或目录)的文件系统的磁盘利用率。 +如果你用df指定一个挂载点,它将报告挂载在那个地方的文件系统的磁盘使用情况。如果你指定一个普通文件(或一个目录)而不是一个挂载点,df将显示包含这个文件(或目录)的文件系统的磁盘利用率。 $ df / @@ -116,9 +117,9 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/ubuntu-root 952893348 591583528 312882608 66% / -### 现实虚拟文件系统的信息 ### +### 显示虚拟文件系统的信息 ### -如果你想显示所有已经存在的文件系统(包括虚拟文件系统)的磁盘空间信息,用“-a”选项。这里,虚拟文件系统是指没有相对应的物理设备的假的文件系统,例如,tmpfs,cgroup虚拟文件系统或FUSE文件安系统。这些虚拟文件系统大小为0,不用“-a”选项将不会被报告出来。 +如果你想显示所有已经存在的文件系统(包括虚拟文件系统)的磁盘空间信息,用“-a”选项。这里,虚拟文件系统是指没有相对应的物理设备的假文件系统,例如,tmpfs,cgroup虚拟文件系统或FUSE文件安系统。这些虚拟文件系统大小为0,不用“-a”选项将不会被报告出来。 $ df -a @@ -149,7 +150,7 @@ df命令可以展示任何“mounted”文件系统的磁盘利用率。该命 via: http://ask.xmodulo.com/check-disk-space-linux-df-command.html 译者:[mtunique](https://github.com/mtunique) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 98e68b6b8b5f25fa311fc170a0410423862d38cc Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 1 Feb 2015 10:35:04 +0800 Subject: [PATCH 161/725] PUB:20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu @GOLinux --- ... Track of Multiple Time Zones in Ubuntu.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/tech => published}/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md (78%) diff --git a/translated/tech/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md b/published/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md similarity index 78% rename from translated/tech/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md rename to published/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md index 273d949490..57ff68b6d2 100644 --- a/translated/tech/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md +++ b/published/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md @@ -2,13 +2,13 @@ Ubuntu中跟踪多个时区的简捷方法 ================================================================================ ![date-time](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/date-time.jpg) -**我是否要确保在我醒来时或者安排与*山姆陈*,Ohso的半个开发商,进行Skype通话时,澳大利亚一个关于Chromebook销售的推特已经售罄,我大脑同时在多个时区下工作。** +**无论我是要在醒来时发个关于澳大利亚的 Chromebook 销售已经售罄的推特,还是要记着和Ohso的半个开发商山姆陈进行Skype通话,我大脑都需要同时工作在多个时区下。** 那里头有个问题,如果你认识我,你会知道我的脑容量也就那么丁点,跟金鱼差不多,里头却塞着像Windows Vista这样一个臃肿货(也就是,不是很好)。我几乎记不得昨天之前的事情,更记不得我的门和金门大桥脚之间的时间差! -作为臂助,我使用一些小部件和菜单项来让我保持同步。在我常规工作日的空间里,我在多个操作系统间游弋,涵盖移动系统和桌面系统,但只有一个让我最快速便捷地设置“世界时钟”。 +作为臂助,我使用一些小部件和菜单项来让我保持同步。在我常规工作日的空间里,我在多个操作系统间游弋,涵盖移动系统和桌面系统,但只有一个可以让我最快速便捷地设置“世界时钟”。 -**而它刚好是那个名字放在门上方的东西。** +**它的名字就是我们标题上提到的那个。** ![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/timezones-300x180.jpg) @@ -16,10 +16,10 @@ Ubuntu中跟踪多个时区的简捷方法 Unity中默认的日期-时间指示器提供了添加并查看多个时区的支持,不需要附加组件,不需要额外的包。 -1. 点击时钟小应用,然后uxuanze‘**时间和日期设置**’条目 +1. 点击时钟小应用,然后选择‘**时间和日期设置**’条目 1. 在‘**时钟**’标签中,选中‘**其它位置的时间**’选框 1. 点击‘**选择位置**’按钮 -1. 点击‘**+**’,然后输入位置名称那个 +1. 点击‘**+**’,然后输入位置名称 #### 其它桌面环境 #### @@ -34,13 +34,13 @@ Unity中默认的日期-时间指示器提供了添加并查看多个时区的 ![World Clock Calendar in Cinnamon 2.4](http://www.omgubuntu.co.uk/wp-content/uploads/2014/12/cinnamon-applet.jpg) -Cinnamon 2.4中的世界时钟日历 +*Cinnamon 2.4中的世界时钟日历* -**XFCE**和**LXDE**就不那么慷慨了,除了自带的“工作区”作为**多个时钟**添加到面板外,每个都需要手动配置以指定位置。两个都支持‘指示器小部件’,所以,如果你没有依赖于Unity,你可以安装/添加单独的日期/时间指示器。 +**XFCE**和**LXDE**就不那么慷慨了,除了自带的“工作区”作为**多个时钟**添加到面板外,每个都需要手动配置以指定位置。两个都支持‘指示器小部件’,所以,如果你不用Unity的话,你可以安装/添加单独的日期/时间指示器。 -**Budgie**还刚初出茅庐,不足以胜任角落里的需求,因为Pantheon我还没试过——希望你们通过评论来让我知道得更多。 +**Budgie**还刚初出茅庐,不足以胜任这种角落里的需求,因为Pantheon我还没试过——希望你们通过评论来让我知道得更多。 -#### Desktop Apps, Widgets & Conky Themes桌面应用、不见和Conky主题 #### +#### 桌面应用、部件和Conky主题 #### 当然,面板小部件只是收纳其它国家多个时区的一种方式。如果你不满意通过面板去访问,那里还有各种各样的**桌面应用**可供使用,其中许多都可以跨版本,甚至跨平台使用。 @@ -54,7 +54,7 @@ via: http://www.omgubuntu.co.uk/2014/12/add-time-zones-world-clock-ubuntu 作者:[Joey-Elijah Sneddon][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 02766f1a2b07ce87a31aba09d77ef0a70326b99f Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 1 Feb 2015 11:07:13 +0800 Subject: [PATCH 162/725] PUB:20141223 20 Linux Commands Interview Questions & Answers @ZTinoZ --- ... Commands Interview Questions & Answers.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename {translated/talk => published}/20141223 20 Linux Commands Interview Questions & Answers.md (71%) diff --git a/translated/talk/20141223 20 Linux Commands Interview Questions & Answers.md b/published/20141223 20 Linux Commands Interview Questions & Answers.md similarity index 71% rename from translated/talk/20141223 20 Linux Commands Interview Questions & Answers.md rename to published/20141223 20 Linux Commands Interview Questions & Answers.md index 40d5019c52..d7e20f6b24 100644 --- a/translated/talk/20141223 20 Linux Commands Interview Questions & Answers.md +++ b/published/20141223 20 Linux Commands Interview Questions & Answers.md @@ -8,7 +8,7 @@ 答: 用 “route -n” 和 “netstat -nr” 命令,我们可以查看默认网关。除了默认的网关信息,这两个命令还可以显示当前的路由表。 -**问:3 如何在Linux上重建初始化内存盘影响文件?** +**问:3 如何在Linux上重建初始化内存盘镜像文件?** 答: 在CentOS 5.X / RHEL 5.X中,可以用mkinitrd命令来创建初始化内存盘文件,举例如下: @@ -30,7 +30,7 @@ **问:5 patch命令是什么?如何使用?** -答: 顾名思义,patch命令就是用来将修改(或补丁)写进文本文件里。Patch命令通常是接收diff的输出并把文件的旧版本转换为新版本。举个例子,Linux内核源代码由百万行代码文件构成,所以无论何时,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,然后接收者用patch命令将改动写进原始的源代码里。 +答: 顾名思义,patch命令就是用来将修改(或补丁)写进文本文件里。patch命令通常是接收diff的输出并把文件的旧版本转换为新版本。举个例子,Linux内核源代码由百万行代码文件构成,所以无论何时,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,然后接收者用patch命令将改动写进原始的源代码里。 创建一个diff文件给patch使用, @@ -44,7 +44,7 @@ **问:6 aspell有什么用 ?** -答: 顾名思义,aspell就是Linux操作系统上的一款交互式拼写检查器。aspell命令继任了更早的一个名为ispell的程序,并且作为一款嵌入式替代品 ,最重要的是它非常好用。当aspell程序主要被其它一些需要拼写检查能力的程序所使用的时候,在命令行中作为一个独立运行的工具的它也能十分有效。 +答: 顾名思义,aspell就是Linux操作系统上的一款交互式拼写检查器。aspell命令继任了更早的一个名为ispell的程序,并且作为一款免费替代品 ,最重要的是它非常好用。当aspell程序主要被其它一些需要拼写检查能力的程序所使用的时候,在命令行中作为一个独立运行的工具的它也能十分有效。 **问:7 如何从命令行查看域SPF记录?** @@ -56,7 +56,7 @@ 答: # rpm -qf /etc/fstab -以上命令能列出供应给“/etc/fstab”文件的包。 +以上命令能列出提供“/etc/fstab”这个文件的包。 **问:9 哪条命令用来查看bond0的状态?** @@ -64,7 +64,7 @@ **问:10 Linux系统中的/proc文件系统有什么用?** -答: /proc文件系统是一个基于维护关于当前正在运行的内核状态信息的文件系统的随机存取存储器(RAM),其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。这个文件系统所代表的是各种不实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的。 +答: /proc文件系统是一个基于内存的文件系统,其维护着关于当前正在运行的内核状态信息,其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。这个文件系统所代表的并不是各种实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的。 **问:11 如何在/usr目录下找出大小超过10MB的文件?** @@ -78,21 +78,21 @@ 答: # find /var \\! -atime -90 -**问:14 在整个目录树下查找核心文件,如发现则删除它们且不提示确认信息。** +**问:14 在整个目录树下查找文件“core”,如发现则无需提示直接删除它们。** 答: # find / -name core -exec rm {} \; **问:15 strings命令有什么作用?** -答: strings命令用来提取和显示非文本文件的清晰内容。 +答: strings命令用来提取和显示非文本文件中的文本字符串。(LCTT 译注:当用来分析你系统上莫名其妙出现的二进制程序时,可以从中找到可疑的文件访问,对于追查入侵有用处) -**问:16 tee filter有什么作用 ?** +**问:16 tee 过滤器有什么作用 ?** -答: tee filter用来向多个目标发送输出内容。它可以向一个文件发送一份输出的拷贝并且如果使用管道的话可以在屏幕上(或一些其它程序)输出其它内容。 +答: tee 过滤器用来向多个目标发送输出内容。如果用于管道的话,它可以将输出复制一份到一个文件,并复制另外一份到屏幕上(或一些其它程序)。 linuxtechi@localhost:~$ ll /etc | nl | tee /tmp/ll.out -在以上例子中,从ll输出的是在 /tmp/ll.out 文件中被捕获的,输出同样在屏幕上显示了出来。 +在以上例子中,从ll输出可以捕获到 /tmp/ll.out 文件中,并且同样在屏幕上显示了出来。 **问:17 export PS1 = ”$LOGNAME@`hostname`:\$PWD: 这条命令是在做什么?** @@ -108,7 +108,7 @@ **问:20 linux中lspci命令的作用是什么?** -答: lspci命令用来显示你的系统上PCI总线和附加设备的信息。指定-v,-vv或-vvv来获取详细输出,加上-r参数的话,命令的输出则会更具有易读性。 +答: lspci命令用来显示你的系统上PCI总线和附加设备的信息。指定-v,-vv或-vvv来获取越来越详细的输出,加上-r参数的话,命令的输出则会更具有易读性。 -------------------------------------------------------------------------------- @@ -116,7 +116,7 @@ via: http://www.linuxtechi.com/20-linux-commands-interview-questions-answers/ 作者:[Pradeep Kumar][a] 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c5b7cdcd7b0340a7627878e5782fa79786a39865 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 1 Feb 2015 11:29:31 +0800 Subject: [PATCH 163/725] PUB:20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux @Vic020 --- ...swers--How to install Kingsoft Office on Linux.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) rename {translated/tech => published}/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md (79%) diff --git a/translated/tech/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md b/published/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md similarity index 79% rename from translated/tech/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md rename to published/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md index 0c7a0110b1..28cef519f8 100644 --- a/translated/tech/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md +++ b/published/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md @@ -1,13 +1,11 @@ -Linux有问必答 - linux如何安装WPS +Linux有问必答 - 如何在linux上安装WPS ================================================================================ > **问题**: 我听说一个好东西Kingsoft Office(译注:就是WPS),所以我想在我的Linux上试试。我怎样才能安装Kingsoft Office呢? -Kingsoft Office 一套办公套件,支持多个平台,包括Windows, Linux, iOS 和 Android。它包含三个组件:Writer(WPS文字)用来文字处理,Presentation(WPS演示)支持幻灯片,Spereadsheets(WPS表格)为电子表格。使用免费增值模式,其中基础版本是免费使用。比较其他的linux办公套件,如LibreOffice、 OpenOffice,最大优势在于,Kingsoft Office能最好的兼容微软的Office(译注:版权问题?了解下wps和Office的历史问题,可以得到一些结论)。因此如果你需要在windowns和linux平台间交互,Kingsoft office是一个很好的选择。 - +Kingsoft Office 是一套办公套件,支持多个平台,包括Windows, Linux, iOS 和 Android。它包含三个组件:Writer(WPS文字)用来文字处理,Presentation(WPS演示)支持幻灯片,Spereadsheets(WPS表格)是电子表格。其使用免费增值模式,其中基础版本是免费使用。比较其他的linux办公套件,如LibreOffice、 OpenOffice,其最大优势在于,Kingsoft Office能最好的兼容微软的Office(译注:版权问题?了解下wps和Office的历史问题,可以得到一些结论)。因此如果你需要在windows和linux平台间交互,Kingsoft office是一个很好的选择。 ### CentOS, Fedora 或 RHEL中安装Kingsoft Office ### - 在[官方页面][1]下载RPM文件.官方RPM包只支持32位版本linux,但是你可以在64位中安装。 需要使用yum命令并用"localinstall"选项来本地安装这个RPM包 @@ -39,7 +37,7 @@ DEB包同样遇到一堆依赖。因此使用[gdebi][3]命令来代替dpkg来自 ### 启动 Kingsoft Office ### -安装完成后,你就可以在桌面管理器轻松启动Witer(WPS文字), Presentation(WPS演示), and Spreadsheets(WPS表格),如下图 +安装完成后,你就可以在桌面管理器轻松启动Witer(WPS文字), Presentation(WPS演示), and Spreadsheets(WPS表格),如下图。 Ubuntu Unity中: @@ -49,7 +47,7 @@ GNOME桌面中: ![](https://farm9.staticflickr.com/8617/16039583622_4e7c1d8545_b.jpg) -不但如此,你也可以在命令行中启动Kingsoft Office +不但如此,你也可以在命令行中启动Kingsoft Office。 启动Wirter(WPS文字),使用这个命令: @@ -74,7 +72,7 @@ GNOME桌面中: via: http://ask.xmodulo.com/install-kingsoft-office-linux.html 译者:[Vic020/VicYu](http://www.vicyu.net) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 27bf18f3a648bd04a2c5eeecc308a0d72901802d Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 1 Feb 2015 11:40:04 +0800 Subject: [PATCH 164/725] PUB:20150127 Install Jetty Web Server On CentOS 7 @geekpi --- .../20150127 Install Jetty Web Server On CentOS 7.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20150127 Install Jetty Web Server On CentOS 7.md (79%) diff --git a/translated/tech/20150127 Install Jetty Web Server On CentOS 7.md b/published/20150127 Install Jetty Web Server On CentOS 7.md similarity index 79% rename from translated/tech/20150127 Install Jetty Web Server On CentOS 7.md rename to published/20150127 Install Jetty Web Server On CentOS 7.md index 3cdb89ca76..3de2c7d9fb 100644 --- a/translated/tech/20150127 Install Jetty Web Server On CentOS 7.md +++ b/published/20150127 Install Jetty Web Server On CentOS 7.md @@ -1,8 +1,8 @@ 在CentOS 7中安装Jetty服务器 ================================================================================ -[Jetty][1] 是一款纯Java的HTTP **(Web) 服务器**和Java Servlet容器。 通常在更大的网络框架中,Jetty经常用于设备间的通信。但是其他Web服务器通常给人类传递文件。Jetty是一个Eclipse基金中免费开源项目。这个Web服务器用于如Apache ActiveMQ、 Alfresco、 Apache Geronimo、 Apache Maven、 Apache Spark、Google App Engine、 Eclipse、 FUSE、 Twitter的 Streaming API 和 Zimbra中。 +[Jetty][1] 是一款纯Java的HTTP **(Web) 服务器**和Java Servlet容器。 通常在更大的网络框架中,Jetty经常用于设备间的通信,而其他Web服务器通常给“人类”传递文件 :D。Jetty是一个Eclipse基金会的免费开源项目。这个Web服务器用于如Apache ActiveMQ、 Alfresco、 Apache Geronimo、 Apache Maven、 Apache Spark、Google App Engine、 Eclipse、 FUSE、 Twitter的 Streaming API 和 Zimbra中。 -这篇文章会解释‘如何在CentOS服务器中安装Jetty服务器’。 +这篇文章会介绍‘如何在CentOS服务器中安装Jetty服务器’。 **首先我们要用下面的命令安装JDK:** @@ -58,7 +58,7 @@ 完成了! -现在你可以在 **http://:8080** 中访问了 +现在你可以在 **http://\<你的 IP 地址>:8080** 中访问了 就是这样。 @@ -70,7 +70,7 @@ via: http://www.unixmen.com/install-jetty-web-server-centos-7/ 作者:[Jijo][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3888bd0147bf3c0e18235eca2696d71c6d35c7a3 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 1 Feb 2015 11:40:53 +0800 Subject: [PATCH 165/725] translating --- ...To Monitor Access Point Signal Strength With wifi-linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md index d652b15d8c..e4d380aa94 100644 --- a/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md +++ b/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md @@ -1,3 +1,5 @@ +Translating----geekpi + How To Monitor Access Point Signal Strength With wifi-linux ================================================================================ As a python geek I love exploring new python tools on github that target the linux users. Today I discovered a simple application written in python programming language that can be used to monitor access point signal strength. @@ -83,4 +85,4 @@ via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi- 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://linoxide.com/author/oltjano/ \ No newline at end of file +[a]:http://linoxide.com/author/oltjano/ From 4bba943f961bc8f6d6ceb84af662644a8aa16830 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 1 Feb 2015 11:41:31 +0800 Subject: [PATCH 166/725] =?UTF-8?q?=E5=BD=92=E6=A1=A3=20201501?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md | 0 ...0701 Easy File Comparisons With These Great Free Diff Tools.md | 0 ...th Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next.md | 0 ...40912 What' s wrong with IPv4 and Why we are moving to IPv6.md | 0 .../20140915 10 Open Source Cloning Software For Linux Users.md | 0 .../20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly.md | 0 .../20140928 What is a good subtitle editor on Linux.md | 0 .../20140929 What Linux Users Should Know About Open Hardware.md | 0 ...8 How to configure HTTP load balancer with HAProxy on Linux.md | 0 ...1009 How to convert image audio and video formats on Ubuntu.md | 0 .../20141013 How to configure peer-to-peer VPN on Linux.md | 0 ... How to turn your CentOS box into a BGP router using Quagga.md | 0 .../20141023 What are useful Bash aliases and functions.md | 0 published/{ => 201501}/20141027 ntpq -p output.md | 0 ...Open Source Backup Software For Linux and Unix-like Systems.md | 0 published/{ => 201501}/20141108 When hackers grow old.md | 0 .../20141112 How to Debug CPU Regressions Using Flame Graphs.md | 0 ...5 How to perform system backup with backup-manager on Linux.md | 0 .../20141115 What are some obscure but useful Vim commands.md | 0 ...stricting process CPU usage using nice cpulimit and cgroups.md | 0 .../20141118 How to boot on an ISO image from Grub.md | 0 ...0141119 Smartctl--Monitoring & Analysis tool for Hard drive.md | 0 ...41120 How to configure and secure your Postfix email server.md | 0 .../20141120 How to install an Opensource VPN Server on Linux.md | 0 .../20141124 Important 10 Linux ps command Practical Examples.md | 0 .../20141124 Linux blkid Command to Find Block Devices Details.md | 0 ...5 Four ways Linux is headed for no-downtime kernel patching.md | 0 ...w to install Cacti (Monitoring tool) on ubuntu 14.10 server.md | 0 .../20141127 Five Magnificent Linux Music Streaming Clients.md | 0 ...How To Create A Multiboot USB From Ubuntu Using MultiSystem.md | 0 published/{ => 201501}/20141203 Docker--Present and Future.md | 0 .../20141204 How To Delete Oracle 11g Database Manually.md | 0 ... To Run Linux Programs From The Terminal In Background Mode.md | 0 .../20141205 10 free Commands to Check Memory Usage in Linux.md | 0 ...0141205 Find Out Network Adapters Available In Ubuntu Linux.md | 0 ...5 How To Create A Bootable Ubuntu USB Drive For Mac In OS X.md | 0 ... (Java servlet engine and webserver) on Ubuntu 14.10 Server.md | 0 ...s--How to disable Apport internal error reporting on Ubuntu.md | 0 ...ants to Change OS for Radar System from Windows XP to Linux.md | 0 ...20141210 How to use Evernote from the command line on Linux.md | 0 published/{ => 201501}/20141211 NetHack.md | 0 ..., This Trojan Infects Linux. No, It' s Not The Tuxpocalypse.md | 0 ...141222 A Great Tool To Show Linux Command Progress Like ETA.md | 0 ...222 How to Sync Time Properly with NTP Server in CentOS 7.x.md | 0 .../20141224 Calife--A lightweight alternative to sudo.md | 0 ...Qs with Answers--How to check SSH protocol version on Linux.md | 0 ...41224 Linux FAQs with Answers--How to install 7zip on Linux.md | 0 ...x FAQs with Answers--How to install kernel headers on Linux.md | 0 .../20141226 The Good The Bad And The Ugly Of Linux In 2014.md | 0 ...ix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md | 0 ...0141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x.md | 0 published/{ => 201501}/20150104 Docker Image Insecurity.md | 0 .../20150106 2015--Open Source Has Won, But It Isn't Finished.md | 0 ...20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md | 0 ... Answers--How to boot into command line on Ubuntu or Debian.md | 0 ...0150126 Data of 20 Million Users Stolen from Dating Website.md | 0 .../How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md | 0 .../How to filter, split or merge pcap files on Linux.md | 0 published/{ => 201501}/Quick systemd-nspawn guide.md | 0 59 files changed, 0 insertions(+), 0 deletions(-) rename published/{ => 201501}/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md (100%) rename published/{ => 201501}/20140701 Easy File Comparisons With These Great Free Diff Tools.md (100%) rename published/{ => 201501}/20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next.md (100%) rename published/{ => 201501}/20140912 What' s wrong with IPv4 and Why we are moving to IPv6.md (100%) rename published/{ => 201501}/20140915 10 Open Source Cloning Software For Linux Users.md (100%) rename published/{ => 201501}/20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly.md (100%) rename published/{ => 201501}/20140928 What is a good subtitle editor on Linux.md (100%) rename published/{ => 201501}/20140929 What Linux Users Should Know About Open Hardware.md (100%) rename published/{ => 201501}/20141008 How to configure HTTP load balancer with HAProxy on Linux.md (100%) rename published/{ => 201501}/20141009 How to convert image audio and video formats on Ubuntu.md (100%) rename published/{ => 201501}/20141013 How to configure peer-to-peer VPN on Linux.md (100%) rename published/{ => 201501}/20141023 How to turn your CentOS box into a BGP router using Quagga.md (100%) rename published/{ => 201501}/20141023 What are useful Bash aliases and functions.md (100%) rename published/{ => 201501}/20141027 ntpq -p output.md (100%) rename published/{ => 201501}/20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md (100%) rename published/{ => 201501}/20141108 When hackers grow old.md (100%) rename published/{ => 201501}/20141112 How to Debug CPU Regressions Using Flame Graphs.md (100%) rename published/{ => 201501}/20141115 How to perform system backup with backup-manager on Linux.md (100%) rename published/{ => 201501}/20141115 What are some obscure but useful Vim commands.md (100%) rename published/{ => 201501}/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md (100%) rename published/{ => 201501}/20141118 How to boot on an ISO image from Grub.md (100%) rename published/{ => 201501}/20141119 Smartctl--Monitoring & Analysis tool for Hard drive.md (100%) rename published/{ => 201501}/20141120 How to configure and secure your Postfix email server.md (100%) rename published/{ => 201501}/20141120 How to install an Opensource VPN Server on Linux.md (100%) rename published/{ => 201501}/20141124 Important 10 Linux ps command Practical Examples.md (100%) rename published/{ => 201501}/20141124 Linux blkid Command to Find Block Devices Details.md (100%) rename published/{ => 201501}/20141125 Four ways Linux is headed for no-downtime kernel patching.md (100%) rename published/{ => 201501}/20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server.md (100%) rename published/{ => 201501}/20141127 Five Magnificent Linux Music Streaming Clients.md (100%) rename published/{ => 201501}/20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem.md (100%) rename published/{ => 201501}/20141203 Docker--Present and Future.md (100%) rename published/{ => 201501}/20141204 How To Delete Oracle 11g Database Manually.md (100%) rename published/{ => 201501}/20141204 How To Run Linux Programs From The Terminal In Background Mode.md (100%) rename published/{ => 201501}/20141205 10 free Commands to Check Memory Usage in Linux.md (100%) rename published/{ => 201501}/20141205 Find Out Network Adapters Available In Ubuntu Linux.md (100%) rename published/{ => 201501}/20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X.md (100%) rename published/{ => 201501}/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md (100%) rename published/{ => 201501}/20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu.md (100%) rename published/{ => 201501}/20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md (100%) rename published/{ => 201501}/20141210 How to use Evernote from the command line on Linux.md (100%) rename published/{ => 201501}/20141211 NetHack.md (100%) rename published/{ => 201501}/20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse.md (100%) rename published/{ => 201501}/20141222 A Great Tool To Show Linux Command Progress Like ETA.md (100%) rename published/{ => 201501}/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md (100%) rename published/{ => 201501}/20141224 Calife--A lightweight alternative to sudo.md (100%) rename published/{ => 201501}/20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux.md (100%) rename published/{ => 201501}/20141224 Linux FAQs with Answers--How to install 7zip on Linux.md (100%) rename published/{ => 201501}/20141224 Linux FAQs with Answers--How to install kernel headers on Linux.md (100%) rename published/{ => 201501}/20141226 The Good The Bad And The Ugly Of Linux In 2014.md (100%) rename published/{ => 201501}/20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md (100%) rename published/{ => 201501}/20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x.md (100%) rename published/{ => 201501}/20150104 Docker Image Insecurity.md (100%) rename published/{ => 201501}/20150106 2015--Open Source Has Won, But It Isn't Finished.md (100%) rename published/{ => 201501}/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md (100%) rename published/{ => 201501}/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md (100%) rename published/{ => 201501}/20150126 Data of 20 Million Users Stolen from Dating Website.md (100%) rename published/{ => 201501}/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md (100%) rename published/{ => 201501}/How to filter, split or merge pcap files on Linux.md (100%) rename published/{ => 201501}/Quick systemd-nspawn guide.md (100%) diff --git a/published/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md b/published/201501/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md similarity index 100% rename from published/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md rename to published/201501/20100105 How to Backup and Restore Your Apps and PPAs in Ubuntu Using Aptik.md diff --git a/published/20140701 Easy File Comparisons With These Great Free Diff Tools.md b/published/201501/20140701 Easy File Comparisons With These Great Free Diff Tools.md similarity index 100% rename from published/20140701 Easy File Comparisons With These Great Free Diff Tools.md rename to published/201501/20140701 Easy File Comparisons With These Great Free Diff Tools.md diff --git a/published/20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next.md b/published/201501/20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next.md similarity index 100% rename from published/20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next.md rename to published/201501/20140910 With Apple Watch Unveiled, Could an Ubuntu Smartwatch Be Next.md diff --git a/published/20140912 What' s wrong with IPv4 and Why we are moving to IPv6.md b/published/201501/20140912 What' s wrong with IPv4 and Why we are moving to IPv6.md similarity index 100% rename from published/20140912 What' s wrong with IPv4 and Why we are moving to IPv6.md rename to published/201501/20140912 What' s wrong with IPv4 and Why we are moving to IPv6.md diff --git a/published/20140915 10 Open Source Cloning Software For Linux Users.md b/published/201501/20140915 10 Open Source Cloning Software For Linux Users.md similarity index 100% rename from published/20140915 10 Open Source Cloning Software For Linux Users.md rename to published/201501/20140915 10 Open Source Cloning Software For Linux Users.md diff --git a/published/20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly.md b/published/201501/20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly.md similarity index 100% rename from published/20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly.md rename to published/201501/20140926 ChromeOS vs Linux--The Good, the Bad and the Ugly.md diff --git a/published/20140928 What is a good subtitle editor on Linux.md b/published/201501/20140928 What is a good subtitle editor on Linux.md similarity index 100% rename from published/20140928 What is a good subtitle editor on Linux.md rename to published/201501/20140928 What is a good subtitle editor on Linux.md diff --git a/published/20140929 What Linux Users Should Know About Open Hardware.md b/published/201501/20140929 What Linux Users Should Know About Open Hardware.md similarity index 100% rename from published/20140929 What Linux Users Should Know About Open Hardware.md rename to published/201501/20140929 What Linux Users Should Know About Open Hardware.md diff --git a/published/20141008 How to configure HTTP load balancer with HAProxy on Linux.md b/published/201501/20141008 How to configure HTTP load balancer with HAProxy on Linux.md similarity index 100% rename from published/20141008 How to configure HTTP load balancer with HAProxy on Linux.md rename to published/201501/20141008 How to configure HTTP load balancer with HAProxy on Linux.md diff --git a/published/20141009 How to convert image audio and video formats on Ubuntu.md b/published/201501/20141009 How to convert image audio and video formats on Ubuntu.md similarity index 100% rename from published/20141009 How to convert image audio and video formats on Ubuntu.md rename to published/201501/20141009 How to convert image audio and video formats on Ubuntu.md diff --git a/published/20141013 How to configure peer-to-peer VPN on Linux.md b/published/201501/20141013 How to configure peer-to-peer VPN on Linux.md similarity index 100% rename from published/20141013 How to configure peer-to-peer VPN on Linux.md rename to published/201501/20141013 How to configure peer-to-peer VPN on Linux.md diff --git a/published/20141023 How to turn your CentOS box into a BGP router using Quagga.md b/published/201501/20141023 How to turn your CentOS box into a BGP router using Quagga.md similarity index 100% rename from published/20141023 How to turn your CentOS box into a BGP router using Quagga.md rename to published/201501/20141023 How to turn your CentOS box into a BGP router using Quagga.md diff --git a/published/20141023 What are useful Bash aliases and functions.md b/published/201501/20141023 What are useful Bash aliases and functions.md similarity index 100% rename from published/20141023 What are useful Bash aliases and functions.md rename to published/201501/20141023 What are useful Bash aliases and functions.md diff --git a/published/20141027 ntpq -p output.md b/published/201501/20141027 ntpq -p output.md similarity index 100% rename from published/20141027 ntpq -p output.md rename to published/201501/20141027 ntpq -p output.md diff --git a/published/20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md b/published/201501/20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md similarity index 100% rename from published/20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md rename to published/201501/20141106 5 Awesome Open Source Backup Software For Linux and Unix-like Systems.md diff --git a/published/20141108 When hackers grow old.md b/published/201501/20141108 When hackers grow old.md similarity index 100% rename from published/20141108 When hackers grow old.md rename to published/201501/20141108 When hackers grow old.md diff --git a/published/20141112 How to Debug CPU Regressions Using Flame Graphs.md b/published/201501/20141112 How to Debug CPU Regressions Using Flame Graphs.md similarity index 100% rename from published/20141112 How to Debug CPU Regressions Using Flame Graphs.md rename to published/201501/20141112 How to Debug CPU Regressions Using Flame Graphs.md diff --git a/published/20141115 How to perform system backup with backup-manager on Linux.md b/published/201501/20141115 How to perform system backup with backup-manager on Linux.md similarity index 100% rename from published/20141115 How to perform system backup with backup-manager on Linux.md rename to published/201501/20141115 How to perform system backup with backup-manager on Linux.md diff --git a/published/20141115 What are some obscure but useful Vim commands.md b/published/201501/20141115 What are some obscure but useful Vim commands.md similarity index 100% rename from published/20141115 What are some obscure but useful Vim commands.md rename to published/201501/20141115 What are some obscure but useful Vim commands.md diff --git a/published/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md b/published/201501/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md similarity index 100% rename from published/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md rename to published/201501/20141117 Restricting process CPU usage using nice cpulimit and cgroups.md diff --git a/published/20141118 How to boot on an ISO image from Grub.md b/published/201501/20141118 How to boot on an ISO image from Grub.md similarity index 100% rename from published/20141118 How to boot on an ISO image from Grub.md rename to published/201501/20141118 How to boot on an ISO image from Grub.md diff --git a/published/20141119 Smartctl--Monitoring & Analysis tool for Hard drive.md b/published/201501/20141119 Smartctl--Monitoring & Analysis tool for Hard drive.md similarity index 100% rename from published/20141119 Smartctl--Monitoring & Analysis tool for Hard drive.md rename to published/201501/20141119 Smartctl--Monitoring & Analysis tool for Hard drive.md diff --git a/published/20141120 How to configure and secure your Postfix email server.md b/published/201501/20141120 How to configure and secure your Postfix email server.md similarity index 100% rename from published/20141120 How to configure and secure your Postfix email server.md rename to published/201501/20141120 How to configure and secure your Postfix email server.md diff --git a/published/20141120 How to install an Opensource VPN Server on Linux.md b/published/201501/20141120 How to install an Opensource VPN Server on Linux.md similarity index 100% rename from published/20141120 How to install an Opensource VPN Server on Linux.md rename to published/201501/20141120 How to install an Opensource VPN Server on Linux.md diff --git a/published/20141124 Important 10 Linux ps command Practical Examples.md b/published/201501/20141124 Important 10 Linux ps command Practical Examples.md similarity index 100% rename from published/20141124 Important 10 Linux ps command Practical Examples.md rename to published/201501/20141124 Important 10 Linux ps command Practical Examples.md diff --git a/published/20141124 Linux blkid Command to Find Block Devices Details.md b/published/201501/20141124 Linux blkid Command to Find Block Devices Details.md similarity index 100% rename from published/20141124 Linux blkid Command to Find Block Devices Details.md rename to published/201501/20141124 Linux blkid Command to Find Block Devices Details.md diff --git a/published/20141125 Four ways Linux is headed for no-downtime kernel patching.md b/published/201501/20141125 Four ways Linux is headed for no-downtime kernel patching.md similarity index 100% rename from published/20141125 Four ways Linux is headed for no-downtime kernel patching.md rename to published/201501/20141125 Four ways Linux is headed for no-downtime kernel patching.md diff --git a/published/20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server.md b/published/201501/20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server.md similarity index 100% rename from published/20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server.md rename to published/201501/20141125 How to install Cacti (Monitoring tool) on ubuntu 14.10 server.md diff --git a/published/20141127 Five Magnificent Linux Music Streaming Clients.md b/published/201501/20141127 Five Magnificent Linux Music Streaming Clients.md similarity index 100% rename from published/20141127 Five Magnificent Linux Music Streaming Clients.md rename to published/201501/20141127 Five Magnificent Linux Music Streaming Clients.md diff --git a/published/20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem.md b/published/201501/20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem.md similarity index 100% rename from published/20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem.md rename to published/201501/20141127 How To Create A Multiboot USB From Ubuntu Using MultiSystem.md diff --git a/published/20141203 Docker--Present and Future.md b/published/201501/20141203 Docker--Present and Future.md similarity index 100% rename from published/20141203 Docker--Present and Future.md rename to published/201501/20141203 Docker--Present and Future.md diff --git a/published/20141204 How To Delete Oracle 11g Database Manually.md b/published/201501/20141204 How To Delete Oracle 11g Database Manually.md similarity index 100% rename from published/20141204 How To Delete Oracle 11g Database Manually.md rename to published/201501/20141204 How To Delete Oracle 11g Database Manually.md diff --git a/published/20141204 How To Run Linux Programs From The Terminal In Background Mode.md b/published/201501/20141204 How To Run Linux Programs From The Terminal In Background Mode.md similarity index 100% rename from published/20141204 How To Run Linux Programs From The Terminal In Background Mode.md rename to published/201501/20141204 How To Run Linux Programs From The Terminal In Background Mode.md diff --git a/published/20141205 10 free Commands to Check Memory Usage in Linux.md b/published/201501/20141205 10 free Commands to Check Memory Usage in Linux.md similarity index 100% rename from published/20141205 10 free Commands to Check Memory Usage in Linux.md rename to published/201501/20141205 10 free Commands to Check Memory Usage in Linux.md diff --git a/published/20141205 Find Out Network Adapters Available In Ubuntu Linux.md b/published/201501/20141205 Find Out Network Adapters Available In Ubuntu Linux.md similarity index 100% rename from published/20141205 Find Out Network Adapters Available In Ubuntu Linux.md rename to published/201501/20141205 Find Out Network Adapters Available In Ubuntu Linux.md diff --git a/published/20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X.md b/published/201501/20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X.md similarity index 100% rename from published/20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X.md rename to published/201501/20141205 How To Create A Bootable Ubuntu USB Drive For Mac In OS X.md diff --git a/published/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md b/published/201501/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md similarity index 100% rename from published/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md rename to published/201501/20141208 Install Jetty 9 (Java servlet engine and webserver) on Ubuntu 14.10 Server.md diff --git a/published/20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu.md b/published/201501/20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu.md similarity index 100% rename from published/20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu.md rename to published/201501/20141208 Linux FAQs with Answers--How to disable Apport internal error reporting on Ubuntu.md diff --git a/published/20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md b/published/201501/20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md similarity index 100% rename from published/20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md rename to published/201501/20141208 U.S. Marine Corps Wants to Change OS for Radar System from Windows XP to Linux.md diff --git a/published/20141210 How to use Evernote from the command line on Linux.md b/published/201501/20141210 How to use Evernote from the command line on Linux.md similarity index 100% rename from published/20141210 How to use Evernote from the command line on Linux.md rename to published/201501/20141210 How to use Evernote from the command line on Linux.md diff --git a/published/20141211 NetHack.md b/published/201501/20141211 NetHack.md similarity index 100% rename from published/20141211 NetHack.md rename to published/201501/20141211 NetHack.md diff --git a/published/20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse.md b/published/201501/20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse.md similarity index 100% rename from published/20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse.md rename to published/201501/20141211 Yes, This Trojan Infects Linux. No, It' s Not The Tuxpocalypse.md diff --git a/published/20141222 A Great Tool To Show Linux Command Progress Like ETA.md b/published/201501/20141222 A Great Tool To Show Linux Command Progress Like ETA.md similarity index 100% rename from published/20141222 A Great Tool To Show Linux Command Progress Like ETA.md rename to published/201501/20141222 A Great Tool To Show Linux Command Progress Like ETA.md diff --git a/published/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md b/published/201501/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md similarity index 100% rename from published/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md rename to published/201501/20141222 How to Sync Time Properly with NTP Server in CentOS 7.x.md diff --git a/published/20141224 Calife--A lightweight alternative to sudo.md b/published/201501/20141224 Calife--A lightweight alternative to sudo.md similarity index 100% rename from published/20141224 Calife--A lightweight alternative to sudo.md rename to published/201501/20141224 Calife--A lightweight alternative to sudo.md diff --git a/published/20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux.md b/published/201501/20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux.md similarity index 100% rename from published/20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux.md rename to published/201501/20141224 Linux FAQs with Answers--How to check SSH protocol version on Linux.md diff --git a/published/20141224 Linux FAQs with Answers--How to install 7zip on Linux.md b/published/201501/20141224 Linux FAQs with Answers--How to install 7zip on Linux.md similarity index 100% rename from published/20141224 Linux FAQs with Answers--How to install 7zip on Linux.md rename to published/201501/20141224 Linux FAQs with Answers--How to install 7zip on Linux.md diff --git a/published/20141224 Linux FAQs with Answers--How to install kernel headers on Linux.md b/published/201501/20141224 Linux FAQs with Answers--How to install kernel headers on Linux.md similarity index 100% rename from published/20141224 Linux FAQs with Answers--How to install kernel headers on Linux.md rename to published/201501/20141224 Linux FAQs with Answers--How to install kernel headers on Linux.md diff --git a/published/20141226 The Good The Bad And The Ugly Of Linux In 2014.md b/published/201501/20141226 The Good The Bad And The Ugly Of Linux In 2014.md similarity index 100% rename from published/20141226 The Good The Bad And The Ugly Of Linux In 2014.md rename to published/201501/20141226 The Good The Bad And The Ugly Of Linux In 2014.md diff --git a/published/20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md b/published/201501/20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md similarity index 100% rename from published/20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md rename to published/201501/20141229 2 Ways To Fix The UEFI Bootloader When Dual Booting Windows And Ubuntu.md diff --git a/published/20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x.md b/published/201501/20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x.md similarity index 100% rename from published/20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x.md rename to published/201501/20141229 How to Install Bugzilla 4.4 on Ubuntu or CentOS 6.x.md diff --git a/published/20150104 Docker Image Insecurity.md b/published/201501/20150104 Docker Image Insecurity.md similarity index 100% rename from published/20150104 Docker Image Insecurity.md rename to published/201501/20150104 Docker Image Insecurity.md diff --git a/published/20150106 2015--Open Source Has Won, But It Isn't Finished.md b/published/201501/20150106 2015--Open Source Has Won, But It Isn't Finished.md similarity index 100% rename from published/20150106 2015--Open Source Has Won, But It Isn't Finished.md rename to published/201501/20150106 2015--Open Source Has Won, But It Isn't Finished.md diff --git a/published/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md b/published/201501/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md similarity index 100% rename from published/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md rename to published/201501/20150106 How To Install New Fonts In Ubuntu 14.04 and 14.10.md diff --git a/published/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md b/published/201501/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md similarity index 100% rename from published/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md rename to published/201501/20150121 Linux FAQs with Answers--How to boot into command line on Ubuntu or Debian.md diff --git a/published/20150126 Data of 20 Million Users Stolen from Dating Website.md b/published/201501/20150126 Data of 20 Million Users Stolen from Dating Website.md similarity index 100% rename from published/20150126 Data of 20 Million Users Stolen from Dating Website.md rename to published/201501/20150126 Data of 20 Million Users Stolen from Dating Website.md diff --git a/published/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md b/published/201501/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md similarity index 100% rename from published/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md rename to published/201501/How to Setup Bind Chroot DNS Server on CentOS 7.0 VPS.md diff --git a/published/How to filter, split or merge pcap files on Linux.md b/published/201501/How to filter, split or merge pcap files on Linux.md similarity index 100% rename from published/How to filter, split or merge pcap files on Linux.md rename to published/201501/How to filter, split or merge pcap files on Linux.md diff --git a/published/Quick systemd-nspawn guide.md b/published/201501/Quick systemd-nspawn guide.md similarity index 100% rename from published/Quick systemd-nspawn guide.md rename to published/201501/Quick systemd-nspawn guide.md From 2d7384b45d476540935fe38eef4589a75badf0c8 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 1 Feb 2015 12:35:53 +0800 Subject: [PATCH 167/725] translated --- ...s Point Signal Strength With wifi-linux.md | 88 ------------------- ...s Point Signal Strength With wifi-linux.md | 86 ++++++++++++++++++ 2 files changed, 86 insertions(+), 88 deletions(-) delete mode 100644 sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md create mode 100644 translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md diff --git a/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md deleted file mode 100644 index e4d380aa94..0000000000 --- a/sources/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md +++ /dev/null @@ -1,88 +0,0 @@ -Translating----geekpi - -How To Monitor Access Point Signal Strength With wifi-linux -================================================================================ -As a python geek I love exploring new python tools on github that target the linux users. Today I discovered a simple application written in python programming language that can be used to monitor access point signal strength. - -I have been experimenting for about two hours with **wifi-linux** and it works great but I would like to see some unittests in the near future from the author as the command **plot** is not working on my machine and is also causing some errors. - -### What is wifi-linux ### - -According to the official readme.md file on author's github account wifi-linux is a very simple python script which collects RSSI information about wifi access points around you and draws graphics showing RSSI activity. - -The author states that the program also draws RSSI activity graphic and this can be generated with the command plot but unfortunetly it is not working for me. wifi-linux supports other commands such as **bp** to add a breakpoint, **print** to print some statistics and **start changer**. - -The wifi-linux application has the folowing dependencies: - -- dbus-python -- gnuplot-py - -So first we have to install all the package dependencies for our project in order to run it in our linux machine. - -### Install pakages required by wifi-linux ### - -I tried to install python-dbus by using the pip tool which is used to manage python packages but it did not work and the reason for this is that pip looks for setup.py, which dbus-python doesn't have. So the following command is not going to work. - - pip install dbus-python - -And to make sure it does not work give it a try. It is a very high probability that you will get the following error displayed on your console. - - IOError: [Errno 2] No such file or directory: '/tmp/pip_build_oltjano/dbus-python/setup.py' - -How did I manage to solve this problem? It is very simple. I installed the the system package for the Python DBUS bindings using the following command. - - sudo apt-get install python-dbus - -The above command will work only in machines that make use of the apt-get package manager such as Debian and Ubuntu. - -Then the second dependency we have to take care is the gnuplot-py. Download it, extract using the tar utility and then run setup.py install to install the python package. - -First step is to download gnuplot-py. - - wget http://prdownloads.sourceforge.net/gnuplot-py/gnuplot-py-1.8.tar.gz - -Then use the tar utility to extract it. - - tar xvf gnuplot-py-1.8.tar.gz - -Then use the cd command to change directory. - - cd gnuplot-py-1.8 - -Once there then run the following command to install the package gunplot-py on your system. - - sudo setup.py install - -Once the installation is finished you are ready to run the wifi-linux on your machine. Just download it and use the following command to run the script. - -Download wifi-linux on your local machine by using the following command. - - wget https://github.com/dixel/wifi-linux/archive/master.zip - -Extract the master.zip archive and then use the following command to run the python script list_rsssi.py - - python list_rssi.py - -The following screenshot shows wifi-linux in action. - -![wifi-linux to monitor wifi signal strength](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux.png) - -Then the command **bp** is executed to add a breakpoint like shown below. - -![the bp command in wifi-linux](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux2.png) - -The command **print** can be used to display stats on the console of your machine. An example of its usage is shown below. - -![the print command](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux3.png) - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi-linux/ - -作者:[Oltjano Terpollari][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/oltjano/ diff --git a/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md new file mode 100644 index 0000000000..db2ae3c05a --- /dev/null +++ b/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md @@ -0,0 +1,86 @@ +如何用wifi-linux检测AP信号强度 +================================================================================ +作为一名python极客,我喜欢在github上发现新的针对linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具。 + +我已经在**wifi-linux**上实验了大约两个小时,并且它工作的很好但是我希望在不久的将来在作者那里看到一些单元测试,因为命令**plot**无法在我的电脑上工作,并且会导致一些问题。 + +### 什么是wifi-linux ### + +根据github作者账号的官方的offical readme.md文件, wifi-linux是一个简单的收集你周围AP的RSSI信息的python脚本,它还会画出RSSI活动图形。 + +,这同样可以用命令plot生成,但是不幸的是,这对我不可行。wifi-linux支持其他的命令,比如**bp** 来加入一个断点,**print**会打印一些统计和**启动开关**。 + +wifi-linux程序有下面这些依赖: + +- dbus-python +- gnuplot-py + +首先我们需要安装所有的包依赖以使它可以运行在我们的linux机器上。 + +### 安装wifi-linux需要的包 ### + +我怕尝试使用python包管理工具pip安装python-dbus但是失败了,因为pip会查找setup.py,但是python-dbus中没有。因此下面的命令不工作。 + + pip install dbus-python + +你可以试一下但是很有可能会在终端中下面的错误。 + + IOError: [Errno 2] No such file or directory: '/tmp/pip_build_oltjano/dbus-python/setup.py' + +我该怎么解决这个问题呢?很简单,用下面命令中的系统包管理工具安装Python DBUS。 + + sudo apt-get install python-dbus + +上面的命令只有在有apt-get包管理器的机器中才可以使用,比如Debian和Ubuntu。 + +我们要安装的第二个依赖是gnuplot-py。下载并用tar解压,接着运行setup.py来安装包。 + +第一步是下载gnuplot-py。 + + wget http://prdownloads.sourceforge.net/gnuplot-py/gnuplot-py-1.8.tar.gz + +接着使用tar工具解压。 + + tar xvf gnuplot-py-1.8.tar.gz + +接着使用cd命令改变目录。 + + cd gnuplot-py-1.8 + +接着运行下面的命令在你的系统中安装gnuplot-py。 + + sudo setup.py install + +安装完成后,你就可以在你的系统中运行wifi-linux了。只需下载并用下面的命令运行脚本。 + +用下面的命令下载wifi-linux到你的机器中。 + + wget https://github.com/dixel/wifi-linux/archive/master.zip + +解压master.zip接着使用下面的命令运行list_rsssi.py脚本。 + + python list_rssi.py + +下面的截图说明wifi-linux在工作了。 + +![wifi-linux to monitor wifi signal strength](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux.png) + +命令**bp**用于像下面那样添加一个断点。 + +![the bp command in wifi-linux](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux2.png) + +命令**print**可以用于显示你机器的状态。下面就是一个例子。 + +![the print command](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux3.png) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi-linux/ + +作者:[Oltjano Terpollari][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/oltjano/ From 7dafdee8905fb84bbfbccfe92df3e83a5c6952c0 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 1 Feb 2015 16:55:55 +0800 Subject: [PATCH 168/725] [translated] 20141030 Test drive Linux with nothing but a flash drive.md --- ...ve Linux with nothing but a flash drive.md | 76 ------------------- ...ve Linux with nothing but a flash drive.md | 75 ++++++++++++++++++ 2 files changed, 75 insertions(+), 76 deletions(-) delete mode 100644 sources/tech/20141030 Test drive Linux with nothing but a flash drive.md create mode 100644 translated/tech/20141030 Test drive Linux with nothing but a flash drive.md diff --git a/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md b/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md deleted file mode 100644 index 7b5c5511c8..0000000000 --- a/sources/tech/20141030 Test drive Linux with nothing but a flash drive.md +++ /dev/null @@ -1,76 +0,0 @@ -zpl1025 -Test drive Linux with nothing but a flash drive -================================================================================ -![Penguins gathered together: Linux for the win](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png) -Image by : Opensource.com - -Maybe you’ve heard about Linux and are intrigued by it. So intrigued that you want to give it a try. But you might not know where to begin. - -You’ve probably done a bit of research online and have run across terms like dual booting and virtualization. Those terms might mean nothing to you, and you’re definitely not ready to sacrifice the operating system that you’re currently using to give Linux a try. So what can you do? - -If you have a USB flash drive lying around, you can test drive Linux by creating a live USB. It’s a USB flash drive that contains an operating system that can start from the flash drive. It doesn’t take much technical ability to create one. Let’s take a look at how to do that and how to run Linux using a live USB. - -### What you’ll need ### - -Aside from a desktop or laptop computer, you’ll need: - -- A blank USB flash drive—preferably one that has a capacity of 4 GB or more. -- An [ISO image][1] (an archive of the contents of a hard disk) of the Linux distribution that you want to try. More about this in a moment. -- An application called [Unetbootin][2], an open source tool, cross platform tool that creates a live USB. You don’t need to be running Linux to use it. In the instructions that below, I’m running Unetbootin on a MacBook. - -### Getting to work ### - -Plug your flash drive into a USB port on your computer and then fire up Unetbootin. You’ll be asked for the password that you use to log into your computer. - -![Unetbootin main window](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-main.png) - -Remember the ISO image that was mentioned a few moments ago? There are two ways you can get one: either by downloading it from the website of the Linux distribution that you want to try, or by having Unetbootin download it for you. To do that latter, click **Select Distribution** at the top of the window, choose the distribution that you want to download, and then click **Select Version** to select the version of the distribution that you want to try. - -![Downloading a Linux distribution](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-download-distro.png) - -Or, you can download the distribution yourself. Usually, the Linux distributions that I want to try aren’t in the list. If you go the second route, click **Disk image** and then click the button to search for the .iso file that you downloaded. - -Notice the **Space used to preserve files across reboots (Ubuntu only)** option? If you’re testing Ubuntu or one of its derivatives (like Lubuntu or Xubuntu), you can set aside a few megabytes of space on your flash drive to save files like web browser bookmarks or documents that you create. When you load Ubuntu from the flash drive again, you can reuse those files. - -![Ready to create a live USB](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-ready-to-go.png) - -Once the ISO image is loaded, click **OK**. It takes anywhere from a couple of minutes to 10 minutes for Unetbootin to create the live USB. - -![Creating the live USB](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-creating-disk.png) - -### Testing out the live USB ### - -This is the point where you have to embrace your inner geek a bit. Not too much, but you will be taking a peek into the innards of your computer by going into the [BIOS][3]. Your computer’s BIOS starts various bits of hardware and controls where the computer’s operating system starts, or boots, from. - -The BIOS usually looks for the operating system in this order (or something like it): hard drive, then CD-ROM or DVD drive, and then an external drive. You’ll want to change that order so that the external drive (in this case, your live USB) is the one that the BIOS checks first. - -To do that, restart your computer with the flash drive plugged into a USB port. When you see the message **Press F2 to enter setup**, do just that. On some computers, the key might be F10. - -In the BIOS, use the right arrow key on your keyboard to navigate to the **Boot** menu. You’ll see a list of drives on your computer. Use the down arrow key on your keyboard to navigate to the item labeled **USB HDD** and then press **F6** to move that item to the top of the list. - -Once you’ve done that, press **F10** to save the changes. You’ll be kicked out of the BIOS and your computer will start up. After a short amount of time, you’ll be presented with a menu listing the options for starting the Linux distribution you’re trying out. Select **Run without installing** (or the menu item closest to it). - -Once the desktop loads, you can connect to a wireless or wired network, browse the web, and give the pre-installed software a whirl. You can also check to see if, for example, your printer or scanner works with the Linux distribution you’re testing. If you really, really want to you can also fiddle at the command line. - -### What to expect ### - -Depending on the Linux distribution you’re testing and the speed of the flash drive you’re using, the operating system might take longer to load and it might run a bit slower than it would if it was installed on your hard drive. - -As well, you’ll only have the basic software that the Linux distribution packs out of the box. You generally get a web browser, a word processor, a text editor, a media player, an image viewer, and a set of utilities. That should be enough to give you a feel for what it’s like to use Linux. - -If you decide that you like using Linux, you can install it from the flash drive by double clicking on the installer. - --------------------------------------------------------------------------------- - -via: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive - -作者:[Scott Nesbitt][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://opensource.com/users/scottnesbitt -[1]:http://en.wikipedia.org/wiki/ISO_image -[2]:http://unetbootin.sourceforge.net/ -[3]:http://en.wikipedia.org/wiki/BIOS diff --git a/translated/tech/20141030 Test drive Linux with nothing but a flash drive.md b/translated/tech/20141030 Test drive Linux with nothing but a flash drive.md new file mode 100644 index 0000000000..9c1c8684d6 --- /dev/null +++ b/translated/tech/20141030 Test drive Linux with nothing but a flash drive.md @@ -0,0 +1,75 @@ +试试只用U盘加载Linux系统 +================================================================================ +![Penguins gathered together: Linux for the win](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png) +图片来源:Opensource.com + +也许你听过Linux并对它有点好奇,终于想要实际体验一下,但可能不知道从哪儿开始。 + +很可能你已经在网上搜索过一些信息,然后遇到一些像双系统和虚拟机这样的词汇。它们对你来说也许太专业了,所以你肯定不会仅仅为了尝试一下Linux而牺牲正在使用的操作系统。那我们该怎么办? + +如果你手上正好有个U盘的话,那就可以试试做一个USB Linux启动盘。它是一个包含了整个操作系统并可以直接引导开机的U盘。创建它并不需要什么专业技术能力,让我们来看看怎么做,以及如何从USB引导进入Linux系统。 + +### 你需要准备的 ### + +除了一台台式机或笔记本电脑外,你还需要: + +- 一个空白的U盘-最好容量能有4GB或更多。 +- 一个你想尝试的Linux发行版[ISO镜像][1](一种把所有磁盘内容打包起来的档案文件)。待会再详细介绍。 +- 一个叫[Unetbootin][2]的应用程序,它是一个开源的,跨平台的工具,用来创建USB启动盘。运行它并不需要启动Linux。在下面的教程中,我是在MacBook上运行的Unetbootiin。 + +### 开始干活 ### + +把U盘插到你电脑的USB端口上,然后启动Unetbootin。然后会要求你输入电脑的登录密码。 + +![Unetbootin main window](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-main.png) + +还记得之前提到的ISO镜像文件吗?有两种方式可以获得:要么自己从你想尝试的Linux发行版网站上下载,或者让Unetbootin帮你下载。还是选后者,在窗口顶部点击**选择发行版**,选择你想下载的发行版,然后点击**选择版本**来选择你希望尝试的发行版版本。 + +![Downloading a Linux distribution](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-download-distro.png) + +或者,你也可以自己下载发行版。通常,我想尝试的Linux发行版都没有在列表中。如果选择另一个方向,点击**磁盘镜像**,然后点击按钮来选择你下载好的.iso文件。 + +注意到下面的选项**预留每次重新启动后保存文件的空间(仅Ubuntu有效)**吗?如果你尝试的是Ubuntu或它的任一个衍生版(比如Lubuntu或Xubuntu),你可以在U盘上留出几M空间用来保存文件,比如网页书签或你自己创建的文档。当用这个U盘下次启动Ubuntu的时候,你可以继续使用这些文件。 + +![Ready to create a live USB](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-ready-to-go.png) + +在加载好ISO镜像后,点击**确定**。Unetbootin大概需要不到10分钟来创建USB启动盘。 + +![Creating the live USB](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-creating-disk.png) + +### 检验USB启动盘 ### + +这个时候,你需要拥抱一下自己内在的极客精神。不会太难,不过你将需要进入[BIOS][3]去偷看一下你电脑内部空间。你的电脑的BIOS会加载各种硬件,并控制电脑操作系统的引导或启动。 + +BIOS通常会按这个顺序搜索操作系统(或者类似的顺序):硬盘,然后是CD/DVD光驱,然后是外部存储设备。你需要调整这个顺序,让外部存储设备(在这里,意味着你的U盘启动盘)成为BIOS第一个搜索的设备。 + +要做到这个,把U盘插到电脑上再重启电脑。在看到提示信息**Press F2 to enter setup**之后,按它要求的做。在有的电脑上,这个键可能是F10。 + +在BIOS里,用键盘上的向右方向键切换到**Boot**菜单。然后你将看到你电脑上的驱动器列表。使用键盘上的向下方向键选中名字为**USB HDD**的选项,然后按下**F6**移动这个选项到列表的顶部。 + +完成后,按下**F10**来保存改动。然后你会从BIOS里被踢出来,然后电脑会自己启动。等一小会,你就会看到一个你正在尝试的Linux发行版的启动菜单。选择**Run without installing**(或者最接近的选项)。 + +在进入桌面后,你可以连接上无线或有线网络,看看网页,试一试预装的软件。你还可以看看,比如说,你的打印机或扫描仪是否能在你试的这个发行版下正常工作。你要是真的想不开,也可以去摸一下命令行。 + +### 能干什么 ### + +根据你尝试的Linux发行版和你使用的U盘的速度,操作系统可能会需要更长的时间来加载,而且很可能比直接装到硬盘上会慢一点。 + +还有,你也只能运行Linux发行版里预装好的基本软件。通常会有网页浏览器,一个文字处理软件,一个文本编辑器,一个媒体播放器,一个相片浏览器,以及一套实用工具。这些应该足够给你使用Linux的感觉了。 + +如果你决定使用Linux,你可以双击安装器从U盘安装到硬盘。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive + +作者:[Scott Nesbitt][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://opensource.com/users/scottnesbitt +[1]:http://en.wikipedia.org/wiki/ISO_image +[2]:http://unetbootin.sourceforge.net/ +[3]:http://en.wikipedia.org/wiki/BIOS From 7ed53ce0e4c294af1cac5143503c62f38d9d37d2 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sun, 1 Feb 2015 21:54:17 +0800 Subject: [PATCH 169/725] translated --- .../20150121 If a 32-bit integer overflows.md | 96 ------------------- .../20150121 If a 32-bit integer overflows.md | 93 ++++++++++++++++++ 2 files changed, 93 insertions(+), 96 deletions(-) delete mode 100644 sources/talk/20150121 If a 32-bit integer overflows.md create mode 100644 translated/talk/20150121 If a 32-bit integer overflows.md diff --git a/sources/talk/20150121 If a 32-bit integer overflows.md b/sources/talk/20150121 If a 32-bit integer overflows.md deleted file mode 100644 index fc8c375919..0000000000 --- a/sources/talk/20150121 If a 32-bit integer overflows.md +++ /dev/null @@ -1,96 +0,0 @@ -KayGuoWhu translating -If a 32-bit integer overflows, can we use a 40-bit structure instead of a 64-bit long one? ---------- - -#Q: - -If, say, a 32-bit integer is overflowing, instead of upgrading int to long, can we make use of some 40-bit type if we need a range only within 240, so that we save 24 (64-40) bits for every integer? - -If so, how? - -I have to deal with billions and space is a bigger constraint. - -#A: - -##Yes, but... - -It is certainly possible, but it is usually nonsensical (for any program that doesn't use billions of these numbers): - -```C -#include // don't want to rely on something like long long -struct bad_idea -{ - uint64_t var : 40; -}; -``` - -Here, var will indeed have a width of 40 bits at the expense of much less efficient code generated (it turns out that "much" is very much wrong -- the measured overhead is a mere 1-2%, see timings below), and usually to no avail. Unless you have need for another 24-bit value (or an 8 and 16 bit value) which you wish to pack into the same structure, alignment will forfeit anything that you may gain. - -In any case, unless you have billions of these, the effective difference in memory consumption will not be noticeable (but the extra code needed to manage the bit field will be noticeable!). - -###Note: - -The question has in the mean time been updated to reflect that indeed billions of numbers are needed, so this may be a viable thing to do, presumed that you take measures not to lose the gains due to structure alignment and padding, i.e. either by storing something else in the remaining 24 bits or by storing your 40-bit values in structures of 8 each or multiples thereof). -Saving three bytes a billion times is worthwhile as it will require noticeably fewer memory pages and thus cause fewer cache and TLB misses, and above all page faults (a single page fault weighting tens of millions instructions). - -While the above snippet does not make use of the remaining 24 bits (it merely demonstrates the "use 40 bits" part), something akin to the following will be necessary to really make the approach useful in a sense of preserving memory -- presumed that you indeed have other "useful" data to put in the holes: - -```C -struct using_gaps -{ - uint64_t var : 40; - uint64_t useful_uint16 : 16; - uint64_t char_or_bool : 8; -}; -``` - -Structure size and alignment will be equal to a 64 bit integer, so nothing is wasted if you make e.g. an array of a billion such structures (even without using compiler-specific extensions). If you don't have use for an 8-bit value, you could also use an 48-bit and a 16-bit value (giving a bigger overflow margin). -Alternatively you could, at the expense of usability, put 8 40-bit values into a structure (least common multiple of 40 and 64 being 320 = 8*40). Of course then your code which accesses elements in the array of structures will become much more complicated (though one could probably implement an operator[] that restores the linear array functionality and hides the structure complexity). - -Update: -Wrote a quick test suite, just to see what overhead the bitfields (and operator overloading with bitfield refs) would have. Posted code (due to length) at gcc.godbolt.org, test output from my Win7-64 machine is: - -```TXT -Running test for array size = 1048576 -what alloc seq(w) seq(r) rand(w) rand(r) free ------------------------------------------------------------ -uint32_t 0 2 1 35 35 1 -uint64_t 0 3 3 35 35 1 -bad40_t 0 5 3 35 35 1 -packed40_t 0 7 4 48 49 1 - - -Running test for array size = 16777216 -what alloc seq(w) seq(r) rand(w) rand(r) free ------------------------------------------------------------ -uint32_t 0 38 14 560 555 8 -uint64_t 0 81 22 565 554 17 -bad40_t 0 85 25 565 561 16 -packed40_t 0 151 75 765 774 16 - - -Running test for array size = 134217728 -what alloc seq(w) seq(r) rand(w) rand(r) free ------------------------------------------------------------ -uint32_t 0 312 100 4480 4441 65 -uint64_t 0 648 172 4482 4490 130 -bad40_t 0 682 193 4573 4492 130 -packed40_t 0 1164 552 6181 6176 130 -``` - -What one can see is that the extra overhead of bitfields is neglegible, but the operator overloading with bitfield reference as a convenience thing is rather drastic (about 3x increase) when accessing data linearly in a cache-friendly manner. On the other hand, on random access it barely even matters. - -These timings suggest that simply using 64-bit integers would be better since they are still faster overall than bitfields (despite touching more memory), but of course they do not take into account the cost of page faults with much bigger datasets. It might look very different once you run out of physical RAM (I didn't test that). - ------- - -via:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) - -作者:[Damon][a][Michael Kohne][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://stackoverflow.com/users/572743/damon -[b]:http://stackoverflow.com/users/5801/michael-kohne \ No newline at end of file diff --git a/translated/talk/20150121 If a 32-bit integer overflows.md b/translated/talk/20150121 If a 32-bit integer overflows.md new file mode 100644 index 0000000000..651e829189 --- /dev/null +++ b/translated/talk/20150121 If a 32-bit integer overflows.md @@ -0,0 +1,93 @@ +如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型? +--------- + +#问题: +假如说,使用32位的整型会溢出,在不考虑使用长整型的情况下,如果我们只需要表示2的40次方范围内的数,是否可以利用某些40位长的数据类型来表示呢?这样的话,每个整型数就可以节省24位的空间。 + +如果可以,该怎么做? + +需求是:我现在必须处理数以亿计的数字,所以在存储空间上受到了很大的限制。 + +#回答: + +##可以是可以,但是…… + +这种方法的确可行,但这么做通常没什么意义(因为几乎没有程序需要处理多达十亿的数字): + +```C +#include // 不要考虑使用long long类型 +struct bad_idea +{ + uint64_t var : 40; +}; +``` + +在这里,变量var占据40位大小,但是以生成代码时拥有非常低的运行效率来换取的(事实证明“非常”二字言过其实了——测试中程序开销仅仅增加了1%到2%,正如下面的测试时间所示),而且这么做通常没什么用。除非你还需要保存一个24位的值(或者是8位、16位的值),这样你皆可以它们放到同一个结构中。不然的话,因为对齐内存地址产生的开销会抵消这么做带来的好处。 + +在任何情况下,除非你是真的需要保存数以亿计的数字,否则这样做给内存消耗带来的好处是可以忽略不计的(但是为了处理这些位字段的额外代码量是不可忽略的!)。 + +###说明: + +在此期间,这个问题已经被更新了,是为了说明实际上确实有需要处理数以亿计数字的情况。假设,采取某些措施来防止因为结构体对齐和填充抵消好处(比如在后24位中存储其它的内容,或者使用多个8位来存储40位),那么这么做就变得有意义了。 +如果有十亿个数,每个数都节省三个字节的空间,那么这么做就非常有用了。因为使用更小的空间存储要求更少的内存页,也就会产生更少的cache和TLB不命中和内存缺页(单个缺页会产生数以千万计的指令(译者注:直译是这样,但语义说不通!))。 + +尽管上面提到的情况不足以充分利用到剩余的24位(它仅仅使用了40位部分),如果确实在剩余位中放入了有用的数据,那么使用类似下面的方法会使得这种思路就管理内存而言显得非常有用。 + +```C +struct using_gaps +{ + uint64_t var : 40; + uint64_t useful_uint16 : 16; + uint64_t char_or_bool : 8; +}; +``` + +结构体大小和对齐长度等于64位整型的大小,所以只要使用得当就不会浪费空间,比如对一个保存10亿个数的数组使用这个结构(不考虑使用指定编译器的扩展)。如果你不会用到一个8位的值,那么你可以使用一个48位和16位的值(giving a bigger overflow margin)。 +或者以牺牲可用性为代价,把8个64位的值放入这样的结构体中(或者使用40和64的组合使得其和满足320)。当然,在这种情况下,通过代码去访问数组结构体中的元素会变得非常麻烦(尽管一种方法是实现一个operator[]在功能上还原线性数组,隐藏结构体的复杂性)。 + +更新: + +我写了一个快速测试工具,只是为了获得位字段的开销(以及伴随位字段引用的重载操作)。由于长度限制将代码发布在gcc.godbolt.org上,在本人64位Win7上的测试结果如下: + +```TXT +运行测试的数组大小为1048576 +what alloc seq(w) seq(r) rand(w) rand(r) free +----------------------------------------------------------- +uint32_t 0 2 1 35 35 1 +uint64_t 0 3 3 35 35 1 +bad40_t 0 5 3 35 35 1 +packed40_t 0 7 4 48 49 1 + +运行测试的数组大小为16777216 +what alloc seq(w) seq(r) rand(w) rand(r) free +----------------------------------------------------------- +uint32_t 0 38 14 560 555 8 +uint64_t 0 81 22 565 554 17 +bad40_t 0 85 25 565 561 16 +packed40_t 0 151 75 765 774 16 + +运行测试的数组大小为134177228 +what alloc seq(w) seq(r) rand(w) rand(r) free +----------------------------------------------------------- +uint32_t 0 312 100 4480 4441 65 +uint64_t 0 648 172 4482 4490 130 +bad40_t 0 682 193 4573 4492 130 +packed40_t 0 1164 552 6181 6176 130 +``` + +我们看到,位字段的额外开销是微不足道的,但是当以友好的方式线性访问数据时伴随位字段引用的操作符重载产生的开销则相当显著(大概有3倍)。在另一方面,随机访问产生的开销则无足轻重。 + +这些时间表明简单的使用64位整型会更好,因为它们在整体性能上要比位字段好(尽管占用更多的内存),但是显然它们并没有考虑随着数据集增大带来的缺页开销。一旦程序内存超过RAM大小,结果可能就不一样了(未亲自考证)。 + +------ + +via:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-integer-overflows-can-we-use-a-40-bit-structure-instead-of-a-64-bit/27705562#27705562) + +作者:[Damon][a][Michael Kohne][b] +译者:[KayGuoWhu](https://github.com/KayGuoWhu) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/572743/damon +[b]:http://stackoverflow.com/users/5801/michael-kohne \ No newline at end of file From d3efeb3beefaea1fd307d4eb9bec641796718c16 Mon Sep 17 00:00:00 2001 From: Tao Meng Date: Mon, 2 Feb 2015 10:35:26 +0800 Subject: [PATCH 170/725] Translating 20150128 Docker-1 Moving to Docker.md --- sources/tech/20150128 Docker-1 Moving to Docker.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sources/tech/20150128 Docker-1 Moving to Docker.md b/sources/tech/20150128 Docker-1 Moving to Docker.md index 6917b3b7b1..1c1d4b78cc 100644 --- a/sources/tech/20150128 Docker-1 Moving to Docker.md +++ b/sources/tech/20150128 Docker-1 Moving to Docker.md @@ -1,3 +1,4 @@ +Translating by mtunique Moving to Docker ================================================================================ ![](http://cocoahunter.com/content/images/2015/01/docker1.jpeg) @@ -53,7 +54,7 @@ In the following articles we'll see how to setup a semi-automated Docker based d via: http://cocoahunter.com/2015/01/23/docker-1/ 作者:[Michelangelo Chasseur][a] -译者:[译者ID](https://github.com/译者ID) +译者:[mtunique](https://github.com/mtunique) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -78,4 +79,4 @@ via: http://cocoahunter.com/2015/01/23/docker-1/ [17]: [18]: [19]: -[20]: \ No newline at end of file +[20]: From c034190b14f1741acc98cc47fe8d5b1bf0a150fe Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Mon, 2 Feb 2015 10:40:18 +0800 Subject: [PATCH 171/725] translating by KayGuoWhu --- sources/tech/20150127 How to limit network bandwidth on Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20150127 How to limit network bandwidth on Linux.md b/sources/tech/20150127 How to limit network bandwidth on Linux.md index 1deaa38b49..78c97cfec6 100644 --- a/sources/tech/20150127 How to limit network bandwidth on Linux.md +++ b/sources/tech/20150127 How to limit network bandwidth on Linux.md @@ -1,3 +1,4 @@ +translating by KayGuoWhu How to limit network bandwidth on Linux ================================================================================ If you often run multiple networking applications on your Linux desktop, or share bandwidth among multiple computers at home, you will want to have a better control over bandwidth usage. Otherwise, when you are downloading a big file with a downloader, your interactive SSH session may become sluggish to the point where it's unusable. Or when you sync a big folder over Dropbox, your roommate may complain that video streaming at her computer gets choppy. From 180b9d6ba9261a22cb96df8a50bc16bcd9487d11 Mon Sep 17 00:00:00 2001 From: Junkai <2q1w2007@163.com> Date: Mon, 2 Feb 2015 14:46:34 +0800 Subject: [PATCH 172/725] =?UTF-8?q?20150202=20=E9=80=89=E9=A2=98=202015020?= =?UTF-8?q?2=20The=20Pirate=20Bay=20Is=20Now=20Back=20Online.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50202 The Pirate Bay Is Now Back Online.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 sources/news/20150202 The Pirate Bay Is Now Back Online.md diff --git a/sources/news/20150202 The Pirate Bay Is Now Back Online.md b/sources/news/20150202 The Pirate Bay Is Now Back Online.md new file mode 100644 index 0000000000..acde800ad8 --- /dev/null +++ b/sources/news/20150202 The Pirate Bay Is Now Back Online.md @@ -0,0 +1,38 @@ +The Pirate Bay Is Now Back Online +------ +*The website was closed for about seven weeks* +![The Pirate Bay](http://i1-news.softpedia-static.com/images/news2/The-Pirate-Bay-Is-Now-Back-Online-471802-2.jpg) +##After being [raided](1) by the police almost two months ago, (in)famous torrent website The Pirate Bay is now back online. Those who thought the website will never return will be either disappointed or happy given that The Pirate Bay seems to live once again. + +In order to celebrate its coming back, The Pirate Bay admins have posted a Phoenix bird on the front page, which signifies the fact that the website can't be killed only damaged. + +About two weeks after The Pirate Bay was raided the domain miraculously came back to life. Soon after a countdown appeared on the temporary homepage of The Pirate Bay indicating that the website is almost ready for a comeback. + +The countdown hinted to February 1, as the possible date for The Pirate Bay's comeback, but it looks like those who manage the website manage to pull it out one day earlier. + +Beginning today, those who have accounts on The Pirate Bay can start downloading the torrents they want. Other than the Phoenix on the front page there are no other messages that might point to the resurrection The Pirate Bay except for the fact that it's now operational. + +Admins of the website said a few weeks ago they will find ways to manage and optimize The Pirate Bay, so that there will be minimal chances for the website to be closed once again. Let's see how it lasts this time. + +##Another version of The Pirate Bay may be launched soon + +In related news, one of the members of the original staff was dissatisfied with the decisions made by the majority regarding some of the changes made in the way admins interact with the website. + +He told [Torrentfreak](2) earlier this week that he, along with a few others, will open his version of The Pirate Bay, which they claim will be the "real" one. + +------ +via:http://news.softpedia.com/news/The-Pirate-Bay-Is-Now-Back-Online-471802.shtml + +本文发布时间:31 Jan 2015, 22:49 GMT + +作者:[Cosmin Vasile][a] + +译者:[译者ID](https://github.com/译者ID) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/cosmin-vasile +[1]:http://news.softpedia.com/news/The-Pirate-Bay-Is-Down-December-9-2014-466987.shtml +[2]:http://torrentfreak.com/pirate-bay-back-online-150131/ \ No newline at end of file From 6bde453367b19ddab93037de75ba8194645629a0 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 2 Feb 2015 15:06:25 +0800 Subject: [PATCH 173/725] Translating by ZTinoZ --- ...Linux FAQs with Answers--How to check CPU info on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index 9d5d9844cf..a1cf20c2ce 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -12,11 +12,11 @@ Linux有问必答时间--如何查看Linux系统的CPU信息 ![](https://farm8.staticflickr.com/7572/15934711577_4136a8e0b9_c.jpg) -By inspecting this file, you can [identify][1] the number of physical processors, the number of cores per CPU, available CPU flags, and a number of other things. +通过查看这个文件,你能[识别出][1]物理处理器数、每个CPU核心数、可用的CPU标志寄存器以及其它东西的数量。 ### 2. cpufreq-info ### -The cpufreq-info command (which is part of **cpufrequtils** package) collects and reports CPU frequency information from the kernel/hardware. The command shows the hardware frequency that the CPU currently runs at, as well as the minimum/maximum CPU frequency allowed, CPUfreq policy/statistics, and so on. To check up on CPU #0: +cpufreq-info命令(**cpufrequtils**包的一部分)从内核/硬件中收集并报告CPU频率信息。这条命令展示了CPU当前运行的硬件频率,包括CPU所允许的最小/最大频率、CPUfreq策略/统计数据等等。来看下CPU #0上的信息: $ cpufreq-info -c 0 From 42b67205ce597b2b7f6262e3aaf19d95231f2bc0 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 2 Feb 2015 16:36:42 +0800 Subject: [PATCH 174/725] =?UTF-8?q?20150202-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...entation from the command line on Linux.md | 186 ++++++++++++++++ ... filter BGP routes in Quagga BGP router.md | 201 ++++++++++++++++++ 2 files changed, 387 insertions(+) create mode 100644 sources/tech/20150202 How to create and show a presentation from the command line on Linux.md create mode 100644 sources/tech/20150202 How to filter BGP routes in Quagga BGP router.md diff --git a/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md b/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md new file mode 100644 index 0000000000..d80b385544 --- /dev/null +++ b/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md @@ -0,0 +1,186 @@ +How to create and show a presentation from the command line on Linux +================================================================================ +When you prepare a talk for audience, the first thing that will probably come to your mind is shiny presentation charts filled with fancy diagrams, graphics and animation effects. Fine. No one can deny the power of visually charming presentation. However, not all presentations need to be Ted talk quality. Often times, the purpose of a presentation is to convey specific information, which can easily be done with textual messages. In such cases, your time can be better spent on gathering information and checking facts, rather than searching for good-looking graphics from Google Image. + +In the world of Linux, you can do presentation in several different ways, e.g., Impress for multimedia-rich content, [Impress.js][1] for stunning visualization, Beamer for hardcore LaTex users, and so on. If you are looking for a simple means to create and show a textual presentation, look no further. [mdp][2] can get the job done for you. + +### What is Mdp? ### + +mdp is an ncurses-based command-line presentation tool for Linux. What I like about mdp is its [markdown][3] support, which makes it easy to create slides with familiar markdown format. Naturally, it becomes painless to publish the slides in HTML format as well. Another plus is its support for UTF-8 character encoding, which comes in handy when showing non-English characters (e.g., Greek or Cyrillic alphabets). + +### Install Mdp on Linux ### + +Installation of mdp is mostly painless due to its light dependency requirement (i.e., ncursesw). + +#### Debian, Ubuntu or their derivatives #### + + $ sudo apt-get install git gcc make libncursesw5-dev + $ git clone https://github.com/visit1985/mdp.git + $ cd mdp + $ make + $ sudo make install + +#### Fedora or CentOS/RHEL #### + + $ sudo yum install git gcc make ncurses-devel + $ git clone https://github.com/visit1985/mdp.git + $ cd mdp + $ make + $ sudo make install + +#### Arch Linux #### + +On Arch Linux, you can easily install mdp from [AUR][4]. + +### Create a Presentation from the Command Line ### + +Once you installed mdp, you can easily create a presentation by using your favorite text editor. If you are familiar with markdown, it will take no time to master mdp. For those of you who are not familiar with markdown, starting with an example is the best way to learn mdp. + +Here is a 6-page sample presentation for your reference. + + %title: Sample Presentation made with mdp (Xmodulo.com) + %author: Dan Nanni + %date: 2015-01-28 + + -> This is a slide title <- + ========= + + -> mdp is a command-line based presentation tool with markdown support. <- + + *_Features_* + + * Multi-level headers + * Code block formatting + * Nested quotes + * Nested list + * Text highlight and underline + * Citation + * UTF-8 special characters + + ------------------------------------------------- + + -> # Example of nested list <- + + This is an example of multi-level headers and a nested list. + + # first-level title + + second-level + ------------ + + - *item 1* + - sub-item 1 + - sub-sub-item 1 + - sub-sub-item 2 + - sub-sub-item 3 + - sub-item 2 + + ------------------------------------------------- + + -> # Example of code block formatting <- + + This example shows how to format a code snippet. + + 1 /* Hello World program */ + 2 + 3 #include + 4 + 5 int main() + 6 { + 7 printf("Hello World"); + 8 return 0; + 9 } + + This example shows inline code: `sudo reboot` + + ------------------------------------------------- + + -> # Example of nested quotes <- + + This is an example of nested quotes. + + # three-level nested quotes + + > This is the first-level quote. + >> This is the second-level quote + >> and continues. + >>> *This is the third-level quote, and so on.* + + ------------------------------------------------- + + -> # Example of citations <- + + This example shows how to place a citation inside a presentation. + + This tutorial is published at [Xmodulo](http://xmodulo.com) + + You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo) + + Pretty cool, huh? + + ------------------------------------------------- + + -> # Example of UTF-8 special characters <- + + This example shows UTF-8 special characters. + + ae = ä, oe = ö, ue = ü, ss = ß + alpha = ?, beta = ?, upsilon = ?, phi = ? + Omega = ?, Delta = ?, Sigma = ? + + ??????????? + ?rectangle? + ??????????? + +### Show a Presentation from the Command Line ### + +Once you save the above code as slide.md text file, you can show the presentation by simply running: + + $ mdp slide.md + +You can navigate the presentation by pressing Enter/Space/Page-Down/Down-Arrow (next slide), Backspace/Page-Up/Up-Arrow (previous slide), Home (first slide), End (last slide), or numeric-N (N-th slide). + +The title of the presentation appears on top of each slide, and your name and page number are shown at the bottom. + +![](https://farm9.staticflickr.com/8637/16392457702_ec732d0094_c.jpg) + +This is an example of a nested list and multi-level headers. + +![](https://farm9.staticflickr.com/8567/16367397606_29be7df633_c.jpg) + +This is an example of a code snippet and inline code. + +![](https://farm9.staticflickr.com/8682/15770926144_0f982b0863_b.jpg) + +This is an example of nested quotes. + +![](https://farm9.staticflickr.com/8587/16393383115_0865c8b89b_c.jpg) + +This is an example of placing citations. + +![](https://farm8.staticflickr.com/7409/16392457712_ed36c14bc2_c.jpg) + +This is an example of UTF-8 special characters. + +![](https://farm9.staticflickr.com/8648/16205981560_7fa3debc75_c.jpg) + +### Summary ### + +In this tutorial, I showed you how to use mdp to create and show a presentation from the command line. Its markdown compatibility saves us the trouble and hassle of having to learn any new formatting, which is an advantage compared to [tpp][5], another command-line presentation tool. Due to its limitations, mdp may not qualify as your default presentation tool, but there should be definitely a use case for that. What do you think of mdp? Do you prefer something else? + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/presentation-command-line-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://bartaz.github.io/impress.js/ +[2]:https://github.com/visit1985/mdp +[3]:http://daringfireball.net/projects/markdown/ +[4]:https://aur.archlinux.org/packages/mdp-git/ +[5]:http://www.ngolde.de/tpp.html \ No newline at end of file diff --git a/sources/tech/20150202 How to filter BGP routes in Quagga BGP router.md b/sources/tech/20150202 How to filter BGP routes in Quagga BGP router.md new file mode 100644 index 0000000000..d92c47c774 --- /dev/null +++ b/sources/tech/20150202 How to filter BGP routes in Quagga BGP router.md @@ -0,0 +1,201 @@ +How to filter BGP routes in Quagga BGP router +================================================================================ +In the [previous tutorial][1], we demonstrated how to turn a CentOS box into a BGP router using Quagga. We also covered basic BGP peering and prefix exchange setup. In this tutorial, we will focus on how we can control incoming and outgoing BGP prefixes by using **prefix-list** and **route-map**. + +As described in earlier tutorials, BGP routing decisions are made based on the prefixes received/advertised. To ensure error-free routing, it is recommended that you use some sort of filtering mechanism to control these incoming and outgoing prefixes. For example, if one of your BGP neighbors starts advertising prefixes which do not belong to them, and you accept such bogus prefixes by mistake, your traffic can be sent to that wrong neighbor, and end up going nowhere (so-called "getting blackholed"). To make sure that such prefixes are not received or advertised to any neighbor, you can use prefix-list and route-map. The former is a prefix-based filtering mechanism, while the latter is a more general prefix-based policy mechanism used to fine-tune actions. + +We will show you how to use prefix-list and route-map in Quagga. + +### Topology and Requirement ### + +In this tutorial, we assume the following topology. + +![](https://farm8.staticflickr.com/7394/16407625405_4f7d24d1f6_c.jpg) + +Service provider A has already established an eBGP peering with service provider B, and they are exchanging routing information between them. The AS and prefix details are as stated below. + +- **Peering block**: 192.168.1.0/24 +- **Service provider A**: AS 100, prefix 10.10.0.0/16 +- **Service provider B**: AS 200, prefix 10.20.0.0/16 + +In this scenario, service provider B wants to receive only prefixes 10.10.10.0/23, 10.10.10.0/24 and 10.10.11.0/24 from provider A. + +### Quagga Installation and BGP Peering ### + +In the [previous tutorial][1], we have already covered the method of installing Quagga and setting up BGP peering. So we will not go through the details here. Nonetheless, I am providing a summary of BGP configuration and prefix advertisements: + +![](https://farm8.staticflickr.com/7428/16219986668_97cb193b15_c.jpg) + +The above output indicates that the BGP peering is up. Router-A is advertising multiple prefixes towards router-B. Router-B, on the other hand, is advertising a single prefix 10.20.0.0/16 to router-A. Both routers are receiving the prefixes without any problems. + +### Creating Prefix-List ### + +In a router, a prefix can be blocked with either an ACL or prefix-list. Using prefix-list is often preferred to ACLs since prefix-list is less processor intensive than ACLs. Also, prefix-list is easier to create and maintain. + + ip prefix-list DEMO-PRFX permit 192.168.0.0/23 + +The above command creates prefix-list called 'DEMO-FRFX' that allows only 192.168.0.0/23. + +Another great feature of prefix-list is that we can specify a range of subnet mask(s). Take a look at the following example: + + ip prefix-list DEMO-PRFX permit 192.168.0.0/23 le 24 + +The above command creates prefix-list called 'DEMO-PRFX' that permits prefixes between 192.168.0.0/23 and /24, which are 192.168.0.0/23, 192.168.0.0/24 and 192.168.1.0/24. The 'le' operator means less than or equal to. You can also use 'ge' operator for greater than or equal to. + +A single prefix-list statement can have multiple permit/deny actions. Each statement is assigned a sequence number which can be determined automatically or specified manually. + +Multiple prefix-list statements are parsed one by one in the increasing order of sequence numbers. When configuring prefix-list, we should keep in mind that there is always an **implicit deny** at the end of all prefix-list statements. This means that anything that is not explicitly allowed will be denied. + +To allow everything, we can use the following prefix-list statement which allows any prefix starting from 0.0.0.0/0 up to anything with subnet mask /32. + + ip prefix-list DEMO-PRFX permit 0.0.0.0/0 le 32 + +Now that we know how to create prefix-list statements, we will create prefix-list called 'PRFX-LST' that will allow prefixes required in our scenario. + + router-b# conf t + router-b(config)# ip prefix-list PRFX-LST permit 10.10.10.0/23 le 24 + +### Creating Route-Map ### + +Besides prefix-list and ACLs, there is yet another mechanism called route-map, which can control prefixes in a BGP router. In fact, route-map can fine-tune possible actions more flexibly on the prefixes matched with an ACL or prefix-list. + +Similar to prefix-list, a route-map statement specifies permit or deny action, followed by a sequence number. Each route-map statement can have multiple permit/deny actions with it. For example: + + route-map DEMO-RMAP permit 10 + +The above statement creates route-map called 'DEMO-RMAP', and adds permit action with sequence 10. Now we will use match command under sequence 10. + + router-a(config-route-map)# match (press ? in the keyboard) + +---------- + + as-path Match BGP AS path list + community Match BGP community list + extcommunity Match BGP/VPN extended community list + interface match first hop interface of route + ip IP information + ipv6 IPv6 information + metric Match metric of route + origin BGP origin code + peer Match peer address + probability Match portion of routes defined by percentage value + tag Match tag of route + +As we can see, route-map can match many attributes. We will match a prefix in this tutorial. + + route-map DEMO-RMAP permit 10 + match ip address prefix-list DEMO-PRFX + +The match command will match the IP addresses permitted by the prefix-list 'DEMO-PRFX' created earlier (i.e., prefixes 192.168.0.0/23, 192.168.0.0/24 and 192.168.1.0/24). + +Next, we can modify the attributes by using the set command. The following example shows possible use cases of set. + + route-map DEMO-RMAP permit 10 + match ip address prefix-list DEMO-PRFX + set (press ? in keyboard) + +---------- + + aggregator BGP aggregator attribute + as-path Transform BGP AS-path attribute + atomic-aggregate BGP atomic aggregate attribute + comm-list set BGP community list (for deletion) + community BGP community attribute + extcommunity BGP extended community attribute + forwarding-address Forwarding Address + ip IP information + ipv6 IPv6 information + local-preference BGP local preference path attribute + metric Metric value for destination routing protocol + metric-type Type of metric + origin BGP origin code + originator-id BGP originator ID attribute + src src address for route + tag Tag value for routing protocol + vpnv4 VPNv4 information + weight BGP weight for routing table + +As we can see, the set command can be used to change many attributes. For a demonstration purpose, we will set BGP local preference. + + route-map DEMO-RMAP permit 10 + match ip address prefix-list DEMO-PRFX + set local-preference 500 + +Just like prefix-list, there is an implicit deny at the end of all route-map statements. So we will add another permit statement in sequence number 20 to permit everything. + + route-map DEMO-RMAP permit 10 + match ip address prefix-list DEMO-PRFX + set local-preference 500 + ! + route-map DEMO-RMAP permit 20 + +The sequence number 20 does not have a specific match command, so it will, by default, match everything. Since the decision is permit, everything will be permitted by this route-map statement. + +If you recall, our requirement is to only allow/deny some prefixes. So in our scenario, the set command is not necessary. We will just use one permit statement as follows. + + router-b# conf t + router-b(config)# route-map RMAP permit 10 + router-b(config-route-map)# match ip address prefix-list PRFX-LST + +This route-map statement should do the trick. + +### Applying Route-Map ### + +Keep in mind that ACLs, prefix-list and route-map are not effective unless they are applied to an interface or a BGP neighbor. Just like ACLs or prefix-list, a single route-map statement can be used with any number of interfaces or neighbors. However, any one interface or a neighbor can support only one route-map statement for inbound, and one for outbound traffic. + +We will apply the created route-map to the BGP configuration of router-B for neighbor 192.168.1.1 with incoming prefix advertisement. + + router-b# conf terminal + router-b(config)# router bgp 200 + router-b(config-router)# neighbor 192.168.1.1 route-map RMAP in + +Now, we check the routes advertised and received by using the following commands. + +For advertised routes: + + show ip bgp neighbor-IP advertised-routes + +For received routes: + + show ip bgp neighbor-IP routes + +![](https://farm8.staticflickr.com/7424/16221405429_4d86119548_c.jpg) + +You can see that while router-A is advertising four prefixes towards router-B, router-B is accepting only three prefixes. If we check the range, we can see that only the prefixes that are allowed by route-map are visible on router-B. All other prefixes are discarded. + +**Tip**: If there is no change in the received prefixes, try resetting the BGP session using the command: "clear ip bgp neighbor-IP". In our case: + + clear ip bgp 192.168.1.1 + +As we can see, the requirement has been met. We can create similar prefix-list and route-map statements in routers A and B to further control inbound and outbound prefixes. + +I am summarizing the configuration in one place so you can see it all at a glance. + + router bgp 200 + network 10.20.0.0/16 + neighbor 192.168.1.1 remote-as 100 + neighbor 192.168.1.1 route-map RMAP in + ! + ip prefix-list PRFX-LST seq 5 permit 10.10.10.0/23 le 24 + ! + route-map RMAP permit 10 + match ip address prefix-list PRFX-LST + +### Summary ### + +In this tutorial, we showed how we can filter BGP routes in Quagga by defining prefix-list and route-map. We also demonstrated how we can combine prefix-list with route-map to fine-control incoming prefixes. You can create your own prefix-list and route-map in a similar way to match your network requirements. These tools are one of the most effective ways to protect the production network from route poisoning and advertisement of bogon routes. + +Hope this helps. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/filter-bgp-routes-quagga-bgp-router.html + +作者:[Sarmed Rahman][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/sarmed +[1]:http://xmodulo.com/centos-bgp-router-quagga.html \ No newline at end of file From b8a7935aa130d379c95e6cc93ba84cc471dc1773 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 2 Feb 2015 16:54:55 +0800 Subject: [PATCH 175/725] =?UTF-8?q?20150205-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...all Websvn for Subversion in CentOS 7.0.md | 123 ++++++++++++++++++ ...ache Tomcat to IPv4 in Centos or Redhat.md | 79 +++++++++++ ...Python Tool To Test Your Internet Speed.md | 76 +++++++++++ 3 files changed, 278 insertions(+) create mode 100644 sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md create mode 100644 sources/tech/20150202 How to Bind Apache Tomcat to IPv4 in Centos or Redhat.md create mode 100644 sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md diff --git a/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md b/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md new file mode 100644 index 0000000000..0a9dfdb442 --- /dev/null +++ b/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md @@ -0,0 +1,123 @@ +How To Install Websvn for Subversion in CentOS 7.0 +================================================================================ +Hi all, today we'll be installing latest WebSVN in our CentOS 7 for subversion repositories. + +WebSVN offers a view onto your subversion repositories that’s been designed to reflect the Subversion methodology. We can view the log of any file or directory and see a list of all the files changed, added or deleted in any given revision. We can also view the differences between two versions of a file so as to see exactly what was changed in a particular revision. + +### Features ### + +WebSVN offers the following features: + +- Easy to use interface +- Customisable templating system +- Colourisation of file listings +- Blame view +- Log message searching +- RSS feed support +- [and more...][1] + +Since it's written using PHP, WebSVN is also very portable and easy to install. + +Now, we'll install WebSVN for our Subversion (Apache SVN). Make sure that you have installed Apache SVN in your server. If you don't have it installed, you can install from this tutorial. + +After you installed Apache SVN(Subversion), you'll need to follow the easy steps below. + +### 1. Download WebSVN ### + +You can download WebSVN from their official site http://www.websvn.info/download/ . We'll first get inside directory /var/www/html/ and then download the package inside it. + + $ sudo -s + +**Please execute the above command in a shell or terminal as wee'll need to switch to root privilege so that we'll have full access to the system's restricted areas.** + + # cd /var/www/html + # wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip + +![downloading websvn package](http://blog.linoxide.com/wp-content/uploads/2015/01/downloading-websvn.png) + +Here, I am download the latest version 2.3.3 of websvn. You can get the link from the site. You can simply replace the above link with the link of the package you wanna install. + +### 2. Extract the downloaded zip ### + + # unzip websvn-2.3.3.zip + + # mv websvn-2.3.3 websvn + +![extracting websvn](http://blog.linoxide.com/wp-content/uploads/2015/01/extracting-websvn.png) + +### 3. Install php ### + + # yum install php + +![yum install php](http://blog.linoxide.com/wp-content/uploads/2015/01/yum-install-php.png) + +### 4. Edit WebSVN config ### + +Now, we'll need to copy distconfig.php which is situated inside /var/www/html/websvn/include directory to config.php and then edit the configuration file. + + # cd /var/www/html/websvn/include + + # cp distconfig.php config.php + + # nano config.php + +Now, we'll need to make changes to the file as shown below. After it is done, please save the file and exit. + + // Configure these lines if your commands aren't on your path. + // + $config->setSVNCommandPath('/usr/bin'); // e.g. c:\\program files\\subversion\\bin + $config->setDiffPath('/usr/bin'); + + // For syntax colouring, if option enabled... + $config->setEnscriptPath('/usr/bin'); + $config->setSedPath('/bin'); + + // For delivered tarballs, if option enabled... + $config->setTarPath('/bin'); + + // For delivered GZIP'd files and tarballs, if option enabled... + $config->setGZipPath('/bin'); + + // + $config->parentPath('/svn/'); + + $extEnscript[".pl"] = "perl"; + $extEnscript[".py"] = "python"; + $extEnscript[".sql"] = "sql"; + $extEnscript[".java"] = "java"; + $extEnscript[".html"] = "html"; + $extEnscript[".xml"] = "html"; + $extEnscript[".thtml"] = "html"; + $extEnscript[".tpl"] = "html"; + $extEnscript[".sh"] = "bash"; + +![websvn config file](http://blog.linoxide.com/wp-content/uploads/2015/01/config-file-websvn.png) + +### 5. Starting WebSVN ### + +Now, we are almost done. We now need to restart our Apache server. You can do that by the command below. + + # systemctl restart httpd.service + +And then, we'll open WebSVN inside our favorite browser with the address as http://Ip-address/websvn or if you are on local computer, you can goto http://localhost/websvn . + +![websvn successfully installed](http://blog.linoxide.com/wp-content/uploads/2015/01/websvn-success.png) + +**Note**: If you encountered error like "Unable to find "enscript" tool at location "/usr/bin/enscript"" then, you'll need to install enscript using the command "yum install enscript" which will fix the problem. + +### Conclusion ### + +Hurray, we have completed installing WebSVN in our CentOS 7 server. This tutorial works great on RHEL 7 too. WebSVN offers a view onto your subversion repositories that’s been designed to reflect the subversion methodology. You can view the log of any file or directory and see a list of all the files changed, added or deleted in any given revision. So, if you have any questions, comments, feedback please do write on the comment box below and let us know what stuffs needs to be added or improved. Thank You! Enjoy WebSVN :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-websvn-subversion-centos-7/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://www.websvn.info/features/ \ No newline at end of file diff --git a/sources/tech/20150202 How to Bind Apache Tomcat to IPv4 in Centos or Redhat.md b/sources/tech/20150202 How to Bind Apache Tomcat to IPv4 in Centos or Redhat.md new file mode 100644 index 0000000000..92ac657b5a --- /dev/null +++ b/sources/tech/20150202 How to Bind Apache Tomcat to IPv4 in Centos or Redhat.md @@ -0,0 +1,79 @@ +How to Bind Apache Tomcat to IPv4 in Centos / Redhat +================================================================================ +Hi all, today we'll learn how to bind tomcat to ipv4 in CentOS 7 Linux Distribution. + +**Apache Tomcat** is an open source web server and servlet container developed by the [Apache Software Foundation][1]. It implements the Java Servlet, JavaServer Pages (JSP), Java Unified Expression Language and Java WebSocket specifications from Sun Microsystems and provides a web server environment for Java code to run in. + +Binding Tomcat to IPv4 is necessary if we have our server not working due to the default binding of our tomcat server to IPv6. As we know IPv6 is the modern way of assigning IP address to a device and is not in complete practice these days but may come into practice in soon future. So, currently we don't need to switch our tomcat server to IPv6 due to no use and we should bind it to IPv4. + +Before thinking to bind to IPv4, we should make sure that we've got tomcat installed in our CentOS 7. Here's is a quick tutorial on [how to install tomcat 8 in CentOS 7.0 Server][2]. + +### 1. Switching to user tomcat ### + +First of all, we'll gonna switch user to **tomcat** user. We can do that by running **su - tomcat** in a shell or terminal. + + # su - tomcat + +![Switch user to tomcat](http://blog.linoxide.com/wp-content/uploads/2015/01/switch-user-tomcat.png) + +### 2. Finding Catalina.sh ### + +Now, we'll First Go to bin directory inside the directory of Apache Tomcat installation which is usually under **/usr/share/apache-tomcat-8.0.x/bin/** where x is sub version of the Apache Tomcat Release. In my case, its **/usr/share/apache-tomcat-8.0.18/bin/** as I have version 8.0.18 installed in my CentOS 7 Server. + + $ cd /usr/share/apache-tomcat-8.0.18/bin + +**Note: Please replace 8.0.18 to the version of Apache Tomcat installed in your system. ** + +Inside the bin folder, there is a script file named catalina.sh . Thats the script file which we'll gonna edit and add a line of configuration which will bind tomcat to IPv4 . You can see that file by running **ls** into a terminal or shell. + + $ ls + +![finding catalina.sh](http://blog.linoxide.com/wp-content/uploads/2015/01/finding-catalina.sh_.png) + +### 3. Configuring Catalina.sh ### + +Now, we'll add **JAVA_OPTS= "$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses"** to that scripting file catalina.sh at the end of the file as shown in the figure below. We can edit the file using our favorite text editing software like nano, vim, etc. Here, we'll gonna use nano. + + $ nano catalina.sh + +![Catalina script](http://blog.linoxide.com/wp-content/uploads/2015/01/catalina-script.png) + +Then, add to the file as shown below: + +**JAVA_OPTS= "$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses"** + +![configured catalina](http://blog.linoxide.com/wp-content/uploads/2015/01/configured-catalina.png) + +Now, as we've added the configuration to the file, we'll now save and exit nano. + +### 4. Restarting ### + +Now, we'll restart our tomcat server to get our configuration working. We'll need to first execute shutdown.sh and then startup.sh . + + $ ./shutdown.sh + +Now, well run execute startup.sh as: + + $ ./startup.sh + +![restarting apache tomcat server](http://blog.linoxide.com/wp-content/uploads/2015/01/restarting-tomcat-server.png) + +This will restart our tomcat server and the configuration will be loaded which will ultimately bind the server to IPv4. + +### Conclusion ### + +Hurray, finally we'have got our tomcat server bind to IPv4 running in our CentOS 7 Linux Distribution. Binding to IPv4 is easy and is necessary if your Tomcat server is bind to IPv6 which will infact will make your tomcat server not working as IPv6 is not used these days and may come into practice in coming future. If you have any questions, comments, feedback please do write on the comment box below and let us know what stuffs needs to be added or improved. Thank You! Enjoy :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/bind-apache-tomcat-ipv4-centos/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://www.apache.org/ +[2]:http://linoxide.com/linux-how-to/install-tomcat-8-centos-7/ \ No newline at end of file diff --git a/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md b/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md new file mode 100644 index 0000000000..a12f0b68b3 --- /dev/null +++ b/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md @@ -0,0 +1,76 @@ +tespeed - Python Tool To Test Your Internet Speed +================================================================================ +Many computer nerds know how to test their internet speed by using the **speedtest.net** but the thing is that it does not give you full control of the operationg going on during the measurement of your speed. Linux users love to type commands on their terminal emualator and do stuff, at least me. + +The tespeed tool is a python tool with many features that helps to test network speed from the terminal. According to the documentation it makes use of nearest speedtest.net server but the users can also manually specify one. + +In the beginning the author wrote the tespeed tool in the php programming language and proved to the ISP he was working for at that time that the internet they served was far from what they advertised. But things were not working all the time as they supposed to be so the author ported his php scripts to python and his tool counts 180 stars on github. + +It means **alot**. + +### How to use tespeed on linux ### + +Before running a python application on your machine you have to make sure that the system you are working meets the dependencies required by the tool. The python tool tespeed dependes on the two following python packages: + +- lxml +- SocksiPy + +You can easily install lxml with the help of the pip python package management system and to do that run the following command. + + pip install lxml + +Now we have to perform a simple trick to make use of the SocksiPy which you can download by using the the following command like shown below. + + wget http://sourceforge.net/projects/socksipy/files/socksipy/SocksiPy%201.00/SocksiPy.zip/ + +Once the installation is finished unzip **SocksiPy.zip** and run the following command to clone tespeed repo on your local machine. + + git clone https://github.com/Janhouse/tespeed.git + +Then place the SocksiPy folder inside the tespeed project you cloned. Now we have to create an empety file inside the SocksiPy folder under the name of **__init__.py** like shown in the following screenshot. + +![simple trick to make tespeed work](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed1.png) + +Now that we have fixed the dependencies for out projet we can easily run it by using the following command. + + python tespeed.py + +Then some magic is going to happen. The application is going to test your download and upload speed and display them in your console using some really nice colors. + +![testing download and upload speed with tespeed python application](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed2.png) + +There are many commands available in tespeed such as the option **-ls** to list the servers, option **-p** to specify and use a proxy server, the option **-s** to suppress debugging (STDERR) output and many others that we will explore in this tutorial. + +For example if you want to display results in mebibits you need to use the command **python tespeed.py** followed by the option **-mib** + + python tespeed.py -mib + +You can easily see how the unit used for measurement of the internet speed changed after using the tespeed app with the option -mib. + +![testing internet speed with tespeed python application](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed3.png) + +A very nice useful option I like to use while working with tespeed is the option -w which can be used to print CSV formated output to STDOUT. + + python tespeed.py -w + +Use the following command to list the servers. + + python tespeed -ls + +After running the above command you will get a list of servers used to test your upload and download speed. My list is really long so I am not going to share it in this tutorial. + +### Conclusion ### + +tespeed is a really easy to use high performance python script that helps computer users to test their upload and download speed by typing commands on their terminal. It supports many options and also you can specify the list of servers you would like to use. Keep playing with tespeed and please share your experience with us in the comment section. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/tools/tespeed-python-tool-test-internet-speed/ + +作者:[Oltjano Terpollari][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/oltjano/ \ No newline at end of file From a124d126b1fa7d7e072a1eb74274dd7fd2852187 Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 2 Feb 2015 20:51:01 +0800 Subject: [PATCH 176/725] translating --- ...0150202 tespeed - Python Tool To Test Your Internet Speed.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md b/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md index a12f0b68b3..2a48ca6deb 100644 --- a/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md +++ b/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md @@ -1,3 +1,5 @@ +Translating-----geekpi + tespeed - Python Tool To Test Your Internet Speed ================================================================================ Many computer nerds know how to test their internet speed by using the **speedtest.net** but the thing is that it does not give you full control of the operationg going on during the measurement of your speed. Linux users love to type commands on their terminal emualator and do stuff, at least me. From 4b2bc7c5233881edc2ffcbd97d0474ad39988d2c Mon Sep 17 00:00:00 2001 From: su-kaiyao <1250471161@qq.com> Date: Mon, 2 Feb 2015 22:47:29 +0800 Subject: [PATCH 177/725] translated --- ...dern Open Source Code Editors For Linux.md | 88 ------------------- ...dern Open Source Code Editors For Linux.md | 87 ++++++++++++++++++ 2 files changed, 87 insertions(+), 88 deletions(-) delete mode 100644 sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md create mode 100644 translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md diff --git a/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md b/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md deleted file mode 100644 index 43ff7e9877..0000000000 --- a/sources/share/20150125 4 Best Modern Open Source Code Editors For Linux.md +++ /dev/null @@ -1,88 +0,0 @@ -su-kaiyao translating - -4 Best Modern Open Source Code Editors For Linux -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Open_Source_Editors.jpeg) - -Looking for **best programming editors in Linux**? If you ask the old school Linux users, their answer would be Vi, Vim, Emacs, Nano etc. But I am not talking about them. I am going to talk about new age, cutting edge, great looking, sleek and yet powerful, feature rich **best open source code editors for Linux** that would enhance your programming experience. - -### Best modern Open Source editors for Linux ### - -I use Ubuntu as my main desktop and hence I have provided installation instructions for Ubuntu based distributions. But this doesn’t make this list as **best text editors for Ubuntu** because the list is apt for any Linux distribution. Just to add, the list is not in any particular priority order. - -#### Brackets #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/brackets_UI.jpeg) - -[Brackets][1] is an open source code editor from [Adobe][2]. Brackets focuses exclusively on the needs of web designers with built in support for HTML, CSS and Java Script. It’s light weight and yet powerful. It provides you with inline editing and live preview. There are plenty of plugins available to further enhance your experience with Brackets. - -To [install Brackets in Ubuntu][3] and Ubuntu based distributions such as Linux Mint, you can use this unofficial PPA: - - sudo add-apt-repository ppa:webupd8team/brackets - sudo apt-get update - sudo apt-get install brackets - -For other Linux distributions, you can get the source code as well as binaries for Linux, OS X and Windows on its website. - -- [Download Brackets Source Code and Binaries][5] - -#### Atom #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Atom_Editor.jpeg) - -[Atom][5] is another modern and sleek looking open source editor for programmers. Atom is developed by Github and promoted as a “hackable text editor for the 21st century”. The looks of Atom resembles a lot like Sublime Text editor, a hugely popular but closed source text editors among programmers. - -Atom has recently released .deb and .rpm packages so that one can easily install Atom in Debian and Fedora based Linux distributions. Of course, its source code is available as well. - -- [Download Atom .deb][6] -- [Download Atom .rpm][7] -- [Get Atom source code][8] - -#### Lime Text #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/LimeTextEditor.jpeg) - -So you like Sublime Text editor but you are not comfortable with the fact that it is not open source. No worries. We have an [open source clone of Sublime Text][9], called [Lime Text][10]. It is built on Go, HTML and QT. The reason behind cloning of Sublime Text is that there are numerous bugs in Sublime Text 2 and Sublime Text 3 is in beta since forever. There are no transparency in its development, on whether the bugs are being fixed or not. - -So open source lovers, rejoice and get the source code of Lime Text from the link below: - -- [Get Lime Text Source Code][11] - -#### Light Table #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Light_Table.jpeg) - -Flaunted as “the next generation code editor”, [Light Table][12] is another modern looking, feature rich open source editor which is more of an IDE than a mere text editor. There are numerous extensions available to enhance its capabilities. Inline evaluation is what you would love in it. You have to use it to believe how useful Light Table actually is. - -- [Get Light Table Source Code][13] - -### What’s your pick? ### - -No, we are not limited to just four code editors in Linux. The list was about modern editors for programmers. Of course you have plenty of other options such as [Notepad++ alternative Notepadqq][14] or [SciTE][15] and many more. So, among these four, which one is your favorite code editor for Linux? - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/best-modern-open-source-code-editors-for-linux/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:http://brackets.io/ -[2]:http://www.adobe.com/ -[3]:http://itsfoss.com/install-brackets-ubuntu/ -[4]:https://github.com/adobe/brackets/releases -[5]:https://atom.io/ -[6]:https://atom.io/download/deb -[7]:https://atom.io/download/rpm -[8]:https://github.com/atom/atom/blob/master/docs/build-instructions/linux.md -[9]:http://itsfoss.com/lime-text-open-source-alternative/ -[10]:http://limetext.org/ -[11]:https://github.com/limetext/lime -[12]:http://lighttable.com/ -[13]:https://github.com/LightTable/LightTable -[14]:http://itsfoss.com/notepadqq-notepad-for-linux/ -[15]:http://itsfoss.com/scite-the-notepad-for-linux/ diff --git a/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md b/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md new file mode 100644 index 0000000000..d64d84881f --- /dev/null +++ b/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md @@ -0,0 +1,87 @@ +4个最流行的Linux平台开源代码编辑器 +=== + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Open_Source_Editors.jpeg) + +寻找**Linux平台最棒的代码编辑器**?如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代, 最权威的, 漂亮的, 时髦但十分强大, 功能丰富的**最好的Linux平台开源代码编辑器**,它们将会提升你的编程经验。 + +### Linux平台最时髦的开源代码编辑器 ### + +我使用Ubunt作为我的主桌面,所以我提供的安装说明是基于Ubuntu发布的操作系统。但是这并不意味着本文列表就可以作为**Ubuntu最好的文本编辑器**,因为本列表是适用于任何Linux发布操作系统的。而且,列表的介绍顺序并没有特定的优先级别。 + +#### Brackets #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/brackets_UI.jpeg) + +[Brackets][1]是出自[Adobe][2]的一个开源代码编辑器。它专门关注web设计者的需求,内置支持HTML, CSS和Java Script。它轻量级,但却十分强大,提供在线编辑和实时预览。而且,为了你能更好地体验Brackets,你可以使用许多可用的插件。 + +为了[在Ubuntu][3],以及其余基于Ubuntu发布的版本,诸如Linux Minit上安装Brackets,你可以使用这个非官方的PPA源: + + sudo add-apt-repository ppa:webupd8team/brackets + sudo apt-get update + sudo apt-get install brackets + +其他的Linux发行版本,你可以通过下载源代码或相应Linux, OS X和Windows的二进制文件,进行安装。 + +- [下载Brackets源码和二进制文件][5] + +#### Atom #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Atom_Editor.jpeg) + +[Atom][5]是为程序员准备的另一个时髦开源代码编辑器。Atom由Github开发,被誉为“21世纪可破解的文本编辑器”。Atom的界面和Sublime Text编辑器十分相似。Sublime Text是一个十分流行但闭源的文本编辑器。 + +Atom最近已经发布了 .deb 和 .rpm包,所以在Debian和基于Fedora的Linux版本上安装很简单。当然,你也可以获取它的源代码。 + +- [下载Atom .deb][6] +- [下载Atom .rpm][7] +- [获取Atom源代码][8] + +#### Lime Text ### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/LimeTextEditor.jpeg) + +如果你喜欢Sublime Text,但是你对它的闭源十分反感。别担心,我们有一个[Sublime Text的开源克隆][9],叫做[Lime Text][10]。它基于Go, HTML和QT构造。说它是Sublime Text的克隆,背后原因是Sublime Text2仍有许多bug,而且Sublime Text3到目前为止仍处于测试版本。Sublime Text的开发过程中的bug是否修复,外界并不知情。 + +所以,开源爱好者们,你们可以很开心地通过下面的连接获得Lime Text的源码: + +- [获取Lime Text源码][11] + +#### Light Table #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Light_Table.jpeg) + +被誉为“下一个时代的代码编辑器”,[Light Table][12]是另一个时髦,功能丰富的开源编辑器,它更像是一个IDE,而非仅仅是一个文本编辑器。并且,有许多可以提高其性能的扩展方法。内联评价将是你会爱上它的原因。你一定要去使用看看,这样你才会体会它的实用之处。 + +- [获取Light Table的源码][13] + +### 你的选择是什么? ### + +在Linux平台,我们不能只局限于这四种代码编辑器。这份列表仅介绍了一些时髦的,可供程序员使用的编辑器。当然,你也有许多其他的选择,比如[Notepad++的替代品Notepadqq][14]或者[SciTE][15],等等还有其余一些。所以,这四个中,你最喜欢哪个呢? + +--- + +via: http://itsfoss.com/best-modern-open-source-code-editors-for-linux/ + +作者:[Abhishek][a] +译者:[su-kaiyao](https://github.com/su-kaiyao) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://brackets.io/ +[2]:http://www.adobe.com/ +[3]:http://itsfoss.com/install-brackets-ubuntu/ +[4]:https://github.com/adobe/brackets/releases +[5]:https://atom.io/ +[6]:https://atom.io/download/deb +[7]:https://atom.io/download/rpm +[8]:https://github.com/atom/atom/blob/master/docs/build-instructions/linux.md +[9]:http://itsfoss.com/lime-text-open-source-alternative/ +[10]:http://limetext.org/ +[11]:https://github.com/limetext/lime +[12]:http://lighttable.com/ +[13]:https://github.com/LightTable/LightTable +[14]:http://itsfoss.com/notepadqq-notepad-for-linux/ +[15]:http://itsfoss.com/scite-the-notepad-for-linux/ From d8838e11815aba6c3cbb21ed04ca6fb3bb0d9616 Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 2 Feb 2015 22:04:34 +0800 Subject: [PATCH 178/725] translated --- ...Python Tool To Test Your Internet Speed.md | 78 ------------------- ...Python Tool To Test Your Internet Speed.md | 76 ++++++++++++++++++ 2 files changed, 76 insertions(+), 78 deletions(-) delete mode 100644 sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md create mode 100644 translated/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md diff --git a/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md b/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md deleted file mode 100644 index 2a48ca6deb..0000000000 --- a/sources/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md +++ /dev/null @@ -1,78 +0,0 @@ -Translating-----geekpi - -tespeed - Python Tool To Test Your Internet Speed -================================================================================ -Many computer nerds know how to test their internet speed by using the **speedtest.net** but the thing is that it does not give you full control of the operationg going on during the measurement of your speed. Linux users love to type commands on their terminal emualator and do stuff, at least me. - -The tespeed tool is a python tool with many features that helps to test network speed from the terminal. According to the documentation it makes use of nearest speedtest.net server but the users can also manually specify one. - -In the beginning the author wrote the tespeed tool in the php programming language and proved to the ISP he was working for at that time that the internet they served was far from what they advertised. But things were not working all the time as they supposed to be so the author ported his php scripts to python and his tool counts 180 stars on github. - -It means **alot**. - -### How to use tespeed on linux ### - -Before running a python application on your machine you have to make sure that the system you are working meets the dependencies required by the tool. The python tool tespeed dependes on the two following python packages: - -- lxml -- SocksiPy - -You can easily install lxml with the help of the pip python package management system and to do that run the following command. - - pip install lxml - -Now we have to perform a simple trick to make use of the SocksiPy which you can download by using the the following command like shown below. - - wget http://sourceforge.net/projects/socksipy/files/socksipy/SocksiPy%201.00/SocksiPy.zip/ - -Once the installation is finished unzip **SocksiPy.zip** and run the following command to clone tespeed repo on your local machine. - - git clone https://github.com/Janhouse/tespeed.git - -Then place the SocksiPy folder inside the tespeed project you cloned. Now we have to create an empety file inside the SocksiPy folder under the name of **__init__.py** like shown in the following screenshot. - -![simple trick to make tespeed work](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed1.png) - -Now that we have fixed the dependencies for out projet we can easily run it by using the following command. - - python tespeed.py - -Then some magic is going to happen. The application is going to test your download and upload speed and display them in your console using some really nice colors. - -![testing download and upload speed with tespeed python application](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed2.png) - -There are many commands available in tespeed such as the option **-ls** to list the servers, option **-p** to specify and use a proxy server, the option **-s** to suppress debugging (STDERR) output and many others that we will explore in this tutorial. - -For example if you want to display results in mebibits you need to use the command **python tespeed.py** followed by the option **-mib** - - python tespeed.py -mib - -You can easily see how the unit used for measurement of the internet speed changed after using the tespeed app with the option -mib. - -![testing internet speed with tespeed python application](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed3.png) - -A very nice useful option I like to use while working with tespeed is the option -w which can be used to print CSV formated output to STDOUT. - - python tespeed.py -w - -Use the following command to list the servers. - - python tespeed -ls - -After running the above command you will get a list of servers used to test your upload and download speed. My list is really long so I am not going to share it in this tutorial. - -### Conclusion ### - -tespeed is a really easy to use high performance python script that helps computer users to test their upload and download speed by typing commands on their terminal. It supports many options and also you can specify the list of servers you would like to use. Keep playing with tespeed and please share your experience with us in the comment section. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/tools/tespeed-python-tool-test-internet-speed/ - -作者:[Oltjano Terpollari][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/oltjano/ \ No newline at end of file diff --git a/translated/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md b/translated/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md new file mode 100644 index 0000000000..99bfab9842 --- /dev/null +++ b/translated/tech/20150202 tespeed - Python Tool To Test Your Internet Speed.md @@ -0,0 +1,76 @@ +tespeed - 测试网速的Python工具 +================================================================================ +许多电脑呆子知道可以用**speedtest.net**测试网速,但是这个不能在测试中给你足够的控制。Linux用户喜欢在终端中输入命令来完成任务,至少对我是这样的。 + +tespeed是一款有很多特性的python工具,可以在终端在测试网速。根据文档,它利用了speedtest.net的服务器,但是用户可以手动指定。 + +最初作者用php语言写了tespeed工具,并且证明了ISP提供的网络远低于它广告中所说的那样。但是事情并不是一直如它们想的那样,因此作者移植他的php脚本到python中并且他的工具在github中已经有180个star了。 + +这意味着**alot**。 + +### 如何在linux中测试tespeed ### + +在你电脑上运行这个python程序前先确保系统已经满足了这个工具的依赖。tespeed依赖下面两个包: + +- lxml +- SocksiPy + +你可以用pip包管理系统来安装lxml,只要用下面的命令就行。 + + pip install lxml + +现在我们需要输入下面的命令来下载安装SocksiPy。 + + wget http://sourceforge.net/projects/socksipy/files/socksipy/SocksiPy%201.00/SocksiPy.zip/ + +下载完成后 解压**SocksiPy.zip**病运行下面的命令来克隆tespeed仓库到你本地机器中。 + + git clone https://github.com/Janhouse/tespeed.git + +接着把SocksiPy文件夹放到你克隆下来的tespeed项目中。现在我们要像截图那样在SocksPy中的**__init__.py**下面创建一个空文件。 + +![simple trick to make tespeed work](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed1.png) + +现在我们已经解决了项目的依赖问题,我们可以用下面的命令运行了。 + + python tespeed.py + +接下来就会发生一些神奇的事了。程序会测试你的下载和上传速度并且在你的终端中用漂亮的颜色显示出来。 + +![testing download and upload speed with tespeed python application](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed2.png) + +在tespeed中有很多选项,如**-ls**来现实服务器,**-p**来指定代理服务器, **-s**来阻止调试(STDERR)输出, 还有很多我们会在本教程中探索。 + +如果你想要结果现实成MB,你可以在**python tespeed.py** 后面接上选项 **-mib**。 + + python tespeed.py -mib + +在你使用了-mib选项后你可以看到计量网速的单位改变了。 + +![testing internet speed with tespeed python application](http://blog.linoxide.com/wp-content/uploads/2015/01/tespeed3.png) + +我非常喜欢用的一个选项是-w,它可以把标准输出转化成CSV格式。 + + python tespeed.py -w + +使用下面的命令来列出服务器。 + + python tespeed -ls + +运行上面的命令后,你会看到可以用于测试上传和下载速度的服务器列表。我的列表非常长,所以我不会在教程中共享了。 + +### 总结 ### + +=tespeed的确是一款帮助用户在终端中测试上传和下载速度的高性能python脚本。它支持很多的选项并且你可以指定列表中你想使用的服务器。继续使用tespeed并在留言区写下你们的体验吧。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/tools/tespeed-python-tool-test-internet-speed/ + +作者:[Oltjano Terpollari][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/oltjano/ \ No newline at end of file From dadfa460067915d0863207f5100ed9eba41a3813 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 3 Feb 2015 10:52:43 +0800 Subject: [PATCH 179/725] translating --- ...0202 How To Install Websvn for Subversion in CentOS 7.0.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md b/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md index 0a9dfdb442..5d782a80e4 100644 --- a/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md +++ b/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md @@ -1,3 +1,5 @@ +Translating----geekpi + How To Install Websvn for Subversion in CentOS 7.0 ================================================================================ Hi all, today we'll be installing latest WebSVN in our CentOS 7 for subversion repositories. @@ -120,4 +122,4 @@ via: http://linoxide.com/linux-how-to/install-websvn-subversion-centos-7/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunp/ -[1]:http://www.websvn.info/features/ \ No newline at end of file +[1]:http://www.websvn.info/features/ From 6fffa54187f40ffcc2a2d89a9c3aaf8ff1529200 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 3 Feb 2015 11:39:53 +0800 Subject: [PATCH 180/725] translated --- ...all Websvn for Subversion in CentOS 7.0.md | 125 ------------------ ...all Websvn for Subversion in CentOS 7.0.md | 124 +++++++++++++++++ 2 files changed, 124 insertions(+), 125 deletions(-) delete mode 100644 sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md create mode 100644 translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md diff --git a/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md b/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md deleted file mode 100644 index 5d782a80e4..0000000000 --- a/sources/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md +++ /dev/null @@ -1,125 +0,0 @@ -Translating----geekpi - -How To Install Websvn for Subversion in CentOS 7.0 -================================================================================ -Hi all, today we'll be installing latest WebSVN in our CentOS 7 for subversion repositories. - -WebSVN offers a view onto your subversion repositories that’s been designed to reflect the Subversion methodology. We can view the log of any file or directory and see a list of all the files changed, added or deleted in any given revision. We can also view the differences between two versions of a file so as to see exactly what was changed in a particular revision. - -### Features ### - -WebSVN offers the following features: - -- Easy to use interface -- Customisable templating system -- Colourisation of file listings -- Blame view -- Log message searching -- RSS feed support -- [and more...][1] - -Since it's written using PHP, WebSVN is also very portable and easy to install. - -Now, we'll install WebSVN for our Subversion (Apache SVN). Make sure that you have installed Apache SVN in your server. If you don't have it installed, you can install from this tutorial. - -After you installed Apache SVN(Subversion), you'll need to follow the easy steps below. - -### 1. Download WebSVN ### - -You can download WebSVN from their official site http://www.websvn.info/download/ . We'll first get inside directory /var/www/html/ and then download the package inside it. - - $ sudo -s - -**Please execute the above command in a shell or terminal as wee'll need to switch to root privilege so that we'll have full access to the system's restricted areas.** - - # cd /var/www/html - # wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip - -![downloading websvn package](http://blog.linoxide.com/wp-content/uploads/2015/01/downloading-websvn.png) - -Here, I am download the latest version 2.3.3 of websvn. You can get the link from the site. You can simply replace the above link with the link of the package you wanna install. - -### 2. Extract the downloaded zip ### - - # unzip websvn-2.3.3.zip - - # mv websvn-2.3.3 websvn - -![extracting websvn](http://blog.linoxide.com/wp-content/uploads/2015/01/extracting-websvn.png) - -### 3. Install php ### - - # yum install php - -![yum install php](http://blog.linoxide.com/wp-content/uploads/2015/01/yum-install-php.png) - -### 4. Edit WebSVN config ### - -Now, we'll need to copy distconfig.php which is situated inside /var/www/html/websvn/include directory to config.php and then edit the configuration file. - - # cd /var/www/html/websvn/include - - # cp distconfig.php config.php - - # nano config.php - -Now, we'll need to make changes to the file as shown below. After it is done, please save the file and exit. - - // Configure these lines if your commands aren't on your path. - // - $config->setSVNCommandPath('/usr/bin'); // e.g. c:\\program files\\subversion\\bin - $config->setDiffPath('/usr/bin'); - - // For syntax colouring, if option enabled... - $config->setEnscriptPath('/usr/bin'); - $config->setSedPath('/bin'); - - // For delivered tarballs, if option enabled... - $config->setTarPath('/bin'); - - // For delivered GZIP'd files and tarballs, if option enabled... - $config->setGZipPath('/bin'); - - // - $config->parentPath('/svn/'); - - $extEnscript[".pl"] = "perl"; - $extEnscript[".py"] = "python"; - $extEnscript[".sql"] = "sql"; - $extEnscript[".java"] = "java"; - $extEnscript[".html"] = "html"; - $extEnscript[".xml"] = "html"; - $extEnscript[".thtml"] = "html"; - $extEnscript[".tpl"] = "html"; - $extEnscript[".sh"] = "bash"; - -![websvn config file](http://blog.linoxide.com/wp-content/uploads/2015/01/config-file-websvn.png) - -### 5. Starting WebSVN ### - -Now, we are almost done. We now need to restart our Apache server. You can do that by the command below. - - # systemctl restart httpd.service - -And then, we'll open WebSVN inside our favorite browser with the address as http://Ip-address/websvn or if you are on local computer, you can goto http://localhost/websvn . - -![websvn successfully installed](http://blog.linoxide.com/wp-content/uploads/2015/01/websvn-success.png) - -**Note**: If you encountered error like "Unable to find "enscript" tool at location "/usr/bin/enscript"" then, you'll need to install enscript using the command "yum install enscript" which will fix the problem. - -### Conclusion ### - -Hurray, we have completed installing WebSVN in our CentOS 7 server. This tutorial works great on RHEL 7 too. WebSVN offers a view onto your subversion repositories that’s been designed to reflect the subversion methodology. You can view the log of any file or directory and see a list of all the files changed, added or deleted in any given revision. So, if you have any questions, comments, feedback please do write on the comment box below and let us know what stuffs needs to be added or improved. Thank You! Enjoy WebSVN :-) - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/install-websvn-subversion-centos-7/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:http://www.websvn.info/features/ diff --git a/translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md b/translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md new file mode 100644 index 0000000000..35af70fc51 --- /dev/null +++ b/translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md @@ -0,0 +1,124 @@ +如何在CentOS 7.0上为Subverison安装Websvn +================================================================================ +大家好,今天我们会在CentOS 7.0 上为subversion安装WebSVN。 + +WebSVN提供了Svbverion中的各种方法来查看你的仓库。我们可以看到任何给定版本的任何文件或者目录的日志并且看到所有文件改动、添加、删除的列表。我们同样可以看到两个版本间的不同来知道特定版本改动了什么。 + + +### 特性 ### + +WebSVN提供了下面这些特性: + +- 易于使用的用户界面 +- 可定制的模板系统 +- 色彩化的文件列表 +- blame 视图 +- 日志信息查询 +- RSS支持 +- [更多][1] + +由于使用PHP写成,WebSVN同样易于移植和安装。 + +现在我们将为Subverison(Apache SVN)安装WebSVN。请确保你的服务器上已经安装了Apache SVN。如果你还没有安装,你可以在本教程中安装。 + +After you installed Apache SVN(Subversion), you'll need to follow the easy steps below.安装完Apache SVN(Subversion)后,你需要以下几步。 + +### 1. 下载 WebSVN ### + +你可以从官方网站http://www.websvn.info/download/中下载WebSVN。我们首先进入/var/www/html/并在这里下载安装包。 + + $ sudo -s + +**请在shell或者终端中执行上面的命令,因为我们需要切换到root权限来对系统限制区域有访问权。** + + # cd /var/www/html + # wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip + +![downloading websvn package](http://blog.linoxide.com/wp-content/uploads/2015/01/downloading-websvn.png) + +这里,我下载的是最新的2.3.3版本的websvn。你可以从这个网站得到链接。你可以用你要安装的包的链接来替换上面的链接。 + +### 2. 解压下载的zip ### + + # unzip websvn-2.3.3.zip + + # mv websvn-2.3.3 websvn + +![extracting websvn](http://blog.linoxide.com/wp-content/uploads/2015/01/extracting-websvn.png) + +### 3. 安装php ### + + # yum install php + +![yum install php](http://blog.linoxide.com/wp-content/uploads/2015/01/yum-install-php.png) + +### 4. 编辑WebSVN配置 ### + +现在,我们需要拷贝位于/var/www/html/websvn/include的distconfig.php为config.php,并且接着编辑配置文件。 + + # cd /var/www/html/websvn/include + + # cp distconfig.php config.php + + # nano config.php + +现在我们需要按如下改变文件。这完成之后,请保存病退出。 + + // Configure these lines if your commands aren't on your path. + // + $config->setSVNCommandPath('/usr/bin'); // e.g. c:\\program files\\subversion\\bin + $config->setDiffPath('/usr/bin'); + + // For syntax colouring, if option enabled... + $config->setEnscriptPath('/usr/bin'); + $config->setSedPath('/bin'); + + // For delivered tarballs, if option enabled... + $config->setTarPath('/bin'); + + // For delivered GZIP'd files and tarballs, if option enabled... + $config->setGZipPath('/bin'); + + // + $config->parentPath('/svn/'); + + $extEnscript[".pl"] = "perl"; + $extEnscript[".py"] = "python"; + $extEnscript[".sql"] = "sql"; + $extEnscript[".java"] = "java"; + $extEnscript[".html"] = "html"; + $extEnscript[".xml"] = "html"; + $extEnscript[".thtml"] = "html"; + $extEnscript[".tpl"] = "html"; + $extEnscript[".sh"] = "bash"; + +![websvn config file](http://blog.linoxide.com/wp-content/uploads/2015/01/config-file-websvn.png) + +### 5. 启动 WebSVN ### + +现在,我们将近完成了。现在需要重启Apache服务。你可以用下面的命令。 + + # systemctl restart httpd.service + +接着我们在浏览器中打开WebSVN,输入http://Ip-address/websvn,或者你在本地的话,你可以输入http://localhost/websvn。 + +![websvn successfully installed](http://blog.linoxide.com/wp-content/uploads/2015/01/websvn-success.png) + +**注意**: 如果你遇到一个像"Unable to find "enscript" tool at location "/usr/bin/enscript"这样的问题,那么你需要使用“yum install enscript”安装enscript来修复这个问题。 + +### 总结 ### + +好了,我们已经在CentOS 7上哇安城WebSVN的安装了。这个教程同样适用于RHEL 7。WebSVN提供了Svbverion中的各种方法来查看你的仓库。你可以看到任何给定版本的任何文件或者目录的日志并且看到所有文件改动、添加、删除的列表。如果你有任何问题、评论、反馈请在下面的评论栏中留下,来让我们知道该添加什么和改进。谢谢!享受WebSVN吧。:-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-websvn-subversion-centos-7/ + +作者:[Arun Pyasi][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://www.websvn.info/features/ From 95b1822fc70f7b4958ce7db70c7eaf0f50a8081f Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 3 Feb 2015 15:49:14 +0800 Subject: [PATCH 181/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Modern Open Source Code Editors For Linux.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md b/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md index d64d84881f..6072c2b759 100644 --- a/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md +++ b/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md @@ -3,11 +3,11 @@ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Open_Source_Editors.jpeg) -寻找**Linux平台最棒的代码编辑器**?如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代, 最权威的, 漂亮的, 时髦但十分强大, 功能丰富的**最好的Linux平台开源代码编辑器**,它们将会提升你的编程经验。 +寻找**Linux平台最棒的代码编辑器**?如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代尖端、漂亮、时髦而且十分强大, 功能丰富的**最好的Linux平台开源代码编辑器**,它们将会提升你的编程经验。 ### Linux平台最时髦的开源代码编辑器 ### -我使用Ubunt作为我的主桌面,所以我提供的安装说明是基于Ubuntu发布的操作系统。但是这并不意味着本文列表就可以作为**Ubuntu最好的文本编辑器**,因为本列表是适用于任何Linux发布操作系统的。而且,列表的介绍顺序并没有特定的优先级别。 +我使用Ubuntu作为我的主桌面,所以我提供的安装说明是基于Ubuntu的发行版。但是这并不意味着本文列表就是**Ubuntu最好的文本编辑器**,因为本列表是适用于任何Linux发行版。而且,列表的介绍顺序并没有特定的优先级别。 #### Brackets #### @@ -15,7 +15,7 @@ [Brackets][1]是出自[Adobe][2]的一个开源代码编辑器。它专门关注web设计者的需求,内置支持HTML, CSS和Java Script。它轻量级,但却十分强大,提供在线编辑和实时预览。而且,为了你能更好地体验Brackets,你可以使用许多可用的插件。 -为了[在Ubuntu][3],以及其余基于Ubuntu发布的版本,诸如Linux Minit上安装Brackets,你可以使用这个非官方的PPA源: +为了[在Ubuntu][3],以及其它基于Ubuntu的发行版,诸如Linux Minit上安装Brackets,你可以使用这个非官方的PPA源: sudo add-apt-repository ppa:webupd8team/brackets sudo apt-get update @@ -29,7 +29,7 @@ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Atom_Editor.jpeg) -[Atom][5]是为程序员准备的另一个时髦开源代码编辑器。Atom由Github开发,被誉为“21世纪可破解的文本编辑器”。Atom的界面和Sublime Text编辑器十分相似。Sublime Text是一个十分流行但闭源的文本编辑器。 +[Atom][5]是为程序员准备的另一个时尚开源代码编辑器。Atom由Github开发,被誉为“21世纪可破解的文本编辑器”。Atom的界面和Sublime Text编辑器十分相似。Sublime Text是一个十分流行但闭源的文本编辑器。 Atom最近已经发布了 .deb 和 .rpm包,所以在Debian和基于Fedora的Linux版本上安装很简单。当然,你也可以获取它的源代码。 @@ -41,7 +41,7 @@ Atom最近已经发布了 .deb 和 .rpm包,所以在Debian和基于Fedora的Li ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/LimeTextEditor.jpeg) -如果你喜欢Sublime Text,但是你对它的闭源十分反感。别担心,我们有一个[Sublime Text的开源克隆][9],叫做[Lime Text][10]。它基于Go, HTML和QT构造。说它是Sublime Text的克隆,背后原因是Sublime Text2仍有许多bug,而且Sublime Text3到目前为止仍处于测试版本。Sublime Text的开发过程中的bug是否修复,外界并不知情。 +如果你喜欢Sublime Text,但是你对它的闭源十分反感。别担心,我们有一个[Sublime Text的开源克隆][9],叫做[Lime Text][10]。它基于Go, HTML和QT构造。说它是Sublime Text的克隆,背后原因是Sublime Text2仍有许多bug,而且Sublime Text3到目前为止仍处于测试版本。Sublime Text在开发过程中的bug是否修复,外界并不知情。 所以,开源爱好者们,你们可以很开心地通过下面的连接获得Lime Text的源码: @@ -51,13 +51,13 @@ Atom最近已经发布了 .deb 和 .rpm包,所以在Debian和基于Fedora的Li ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Light_Table.jpeg) -被誉为“下一个时代的代码编辑器”,[Light Table][12]是另一个时髦,功能丰富的开源编辑器,它更像是一个IDE,而非仅仅是一个文本编辑器。并且,有许多可以提高其性能的扩展方法。内联评价将是你会爱上它的原因。你一定要去使用看看,这样你才会体会它的实用之处。 +被誉为“下一代的代码编辑器”,[Light Table][12]是另一个时髦,功能丰富的开源编辑器,它更像是一个IDE,而非仅仅是一个文本编辑器。并且,有许多可以提高其性能的扩展方法。内联评价将是你会爱上它的原因。你一定要试用一下看,这样你才会体会它的实用之处。 - [获取Light Table的源码][13] ### 你的选择是什么? ### -在Linux平台,我们不能只局限于这四种代码编辑器。这份列表仅介绍了一些时髦的,可供程序员使用的编辑器。当然,你也有许多其他的选择,比如[Notepad++的替代品Notepadqq][14]或者[SciTE][15],等等还有其余一些。所以,这四个中,你最喜欢哪个呢? +在Linux平台,我们不能只局限于这四种代码编辑器。这份列表仅介绍了一些时髦的,可供程序员使用的编辑器。当然,你也有许多其他的选择,比如[Notepad++的替代品Notepadqq][14]或者[SciTE][15]等等。那么,文中这四个编辑器,你最喜欢哪个呢? --- @@ -65,7 +65,7 @@ via: http://itsfoss.com/best-modern-open-source-code-editors-for-linux/ 作者:[Abhishek][a] 译者:[su-kaiyao](https://github.com/su-kaiyao) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7b818dcaf786900b70e137007593267c507c4822 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 3 Feb 2015 16:23:46 +0800 Subject: [PATCH 182/725] =?UTF-8?q?20150203-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...s and Code Editors for JavaScript Users.md | 82 +++++++++++++++++++ ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 60 ++++++++++++++ ...t be opened correctly' on Google Chrome.md | 50 +++++++++++ 3 files changed, 192 insertions(+) create mode 100644 sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md create mode 100644 sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md create mode 100644 sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md diff --git a/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md new file mode 100644 index 0000000000..83f5f11293 --- /dev/null +++ b/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md @@ -0,0 +1,82 @@ +9 Best IDEs and Code Editors for JavaScript Users +================================================================================ +Web designing and developing is one of the trending sectors in the recent times, where more and more peoples started to search for their career opportunities. But, Getting the right opportunity as a web developer or graphic designer is not just a piece of cake for everyone, It certainly requires a strong mind presence as well as right skills to find the find the right job. There are a lot of websites available today which can help you to get the right job description according to your knowledge. But still if you want to achieve something in this sector you must have some excellent skills like working with different platforms, IDEs and various other tools too. + +Talking about the different platforms and IDEs used for various languages for different purposes, gone is the time when we learn just one IDE and get the optimum solutions for our web design projects easily. Today we are living in the modern lifestyle where competition is getting more and more tough on every single day. Same is the case with the IDEs, IDE is basically a powerful client application for creating and deploying applications. Today we are going to share some best javascript IDE for web designers and developers. + +Please visit this list of best code editors for javascript user and share your thought with us. + +### 1) [Spket][1] ### + +**Spket IDE** is powerful toolkit for JavaScript and XML development. The powerful editor for JavaScript, XUL/XBL and Yahoo! Widget development. The JavaScript editor provides features like code completion, syntax highlighting and content outline that helps developers productively create efficient JavaScript code. + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/spket-e1422674329554.png) + +### 2) [Ixedit][2] ### + +IxEdit is a JavaScript-based interaction design tool for the web. With IxEdit, designers can practice DOM-scripting without coding to change, add, move, or transform elements dynamically on your web pages. + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ixedit.png) + +### 3) [Komodo Edit][3] ### + +Komode is free and powerful code editor for Javascript and other programming languages. + +![](http://i2.wp.com/devzum.com/wp-content/uploads/2015/01/komodo-edit-e1422674596277.png) + +### 4) [EpicEditor][4] ### + +EpicEditor is an embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more. For developers, it offers a robust API, can be easily themed, and allows you to swap out the bundled Markdown parser with anything you throw at it. + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/epiceditor-e1422674732281.png) + +### 5) [codepress][5] ### + +CodePress is web-based source code editor with syntax highlighting written in JavaScript that colors text in real time while it’s being typed in the browser. + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/codepres-e1422674893706.png) + +### 6) [ACe][6] ### + +Ace is an embeddable code editor written in JavaScript. It matches the features and performance of native editors such as Sublime, Vim and TextMate. It can be easily embedded in any web page and JavaScript application. + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ace-e1422675089912.png) + +### 7) [scripted][7] ### + +Scripted is a fast and lightweight code editor with an initial focus on JavaScript editing. Scripted is a browser based editor and the editor itself is served from a locally running Node.js server instance. + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/scripted-e1422675188408.png) + +### 8) [Netbeans][8] ### + +This is another more impressive and useful code editors for javascript and other programming languages. + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/code_editing1-e1422675506226.png) + +### 9) [Webstorm][9] ### + +This is the smartest ID for javascript. WebStorm is a lightweight yet powerful IDE, perfectly equipped for complex client-side development and server-side development with Node.js. + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/webstorm.png) + +-------------------------------------------------------------------------------- + +via: http://devzum.com/2015/01/31/9-best-ides-and-code-editors-for-javascript-users/ + +作者:[vikas][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://devzum.com/author/vikas/ +[1]:http://spket.com/ +[2]:http://www.ixedit.com/ +[3]:http://komodoide.com/komodo-edit/ +[4]:http://oscargodson.github.io/EpicEditor/ +[5]:http://codepress.sourceforge.net/ +[6]:http://ace.c9.io/#nav=about +[7]:https://github.com/scripted-editor/scripted +[8]:https://netbeans.org/ +[9]:http://www.jetbrains.com/webstorm/ \ No newline at end of file diff --git a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md new file mode 100644 index 0000000000..cd1a5eb525 --- /dev/null +++ b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md @@ -0,0 +1,60 @@ +How To Install KDE Plasma 5.2 In Ubuntu 14.10 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) + +[KDE][1] Plasma 5.2 has been [released][2] and in this post we shall see how to install KDE Plasma 5.2 in Ubuntu 14.10. + +Ubuntu’s default desktop environment Unity is beautiful and packs quite some feature. But if you ask any experienced Linux user about desktop customization, his answer will be KDE. KDE is boss when it comes to customization and its popularity can be guessed that Ubuntu has an official KDE flavor, known as [Kubuntu][3]. + +A good thing about Ubuntu (or any other Linux OS for that matter) is that it doesn’t bind you with one particular desktop environment. You can always install additional desktop environments and choose to switch between them while keeping several desktop environments at the same time. Earlier, we have seen the installation of following desktop environments: + +- [How to install Mate desktop in Ubuntu 14.04][4] +- [How to install Cinnamon in Ubuntu 14.04][5] +- [How to install Budgie desktop in Ubuntu 14.04][6] +- [How to install GNOME Shell in Ubuntu 14.04][7] + +And today we shall see how to install KDE Plasma in Ubuntu 14.10. + +### Install KDE Plasma 5.2 in Ubuntu 14.04 ### + +Before you go on installing Plasma on Ubuntu 14.10, you should know that it will download around one GB of data. So consider your network speed and data package (if any) before opting for KDE installation. The PPA we are going to use for installing Plasma is the official PPA provided by the KDE community. Use the commands below in terminal: + + sudo apt-add-repository ppa:kubuntu-ppa/next-backports + sudo apt-get update + sudo apt-get dist-upgrade + sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers + +During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) + +You’ll be logged in to KDE Plasma now. Here is a quick screenshot of how KDE Plasma 5.2 looks like in Ubuntu 14.10: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) + +### Remove KDE Plasma from Ubuntu ### + +If you want to revert the changes, use the following commands to get rid of KDE Plasma from Ubuntu 14.10. + + sudo apt-get install ppa-purge + sudo apt-get remove kubuntu-plasma5-desktop + sudo ppa-purge ppa:kubuntu-ppa/next + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:https://www.kde.org/ +[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful +[3]:http://www.kubuntu.org/ +[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ +[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ +[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ +[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ \ No newline at end of file diff --git a/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md new file mode 100644 index 0000000000..0608359029 --- /dev/null +++ b/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md @@ -0,0 +1,50 @@ +Linux FAQs with Answers--How to fix “Your profile could not be opened correctly” on Google Chrome +================================================================================ +> **Question**: When I open Google Chrome web browser on my Linux box, I have several pop-up messages saying "Your profile could not be opened correctly." This error happens every time I open Google Chrome. How can I solve this error? + +When you see an error message saying "Your profile could not be opened correctly" on your Google Chrome web browser," that is because somehow your profile data on Google Chrome got corrupted. This can happen while you upgrade your Google Chrome browser manually on Linux. + +![](https://farm8.staticflickr.com/7428/16238502737_27bdda6685_o.png) + +Depending on exactly which file got corrupted, you can try one of these methods. + +### Method One ### + +Close all your Chrome browser windows/tabs. + +Go to ~/.config/google-chrome/Default, and remove/rename "Web Data" file as below. + + $ cd ~/.config/google-chrome/Default + $ rm "Web Data" + +Re-open Google Chrome browser. + +### Method Two ### + +Close all your Chrome browser windows/tabs. + +Go to ~/.config/google-chrome/"Profile 1", and rename "History" file as below. + + $ cd ~/.config/google-chrome/"Profile 1" + $ mv History History.bak + +Re-open Google Chrome browser. + +### Method Three ### + +If the problem still persists, you can remove the Default profile folder (~/.config/google-chrome/Default) altogether. Note that by doing so, you will lose all previously opened Google tabs, imported bookmarks, browsing history, sign-in data, etc. + +Before removing it, first close all your Chrome browser windows/tabs. + + $ rm -rf ~/.config/google-chrome/Default + +After restarting Google Chrome, the folder ~/.config/google-chrome/Default will automatically be re-generated. + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/your-profile-could-not-be-opened-correctly-google-chrome.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From 4c4d31b2dca217f3a2be05a1f55c35a98979d1b4 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 3 Feb 2015 16:29:50 +0800 Subject: [PATCH 183/725] =?UTF-8?q?20150203-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...sed Monitoring System In CentOS or RHEL.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md diff --git a/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md b/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md new file mode 100644 index 0000000000..51983921f6 --- /dev/null +++ b/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md @@ -0,0 +1,111 @@ +How To Install Linux-dash Web Based Monitoring System In CentOS/RHEL +================================================================================ +**Linux-dash** is a web-based lightweight monitoring dashboard for Linux machines. This application will display real-time, various system properties, such as CPU load, RAM usage, disk usage, Internet speed, network connections, RX/TX bandwidth, logged-in users, running processes etc. It will not store long term statistics, Thus it doesn’t have a backend database. + +In this article i will show you how to install and setup Linux dash, Here my web server is **Nginx**. + +### Installation ### + +First of all we should enable, [EPEL repository][1]. + +**Next, we need to install nginx with the following command.** + + sudo yum install nginx + +**Install php-fpm component** + + sudo yum install git php-common php-fpm + +Now, we have to configure nginx for Linux-dash. So create /etc/nginx/conf.d/linuxdash.conf as follows. + + sudo vim /etc/nginx/conf.d/linuxdash.conf + +---------- + + server { + server_name $domain_name; + listen 8080; + root /var/www; + index index.html index.php; + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + location ~* \.(?:xml|ogg|mp3|mp4|ogv|svg|svgz|eot|otf|woff|ttf|css|js|jpg|jpeg|gif|png|ico)$ { + try_files $uri =404; + expires max; + access_log off; + add_header Pragma public; + add_header Cache-Control "public, must-revalidate, proxy-revalidate"; + } + + location /linux-dash { + index index.html index.php; + } + + # PHP-FPM via sockets + location ~ \.php(/|$) { + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php-fpm.sock; + if (!-f $document_root$fastcgi_script_name) { + return 404; + } + try_files $uri $uri/ /index.php?$args; + include fastcgi_params; + } + } + +**Next job is to configure php-fpm. Open /etc/php-fpm.d/www.conf in your Favorite editor.** + + sudo vim /etc/php-fpm.d/www.conf + +**Make sure to set “listen”, “user” and “group” fields as below. You can leave the rest of the configuration unchanged.** + + . . . + listen = /var/run/php-fpm.sock + user = nginx + group = nginx + . . . + +**Now, We are going to Download and install linux-dash under /var/www** + + git clone https://github.com/afaqurk/linux-dash.git + sudo cp -r linux-dash/ /var/www/ + sudo chown -R nginx:nginx /var/www + +**Next, restart Nginx web server as well as** php-fpm + + sudo service nginx restart + sudo service php-fpm restart + +**Set nginx and php-fpm to auto-start upon boot** + + sudo chkconfig nginx on + sudo chkconfig php-fpm on + +In this example, we have configured linux-dash to use TCP port 8080. So make sure that the firewall is not blocking TCP port 8080. + +### Monitor a Linux server with linux-dash ### + +You can access Linux-dash by pointing you browser to **http://:8080/linux-dash/** + +The web dashboard consists of several widgets, each of which displays particular system properties. You can customize the look of the web dashboard by rearranging and/or closing some of the widgets. + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Lin-dash.png) + +Good day! + +See you guys with next article. + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/install-linux-dash-web-based-monitoring-system-centosrhel/ + +作者:[Jijo][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/jijo/ +[1]:http://www.unixmen.com/install-epel-repository-centos-rhel-7/ \ No newline at end of file From efab980f484535a0772de8fbd11c94b7a492f78f Mon Sep 17 00:00:00 2001 From: Vic___ Date: Tue, 3 Feb 2015 17:44:41 +0800 Subject: [PATCH 184/725] translated --- ...26 4 lvcreate Command Examples on Linux.md | 89 +++++++------------ 1 file changed, 30 insertions(+), 59 deletions(-) diff --git a/sources/tech/20150126 4 lvcreate Command Examples on Linux.md b/sources/tech/20150126 4 lvcreate Command Examples on Linux.md index bce08cc203..145f2c52ee 100644 --- a/sources/tech/20150126 4 lvcreate Command Examples on Linux.md +++ b/sources/tech/20150126 4 lvcreate Command Examples on Linux.md @@ -1,76 +1,74 @@ - Vic020 - -4 lvcreate Command Examples on Linux +在linux中4个lvcreate命令例子 ================================================================================ -Logical volume management (LVM) is a widely-used technique and extremely flexible disk management scheme. It basically contain three basic command : +逻辑卷管理(LVM)是广泛使用的技术,并拥有极其灵活磁盘管理方案。主要包含3个基础命令: -a. Creates the physical volumes using **pvcreate** -b. Create the volume group and add partition into volume group using **vgcreate** -c. Create a new logical volume using **lvcreate** +a. 创建物理卷使用**pvcreate** +b. 创建卷组并给卷组增加分区**vgcreate** +c. 创建新的逻辑卷使用**lvcreate** ![](http://www.ehowstuff.com/wp-content/uploads/2015/01/lvm-diagram1.jpg) -The following examples focus on the command to create a logical volume in an existing volume group, **lvcreate**. **lvcreate** is the command do allocating logical extents from the free physical extent pool of that volume group. Normally logical volumes use up any space available on the underlying physical volumes on a next-free basis. Modifying the logical volume will frees and reallocates space in the physical volumes. The following **lvcreate** command has been tested on linux CentOS 5, CentOS 6, CentOS 7, RHEL 5, RHEl 6 and RHEL 7 version. +随后的例子着重在已经存在的卷组上使用**lvcreate**创建逻辑卷。**lvcreate**命令可以在来自自由物理扩展池的卷组分配逻辑扩展。通常,逻辑卷可以随意使用底层逻辑卷上的任意空间。修改逻辑卷将释放或重新分配在物理卷空间。这些例子已经在CentOS 5, CentOS 6, CentOS 7, RHEL 5, RHEl 6 和 RHEL 7 版本中测试通过。 -### 4 lvcreate Command Examples on Linux : ### +### 4个lvcreate命令例子 ### -1. The following command creates a logical volume 15 gigabytes in size in the volume group vg_newlvm : +1. 在名为vg_newlvm卷组中创建15G大小的逻辑卷: [root@centos7 ~]# lvcreate -L 15G vg_newlvm -2. The following command creates a 2500 MB linear logical volume named centos7_newvol in the volume group -vg_newlvm, creating the block device /dev/vg_newlvm/centos7_newvol : +2. 在名为vg_newlvm中创建大小为2500MB的逻辑卷并命名centos7_newvol,创建块设备/dev/vg_newlvm/centos7_newvol: [root@centos7 ~]# lvcreate -L 2500 -n centos7_newvol vg_newlvm -3. You can use the -l argument of the **lvcreate** command to specify the size of the logical volume in extents. You can also use this argument to specify the percentage of the volume group to use for the logical volume. The following command creates a logical volume called centos7_newvol that uses 50% of the total space in volume group vg_newlvm : +3.可以使用**lvcreate**命令的参数-l,能指定一些特别的逻辑卷扩展大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7_newvol卷组的50%大小的逻辑卷vg_newlvm: [root@centos7 ~]# lvcreate -l 50%VG -n centos7_newvol vg_newlvm -4. The following command creates a logical volume called centos7_newvol that uses all of the unallocated space in the volume group vg_newlvm : +4. 使用卷组剩下的所有空间创建逻辑卷 [root@centos7 ~]# lvcreate --name centos7_newvol -l 100%FREE vg_newlvm -To see more **lvcreate** command options, issue the following command : +更多帮助,使用**lvcreate**命令--help选项来查看: [root@centos7 ~]# lvcreate --help ---------- +以下空号中是帮助字面翻译 - lvcreate: Create a logical volume + lvcreate: Create a logical volume(创建逻辑卷) lvcreate - [-A|--autobackup {y|n}] + [-A|--autobackup {y|n}](自动备份) [-a|--activate [a|e|l]{y|n}] - [--addtag Tag] - [--alloc AllocationPolicy] - [--cachemode CacheMode] + [--addtag Tag](增加标签) + [--alloc AllocationPolicy](分配策略) + [--cachemode CacheMode](Cache模式) [-C|--contiguous {y|n}] [-d|--debug] [-h|-?|--help] - [--ignoremonitoring] - [--monitor {y|n}] + [--ignoremonitoring](忽略监听) + [--monitor {y|n}](监听) [-i|--stripes Stripes [-I|--stripesize StripeSize]] [-k|--setactivationskip {y|n}] [-K|--ignoreactivationskip] - {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] | - -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} + {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |(逻辑扩展数) + -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}(逻辑卷大小) [-M|--persistent {y|n}] [--major major] [--minor minor] - [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]] - [-n|--name LogicalVolumeName] + [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]](镜像) + [-n|--name LogicalVolumeName](逻辑卷名字) [--noudevsync] [-p|--permission {r|rw}] [--[raid]minrecoveryrate Rate] [--[raid]maxrecoveryrate Rate] - [-r|--readahead ReadAheadSectors|auto|none] - [-R|--regionsize MirrorLogRegionSize] - [-T|--thin [-c|--chunksize ChunkSize] + [-r|--readahead ReadAheadSectors|auto|none](读取头扇区) + [-R|--regionsize MirrorLogRegionSize](镜像逻辑区域尺寸) + [-T|--thin [-c|--chunksize ChunkSize](块大小) [--discards {ignore|nopassdown|passdown}] [--poolmetadatasize MetadataSize[bBsSkKmMgG]]] [--poolmetadataspare {y|n}] - [--thinpool ThinPoolLogicalVolume{Name|Path}] + [--thinpool ThinPoolLogicalVolume{Name|Path}]精简池逻辑卷 [-t|--test] - [--type VolumeType] + [--type VolumeType](卷类型) [-v|--verbose] [-W|--wipesignatures {y|n}] [-Z|--zero {y|n}] @@ -81,34 +79,7 @@ To see more **lvcreate** command options, issue the following command : { {-s|--snapshot} OriginalLogicalVolume[Path] | [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize} {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume] - -V|--virtualsize VirtualSize} - [-c|--chunksize] - [-A|--autobackup {y|n}] - [--addtag Tag] - [--alloc AllocationPolicy] - [-C|--contiguous {y|n}] - [-d|--debug] - [--discards {ignore|nopassdown|passdown}] - [-h|-?|--help] - [--ignoremonitoring] - [--monitor {y|n}] - [-i|--stripes Stripes [-I|--stripesize StripeSize]] - [-k|--setactivationskip {y|n}] - [-K|--ignoreactivationskip] - {-l|--extents LogicalExtentsNumber[%{VG|FREE|ORIGIN}] | - -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]} - [--poolmetadatasize MetadataVolumeSize[bBsSkKmMgG]] - [-M|--persistent {y|n}] [--major major] [--minor minor] - [-n|--name LogicalVolumeName] - [--noudevsync] - [-p|--permission {r|rw}] - [-r|--readahead ReadAheadSectors|auto|none] - [-t|--test] - [--thinpool ThinPoolLogicalVolume[Path]] - [-v|--verbose] - [--version] - [PhysicalVolumePath...] - + -V|--virtualsize VirtualSize}( -------------------------------------------------------------------------------- via: http://www.ehowstuff.com/4-lvcreate-command-examples-on-linux/ From 82e8b17ba96bac350e7268dedf76bcd7a2d06dd6 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Tue, 3 Feb 2015 17:45:42 +0800 Subject: [PATCH 185/725] Moved --- .../tech/20150126 4 lvcreate Command Examples on Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150126 4 lvcreate Command Examples on Linux.md (100%) diff --git a/sources/tech/20150126 4 lvcreate Command Examples on Linux.md b/translated/tech/20150126 4 lvcreate Command Examples on Linux.md similarity index 100% rename from sources/tech/20150126 4 lvcreate Command Examples on Linux.md rename to translated/tech/20150126 4 lvcreate Command Examples on Linux.md From 3f7126d6278087366248336ab83ec47494693aa5 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 3 Feb 2015 17:51:12 +0800 Subject: [PATCH 186/725] Translating by ZTinoZ --- ...Linux FAQs with Answers--How to check CPU info on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index a1cf20c2ce..c8e49ff8c8 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -24,7 +24,7 @@ cpufreq-info命令(**cpufrequtils**包的一部分)从内核/硬件中收集并 ### 3. cpuid ### -The cpuid command-line utility is a dedicated CPU information tool that displays verbose information about CPU hardware by using [CPUID functions][2]. Reported information includes processor type/family, CPU extensions, cache/TLB configuration, power management features, etc. +cpuid命令的功能就相当于一个专用的CPU信息工具,它能通过使用[CPUID功能][2]来显示详细的关于CPU硬件的信息。信息报告包括处理器类型/家族、CPU扩展指令集、缓存/TLB(译者注:传输后备缓冲器)配置、电源管理功能等等。 $ cpuid @@ -32,7 +32,7 @@ The cpuid command-line utility is a dedicated CPU information tool that displays ### 4. dmidecode ### -The dmidecode command collects detailed information about system hardware directly from DMI data of the BIOS. Reported CPU information includes CPU vendor, version, CPU flags, maximum/current clock speed, (enabled) core count, L1/L2/L3 cache configuration, and so on. +dmidecode命令直接从BIOS的DMI(译者注:桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU flags, maximum/current clock speed, (enabled) core count, L1/L2/L3 cache configuration, and so on. $ sudo dmidecode From 2424c72949939a22ad405ba66921df3f7cfc7a0f Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 3 Feb 2015 18:11:47 +0800 Subject: [PATCH 187/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ferent Directory on a Linux or Unix-like Systems.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md b/translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md index 34923b5ec3..ee9af03058 100644 --- a/translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md +++ b/translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md @@ -2,7 +2,7 @@ ================================================================================ 我想要解压一个tar文件到一个指定的目录叫/tmp/data。我该如何在Linux或者类Unix的系统中使用tar命令解压一个tar文件到不同的目录中? -你不必使用cd名切换到其他的目录并解压。可以使用下面的语法解压一个文件: +你不必使用cd命令切换到其他的目录并解压。可以使用下面的语法解压一个文件: ### 语法 ### @@ -16,9 +16,9 @@ GNU/tar 语法: tar xf file.tar --directory /path/to/directory -### 示例:解压文件到另一个文件夹中 ### +### 示例:解压文件到另一个目录中 ### -在本例中。我解压$HOME/etc.backup.tar到文件夹/tmp/data中。首先,你需要手动创建这个目录,输入: +在本例中。我解压$HOME/etc.backup.tar到/tmp/data目录中。首先,需要手动创建这个目录,输入: mkdir /tmp/data @@ -56,8 +56,8 @@ via: http://www.cyberciti.biz/faq/howto-extract-tar-file-to-specific-directory-o 作者:[nixCraft][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.cyberciti.biz/tips/about-us \ No newline at end of file +[a]:http://www.cyberciti.biz/tips/about-us From 5015d4fefe1fe085a2725a259fd97da499a89525 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 3 Feb 2015 22:14:23 +0800 Subject: [PATCH 188/725] PUB:20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems @geekpi --- ... Different Directory on a Linux or Unix-like Systems.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename {translated/tech => published}/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md (88%) diff --git a/translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md b/published/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md similarity index 88% rename from translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md rename to published/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md index ee9af03058..55866282e8 100644 --- a/translated/tech/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md +++ b/published/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md @@ -1,6 +1,7 @@ -如何在Linux/类Unix系统中解压tar文件到不同的目录中 +如何解压 tar 文件到不同的目录中 ================================================================================ -我想要解压一个tar文件到一个指定的目录叫/tmp/data。我该如何在Linux或者类Unix的系统中使用tar命令解压一个tar文件到不同的目录中? + +我想要解压一个tar文件到一个叫/tmp/data的指定目录。我该如何在Linux或者类Unix的系统中使用tar命令解压一个tar文件到不同的目录中? 你不必使用cd命令切换到其他的目录并解压。可以使用下面的语法解压一个文件: @@ -34,7 +35,7 @@ GNU/tar 语法: ![Gif 01: tar Command Extract Archive To Different Directory Command](http://s0.cyberciti.org/uploads/faq/2015/01/tar-extract-archive-to-dir.gif) -Gif 01: tar命令解压文件到不同的目录 +*Gif 01: tar命令解压文件到不同的目录* 你也可以指定解压的文件: From a8d938713e7c7866125f94926cecd5d6d5adf0bc Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 3 Feb 2015 22:48:30 +0800 Subject: [PATCH 189/725] PUB:20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04 @Vic020 --- ...gration From 2.2 to 2.4 on Ubuntu 14.04.md | 58 +++++++++++++++++++ ...gration From 2.2 to 2.4 on Ubuntu 14.04.md | 56 ------------------ 2 files changed, 58 insertions(+), 56 deletions(-) create mode 100644 published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md delete mode 100644 translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md diff --git a/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md new file mode 100644 index 0000000000..c18c9ed4f7 --- /dev/null +++ b/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md @@ -0,0 +1,58 @@ +在 Ubuntu 14.04 中Apache从2.2迁移到2.4的问题 +================================================================================ +如果你将**Ubuntu**从12.04升级跨越到了14.04的,那么这其中包括了一个重大的升级--**Apache**从2.2版本升级到2.4版本。**Apache**的这次升级带来了许多性能提升,**但是如果继续使用2.2的配置文件会导致很多错误**。 + +### 访问控制的改变 ### + +从**Apache 2.4**起所启用授权机制比起2.2的只是针对单一数据存储的单一检查更加灵活。过去很难确定哪个 order 授权怎样被使用的,但是授权容器指令的引入解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 + +这就是为什么大多数的升级失败是由于配置错误的原因。2.2的访问控制是基于IP地址、主机名和其他角色,通过使用指令Order,来设置Allow, Deny或 Satisfy;但是2.4,这些一切都通过新的授权方式进行检查。 + +为了弄清楚这些,可以来看一些虚拟主机的例子,这些可以在/etc/apache2/sites-enabled/default 或者 /etc/apache2/sites-enabled/*你的网站名称* 中找到: + +旧的2.2虚拟主机配置: + + Order allow,deny + Allow from all + +新的2.4虚拟主机配置: + + Require all granted + +![apache 2.4 config](http://blog.linoxide.com/wp-content/uploads/2014/12/apache-2.4-config.jpg) + +(LCTT 译注:Order、Allow和deny 这些将在之后的版本废弃,请尽量避免使用,Require 指令已可以提供比其更强大和灵活的功能。) + +### .htaccess 问题 ### + +升级后如果一些设置不工作,或者你得到重定向错误,请检查是否这些设置是放在.htaccess文件中。如果Apache 2.4没有使用 .htaccess 文件中的设置,那是因为在2.4中AllowOverride指令的默认是 none,因此忽略了.htaccess文件。你只需要做的就是修改或者添加AllowOverride All命令到你的网站配置文件中。 + +上面截图中,可以看见AllowOverride All指令。 + +### 丢失配置文件或者模块 ### + +根据我的经验,这次升级带来的另一个问题就是在2.4中,一些旧模块和配置文件不再需要或者不被支持了。你将会收到一条“Apache不能包含相应的文件”的明确警告,你需要做的是在配置文件中移除这些导致问题的配置行。之后你可以搜索和安装相似的模块来替代。 + +### 其他需要了解的小改变 ### + +这里还有一些其他的改变需要考虑,虽然这些通常只会发生警告,而不是错误。 + +- MaxClients重命名为MaxRequestWorkers,使之有更准确的描述。而异步MPM,如event,客户端最大连接数不等于工作线程数。旧的配置名依然支持。 +- DefaultType命令无效,使用它已经没有任何效果了。如果使用除了 none 之外的其它配置值,你会得到一个警告。需要使用其他配置设定来替代它。 +- EnableSendfile默认关闭 +- FileETag 现在默认为"MTime Size"(没有INode) +- KeepAlive 只接受“On”或“Off”值。之前的任何不是“Off”或者“0”的值都被认为是“On” +- 单一的 Mutex 已经替代了 Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex 和 WatchdogMutexPath 等指令。你需要做的是估计一下这些被替代的指令在2.2中的使用情况,来决定是否删除或者使用Mutex来替代。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/apache-migration-2-2-to-2-4-ubuntu-14-04/ + +作者:[Adrian Dinu][a] +译者:[Vic020/VicYu](http://vicyu.net) +校对:[Caroline](https://github.com/carolinewuyan) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/adriand/ +[1]:http://httpd.apache.org/docs/2.4/ diff --git a/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md deleted file mode 100644 index 49c465d17d..0000000000 --- a/translated/tech/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md +++ /dev/null @@ -1,56 +0,0 @@ -小贴士:在 Ubuntu 14.04 中Apache从2.2迁移到2.4的问题 -================================================================================ -如果你进行了一次**Ubuntu**从12.04到14.04的升级,那么它还包括了一个重大的升级--**Apache**从2.2版本升级到2.4版本。**Apache**的这次升级带来了许多性能提升,但是如果继续使用2.2的配置文件会导致很多错误。 - -### 访问控制的改变 ### - -从**Apache 2.4**起,授权(authorization)开始启用,比起2.2的一个检查一个数据存储,授权更加灵活。过去很难确定授权如何并且以什么样的顺序被应用,但是授权容器指令的介绍解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 - -这就是为什么大多数的升级失败是由于错误配置,2.2的访问控制基于IP地址,主机名和其他字符通过使用指令Order,来设置Allow, Deny或 Satisfy,但是2.4,这些一切被新模板授权(authorization)来替代检查。 - -为了弄清楚这些,可以来看一些虚拟主机的例子,这些可以在/etc/apache2/sites-enabled/default 或者 /etc/apache2/sites-enabled/你的网页名称 中找到: - -旧的2.2虚拟主机配置: - - Order allow,deny - Allow from all - -新的2.4虚拟主机配置: - - Require all granted - -![apache 2.4 config](http://blog.linoxide.com/wp-content/uploads/2014/12/apache-2.4-config.jpg) - -### .htaccess 问题 ### - -升级后如果一些设置不执行或者得到重定向错误,检查是否这些设置是在.htaccess文件中。如果是,2.4已经不再使用.htaccess文件,在2.4中默认使用AllowOverride指令来设置,因此忽略了.htaccess文件。你需要做的全部就是改变或者添加AllowOverride All命令到你的网站配置文件中。 - -上面截图中,可以看见AllowOverride All指令。 - -### 丢失配置文件或者模块 ### - -根据我的经验,这次升级带来的另一个问题就是在2.4中旧模块和配置文件不再需要或者不被支持了。你将会收到一条“Apache不能包含这个相应文件”的明确警告,你需要做的是在配置文件中移除这些导致问题的命令行。之后你可以搜索和安装相似的模块来替代。 - -### 其他需要了解的小改变 ### - -这里还有一些其他改变的需要考虑,虽然这些通常只会发生警告,而不是错误。 - -- MaxClients重命名为MaxRequestWorkers,使之有更准确的描述。而异步MPM,如event,客户端最大连接数不量比于工作线程数。旧的名字依然支持。 -- DefaultType命令无效,使用它已经没有任何效果了。需要使用其他配置设定来替代它 -- EnableSendfile默认关闭 -- FileETag 默认"MTime Size"(没有INode) -- KeepAlive 只接受“On”或“Off”值。之前的任何不是“Off”或者“0”的值都被认为是“On” -- Mutex 已经替代了 Directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex 和 WatchdogMutexPath 。你需要做的是估计一下这些被移动的指令在2.2中的使用情况,来决定是否删除或者使用Mutex来替代。 - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/apache-migration-2-2-to-2-4-ubuntu-14-04/ - -作者:[Adrian Dinu][a] -译者:[Vic020/VicYu](http://vicyu.net) -校对:[Caroline](https://github.com/carolinewuyan) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/adriand/ -[1]:http://httpd.apache.org/docs/2.4/ From 47d5a22435c6f31e41882a205dbc305a7f60c28a Mon Sep 17 00:00:00 2001 From: shipsw Date: Wed, 4 Feb 2015 08:59:28 +0800 Subject: [PATCH 190/725] Delete 20150104 Auditd--Tool for Security Auditing on Linux Server.md --- ...l for Security Auditing on Linux Server.md | 206 ------------------ 1 file changed, 206 deletions(-) delete mode 100644 sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md diff --git a/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md b/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md deleted file mode 100644 index e5b148a4df..0000000000 --- a/sources/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md +++ /dev/null @@ -1,206 +0,0 @@ -Translating by shipsw - - -Auditd - Tool for Security Auditing on Linux Server -================================================================================ -First of all , we wish all our readers **Happy & Prosperous New YEAR 2015** from our Linoxide team. So lets start this new year explaining about Auditd tool. - -Security is one of the main factor that we need to consider. We must maintain it because we don't want someone steal our data. Security includes many things. Audit, is one of it. - -On Linux system, we know that we have a tool named **auditd**. This tool is by default exist in most of Linux operating system. What is auditd tool and how to use it? We will cover it below. - -### What is auditd? ### - -Auditd or audit daemon, is a userspace component to the Linux Auditing System. It’s responsible for writing audit records to the disk. - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/what_is_auditd.png) - -### Installing auditd ### - -On Ubuntu based system , we can use [wajig][1] tool or **apt-get tool** to install auditd. - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/install_auditd.png) - -Just follow the instruction to get it done. Once it finish it will install some tools related to auditd tool. Here are the tools : - -- **auditctl ;** is a tool to control the behaviour of the daemon on the fly, adding rules, etc -- **/etc/audit/audit.rules ;** is the file that contains audit rules -- **aureport ;** is tool to generate and view the audit report -- **ausearch ;** is a tool to search various events -- **auditspd ;** is a tool which can be used to relay event notifications to other applications instead of writing them to disk in the audit log -- **autrace ;** is a command that can be used to trace a process -- **/etc/audit/auditd.conf ;** is the configuration file of auditd tool -- When the first time we install **auditd**, there will be no rules available yet. - -We can check it using this command : - - $ sudo auditctl -l - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_no_rules.png) - -To add rules on auditd, let’s continue to the section below. - -### How to use it ### - -#### Audit files and directories access #### - -One of the basic need for us to use an audit tool are, how can we know if someone change a file(s) or directories? Using auditd tool, we can do with those commands (please remember, we will need root privileges to configure auditd tool): - -**Audit files** - - $ sudo auditctl -w /etc/passwd -p rwxa - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_w_etc_passwd.png) - -**With :** - -- **-w path ;** this parameter will insert a watch for the file system object at path. On the example above, auditd will wacth /etc/passwd file -- **-p ; **this parameter describes the permission access type that a file system watch will trigger on -- **rwxa ;** are the attributes which bind to -p parameter above. r is read, w is write, x is execute and a is attribute - -#### Audit directories #### - -To audit directories, we will use a similar command. Let’s take a look at the command below : - - $ sudo auditctl -w /production/ - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_w_production.png) - -The above command will watch any access to the **/production folder**. - -Now, if we run **auditctl -l** command again, we will see that new rules are added. - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_rules.png) - -Now let’s see the audit log says. - -### Viewing the audit log ### - -After rules are added, now we can see how auditd in action. To view audit log, we can use **ausearch** tool. - -We already add rule to watch /etc/passwd file. Now we will try to use **ausearch** tool to view the audit log. - - $ sudo ausearch -f /etc/passwd - -- **-f** parameter told ausearch to investigate /etc/passwd file -- The result is shown below : -> **time**->Mon Dec 22 09:39:16 2014 -> type=PATH msg=audit(1419215956.471:194): item=0 **name="/etc/passwd"** inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL -> type=CWD msg=audit(1419215956.471:194): **cwd="/home/pungki"** -> type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 **syscall=5** success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 **auid=4294967295 uid=1000 gid=1000** euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 **comm="sudo" exe="/usr/bin/sudo"** key=(null) - - Now let’s we understand the result. - -- **time ;** is when the audit is done -- **name ;** is the object name to be audited -- **cwd ;** is the current directory -- **syscall ;** is related syscall -- **auid ;** is the audit user ID -- **uid and gid ;** are User ID and Group ID of the user who access the file -- **comm ;** is the command that the user is used to access the file -- **exe ;** is the location of the command of comm parameter above -- The above audit log is the original file. - - Next, we are going to add a new user, to see how the auditd record the activity to /etc/passwd file. - -> **time->**Mon Dec 22 11:25:23 2014 -> type=PATH msg=audit(1419222323.628:510): item=1 **name="/etc/passwd.lock"** inode=143992 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=DELETE -> type=PATH msg=audit(1419222323.628:510): item=0 **name="/etc/"** inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT -> type=CWD msg=audit(1419222323.628:510): **cwd="/root"** -> type=SYSCALL msg=audit(1419222323.628:510): arch=40000003 **syscall=10** success=yes exit=0 a0=bfc0ceec a1=0 a2=bfc0ceec a3=897764c items=2 ppid=2978 pid=2994 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="chfn" exe="/usr/bin/chfn"** key=(null) - -As we can see above, that on that particular time, **/etc/passwd was accessed** by user root (uid = 0 and gid = 0) **from** directory /root (cwd = /root). The /etc/passwd file was accessed using **chfn** command which located in **/usr/bin/chfn** - -If we type **man chfn** on the console, we will see more detail about what is chfn. - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/chfn.png) - -Now we take a look at another example. - -We already told auditd to watch directory /production/ . That is a new directory. So when we try to use ausearch tool at the first time, it found nothing. - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/ausearch_production_empty.png) - -Next, root account try to list the /production directory using ls command. The second time we use ausearch tool, it will show us some information. - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/ausearch_production_ls.png) - -> **time->**Mon Dec 22 14:18:28 2014 -> type=PATH msg=audit(1419232708.344:527): item=0 **name="/production/"** inode=797104 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL -> type=CWD msg=audit(1419232708.344:527): cwd="/root" -> type=SYSCALL msg=audit(1419232708.344:527): arch=40000003 syscall=295 success=yes exit=3 a0=ffffff9c a1=95761e8 a2=98800 a3=0 items=1 ppid=3033 pid=3444 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="ls" exe="/bin/ls"** key=(null) - -Similar with the previous one, we can determine that **/production folder was looked** by root account (uid=0 gid=0) **using ls command** (comm = ls) and the ls command is **located in /bin/ls folder**. - -### Viewing the audit reports ### - -Once we put the audit rules, it will run automatically. And after a period of time, we want to see how auditd can help us to track them. - -Auditd comes with another tool called **aureport**. As we can guess from its name, **aureport** is a tool that produces summary reports of the audit system log. - -We already told auditd to track /etc/passwd before. And a moment after the auditd parameter is developed, the audit.log file is created. - -To generate the report of audit, we can use aureport tool. Without any parameters, aureport will generate a summary report of audit activity. - - $ sudo aureport - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/aureport_2.png) - -As we can see, there are some information available which cover most important area. - -On the picture above we see there are **3 times failed authentication**. Using aureport, we can drill down to that information. - -We can use this command to look deeper on failed authentication : - - $ sudo aureport -au - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/aureport_authentication.png) - -As we can see on the picture above, there are two users which at the particular time are failed to authenticated - -If we want to see all events related to account modification, we can use -m parameter. - - $ sudo aureport -m - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/aureport_m.png) - -### Auditd configuration file ### - -Previously we already added : - -- $ sudo auditctl -w /etc/passwd -p rwxa -- $ sudo auditctl -w /production/ -- Now, if we sure the rules are OK, we can add it into - -**/etc/audit/audit.rules** to make them permanently.Here’s how to put them into the /etc/audit/audit.rules fileSample of audit rule file - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/audit_rules_file.png) - -**Then don’t forget to restart auditd daemon.** - - # /etc/init.d/auditd restart - -OR - - # service auditd restart - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/audit_restart.png) - -### Conclusion ### - -Auditd is one of the audit tool that available on Linux system. You can explore more detail about auditd and its related tools by reading its manual page. For example, just type **man auditd** to see more detail about auditd. Or type **man ausearch** to see more detail about ausearch tool. - -**Please be careful before creating rules**. It will increase your log file size significantly if too much information to record. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/how-tos/auditd-tool-security-auditing/ - -作者:[Pungki Arianto][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/pungki/ -[1]:http://linoxide.com/tools/wajig-package-management-debian/ From 51c43587463ce62ed1f66227022b4a757fe111f6 Mon Sep 17 00:00:00 2001 From: shipsw Date: Wed, 4 Feb 2015 09:15:26 +0800 Subject: [PATCH 191/725] Create 20150104 Auditd--Tool for Security Auditing on Linux Server.md --- ...l for Security Auditing on Linux Server.md | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md diff --git a/translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md b/translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md new file mode 100644 index 0000000000..1071e1521b --- /dev/null +++ b/translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md @@ -0,0 +1,200 @@ +Auditd - Linux 服务器安全审计工具 +================================================================================ +首先,Linoxide组祝读者 **2015新年快乐万事如意!** 。下面开始这个新年版审计工具的介绍。 + +安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要维护它。安全防护包括很多东西,审计是其中一个。 + +我们知道Linux系统上有一个叫 **auditd** 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。审计工具是什么?如何使用?下面我们开始介绍。 + +### 什么是审计? ### + +审计(或审计监控)是Linux审计系统中用户部分的一个组件,负责将审计记录写入磁盘。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/what_is_auditd.png) + +### 安装 auditd ### + +Ubuntu系统中,我们可以使用 [wajig][1] 工具或者 **apt-get 工具** 安装auditd。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/install_auditd.png) + +按照下面的说明安装auditd,安装完毕后将自动安装以下auditd和相关的工具: + +- **auditctl ;** 运行过程中控制守护进程的工具,比如如添加规则等等。 +- **/etc/audit/audit.rules ;** 记录审计规则的文件。 +- **aureport ;** 查看和生成审计报告的工具。 +- **ausearch ;** 查找审计事件的工具 +- **auditspd ;** 转发事件通知给其他应用程序,不写审计日志文件。 +- **autrace ;** 跟踪处理过程的命令。 +- **/etc/audit/auditd.conf ;** auditd工具的配置文件。 +- 首次安装 **auditd** 后, 审计规则是空的。 + +可以使用以下命令查看 + + $ sudo auditctl -l + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_no_rules.png) + +以下我们介绍如何给auditd添加审计规则。 + +### 如何使用auditd ### + +#### Audit 文件和目录访问审计 #### + +我们使用审计工具的一个目的是监控文件和目录的更改。对于auditd工具,我们可使用命令来配置(注意,以下命令需要root权限)。 + +**文件审计** + + $ sudo auditctl -w /etc/passwd -p rwxa + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_w_etc_passwd.png) + +**选项 :** + +- **-w path ;** 监控指定的路径,上面的命令指定监控路径 /etc/passwd +- **-p ; ** 指定触发审计的文件和目录的访问权限 +- **rwxa ;** 指定的触发条件,r 读取权限,w 写入权限,x 执行权限 + +#### 目录审计 #### + +使用类似的命令来对目录进行审计,如下: + + $ sudo auditctl -w /production/ + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_w_production.png) + +以上命令将监控对 **/production 目录** 的所有访问。 + +现在,运行 **auditctl -l** 命令即可查看所有已配置的规则。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/auditctl_rules.png) + +下面开始介绍审计日志。 + +### 查看审计日志 ### + +添加规则后,我们可以查看 auditd 的日志。使用 **ausearch** 工具可以查看auditd日志。 + +我们已经添加规则监控 /etc/passwd 文件。现在可以使用 **ausearch** 工具的以下命令来查看审计日志了。 + + $ sudo ausearch -f /etc/passwd + +- **-f** 设定ausearch审计/etc/passwd文件 +- 下面是输出 : +> **time**->Mon Dec 22 09:39:16 2014 +> type=PATH msg=audit(1419215956.471:194): item=0 **name="/etc/passwd"** inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL +> type=CWD msg=audit(1419215956.471:194): **cwd="/home/pungki"** +> type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 **syscall=5** success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 **auid=4294967295 uid=1000 gid=1000** euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 **comm="sudo" exe="/usr/bin/sudo"** key=(null) + + 下面开始解读输出结果。 + +- **time ;** 审计时间。 +- **name ;** 审计对象 +- **cwd ;** 当前路径 +- **syscall ;** 相关的系统调用 +- **auid ;** 审计用户ID +- **uid and gid ;** 访问文件的用户ID和用户组ID +- **comm ;** 用户访问文件的命令 +- **exe ;** 上面命令的可执行文件路径 +- 以上审计日志显示文件未被改动。 + + 以下我们将要添加一个用户,看看auditd如何记录文件 /etc/passwd的改动的。 + +> **time->**Mon Dec 22 11:25:23 2014 +> type=PATH msg=audit(1419222323.628:510): item=1 **name="/etc/passwd.lock"** inode=143992 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=DELETE +> type=PATH msg=audit(1419222323.628:510): item=0 **name="/etc/"** inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT +> type=CWD msg=audit(1419222323.628:510): **cwd="/root"** +> type=SYSCALL msg=audit(1419222323.628:510): arch=40000003 **syscall=10** success=yes exit=0 a0=bfc0ceec a1=0 a2=bfc0ceec a3=897764c items=2 ppid=2978 pid=2994 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="chfn" exe="/usr/bin/chfn"** key=(null) + +我们可以看到,在指定的时间,**/etc/passwd ** 被root用户(uid =0, gid=0)在/root目录下修改。/etc/passwd 文件是使用**/usr/bin/chfn** 访问的。 + +键入 **man chfn** 可以查看有关chfn更多的信息。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/chfn.png) + +下面我们看另外一个例子。 + +我们已经配置auditd去监控目录 /production/ 了。这是个新目录。所以我们用ausearch去查看日志的时候会发现什么都没有。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/ausearch_production_empty.png) + +下一步,使用root账户的ls命令列出 /production/ 下的文件信息。再次使用ausearch后,将会显示一些信息。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/ausearch_production_ls.png) + +> **time->**Mon Dec 22 14:18:28 2014 +> type=PATH msg=audit(1419232708.344:527): item=0 **name="/production/"** inode=797104 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL +> type=CWD msg=audit(1419232708.344:527): cwd="/root" +> type=SYSCALL msg=audit(1419232708.344:527): arch=40000003 syscall=295 success=yes exit=3 a0=ffffff9c a1=95761e8 a2=98800 a3=0 items=1 ppid=3033 pid=3444 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="ls" exe="/bin/ls"** key=(null) + +和上一个一样,可以得出root账户使用ls命令访问了/production/目录,ls命令的文件目录是 /bin/ls + +### 查看审计报告 ### + +一旦定义审计规则后,它会自动运行。过一段时间后,我们可以看看auditd是如何帮我们跟踪审计的。 + +Auditd提供了另一个工具叫 **aureport** 。从名字上可以猜到, **aureport** 是使用系统日志生成简要报告的工具。 + +我们已经配置auditd去跟踪/etc/passwd文件。auditd参数设置后一段时间后,audit.log 文件就创建出来了。 + +生成审计报告,我们可以使用aureport工具。不带参数运行的话,可以生成审计活动的概述。 + + $ sudo aureport + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/aureport_2.png) + +如上,报告包含了大多数重要区域的信息。 + +上图可以看出有 **3 次授权失败**。 使用aureport,我们可以深入查看这些信息。 + +使用以下命令查看授权失败的详细信息: + + $ sudo aureport -au + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/aureport_authentication.png) + +从上图可以看出,由两个用户在特定的时间授权失败。 + +如果我们想看所有相关账户修改的事件,可以使用-m参数。 + + $ sudo aureport -m + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/aureport_m.png) + +### Auditd 配置文件 ### + +我们已经添加如下规则: + +- $ sudo auditctl -w /production/ +- 现在,如果确信这些规则正常,我们可以将其添加到**/etc/audit/audit.rules**中使得规则永久有效。以下介绍如何将他们添加到/etc/audit/audit.rules中去。 + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/audit_rules_file.png) + +**最后,别忘了重启auditd守护程序** + + # /etc/init.d/auditd restart + +或 + + # service auditd restart + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/audit_restart.png) + +### 总结 ### + +Auditd是Linux上的一个审计工具。你可以阅读auidtd文档获取更多使用auditd和工具的细节。例如,输入 **man auditd** 去看auditd的详细说明,或者键入 **man ausearch** 去看有关 ausearch 工具的详细说明。 + +**请谨慎创建规则**。太多规则会使得日志文件急剧增大! + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/how-tos/auditd-tool-security-auditing/ + +作者:[Pungki Arianto][a] +译者:[shipsw](https://github.com/shipsw) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/pungki/ +[1]:http://linoxide.com/tools/wajig-package-management-debian/ From fadaf3a224a960fc4b704883d5021a49eddaf503 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 4 Feb 2015 11:16:36 +0800 Subject: [PATCH 192/725] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E7=9A=84=E8=AF=91=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ps for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md index c18c9ed4f7..0ed031e342 100644 --- a/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md +++ b/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md @@ -1,10 +1,10 @@ 在 Ubuntu 14.04 中Apache从2.2迁移到2.4的问题 ================================================================================ -如果你将**Ubuntu**从12.04升级跨越到了14.04的,那么这其中包括了一个重大的升级--**Apache**从2.2版本升级到2.4版本。**Apache**的这次升级带来了许多性能提升,**但是如果继续使用2.2的配置文件会导致很多错误**。 +如果你将**Ubuntu**从12.04升级跨越到了14.04,那么这其中包括了一个重大的升级--**Apache**从2.2版本升级到2.4版本。**Apache**的这次升级带来了许多性能提升,**但是如果继续使用2.2的配置文件会导致很多错误**。 ### 访问控制的改变 ### -从**Apache 2.4**起所启用授权机制比起2.2的只是针对单一数据存储的单一检查更加灵活。过去很难确定哪个 order 授权怎样被使用的,但是授权容器指令的引入解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 +从**Apache 2.4**起,所启用的授权机制比起2.2的只是针对单一数据存储的单一检查更加灵活。过去很难确定哪个 order 授权怎样被使用的,但是授权容器指令的引入解决了这些问题,现在,配置可以控制什么时候授权方法被调用,什么条件决定何时授权访问。 这就是为什么大多数的升级失败是由于配置错误的原因。2.2的访问控制是基于IP地址、主机名和其他角色,通过使用指令Order,来设置Allow, Deny或 Satisfy;但是2.4,这些一切都通过新的授权方式进行检查。 From 8524e0740ef94f642413bac77f79d0548f60e2ef Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 4 Feb 2015 12:33:57 +0800 Subject: [PATCH 193/725] PUB:20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon @zpl1025 --- ....04 to Integrate Linux Kernel 3.19 Branch Soon.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rename {translated/news => published}/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md (63%) diff --git a/translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md b/published/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md similarity index 63% rename from translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md rename to published/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md index 5ff335214f..7fff32e713 100644 --- a/translated/news/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md +++ b/published/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md @@ -1,22 +1,22 @@ Ubuntu 15.04即将整合Linux内核3.19分支 ---- -*Ubuntu已经开始跟踪一个新的内核分支* +*Ubuntu已经开始整合一个新的内核分支* ![Ubuntu 15.04 shortcuts](http://i1-news.softpedia-static.com/images/news2/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121-2.jpg) -#Linux内核是一个发行版中最重要的组成部分,Ubuntu用户很想知道哪个版本将用于15.04分支的稳定版中,预计几个月后就会发布。 +Linux内核是一个发行版中最重要的组成部分,Ubuntu用户很想知道哪个版本将用于预计几个月后就会发布的15.04分支的稳定版中。 Ubuntu和Linux内核开发周期并不同步,所以很难预测最终哪个版本将应用在Ubuntu 15.04中。目前,Ubuntu 15.04(长尾黑颚猴)使用的是Linux内核3.18,但是开发者们已经准备应用3.19分支了。 -“我们的Vivid内核仍然基于v3.18.2的稳定内核上游,但是我们很快将基础变更到v3.18.3。我们也将把我们的非稳定版分支的基础变更到v3.19-rc5,然后上传到我们的团队PPA。”Canonical的Joseph Salisbury[说](1)。 +“我们的Vivid的内核仍然基于v3.18.2的上游稳定内核,但是我们很快将重新基于v3.18.3内核开发。我们也将把我们的非稳定版分支的基础变更到v3.19-rc5,然后上传到我们的团队PPA。”Canonical的Joseph Salisbury[说](1)。 -Linux内核3.19仍然处于开发阶段,预计还要几个星期才会出稳定版本,但是有充足的时间将它加入到Ubuntu中并测试。不可能等到3.20分支了,举个例子,即使它能在4月23日前发布。 +Linux内核3.19仍然处于开发阶段,预计还要几个星期才会出稳定版本,但是有充足的时间将它加入到Ubuntu中并测试。但是不可能等到3.20分支了,举个例子,即使它能在4月23日前发布。 你现在就可以从Softpedia[下载Ubuntu 15.04](2),试用一下。这是一个每日构建版本,会包含发行版中目前已经做出的所有改善。 -------------------------------------------------------------------------------- -via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-Website-471179.shtml +via:http://linux.softpedia.com/blog/Ubuntu-15-04-to-Integrate-Linux-Kernel-3-19-Branch-Soon-471121.shtml 本文发布时间:25 Jan 2015, 20:39 GMT @@ -24,7 +24,7 @@ via:http://news.softpedia.com/news/Data-of-20-Million-Users-Stolen-from-Dating-W 译者:[zpl1025](https://github.com/zpl1025) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From fdea0c3a90a0a999fffa1933981bf06887719a05 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 4 Feb 2015 12:40:06 +0800 Subject: [PATCH 194/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ns From The Terminal In Background Mode.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/share/20150115 How To Run Linux Applications From The Terminal In Background Mode.md b/translated/share/20150115 How To Run Linux Applications From The Terminal In Background Mode.md index b0f4731e18..9c6f853a30 100644 --- a/translated/share/20150115 How To Run Linux Applications From The Terminal In Background Mode.md +++ b/translated/share/20150115 How To Run Linux Applications From The Terminal In Background Mode.md @@ -5,7 +5,7 @@ 这是一个篇幅不长但是十分有用的教程,可以帮助你在终端启动一个Linux应用程序,并且使终端窗口不会丢失焦点。 -我们有很多方法可以在Linux系统中打开一个终端窗口,这取决与你的选择以及你的桌面环境。 +我们有很多可以在Linux系统中打开一个终端窗口的方法,这取决于你的选择以及你的桌面环境。 如果是使用Ubuntu的话,你可以利用CTRL+ALT+T组合键打开终端。当然你也可以使用超级键(Windows键)[打开Dash][1],搜索“TERM”,然后点击“Term”图标来打开终端窗口。 @@ -19,13 +19,13 @@ firefox -search "linux.cn" -你可能会注意到,当你启动Firefox的时候,如果程序打开以后,焦点重新会到终端窗口的话,你就可以继续在终端进行工作。 +你可能会注意到,如果你启动Firefox,程序打开以后,回到了终端窗口控制,这就意味着你可以继续在终端进行工作。 -通常情况下,如果你在终端启动了应用程序,焦点会切换到新启动的应用程序,只有程序被关闭以后焦点才会重新切换到终端。这是因为你在前台启动了这个程序。 +通常情况下,如果你在终端启动了应用程序,控制会切换到新启动的应用程序,只有程序被关闭以后才会重新切换到终端控制。这是因为你在前台启动了这个程序。 -如果要实现焦点仍然保持在终端窗口的目的,那么你需要将应用程序启动为后台进程。 +如果要在Linux终端打开应用程序并且返回终端控制,那么你需要将应用程序启动为后台进程。 -向下面所列的命令一样,我们可以通过增加一个(&)符号,将应用程序在后台启动。 +和下面所列的命令一样,我们可以通过增加一个(&)符号,将应用程序在后台启动。 libreoffice & @@ -61,15 +61,15 @@ sudo find / -name firefox | more -如果你知道你要查找的文件在你的当前目录及其子目录中,那么你可以使用点来代替斜杠: +如果你知道你要查找的文件在你的当前目录结构中,那么你可以使用点来代替斜杠: sudo find . -name firefox | more -你可能需要sudo来提升权限,也可能根本就不需要,如果这个文件在你的跟目录里面,那么就不需要使用sudo。 +你可能需要sudo来提升权限,也可能根本就不需要,如果这个文件在你的主目录里面,那么就不需要使用sudo。 -有些应用程序则必须要提升权限才能运行,否则你就会得到一大堆拒绝访问错误,除非你使用一个具有权限的用户,或者使用sudo提升权限。 +有些应用程序则必须要提升权限才能运行,否则你就会得到一大堆拒绝访问错误,除非你使用一个具有权限的用户或者使用sudo提升权限。 -这里有个小窍门。如果你运行了一个程序,但是它报了权限错误以后,输入下面命令试试: +这里有个小窍门。如果你运行了一个程序,但是它需要提升权限来操作,输入下面命令试试: sudo !! @@ -77,7 +77,7 @@ via : http://linux.about.com/od/commands/fl/How-To-Run-Linux-Programs-From-The-T 作者:[Gary Newell][a] 译者:[zhouj-sh](https://github.com/zhouj-sh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -87,4 +87,4 @@ via : http://linux.about.com/od/commands/fl/How-To-Run-Linux-Programs-From-The-T [3]:http://linux.about.com/od/commands/l/blcmdl1_locate.htm [4]:http://linux.about.com/library/cmd/blcmdl1_less.htm [5]:http://linux.about.com/library/cmd/blcmdl1_more.htm -[6]:http://linux.about.com/od/commands/l/blcmdl8_sudo.htm \ No newline at end of file +[6]:http://linux.about.com/od/commands/l/blcmdl8_sudo.htm From b750943b93ead4cba0ec45dc165c0d56c81b524b Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 4 Feb 2015 12:42:04 +0800 Subject: [PATCH 195/725] PUB:20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service @zpl1025 --- ...Implementation Causes Denial of Service.md | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) rename {translated/news => published}/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md (59%) diff --git a/translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md b/published/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md similarity index 59% rename from translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md rename to published/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md index fa3139f2dc..2b1b9d6631 100644 --- a/translated/news/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md +++ b/published/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md @@ -1,36 +1,36 @@ -Wi-Fi直连的Android实现中的Bug导致拒绝服务 +Android 中的 Wi-Fi 直连方式的 Bug 会导致拒绝服务 ---- + *Google标记这个问题为低严重性,并不急着修复* ![Wi-Fi Direct glitch crashes Android](http://i1-news.softpedia-static.com/images/news2/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299-2.jpg) -#Android处理Wi-Fi直连连接的方式中的一个漏洞会导致在搜索连接节点的时候设备重启,这个节点可能是其他手机,摄像头,游戏设备,电脑或是打印机等任何设备。 +Android处理Wi-Fi直连连接的方式中的一个漏洞可以导致在搜索连接节点的时候所连接的设备重启,这个节点可能是其他手机,摄像头,游戏设备,电脑或是打印机等任何设备。 Wi-Fi直连技术允许无线设备之间直接建立通信,而不用加入到本地网络中。 -##安全公司致力于协调修复这个问题 +###安全公司致力于协调修复这个问题 这个漏洞允许攻击者发送一个特定的修改过的802.11侦测响应帧给设备,从而因为WiFi监控类中的一个未处理的异常导致设备重启。 -Core Security通过自己的CoreLabs团队发现了这个下次(CVE-2014-0997),早在2014年9月就汇报给了Google。这家供应商确认了这个问题,却把它列为低严重性,并不提供修复时间表。 +Core Security通过自己的CoreLabs团队发现了这个瑕疵(CVE-2014-0997),早在2014年9月就汇报给了Google。Google确认了这个问题,却把它列为低严重性,并不提供修复时间表。 -每次Core Security联系Android安全组要求提供修复时间表的时候都会收到同样的答复。最后一次答复是1月20日,意味着这么段时间中都没有补丁。在星期一的时候,这家安全公司公布了他们的发现。 +每次Core Security联系Android安全组要求提供修复时间表的时候都会收到同样的答复。最后一次答复是1月20日,意味着这么长的时间中都没有补丁。在星期一的时候,这家安全公司公布了他们的发现。 -这家安全公司建立了一个(概念证明)[1]来展示他们研究结果的有效性。 +这家安全公司建立了一个[概念攻击][1]来展示他们研究结果的有效性。 根据这个漏洞的技术细节,一些Android设备在收到一个错误的wpa_supplicant事件后可能会进入拒绝服务状态,这些事件让无线驱动和Android平台框架之间的接口有效。 -##Google并不着急结束这个问题 +###Google并不着急解决这个问题 -Android安全组对于这个问题的放松态度可能是基于这个原因,这种拒绝服务状态只发生在扫描节点这一小段时间。 +Android安全组对于这个问题的放松态度可能是基于这个原因:这种拒绝服务状态只发生在扫描节点这一小段时间。 -不仅如此,实际上结果也并不严重,因为它会导致设备重启。不存在数据泄漏的风险或是能引起这个问题的攻击,不会吸引攻击者。另一方面,不管怎样都应该提供一个补丁,以减轻任何未来的潜在风险。 +不仅如此,实际上结果也并不严重,因为它会导致设备重启。不存在数据泄漏的风险或是能引起这个问题的攻击,不会吸引攻击者。但另一方面,不管怎样都应该提供一个补丁,以减轻任何未来的潜在风险。 -Core Security声称在Android 5.0.1及以上版本中没有测试到这个问题,他们发现的受影响的设备有运行移动操作系统版本4.4.4的Nexus 5和4,运行Android 4.2.2的LG D806和Samsung SM-T310,以及4.1.2版本系统的Motorola RAZR HD。 +Core Security声称在Android 5.0.1及以上版本中没有测试到这个问题,他们发现的受影响的设备有Android系统4.4.4的Nexus 5和4,运行Android 4.2.2的LG D806和Samsung SM-T310,以及4.1.2版本系统的Motorola RAZR HD。 目前,减轻影响的方式是尽量不用Wi-Fi直连,或者升级到没有漏洞的Android版本。 - -------------------------------------------------------------------------------- via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Causes-Denial-of-Service-471299.shtml @@ -38,10 +38,8 @@ via:http://news.softpedia.com/news/Bug-In-Wi-Fi-Direct-Android-Implementation-Ca 本文发布时间:27 Jan 2015, 09:11 GMT 作者:[Ionut Ilascu][a] - 译者:[zpl1025](https://github.com/zpl1025) - -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7f7fb21b22bedb17f371117e7188dd2b557d1c5c Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 4 Feb 2015 16:28:40 +0800 Subject: [PATCH 196/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...as a Stylish Interface Ubuntu Installation.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md b/translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md index ccd9a474d5..9cb0a3765d 100644 --- a/translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md +++ b/translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md @@ -1,12 +1,10 @@ -Translated by H-mudcup - -Flow 'N Play视频播放器有着独具风格的界面【Ubuntu上的安装】 +Flow 'N Play视频播放器有着独具风格的界面[在Ubuntu上安装] ================================================================================ -**Flow ‘N Play**是个用Qt编写的新视频播放器。它有着漂亮又简洁的只提供基本播放功能的界面。 +**Flow ‘N Play**是个用Qt编写的新视频播放器。它有着漂亮又简洁的界面,只提供基本播放功能。 ![](http://www.tuxarena.com/wp-content/uploads/2014/11/flow_n_play.jpg) -[Flow ‘N Play][1]是个比较新的有着漂亮的界面和简单操作的视频播放器(今年三月份第一次发行)。其中一个功能就是能通过拖动鼠标滑动视频列表。播放器带有基本功能,一个搜索功能,支持彩色主题。 +[Flow ‘N Play][1]是个比较新的视频播放器,它有着漂亮的界面和简单的操作(今年三月份第一次发行)。其中一个功能就是能通过拖动鼠标滑动视频列表。播放器带有基本功能,一个搜索功能,支持彩色主题。 打开一个新的视频——你还可以在同一个对话框下自定义一个封面: @@ -18,7 +16,7 @@ Flow 'N Play视频播放器有着独具风格的界面【Ubuntu上的安装】 Flow ‘N Play仍然处在早起开发中,因此相对于更高级的播放器它有一些瑕疵。可以设置的选项少,不支持加载字幕或视频和声音的过滤器。目前,在打开一个新的视频时偶尔会出错或是表现异常。 -我相信在它变得能替代其他播放器之前,会先添加几个功能。但从长远来看,Flow ‘N Play很有前途。 +我相信在它变成一款相当不错的播放器来替代其他播放器之前,还需要再添加几个功能。但从长远来看,Flow ‘N Play很有前途。 ### 在Ubuntu 14.04上安装Flow ‘N Play 0.922 ### @@ -28,11 +26,11 @@ Flow ‘N Play仍然处在早起开发中,因此相对于更高级的播放器 sudo apt-get install libqt5multimediaquick-p5 qtdeclarative5-controls-plugin qtdeclarative5 qtmultimedia-plugin qtdeclarative5-qtquick2-plugin qtdeclarative5-quicklayouts-plugin -Then download the DEB package and either double click it or change the working directory to the one where you saved it and type the following in a terminal (for 64-bit, replace the DEB file for 32-bit)然后下载DEB安装包,可以双击或在终端里把正操作的目录换到你保存安装包的目录下并输入以下命令(这个是64位的命令,对于32位的系统请将DEB文件换成32位的): +然后下载DEB安装包,可以双击或在终端里把正操作的目录换到你保存安装包的目录下并输入以下命令(这个是64位的命令,对于32位的系统请将DEB文件换成32位的): sudo dpkg -i flow-n-play_v0.926_qt-5.3.2_x64.deb -然后在终端里输入**flow-n-play**来运行它。注意:为防止产生依赖项错误,当你试图安装DEB问件事你可以运行**sudo apt-get -f install**,这样可以自动获取丢失的依赖项并安装Flow ‘N Play。 +然后在终端里输入**flow-n-play**来运行它。注意:为防止产生依赖项错误,当你试图安装DEB文件时,你可以运行**sudo apt-get -f install**,这样可以自动获取丢失的依赖项并安装Flow ‘N Play。 若用RUN脚本安装,先安装上边提到的依赖项,然后运行这个脚本: @@ -49,7 +47,7 @@ via: http://www.tuxarena.com/2014/11/flow-n-play-movie-player-has-a-stylish-inte 作者:Craciun Dan 译者:[H-mudcup](https://github.com/H-mudcup) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 44546493c726db07adff32d6cb4735d11923a296 Mon Sep 17 00:00:00 2001 From: shipsw Date: Wed, 4 Feb 2015 16:49:43 +0800 Subject: [PATCH 197/725] 20140821 What is a good EPUB reader on Linux.md 20140821 What is a good EPUB reader on Linux.md --- sources/share/20140821 What is a good EPUB reader on Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/share/20140821 What is a good EPUB reader on Linux.md b/sources/share/20140821 What is a good EPUB reader on Linux.md index 7e1958256b..71a97240e4 100644 --- a/sources/share/20140821 What is a good EPUB reader on Linux.md +++ b/sources/share/20140821 What is a good EPUB reader on Linux.md @@ -1,3 +1,4 @@ +Translating by shipsw What is a good EPUB reader on Linux ================================================================================ If the habit on reading books on electronic tablets is still on its way, reading books on a computer is even rarer. It is hard enough to focus on the classics of the 16th century literature, so who needs the Facebook chat pop up sound in the background in addition? But if for some reasons you wish to open an electronic book in your computer, chances are that you will need specific software. Indeed, most editors agreed with using the EPUB format for electronic books (for "Electronic PUBlication"). Hopefully, Linux is not deprived of good programs capable of dealing with such format. In short, here is a non-exhaustive list of good EPUB readers on Linux. @@ -63,4 +64,4 @@ via: http://xmodulo.com/2014/08/good-epub-reader-linux.html [4]:https://github.com/sakisds/pPub [5]:http://crengine.sourceforge.net/ [6]:https://github.com/rupa/epub -[7]:https://github.com/user-none/Sigil \ No newline at end of file +[7]:https://github.com/user-none/Sigil From cadf47439204344622798267aec2730726394793 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 4 Feb 2015 17:17:33 +0800 Subject: [PATCH 198/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150125 4 Best Modern Open Source Code Editors For Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150125 4 Best Modern Open Source Code Editors For Linux.md (100%) diff --git a/translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md b/published/20150125 4 Best Modern Open Source Code Editors For Linux.md similarity index 100% rename from translated/share/20150125 4 Best Modern Open Source Code Editors For Linux.md rename to published/20150125 4 Best Modern Open Source Code Editors For Linux.md From 61574948a18c505f9e5a8c35e2d102c34dce6854 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Wed, 4 Feb 2015 20:41:17 +0800 Subject: [PATCH 199/725] =?UTF-8?q?=E8=AF=B7=E5=9C=B0=E4=B8=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...profile could not be opened correctly' on Google Chrome.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md index 0608359029..8d5c4b02ca 100644 --- a/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md +++ b/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md @@ -1,3 +1,5 @@ +> Vic + Linux FAQs with Answers--How to fix “Your profile could not be opened correctly” on Google Chrome ================================================================================ > **Question**: When I open Google Chrome web browser on my Linux box, I have several pop-up messages saying "Your profile could not be opened correctly." This error happens every time I open Google Chrome. How can I solve this error? @@ -47,4 +49,4 @@ via: http://ask.xmodulo.com/your-profile-could-not-be-opened-correctly-google-ch 译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From b4fdde6dc3c88e70b1fb959b4246d92d08c41ab5 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 4 Feb 2015 20:50:47 +0800 Subject: [PATCH 200/725] translating --- ...inux-dash Web Based Monitoring System In CentOS or RHEL.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md b/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md index 51983921f6..95543f31dc 100644 --- a/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md +++ b/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md @@ -1,3 +1,5 @@ +Translating----geekpi + How To Install Linux-dash Web Based Monitoring System In CentOS/RHEL ================================================================================ **Linux-dash** is a web-based lightweight monitoring dashboard for Linux machines. This application will display real-time, various system properties, such as CPU load, RAM usage, disk usage, Internet speed, network connections, RX/TX bandwidth, logged-in users, running processes etc. It will not store long term statistics, Thus it doesn’t have a backend database. @@ -108,4 +110,4 @@ via: http://www.unixmen.com/install-linux-dash-web-based-monitoring-system-cento 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.unixmen.com/author/jijo/ -[1]:http://www.unixmen.com/install-epel-repository-centos-rhel-7/ \ No newline at end of file +[1]:http://www.unixmen.com/install-epel-repository-centos-rhel-7/ From d8d0cbe018d60540ffcec578149754592a22f816 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 4 Feb 2015 21:19:51 +0800 Subject: [PATCH 201/725] translated --- ...sed Monitoring System In CentOS or RHEL.md | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) rename {sources => translated}/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md (53%) diff --git a/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md b/translated/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md similarity index 53% rename from sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md rename to translated/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md index 95543f31dc..2c83a1b808 100644 --- a/sources/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md +++ b/translated/tech/20150203 How To Install Linux-dash Web Based Monitoring System In CentOS or RHEL.md @@ -1,24 +1,22 @@ -Translating----geekpi - -How To Install Linux-dash Web Based Monitoring System In CentOS/RHEL +如何在CentOS/RHEL中安装机遇Web监控的Linux-dash ================================================================================ -**Linux-dash** is a web-based lightweight monitoring dashboard for Linux machines. This application will display real-time, various system properties, such as CPU load, RAM usage, disk usage, Internet speed, network connections, RX/TX bandwidth, logged-in users, running processes etc. It will not store long term statistics, Thus it doesn’t have a backend database. +**Linux-dash**是一款为Linux设计的基于web的轻量级监控面板。这个程序会显示实时时间、不同的系统属性,比如CPU负载、RAM使用率、磁盘使用率、网速、网络连接、RX/TX带宽、登录用户、运行的进程等等。它不会存储长期的统计。因为它没有后端数据库。 -In this article i will show you how to install and setup Linux dash, Here my web server is **Nginx**. +本篇文章将会向你展示如何安装和设置Linux dash,这里的web服务器是**Nginx**. -### Installation ### +### 安装 ### -First of all we should enable, [EPEL repository][1]. +首先我们要启用[EPEL 仓库][1]。 -**Next, we need to install nginx with the following command.** +**接下来,我们需要用下面的命令安装nginx。** sudo yum install nginx -**Install php-fpm component** +**安装 php-fpm 组件** sudo yum install git php-common php-fpm -Now, we have to configure nginx for Linux-dash. So create /etc/nginx/conf.d/linuxdash.conf as follows. +现在我们要在nginx中配置Linux-dash。我们如下创建 /etc/nginx/conf.d/linuxdash.conf。 sudo vim /etc/nginx/conf.d/linuxdash.conf @@ -57,11 +55,11 @@ Now, we have to configure nginx for Linux-dash. So create /etc/nginx/conf.d/linu } } -**Next job is to configure php-fpm. Open /etc/php-fpm.d/www.conf in your Favorite editor.** +**下一步是配置php-fpm。用编辑器打开/etc/php-fpm.d/www.conf。** sudo vim /etc/php-fpm.d/www.conf -**Make sure to set “listen”, “user” and “group” fields as below. You can leave the rest of the configuration unchanged.** +**确保设置了“listn”,“user”和“group”字段。你可以保留下面的配置不变。** . . . listen = /var/run/php-fpm.sock @@ -69,42 +67,43 @@ Now, we have to configure nginx for Linux-dash. So create /etc/nginx/conf.d/linu group = nginx . . . -**Now, We are going to Download and install linux-dash under /var/www** +**现在,我们要在/var/www中下载并安装linux-dash。** git clone https://github.com/afaqurk/linux-dash.git sudo cp -r linux-dash/ /var/www/ sudo chown -R nginx:nginx /var/www -**Next, restart Nginx web server as well as** php-fpm +**接下来,重启 Nginx和php-fpm** sudo service nginx restart sudo service php-fpm restart -**Set nginx and php-fpm to auto-start upon boot** +**设置nginx和php-fpm开机自动启动** sudo chkconfig nginx on sudo chkconfig php-fpm on -In this example, we have configured linux-dash to use TCP port 8080. So make sure that the firewall is not blocking TCP port 8080. +在本例中,我们使用TCP端口8080配置linux-dash。因此确保防火墙没有阻止8080 TCP端口。 -### Monitor a Linux server with linux-dash ### +### 用linux-dash监控Linux服务器 ### -You can access Linux-dash by pointing you browser to **http://:8080/linux-dash/** +你现在可以在浏览器中输入**http://:8080/linux-dash/**来访问Linux-dash。 -The web dashboard consists of several widgets, each of which displays particular system properties. You can customize the look of the web dashboard by rearranging and/or closing some of the widgets. +web面板包含了不同的组件,每个都显示独特的系统属性。你可以自定义web面板的外观也可以关闭一些组件。 ![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Lin-dash.png) -Good day! +美好的一天! -See you guys with next article. + +下篇文章中再见。 -------------------------------------------------------------------------------- via: http://www.unixmen.com/install-linux-dash-web-based-monitoring-system-centosrhel/ 作者:[Jijo][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From f81e09949a951441c6539b8b051cb0ea4ba99d55 Mon Sep 17 00:00:00 2001 From: alim0x Date: Wed, 4 Feb 2015 23:46:04 +0800 Subject: [PATCH 202/725] [translating]14 - the history of Android --- .../The history of Android/14 - The history of Android.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/talk/The history of Android/14 - The history of Android.md b/sources/talk/The history of Android/14 - The history of Android.md index 2825d7eee8..3377527026 100644 --- a/sources/talk/The history of Android/14 - The history of Android.md +++ b/sources/talk/The history of Android/14 - The history of Android.md @@ -1,3 +1,5 @@ +alim0x translating + The history of Android ================================================================================ ### Voice Actions—a supercomputer in your pocket ### @@ -79,4 +81,4 @@ via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-histor [5]:http://arstechnica.com/gadgets/2013/12/google-robots-former-android-chief-will-lead-google-robotics-division/ [6]:http://arstechnica.com/gadgets/2013/12/lg-g-flex-review-form-over-even-basic-function/ [a]:http://arstechnica.com/author/ronamadeo -[t]:https://twitter.com/RonAmadeo \ No newline at end of file +[t]:https://twitter.com/RonAmadeo From 012b1048e24b044b86f7481bf05658b5e07dbd25 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Thu, 5 Feb 2015 10:30:55 +0800 Subject: [PATCH 203/725] =?UTF-8?q?20150205-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rth of Devuan GNU or Linux Distribution.md | 98 +++++++++++++++++++ ...Smartphones Like Weather Conky In Linux.md | 84 ++++++++++++++++ ...rs--How to install Go language on Linux.md | 96 ++++++++++++++++++ 3 files changed, 278 insertions(+) create mode 100644 sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md create mode 100644 sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md create mode 100644 sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md diff --git a/sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md b/sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md new file mode 100644 index 0000000000..89299a55d5 --- /dev/null +++ b/sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md @@ -0,0 +1,98 @@ +Debian Forked over systemd: Birth of Devuan GNU/Linux Distribution +================================================================================ +Debian GNU/Linux distribution is one of the oldest Linux distribution that is currently in working state. init used to be the default central management and configuration platform for Linux operating system before systemd emerged. Systemd from the date of its release has been very much controversial. + +Sooner or later it has replaced init on most of the Linux distribution. Debian remained no exception and Debian 8 codename JESSIE will be having systemd by default. The Debian adaptation of systemd in replacement of init caused polarization. This led to forking of Debian and hence Devuan GNU/Linux distribution born. + +Devuan project started with the primary goal to put back nit and remove controversial systemd. A lot of Linux Distribution are based on Debian or a derivative of Debian and one does not simply fork Debian. Debian will always attract developers. + +### What Devuan is all About? ### + +Devuan in Italian (pronounced Devone in English) suggests “Don’t panic and keep forking Debian”, for Init-Freedom lovers. Developers see Devuan as the beginning of a process which aims at base distribution and is able to protect the freedom of developers and community. + +![Devuan Linux](http://www.tecmint.com/wp-content/uploads/2015/02/Devuan-Linux.jpg) + +Debian Forked over systemd: Birth of Devuan Linux + +Devuan project priority includes – interoperability, diversity and backward compatibility. It will derive its own installer and repos from Debian and modify where ever required. If everything works smooth by the mid of 2015 users can switch to Devuan from Debian 7 and start using devuan repos. + +The process of switching will fairly remain as simple as upgrading a Debian installation. The project will be as minimal as possible and completely in accordance of UNIX philosophy – “Doing one thing and doing it well”. The targeted users of Devuan will be System Admins, Developers and users having experience of Debian. + +The project started by italian developers has raised a fund of 4.5k€ (EUR) in the year 2014. They have moved distro infrastructure from GitHub to GitLab, progress on Loginkit (systemd Logind replaced), discussing Logo and other important aspects useful in long run. + +A few of the Logos are in discussion now are shown in the picture. + +![Devuan Logo Proposals](http://www.tecmint.com/wp-content/uploads/2015/02/Devuan-Logos.jpeg) + +Devuan Logo Proposals + +Have a look at them here at: [http://without-systemd.org/wiki/index.php/Category:Logo][1] + +The unrest over systemd that gave birth to Devuan is good or bad? Lets have a look. + +### Is Devuan fork a good thing? ### + +Well! difficult to answer that forking such a huge distro is really going to be of any good. A (group of) developer(s) who initially were working with Debian got unsatisfied with systemd and forked it. + +Now the actual number of developers working on Debian/Systemd decreased which is going to affect the productivity of both the projects. Now the same number of developers are working on two different projects. + +What you think would be the fate of Devuan as well as Debian project? Won’t it hinder the progress of either distro and Linux in the long run? + +Please give your [comments][2] about Devuan project. + +注:如果可以在发布文章的时候发布一个调查,就把下面这段发成一个调查,如果不行,就直接嵌入js代码 + + + +Do you think systemd for Debian is + +Good +Bad +Don't Know +Don't Care +Other: + +VoteView ResultsPolldaddy.com + + +**Do you really feel that Debian with systemd will have a bad fate as depicted below** + +![Strip SystmeD](http://www.tecmint.com/wp-content/uploads/2015/02/Strip-SystmeD.jpg) + +Strip SystmeD + +Time to wait for Devuan 1.0 and lets see what it could contain. + +### Conclusion ### + +All the major Linux Distributions Like Fedora, RedHat, openSUSE, SUSE Enterprise, Arch, Megia have already switched to Systemd, Ubuntu and Debian are in the way to replace init with systemd. Only Gentoo and Slack till date have shown no interest in systemd but who knows someday even Gentoo and slack too started moving in the same direction. + +The reputation of Debian as a Linux Distro is something very few have reached the mark. It is blessed by some hundreds of developers and millions of users. The actual question is what percentage of users and developers were not comfortable with systemd. If the percentage is really high then what led debian to switch to systemd. Had it moved against the wishes of its users and developers. If this is the case the chance of success of devuan is pretty fair. Well how many developers put long hours of code punching for the project. + +Hope the fate of this project will not be something like those distros which once was started with high degree of passion and enthusiasm and later the developers got uninterested. + +Post Script : Linus Torvalds do not mind systemd that much. + +**If you need Devuan, then join and support it now!** + +Development : [https://git.devuan.org][3] +Donations : [https://devuan.org/donate.html][4] +Discussions : [https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng][5] +Devuan Developers : onelove@devuan.org + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/debian-forked-over-systemd-birth-of-devuan-linux/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://without-systemd.org/wiki/index.php/Category:Logo +[2]:http://www.tecmint.com/debian-forked-over-systemd-birth-of-devuan-linux/#comments +[3]:https://git.devuan.org/ +[4]:https://devuan.org/donate.html +[5]:https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng \ No newline at end of file diff --git a/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md b/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md new file mode 100644 index 0000000000..b5bbc69a3b --- /dev/null +++ b/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md @@ -0,0 +1,84 @@ +How To Use Smartphones Like Weather Conky In Linux +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Use_Weather_Conky_Linux.jpeg) + +Smartphones have those sleek weather widgets that blend in to the display. Thanks to Flair Weather Conky, you can get **smartphone like weather display on your Linux desktop**. We will be using a GUI tool [Conky Manager to easily manage Conky in Linux][1]. Let’s first see how to install Conky Manager in Ubuntu 14.10, 14.04, Linux Mint 17 and other Linux distributions. + +### Install Conky Manager ### + +Open a terminal and use the following commands: + + sudo add-apt-repository ppa:teejee2008/ppa + sudo apt-get update + sudo apt-get install conky-manager + +You can read this article on [how to use Conky Manager in Linux][1]. + +### Make sure curl is installed ### + +Do make sure that [curl][2] is installed. Use the following command: + + sudo apt-get install curl + +### Download Flair Weather Conky ### + +Get the Flair Weather Conky script from the link below: + +- [Download Flair Weather Conky Script][3] + +### Using Flair Weather Conky script in Conky Manager ### + +#### Step 1: #### + +Same as you install themes in Ubuntu 14.04, you should have a .conky directory in your Home folder. If you use command line, I don’t need to tell you how to find that. For beginners, go to your Home directory from File manager and press Ctrl+H to [show hidden files in Ubuntu][4]. Look for .conky folder here. If there is no such folder, make one. + +#### Step 2: #### + +In the .conky directory, extract the downloaded Flair Weather file. Do note that by default it is extracted to .conky directory itself. So go in this directory and get the Flair Weather folder out of it and paste it to actual .conky directory. + +#### Step 3: #### + +Flair Weather uses Yahoo and it doesn’t recognize your location automatically. You’ll need to manually edit it. Go to [Yahoo Weather][5] and get the location of id of your city by typing your city/pin code. You can get the location id from the URL. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Yahoo_Weather_Location_Code.jpeg) + +#### Step 4: #### + +Open Conky Manager. It should be able to read the newly installed Conky script. There are two variants, dark and light, available. You can choose whichever you prefer. You can should see the conky displayed on the desktop as soon as you select it. + +Default location in Flair Weather is set to Melbourne. You’ll have to manually edit the conky. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Using_Weather_Conky_Ubuntu.jpeg) + +#### Step 5: #### + +In the screenshot above, you can see the option to edit the selected conky. In the editor opened, look for location or WOEID. Change it with the location code you got in step 3. Now restart the Conky. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Edit_Conky.jpeg) + +In the same place, if you replace C by F, the unit of temperature will be changed to Fahrenheit from Celsius. Don’t forget to restart the Conky to see the changes made. + +#### Give it a try #### + +In this article we actually learned quite few things. We saw how we can use any Conky script easily, how to edit the scripts and how to use Conky Manager for various purposes. I hope you find it useful. + +A word of caution, Ubuntu 14.10 users might see overlapped time numerals. Please make the developer ware of any such issues. + +I have already shown you the screenshot of how the Flair Weather conky looked in my system. Time for you to try this and flaunt your desktop. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/weather-conky-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://itsfoss.com/conky-gui-ubuntu-1304/ +[2]:http://www.computerhope.com/unix/curl.htm +[3]:http://speedracker.deviantart.com/art/Flair-Weather-Conky-Made-for-Conky-Manager-510130311 +[4]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ +[5]:https://weather.yahoo.com/ \ No newline at end of file diff --git a/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md new file mode 100644 index 0000000000..410d7a79b7 --- /dev/null +++ b/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md @@ -0,0 +1,96 @@ +Linux FAQs with Answers--How to install Go language on Linux +================================================================================ +Go (also called "golang") is an open-source programming language initially developed by Google. It was born with several design principles in mind: simplicity, safety, and speed. The Go language distribution comes with various tools for debugging, testing, profiling and code-vetting. Nowadays the Go language and its tool chain are available in the base repositories of most Linux distributions, making it easy to install them with a default package manager. + +### Install Go Language on Ubuntu, Debian or Linux Mint ### + +The following **apt-get** command will install Go language and its development tools on Debian-based distributions. + + $ sudo apt-get install golang + +Check the version of Go language to verify installation. + + $ go version + +---------- + + go version go1.2.1 linux/amd64 + +Depending on your need, you may want to install additional Go tools using apt-get. + + $ sudo apt-cache search golang + +![](https://farm8.staticflickr.com/7430/15812762183_f094e3bf92_c.jpg) + +### Install Go Language on Fedora, CentOS/RHEL ### + +The following yum command will install Go language and its development tools on Red Hat based distributions. + + $ sudo yum install golang + +Check the version of Go language to verify installation. + + $ go version + +---------- + + go version go1.3.3 linux/amd64 + +Depending on your need, you can install additional Go tools using yum. + + $ yum search golang + +![](https://farm8.staticflickr.com/7373/16432817805_775010dc18_c.jpg) + +### Install Go Language from the Official Website ### + +Sometimes the version of Go language that comes with your Linux distribution may not be up-to-date. In that case, you can install the latest Go language from its official website. Here is how you can do it. + +Go to the [official source][1] of Go language, and download pre-built binaries. + +**For 64-bit Linux:** + + $ wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz + +**For 32-bit Linux:** + + $ wget https://storage.googleapis.com/golang/go1.4.1.linux-386.tar.gz + +**Install the binaries under /usr/local.** + + $ sudo tar -xzf go1.4.1.linux-xxx.tar.gz -C /usr/local + +Update the PATH environment variable system-wide by appending the following line in /etc/profile. + + $ sudo vi /etc/profile + +---------- + + export PATH=$PATH:/usr/local/go/bin + +If you installed Go in a custom location other than /usr/local, you also need to set GOROOT environment variable to point to the custom location. + + $ sudo vi /etc/profile + +---------- + + export GOROOT=/path/to/custom/location + +Check the version of Go language. + + $ go version + +---------- + + go version go1.4.1 linux/amd64 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/install-go-language-linux.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:https://golang.org/dl/ \ No newline at end of file From e3fb9473867d032905c70ef35064c5ef224cc229 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Thu, 5 Feb 2015 10:58:31 +0800 Subject: [PATCH 204/725] =?UTF-8?q?20150205-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...esults Surface Top Open Source Projects.md | 32 ++ ...Scripting interview Questions & Answers.md | 377 ++++++++++++++++++ ... Tool to Setup IPsec Based VPN in Linux.md | 113 ++++++ 3 files changed, 522 insertions(+) create mode 100644 sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md create mode 100644 sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md create mode 100644 sources/tech/20150205 Install Strongswan - A Tool to Setup IPsec Based VPN in Linux.md diff --git a/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md b/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md new file mode 100644 index 0000000000..c591faafcd --- /dev/null +++ b/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md @@ -0,0 +1,32 @@ +LinuxQuestions Survey Results Surface Top Open Source Projects +================================================================================ +![](http://farm5.static.flickr.com/4099/4777335328_3cc363c419_m.jpg) + +Many people in the Linux community look forward to the always highly detailed and reliable results of the annual surveys from LinuxQuestions.org. As [Susan covered in detail in this post][1], this year's [results][2], focused on what readers at the site deem to be the best open source projects, are now available. Most of the people at LinuxQuestions are expert-level users who are on the site to answer questions from newer Linux users. + +In addition to the summary results that Susan provided in her post, below you'll find a graphical snapshot of what the experts took note of on the open source front. + +You can get a very nice graphical summary of the findings from the LinuxQuestions survey [here][3]. Here is a snapshot of the site's determination of the best Linux distributions, where Mint and Slackware fare quite well: + +![](http://i1311.photobucket.com/albums/s669/webworkerdaily/lin_zps9ogvyrty.png) + +And below is a snapshot of the site's determination of the best cloud projects. Notably, the LinuxQuestions crowd gives very high praise to ownCloud. Definiitely check into the full results of the survey at the site, see [Susan's summary][4] of winners, and check out all the good graphics [here][5]. + +![](http://i1311.photobucket.com/albums/s669/webworkerdaily/lin2_zps9nxf7yyi.png) + +-------------------------------------------------------------------------------- + +via: http://ostatic.com/blog/linuxquestions-survey-results-surface-top-open-source-projects + +作者:[Sam Dean][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ostatic.com/member/samdean +[1]:http://ostatic.com/blog/lq-members-choice-award-winners-announced +[2]:http://www.linuxquestions.org/questions/linux-news-59/2014-linuxquestions-org-members-choice-award-winners-4175532948/ +[3]:http://www.linuxquestions.org/questions/2014mca.php +[4]:http://ostatic.com/blog/lq-members-choice-award-winners-announced +[5]:http://www.linuxquestions.org/questions/2014mca.php \ No newline at end of file diff --git a/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md b/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md new file mode 100644 index 0000000000..a042cba174 --- /dev/null +++ b/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md @@ -0,0 +1,377 @@ +25 Linux Shell Scripting interview Questions & Answers +================================================================================ +### Q:1 What is Shell Script and why it is required ? ### + +Ans: A Shell Script is a text file that contains one or more commands. As a system administrator we often need to issue number of commands to accomplish the task, we can add these all commands together in a text file (Shell Script) to complete daily routine task. + +### Q:2 What is the default login shell and how to change default login shell for a specific user ? ### + +Ans: In Linux like Operating system “/bin/bash” is the default login shell which is assigned while user creation. We can change default shell using the “chsh” command . Example is shown below : + + # chsh -s + # chsh linuxtechi -s /bin/sh + +### Q:3 What are the different type of variables used in a shell Script ? ### + +Ans: In a shell script we can use two types of variables : + +- System defined variables +- User defined variables + +System defined variables are defined or created by Operating System(Linux) itself. These variables are generally defined in Capital Letters and can be viewed by “**set**” command. + +User defined variables are created or defined by system users and the values of variables can be viewed by using the command “`echo $`” + +### Q:4 How to redirect both standard output and standard error to the same location ? ### + +Ans: There two method to redirect std output and std error to the same location: + +Method:1 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) + +Method:2 &> (# ls /usr/share/doc &> out.txt ) + +### Q:5 What is the Syntax of “nested if statement” in shell scripting ? ### + +Ans : Basic Syntax is shown below : + + if [ Condition ] + then + command1 + command2 + ….. + else + if [ condition ] + then + command1 + command2 + …. + else + command1 + command2 + ….. + fi + fi + +### Q:6 What is the use of “$?” sign in shell script ? ### + +Ans:While writing a shell script , if you want to check whether previous command is executed successfully or not , then we can use “$?” with if statement to check the exit status of previous command. Basic example is shown below : + + root@localhost:~# ls /usr/bin/shar + /usr/bin/shar + root@localhost:~# echo $? + 0 + +If exit status is 0 , then command is executed successfully + + root@localhost:~# ls /usr/bin/share + + ls: cannot access /usr/bin/share: No such file or directory + root@localhost:~# echo $? + 2 + +If the exit status is other than 0, then we can say command is not executed successfully. + +### Q:7 How to compare numbers in Linux shell Scripting ? ### + +Ans: test command is used to compare numbers in if-then statement. Example is shown below : + + #!/bin/bash + x=10 + y=20 + + if [ $x -gt $y ] + then + echo “x is greater than y” + else + echo “y is greater than x” + fi + +### Q:8 What is the use of break command ? ### + +Ans: The break command is a simple way to escape out of a loop in progress. We can use the break command to exit out from any loop, including while and until loops. + +### Q:9 What is the use of continue command in shell scripting ? ### + +Ans The continue command is identical to break command except it causes the present iteration of the loop to exit, instead of the entire loop. Continue command is useful in some scenarios where error has occurred but we still want to execute the next commands of the loop. + +### Q:10 Tell me the Syntax of “Case statement” in Linux shell scripting ? ### + +Ans: The basic syntax is shown below : + + case word in + value1) + command1 + command2 + ….. + last_command + !! + value2) + command1 + command2 + …… + last_command + ;; + esac + +### Q:11 What is the basic syntax of while loop in shell scripting ? ### + +Ans: Like the for loop, the while loop repeats its block of commands a number of times. Unlike the for loop, however, the while loop iterates until its while condition is no longer true. The basic syntax is : + + while [ test_condition ] + do + commands… + done + +### Q:12 How to make a shell script executable ? ### + +Ans: Using the chmod command we can make a shell script executable. Example is shown below : + + # chmod a+x myscript.sh + +### Q:13 What is the use of “#!/bin/bash” ? ### + +Ans: #!/bin/bash is the first of a shell script , known as shebang , where # symbol is called hash and ‘!’ is called as bang. It shows that command to be executed via /bin/bash. + +### Q:14 What is the syntax of for loop in shell script ? ### + +Ans: Basic Syntax of for loop is given below : + + for variables in list_of_items + do + command1 + command2 + …. + last_command + done + +### Q:15 How to debug a shell script ? ### + +Ans: A shell script can be debug if we execute the script with ‘-x’ option ( sh -x myscript.sh). Another way to debug a shell script is by using ‘-nv’ option ( sh -nv myscript.sh). + +### Q:16 How compare the strings in shell script ? ### + +Ans: test command is used to compare the text strings. The test command compares text strings by comparing each character in each string. + +### Q:17 What are the Special Variables set by Bourne shell for command line arguments ? ### + +Ans: The following table lists the special variables set by the Bourne shell for command line arguments . + +注:表格部分 +
+++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Special Variables

+
+

Holds

+
+

$0

+
+

Name of the Script from the command line

+
+

$1

+
+

First Command-line argument

+
+

$2

+
+

Second Command-line argument

+
+

…..

+
+

…….

+
+

$9

+
+

Ninth Command line argument

+
+

$#

+
+

Number of Command line arguments

+
+

$*

+
+

All Command-line arguments, separated with spaces

+
+ +### Q:18 How to test files in a shell script ? ### + +Ans: test command is used to perform different test on the files. Basic test are listed below : + +注:表格部分 + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Test

+
+

Usage

+
+

-d file_name

+
+

Returns true if the file exists and is a directory

+
+

-e file_name

+
+

Returns true if the file exists

+
+

-f file_name

+
+

Returns true if the file exists and is a regular file

+
+

-r file_name

+
+

Returns true if the file exists and have read permissions

+
+

-s file_name

+
+

Returns true if the file exists and is not empty

+
+

-w file_name

+
+

Returns true if the file exists and have write permissions

+
+

-x file_name

+
+

Returns true if the file exists and have execute permissions

+
+ +### Q:19 How to put comments in your shell script ? ### + +Ans: Comments are the messages to yourself and for other users that describe what a script is supposed to do and how its works.To put comments in your script, start each comment line with a hash sign (#) . Example is shown below : + + #!/bin/bash + # This is a command + echo “I am logged in as $USER” + +### Q:20 How to get input from the terminal for shell script ? ### + +Ans: ‘read’ command reads in data from the terminal (using keyboard). The read command takes in whatever the user types and places the text into the variable you name. Example is shown below : + + # vi /tmp/test.sh + + #!/bin/bash + echo ‘Please enter your name’ + read name + echo “My Name is $name” + + # ./test.sh + Please enter your name + LinuxTechi + My Name is LinuxTechi + +### Q:21 How to unset or de-assign variables ? ### + +Ans: ‘unset’ command is used to de-assign or unset a variable. Syntax is shown below : + + # unset + +### Q:22 How to perform arithmetic operation ? ### + +Ans: There are two ways to perform arithmetic operations : + +1. Using `expr` command (# expr 5 + 2 ) +2. using a dollar sign and square brackets ( `$[ operation ]` ) Example : test=$[16 + 4] ; test=$[16 + 4] + +### Q:23 Basic Syntax of do-while statement ? ### + +Ans: The do-while statement is similar to the while statement but performs the statements before checking the condition statement. The following is the format for the do-while statement: + + do + { + statements + } while (condition) + +### Q:24 How to define functions in shell scripting ? ### + +Ans: A function is simply a block of of code with a name. When we give a name to a block of code, we can then call that name in our script, and that block will be executed. Example is shown below : + + $ diskusage () { df -h ; } + +### Q:25 How to use bc (bash calculator) in a shell script ? ### + +Ans: Use the below Syntax to use bc in shell script. + + variable=`echo “options; expression” | bc` + +-------------------------------------------------------------------------------- + +via: http://www.linuxtechi.com/linux-shell-scripting-interview-questions-answers/ + +作者:[Pradeep Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxtechi.com/author/pradeep/ \ No newline at end of file diff --git a/sources/tech/20150205 Install Strongswan - A Tool to Setup IPsec Based VPN in Linux.md b/sources/tech/20150205 Install Strongswan - A Tool to Setup IPsec Based VPN in Linux.md new file mode 100644 index 0000000000..ca909934fa --- /dev/null +++ b/sources/tech/20150205 Install Strongswan - A Tool to Setup IPsec Based VPN in Linux.md @@ -0,0 +1,113 @@ +Install Strongswan - A Tool to Setup IPsec Based VPN in Linux +================================================================================ +IPsec is a standard which provides the security at network layer. It consist of authentication header (AH) and encapsulating security payload (ESP) components. AH provides the packet Integrity and confidentiality is provided by ESP component . IPsec ensures the following security features at network layer. + +- Confidentiality +- Integrity of packet +- Source Non. Repudiation +- Replay attack protection + +[Strongswan][1] is an open source implementation of IPsec protocol and Strongswan stands for Strong Secure WAN (StrongS/WAN). It supports the both version of automatic keying exchange in IPsec VPN (Internet keying Exchange (IKE) V1 & V2). + +Strongswan basically provides the automatic keying sharing between two nodes/gateway of the VPN and after that it uses the Linux Kernel implementation of IPsec (AH & ESP). Key shared using IKE mechanism is further used in the ESP for the encryption of data. In IKE phase, strongswan uses the encryption algorithms (AES,SHA etc) of OpenSSL and other crypto libraries. However, ESP component of IPsec uses the security algorithm which are implemented in the Linux Kernel. The main features of Strongswan are given below. + +- 509 certificates or pre-shared keys based Authentication +- Support of IKEv1 and IKEv2 key exchange protocols +- Optional built-in integrity and crypto tests for plugins and libraries +- Support of elliptic curve DH groups and ECDSA certificates +- Storage of RSA private keys and certificates on a smartcard. + +It can be used in the client / server (road warrior) and gateway to gateway scenarios. + +### How to Install ### + +Almost all Linux distro’s, supports the binary package of Strongswan. In this tutorial, we will install the strongswan from binary package and also the compilation of strongswan source code with desirable features. + +### Using binary package ### + +Strongswan can be installed using following command on Ubuntu 14.04 LTS . + + $sudo aptitude install strongswan + +![Installation of strongswan](http://blog.linoxide.com/wp-content/uploads/2014/12/strongswan-binary.png) + +The global configuration (strongswan.conf) file and ipsec configuration (ipsec.conf/ipsec.secrets) files of strongswan are under /etc/ directory. + +### Pre-requisite for strongswan source compilation & installation ### + +- GMP (Mathematical/Precision Library used by strongswan) +- OpenSSL (Crypto Algorithms from this library) +- PKCS (1,7,8,11,12)(Certificate encoding and smart card integration with Strongswan ) + +#### Procedure #### + +**1)** Go to /usr/src/ directory using following command in the terminal. + + $cd /usr/src + +**2)** Download the source code from strongswan site suing following command + + $sudo wget http://download.strongswan.org/strongswan-5.2.1.tar.gz + +(strongswan-5.2.1.tar.gz is the latest version.) + +![Downloading software](http://blog.linoxide.com/wp-content/uploads/2014/12/download_strongswan.png) + +**3)** Extract the downloaded software and go inside it using following command. + + $sudo tar –xvzf strongswan-5.2.1.tar.gz; cd strongswan-5.2.1 + +**4)** Configure the strongswan as per desired options using configure command. + + ./configure --prefix=/usr/local -–enable-pkcs11 -–enable-openssl + +![checking packages for strongswan](http://blog.linoxide.com/wp-content/uploads/2014/12/strongswan-configure.png) + +If GMP library is not installed, then configure script will generate following error. + +![GMP library error](http://blog.linoxide.com/wp-content/uploads/2014/12/gmp-error.png) + +Therefore, first of all, install the GMP library using following command and then run the configure script. + +![gmp installation](http://blog.linoxide.com/wp-content/uploads/2014/12/gmp-installation1.png) + +However, if GMP is already installed and still above error exists then create soft link of libgmp.so library at /usr/lib , /lib/, /usr/lib/x86_64-linux-gnu/ paths in Ubuntu using following command. + + $ sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so.10.1.3 /usr/lib/x86_64-linux-gnu/libgmp.so + +![softlink of libgmp.so library](http://blog.linoxide.com/wp-content/uploads/2014/12/softlink.png) + +After the creation of libgmp.so softlink, again run the ./configure script and it may find the gmp library. However, it may generate another error of gmp header file which is shown the following figure. + +![GMP header file issu](http://blog.linoxide.com/wp-content/uploads/2014/12/gmp-header.png) + +Install the libgmp-dev package using following command for the solution of above error. + + $sudo aptitude install libgmp-dev + +![Installation of Development library of GMP](http://blog.linoxide.com/wp-content/uploads/2014/12/gmp-dev.png) + +After installation of development package of gmp library, again run the configure script and if it does not produce any error, then the following output will be displayed. + +![Output of Configure scirpt](http://blog.linoxide.com/wp-content/uploads/2014/12/successful-run.png) + +Type the following commands for the compilation and installation of strongswan. + + $ sudo make ; sudo make install + +After the installation of strongswan , the Global configuration (strongswan.conf) and ipsec policy/secret configuration files (ipsec.conf/ipsec.secretes) are placed in **/usr/local/etc** directory. + +Strongswan can be used as tunnel or transport mode depends on our security need. It provides well known site-2-site and road warrior VPNs. It can be use easily with Cisco,Juniper devices. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/security/install-strongswan/ + +作者:[nido][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/naveeda/ +[1]:https://www.strongswan.org/ \ No newline at end of file From f1ace6f2b135827e9fe8a48ee1f578b06074e223 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Thu, 5 Feb 2015 11:42:25 +0800 Subject: [PATCH 205/725] =?UTF-8?q?20150205-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rity Bug Hits Linux, But is it That Bad.md | 34 ++ ...l or Configure VNC Server On CentOS 7.0.md | 161 +++++++ ... Security Using WPScan, Nmap, And Nikto.md | 424 ++++++++++++++++++ ...ystem And Hardware Information On Linux.md | 171 +++++++ ...ngle Network Interface Card On CentOS 7.md | 208 +++++++++ ...--A versatile deduplicating backup tool.md | 63 +++ 6 files changed, 1061 insertions(+) create mode 100644 sources/talk/20150205 GHOST--Another Security Bug Hits Linux, But is it That Bad.md create mode 100644 sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md create mode 100644 sources/tech/20150205 How To Scan And Check A WordPress Website Security Using WPScan, Nmap, And Nikto.md create mode 100644 sources/tech/20150205 Inxi--Find System And Hardware Information On Linux.md create mode 100644 sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md create mode 100644 sources/tech/20150205 zBackup--A versatile deduplicating backup tool.md diff --git a/sources/talk/20150205 GHOST--Another Security Bug Hits Linux, But is it That Bad.md b/sources/talk/20150205 GHOST--Another Security Bug Hits Linux, But is it That Bad.md new file mode 100644 index 0000000000..90923c1aae --- /dev/null +++ b/sources/talk/20150205 GHOST--Another Security Bug Hits Linux, But is it That Bad.md @@ -0,0 +1,34 @@ +GHOST: Another Security Bug Hits Linux, But is it That Bad? +================================================================================ +> GHOST, a newly announced security vulnerability that affects Linux servers and other systems that use the open source glibc library, is not as dangerous to data privacy as the Shellshock or Heartbleed bugs. + +![](http://thevarguy.com/site-files/thevarguy.com/files/imagecache/medium_img/uploads/2015/01/ghost-costume.jpg) + +Heartbleed is not even a year behind us, and the open source world has been hit with another major security vulnerability in the form of [GHOST][1], which involves holes in the Linux glibc library. This time, though, the actual danger may not live up to the hype. + +The GHOST vulnerability, which was announced last week by security researchers at [Qualys][2], resides in the gethostbyname*() functions of the glibc library. glibc is one of the core building blocks of most Linux systems, and gethostbyname*(), which resolves domain names into IP addresses, is widely used in open source applications. + +Attackers can exploit the GHOST security hole to create a buffer overflow, making it possible to execute any kind of code they want and do all sorts of nasty things. + +All of the above suggests that GHOST is bad news indeed. Fortunately for the open source community, however, the actual risk appears small. As TrendMicro [points out][3], the bug that makes the exploit possible has been fixed in glibc since May 2013, meaning that any Linux servers or PCs running more recent versions of the software are safe from attack. + +In addition, gethostbyname*() has been superseded by newer glibc functions that can better handle modern networking environments. Those include ones that use the IPv6 protocol, which gethostbyname*() doesn't support. As a result, newer applications often don't use the gethostbyname*() functions, and are not at risk. + +And perhaps most importantly, there's currently no known way of executing GHOST attacks through the Web. That greatly reduces opportunities for using this vulnerability to steal the data of unsuspecting users or otherwise wreak havoc. + +All in all, then, GHOST doesn't seem like a vulnerability that will prove as serious as Heartbleed or Shellshock, two other recent security problems that affected widely used open source software. + +-------------------------------------------------------------------------------- + +via: http://thevarguy.com/open-source-application-software-companies/020415/ghost-another-security-bug-hits-linux-it-bad + +作者:[Christopher Tozzi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://thevarguy.com/author/christopher-tozzi +[1]:https://community.qualys.com/blogs/laws-of-vulnerabilities/2015/01/27/the-ghost-vulnerability +[2]:http://qualys.com/ +[3]:http://blog.trendmicro.com/trendlabs-security-intelligence/not-so-spooky-linux-ghost-vulnerability/ \ No newline at end of file diff --git a/sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md b/sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md new file mode 100644 index 0000000000..3eaba972f8 --- /dev/null +++ b/sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md @@ -0,0 +1,161 @@ +How To Install / Configure VNC Server On CentOS 7.0 +================================================================================ +Hi there, this tutorial is all about how to install or setup [VNC][1] Server on your very CentOS 7. This tutorial also works fine in RHEL 7. In this tutorial, we'll learn what is VNC and how to install or setup [VNC Server][1] on CentOS 7 + +As we know, most of the time as a system administrator we are managing our servers over the network. It is very rare that we will need to have a physical access to any of our managed servers. In most cases all we need is to SSH remotely to do our administration tasks. In this article we will configure a GUI alternative to a remote access to our CentOS 7 server, which is VNC. VNC allows us to open a remote GUI session to our server and thus providing us with a full graphical interface accessible from any remote location. + +VNC server is a Free and Open Source Software which is designed for allowing remote access to the Desktop Environment of the server to the VNC Client whereas VNC viewer is used on remote computer to connect to the server . + +**Some Benefits of VNC server are listed below:** + + Remote GUI administration makes work easy & convenient. + Clipboard sharing between host CentOS server & VNC-client machine. + GUI tools can be installed on the host CentOS server to make the administration more powerful + Host CentOS server can be administered through any OS having the VNC-client installed. + More reliable over ssh graphics and RDP connections. + +So, now lets start our journey towards the installation of VNC Server. We need to follow the steps below to setup and to get a working VNC. + +First of all we'll need a working Desktop Environment (X-Windows), if we don't have a working GUI Desktop Environment (X Windows) running, we'll need to install it first. + +**Note: The commands below must be running under root privilege. To switch to root please execute "sudo -s" under a shell or terminal without quotes("")** + +### 1. Installing X-Windows ### + +First of all to install [X-Windows][2] we'll need to execute the below commands in a shell or terminal. It will take few minutes to install its packages. + + # yum check-update + # yum groupinstall "X Window System" + +![installing x windows](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-x-windows.png) + + #yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts + +![install gnome classic session](http://blog.linoxide.com/wp-content/uploads/2015/01/gnome-classic-session-install.png) + + # unlink /etc/systemd/system/default.target + # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target + +![configuring graphics](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-graphics.png) + + # reboot + +After our machine restarts, we'll get a working CentOS 7 Desktop. + +Now, we'll install VNC Server on our machine. + +### 2. Installing VNC Server Package ### + +Now, we'll install VNC Server package in our CentOS 7 machine. To install VNC Server, we'll need to execute the following command. + + # yum install tigervnc-server -y + +![vnc server](http://blog.linoxide.com/wp-content/uploads/2015/01/install-tigervnc.png) + +### 3. Configuring VNC ### + +Then, we'll need to create a configuration file under **/etc/systemd/system/** directory. We can copy the **vncserver@:1.service** file from example file from **/lib/systemd/system/vncserver@.service** + + # cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service + +![copying vnc server configuration](http://blog.linoxide.com/wp-content/uploads/2015/01/copying-configuration.png) + +Now we'll open **/etc/systemd/system/vncserver@:1.service** in our favorite text editor (here, we're gonna use **nano**). Then find the below lines of text in that file and replace with your username. Here, in my case its linoxide so I am replacing with linoxide and finally looks like below. + + ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i" + PIDFile=/home//.vnc/%H%i.pid + +TO + + ExecStart=/sbin/runuser -l linoxide -c "/usr/bin/vncserver %i" + PIDFile=/home/linoxide/.vnc/%H%i.pid + +If you are creating for root user then + + ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i" + PIDFile=/root/.vnc/%H%i.pid + +![configuring user](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-user.png) + +Now, we'll need to reload our systemd. + + # systemctl daemon-reload + +Finally, we'll create VNC password for the user . To do so, first you'll need to be sure that you have sudo access to the user, here I will login to user "linoxide" then, execute the following. To login to linoxide we'll run "**su linoxide" without quotes** . + + # su linoxide + $ sudo vncpasswd + +![setting vnc password](http://blog.linoxide.com/wp-content/uploads/2015/01/vncpassword.png) + +**Make sure that you enter passwords more than 6 characters.** + +### 4. Enabling and Starting the service ### + +To enable service at startup ( Permanent ) execute the commands shown below. + + $ sudo systemctl enable vncserver@:1.service + +Then, start the service. + + $ sudo systemctl start vncserver@:1.service + +### 5. Allowing Firewalls ### + +We'll need to allow VNC services in Firewall now. + + $ sudo firewall-cmd --permanent --add-service vnc-server + $ sudo systemctl restart firewalld.service + +![allowing firewalld](http://blog.linoxide.com/wp-content/uploads/2015/01/allowing-firewalld.png) + +Now you can able to connect VNC server using IP and Port ( Eg : ip-address:1 ) + +### 6. Connecting the machine with VNC Client ### + +Finally, we are done installing VNC Server. No, we'll wanna connect the server machine and remotely access it. For that we'll need a VNC Client installed in our computer which will only enable us to remote access the server machine. + +![remote access vncserver from vncviewer](http://blog.linoxide.com/wp-content/uploads/2015/01/vncviewer.png) + +You can use VNC client like [Tightvnc viewer][3] and [Realvnc viewer][4] to connect Server. +To connect with additional users create files with different ports, please go to step 3 to configure and add a new user and port, You'll need to create **vncserver@:2.service** and replace the username in config file and continue the steps by replacing service name for different ports. **Please make sure you logged in as that particular user for creating vnc password**. + +VNC by itself runs on port 5900. Since each user will run their own VNC server, each user will have to connect via a separate port. The addition of a number in the file name tells VNC to run that service as a sub-port of 5900. So in our case, arun's VNC service will run on port 5901 (5900 + 1) and further will run on 5900 + x. Where, x denotes the port specified when creating config file **vncserver@:x.service for the further users**. + +We'll need to know the IP Address and Port of the server to connect with the client. IP addresses are the unique identity number of the machine. Here, my IP address is 96.126.120.92 and port for this user is 1. We can get the public IP address by executing the below command in a shell or terminal of the machine where VNC Server is installed. + + # curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' + +### Conclusion ### + +Finally, we installed and configured VNC Server in the machine running CentOS 7 / RHEL 7 (Red Hat Enterprises Linux) . VNC is the most easy FOSS tool for the remote access and also a good alternative to Teamviewer Remote Access. VNC allows a user with VNC client installed to control the machine with VNC Server installed. Here are some commands listed below that are highly useful in VNC . Enjoy !! + +#### Additional Commands : #### + +- To stop VNC service . + + # systemctl stop vncserver@:1.service + +- To disable VNC service from startup. + + # systemctl disable vncserver@:1.service + +- To stop firewall. + + # systemctl stop firewalld.service + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-configure-vnc-server-centos-7-0/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://en.wikipedia.org/wiki/Virtual_Network_Computing +[2]:http://en.wikipedia.org/wiki/X_Window_System +[3]:http://www.tightvnc.com/ +[4]:https://www.realvnc.com/ \ No newline at end of file diff --git a/sources/tech/20150205 How To Scan And Check A WordPress Website Security Using WPScan, Nmap, And Nikto.md b/sources/tech/20150205 How To Scan And Check A WordPress Website Security Using WPScan, Nmap, And Nikto.md new file mode 100644 index 0000000000..4af1fc99cb --- /dev/null +++ b/sources/tech/20150205 How To Scan And Check A WordPress Website Security Using WPScan, Nmap, And Nikto.md @@ -0,0 +1,424 @@ +How To Scan And Check A WordPress Website Security Using WPScan, Nmap, And Nikto +================================================================================ +### Introduction ### + +Millions of websites are powered by WordPress software and there’s a reason for that. WordPress is the most developer-friendly content management system out there, so you can essentially do anything you want with it. Unfortunately, every day some scary report about a major site being hacked or a sensitive database being compromised hits the web … and freaks everyone out. + +If you haven’t installed WordPress yet, check the following article. +On Debian based systems: + +- [How to install WordPress On Ubuntu][1] + +On RPM based systems: + +- [How to install wordpress On CentOS][2] + +Following on from my previous article [How To Secure WordPress Website][3] show you **checklist** allows you to secure your WordPress site with as little effort as possible. + +In this article, will describe to you through the installation of **wpscan** and serve as a guide on how to use wpscan to locate any known vulnerable plugins and themes that may make your site vulnerable to attack. Also, how to install and use **nmap** the free Security Scanner For Network Exploration & Hacking . And at the end we will show you the steps to use **nikto**. + +### WPScan to Test for Vulnerable Plugins and Themes in WordPress ### + +**WPScan** is a black box WordPress Security Scanner written in Ruby which attempts to find known security weaknesses within WordPress installations. Its intended use it to be for security professionals or WordPress administrators to asses the security posture of their WordPress installations. The code base is Open Source and licensed under the GPLv3. + +### Download and Install WPScan ### + +Before we get started with the installation, it is important to note that wpscan will not work on Windows systems, so you will need access to a Linux or OSX installation to proceed. If you only have access to a Windows system you can download Virtualbox and install any Linux distro you like as a Virtual Machine. + +WPScan is hosted on Github, so if it is not already installed we will need to install the git packages before we can continue. + + sudo apt-get install git + +Once git is installed, we need to install the dependencies for wpscan. + + sudo apt-get install libcurl4-gnutls-dev libopenssl-ruby libxml2 libxml2-dev libxslt1-dev ruby-dev ruby1.9.3 + +Now we need to clone the wpscan package from github. + + git clone https://github.com/wpscanteam/wpscan.git + +Now we can move to the newly created wpscan directory and install the necessary ruby gems through bundler. + + cd wpscan + sudo gem install bundler && bundle install --without test development + +Now that we have wpscan installed, we will walk through using the tool to search for potentially vulnerable files on our WordPress installation. Some of the most important aspects of wpscan are its ability to enumerate not only plugins and themes, but users and timthumb installations as well. WPScan can also perform bruteforce attacks against WordPress– but that is outside of the scope of this article. + +#### Update wpscan #### + + ruby wpscan.rb --update + +#### Enumerate Plugins #### + +To enumerate plugins, all we need to do is launch wpscan with the `--enumerate p` arguments like so. + + ruby wpscan.rb --url http(s)://www.yoursiteurl.com --enumerate p + +or to only display vulnerable plugins: + + ruby wpscan.rb --url http(s)://www.yoursiteurl.com --enumerate vp + +Some example output is posted below: + + | Name: akismet + | Location: http://********.com/wp-content/plugins/akismet/ + + | Name: audio-player + | Location: http://********.com/wp-content/plugins/audio-player/ + | + | * Title: Audio Player - player.swf playerID Parameter XSS + | * Reference: http://seclists.org/bugtraq/2013/Feb/35 + | * Reference: http://secunia.com/advisories/52083 + | * Reference: http://osvdb.org/89963 + | * Fixed in: 2.0.4.6 + + | Name: bbpress - v2.3.2 + | Location: http://********.com/wp-content/plugins/bbpress/ + | Readme: http://********.com/wp-content/plugins/bbpress/readme.txt + | + | * Title: BBPress - Multiple Script Malformed Input Path Disclosure + | * Reference: http://xforce.iss.net/xforce/xfdb/78244 + | * Reference: http://packetstormsecurity.com/files/116123/ + | * Reference: http://osvdb.org/86399 + | * Reference: http://www.exploit-db.com/exploits/22396/ + | + | * Title: BBPress - forum.php page Parameter SQL Injection + | * Reference: http://xforce.iss.net/xforce/xfdb/78244 + | * Reference: http://packetstormsecurity.com/files/116123/ + | * Reference: http://osvdb.org/86400 + | * Reference: http://www.exploit-db.com/exploits/22396/ + + | Name: contact + | Location: http://********.com/wp-content/plugins/contact/ + +#### Enumerate Themes #### + +Enumeration of themes works the same as enumeration of plugins, just with the `--enumerate t` argument. + + ruby wpscan.rb --url http(s)://www.host-name.com --enumerate t + +Or to only display vulnerable themes: + + ruby wpscan.rb --url http(s)://www.host-name.com --enumerate vt + +Sample output: + + | Name: path + | Location: http://********.com/wp-content/themes/path/ + | Style URL: http://********.com/wp-content/themes/path/style.css + | Description: + + | Name: pub + | Location: http://********.com/wp-content/themes/pub/ + | Style URL: http://********.com/wp-content/themes/pub/style.css + | Description: + + | Name: rockstar + | Location: http://********.com/wp-content/themes/rockstar/ + | Style URL: http://********.com/wp-content/themes/rockstar/style.css + | Description: + | + | * Title: WooThemes WooFramework Remote Unauthenticated Shortcode Execution + | * Reference: https://gist.github.com/2523147 + + | Name: twentyten + | Location: http://********.com/wp-content/themes/twentyten/ + | Style URL: http://********.com/wp-content/themes/twentyten/style.css + | Description: + +#### Enumerate Users #### + +WPScan can also be used to enumerate users with valid logins to the WordPress installation. This is usually performed by attackers in order to get a list of users in preparation for a bruteforce attack. + + ruby wpscan.rb --url http(s)://www.host-name.com --enumerate u + +#### Enumerate Timthumb Files #### + +The last function of wpscan we’ll discuss in this article is the ability to enumerate timthumb installations. In recent years, timthumb has become a very common target of attackers due to the numerous vulnerabilities found and posted to online forums, message lists, and advisory boards. Using wpscan to find vulnerable timthumb files is done with the following command. + + ruby wpscan.rb --url http(s)://www.host-name.com --enumerate tt + +### Nmap to Scan for Open Ports on your VPS ### + +**Nmap** is an open source tool for network exploration and security auditing. It was designed to rapidly scan large networks, although it works fine against single hosts. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics + +### Download and install nmap on Debian and Ubuntu ### + +To install nmap for Debian and Ubuntu Linux based server systems type the following apt-get command: + + sudo apt-get install nmap + +**Sample outputs:** + + Reading package lists... Done + Building dependency tree + Reading state information... Done + The following NEW packages will be installed: + nmap + 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. + Need to get 1,643 kB of archives. + After this operation, 6,913 kB of additional disk space will be used. + Get:1 http://mirrors.service.networklayer.com/ubuntu/ precise/main nmap amd64 5.21-1.1ubuntu1 [1,643 kB] + Fetched 1,643 kB in 0s (16.4 MB/s) + Selecting previously unselected package nmap. + (Reading database ... 56834 files and directories currently installed.) + Unpacking nmap (from .../nmap_5.21-1.1ubuntu1_amd64.deb) ... + Processing triggers for man-db ... + Setting up nmap (5.21-1.1ubuntu1) ... + +#### Examples #### + +To find the nmap version, enter: + + nmap -V + +OR + + nmap --version + +**Sample outputs:** + + Nmap version 5.21 ( http://nmap.org ) + +### Dowonlad and install nmap on Centos ### + +To install nmap on RHEL based Linux distributions, type the following yum command: + + yum install nmap + +**Sample outputs:** + + Loaded plugins: protectbase, rhnplugin, security + 0 packages excluded due to repository protections + Setting up Install Process + Resolving Dependencies + --> Running transaction check + ---> Package nmap.x86_64 2:5.51-2.el6 will be installed + --> Finished Dependency Resolution + + Dependencies Resolved + + ================================================================================ + Package Arch Version Repository Size + ================================================================================ + Installing: + nmap x86_64 2:5.51-2.el6 rhel-x86_64-server-6 2.8 M + + Transaction Summary + ================================================================================ + Install 1 Package(s) + + Total download size: 2.8 M + Installed size: 0 + Is this ok [y/N]: y + Downloading Packages: + nmap-5.51-2.el6.x86_64.rpm | 2.8 MB 00:00 + Running rpm_check_debug + Running Transaction Test + Transaction Test Succeeded + Running Transaction + Installing : 2:nmap-5.51-2.el6.x86_64 1/1 + Verifying : 2:nmap-5.51-2.el6.x86_64 1/1 + + Installed: + nmap.x86_64 2:5.51-2.el6 + + Complete! + +#### Examples #### + +To find the nmap version, enter: + + nmap --version + +**Sample outputs:** + + Nmap version 5.51 ( http://nmap.org ) + +#### Scan Ports with Nmap #### + +You can got a lot of information about your server or host using nmap and it let you to think like someone has malicious intent. + +For this reason, only test it on servers that you own or in situations where you’ve notified the owners. + +The nmap creators actually provide a test server located at: + + scanme.nmap.org + +Some commands may take a long while to complete: + +To scan an IP address or a host name (FQDN), run: + + nmap 192.168.1.1 + +Sample outputs: + +![Fig.01: nmap in action](http://s0.cyberciti.org/uploads/faq/2012/11/redhat-nmap-command-output.png) + +Scan for the host operating system: + + sudo nmap -O 192.168.1.1 + +pecify a range with “-” or “/24″ to scan a number of hosts at once: + + sudo nmap -PN xxx.xxx.xxx.xxx-yyy + +Scan a network range for available services: + + sudo nmap -sP network_address_range + +Scan without preforming a reverse DNS lookup on the IP address specified. This should speed up your results in most cases: + + sudo nmap -n remote_host + +Scan a specific port instead of all common ports: + + sudo nmap -p port_number remote_host + +Scan a network and find out which servers and devices are up and running + +This is known as host discovery or ping scan: + + nmap -sP 192.168.1.0/24 + +Sample outputs: + + Host 192.168.1.1 is up (0.00035s latency). + MAC Address: BC:AE:C5:C3:16:93 (Unknown) + Host 192.168.1.2 is up (0.0038s latency). + MAC Address: 74:44:01:40:57:FB (Unknown) + Host 192.168.1.5 is up. + Host nas03 (192.168.1.12) is up (0.0091s latency). + MAC Address: 00:11:32:11:15:FC (Synology Incorporated) + Nmap done: 256 IP addresses (4 hosts up) scanned in 2.80 second + +Understanding port configuration and how to discover what the attack vectors are on your server is only one step to securing your information and your VPS. + +### Nikto to Scan for vulnerabilities in your website ### + +[Nikto][4] Web-scanner is a open source web-server scanner which can be used to scan the web-servers for malicious programs and files. Nikto can be used to scan the outdated versions of programs too. Nikto will provide us a quick and easy scan to find out the dangerous files and programs in server, At the end of scan result with a log file. + +### Download and install Nikto on Linux server ### + +Perl is pre-installed in linux so all you need to do is download nikto from the [project page][5], unpack it into a directory and start your testing. + + wget https://cirt.net/nikto/nikto-2.1.4.tar.gz + +You can unpack it with an archive manager tool or use tar and gzip together with this command. + + tar zxvf nikto-2.1.4.tar.gz + cd nikto-2.1.4 + perl nikto.pl + +This should be your results from a working installation: + + - ***** SSL support not available (see docs for SSL install) ***** + - Nikto v2.1.4 + --------------------------------------------------------------------------- + + ERROR: No host specified + + -config+ Use this config file + -Cgidirs+ scan these CGI dirs: 'none', 'all', or values like "/cgi/ /cgi-a/" + -dbcheck check database and other key files for syntax errors + -Display+ Turn on/off display outputs + -evasion+ ids evasion technique + -Format+ save file (-o) format + -host+ target host + -Help Extended help information + -id+ Host authentication to use, format is id:pass or id:pass:realm + -list-plugins List all available plugins + -mutate+ Guess additional file names + -mutate-options+ Provide extra information for mutations + -output+ Write output to this file + -nocache Disables the URI cache + -nossl Disables using SSL + -no404 Disables 404 checks + -port+ Port to use (default 80) + -Plugins+ List of plugins to run (default: ALL) + -root+ Prepend root value to all requests, format is /directory + -ssl Force ssl mode on port + -Single Single request mode + -timeout+ Timeout (default 2 seconds) + -Tuning+ Scan tuning + -update Update databases and plugins from CIRT.net + -vhost+ Virtual host (for Host header) + -Version Print plugin and database versions + + requires a value + + Note: This is the short help output. Use -H for full help. + +The error is merely telling us we did not fill in the necessary parameters for a test to run. The SSL support can be enabled by installing the necessary perl ssl module (sudo apt-get install libnet-ssleay-perl). + +#### Update the nikto Database #### + +Before performing any scan we need to update the nikto database packages using. + + /usr/local/bin/nikto.pl -update + +To list the available Plugins for nikto we can use the below command. + + nikto.pl -list-plugins // To list the installed plugins // + +#### Scan for vulnerabilities #### + +For a simple test for we will use test a single url. + + perl nikto.pl -h http://www.host-name.com + +**Sample outputs:** + +This will produce fairly verbose output that may be somewhat confusing at first. Take the time to read through the output to understand what each advisory means. Many of the alerts in Nikto will refer to OSVDB numbers. These are Open Source Vulnerability Database ([http://osvdb.org/][6]) designations. You can search on OSVDB for further information about any vulnerabilities identified. + + $ nikto -h http://www.host-name.com + - Nikto v2.1.4 + --------------------------------------------------------------------------- + + Target IP: 1.2.3.4 + + Target Hostname: host-name.com + + Target Port: 80 + + Start Time: 2012-08-11 14:27:31 + --------------------------------------------------------------------------- + + Server: Apache/2.2.22 (FreeBSD) mod_ssl/2.2.22 OpenSSL/1.0.1c DAV/2 + + robots.txt contains 4 entries which should be manually viewed. + + mod_ssl/2.2.22 appears to be outdated (current is at least 2.8.31) (may depend on server version) + + ETag header found on server, inode: 5918348, size: 121, mtime: 0x48fc943691040 + + mod_ssl/2.2.22 OpenSSL/1.0.1c DAV/2 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell (difficult to exploit). CVE-2002-0082, OSVDB-756. + + Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE + + OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST + + /lists/admin/: PHPList pre 2.6.4 contains a number of vulnerabilities including remote administrative access, harvesting user info and more. Default login to admin interface is admin/phplist + + OSVDB-2322: /gallery/search.php?searchstring=: Gallery 1.3.4 and below is vulnerable to Cross Site Scripting (XSS). Upgrade to the latest version. http://www.securityfocus.com/bid/8288. + + OSVDB-7022: /calendar.php?year=&month=03&day=05: DCP-Portal v5.3.1 is vulnerable to Cross Site Scripting (XSS). http://www.cert.org/advisories/CA-2000-02.html. + + OSVDB-3233: /phpinfo.php: Contains PHP configuration information + + OSVDB-3092: /system/: This might be interesting... + + OSVDB-3092: /template/: This may be interesting as the directory may hold sensitive files or reveal system information. + + OSVDB-3092: /updates/: This might be interesting... + + OSVDB-3092: /README: README file found. + + 6448 items checked: 1 error(s) and 14 item(s) reported on remote host + + End Time: 2012-08-11 15:52:57 (5126 seconds) + --------------------------------------------------------------------------- + + 1 host(s) tested + $ + +**Nikto** is an extremely lightweight, and versatile tool. Because of the fact that Nikto is written in Perl it can be run on almost any host operating system. + +Hope this will will bring you a good idea to scan vulnerbalites for your wordpress website. Following on from my previous article [How To Secure WordPress Website][7] show you **checklist** allows you to secure your WordPress site with as little effort as possible. + +If you have any feedback or comments, feel free to post them in the comment section below. + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/scan-check-wordpress-website-security-using-wpscan-nmap-nikto/ + +作者:[anismaj][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/anis/ +[1]:http://www.unixmen.com/install-wordpress-ubuntu-14-10/ +[2]:http://www.unixmen.com/install-configure-wordpress-4-0-benny-centos-7/ +[3]:http://www.unixmen.com/secure-wordpress-website/ +[4]:http://www.unixmen.com/install-nikto-web-scanner-check-vulnerabilities +[5]:https://cirt.net/nikto/ +[6]:http://osvdb.org/ +[7]:http://www.unixmen.com/secure-wordpress-website/ \ No newline at end of file diff --git a/sources/tech/20150205 Inxi--Find System And Hardware Information On Linux.md b/sources/tech/20150205 Inxi--Find System And Hardware Information On Linux.md new file mode 100644 index 0000000000..efdc243fc6 --- /dev/null +++ b/sources/tech/20150205 Inxi--Find System And Hardware Information On Linux.md @@ -0,0 +1,171 @@ +Inxi: Find System And Hardware Information On Linux +================================================================================ +We already have shown different [applications][1] and ways to find the system and hardware information on Linux. In that series, today we will see how to find such details using **inxi**. It can be used for forum technical support, as a debugging tool, to quickly ascertain user system configuration and hardware. + +**Inxi** is a command line tool that can be used to find the complete system and hardware details such as; + +- Hardware, +- CPU, +- Drivers, +- Xorg, +- Desktop, +- Kernel, +- GCC version, +- Processes, +- RAM usage, +- and other useful information. + +### Installation ### + +Inxi is available in the default repositories of most modern GNU/Linux operating systems. So, we can simply install it by running the following commands. + +**On Debian based system:** + + sudo apt-get install inxi + +**On Fedora:** + + sudo yum install inxi + +**On RHEL based systems:** + +Install EPEL repository: + + sudo yum install epel-release + +Then, install inxi using command: + + sudo yum install inxi + +### Usage ### + +To find the quick view of the system information, run the following command from Terminal. + + inxi + +**Sample output:** + + CPU~Dual core Intel Core i3-2350M CPU (-HT-MCP-) clocked at Min:800.000Mhz Max:1200.000Mhz Kernel~3.13.0-45-generic x86_64 Up~6:41 Mem~1537.7/3861.3MB HDD~500.1GB(52.5% used) Procs~183 Client~Shell inxi~1.9.17 + +Ofcourse, we can retrieve a particular hardware details. For example to retrieve the **Audio/Sound hardware details**, run the following command: + + inxi -A + +**Sample output:** + + Audio: Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel + Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic + +Cool, isn’t it? + +Likewise, you can retrieve the details of **Graphic card** information. + + inxi -G + +**Sample output:** + + Graphics: Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller + X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.0hz + GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0 + +What about harddisk information? That’s also possible. To view the full **harddisk** information, run the following command. + + inxi -D + +**Sample Output:** + + Drives: HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9601325BD size: 500.1GB + +To display the Bios and Motherboard details: + + inxi -M + +**Sample output:** + + Machine: System: Dell (portable) product: Inspiron N5050 + Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012 + +Not only hardware details, it can also displays the **list of available repositories** in our system. + + inxi -r + +**Sample output:** + + Repos: Active apt sources in file: /etc/apt/sources.list + deb http://ubuntu.excellmedia.net/archive/ trusty main restricted + deb-src http://ubuntu.excellmedia.net/archive/ trusty main restricted + deb http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted + deb-src http://ubuntu.excellmedia.net/archive/ trusty-updates main restricted + deb http://ubuntu.excellmedia.net/archive/ trusty universe + . + . + Active apt sources in file: /etc/apt/sources.list.d/intellinuxgraphics.list + deb https://download.01.org/gfx/ubuntu/14.04/main trusty main #Intel Graphics drivers + Active apt sources in file: /etc/apt/sources.list.d/linrunner-tlp-trusty.list + Active apt sources in file: /etc/apt/sources.list.d/wseverin-ppa-trusty.list + deb http://ppa.launchpad.net/wseverin/ppa/ubuntu trusty main + +Inxi will also display the Weather details of your location. Surprised? Yes, It should. + + inxi -W Erode,Tamilnadu + +Here **Erode** is the District and **Tamilnadu** is a state in India. + +Sample output: + + Weather: Conditions: 79 F (26 C) - Clear Time: February 4, 6:00 PM IST + +### Viewing Complete Hardware details ### + +Tired of finding each hardware details? Well, you can list all details at once using command: + + inxi -F + +**Sample output:** + + System: Host: sk Kernel: 3.13.0-45-generic x86_64 (64 bit) Desktop: LXDE (Openbox 3.5.2) Distro: Ubuntu 14.04 trusty + Machine: System: Dell (portable) product: Inspiron N5050 + Mobo: Dell model: 01HXXJ version: A05 Bios: Dell version: A05 date: 08/03/2012 + CPU: Dual core Intel Core i3-2350M CPU (-HT-MCP-) cache: 3072 KB flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) + Clock Speeds: 1: 800.00 MHz 2: 1000.00 MHz 3: 800.00 MHz 4: 800.00 MHz + Graphics: Card: Intel 2nd Generation Core Processor Family Integrated Graphics Controller + X.Org: 1.15.1 drivers: intel (unloaded: fbdev,vesa) Resolution: 1366x768@60.0hz + GLX Renderer: Mesa DRI Intel Sandybridge Mobile GLX Version: 3.0 Mesa 10.3.0 + Audio: Card: Intel 6 Series/C200 Series Family High Definition Audio Controller driver: snd_hda_intel + Sound: Advanced Linux Sound Architecture ver: k3.13.0-45-generic + Network: Card-1: Qualcomm Atheros AR9285 Wireless Network Adapter (PCI-Express) driver: ath9k + IF: wlan0 state: up mac: + Card-2: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller driver: r8169 + IF: eth0 state: down mac: + Drives: HDD Total Size: 500.1GB (52.5% used) 1: id: /dev/sda model: ST9500325AS size: 500.1GB + Partition: ID: / size: 455G used: 245G (57%) fs: ext4 ID: /boot size: 236M used: 159M (72%) fs: ext2 + ID: swap-1 size: 4.19GB used: 0.00GB (0%) fs: swap + RAID: No RAID devices detected - /proc/mdstat and md_mod kernel raid module present + Sensors: System Temperatures: cpu: 64.5C mobo: N/A + Fan Speeds (in rpm): cpu: N/A + Info: Processes: 186 Uptime: 6:52 Memory: 1547.2/3861.3MB Client: Shell (bash) inxi: 1.9.17 + +As you see in the above, inxi displays the complete hardware details. + +For more details, refer the man pages. + + man inxi + +### Conclusion ### + +Are you searching for a simple tool which displays your complete system and hardware details? Then, don’t look anywhere, inxi will give you what actually want. And, it is light weight tool available in your default repositories. What else you want more? Give it a try, you won’t be disappointed. + +Cheers! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/inxi-find-system-hardware-information-linux/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:http://www.unixmen.com/screenfetch-bash-screenshot-information-tool/ \ No newline at end of file diff --git a/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md b/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md new file mode 100644 index 0000000000..73d91116cb --- /dev/null +++ b/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md @@ -0,0 +1,208 @@ +Linux Basics: Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7 +================================================================================ +Some times you might want to use more than one IP address for your network interface card. What are you going to do? Buy an extra network card and assign new IP? No, It’s not necessary(atleast in the small networks). We can now assign multiple ip addresses to single network interface card in CentOS / RHEL 7 systems. Curious to know how? Well, Follow me, It is not that difficult. + +First, let us find the IP address of the network card. In my CentOS 7 server, I use only one network card. + +Run the following command with root user privileges: + + ip addr + +Sample output: + + 1: lo: mtu 65536 qdisc noqueue state UNKNOWN + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + 2: enp0s3: mtu 1500 qdisc pfifo_fast state UP qlen 1000 + link/ether 08:00:27:80:63:19 brd ff:ff:ff:ff:ff:ff + inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3 + valid_lft forever preferred_lft forever + +As you see in the above output, my network card name is enp0s3, and its IP address is 192.168.1.150. + +Well, as you may know, the the network card configuration files of your system is stored under **/etc/sysconfig/network-scripts/** directory. Each cards details will be stored in different names, for example **ifcfg-enp0s3**. + +Let us see the details of **ifcfg-enp0s3**. + + cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 + +Sample output: + + TYPE="Ethernet" + BOOTPROTO="none" + DEFROUTE="yes" + IPV4_FAILURE_FATAL="no" + IPV6INIT="yes" + IPV6_AUTOCONF="yes" + IPV6_DEFROUTE="yes" + IPV6_FAILURE_FATAL="no" + NAME="enp0s3" + UUID="e9f9caef-cb9e-4a19-aace-767c6ee6f849" + ONBOOT="yes" + HWADDR="08:00:27:80:63:19" + IPADDR0="192.168.1.150" + PREFIX0="24" + GATEWAY0="192.168.1.1" + DNS1="192.168.1.1" + IPV6_PEERDNS="yes" + IPV6_PEERROUTES="yes" + +Okay, now we will assign multiple addresses in the same subnet. + +Edit file **/etc/sysconfig/network-scripts/ifcfg-enp0s3**: + + vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 + +Add extra IP addresses one by one as shown below. + + TYPE="Ethernet" + BOOTPROTO="none" + DEFROUTE="yes" + IPV4_FAILURE_FATAL="no" + IPV6INIT="yes" + IPV6_AUTOCONF="yes" + IPV6_DEFROUTE="yes" + IPV6_FAILURE_FATAL="no" + NAME="enp0s3" + UUID="933cdc9b-b383-4ddd-b219-5a72c69c9cf0" + ONBOOT="yes" + HWADDR="08:00:27:3F:AB:68" + IPADDR0="192.168.1.150" + IPADDR1="192.168.1.151" + IPADDR2="192.168.1.152" + PREFIX0="24" + GATEWAY0="192.168.1.1" + DNS1="192.168.1.1" + IPV6_PEERDNS="yes" + IPV6_PEERROUTES="yes" + +As you see above, I have added two more IP addresses: **IPADDR1=”192.168.1.151″ & IPADDR2=”192.168.1.152″** + +Like wise, you can add as many a IP addresses you want. + +Finally, save and close the file. Restart network service to take effect the changes. + + systemctl restart network + +Now, let us check the IP addresses have been added or not. + + ip addr + +Sample output: + + : lo: mtu 65536 qdisc noqueue state UNKNOWN + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + 2: enp0s3: mtu 1500 qdisc pfifo_fast state UP qlen 1000 + link/ether 08:00:27:3f:ab:68 brd ff:ff:ff:ff:ff:ff + inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3 + valid_lft forever preferred_lft forever + inet 192.168.1.151/24 brd 192.168.1.255 scope global secondary enp0s3 + valid_lft forever preferred_lft forever + inet 192.168.1.152/24 brd 192.168.1.255 scope global secondary enp0s3 + valid_lft forever preferred_lft forever + inet6 fe80::a00:27ff:fe3f:ab68/64 scope link + valid_lft forever preferred_lft forever + +As you see above, the single network interface card has three IP addresses. + +Let us ping the newly added IP addresses: + + ping -c 4 192.168.1.151 + +Sample output: + + PING 192.168.1.151 (192.168.1.151) 56(84) bytes of data. + 64 bytes from 192.168.1.151: icmp_seq=1 ttl=64 time=0.048 ms + 64 bytes from 192.168.1.151: icmp_seq=2 ttl=64 time=0.075 ms + 64 bytes from 192.168.1.151: icmp_seq=3 ttl=64 time=0.077 ms + 64 bytes from 192.168.1.151: icmp_seq=4 ttl=64 time=0.077 ms + + --- 192.168.1.151 ping statistics --- + 4 packets transmitted, 4 received, 0% packet loss, time 2999ms + rtt min/avg/max/mdev = 0.048/0.069/0.077/0.013 ms + +---------- + + ping -c 4 192.168.1.152 + +Sample output: + + PING 192.168.1.152 (192.168.1.152) 56(84) bytes of data. + 64 bytes from 192.168.1.152: icmp_seq=1 ttl=64 time=0.034 ms + 64 bytes from 192.168.1.152: icmp_seq=2 ttl=64 time=0.075 ms + 64 bytes from 192.168.1.152: icmp_seq=3 ttl=64 time=0.073 ms + 64 bytes from 192.168.1.152: icmp_seq=4 ttl=64 time=0.075 ms + + --- 192.168.1.152 ping statistics --- + 4 packets transmitted, 4 received, 0% packet loss, time 2999ms + rtt min/avg/max/mdev = 0.034/0.064/0.075/0.018 ms + +If you want to use **different subnet**, then you can change the **PREFIX0=24** line to different subnet, such as **PREFIX1=16**. + +For example, I am going to add Class A IP address(**ex.10.0.0.1**) to my network card. + + TYPE="Ethernet" + BOOTPROTO="none" + DEFROUTE="yes" + IPV4_FAILURE_FATAL="no" + IPV6INIT="yes" + IPV6_AUTOCONF="yes" + IPV6_DEFROUTE="yes" + IPV6_FAILURE_FATAL="no" + NAME="enp0s3" + UUID="933cdc9b-b383-4ddd-b219-5a72c69c9cf0" + ONBOOT="yes" + HWADDR="08:00:27:3F:AB:68" + IPADDR0="192.168.1.150" + IPADDR1="192.168.1.151" + IPADDR2="192.168.1.152" + IPADDR3="10.0.0.1" + PREFIX0="24" + PREFIX1=16 + GATEWAY0="192.168.1.1" + DNS1="192.168.1.1" + IPV6_PEERDNS="yes" + IPV6_PEERROUTES="yes" + +Do you notice that I have added a Class A type address(10.0.0.1) and prefix=16. + +Save and close the file. Restart network service, + +Then, ping the new added IP: + + ping -c 4 10.0.0.1 + +Sample output: + + PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. + 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.097 ms + 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.073 ms + 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.074 ms + 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.075 ms + + --- 10.0.0.1 ping statistics --- + 4 packets transmitted, 4 received, 0% packet loss, time 3000ms + rtt min/avg/max/mdev = 0.073/0.079/0.097/0.014 ms + +Similarly, you can add different Gateways too. + +That’s it. + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/linux-basics-assign-multiple-ip-addresses-single-network-interface-card-centos-7/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ \ No newline at end of file diff --git a/sources/tech/20150205 zBackup--A versatile deduplicating backup tool.md b/sources/tech/20150205 zBackup--A versatile deduplicating backup tool.md new file mode 100644 index 0000000000..62eee8521c --- /dev/null +++ b/sources/tech/20150205 zBackup--A versatile deduplicating backup tool.md @@ -0,0 +1,63 @@ +zBackup – A versatile deduplicating backup tool +================================================================================ +zbackup is a globally-deduplicating backup tool, based on the ideas found in rsync. Feed a large .tar into it, and it will store duplicate regions of it only once, then compress and optionally encrypt the result. Feed another .tar file, and it will also re-use any data found in any previous backups. This way only new changes are stored, and as long as the files are not very different, the amount of storage required is very low. Any of the backup files stored previously can be read back in full at any time. + +### zBackup Features ### + +Parallel LZMA or LZO compression of the stored data +Built-in AES encryption of the stored data +Possibility to delete old backup data +Use of a 64-bit rolling hash, keeping the amount of soft collisions to zero +Repository consists of immutable files. No existing files are ever modified +Written in C++ only with only modest library dependencies +Safe to use in production +Possibility to exchange data between repos without recompression + +### Install zBackup in ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install zbackup + +### Using zBackup ### + +zbackup init initializes a backup repository for the backup files to be stored. + + zbackup init [--non-encrypted] [--password-file ~/.my_backup_password ] /my/backup/repo + +zbackup backup backups a tar file generated by tar c to the repository initialized using zbackup init + + zbackup [--password-file ~/.my_backup_password ] [--threads number_of_threads ] backup /my/backup/repo/backups/backup-`date ‘+%Y-%m-%d'` + +zbackup restore restores the backup file to a tar file. + + zbackup [--password-file ~/.my_backup_password [--cache-size cache_size_in_mb restore /my/backup/repo/backups/backup-`date ‘+%Y-%m-%d'` > /my/precious/backup-restored.tar + +### Available Options ### + +- -non-encrypted -- Do not encrypt the backup repository. +- --password-file ~/.my_backup_password -- Use the password file specified at ~/.my_backup_password to encrypt the repository and backup file, or to decrypt the backup file. +- --threads number_of_threads -- Limit the partial LZMA compression to number_of_threads needed. Recommended for 32-bit architectures. +- --cache-size cache_size_in_mb -- Use the cache size provided by cache_size_in_mb to speed up the restoration process. + +### zBackup files ### + +~/.my_backup_password Used to encrypt the repository and backup file, or to decrypt the backup file. See zbackup for further details. + +/my/backup/repo The directory used to hold the backup repository. + +/my/precious/restored-tar The tar used for restoring the backup. + +/my/backup/repo/backups/backup-`date ‘+%Y-%m-%d'` Specifies the backup file. + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/zbackup-a-versatile-deduplicating-backup-tool.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix \ No newline at end of file From 4f155fc5d531e7c61da645addeda044cce2f6803 Mon Sep 17 00:00:00 2001 From: shipsw Date: Thu, 5 Feb 2015 16:25:32 +0800 Subject: [PATCH 206/725] Delete 20140821 What is a good EPUB reader on Linux.md --- ...821 What is a good EPUB reader on Linux.md | 67 ------------------- 1 file changed, 67 deletions(-) delete mode 100644 sources/share/20140821 What is a good EPUB reader on Linux.md diff --git a/sources/share/20140821 What is a good EPUB reader on Linux.md b/sources/share/20140821 What is a good EPUB reader on Linux.md deleted file mode 100644 index 71a97240e4..0000000000 --- a/sources/share/20140821 What is a good EPUB reader on Linux.md +++ /dev/null @@ -1,67 +0,0 @@ -Translating by shipsw -What is a good EPUB reader on Linux -================================================================================ -If the habit on reading books on electronic tablets is still on its way, reading books on a computer is even rarer. It is hard enough to focus on the classics of the 16th century literature, so who needs the Facebook chat pop up sound in the background in addition? But if for some reasons you wish to open an electronic book in your computer, chances are that you will need specific software. Indeed, most editors agreed with using the EPUB format for electronic books (for "Electronic PUBlication"). Hopefully, Linux is not deprived of good programs capable of dealing with such format. In short, here is a non-exhaustive list of good EPUB readers on Linux. - -### 1. Calibre ### - -![](https://farm6.staticflickr.com/5577/14975176155_0989766bb3_z.jpg) - -Let's dive in with maybe the biggest name of that list: [Calibre][1]. More than just an ebook reader, Calibre is a fully packaged e-library. It supports a plethora of formats (almost every I can think of), integrates a reader, a manager, a meta-data editor which can download covers from the Internet, an EPUB editor, a news reader, and a search engine to download additional books. To top it all, the interface is slick and has nothing to envy to other professional software. The only potential downside is that if you are looking for an EPUB reader, and are not interested in the whole library manager aspect, the program is too heavy for your needs. - -### 2. FBReader ### - -![](https://farm4.staticflickr.com/3900/14975176165_f2e4afd2fa_o.jpg) - -[FBReader][2] is also a library manager, but in a lighter way than Calibre. The interface is more sober, and is clearly cut in two: (1) the library aspect where you can add files, edit the meta-data, or download new books, and (2) the reader aspect. If you like simplicity, you might enjoy this program. I personally appreciate its straightforward tag and series system for classifying books. - -### 3. Cool Reader ### - -![](https://farm6.staticflickr.com/5594/14975176195_ac46952150.jpg) - -For all of you who are just looking for a way to visualize the content of an EPUB file, I recommend [Cool Reader][5]. In the spirit of Linux applications which do only one thing and do it well, Cool Reader is optimized to just open an EPUB file, and navigate through it via handy shortcuts. And since it is based on Qt, it also follows Qt's mentality by giving a ton of settings to mess around with. - -### 4. Okular ### - -![](https://farm6.staticflickr.com/5559/14788504729_5a2ec2c11b_z.jpg) - -Since we were talking about Qt applications, one of KDE's main document viewer, [Okular][3], also has the capacity to view EPUB files, once an EPUB library has been installed on the system. However, this is probably not a very good option if you are not a KDE user. - -### 5. pPub ### - -![](https://farm4.staticflickr.com/3835/14788504789_e7c742fa20_z.jpg) - -[pPub][4] is an old project that you can still find on Github. Its latest change seems to have been made two years ago. However, pPub is one of those programs that really deserve a second life. Written in Python and based on GTK3 and WebKit, pPub is lightweight and intuitive. The interface probably needs a little updating and is beyond sober, but the core is very good. It even supports JavaScript. So please, someone kick that up again. - -### 6. epub ### - -![](https://farm4.staticflickr.com/3871/14788844378_16fb51a1b9_z.jpg) - -If all you need is a quick and easy way to check the content of an EPUB file, without caring about any fancy GUI, maybe an EPUB reader with command line interface might just do. [epub][6] is a minimalistic EPUB reader written in Python, which allows you to read an EPUB file in a terminal environment. You can switch between chapter/TOC views, up/down a page, and nothing more. This is as simple as any EPUB reader can possibly get. - -### 7. Sigil ### - -![](https://farm4.staticflickr.com/3921/14788640417_7940627871_z.jpg) - -Finally, last of the list is not actually an EPUB reader, but more of a standalone editor. [Sigil][7] is able to extract the content of an EPUB file, and break it down for what it really is: xhtml text, images, styles, and sometimes audio. The interface is a lot more complex than the one for a basic reader, but remains clear and well thought, on par with the features it provides. I particularly appreciate the tab system. If you are familiar with editing web pages, you will be in know territory here. - -To conclude, there are a lot of open source EPUB readers out there. Some do nothing more, while others go way beyond that. As usual, I recommend using the one that makes the most sense for you to use. If you know more good EPUB readers on Linux that you like, please let us know in the comments. - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/2014/08/good-epub-reader-linux.html - -作者:[Adrien Brochard][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/adrien -[1]:http://calibre-ebook.com/ -[2]:http://fbreader.org/ -[3]:http://okular.kde.org/ -[4]:https://github.com/sakisds/pPub -[5]:http://crengine.sourceforge.net/ -[6]:https://github.com/rupa/epub -[7]:https://github.com/user-none/Sigil From 83fe0cbbacbcc73665def0cdcd1bfe95e003b024 Mon Sep 17 00:00:00 2001 From: shipsw Date: Thu, 5 Feb 2015 16:26:55 +0800 Subject: [PATCH 207/725] 20140821 What is a good EPUB reader on Linux.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 20140821 What is a good EPUB reader on Linux.md翻译完毕 --- ...821 What is a good EPUB reader on Linux.md | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 translated/share/20140821 What is a good EPUB reader on Linux.md diff --git a/translated/share/20140821 What is a good EPUB reader on Linux.md b/translated/share/20140821 What is a good EPUB reader on Linux.md new file mode 100644 index 0000000000..2b919ee6bb --- /dev/null +++ b/translated/share/20140821 What is a good EPUB reader on Linux.md @@ -0,0 +1,67 @@ +Linux版EPUB阅读器 +================================================================================ + +如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了。专注阅读16世纪的书是非常困难的了,没人希望后台蹦出Facebook聊天窗口。但是如果你非要在电脑上打开电子书的话,那么你需要一个电子书阅读软件。大多数编辑支持使用EPUB格式来存放电子书(电子出版物)。幸运的书,linux上从不缺乏此类软件。以下书一些Linux上比较好的EPUB阅读软件。 + +### 1. Calibre ### + +![](https://farm6.staticflickr.com/5577/14975176155_0989766bb3_z.jpg) + +先从列表中最有名的软件开始: [Calibre][1]。Calibre 不仅仅是个阅读器,他还是个电子图书馆。软件支持几乎所有的格式,集成了阅读器,管理器,一个可以从互联网下载书籍封面的元数据编辑器,一个EPUB编辑器,新闻阅读器和一个用来下载电子书的搜索引擎。可喜的是,界面丝毫不逊色专业的阅读软件。唯一的缺点书如果你只想要一个EPUB阅读器的话,这个软件还是太大了。 + +### 2. FBReader ### + +![](https://farm4.staticflickr.com/3900/14975176165_f2e4afd2fa_o.jpg) + +[FBReader][2] 也是一个图书馆管理软件,但是比Calibre小。界面简洁分为两个部分:左边书文件管理、元数据编辑、和下载新书等功能;右边书阅读区。如果你喜欢简洁,这个软件挺不错。我个人非常喜欢这类直观标记书籍和分类的做法。 + +### 3. Cool Reader ### + +![](https://farm6.staticflickr.com/5594/14975176195_ac46952150.jpg) + +对于那些只想想看EPUB书内容的用户,我推荐 [Cool Reader][5]。遵循Linux应用程序的规则,Cool Reader 做了优化,每次只打开一个EPUB文件,可以使用简单的快捷键进行阅读和导航。由于程序书基于Qt开发的,所以他也遵循Qt的规则,需要大量的设置项。 + +### 4. Okular ### + +![](https://farm6.staticflickr.com/5559/14788504729_5a2ec2c11b_z.jpg) + +除了Qt应用程序,如果安装了EPUB库的话,KDE的文档阅读器[Okular][3] 也能打开EPUB文件。尽管如此,如果你不是个KDE用户的话,不推荐这个软件。 + +### 5. pPub ### + +![](https://farm4.staticflickr.com/3835/14788504789_e7c742fa20_z.jpg) + +[pPub][4]是个老项目,Github上可以找到这个项目,他最后的更新已经是在两年前了。尽管如此,这个软件还是值得使用的,pPub是用Python编写的,基于GTK3和WebKit,是个简单轻量的软件。界面可能需要一些更新,不够简洁,但是内部却非常好。软件支持JavaScript。所以,谁来捡起这个项目呢? + +### 6. epub ### + +![](https://farm4.staticflickr.com/3871/14788844378_16fb51a1b9_z.jpg) + +如果你只是想快速简单的查看EPUB文件的内容,不关心任何图形化界面功能的话,最好使用命令行模式打开EPUB。[epub][6] 是一个用Python编写的阅读器,可以在终端环境读取EPUB文件的内容。软件可以在章节、页面见切换,没有其他的功能。这是最简洁的EPUB阅读器了。 + +### 7. Sigil ### + +![](https://farm4.staticflickr.com/3921/14788640417_7940627871_z.jpg) + +最后介绍的这个实际上不是个EPUB阅读器,应该是个独立的编辑器。[Sigil][7] 可以提取EPUB文件的内容并转换成其他格式:xhtml文本,图像,格式,还有其他的内容,比如音频等。界面比基本的阅读器复杂,但是功能还是比较丰富的。我很喜欢他的标签体系,如果你对网页比较熟悉的话,这个软件书很好使用的。 + +总结,有很多的开源的EPUB阅读器,有一些只有最基本的功能, 另外一些功能却太多了。一般来说,我建议你选择一个最合适的使用。如果你有更好的EPUB阅读器,请在评论里告诉我们! + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/2014/08/good-epub-reader-linux.html + +作者:[Adrien Brochard][a] +译者:[shipsw](https://github.com/shipsw) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/adrien +[1]:http://calibre-ebook.com/ +[2]:http://fbreader.org/ +[3]:http://okular.kde.org/ +[4]:https://github.com/sakisds/pPub +[5]:http://crengine.sourceforge.net/ +[6]:https://github.com/rupa/epub +[7]:https://github.com/user-none/Sigil From 4a173669bc422c0253dc0ce674627e57e6ae503c Mon Sep 17 00:00:00 2001 From: shipsw Date: Thu, 5 Feb 2015 16:34:17 +0800 Subject: [PATCH 208/725] 20140917 How to create a software RAID-1 array with mdadm on Linux.md 20140917 How to create a software RAID-1 array with mdadm on Linux.md translating --- ...How to create a software RAID-1 array with mdadm on Linux.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md b/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md index 6e8ee86ad6..bab7cfbcb2 100644 --- a/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md +++ b/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md @@ -1,3 +1,5 @@ +Translating by shipsw + How to create a software RAID-1 array with mdadm on Linux ================================================================================ Redundant Array of Independent Disks (RAID) is a storage technology that combines multiple hard disks into a single logical unit to provide fault-tolerance and/or improve disk I/O performance. Depending on how data is stored in an array of disks (e.g., with striping, mirroring, parity, or any combination thereof), different RAID levels are defined (e.g., RAID-0, RAID-1, RAID-5, etc). RAID can be implemented either in software or with a hardware RAID card. On modern Linux, basic software RAID functionality is available by default. From 67f4b0fcbfa04a41b895cecbdbfb45a6779772f7 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 5 Feb 2015 17:17:05 +0800 Subject: [PATCH 209/725] Delete 20150127 How to limit network bandwidth on Linux.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完成,删除源文档。 --- ...How to limit network bandwidth on Linux.md | 92 ------------------- 1 file changed, 92 deletions(-) delete mode 100644 sources/tech/20150127 How to limit network bandwidth on Linux.md diff --git a/sources/tech/20150127 How to limit network bandwidth on Linux.md b/sources/tech/20150127 How to limit network bandwidth on Linux.md deleted file mode 100644 index 5507b3283d..0000000000 --- a/sources/tech/20150127 How to limit network bandwidth on Linux.md +++ /dev/null @@ -1,92 +0,0 @@ -[Translating] by FSSlc - -How to limit network bandwidth on Linux -================================================================================ -If you often run multiple networking applications on your Linux desktop, or share bandwidth among multiple computers at home, you will want to have a better control over bandwidth usage. Otherwise, when you are downloading a big file with a downloader, your interactive SSH session may become sluggish to the point where it's unusable. Or when you sync a big folder over Dropbox, your roommate may complain that video streaming at her computer gets choppy. - -In this tutorial, I am going to describe two different ways to rate limit network traffic on Linux. - -### Rate Limit an Application on Linux ### - -One way to rate limit network traffic is via a command-line tool called [trickle][1]. The trickle command allows you to shape the traffic of any particular program by "pre-loading" a rate-limited socket library at run-time. A nice thing about trickle is that it runs purely in user-space, meaning you don't need root privilege to restrict the bandwidth usage of a program. To be compatible with trickle, the program must use socket interface with no statically linked library. trickle can be handy when you want to rate limit a program which does not have a built-in bandwidth control functionality. - -To install trickle on Ubuntu, Debian and their derivatives: - - $ sudo apt-get install trickle - -To install trickle on Fedora or CentOS/RHEL (with [EPEL repository][2]): - - $ sudo yum install trickle - -Basic usage of trickle is as follows. Simply put, you prepend trickle (with rate) in front of the command you are trying to run. - - $ trickle -d -u - -This will limit the download and upload rate of to specified values (in KBytes/s). - -For example, set the maximum upload bandwidth of your scp session to 100 KB/s: - - $ trickle -u 100 scp backup.tgz alice@remote_host.com: - -If you want, you can set the maximum download speed (e.g., 300 KB/s) of your Firefox browser by creating a [custom launcher][3] with the following command. - - trickle -d 300 firefox %u - -Finally, trickle can run in a daemon mode, where it can restrict the "aggregate" bandwidth usage of all running programs launched via trickle. To launch trickle as a daemon (i.e., trickled): - - $ sudo trickled -d 1000 - -Once the trickled daemon is running in the background, you can launch other programs via trickle. If you launch one program with trickle, its maximum download rate is 1000 KB/s. If you launch another program with trickle, each of them will be rate limited to 500 KB/s, etc. - -### Rate Limit a Network Interface on Linux ### - -Another way to control your bandwidth resource is to enforce bandwidth limit on a per-interface basis. This is useful when you are sharing your upstream Internet connection with someone else. Like anything else, Linux has a tool for you. [wondershaper][4] exactly does that: rate-limit a network interface. - -wondershaper is in fact a shell script which uses [tc][5] to define traffic shaping and QoS for a specific network interface. Outgoing traffic is shaped by being placed in queues with different priorities, while incoming traffic is rate-limited by packet dropping. - -In fact, the stated goal of wondershaper is much more than just adding bandwidth cap to an interface. wondershaper tries to maintain low latency for interactive sessions such as SSH while bulk download or upload is going on. Also, it makes sure that bulk upload (e.g., Dropbox sync) does not suffocate download, and vice versa. - -To install wondershaper on Ubuntu, Debian and their derivatives: - - $ sudo apt-get install wondershaper - -To install wondershaper on Fedora or CentOS/RHEL (with [EPEL repository][6]): - - $ sudo yum install wondershaper - -Basic usage of wondershaper is as follows. - - $ sudo wondershaper - -For example, to set the maximum download/upload bandwidth for eth0 to 1000Kbit/s and 500Kbit/s, respectively: - - $ sudo wondershaper eth0 1000 500 - -You can remove the rate limit by running: - - $ sudo wondershaper clear eth0 - -If you are interested in how wondershaper works, you can read its shell script (/sbin/wondershaper). - -### Conclusion ### - -In this tutorial, I introduced two different ways to control your bandwidth usages on Linux desktop, on per-application or per-interface basis. Both tools are extremely user-friendly, offering you a quick and easy way to shape otherwise unconstrained traffic. For those of you who want to know more about rate control on Linux, refer to [the Linux bible][7]. - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/limit-network-bandwidth-linux.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/nanni -[1]:http://monkey.org/~marius/trickle -[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[3]:http://xmodulo.com/create-desktop-shortcut-launcher-linux.html -[4]:http://lartc.org/wondershaper/ -[5]:http://lartc.org/manpages/tc.txt -[6]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[7]:http://www.lartc.org/lartc.html From 98d5a2d4547d93f9c6f560d574cec0af05e3fbd4 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 5 Feb 2015 17:36:08 +0800 Subject: [PATCH 210/725] =?UTF-8?q?=E3=80=90translated=E3=80=91=2020150127?= =?UTF-8?q?=20How=20to=20limit=20network=20bandwidth=20on=20Linux.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕,进行上传。 --- ...How to limit network bandwidth on Linux.md | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 translated/tech/20150127 How to limit network bandwidth on Linux.md diff --git a/translated/tech/20150127 How to limit network bandwidth on Linux.md b/translated/tech/20150127 How to limit network bandwidth on Linux.md new file mode 100644 index 0000000000..cc1efc2aef --- /dev/null +++ b/translated/tech/20150127 How to limit network bandwidth on Linux.md @@ -0,0 +1,112 @@ +怎样在 Linux 中限制网络带宽 +================================================================================ +假如你经常在 Linux 桌面上运行多个网络应用,或在家中让多台电脑共享带宽;(这时,)你可能想更好地控制带宽的使用。否则,当你使用下载器下载一个大文件时,交互式 SSH 会话可能会变得缓慢以至不可用;或者当你通过 Dropbox 来同步一个大文件夹时,你的室友可能会抱怨在她的电脑上,视频流变得断断续续。 + +在本教程中,我将为你描述两种 在 Linux 中限制网络流量速率的不同方法。 + +### 在 Linux 中限制一个应用的速率 ### + +限制网络流量速率的一种方法是通过一个名为[trickle][1]的命令行工具。通过在程序运行时,预先加载一个 速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 关于 trickle 命令的一个很好的特征是 它仅在用户空间中运行,这意味着,你不必需要 root 权限来达到限制一个程序的带宽使用的目的。为了与 trickle 程序兼容,这个特定程序必须使用没有静态链接库的套接字接口。当你想对一个不具有内置带宽控制功能的程序进行速率限制时,trickle 可以帮得上忙。 + +在 Ubuntu,Debian 及其衍生发行版中安装 trickle : + +``` +$ sudo apt-get install trickle +``` + +在 Fdora 或 CentOS/RHEL (带有 [EPEL 软件仓库][2]): + +``` +$ sudo yum install trickle +``` + +trickle 的基本使用方法如下。仅需简单地把 trickle 命令(带有速率参数)放在你想运行的命令之前。 + +``` +$ trickle -d -u +``` + +这就可以将 `` 的下载和上传速率限定为特定值(单位 KBytes/s)。 + +例如,将你的 scp 会话的最大上传带宽设定为 100 KB/s: + +``` + $ trickle -u 100 scp backup.tgz alice@remote_host.com: +``` + +如若你想,你可以使用下面的命令为你的 Firefox 浏览器设定最大下载速率(e.g. , 300 KB/s),通过产生一个[自定义启动器][3]的方式。 + +``` +trickle -d 300 firefox %u +``` + +最后, trickle 也可以 以守护进程模式运行,在该模式下,它将会限制所有通过 trickle 启动且正在运行的程序的总的带宽和。 启动 trickle 使其作为一个守护进程(i.e., trickled): + +``` +$ sudo trickled -d 1000 +``` + +一旦 trickled 守护进程在后台运行,你便可以通过 trickle 命令来启动其他程序。假如你通过 trickle 启动一个程序,那么这个程序的最大下载速率将是 1000 KB/s, 假如你再通过 trickle 启动了另一个程序,则每个程序的(下载)速率极限将会被限制为 500 KB/s, 等等。 + +### 在 Linux 中限制一个网络接口的速率 ### + +另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux 有一个工具来为你做这件事。[wondershaper][4]恰好执行限制网络接口速率的任务。 + +wondershaper 实际上是一个 shell 脚本,它使用 [tc][5] 来定义流量调整命令,使用 QoS 来处理特定的网络接口。通过放置被赋予不同的优先级的传出流量在一个队列中,达到限制传出流量速率的目的, 而传入流量通过丢包的方式来达到速率限制的目的。 + +事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如SSH 的低延迟。同样的,它还确保批量上传(e.g. , Dropbox 的同步)不会使得下载“窒息”,反之亦然。 + +在 Ubuntu Debian 及其衍生发行版本 中安装 wondershaper: + +``` +$ sudo apt-get install wondershaper +``` + +在 Fdora 或 CentOS/RHEL (带有 [EPEL 软件仓库][2]) 中安装 wondershaper:(注:这里 链接 2 和 6 一样,可以删除其中之一) + +`` +$ sudo yum install wondershaper +``` + +wondershaper 的基本使用如下: + +``` + $ sudo wondershaper +``` + +举个例子, 将 `eth0` 的最大下载/上传带宽分别设定为 1000Kbit/s 和 500Kbit/s: + +``` +$ sudo wondershaper eth0 1000 500 +``` + +你也可以通过运行下面的命令将速率限制进行消除: + +``` +$ sudo wondershaper clear eth0 +``` + +假如你对 wondershaper 的运行原理感兴趣,你可以阅读其 shell 脚本源文件(/sbin/wondershaper)。 + +### 总结 ### + +在本教程中,我介绍了两种不同的方法,来达到如何在 Linux 桌面环境中,控制每个应用或每个接口的带宽使用的目的。 这些工具对用户都及其友好,都为用户提供了一个快速且容易的方式来调整或限制流量。 对于那些想更多地了解如何在 Linux 中进行速率控制的读者,请参考 [the Linux bible][7]. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/limit-network-bandwidth-linux.html + +作者:[Dan Nanni][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://monkey.org/~marius/trickle +[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[3]:http://xmodulo.com/create-desktop-shortcut-launcher-linux.html +[4]:http://lartc.org/wondershaper/ +[5]:http://lartc.org/manpages/tc.txt +[6]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[7]:http://www.lartc.org/lartc.html From b6bb7300fb197cbe12af24139feda95e51a73d16 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Thu, 5 Feb 2015 17:52:16 +0800 Subject: [PATCH 211/725] Translating by ZTinoZ --- ...x FAQs with Answers--How to check CPU info on Linux.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index c8e49ff8c8..129bcb9824 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -32,7 +32,7 @@ cpuid命令的功能就相当于一个专用的CPU信息工具,它能通过使 ### 4. dmidecode ### -dmidecode命令直接从BIOS的DMI(译者注:桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU flags, maximum/current clock speed, (enabled) core count, L1/L2/L3 cache configuration, and so on. +dmidecode命令直接从BIOS的DMI(译者注:桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU标志寄存器、最大/最近的时钟速度、(所允许的)核心总数、L1/L2/L3缓存配置等等。 $ sudo dmidecode @@ -40,7 +40,7 @@ dmidecode命令直接从BIOS的DMI(译者注:桌面管理接口)数据收 ### 5. hardinfo ### -The hardinfo is a GUI-based system information tool which can give you an easy-to-understand summary of your CPU hardware, as well as other hardware components of your system. +hardinfo是一个基于GUI的系统信息工具,它能展示给你一个易于理解的CPU硬件信息的概况,也包括你的系统其它的一些硬件组成部分。 $ hardinfo @@ -48,7 +48,7 @@ The hardinfo is a GUI-based system information tool which can give you an easy-t ### 6. i7z ### -i7z is a real-time CPU reporting tool dedicated to Intel Core i3, i5 and i7 CPUs. It can display various per-core information in real time, such as Turbo Boost states, CPU frequencies, CPU power states, temperature measurements, and so on. i7z runs in either ncurses-based console mode or QT based GUI. +i7z是一个专供英特尔酷睿i3、i5和i7 CPU的实时CPU报告工具。它能实时显示每个核心的各类信息,比如睿频加速状态、CPU频率、CPU电源状态、温度检测等等。i7z运行在基于ncurses的控制台模式或基于QT的GUI的其中之一上。 $ sudo i7z @@ -56,7 +56,7 @@ i7z is a real-time CPU reporting tool dedicated to Intel Core i3, i5 and i7 CPUs ### 8. likwid-topology ### -[likwid][3] (Like I Knew What I'm Doing) is a collection of command-line tools to measure, configure and display hardware related properties. Among them is likwid-topology which shows CPU hardware (thread/cache/NUMA) topology information. It can also identify processor families (e.g., Intel Core 2, AMD Shanghai). +[likwid][3] (Like I Knew What I'm Doing) 是一个用来测量、配置并显示硬件相关特性的命令行收集工具。其中的likwid拓扑结构能显示CPU硬件(线程/缓存/NUMA)的拓扑结构信息,还能识别处理器家族(比如:Intel Core 2, AMD Shanghai)。 ![](https://farm8.staticflickr.com/7511/15934711707_5dc0793599_b.jpg) From c2428ec2946dcab18566c590fb755856c94e2934 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Thu, 5 Feb 2015 21:14:34 +0800 Subject: [PATCH 212/725] [translating] 20150115 Get back your privacy and control.md --- sources/tech/20150115 Get back your privacy and control.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150115 Get back your privacy and control.md b/sources/tech/20150115 Get back your privacy and control.md index 348a159fc8..915e3b073e 100644 --- a/sources/tech/20150115 Get back your privacy and control.md +++ b/sources/tech/20150115 Get back your privacy and control.md @@ -1,3 +1,4 @@ +zpl1025 Get back your privacy and control over your data in just a few hours: build your own cloud for you and your friends ================================================================================ 40'000+ searches over 8 years! That's my Google Search history. How about yours? (you can find out for yourself [here][1]) With so many data points across such a long time, Google has a very precise idea of what you've been interested in, what's been on your mind, what you are worried about, and how that all changed over the years since you first got that Google account. @@ -1110,4 +1111,4 @@ via: https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/ [35]:http://owncloud.org/ [36]:http://owncloud.org/install/ [37]:https://code.google.com/p/k9mail/ -[38]:http://doc.owncloud.org/server/7.0/user_manual/files/files.html \ No newline at end of file +[38]:http://doc.owncloud.org/server/7.0/user_manual/files/files.html From 6c6da4cbf78b958920c59f3ecdaf62eff93be19c Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Fri, 6 Feb 2015 08:45:00 +0800 Subject: [PATCH 213/725] Update 20150112 Best GNOME Shell Themes For Ubuntu 14.04.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译这篇文章。 --- .../20150112 Best GNOME Shell Themes For Ubuntu 14.04.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md b/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md index 8836812288..9d42415be9 100644 --- a/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md +++ b/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md @@ -1,3 +1,5 @@ +Translating by FSSlc + Best GNOME Shell Themes For Ubuntu 14.04 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Gnome_Shell_Themes.jpeg) @@ -108,4 +110,4 @@ via: http://itsfoss.com/gnome-shell-themes-ubuntu-1404/ [7]:http://mokaproject.com/ [8]:https://github.com/vivaeltopo/gnome-shell-theme-viva [9]:http://zagortenay333.deviantart.com/art/Ciliora-Prima-Shell-451947568 -[10]:http://itsfoss.com/best-icon-themes-ubuntu-1404/ \ No newline at end of file +[10]:http://itsfoss.com/best-icon-themes-ubuntu-1404/ From da714ce0d97fb8c4d56b3b3a6b3a13ee5df03296 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 6 Feb 2015 08:46:21 +0800 Subject: [PATCH 214/725] PUB:20141210 How to configure rsyslog client for remote logging on CentOS @GOLinux --- ...log client for remote logging on CentOS.md | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) rename {translated/tech => published}/20141210 How to configure rsyslog client for remote logging on CentOS.md (72%) diff --git a/translated/tech/20141210 How to configure rsyslog client for remote logging on CentOS.md b/published/20141210 How to configure rsyslog client for remote logging on CentOS.md similarity index 72% rename from translated/tech/20141210 How to configure rsyslog client for remote logging on CentOS.md rename to published/20141210 How to configure rsyslog client for remote logging on CentOS.md index 08f4c00822..08cda11f5e 100644 --- a/translated/tech/20141210 How to configure rsyslog client for remote logging on CentOS.md +++ b/published/20141210 How to configure rsyslog client for remote logging on CentOS.md @@ -1,8 +1,8 @@ CentOS上配置rsyslog客户端用以远程记录日志 ================================================================================ -**rsyslog**是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置称两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集所有其它主机上的日志数据,这些主机已经将日志配置为发送到服务器。rsyslog的另外一个角色,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上。 +**rsyslog**是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上。 -假定你的网络中已经有一台rsyslog服务器[已经起来并且处于运行中][1],本指南将为你展示如何来设置CentOS系统将其内部日志消息路由到一台远程rsyslog服务器上。这将大大改善你的系统磁盘空间的使用,尤其是你还没有一个独立的用于/var目录的大分区。 +假定你的网络中已经有一台[已经配置好并启动的][1]rsyslog服务器,本指南将为你展示如何来设置CentOS系统将其内部日志消息路由到一台远程rsyslog服务器上。这将大大改善你的系统磁盘空间的使用,尤其是当你还没有一个用于/var目录的独立的大分区。 ### 步骤一: 安装Rsyslog守护进程 ### @@ -35,9 +35,9 @@ CentOS上配置rsyslog客户端用以远程记录日志 *.* @@192.168.1.25:514 -注意,你也可以将rsyslog服务器的IP地址替换成它的DNS名称(FQDN)。 +注意,你也可以将rsyslog服务器的IP地址替换成它的主机名(FQDN)。 -如果你只想要转发指定设备的日志消息,比如说内核设备,那么你可以在rsyslog配置文件中使用以下声明。 +如果你只想要转发服务器上的指定设备的日志消息,比如说内核设备,那么你可以在rsyslog配置文件中使用以下声明。 kern.* @192.168.1.25:514 @@ -51,9 +51,11 @@ CentOS上配置rsyslog客户端用以远程记录日志 # service rsyslog restart -在另外一种环境中,让我们假定你已经在机器上安装了一个名为“foobar”的应用程序,它会在/var/log下生成foobar.log日志文件。现在,你只想要将它的日志定向到rsyslog服务器,这可以通过像下面这样在rsyslog配置文件中加载imfile模块来实现。 +####非 syslog 日志的转发 -首先,加载imfile模块,这必须只做一次。 +在另外一种环境中,让我们假定你已经在机器上安装了一个名为“foobar”的应用程序,它会在/var/log下生成foobar.log日志文件。现在,你想要将它的日志定向到rsyslog服务器,这可以通过像下面这样在rsyslog配置文件中加载imfile模块来实现。 + +首先,加载imfile模块,这只需做一次。 module(load="imfile" PollingInterval="5") @@ -73,8 +75,7 @@ CentOS上配置rsyslog客户端用以远程记录日志 ### 步骤三: 让Rsyslog进程自动启动 ### -To automatically start rsyslog client after every system reboot, run the following command to enable it system-wide: -要让rsyslog客户端在每次系统重启后自动启动,请运行以下命令来在系统范围启用: +要让rsyslog客户端在每次系统重启后自动启动,请运行以下命令: **CentOS 7:** @@ -86,7 +87,7 @@ To automatically start rsyslog client after every system reboot, run the followi ### 小结 ### -在本教程中,我演示了如何将CentOS系统转变成rsyslog客户端以强制它发送日志消息到远程rsyslog服务器。这里我假定rsyslog客户端和服务器之间的连接是安全的(如,在有防火墙保护的公司网络中)。不管在任何情况下,都不要配置rsyslog客户端将日志消息通过不安全的网络转发,或者,特别是通过互联网转发,因为syslog协议是一个明文协议。要进行安全传输,可以考虑使用[TLS/SSL][2]来加密日志消息。 +在本教程中,我演示了如何将CentOS系统转变成rsyslog客户端以强制它发送日志消息到远程rsyslog服务器。这里我假定rsyslog客户端和服务器之间的连接是安全的(如,在有防火墙保护的公司网络中)。不管在任何情况下,都不要配置rsyslog客户端将日志消息通过不安全的网络转发,或者,特别是通过互联网转发,因为syslog协议是一个明文协议。要进行安全传输,可以考虑使用[TLS/SSL][2]来加密日志消息的传输。 -------------------------------------------------------------------------------- @@ -94,7 +95,7 @@ via: http://xmodulo.com/configure-rsyslog-client-centos.html 作者:[Caezsar M][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From e9037331a33689d5a2b324e3c5cb4a147f4d0888 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 6 Feb 2015 09:25:35 +0800 Subject: [PATCH 215/725] PUB:20150122 Linux FAQs with Answers--How to check memory usage on Linux @mr-ping --- ...ers--How to check memory usage on Linux.md | 113 ++++++++++++++++++ ...ers--How to check memory usage on Linux.md | 113 ------------------ 2 files changed, 113 insertions(+), 113 deletions(-) create mode 100644 published/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md delete mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md diff --git a/published/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/published/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md new file mode 100644 index 0000000000..876ee88404 --- /dev/null +++ b/published/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md @@ -0,0 +1,113 @@ +Linux有问必答:如何检查Linux的内存使用状况 +================================================================================ + +>**问题**:我想要监测Linux系统的内存使用状况。有哪些可用的图形界面或者命令行工具来检查当前内存使用情况? + +当涉及到Linux系统性能优化的时候,物理内存是一个最重要的因素。自然的,Linux提供了丰富的选择来监测珍贵的内存资源的使用情况。不同的工具,在监测粒度(例如:全系统范围,每个进程,每个用户),接口方式(例如:图形用户界面,命令行,ncurses)或者运行模式(交互模式,批量处理模式)上都不尽相同。 + +下面是一个可供选择的,但并不全面的图形或命令行工具列表,这些工具用来检查Linux平台中已用和可用的内存。 + +### 1. /proc/meminfo ### + +一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。特定进程的内存信息也可以通过“/proc/\/statm”和“/proc/\/status”来获取。 + + $ cat /proc/meminfo + +![](https://farm8.staticflickr.com/7483/15989497899_bb6afede11_b.jpg) + +### 2. atop ### + +atop命令是用于终端环境的基于ncurses的交互式的系统和进程监测工具。它展示了动态更新的系统资源摘要(CPU, 内存, 网络, 输入/输出, 内核),并且用醒目的颜色把系统高负载的部分以警告信息标注出来。它同样提供了类似于top的线程(或用户)资源使用视图,因此系统管理员可以找到哪个进程或者用户导致的系统负载。内存统计报告包括了总计/闲置内存,缓存的/缓冲的内存和已提交的虚拟内存。 + + $ sudo atop + +![](https://farm8.staticflickr.com/7552/16149756146_893773b84c_b.jpg) + +### 3. free ### + +free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。它提供了一个快照,用于展示总计/闲置的物理内存和系统交换区,以及已使用/闲置的内核缓冲区。 + + $ free -h + +![](https://farm8.staticflickr.com/7531/15988117988_ba8c6b7b63_b.jpg) + +### 4. GNOME System Monitor ### + +GNOME System Monitor 是一个图形界面应用,它展示了包括CPU,内存,交换区和网络在内的系统资源使用率的较近历史信息。它同时也可以提供一个带有CPU和内存使用情况的进程视图。 + + $ gnome-system-monitor + +![](https://farm8.staticflickr.com/7539/15988118078_279f0da494_c.jpg) + +### 5. htop ### + +htop命令是一个基于ncurses的交互式的进程视图,它实时展示了每个进程的内存使用情况。它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享页面大小和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。 + + $ htop + +![](https://farm9.staticflickr.com/8236/8599814378_de071de408_c.jpg) + +### 6. KDE System Monitor ### + +就像GNOME桌面拥有GNOME System Monitor一样,KDE桌面也有它自己的对口应用:KDE System Monitor。这个工具的功能与GNOME版本极其相似,也就是说,它同样展示了一个关于系统资源使用情况,以及带有每个进程的CPU/内存消耗情况的实时历史记录。 + + $ ksysguard + +![](https://farm8.staticflickr.com/7479/15991397329_ec5d786ffd_c.jpg) + +### 7. memstat ### + +memstat工具对于识别正在消耗虚拟内存的可执行部分、进程和共享库非常有用。给出一个进程识别号,memstat即可识别出与之相关联的可执行部分、数据和共享库究竟使用了多少虚拟内存。 + + $ memstat -p + +![](https://farm8.staticflickr.com/7518/16175635905_1880e50055_b.jpg) + +### 8. nmon ### + +nmon工具是一个基于ncurses系统基准测试工具,它能够以交互方式监测CPU、内存、磁盘I/O、内核、文件系统以及网络资源。对于内存使用状况而言,它能够展示像总计/闲置内存、交换区、缓冲的/缓存的内存,虚拟内存页面换入换出的统计,所有这些都是实时的。 + + $ nmon + +![](https://farm9.staticflickr.com/8648/15989760117_30f62f4aba_b.jpg) + +### 9. ps ### + +ps命令能够实时展示每个进程的内存使用状况。内存使用报告里包括了 %MEM (物理内存使用百分比), VSZ (虚拟内存使用总量), 和 RSS (物理内存使用总量)。你可以使用“--sort”选项来对进程列表排序。例如,按照RSS降序排序: + + $ ps aux --sort -rss + +![](https://farm9.staticflickr.com/8602/15989881547_ca40839c19_c.jpg) + +### 10. smem ### + +[smem][1]命令允许你测定不同进程和用户的物理内存使用状况,这些信息来源于“/proc”目录。它利用“按比例分配大小(PSS)”指标来精确量化Linux进程的有效内存使用情况。内存使用分析结果能够输出为柱状图或者饼图类的图形化图表。 + + $ sudo smem --pie name -c "pss" + +![](https://farm8.staticflickr.com/7466/15614838428_eed7426cfe_c.jpg) + +### 11. top ### + +top命令提供了一个运行中进程的实时视图,以及特定进程的各种资源使用统计信息。与内存相关的信息包括 %MEM (内存使用率), VIRT (虚拟内存使用总量), SWAP (换出的虚拟内存使用量), CODE (分配给代码执行的物理内存数量), DATA (分配给非执行的数据的物理内存数量), RES (物理内存使用总量; CODE+DATA), 和 SHR (有可能与其他进程共享的内存数量)。你能够基于内存使用情况或者大小对进程列表进行排序。 + +![](https://farm8.staticflickr.com/7464/15989760047_eb8d51d9f2_c.jpg) + +### 12. vmstat ### + +vmstat命令行工具显示涵盖了CPU、内存、中断和磁盘I/O在内的各种系统活动的瞬时和平均统计数据。对于内存信息而言,命令不仅仅展示了物理内存使用情况(例如总计/已使用内存和缓冲的/缓存的内存),还同样展示了虚拟内存统计数据(例如,内存页的换入/换出,虚拟内存页的换入/换出) + + $ vmstat -s + +![](https://farm9.staticflickr.com/8582/15988236860_3f142008d2_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/check-memory-usage-linux.html + +译者:[Ping](https://github.com/mr-ping) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://xmodulo.com/visualize-memory-usage-linux.html \ No newline at end of file diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md deleted file mode 100644 index a04fdb1f52..0000000000 --- a/translated/tech/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md +++ /dev/null @@ -1,113 +0,0 @@ -Linux有问必答:如何检查Linux的内存使用状况 -================================================================================ - ->**问题**:我想要监测Linux系统的内存使用状况。有哪些可用的图形界面或者命令行工具来检查当前内存使用情况? - -当涉及到Linux系统性能优化的时候,物理内存是一个最重要的因素。自然的,Linux提供了丰富的选择来监测对于珍贵的内存资源的使用。不同的工具,在监测粒度(例如:全系统范围, 每个进程, 每个用户),接口(例如:图形用户界面, 命令行, ncurses)或者运行模式(交互模式, 批量处理模式)上都不尽相同。 - -下面是一个可供选择的但并不全面的图形或命令行工具列表,这些工具用来检查并且释放Linux平台中内存。 - -### 1. /proc/meminfo ### - -一种最简单的方法是通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是许多信息资源的集中展示,这些资源来自于诸如free,top和ps这些与内存相关的工具。从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。特定进程的内存信息也可以通过“/proc//statm”和“/proc//status”来获取。 - - $ cat /proc/meminfo - -![](https://farm8.staticflickr.com/7483/15989497899_bb6afede11_b.jpg) - -### 2. atop ### - -atop命令是用于终端环境的基于ncurses的交互系统和进程监测工具。它展示了动态更新的系统资源(中央处理器, 内存, 网络, 输入/输出, 内核)摘要,并且用醒目的颜色将高系统负载的警告信息标注出来。它同样提供了类似于top的线程(或用户)资源使用视图,因此系统管理员可以指出哪个进程或者用户对系统负载负责。内存统计报告包括了总计/闲置内存,缓存的/缓冲的内存 和 提交的虚拟内存。 - - $ sudo atop - -![](https://farm8.staticflickr.com/7552/16149756146_893773b84c_b.jpg) - -### 3. free ### - -free命令是一个用来获得内存使用概况的快速简单的方法,这些信息从“/proc/meminfo”获取。它提供了一个快照用于展示总计/闲置的物理内存和系统交换区,以及已使用/闲置的内核缓冲区。 - - $ free -h - -![](https://farm8.staticflickr.com/7531/15988117988_ba8c6b7b63_b.jpg) - -### 4. GNOME System Monitor ### - -GNOME System Monitor 是一个图形界面应用,它展示了包括中央处理器,内存,交换区和网络在内的系统资源使用率的短暂历史记录。它同时也可以提供一个带有中央处理器和内存使用情况的进程视图。 - - $ gnome-system-monitor - -![](https://farm8.staticflickr.com/7539/15988118078_279f0da494_c.jpg) - -### 5. htop ### - -htop命令是一个基于ncurses的交互处理视图,它实时展示了每个进程的内存使用情况。它可以报告所有运行中进程的常驻内存大小(RSS)、内存中程序的总大小、库大小、共享文件大小、和脏页面大小。你可以横向或者纵向滚动进程列表进行查看。 - - $ htop - -![](https://farm9.staticflickr.com/8236/8599814378_de071de408_c.jpg) - -### 6. KDE System Monitor ### - -就像GNOME桌面拥有GNOME System Monitor一样,KDE桌面也有它自己的对口应用:KDE System Monitor。这个工具的功能与GNOME版本极其相似,也就是说,它同样展示了一个关于系统资源使用情况,以及带有每个进程的中央处理器/内存消耗情况的实时历史记录。 - - $ ksysguard - -![](https://farm8.staticflickr.com/7479/15991397329_ec5d786ffd_c.jpg) - -### 7. memstat ### - -memstat工具对于识别正在消耗虚拟内存的可执行文件、进程和共享库非常有用。给出一个进程识别号,memstat即可识别出与之相关联的可执行文件、数据和共享库究竟使用了多少虚拟内存。 - - $ memstat -p - -![](https://farm8.staticflickr.com/7518/16175635905_1880e50055_b.jpg) - -### 8. nmon ### - -nmon工具是一个基于ncurses系统基准测试工具,它能够以交互方式监测中央处理器、内存、磁盘输入/输出、内核、文件系统以及网络资源。对于内存使用状况而言,它能够展示像总计/闲置内存、交换区、缓冲的/缓存的内存,虚拟内存页面输入输出统计,所有这些都是实时的。 - - $ nmon - -![](https://farm9.staticflickr.com/8648/15989760117_30f62f4aba_b.jpg) - -### 9. ps ### - -ps命令能够实时展示每个进程的内存使用状况。内存使用报告里包括了 %MEM (物理内存使用百分比), VSZ (虚拟内存使用总量), and RSS (物理内存使用总量)。你可以使用“--sort”选项来对进程列表排序。例如,按照RSS降序排序: - - $ ps aux --sort -rss - -![](https://farm9.staticflickr.com/8602/15989881547_ca40839c19_c.jpg) - -### 10. smem ### - -[smem][1]命令允许你测定不同进程和用户的物理内存使用状况,这些信息来源于“/proc”目录。它利用比例设置大小(PSS)指标来精确量化Linux进程的有效内存使用情况。内存使用分析能够扩展成为柱状图或者饼图类的图形化图表。 - - $ sudo smem --pie name -c "pss" - -![](https://farm8.staticflickr.com/7466/15614838428_eed7426cfe_c.jpg) - -### 11. top ### - -top命令提供了一个运行中进程的实时视图,以及特定进程的各种资源使用统计信息。与内存相关的信息包括 %MEM (内存使用率), VIRT (虚拟内存使用总量), SWAP (交换出的虚拟内存使用量), CODE (分配给代码执行的物理内存数量), DATA (分配给无需执行的数据的物理内存数量), RES (物理内存使用总量; CODE+DATA), and SHR (有可能与其他进程共享的内存数量).你能够基于内存使用情况或者大小对进程列表进行排序。 - -![](https://farm8.staticflickr.com/7464/15989760047_eb8d51d9f2_c.jpg) - -### 12. vmstat ### - -vmstat命令行工具显示涵盖了中央处理器、内存、中断和磁盘输入/输出在内的各种系统活动的瞬时和平均统计数据。对于内存信息而言,命令不仅仅展示了物理内存使用情况(例如总计/已使用内存和缓冲的/缓存的内存),还同样展示了虚拟内存统计数据(例如,内存的页输入/输出,交换输入/输出) - - $ vmstat -s - -![](https://farm9.staticflickr.com/8582/15988236860_3f142008d2_b.jpg) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/check-memory-usage-linux.html - -译者:[Ping](https://github.com/mr-ping) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://xmodulo.com/visualize-memory-usage-linux.html \ No newline at end of file From 2e755abf31633af0dc1da59f6bf5d8ca4c05d248 Mon Sep 17 00:00:00 2001 From: shipsw Date: Fri, 6 Feb 2015 14:36:02 +0800 Subject: [PATCH 216/725] Delete 20140917 How to create a software RAID-1 array with mdadm on Linux.md --- ...ftware RAID-1 array with mdadm on Linux.md | 225 ------------------ 1 file changed, 225 deletions(-) delete mode 100644 sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md diff --git a/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md b/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md deleted file mode 100644 index bab7cfbcb2..0000000000 --- a/sources/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md +++ /dev/null @@ -1,225 +0,0 @@ -Translating by shipsw - -How to create a software RAID-1 array with mdadm on Linux -================================================================================ -Redundant Array of Independent Disks (RAID) is a storage technology that combines multiple hard disks into a single logical unit to provide fault-tolerance and/or improve disk I/O performance. Depending on how data is stored in an array of disks (e.g., with striping, mirroring, parity, or any combination thereof), different RAID levels are defined (e.g., RAID-0, RAID-1, RAID-5, etc). RAID can be implemented either in software or with a hardware RAID card. On modern Linux, basic software RAID functionality is available by default. - -In this post, we'll discuss the software setup of a RAID-1 array (also known as a "mirroring" array), where identical data is written to the two devices that form the array. While it is possible to implement RAID-1 with partitions on a single physical hard drive (as with other RAID levels), it won't be of much use if that single hard drive fails. In fact, that's why most RAID levels normally use multiple physical drives to provide redundancy. In the event of any single drive failure, the virtual RAID block device should continue functioning without issues, and allow us to replace the faulty drive without significant production downtime and, more importantly, with no data loss. However, it does not replace the need to save periodic system backups in external storage. - -Since the actual storage capacity (size) of a RAID-1 array is the size of the smallest drive, normally (if not always) you will find two identical physical drives in RAID-1 setup. - -### Installing mdadm on Linux ### - -The tool that we are going to use to create, assemble, manage, and monitor our software RAID-1 is called mdadm (short for **m**ultiple **d**isks **adm**in). On Linux distros such as Fedora, CentOS, RHEL or Arch Linux, mdadm is available by default. On Debian-based distros, mdadm can be installed with aptitude or apt-get. - -#### Fedora, CentOS or RHEL #### - -As mdadm comes pre-installed, all you have to do is to start RAID monitoring service, and configure it to auto-start upon boot: - - # systemctl start mdmonitor - # systemctl enable mdmonitor - -For CentOS/RHEL 6, use these commands instead: - - # service mdmonitor start - # chkconfig mdmonitor on - -#### Debian, Ubuntu or Linux Mint #### - -On Debian and its derivatives, mdadm can be installed with **aptitude or apt-get**: - - # aptitude install mdadm - -On Ubuntu, you will be asked to configure postfix MTA for sending out email notifications (as part of RAID monitoring). You can skip it for now. - -On Debian, the installation will start with the following explanatory message to help us decide whether or not we are going to install the root filesystem on a RAID array. What we need to enter on the next screen will depend on this decision. Read it carefully: - -![](https://farm4.staticflickr.com/3918/15220883382_c14eb95914_z.jpg) - -Since we will not use our RAID-1 for the root filesystem, we will leave the answer blank: - -![](https://farm6.staticflickr.com/5555/15198241896_29e08b977f.jpg) - -When asked whether we want to start (reassemble) our array automatically during each boot, choose "Yes". Note that we will need to add an entry to the /etc/fstab file later in order for the array to be properly mounted during the boot process as well. - -![](https://farm4.staticflickr.com/3875/15220883342_2b1d689a0a_z.jpg) - -### Partitioning Hard Drives ### - -Now it's time to prepare the physical devices that will be used in our array. For this setup, I have plugged in two 8 GB USB drives that have been identified as /dev/sdb and /dev/sdc from dmesg output: - - # dmesg | less - ----------- - -[ 60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) -[ 75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) - -We will use fdisk to create a primary partition on each disk that will occupy its entire size. The following steps show how to perform this task on /dev/sdb, and assume that this drive hasn't been partitioned yet (otherwise, we can delete the existing partition(s) to start off with a clean disk): - - # fdisk /dev/sdb - -Press 'p' to print the current partition table: - -![](https://farm4.staticflickr.com/3883/15198241836_24625edcf3_z.jpg) - -(if one or more partitions are found, they can be deleted with 'd' option. Then 'w' option is used to apply the changes). - -Since no partitions are found, we will create a new primary partition ['n'] as a primary partition ['p'], assign the partition number = ['1'] to it, and then indicate its size. You can press Enter key to accept the proposed default values, or enter a value of your choosing, as shown in the image below. - -![](https://farm4.staticflickr.com/3875/15034475369_7e72fb9f2e_z.jpg) - -Now repeat the same process for /dev/sdc. - -If we have two drives of different sizes, say 750 GB and 1 TB for example, we should create a primary partition of 750 GB on each of them, and use the remaining space on the bigger drive for another purpose, independent of the RAID array. - -### Create a RAID-1 Array ### - -Once you are done with creating the primary partition on each drive, use the following command to create a RAID-1 array: - - # mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1 - -Where: - -- **-Cv**: creates an array and produce verbose output. -- **/dev/md0**: is the name of the array. -- **-l1** (l as in "level"): indicates that this will be a RAID-1 array. -- **-n2**: indicates that we will add two partitions to the array, namely /dev/sdb1 and /dev/sdc1. - -The above command is equivalent to: - - # mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 - -If alternatively you want to add a spare device in order to replace a faulty disk in the future, you can add '--spare-devices=1 /dev/sdd1' to the above command. - -Answer "y" when prompted if you want to continue creating an array, then press Enter: - -![](https://farm4.staticflickr.com/3894/15034569970_709bd51718.jpg) - -You can check the progress with the following command: - - # cat /proc/mdstat - -![](https://farm6.staticflickr.com/5565/15221267975_701b819e6d_z.jpg) - -Another way to obtain more information about a RAID array (both while it's being assembled and after the process is finished) is: - - # mdadm --query /dev/md0 - # mdadm --detail /dev/md0 (or mdadm -D /dev/md0) - -![](https://farm6.staticflickr.com/5583/15034683868_6c28564e5a_z.jpg) - -Of the information provided by 'mdadm -D', perhaps the most useful is that which shows the state of the array. The active state means that there is currently I/O activity happening. Other possible states are clean (all I/O activity has been completed), degraded (one of the devices is faulty or missing), resyncing (the system is recovering from an unclean shutdown such as a power outage), or recovering (a new drive has been added to the array, and data is being copied from the other drive onto it), to name the most common states. - -### Formatting and Mounting a RAID Array ### - -The next step is formatting (with ext4 in this example) the array: - - # mkfs.ext4 /dev/md0 - -![](https://farm4.staticflickr.com/3849/15034683838_01e34e7196_z.jpg) - -Now let's mount the array, and verify that it was mounted correctly: - - # mount /dev/md0 /mnt - # mount - -![](https://farm6.staticflickr.com/5554/15034696167_c4fc907c8e_z.jpg) - -### Monitor a RAID Array ### - -The mdadm tool comes with RAID monitoring capability built in. When mdadm is set to run as a daemon (which is the case with our RAID setup), it periodically polls existing RAID arrays, and reports on any detected events via email notification or syslog logging. Optionally, it can also be configured to invoke contingency commands (e.g., retrying or removing a disk) upon detecting any critical errors. - -By default, mdadm scans all existing partitions and MD arrays, and logs any detected event to /var/log/syslog. Alternatively, you can specify devices and RAID arrays to scan in mdadm.conf located in /etc/mdadm/mdadm.conf (Debian-based) or /etc/mdadm.conf (Red Hat-based), in the following format. If mdadm.conf does not exist, create one. - - DEVICE /dev/sd[bcde]1 /dev/sd[ab]1 - - ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1 - ARRAY /dev/md1 devices=/dev/sdd1,/dev/sde1 - ..... - - # optional email address to notify events - MAILADDR your@email.com - -After modifying mdadm configuration, restart mdadm daemon: - -On Debian, Ubuntu or Linux Mint: - - # service mdadm restart - -On Fedora, CentOS/RHEL 7: - - # systemctl restart mdmonitor - -On CentOS/RHEL 6: - - # service mdmonitor restart - -### Auto-mount a RAID Array ### - -Now we will add an entry in the /etc/fstab to mount the array in /mnt automatically during boot (you can specify any other mount point): - - # echo "/dev/md0 /mnt ext4 defaults 0 2" << /etc/fstab - -To verify that mount works okay, we now unmount the array, restart mdadm, and remount. We can see that /dev/md0 has been mounted as per the entry we just added to /etc/fstab: - - # umount /mnt - # service mdadm restart (on Debian, Ubuntu or Linux Mint) - or systemctl restart mdmonitor (on Fedora, CentOS/RHEL7) - or service mdmonitor restart (on CentOS/RHEL6) - # mount -a - -![](https://farm6.staticflickr.com/5563/15218183681_63a10da704_z.jpg) - -Now we are ready to access the RAID array via /mnt mount point. To test the array, we'll copy the /etc/passwd file (any other file will do) into /mnt: - -![](https://farm6.staticflickr.com/5593/15034475219_a3476aec0a_o.png) - -On Debian, we need to tell the mdadm daemon to automatically start the RAID array during boot by setting the AUTOSTART variable to true in the /etc/default/mdadm file: - - AUTOSTART=true - -### Simulating Drive Failures ### - -We will simulate a faulty drive and remove it with the following commands. Note that in a real life scenario, it is not necessary to mark a device as faulty first, as it will already be in that state in case of a failure. - -First, unmount the array: - - # umount /mnt - -Now, notice how the output of 'mdadm -D /dev/md0' indicates the changes after performing each command below. - - # mdadm /dev/md0 --fail /dev/sdb1 #Marks /dev/sdb1 as faulty - # mdadm --remove /dev/md0 /dev/sdb1 #Removes /dev/sdb1 from the array - -Afterwards, when you have a new drive for replacement, re-add the drive again: - - # mdadm /dev/md0 --add /dev/sdb1 - -The data is then immediately started to be rebuilt onto /dev/sdb1: - -![](https://farm4.staticflickr.com/3855/15221267875_dfc6af8804_z.jpg) - -Note that the steps detailed above apply for systems with hot-swappable disks. If you do not have such technology, you will also have to stop a current array, and shutdown your system first in order to replace the part: - - # mdadm --stop /dev/md0 - # shutdown -h now - -Then add the new drive and re-assemble the array: - - # mdadm /dev/md0 --add /dev/sdb1 - # mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 - -Hope this helps. - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/2014/09/create-software-raid1-array-mdadm-linux.html - -作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/gabriel From d09b7e88245af9f68f989bfc259fd88b239709ec Mon Sep 17 00:00:00 2001 From: shipsw Date: Fri, 6 Feb 2015 14:40:44 +0800 Subject: [PATCH 217/725] Create 20140917 How to create a software RAID-1 array with mdadm on Linux.md --- ...ftware RAID-1 array with mdadm on Linux.md | 223 ++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md diff --git a/translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md b/translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md new file mode 100644 index 0000000000..ddbdfc8689 --- /dev/null +++ b/translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md @@ -0,0 +1,223 @@ +如何使用linux程序mdadm创建软件RAID1软阵列 +================================================================================ +磁盘冗余阵列(RAID)是将多个物理磁盘结合成一个逻辑磁盘的技术,该技术可以提高磁盘容错性能,提高磁盘的读写速度。根据数据存储的排列(如 条带存储,镜像存储,奇偶或者他们的组合),定义了几个不同级别的RAID(RAID-0,RAID-1,RAID-5 等等)。磁盘阵列可以使用软件或者硬件方式实现。现代Linux操作系统中,基本的软件RAID功能是默认安装的。 + +本文中,我们将介绍软件方式构建RAID-1阵列(镜像阵列),RAID-1将相同的数据写到不同的设备中。虽然可以使用同一个磁盘的两个分区实现RAID-1,但是如果磁盘坏了的话数据就都丢了,所以没什么意义。实际上,这也是为什么大多数RAID级别都使用多个物理磁盘提供冗余。当单盘失效后不影响整个阵列的运行,并且可以在线更换磁盘,最重要的是数据不会丢失。尽管如此,阵列不能取代外部存储的定期备份。 + +由于RAID-1阵列的大小是最小磁盘的大小,一般来说应该使用两个大小相同的磁盘来组建RAID-1。 + +### 安装mdadm ### + +我们将使用mdadm(简称多盘管理)工具创建、组装、管理和监控软件RAID-1。在诸如Fedora、CentOS、RHEL或者Arch Linux 的发行版中,mdadm是默认安装的。在基于Debian的发行版中,可以使用aptitude 或者 apt-get 安装mdadm。 + +#### Fedora, CentOS 或 RHEL #### + +由于adadm是预装的,所以我们只需要开启RAID守护服务,并将其配置成开机启动即可: + + # systemctl start mdmonitor + # systemctl enable mdmonitor + +对于CentOS/RHEL 6系统,使用以下命令: + + # service mdmonitor start + # chkconfig mdmonitor on + +#### Debian, Ubuntu 或 Linux Mint #### + +在Debian或类Debian系统中,mdadm可以使用 **aptitude 或者 apt-get** 安装: + + # aptitude install mdadm + +Ubuntu系统中,会要求为电子邮件通知配置后缀MTA。你可以跳过去。 + +Debian系统中,安装程序会显示以下解释信息,用来帮助我们去判断是否将根目录安装到RAID阵列中。下面的所有操作都有赖于这一步,所以应该仔细阅读他。 + +![](https://farm4.staticflickr.com/3918/15220883382_c14eb95914_z.jpg) + +我们不在根目录使用RAID-1,所以留空。 + +![](https://farm6.staticflickr.com/5555/15198241896_29e08b977f.jpg) + +提示是否开机启动阵列的时候,选择是。注意,这里需要往/etc/fstab 文件中添加一个条目使得系统启动的时候正确挂载阵列。 + +![](https://farm4.staticflickr.com/3875/15220883342_2b1d689a0a_z.jpg) + +### 硬盘分区 ### + +现在开始准备建立阵列需要的硬盘。这里往插入两个8GB的usb磁盘,使用dmesg命令设备显示设备 /dev/sdb 和 /dev/sdc + + # dmesg | less + +---------- + +[ 60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) +[ 75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) + +我们使用fdisk为每个磁盘建立一个大小为8G的主分区。以下步骤是如何在/dev/sdb上建立分区,假设次磁盘从未被分区(如果有其他分区的话,可以删掉): + + # fdisk /dev/sdb + +按p键输出现在的分区表: + +![](https://farm4.staticflickr.com/3883/15198241836_24625edcf3_z.jpg) + +(如果有分区的话,可以使用 d 选项删除,w 选项应用更改)。 + +磁盘上没有分区,所以我们使用命令 ['n'] 创建一个主分区['p'], 分配分区号为['1'] 并且指定大小。你可以按回车使用默认值,或者输入一个你想设置的值。如下图: + +![](https://farm4.staticflickr.com/3875/15034475369_7e72fb9f2e_z.jpg) + +用同样的方法为/dev/sdc 分区。 + +如果我们有两个不同容量的硬盘,比如 750GB 和 1TB的话,我们需要在每个磁盘上分出一个750GB的主分区,大盘剩下的空间可以用作他用,不加入磁盘阵列。 + +### 创建 RAID-1 阵列 ### + +磁盘分区完成后,我们可以使用以下命令创建 RAID-1 阵列: + + # mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1 + +说明: + +- **-Cv**: 创建一个阵列并打印出详细信息。 +- **/dev/md0**: 阵列名称。 +- **-l1** (l as in "level"): 指定阵列类型为 RAID-1 。 +- **-n2**: 指定我们将两个分区加入到阵列中去,分别为/dev/sdb1 和 /dev/sdc1 + +以上命令和下面的等价: + + # mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 + +如果你想在在磁盘失效时添加另外一个磁盘到阵列中,可以指定 '--spare-devices=1 /dev/sdd1' 到以上命令。 + +输入 “y” 继续创建阵列,回车: + +![](https://farm4.staticflickr.com/3894/15034569970_709bd51718.jpg) + +可以使用以下命令查看进度: + + # cat /proc/mdstat + +![](https://farm6.staticflickr.com/5565/15221267975_701b819e6d_z.jpg) + +另外一个获取阵列信息的方法是: + + # mdadm --query /dev/md0 + # mdadm --detail /dev/md0 (or mdadm -D /dev/md0) + +![](https://farm6.staticflickr.com/5583/15034683868_6c28564e5a_z.jpg) + +'mdadm -D'命令提供的信息中,最重要就是阵列状态类。激活状态说明阵列正在进行读写操作。其他几个状态分别为 完成(读写完成)、降级(有一块磁盘失效或丢失)或者恢复中(一张新盘已插入,系统正在写入数据)。这几个状态涵盖类大多数情况。 + +### 格式化或加载磁盘阵列 ### + +下一步就是格式化阵列了,本例中使用ext4格式: + + # mkfs.ext4 /dev/md0 + +![](https://farm4.staticflickr.com/3849/15034683838_01e34e7196_z.jpg) + +现在可以加载阵列并验证其正常加载: + + # mount /dev/md0 /mnt + # mount + +![](https://farm6.staticflickr.com/5554/15034696167_c4fc907c8e_z.jpg) + +### 监控磁盘阵列 ### + +mdadm工具内置有磁盘阵列监控功能。当mdadm作为守护程序运行的时候(就像我们上文那样),会周期性的检测阵列运行状态,将检测到的信息通过电子邮件或者系统日志报告上来。当然,也可以配置其在发生致命性错误的时候调用紧急命令。 + +mdadm默认会记录所有已知分区和阵列的事件,并将他们记录到 /var/log/syslog中。或者你可以在配置文件中(/etc/mdadm/mdadm.conf debian系统 /etc/mdadm.conf 红帽子系统)以以下格式指定监控设备或者阵列。如果mdadm.conf文件不存在,你可以创建一个。 + + DEVICE /dev/sd[bcde]1 /dev/sd[ab]1 + + ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1 + ARRAY /dev/md1 devices=/dev/sdd1,/dev/sde1 + ..... + + # optional email address to notify events + MAILADDR your@email.com + +编辑完毕mdadm配置文件后,重启mdadm服务: + +Debian系统,Ubuntu或者Linux Mint: + + # service mdadm restart + +Fedora, CentOS 或 RHEL 7: + + # systemctl restart mdmonitor + +CentOS或者RHEL 6: + + # service mdmonitor restart + +### 自动加载阵列 ### + +现在我们在/etc/fstab中加入条目使得系统启动的时候将阵列挂载到/mnt目录下: + + # echo "/dev/md0 /mnt ext4 defaults 0 2" << /etc/fstab + +为了验证挂载脚本工作正常,我们首先卸载阵列,重启mdadm,然后重新加载。可以看到/dev/md0已经安装我们添加到/etc/fstab中的条目加载了: + + # umount /mnt + # service mdadm restart (on Debian, Ubuntu or Linux Mint) + or systemctl restart mdmonitor (on Fedora, CentOS/RHEL7) + or service mdmonitor restart (on CentOS/RHEL6) + # mount -a + +![](https://farm6.staticflickr.com/5563/15218183681_63a10da704_z.jpg) + +现在我们的阵列已经可以访问类,拷贝文件/etc/passwd到/mnt中测试一下: + +![](https://farm6.staticflickr.com/5593/15034475219_a3476aec0a_o.png) + +Debian系统中,需要在/etc/default/mdadm 设置 AUTOSTART 变量为 true 才能使mdadm守护程序在开机时自动加载阵列: + + AUTOSTART=true + +### 模拟磁盘丢失故障 ### + +我们将使用以下命令卸载磁盘来模拟磁盘故障。注意,在实际应用中,磁盘已经上故障状态了,不需要卸载。 + +首先,卸载阵列: + + # umount /mnt + +现在注意每次执行命令后 'mdadm -D /dev/md0' 的输出。 + + # mdadm /dev/md0 --fail /dev/sdb1 #Marks /dev/sdb1 as faulty + # mdadm --remove /dev/md0 /dev/sdb1 #Removes /dev/sdb1 from the array + +然后,如果你有个备用盘的话,重新添加以下: + + # mdadm /dev/md0 --add /dev/sdb1 + +数据会被自动添加到备用盘 /dev/sdb1 上: + +![](https://farm4.staticflickr.com/3855/15221267875_dfc6af8804_z.jpg) + +注意以上所述步骤只适合支持磁盘热拔插的系统,在不支持热拔插的系统中,还是得停止阵列并关机后更换备用盘: + + # mdadm --stop /dev/md0 + # shutdown -h now + +最后将新驱动器重新添加到阵列中: + + # mdadm /dev/md0 --add /dev/sdb1 + # mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 + +希望本文对你有所帮助 + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/2014/09/create-software-raid1-array-mdadm-linux.html + +作者:[Gabriel Cánepa][a] +译者:[shipsw](https://github.com/shipsw) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel From 1f9e2847f5fc3eea5db504bf5430ce2f9431ff86 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 6 Feb 2015 15:42:19 +0800 Subject: [PATCH 218/725] Translating by ZTinoZ --- ...s with Answers--How to check CPU info on Linux.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index 129bcb9824..da72d8527b 100644 --- a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -62,7 +62,7 @@ i7z是一个专供英特尔酷睿i3、i5和i7 CPU的实时CPU报告工具。它 ### 9. lscpu ### -The lscpu command summarizes /etc/cpuinfo content in a more user-friendly format, e.g., the number of (online/offline) CPUs, cores, sockets, NUMA nodes. +lscpu命令用一个更加用户友好的格式统计了 /etc/cpuinfo 的内容,比如CPU、核心、套接字、NUMA节点的数量(线上/线下)。 $ lscpu @@ -70,7 +70,7 @@ The lscpu command summarizes /etc/cpuinfo content in a more user-friendly format ### 10. lshw ### -The **lshw** command is a comprehensive hardware query tool. Unlike other tools, lshw requires root privilege because it query DMI information in system BIOS. It can report the total number of cores and enabled cores, but miss out on information such as L1/L2/L3 cache configuration. The GTK version lshw-gtk is also available. +**lshw**命令是一个综合性硬件查询工具。不同于其它工具,lshw需要root特权才能运行因为它是在BIOS系统里查询DMI(译者注:桌面管理接口)信息。它能报告总核心数和可用核心数,但是会遗漏掉一些信息比如L1/L2/L3缓存配置。GTK版本的lshw-gtk也是可用的。 $ sudo lshw -class processor @@ -78,7 +78,7 @@ The **lshw** command is a comprehensive hardware query tool. Unlike other tools, ### 11. lstopo ### -The lstopo command (contained in [hwloc][4] package) visualizes the topology of the system which is composed of CPUs, cache, memory and I/O devices. This command is useful to identify the processor architecture and NUMA topology of the system. +lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组成的拓扑结构可见。这个命令用来识别处理器结构和系统的NUMA拓扑结构。 $ lstopo @@ -86,7 +86,7 @@ The lstopo command (contained in [hwloc][4] package) visualizes the topology of ### 12. numactl ### -Originally developed to set the NUMA scheduling and memeory placement policy of Linux processes, the numactl command can also show information about NUMA topology of the CPU hardware from the command line. +其被开发的起初是为了设置NUMA的时序安排和Linux处理器的内存布局策略,numactl命令也能通过命令行来展示关于CPU硬件的NUMA拓扑结构信息。 $ numactl --hardware @@ -94,7 +94,7 @@ Originally developed to set the NUMA scheduling and memeory placement policy of ### 13. x86info ### -x86info is a command-line tool for showing x86-based CPU information. Reported information includes CPU model, number of threads/cores, clock speed, TLB cache configuration, supported feature flags, etc. +x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信息报告包括CPU型号、线程/核心数、时钟速度、TLB(译者注:传输后备缓冲器)缓存配置、支持的特征标志寄存器等等。 $ x86info --all @@ -104,7 +104,7 @@ x86info is a command-line tool for showing x86-based CPU information. Reported i via: http://ask.xmodulo.com/check-cpu-info-linux.html -译者:[译者ID](https://github.com/译者ID) +译者:[ZTinoZ](https://github.com/ZTinoZ) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 9eb7361f9b15ea58761874c4fc86e3fce44eec07 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 6 Feb 2015 15:44:46 +0800 Subject: [PATCH 219/725] Finish the Translation by ZTinoZ --- ...121 Linux FAQs with Answers--How to check CPU info on Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md (100%) diff --git a/sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md similarity index 100% rename from sources/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md rename to translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md From 2386fb05709db50704cda0f3df6abdeb0af9ddf0 Mon Sep 17 00:00:00 2001 From: JMichaelKane <703039930@qq.com> Date: Fri, 6 Feb 2015 15:56:37 +0800 Subject: [PATCH 220/725] Update 20141219 Google Cloud offers streamlined Ubuntu for Docker use.md --- ...9 Google Cloud offers streamlined Ubuntu for Docker use.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md b/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md index 9af3b6665c..c63c4a78f2 100644 --- a/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md +++ b/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md @@ -21,7 +21,7 @@ Developed in part by two ex-Rackspace engineers, [CoreOS][8] is a lightweight Li CoreOS was quickly adopted by many cloud providers, including Microsoft Azure, Amazon Web Services, DigitalOcean and Google Compute Engine. Like CoreOS, Ubuntu Core offers an expedited process for updating components, reducing the amount of time that an administrator would need to manually manage them. - +如同Coreos一样,Ubuntu内核提供了一个快速引擎来更新组件 -------------------------------------------------------------------------------- via: http://www.infoworld.com/article/2860401/cloud-computing/google-cloud-offers-streamlined-ubuntu-for-docker-use.html @@ -40,4 +40,4 @@ via: http://www.infoworld.com/article/2860401/cloud-computing/google-cloud-offer [5]:http://www.itworld.com/article/2695383/open-source-tools/docker-all-geared-up-for-the-enterprise.html [6]:http://www.itworld.com/article/2695501/cloud-computing/google-unleashes-docker-management-tools.html [7]:http://www.itworld.com/article/2696116/open-source-tools/coreos-linux-does-away-with-the-upgrade-cycle.html -[8]:https://coreos.com/using-coreos/ \ No newline at end of file +[8]:https://coreos.com/using-coreos/ From e342defb3800c5dd6e9b74b3d4681138fd928187 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Fri, 6 Feb 2015 16:04:26 +0800 Subject: [PATCH 221/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...114 Why Mac users don't switch to Linux.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/translated/talk/20150114 Why Mac users don't switch to Linux.md b/translated/talk/20150114 Why Mac users don't switch to Linux.md index ae5337b1f2..6125a676a4 100644 --- a/translated/talk/20150114 Why Mac users don't switch to Linux.md +++ b/translated/talk/20150114 Why Mac users don't switch to Linux.md @@ -2,39 +2,39 @@ ================================================================================ Linux 与 Mac 用户至少有一个共同点:他们都不太喜欢用 Windows。但除了这点外,二者再也无法达成其他共识,只得分道扬镳。为什么 Mac 用户不选择 Linux 呢?是什么因素致使 Mac 用户做出了这种选择的? -[Datamation 就此问题做了一番调查][1],并试图进行解答。Datamation 的结论是,所有原因都只归结于众多应用及工作区,而非操作系统的关系: +[Datamation 就此问题做了一番调查][1],并试图进行解答。Datamation 的结论是,所有原因都只归结于众多应用及工作流程,而非操作系统的关系: -> …某些事例表明,尝试用新应用接替现有应用,并非会是很糟糕的体验 - 对工作区和实用性来说都是如此。但不幸的是,苹果在这些方面做得非常好。因此,在几乎不可能改变这些事实的情况下,想要拉拢那些 Mac忠实用户实在是很大的挑战。 +> …某些事例表明,尝试用新应用代替现有应用,并不是很实际 - 对工作流程和整体实用性来说都是如此。但不幸的是,苹果在这些方面做得非常好。因此,在几乎不可能改变这些事实的情况下,想要拉拢那些 Mac忠实用户实在是很大的挑战。 > 不过老实来说,除了 Web 开发者,我还没见过 Mac 用户仅仅为了避免升级到 OS X Yosemite 而 “ -en masse”(法语:共同,一起) 尝试变更他们的工作区。诚然,经历过 Yosemite 更新后 - 考虑过权限的用户应该会发现这方面已经变得非常令人讨厌。并且,OS X 除了在 UI 方面几乎没有变化,针对现有 Mac 用户的核心工作区也在最大程度上保持了原样。 +en masse”(法语:共同,一起) 尝试变更他们的工作流程。诚然,经历过 Yosemite 更新后 - 考虑过权限的用户应该会发现这方面已经变得非常令人讨厌。并且,OS X 除了在 UI 方面的微小变化,几乎没有改变,针对现有 Mac 用户的核心工作流程也在最大程度上保持了原样。 > 但,我相信 Linux 在未来将会继续保持多样化特点。Linux 会继续成长,但绝不是经过精确计量般得一成不变。 -我大体上同意 Datamation 关于应用和工作区的重要性的结论,在选择操作系统时这两方面是必须要考虑顾及的。但我认为对 Mac 用户来说,选择 Mac 有比这两方面更重要的因素。我相信是不同的心态造就了 Linux 和 Mac 用户,并且我认为这才是为什么 Mac 用户不选择 Linux 的真实原因。 +我大体上同意 Datamation 关于应用和工作流程重要性的结论,在选择操作系统时这两方面是必须要考虑顾及的。但我认为对 Mac 用户来说,选择 Mac 有比这两方面更重要的因素。我相信是不同的心态造就了 Linux 和 Mac 用户,并且我认为这才是为什么 Mac 用户不选择 Linux 的真实原因。 ![](http://jimlynch.com/wp-content/uploads/2015/01/mac-users-switch-to-linux.jpeg) ### 控制权才是 Linux 用户最看重的地方 ### Linux 用户倾向于控制电脑上的所有细节,他们试图作出一切能做的努力使操作系统变成他们想要的样子。但这种方式并不适用于 OS X 以及其他任何苹果的产品。如果你使用了苹果的产品,就意味着绝大多数情况下,你只能按照苹果预先设定的模式来使用它们。 -对 Mac(以及 iOS)用户来说这没什么,因为他们似乎并不在乎生活在苹果那围墙高筑的花园里,仅仅使用那些苹果给予他们的标准和选择。但这对绝大多数 Linux 用户来说是完全不能接受的。Linux 的新用户通常来自 Windows,正是从那里,他们开始厌恶那些告诉他们什么才叫操作系统,并试图限制操作系统权限的东西的。 +对 Mac(以及 iOS)用户来说这没什么,因为他们似乎并不在乎生活在苹果那围墙高筑的花园里,仅仅使用那些苹果给予他们的标准和选择。但这对绝大多数 Linux 用户来说是完全不能接受的。Linux 的新用户通常来自 Windows,正是从那里,他们开始厌恶那些告诉他们什么才叫操作系统,并试图限制操作系统权限的东西。 -自从他们尝到使用自由的 Linux 系统所带来的甜头之后,他们就再也不会再回到苹果或者微软的监牢里去了。即使你在他们死后,把 Linux 从他们那冰冷僵硬的手指下撬出来,他们也不会接受苹果和微软那种糟糕的操作系统。 +自从他们尝到使用自由的 Linux 系统所带来的甜头之后,他们就再也不会回到苹果或者微软的监牢里去了。即使在他们死后,把 Linux 从他们那冰冷僵硬的手指中撬出来,他们也不会接受苹果和微软为他们定制的操作系统。 但绝大部分 Mac 用户不会有这样的意志和决心。对他们来说当苹果升级 OS X 时放弃他们现有的习惯方式是非常容易的。在苹果那围墙高筑的花园里,即使他们不满意苹果的变化,他们也会迅速地接受。 -因此,对控制权的渴望是 Mac 用户与 Linux 用户的最大不同。但我并未把它视为一个问题,尽管这反映出使用电脑的两类人的截然不同的态度。 +因此,对控制权的渴望是 Mac 用户与 Linux 用户的最大不同。但我并未把它视为一个问题,尽管这反映出使用电脑的两类用户截然不同的态度。 ### Mac 用户离不开苹果的技术支持 ### Linux 用户与 Mac 用户的区别也体现在 Linux 用户并不介意亲自维护自己的电脑。虽然维护电脑及控制操作系统都是很大的责任,但 Linux 用户还是愿意独自承担,愿意通过自己的力量使他们的系统工作得更棒更有效率,并且深入了解操作系统是每一位 Linux 用户都乐衷的事情。 -当 Linux 用户遇到问题的时,他们会迅速地尝试自己来解决问题。如果这不奏效的话,他们会在网上寻找其他用户在遇到类似问题是怎么解决的,并不断进行尝试,直到问题解决。 +当 Linux 用户遇到问题时,他们会迅速地尝试自己来解决问题。如果这不奏效的话,他们会在网上搜索其他Linux用户的解决方案,并不断进行尝试,直到问题解决。 但 Mac 用户却不大会这样。这也许是为什么苹果零售店如此火爆、为什么如此多的 Mac 用户在拿到新 Mac 的时候会选择购买苹果维护服务的原因。Mac 用户会很轻易得带着 TA 的电脑去苹果零售店,走进天才吧并要求苹果的工作人员为其查看和修复电脑。 -绝大多数 Linux 用户连想都不会像这种事情。谁会愿意让一个你都不认识的家伙碰你的电脑并维修它呢? +绝大多数 Linux 用户连想都不会想这种事情。谁会愿意让一个你都不认识的家伙碰你的电脑并维修它呢? 因此对 Mac 用户来说,很难抛弃过去可以从苹果那里得到的技术支持,转而使用 Linux。这种选择会令某些 Mac 用户觉得自己的电脑将变得非常脆弱、容易被攻击,他们如同离开母亲怀抱的婴儿般充满了无助感。 @@ -42,7 +42,7 @@ Linux 用户与 Mac 用户的区别也体现在 Linux 用户并不介意亲自 Datamation 发表的文章中主要研究了软件方面的原因,但我认为硬件因素同样对 Mac 用户有很大影响。绝大部分 Mac 用户非常喜爱苹果的硬件。TA 们购买 Mac 并不仅仅是为了 OS X。苹果那精美的工艺设计也是 Mac 用户购买时着重考虑的一点。Mac 用户愿意支付高价购买电脑,因为他们认为这样绝对是物有所值的。 -另一方面,Linux 用户似乎并不会考虑这些东西。我认为他们更偏向于在他们的电脑外观上花费较少的金钱。对他们来说,花费最少的金钱来获取尽可能好的硬件才是最重要的。他们并不像 Mac 用户一样热衷于电脑的外观,因此这一点并不是他们在购买电脑时考虑的地方。 +另一方面,Linux 用户似乎并不会考虑这些东西。我认为他们更关注电脑的花费,而不太在意电脑的外观和设计。对他们来说,花费最少的金钱来获取尽可能好的硬件才是最重要的。他们并不像 Mac 用户一样热衷于电脑的外观,因此这一点并不是他们在购买电脑时考虑的地方。 我认为对于硬件的两种不同观点是没有高低之分的。这仅仅和用户的不同需求有关,仅仅会在他们购买电脑时影响他们,或者对某些 Linux 用户来说只是因为他们想要自己组装电脑而已。两种观点只是因为出发点不同、对于电脑的真正价值体现所在之处的理解不同罢了。 @@ -50,19 +50,19 @@ Datamation 发表的文章中主要研究了软件方面的原因,但我认为 ### Linux 发行版太多了不知道选哪个? ### -另一个让 Mac 用户无法选择 Linux 的原因是:要从从众多 Linux 发行版当中选择一个实在是太困难了。在大多数 Linux 并不抗拒的多元化发行版时代,没有任何相关知识的 Mac 用户感到十分困惑。 +另一个让 Mac 用户无法选择 Linux 的原因是:要从众多 Linux 发行版当中选择一个实在是太困难了。在大多数 Linuxer 并不抗拒的多元化发行版时代,没有相关知识的 Mac 用户会对如何选择感到十分困惑。 -我认为,随着时间的推移,Mac 用户是可以找出不适应最适合自己的发行版的。但在短时间内,尤其是在长时期得使用 OS X 之后,这是一个艰巨的任务。我不认为这个问题是无法克服的,但却有必要在这里提一下。 +我认为,随着时间的推移,Mac 用户可以学习并找出最适合自己的发行版。但在短时间内,尤其是长时期得使用 OS X 之后,这是一个艰巨的任务。我不认为这个问题是无法克服的,但却有必要在这里提一下。 -当然我们可以给 Mac 用户指明道路,推荐参考 [DistroWatch][3] 还有我们人的博客 [Desktop Linux Reviews][4],这都有助于 Mac 用户找到正确的 Linux 发行版。再说一条,网上有很多诸如“最好的 Linux 发行版”等类似的文章,当 Mac 用户想要寻找适合自己使用的发行版时可以参考一下。 +当然我们可以给大家提供资源,推荐参考 [DistroWatch][3] 还有我们的博客 [Desktop Linux Reviews][4],这都有助于 Mac 用户找到适合的 Linux 发行版。再说一条,网上有很多诸如“最好的 Linux 发行版”等类似的文章,当 Mac 用户想要寻找适合自己使用的发行版时可以参考一下。 -但有苹果顾客购买 Mac 的其中一个原因是苹果硬件软件协调统一起来的简便性和易用性。所以我不确定有多少 Mac 用户愿意花费时间找出适合自己的 Linux 发行版。也许是否要使用 Linux 确实会令 TA 们考虑一阵子了。 +但有苹果顾客购买 Mac 的其中一个原因是苹果硬件软件协调统一起来的简便性和易用性。所以我不确定有多少 Mac 用户愿意花费时间找出适合自己的 Linux 发行版。也许是否要使用 Linux 确实会令TA们考虑一阵子了。 ### Mac 用户是苹果,Linux 用户是橘子 ### -Mac 用户与 Linux 用户分道扬镳我认为并没有什么不妥。我认为我们只是在谈论两类完全不同的人群,这是一件好事,因为两类人群都在按自己四环的方式去使用操作系统和软件。让 Mac 用户和 Linux 用户各自沉浸在 OS X 和 Linux 中吧,希望他们都能高兴,都能对自己的电脑满意。 +Mac 用户与 Linux 用户分道扬镳我认为并没有什么不妥。我认为我们只是在谈论两类完全不同的人群,这是一件好事,因为两类人群都在按自己喜欢的方式去使用操作系统和软件。让 Mac 用户和 Linux 用户各自沉浸在 OS X 和 Linux 中吧,希望他们都能高兴,都能对自己的电脑满意。 -也许 Mac 用户会偶然走入 Linux 的世界并开始转向 Linux,但我认为绝大多数时候,两类人都愿意呆在在不同的世界并不与对方接触。通常来说我并不会随意比较二者,尤其是你已经自己拿定主意的时候,况且这只不过是选苹果还是选橘子的问题罢了。 +也许 Mac 用户会偶然走入 Linux 的世界并开始转向 Linux,但我认为绝大多数时候,两类人都愿意呆在不同的世界并不与对方接触。通常来说我并不会随意比较二者,尤其是你已经自己拿定主意的时候,况且这只不过是选苹果还是选橘子的问题罢了。 -------------------------------------------------------------------------------- @@ -70,7 +70,7 @@ via: http://jimlynch.com/linux-articles/why-mac-users-dont-switch-to-linux/ 作者:[Jim Lynch][a] 译者:[Stevearzh](https://github.com/Stevearzh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -78,4 +78,4 @@ via: http://jimlynch.com/linux-articles/why-mac-users-dont-switch-to-linux/ [1]:http://www.datamation.com/open-source/why-linux-isnt-winning-over-mac-users-1.html [2]:http://www.howtogeek.com/187410/how-to-install-and-dual-boot-linux-on-a-mac/ [3]:http://distrowatch.com/ -[4]:http://desktoplinuxreviews.com/ \ No newline at end of file +[4]:http://desktoplinuxreviews.com/ From ac3ee920fab7c649b0070e6534b5d1f0df8bf8ea Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 6 Feb 2015 20:57:17 +0800 Subject: [PATCH 222/725] translating --- ... FAQs with Answers--How to install Go language on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md index 410d7a79b7..73b6f237b1 100644 --- a/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md +++ b/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md @@ -1,3 +1,5 @@ +translating----geekpi + Linux FAQs with Answers--How to install Go language on Linux ================================================================================ Go (also called "golang") is an open-source programming language initially developed by Google. It was born with several design principles in mind: simplicity, safety, and speed. The Go language distribution comes with various tools for debugging, testing, profiling and code-vetting. Nowadays the Go language and its tool chain are available in the base repositories of most Linux distributions, making it easy to install them with a default package manager. @@ -93,4 +95,4 @@ via: http://ask.xmodulo.com/install-go-language-linux.html 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[1]:https://golang.org/dl/ \ No newline at end of file +[1]:https://golang.org/dl/ From 0ca06eac3d0b82062b8aa4d51c8dfddc8b356f8e Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Fri, 6 Feb 2015 21:00:05 +0800 Subject: [PATCH 223/725] Delete 20150112 Best GNOME Shell Themes For Ubuntu 14.04.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕,删除原文。 --- ...est GNOME Shell Themes For Ubuntu 14.04.md | 113 ------------------ 1 file changed, 113 deletions(-) delete mode 100644 sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md diff --git a/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md b/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md deleted file mode 100644 index 9d42415be9..0000000000 --- a/sources/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md +++ /dev/null @@ -1,113 +0,0 @@ -Translating by FSSlc - -Best GNOME Shell Themes For Ubuntu 14.04 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Gnome_Shell_Themes.jpeg) - -Themes are the best way to customize your Linux desktop. If you [install GNOME on Ubuntu 14.04][1] or 14.10, you might want to change the default theme and give it a different look. To help you in this task, I have compiled here a **list of best GNOME shell themes for Ubuntu** or any other Linux OS that has GNOME shell installed on it. But before we see the list, let’s first see how to change install new themes in GNOME Shell. - -### Install themes in GNOME Shell ### - -To install new themes in GNOME with Ubuntu, you can use Gnome Tweak Tool which is available in software repository in Ubuntu. Open a terminal and use the following command: - - sudo apt-get install gnome-tweak-tool - -Alternatively, you can use themes by putting them in ~/.themes directory. I have written a detailed tutorial on [how to install and use themes in GNOME Shell][2], in case you need it. - -### Best GNOME Shell themes ### - -The themes listed here are tested on GNOME Shell 3.10.4 but it should work for all version of GNOME 3 and higher. For the sake of mentioning, the themes are not in any kind of priority order. Let’s have a look at the best GNOME themes: - -#### Numix #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/02/mockups_numix_5.jpeg) - -No list can be completed without the mention of [Numix themes][3]. These themes got so popular that it encouraged [Numix team to work on a new Linux OS, Ozon][4]. Considering their design work with Numix theme, it won’t be exaggeration to call it one of the [most beautiful Linux OS][5] releasing in near future. - -To install Numix theme in Ubuntu based distributions, use the following commands: - - sudo apt-add-repository ppa:numix/ppa - sudo apt-get update - sudo apt-get install numix-icon-theme-circle - -#### Elegance Colors #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Elegance_Colors_Theme_GNOME_Shell.jpeg) - -Another beautiful theme from Satyajit Sahoo, who is also a member of Numix team. [Elegance Colors][6] has its own PPA so that you can easily install it: - - sudo add-apt-repository ppa:satyajit-happy/themes - sudo apt-get update - sudo apt-get install gnome-shell-theme-elegance-colors - -#### Moka #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Moka_GNOME_Shell.jpeg) - -[Moka][7] is another mesmerizing theme that is always included in the list of beautiful themes. Designed by the same developer who gave us Unity Tweak Tool, Moka is a must try: - - sudo add-apt-repository ppa:moka/stable - sudo apt-get update - sudo apt-get install moka-gnome-shell-theme - -#### Viva #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Viva_GNOME_Theme.jpg) - -Based on Gnome’s default Adwaita theme, Viva is a nice theme with shades of black and oranges. You can download Viva from the link below. - -- [Download Viva GNOME Shell Theme][8] - -#### Ciliora-Prima #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Ciliora_Prima_Gnome_Shell.jpeg) - -Previously known as Zukitwo Dark, Ciliora-Prima has square icons theme. Theme is available in three versions that are slightly different from each other. You can download it from the link below. - -- [Download Ciliora-Prima GNOME Shell Theme][9] - -#### Faience #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Faience_GNOME_Shell_Theme.jpeg) - -Faience has been a popular theme for quite some time and rightly so. You can install Faience using the PPA below for GNOME 3.10 and higher. - - sudo add-apt-repository ppa:tiheum/equinox - sudo apt-get update - sudo apt-get install faience-theme - -#### Paper [Incomplete] #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Paper_GTK_Theme.jpeg) - -Ever since Google talked about Material Design, people have been going gaga over it. Paper GTK theme, by Sam Hewitt (of Moka Project), is inspired by Google Material design and currently under development. Which means you will not have the best experience with Paper at the moment. But if your a bit experimental, like me, you can definitely give it a try. - - sudo add-apt-repository ppa:snwh/pulp - sudo apt-get update - sudo apt-get install paper-gtk-theme - -That concludes my list. If you are trying to give a different look to your Ubuntu, you should also try the list of [best icon themes for Ubuntu 14.04][10]. - -How do you find this list of **best GNOME Shell themes**? Which one is your favorite among the one listed here? And if it’s not listed here, do let us know which theme you think is the best GNOME Shell theme. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/gnome-shell-themes-ubuntu-1404/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ -[2]:http://itsfoss.com/install-switch-themes-gnome-shell/ -[3]:https://numixproject.org/ -[4]:http://itsfoss.com/numix-linux-distribution/ -[5]:http://itsfoss.com/new-beautiful-linux-2015/ -[6]:http://satya164.deviantart.com/art/Gnome-Shell-Elegance-Colors-305966388 -[7]:http://mokaproject.com/ -[8]:https://github.com/vivaeltopo/gnome-shell-theme-viva -[9]:http://zagortenay333.deviantart.com/art/Ciliora-Prima-Shell-451947568 -[10]:http://itsfoss.com/best-icon-themes-ubuntu-1404/ From 2b46d43aa9157604cca1953430240a97bf42f332 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 6 Feb 2015 21:16:57 +0800 Subject: [PATCH 224/725] translated --- ...rs--How to install Go language on Linux.md | 98 ------------------- ...rs--How to install Go language on Linux.md | 96 ++++++++++++++++++ 2 files changed, 96 insertions(+), 98 deletions(-) delete mode 100644 sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md create mode 100644 translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md diff --git a/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md deleted file mode 100644 index 73b6f237b1..0000000000 --- a/sources/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md +++ /dev/null @@ -1,98 +0,0 @@ -translating----geekpi - -Linux FAQs with Answers--How to install Go language on Linux -================================================================================ -Go (also called "golang") is an open-source programming language initially developed by Google. It was born with several design principles in mind: simplicity, safety, and speed. The Go language distribution comes with various tools for debugging, testing, profiling and code-vetting. Nowadays the Go language and its tool chain are available in the base repositories of most Linux distributions, making it easy to install them with a default package manager. - -### Install Go Language on Ubuntu, Debian or Linux Mint ### - -The following **apt-get** command will install Go language and its development tools on Debian-based distributions. - - $ sudo apt-get install golang - -Check the version of Go language to verify installation. - - $ go version - ----------- - - go version go1.2.1 linux/amd64 - -Depending on your need, you may want to install additional Go tools using apt-get. - - $ sudo apt-cache search golang - -![](https://farm8.staticflickr.com/7430/15812762183_f094e3bf92_c.jpg) - -### Install Go Language on Fedora, CentOS/RHEL ### - -The following yum command will install Go language and its development tools on Red Hat based distributions. - - $ sudo yum install golang - -Check the version of Go language to verify installation. - - $ go version - ----------- - - go version go1.3.3 linux/amd64 - -Depending on your need, you can install additional Go tools using yum. - - $ yum search golang - -![](https://farm8.staticflickr.com/7373/16432817805_775010dc18_c.jpg) - -### Install Go Language from the Official Website ### - -Sometimes the version of Go language that comes with your Linux distribution may not be up-to-date. In that case, you can install the latest Go language from its official website. Here is how you can do it. - -Go to the [official source][1] of Go language, and download pre-built binaries. - -**For 64-bit Linux:** - - $ wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz - -**For 32-bit Linux:** - - $ wget https://storage.googleapis.com/golang/go1.4.1.linux-386.tar.gz - -**Install the binaries under /usr/local.** - - $ sudo tar -xzf go1.4.1.linux-xxx.tar.gz -C /usr/local - -Update the PATH environment variable system-wide by appending the following line in /etc/profile. - - $ sudo vi /etc/profile - ----------- - - export PATH=$PATH:/usr/local/go/bin - -If you installed Go in a custom location other than /usr/local, you also need to set GOROOT environment variable to point to the custom location. - - $ sudo vi /etc/profile - ----------- - - export GOROOT=/path/to/custom/location - -Check the version of Go language. - - $ go version - ----------- - - go version go1.4.1 linux/amd64 - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/install-go-language-linux.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:https://golang.org/dl/ diff --git a/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md new file mode 100644 index 0000000000..d7dd2bb1c6 --- /dev/null +++ b/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md @@ -0,0 +1,96 @@ +如何在Linux中安装Go语言 +================================================================================ +Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几个设计原则:简单、安全、速度。Go语言发行版拥有各种调试、测试、调优和代码审查工具。如今Go语言和它的工具链在大多数Linux发行版的基础仓库都有了,用默认的包管理器就可以安装。 + +### 在Ubuntu、Debian 或者 Linux Mint上安装Go语言 ### + +下面是在基于Debian的发行版上使用**apt-get**来安装Go语言和它的开发工具。 + + $ sudo apt-get install golang + +检查Go语言的版本来验证安装。 + + $ go version + +---------- + + go version go1.2.1 linux/amd64 + +按照你的需要,你或许想要使用apt-get安装额外的Go工具。 + + $ sudo apt-cache search golang + +![](https://farm8.staticflickr.com/7430/15812762183_f094e3bf92_c.jpg) + +### 在Fedora、CentOS/RHEL中安装Go语言 ### + +下面的命令会在基于Red Hat的发行版中安装Go语言和它的工具。 + + $ sudo yum install golang + +检查Go语言的版本来验证安装。 + + $ go version + +---------- + + go version go1.3.3 linux/amd64 + +按照你的需要,你或许想要使用yum安装额外的Go工具。 + + $ yum search golang + +![](https://farm8.staticflickr.com/7373/16432817805_775010dc18_c.jpg) + +### 从官网安装Go语言 ### + +有时发行版中的版本并不是最新的。为防这样,你可以从官网安装最新的Go语言。下面是步骤。 + +进入Go语言的[官方源码][1],并下载预编译二进制代码。 + +**对于64位Linux:** + + $ wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz + +**对于32位Linux:** + + $ wget https://storage.googleapis.com/golang/go1.4.1.linux-386.tar.gz + +**在/usr/local下安装程序** + + $ sudo tar -xzf go1.4.1.linux-xxx.tar.gz -C /usr/local + +在/etc/profile中添加系统范围的PATH环境变量。 + + $ sudo vi /etc/profile + +---------- + + export PATH=$PATH:/usr/local/go/bin + +如果你在/usr/local之外安装了了Go,你同样需要设置GOROOT环境变量来指向自定义的安装位置。 + + $ sudo vi /etc/profile + +---------- + + export GOROOT=/path/to/custom/location + +检查Go语言的版本 + + $ go version + +---------- + + go version go1.4.1 linux/amd64 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/install-go-language-linux.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:https://golang.org/dl/ From 05a5d8658bc44bcd85ee8867e1168f7678b98996 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Fri, 6 Feb 2015 21:18:13 +0800 Subject: [PATCH 225/725] Create 20150112 Best GNOME Shell Themes For Ubuntu 14.04.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕,进行上传。 --- ...est GNOME Shell Themes For Ubuntu 14.04.md | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md diff --git a/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md b/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md new file mode 100644 index 0000000000..339ef5f836 --- /dev/null +++ b/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md @@ -0,0 +1,123 @@ +Ubuntu 14.04 上 最好的 GNOME Shell 主题 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Gnome_Shell_Themes.jpeg) + +自定义主题是自定义你的 Linux 桌面的最好方式。假如你在 [Ubuntu 14.04 中安装 GNOME][1] 或 在 Ubuntu 14.10 中安装了 GNOME,你或许想改变默认的主题以呈现出不同的外观。在这里,为帮助你完成该任务,我已经编制好了一个 **Ubuntu 或其他已经安装了 GNOME shell 的 Linux 操作系统中,最好的 GNOME Shell 主题** 的清单 。但在我们揭晓这份清单之前, 让我们先了解如何在 GNOME shell 中安装和应用新的主题。 + +### 在 GNOME Shell 中安装主题 ### + +要在带有 GNOME 桌面的 Ubuntu 中安装新的主题,你可以使用 Gnome Tweak Tool,它可以在 Ubuntu 软件库中得到。打开一个终端窗口并使用如下命令: + +``` +sudo apt-get install gnome-tweak-tool +``` + +或者,你可以使用新主题通过把它们放置到 `~/.themes` 目录中。如果你需要,我已经写了一个关于 [如何安装和使用 GNOME shell][2]的具体教程。 + +### 最好的 GNOME Shell 主题 ### + +下面列举的主题都已经在 GNOME Shell 3.10.4 上进行了测试,但对于任何版本的 GNOME 3 或更高的版本,它们应该同样适用。需要指出的是,这些主题并没有按照任何优先顺序排列。下面就让我们看看这些最好的 GNOME 主题: + +#### Numix #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/02/mockups_numix_5.jpeg) + +任何没有提到 [Numix 主题][3] 的清单都是不完整的。这个主题是如此地受欢迎以至于 [Numix 团队开发出一个新的 Linux 操作系统, Ozon][4]。考虑到他们的设计作品 Numix 主题,称在不久的将来发行的 `Ozon` 为 [最美丽的 Linux 操作系统][5] 也不为过。 + +使用下面的命令,在基于 Ubuntu 的发行版本中安装 Numix 主题: + +``` +sudo apt-add-repository ppa:numix/ppa +sudo apt-get update +sudo apt-get install numix-icon-theme-circle +``` + +#### Elegance Colors #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Elegance_Colors_Theme_GNOME_Shell.jpeg) + +另一个来自 Numix 团队的成员之一的 Satyajit Sahoo 的美丽主题 。[Elegance Colors][6] 拥有自己的 PPA (译者注: 即 Personal Package Archive 的缩写) 使得你可以轻易地安装它: + +``` +sudo add-apt-repository ppa:satyajit-happy/themes +sudo apt-get update +sudo apt-get install gnome-shell-theme-elegance-colors +``` + +#### Moka #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Moka_GNOME_Shell.jpeg) + +[Moka][7] 是另一个迷人的主题,它总是位于美丽的主题的清单之中。它是由给我们带来 Unity Tweak Tool 的开发者所设计。 Moka 是你绝对要尝试的主题之一: + +``` +sudo add-apt-repository ppa:moka/stable +sudo apt-get update +sudo apt-get install moka-gnome-shell-theme +``` + +#### Viva #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Viva_GNOME_Theme.jpg) + +基于 GNOME 的默认主题 Adwaita, Viva 是一个带有黑色和橙色阴影的美丽主题。你可以从下面的链接中下载 Viva: + +- [Download Viva GNOME Shell Theme][8] + +#### Ciliora-Prima #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Ciliora_Prima_Gnome_Shell.jpeg) + +以前它以 Zukitwo Dark 的名字为人们熟知, Ciliora-Prima 是一个拥有方块图标的主题,可得到的三种版本之间相互略有不同。你可以从下面的链接中下载它们: + +- [Download Ciliora-Prima GNOME Shell Theme][9] + +#### Faience #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Faience_GNOME_Shell_Theme.jpeg) + +Faience 作为一个受欢迎的主题已经有一段时间了。你可以通过下面的 PPA 为 GNOME 3.10 及更高版本 安装 Faience: + +``` +sudo add-apt-repository ppa:tiheum/equinox +sudo apt-get update +sudo apt-get install faience-theme +``` + +#### Paper [不完善] #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Paper_GTK_Theme.jpeg) + +自从 Google 提出 `Material Design`,人们一直为之疯狂。Paper GTK 主题受 Google Material design 启发, 作者为 Sam Hewitt( Moka 项目开发者之一); 它正处于开发中,这意味着当前你将不能对 Paper 拥有最好的体验。假如你和我一样,具有一点实验精神,你绝对可以试一试。 + +``` +sudo add-apt-repository ppa:snwh/pulp +sudo apt-get update +sudo apt-get install paper-gtk-theme +``` + +以上就是我的清单。假如你正试着给你的 Ubuntu 换一个不同的模样,你也应该试试这个清单: [Ubuntu 14.04 中最好的图标主题][10]。 + +你是怎样找到这份 **最好的 GNOME shell 主题** 清单的呢?在上面列举的主题中,哪个是你最中意的呢? 如果它没有在这里列出,请一定让我们知道那个你心目中最好的 GNOME shell 主题 。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/gnome-shell-themes-ubuntu-1404/ + +作者:[Abhishek][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ +[2]:http://itsfoss.com/install-switch-themes-gnome-shell/ +[3]:https://numixproject.org/ +[4]:http://itsfoss.com/numix-linux-distribution/ +[5]:http://itsfoss.com/new-beautiful-linux-2015/ +[6]:http://satya164.deviantart.com/art/Gnome-Shell-Elegance-Colors-305966388 +[7]:http://mokaproject.com/ +[8]:https://github.com/vivaeltopo/gnome-shell-theme-viva +[9]:http://zagortenay333.deviantart.com/art/Ciliora-Prima-Shell-451947568 +[10]:http://itsfoss.com/best-icon-themes-ubuntu-1404/ From cd2806640ee46eb77f1d9b8f7638eb567459b8a6 Mon Sep 17 00:00:00 2001 From: Junkai <2q1w2007@163.com> Date: Sat, 7 Feb 2015 04:20:22 +0800 Subject: [PATCH 226/725] =?UTF-8?q?20150207=20=E9=80=89=E9=A2=98=202015020?= =?UTF-8?q?7=20BQ=20and=20Canonical=20Officially=20Launch=20Aquaris=20E4.5?= =?UTF-8?q?=20Ubuntu=20Edition,=20the=20First=20Ubuntu=20Phone.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Ubuntu Edition, the First Ubuntu Phone.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md diff --git a/sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md b/sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md new file mode 100644 index 0000000000..02b147abd9 --- /dev/null +++ b/sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md @@ -0,0 +1,45 @@ +BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone +------ +*Everything you need to know about Aquaris E4.5* + +##BQ and Canonical have officially announced the new Aquaris E4.5 Ubuntu Edition and the fact that the phone will be available in the coming weeks through a series of flash sales. + +Information about the imminent launch of BQ Ubuntu phone has been around for some time and now it the two companies seem to have decided to make it official. This is the first device powered by Ubuntu Touch and a lot of people will be paying very close attention to what is happening in the mobile world. + +Ubuntu Touch is the latest operating system from Canonical and it's a brand new experience that aims to be very different from what users can find right now on the market, and that includes systems like Jola or Firefox OS. The OS has been in the works for more than two years and it's a system designed to work on all kind of devices, across the hardware spectrum. + +##Who is BQ and why has Canonical chosen them? + +When Mark Shuttleworth announced the two partners for the launch of Ubuntu Touch, BQ and Meizu, most of the people watching asked the same question. Who? BQ is not a very big company, but it's a young company and it has already started to penetrate the European market with some interesting devices. In many ways, they are doing the same thing companies like Meizu or Xiaomi are trying and succeeded in China: to offer devices that are interesting and different from what everyone else is doing. + +Many Ubuntu fans have questioned Canonical’s decision of choosing small companies and not big ones, but they are trying to do the same thing as the just-mentioned hardware makers. They want to offer an operating system radically different from what everyone else is doing. It's easy to understand why the goals of Canonical and BQ are actually one and the same. + +##What is Ubuntu Touch? + +The new operating system developed by Canonical embraces the fact that people are now swiping a lot more than they are tapping. Smartphones are no longer something new and everyone can understand how to swipe and get things done on a phone. Ubuntu devs have taken this to a whole new level. The operating system has no buttons, with the exception of the regular power and volume buttons. Everything is done with swiped gestures, from all sides of the screen. + +Also, Ubuntu Touch brings a new concept to the market, that of scopes. There is no longer a home screen, just scopes defined by the user to expand the experience. For example, you can have a Music scope that aggregates all your music sources on a single screen. It's a different way of looking at your smartphone, but this is built for people who crave a new experience. Don't worry, regular apps still exist, but they are differently integrated. + +![Aquaris E4.5 Ubuntu Edition start screen](http://i1-news.softpedia-static.com/images/news2/BQ-and-Canonical-Officially-Launch-Aquaris-E4-5-Ubuntu-Edition-472397-5.jpg) + +"As any kind of content can be presented via Scopes - they provide developers an easy path for their creations to be integral to the device experience. It is simple to create new Scopes via an easy to use UI toolkit with much lower development and maintenance costs than traditional apps. Canonical and BQ have worked with a host of partners to ensure that there is a wealth of interesting, relevant and dynamic content available at launch, with more content partners to follow," said Cristian Parrino, VP Mobile at Canonical. + +##BQ’s Aquaris E4.5 Ubuntu Edition hardware specs + +First of all, it's important to know that Aquaris E4.5 Ubuntu Edition is a dual-sim phone and it comes unlocked so that everyone can use it with their network. It boasts a MediaTek Quad-Core Cortex A7 processor running at up to 1.3 GHz, a 4.5-inch screen, 1GB RAM, rear camera with high-quality BSI sensors, Largan lens, and autofocus with dual flash(8MP), and front camera with 5MP. + +It's also worth mentioning that several operators in Europe, including 3 Sweden, amena.com, giffgaff, and Portugal Telecom have decided to provide SIM bundles at purchase. The price is €169.90 ($191). + +So, are you ready to buy the Aquaris E4.5 Ubuntu Edition? + +-------------------------------------------------------------------------------- + +via: http://news.softpedia.com/news/BQ-and-Canonical-Officially-Launch-Aquaris-E4-5-Ubuntu-Edition-472397.shtml + +作者:[Silviu Stahie][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie \ No newline at end of file From 555e73ad9411a845a84a046857cf229b351706a4 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sat, 7 Feb 2015 08:36:38 +0800 Subject: [PATCH 227/725] Update 20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- ... To Use Emoji Anywhere With Twitter's Open Source Library.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md b/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md index e043210cf6..e1f0fd719f 100644 --- a/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md +++ b/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md @@ -1,3 +1,5 @@ +Translating by FSSlc + How To Use Emoji Anywhere With Twitter's Open Source Library ================================================================================ > Embed them in webpages and other projects via GitHub. From e3a83ffa29d7e03820c74750693a7657f26d0a4e Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 7 Feb 2015 10:41:49 +0800 Subject: [PATCH 228/725] translating --- .../20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md index cd1a5eb525..1bdf762e99 100644 --- a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md +++ b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md @@ -1,3 +1,5 @@ +Translating----geekpi + How To Install KDE Plasma 5.2 In Ubuntu 14.10 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) @@ -57,4 +59,4 @@ via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ [4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ [5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ [6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ -[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ \ No newline at end of file +[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ From d1d3ca7c3f4466f4f90e6240820660542c6baf49 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 7 Feb 2015 11:02:16 +0800 Subject: [PATCH 229/725] translated --- ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 62 ------------------- ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 61 ++++++++++++++++++ 2 files changed, 61 insertions(+), 62 deletions(-) delete mode 100644 sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md create mode 100644 translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md diff --git a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md deleted file mode 100644 index 1bdf762e99..0000000000 --- a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md +++ /dev/null @@ -1,62 +0,0 @@ -Translating----geekpi - -How To Install KDE Plasma 5.2 In Ubuntu 14.10 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) - -[KDE][1] Plasma 5.2 has been [released][2] and in this post we shall see how to install KDE Plasma 5.2 in Ubuntu 14.10. - -Ubuntu’s default desktop environment Unity is beautiful and packs quite some feature. But if you ask any experienced Linux user about desktop customization, his answer will be KDE. KDE is boss when it comes to customization and its popularity can be guessed that Ubuntu has an official KDE flavor, known as [Kubuntu][3]. - -A good thing about Ubuntu (or any other Linux OS for that matter) is that it doesn’t bind you with one particular desktop environment. You can always install additional desktop environments and choose to switch between them while keeping several desktop environments at the same time. Earlier, we have seen the installation of following desktop environments: - -- [How to install Mate desktop in Ubuntu 14.04][4] -- [How to install Cinnamon in Ubuntu 14.04][5] -- [How to install Budgie desktop in Ubuntu 14.04][6] -- [How to install GNOME Shell in Ubuntu 14.04][7] - -And today we shall see how to install KDE Plasma in Ubuntu 14.10. - -### Install KDE Plasma 5.2 in Ubuntu 14.04 ### - -Before you go on installing Plasma on Ubuntu 14.10, you should know that it will download around one GB of data. So consider your network speed and data package (if any) before opting for KDE installation. The PPA we are going to use for installing Plasma is the official PPA provided by the KDE community. Use the commands below in terminal: - - sudo apt-add-repository ppa:kubuntu-ppa/next-backports - sudo apt-get update - sudo apt-get dist-upgrade - sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers - -During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) - -You’ll be logged in to KDE Plasma now. Here is a quick screenshot of how KDE Plasma 5.2 looks like in Ubuntu 14.10: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) - -### Remove KDE Plasma from Ubuntu ### - -If you want to revert the changes, use the following commands to get rid of KDE Plasma from Ubuntu 14.10. - - sudo apt-get install ppa-purge - sudo apt-get remove kubuntu-plasma5-desktop - sudo ppa-purge ppa:kubuntu-ppa/next - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:https://www.kde.org/ -[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful -[3]:http://www.kubuntu.org/ -[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ -[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ -[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ -[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ diff --git a/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md new file mode 100644 index 0000000000..0e6a83f60f --- /dev/null +++ b/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md @@ -0,0 +1,61 @@ +如何在Ubuntu 14.10 上安装KDE Plasma 5.2 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) + +[KDE][1] Plasma 5.2已经[发布][2],在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2。 + +Ubuntu的默认桌面环境Unity很漂亮还有很多特性。但是如果你问任何有经验的Linux用户关于桌面自定义,他的回答将是KDE。KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE版本,也就是Kubuntu[3]。 + +对于Ubuntu(或者任何其他的Linux系统而言)的一个好消息是它没有绑定任何特定的桌面环境。你可以安装额外的桌面环境并且可以在不同的桌面环境间切换。早先我们已经了解了桌面环境的安装。 + +- [如何在Ubuntu 14.04中安装Mate桌面][4] +- [如何在Ubuntu 14.04中安装Cinnamon桌面][5] +- [如何在Ubuntu 14.04中安装Budgie桌面][6] +- [如何在Ubuntu 14.04中安装Gnome Shell][7] + +今天我们要展示如何在Ubuntu 14.10 中如何安装KDE Plasma。 + +### 如何在Ubuntu 14.10 上安装KDE Plasma 5.2 ### + +在Ubuntu 14.10上安装Plasma之前,你要知道这会下载大概1GB的内容。因此在安装KDE之前要考虑速度和数据包。我们下载所使用的PPA是KDEs社区官方提供的。在终端中使用下面的命令: + + sudo apt-add-repository ppa:kubuntu-ppa/next-backports + sudo apt-get update + sudo apt-get dist-upgrade + sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers + +During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. +在安装中,我们要选择默认的显示管理器。我选择的是默认的LightDM。安装完成后,重启系统。在登录时,点击登录区域旁边的Ubuntu图标。这里选择Plasma。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) + +你现在就登录到KDE Plasma了。这里有一个KDE Plasma 5.2在Ubuntu 14.10下的截图 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) + +### 从Ubuntu卸载KDE Plasma ### + +如果你想要还原更改,使用下面的命令从Ubuntu 14.10中卸载KDE Plasma。 + + sudo apt-get install ppa-purge + sudo apt-get remove kubuntu-plasma5-desktop + sudo ppa-purge ppa:kubuntu-ppa/next + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:https://www.kde.org/ +[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful +[3]:http://www.kubuntu.org/ +[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ +[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ +[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ +[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ From 90354bfc053bfb8d3f0b55372a1fb587b2971c26 Mon Sep 17 00:00:00 2001 From: zheng Date: Sat, 7 Feb 2015 11:04:15 +0800 Subject: [PATCH 230/725] Revert "translated" This reverts commit d1d3ca7c3f4466f4f90e6240820660542c6baf49. --- ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 62 +++++++++++++++++++ ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 61 ------------------ 2 files changed, 62 insertions(+), 61 deletions(-) create mode 100644 sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md delete mode 100644 translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md diff --git a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md new file mode 100644 index 0000000000..1bdf762e99 --- /dev/null +++ b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md @@ -0,0 +1,62 @@ +Translating----geekpi + +How To Install KDE Plasma 5.2 In Ubuntu 14.10 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) + +[KDE][1] Plasma 5.2 has been [released][2] and in this post we shall see how to install KDE Plasma 5.2 in Ubuntu 14.10. + +Ubuntu’s default desktop environment Unity is beautiful and packs quite some feature. But if you ask any experienced Linux user about desktop customization, his answer will be KDE. KDE is boss when it comes to customization and its popularity can be guessed that Ubuntu has an official KDE flavor, known as [Kubuntu][3]. + +A good thing about Ubuntu (or any other Linux OS for that matter) is that it doesn’t bind you with one particular desktop environment. You can always install additional desktop environments and choose to switch between them while keeping several desktop environments at the same time. Earlier, we have seen the installation of following desktop environments: + +- [How to install Mate desktop in Ubuntu 14.04][4] +- [How to install Cinnamon in Ubuntu 14.04][5] +- [How to install Budgie desktop in Ubuntu 14.04][6] +- [How to install GNOME Shell in Ubuntu 14.04][7] + +And today we shall see how to install KDE Plasma in Ubuntu 14.10. + +### Install KDE Plasma 5.2 in Ubuntu 14.04 ### + +Before you go on installing Plasma on Ubuntu 14.10, you should know that it will download around one GB of data. So consider your network speed and data package (if any) before opting for KDE installation. The PPA we are going to use for installing Plasma is the official PPA provided by the KDE community. Use the commands below in terminal: + + sudo apt-add-repository ppa:kubuntu-ppa/next-backports + sudo apt-get update + sudo apt-get dist-upgrade + sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers + +During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) + +You’ll be logged in to KDE Plasma now. Here is a quick screenshot of how KDE Plasma 5.2 looks like in Ubuntu 14.10: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) + +### Remove KDE Plasma from Ubuntu ### + +If you want to revert the changes, use the following commands to get rid of KDE Plasma from Ubuntu 14.10. + + sudo apt-get install ppa-purge + sudo apt-get remove kubuntu-plasma5-desktop + sudo ppa-purge ppa:kubuntu-ppa/next + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:https://www.kde.org/ +[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful +[3]:http://www.kubuntu.org/ +[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ +[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ +[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ +[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ diff --git a/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md deleted file mode 100644 index 0e6a83f60f..0000000000 --- a/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md +++ /dev/null @@ -1,61 +0,0 @@ -如何在Ubuntu 14.10 上安装KDE Plasma 5.2 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) - -[KDE][1] Plasma 5.2已经[发布][2],在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2。 - -Ubuntu的默认桌面环境Unity很漂亮还有很多特性。但是如果你问任何有经验的Linux用户关于桌面自定义,他的回答将是KDE。KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE版本,也就是Kubuntu[3]。 - -对于Ubuntu(或者任何其他的Linux系统而言)的一个好消息是它没有绑定任何特定的桌面环境。你可以安装额外的桌面环境并且可以在不同的桌面环境间切换。早先我们已经了解了桌面环境的安装。 - -- [如何在Ubuntu 14.04中安装Mate桌面][4] -- [如何在Ubuntu 14.04中安装Cinnamon桌面][5] -- [如何在Ubuntu 14.04中安装Budgie桌面][6] -- [如何在Ubuntu 14.04中安装Gnome Shell][7] - -今天我们要展示如何在Ubuntu 14.10 中如何安装KDE Plasma。 - -### 如何在Ubuntu 14.10 上安装KDE Plasma 5.2 ### - -在Ubuntu 14.10上安装Plasma之前,你要知道这会下载大概1GB的内容。因此在安装KDE之前要考虑速度和数据包。我们下载所使用的PPA是KDEs社区官方提供的。在终端中使用下面的命令: - - sudo apt-add-repository ppa:kubuntu-ppa/next-backports - sudo apt-get update - sudo apt-get dist-upgrade - sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers - -During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. -在安装中,我们要选择默认的显示管理器。我选择的是默认的LightDM。安装完成后,重启系统。在登录时,点击登录区域旁边的Ubuntu图标。这里选择Plasma。 - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) - -你现在就登录到KDE Plasma了。这里有一个KDE Plasma 5.2在Ubuntu 14.10下的截图 - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) - -### 从Ubuntu卸载KDE Plasma ### - -如果你想要还原更改,使用下面的命令从Ubuntu 14.10中卸载KDE Plasma。 - - sudo apt-get install ppa-purge - sudo apt-get remove kubuntu-plasma5-desktop - sudo ppa-purge ppa:kubuntu-ppa/next - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ - -作者:[Abhishek][a] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:https://www.kde.org/ -[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful -[3]:http://www.kubuntu.org/ -[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ -[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ -[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ -[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ From c0e5c3bf5db418e961dd46b738067fc8e36dfa04 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 7 Feb 2015 11:08:37 +0800 Subject: [PATCH 231/725] translated --- ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 62 ------------------- ... Install KDE Plasma 5.2 In Ubuntu 14.10.md | 61 ++++++++++++++++++ 2 files changed, 61 insertions(+), 62 deletions(-) delete mode 100644 sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md create mode 100644 translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md diff --git a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md deleted file mode 100644 index 1bdf762e99..0000000000 --- a/sources/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md +++ /dev/null @@ -1,62 +0,0 @@ -Translating----geekpi - -How To Install KDE Plasma 5.2 In Ubuntu 14.10 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) - -[KDE][1] Plasma 5.2 has been [released][2] and in this post we shall see how to install KDE Plasma 5.2 in Ubuntu 14.10. - -Ubuntu’s default desktop environment Unity is beautiful and packs quite some feature. But if you ask any experienced Linux user about desktop customization, his answer will be KDE. KDE is boss when it comes to customization and its popularity can be guessed that Ubuntu has an official KDE flavor, known as [Kubuntu][3]. - -A good thing about Ubuntu (or any other Linux OS for that matter) is that it doesn’t bind you with one particular desktop environment. You can always install additional desktop environments and choose to switch between them while keeping several desktop environments at the same time. Earlier, we have seen the installation of following desktop environments: - -- [How to install Mate desktop in Ubuntu 14.04][4] -- [How to install Cinnamon in Ubuntu 14.04][5] -- [How to install Budgie desktop in Ubuntu 14.04][6] -- [How to install GNOME Shell in Ubuntu 14.04][7] - -And today we shall see how to install KDE Plasma in Ubuntu 14.10. - -### Install KDE Plasma 5.2 in Ubuntu 14.04 ### - -Before you go on installing Plasma on Ubuntu 14.10, you should know that it will download around one GB of data. So consider your network speed and data package (if any) before opting for KDE installation. The PPA we are going to use for installing Plasma is the official PPA provided by the KDE community. Use the commands below in terminal: - - sudo apt-add-repository ppa:kubuntu-ppa/next-backports - sudo apt-get update - sudo apt-get dist-upgrade - sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers - -During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) - -You’ll be logged in to KDE Plasma now. Here is a quick screenshot of how KDE Plasma 5.2 looks like in Ubuntu 14.10: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) - -### Remove KDE Plasma from Ubuntu ### - -If you want to revert the changes, use the following commands to get rid of KDE Plasma from Ubuntu 14.10. - - sudo apt-get install ppa-purge - sudo apt-get remove kubuntu-plasma5-desktop - sudo ppa-purge ppa:kubuntu-ppa/next - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:https://www.kde.org/ -[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful -[3]:http://www.kubuntu.org/ -[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ -[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ -[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ -[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ diff --git a/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md new file mode 100644 index 0000000000..0e6a83f60f --- /dev/null +++ b/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md @@ -0,0 +1,61 @@ +如何在Ubuntu 14.10 上安装KDE Plasma 5.2 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) + +[KDE][1] Plasma 5.2已经[发布][2],在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2。 + +Ubuntu的默认桌面环境Unity很漂亮还有很多特性。但是如果你问任何有经验的Linux用户关于桌面自定义,他的回答将是KDE。KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE版本,也就是Kubuntu[3]。 + +对于Ubuntu(或者任何其他的Linux系统而言)的一个好消息是它没有绑定任何特定的桌面环境。你可以安装额外的桌面环境并且可以在不同的桌面环境间切换。早先我们已经了解了桌面环境的安装。 + +- [如何在Ubuntu 14.04中安装Mate桌面][4] +- [如何在Ubuntu 14.04中安装Cinnamon桌面][5] +- [如何在Ubuntu 14.04中安装Budgie桌面][6] +- [如何在Ubuntu 14.04中安装Gnome Shell][7] + +今天我们要展示如何在Ubuntu 14.10 中如何安装KDE Plasma。 + +### 如何在Ubuntu 14.10 上安装KDE Plasma 5.2 ### + +在Ubuntu 14.10上安装Plasma之前,你要知道这会下载大概1GB的内容。因此在安装KDE之前要考虑速度和数据包。我们下载所使用的PPA是KDEs社区官方提供的。在终端中使用下面的命令: + + sudo apt-add-repository ppa:kubuntu-ppa/next-backports + sudo apt-get update + sudo apt-get dist-upgrade + sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers + +During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. +在安装中,我们要选择默认的显示管理器。我选择的是默认的LightDM。安装完成后,重启系统。在登录时,点击登录区域旁边的Ubuntu图标。这里选择Plasma。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) + +你现在就登录到KDE Plasma了。这里有一个KDE Plasma 5.2在Ubuntu 14.10下的截图 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) + +### 从Ubuntu卸载KDE Plasma ### + +如果你想要还原更改,使用下面的命令从Ubuntu 14.10中卸载KDE Plasma。 + + sudo apt-get install ppa-purge + sudo apt-get remove kubuntu-plasma5-desktop + sudo ppa-purge ppa:kubuntu-ppa/next + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:https://www.kde.org/ +[2]:https://dot.kde.org/2015/01/27/plasma-52-beautiful-and-featureful +[3]:http://www.kubuntu.org/ +[4]:http://itsfoss.com/install-mate-desktop-ubuntu-14-04/ +[5]:http://itsfoss.com/install-cinnamon-24-ubuntu-1404/ +[6]:http://itsfoss.com/install-budgie-desktop-ubuntu-1404/ +[7]:http://itsfoss.com/how-to-install-gnome-in-ubuntu-14-04/ From e1022991da9dc0d85ee9138f70f0492c125d9096 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sat, 7 Feb 2015 12:48:38 +0800 Subject: [PATCH 232/725] translating --- ...ow are C data types “supported directly by most computers”.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20150122 How are C data types “supported directly by most computers”.md b/sources/talk/20150122 How are C data types “supported directly by most computers”.md index 0b57189252..15dfed9c0a 100644 --- a/sources/talk/20150122 How are C data types “supported directly by most computers”.md +++ b/sources/talk/20150122 How are C data types “supported directly by most computers”.md @@ -1,3 +1,4 @@ +translating by KayGuoWhu How are C data types “supported directly by most computers”? --------- From 55277d746c50fdea4245328c6ceb86e2f7081a65 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sat, 7 Feb 2015 13:57:47 +0800 Subject: [PATCH 233/725] translated --- ... “supported directly by most computers”.md | 54 ------------------- ... “supported directly by most computers”.md | 53 ++++++++++++++++++ 2 files changed, 53 insertions(+), 54 deletions(-) delete mode 100644 sources/talk/20150122 How are C data types “supported directly by most computers”.md create mode 100644 translated/talk/20150122 How are C data types “supported directly by most computers”.md diff --git a/sources/talk/20150122 How are C data types “supported directly by most computers”.md b/sources/talk/20150122 How are C data types “supported directly by most computers”.md deleted file mode 100644 index 15dfed9c0a..0000000000 --- a/sources/talk/20150122 How are C data types “supported directly by most computers”.md +++ /dev/null @@ -1,54 +0,0 @@ -translating by KayGuoWhu -How are C data types “supported directly by most computers”? ---------- - -#Q: - -I am reading K&R's *The C Programming Language*” and came across this statement [Introduction, p. 3]: - ->Because the data types and control structures provided by C are supported directly by most computers, the run-time library required to implement self-contained programs is tiny. - -What does the bolded statement mean? Is there an example of a data type or a control structure that isn't supported directly by a computer? - -#A: - -Yes, there are data types not directly supported. - -On many embedded systems, there is no hardware floating point unit. So, when you write code like this: - -```C -float x = 1.0f, y = 2.0f; -return x + y; -``` - -It gets translated into something like this: - -```C -unsigned x = 0x3f800000, y = 0x40000000; -return _float_add(x, y); -``` - -Then the compiler or standard library has to supply an implementation of `_float_add()`, which takes up memory on your embedded system. If you're counting bytes on a really tiny system, this can add up. - -Another common example is 64-bit integers (`long long` in the C standard since 1999), which are not directly supported by 32-bit systems. Old SPARC systems didn't support integer multiplication, so multiplication had to be supplied by the runtime. There are other examples. - -##Other languages - -By comparison, other languages have more complicated primitives. - -For example, a Lisp symbol requires a lot of runtime support, just like tables in Lua, strings in Python, arrays in Fortran, et cetera. The equivalent types in C are usually either not part of the standard library at all (no standard symbols or tables) or they are much simpler and don't require much runtime support (arrays in C are basically just pointers, nul-terminated strings are almost as simple). - -##Control structures - -A notable control structure missing from C is exception handling. Nonlocal exit is limited to `setjmp()` and `longjmp()`, which just save and restore certain parts of processor state. By comparison, the C++ runtime has to walk the stack and call destructors and exception handlers. - ----- -via:[stackoverflow](http://stackoverflow.com/questions/27977522/how-are-c-data-types-supported-directly-by-most-computers/27977605#27977605) - -作者:[Dietrich Epp][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://stackoverflow.com/users/82294/dietrich-epp \ No newline at end of file diff --git a/translated/talk/20150122 How are C data types “supported directly by most computers”.md b/translated/talk/20150122 How are C data types “supported directly by most computers”.md new file mode 100644 index 0000000000..d204928ad6 --- /dev/null +++ b/translated/talk/20150122 How are C data types “supported directly by most computers”.md @@ -0,0 +1,53 @@ +C语言数据类型是如何被大多数计算机系统所支持? +--------- + +#问题: + +在读K&R版的*The C Programming Language*一书时,我在[介绍,第3页]看到这样一条说明: + +>因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。 + +这段黑体说明了什么?能找到一个例子来说明C语言中的某种数据类型或控制结构并不能被一种计算机系统所支持呢? + +#回答: + +事实上,C语言中确实有不被直接支持的数据类型。 + +在许多嵌入式系统中,硬件上并没有浮点运算单元。因此,如果你写出下面的代码: + +```C +float x = 1.0f, y = 2.0f; +return x + y; +``` + +可能会被转化成下面这种形式: + +```C +unsigned x = 0x3f800000, y = 0x40000000; +return _float_add(x, y); +``` + +然后编译器或标准库必须提供'_float_add()'的具体实现,这会占用嵌入式系统的内存空间。依此去计算代码在某个微型系统(译者注:也就是指微型嵌入式系统)的实际字节数,也会发现有所增加。 + +另一个常见的例子是64位整型数(C语言标准中'long long'类型是1999年之后才出现的),这种类型在32位系统上也不能直接使用。古董级的SPARC系统则不支持整型乘法,所以在运行时必须提供乘法的实现。当然,还有一些其它例子。 + +##其它语言 + +相比起来,其它编程语言有更加复杂的基本类型。 + +比如,Lisp中的symbol需要大量的运行时实现支持,就像Lua中的tables、Python中的strings、Fortran中的arrays,等等。在C语言中等价的类型通常要么不属于标准库(C语言没有标准symbols或tables),要么更加简单,而且并不需要那么多的运行时支持(C语言中的array基本上就是指针,以NULL结尾的字符串实现起来也很简单)。 + +##控制结构 + +异常处理是C语言中没有的一种控制结构。非局部的退出只有'setjmp()'和'longjmp()'两种,只能提供保存和恢复某些部分的处理器状态。相比之下,C++运行时环境必须先遍历函数调用栈,然后调用析构函数和异常处理函数。 + +---- +via:[stackoverflow](http://stackoverflow.com/questions/27977522/how-are-c-data-types-supported-directly-by-most-computers/27977605#27977605) + +作者:[Dietrich Epp][a] +译者:[KayGuoWhu](https://github.com/KayGuoWhu) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/82294/dietrich-epp \ No newline at end of file From 1dc146e59438a670e20354e5a830c8050e352a0d Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sat, 7 Feb 2015 20:35:43 +0800 Subject: [PATCH 234/725] Delete 20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕,删除源文件。 --- ...here With Twitter's Open Source Library.md | 93 ------------------- 1 file changed, 93 deletions(-) delete mode 100644 sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md diff --git a/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md b/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md deleted file mode 100644 index e1f0fd719f..0000000000 --- a/sources/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md +++ /dev/null @@ -1,93 +0,0 @@ -Translating by FSSlc - -How To Use Emoji Anywhere With Twitter's Open Source Library -================================================================================ -> Embed them in webpages and other projects via GitHub. - -![](http://a3.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2OTIyNTI3MjcxNTU1.png) - -Emoji, tiny characters from Japan that convey emotions through images, have already conquered the world of cellphone text messaging. - -Now, you can post them everywhere else in the virtual world, too. Twitter has just [open-sourced][1] its emoji library so you can use them for your own websites, apps, and projects. - -This will require a little bit of heavy lifting. Unicode has recognized and even standardized the emoji alphabet, but emoji still [aren’t fully compliant with all Web browsers][2], meaning they'll show up as “tofu,” or blank boxes, most of the time. When Twitter wanted to make emoji available, the social network teamed up with a company called [Icon Factory][3] to render browser imitations of the text message symbols. As a result, Twitter says there’s been lots of demand for access to its emoji. - -Now, you can clone Twitter’s entire library on [GitHub][4] to use in your development projects. Here’s how to do that, and how to make emoji easier to use after you do. - -### Obtain Unicode Support For Emoji ### - -Unicode is an international encoding standard that assigns a string of characters to any symbol, letter, or digit people want to use online. In other words, it’s the missing link between how you read text on a computer, and how the computer reads text. For example, while you are looking at an empty space between these words, the computer sees “&mbsp.” - -Unicode even has its own [primitive emoji][5] that can be read in the browser without any effort on your part. For example while you see a ♥, your computer is decoding the string “2665.” - -To use Twitter’s emoji library in most cases, you simply need to add a script inside the section of your HTML page: - - - -This grants your project access to the JavaScript library that contains the hundreds of emoji that work on Twitter. However, creating a document with simply this script isn’t going to make emoji appear on your site. You also need to actually insert some emoji! - -In the section, paste a few of the emoji strings you can find in Twitter’s [preview.html source code][6]. I used 🎹 and 🏁 without really knowing how they'd appear in the browser window. Yeah, you’ll have to just paste and guess. You can already see the problem we're going to fix in section two. - -However, through some trial and error, you can turn a raw HTML file that looks like this— - -![](http://a4.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODQyNTMzNTQ1OTk0.png) - -—into a webpage that looks something like this: - -![](http://a1.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODExNjYzNDU1NTA2.png) - -### Convert Emoji Into Readable Language ### - -Twitter’s solution is all well and good for making a site or app emoji compliant. But if you want to be able to easily insert your favorite emoji at will via HTML, you’re going to need an easier solution than memorizing all those Unicode strings. - -That’s where programmer Elle Kasai’s [Twemoji Awesome][7] styles come in. - -By adding Elle’s open-source stylesheet to any webpage, you can use English words to understand which emoji you’re inserting. So if you want a heart emoji to show up, you can simply type this : - - - -In order to do this, let’s download Elle’s project with the “Download ZIP” button on GitHub. - -Next, let’s make a new folder on the desktop. Inside this folder, we’ll put emoji.html—the raw HTML file I showed you before, and also Elle’s [twemoji-awesome.css][8]. - -We’ll need the HTML file to acknowledge the CSS file, so in the section of the html page you’ll want to add a link from the css file: - - - -Once you put this in, you can delete Twitter's script from before. Elle's styles each link to the Unicode string for the relevant emoji, so you no longer have to. - -Now, go down to the body section and add a few emoji. I used , , and . - -You'll end up with something like this: - -![](http://a2.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODcyMDYxNDU2MzU0.png) - -Save and view your creation in the browser: - -![](http://a1.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODExOTMxODkwOTYy.png) - -Ta-da! Not only have you gotten a basic webpage to support emoji in the browser, you’ve also made it easy to do. Feel free to check out this tutorial on [my GitHub][9] for actual files you can clone instead of screenshots. - -Lead image via [Get Emoji][10]; screenshots by Lauren Orsini - --------------------------------------------------------------------------------- - -via: http://readwrite.com/2014/11/12/how-to-use-emoji-in-the-browser-window - -作者:[Lauren Orsini][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://readwrite.com/author/lauren-orsini -[1]:https://blog.twitter.com/2014/open-sourcing-twitter-emoji-for-everyone -[2]:http://www.unicode.org/reports/tr51/full-emoji-list.html -[3]:https://twitter.com/iconfactory -[4]:https://github.com/twitter/twemoji -[5]:http://www.unicode.org/reports/tr51/full-emoji-list.html -[6]:https://github.com/twitter/twemoji/blob/gh-pages/preview.html -[7]:http://ellekasai.github.io/twemoji-awesome/ -[8]:https://github.com/ellekasai/twemoji-awesome/blob/gh-pages/twemoji-awesome.css -[9]:https://github.com/laurenorsini/Emoji-Everywhere -[10]:http://getemoji.com/ From cecb5a03ffe423bd036e2a342979e13f63c1ba1f Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sat, 7 Feb 2015 20:37:35 +0800 Subject: [PATCH 235/725] Create 20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕。FSSlc --- ...here With Twitter's Open Source Library.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md diff --git a/translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md b/translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md new file mode 100644 index 0000000000..6f1e2b5b56 --- /dev/null +++ b/translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md @@ -0,0 +1,91 @@ + 怎样通过 Twitter 的开源库来随处使用 Emoji 表情符号 +================================================================================ +> 通过 GitHub 将它们嵌入到网页和其他项目中。 + +![](http://a3.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2OTIyNTI3MjcxNTU1.png) + +Emoji, 来自日本的小巧符号,通过图像表达感情,已经征服了手机文字信息的世界。 + +现在,你可以在虚拟世界中随处使用它们了。 Twitter 最近[开源了][1]他们的 emoji 符号库,使得你可以在你自己的网站,应用,和项目中使用它们。 + +但这需要一点体力活。 Unicode 已经识别甚至标准化了 emoji 字母表, 然而 emoji 仍然[不能完全与所有的网络浏览器相兼容][2],这意味着大多数情况下,它们将呈现为 “豆腐块”或 空白盒子。当 Twitter 想使得 emoji 可用时,社交网络联合一家名为[Icon Factory][3]的公司共同渲染浏览器以模仿 文本信息符号的效果。结果,Twiter 说道 人们对他们的 emoji 库有很大的需求。 + +现在, 你可以从 [GitHub][4] 上克隆 Twitter 的整个库,从而在你的开发项目中使用它们。 下面将为你介绍如何达到上面的目的以及如何使得 emoji 更容易被使用。 + +### 为 Emoji 得到 Unicode 支持 ### + +Unicode 是国际编码标准,它为任意的符号,字母或人们想在网络上使用的数字配置了一串符号。换句话说,它是 你如何在计算机上阅读文本 与 计算机如何读取文本 之间的缺失环节。例如,对于你正看到的位于这些句子中的`空白`,计算机读取为 “&mbsp”。 + +Unicode 甚至拥有其自己的 [原始 emoji][5],它们可以 在没有你的任何努力的情况下在浏览器中被阅读。例如,当你看到了 一个 ❤ 符号,你的计算机正在解码字符串 “2665” 。 + +要在大多数情况下使用 Twitter 的 emoji 库,你只需在你的 HTML 网页中的 ``块中添加如下脚本: + + + +这样就使得你的项目可以访问 包含有已经在 Twitter 中可使用的数以百计的 Emoji 符号的 JavaScript 库。然而,创建一个仅仅包含这个脚本的文档并不能使得在你的网站中呈现出 emoji 符号,实际上,你仍需要嵌入一些 emoji 符号! + +在 ``块中,粘贴一些可以在 Twitter 的[preview.html 文件源代码][6] 中找到的 emoji 字符串。我使用了 🎹 和 🏁,当然我并不知道在浏览器窗口中它们的样子。是的,你必须粘贴并猜测它们。你已经看出了问题,我们将在 第二小节中予以解决。 + +无论如何,通过一些尝试,你可以将一个如下图的原始 HTML 文件--- + +![](http://a4.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODQyNTMzNTQ1OTk0.png) + +---转变成如下图的网页: + +![](http://a1.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODExNjYzNDU1NTA2.png) + +### 将 Emoji 转换为可阅读的语言 ### + +对于一个网站或应用,Twitter 的解决方案是非常适用的。但如果你想通过 HTML 轻易地插入你喜爱的 emoji 符号,你需要一个更易实现的解决方案,而不是记住所有代表 emoji 的 Unicode 字符串。 + +那正是程序员 Elle Kasai 的 [Twemoji Awesome][7] 样式大展身手的地方。 + +通过向任意网页中添加 Elle 的开源样式表,你可以适用 英语单词来理解你正插入的 emoji 符号的意义。所以如若你想展示一个 心形 emoji 符号,你可以简单地输入: + + + +为了实现上面的目的,让我们下载 Elle 的项目,通过点击在 GitHub 上 “Download ZIP” 按钮。 + +接着,我们在桌面上新建一个文件夹,然后进入该文件夹,并将 emoji.html---我先前向你展示的 HTML 源文件--- 和 Elle 的 [twemoji-awesome.css][8] 一同放进去。 + +我们还需要 HTML 文件识别这个 CSS 文件,所以在 html 网页中的 `` 块中,为 CSS 文件添加一个链接: + + + + 一旦你将上面的代码添加了进去,你便可以删除先前添加的 Twitter 的脚本链接。 + + 现在,找到 `body` 块部分的代码,然后添加一些 emoji 符号。我使用了 ``, ``, `` 和 ``。 + + 最终,你将得到如下的代码: + +![](http://a2.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODcyMDYxNDU2MzU0.png) + +保存并在浏览器中查看上面的文件: + +![](http://a1.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODExOTMxODkwOTYy.png) + +当当!这样你不仅得到了一个可以在浏览器中支持 emoji 符号的基本网页,而且还知道了如何简单地实现它。你可以随意的在[我的 GitHub][9] 中查看这个教程,并且可以克隆这些实际的文件而不只是看看这些截图。 + +来自于[得到 Emoji][10]的引导图像; Lauren Orsini 截图。 + +-------------------------------------------------------------------------------- + +via: http://readwrite.com/2014/11/12/how-to-use-emoji-in-the-browser-window + +作者:[Lauren Orsini][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://readwrite.com/author/lauren-orsini +[1]:https://blog.twitter.com/2014/open-sourcing-twitter-emoji-for-everyone +[2]:http://www.unicode.org/reports/tr51/full-emoji-list.html +[3]:https://twitter.com/iconfactory +[4]:https://github.com/twitter/twemoji +[5]:http://www.unicode.org/reports/tr51/full-emoji-list.html +[6]:https://github.com/twitter/twemoji/blob/gh-pages/preview.html +[7]:http://ellekasai.github.io/twemoji-awesome/ +[8]:https://github.com/ellekasai/twemoji-awesome/blob/gh-pages/twemoji-awesome.css +[9]:https://github.com/laurenorsini/Emoji-Everywhere +[10]:http://getemoji.com/ From 0fb0ae13158a6adbdaddf4b67ccbb933f7985714 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Sat, 7 Feb 2015 23:08:37 +0800 Subject: [PATCH 236/725] translated --- ...t be opened correctly' on Google Chrome.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md index 8d5c4b02ca..0a10253031 100644 --- a/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md +++ b/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md @@ -1,52 +1,50 @@ -> Vic - -Linux FAQs with Answers--How to fix “Your profile could not be opened correctly” on Google Chrome +Linux有问必答--如果修复Google Chrome 的 ‘Your profile could not be opened correctly’错误 ================================================================================ -> **Question**: When I open Google Chrome web browser on my Linux box, I have several pop-up messages saying "Your profile could not be opened correctly." This error happens every time I open Google Chrome. How can I solve this error? +> **提问**:当我在linux打开Google Chrome 浏览器时,我已经几次收到弹出窗口,提示我的档案文件没有被正确打开(Your profile could not be opened correctly.)。每次我打开Chrome都要弹出来,我应该如何修复这个问题? -When you see an error message saying "Your profile could not be opened correctly" on your Google Chrome web browser," that is because somehow your profile data on Google Chrome got corrupted. This can happen while you upgrade your Google Chrome browser manually on Linux. +当你在你的Chrome上看见"Your profile could not be opened correctly"错误信息时,那是因为你的Chrome档案数据已经损坏。这个问题经常发生在手动升级Google Chrome时候。 ![](https://farm8.staticflickr.com/7428/16238502737_27bdda6685_o.png) -Depending on exactly which file got corrupted, you can try one of these methods. +修复取决于到底哪个文件损坏,你可以试试下面的几个方法。 -### Method One ### +### 方法一 ### -Close all your Chrome browser windows/tabs. +关掉所有Chrome窗口和子窗口。 -Go to ~/.config/google-chrome/Default, and remove/rename "Web Data" file as below. +进入~/.config/google-chrome/Default,移除或者重命名"Web Data"文件。 $ cd ~/.config/google-chrome/Default $ rm "Web Data" -Re-open Google Chrome browser. +再次开打Google Chrome浏览器。 -### Method Two ### +### 方法二 ### -Close all your Chrome browser windows/tabs. +关掉所有Chrome窗口和子窗口。 -Go to ~/.config/google-chrome/"Profile 1", and rename "History" file as below. +进入~/.config/google-chrome/"Profile 1", 并重命名"History"文件。 $ cd ~/.config/google-chrome/"Profile 1" $ mv History History.bak -Re-open Google Chrome browser. +再次开打Google Chrome浏览器。 -### Method Three ### +### 方法三 ### -If the problem still persists, you can remove the Default profile folder (~/.config/google-chrome/Default) altogether. Note that by doing so, you will lose all previously opened Google tabs, imported bookmarks, browsing history, sign-in data, etc. +如果依然没有解决,你可以试试移除所有默认档案文件夹(~/.config/google-chrome/Default)。注意:如果这样做,你将会遗失所有之前打开的Google子窗口,导入的书签,浏览记录和登录数据等。 -Before removing it, first close all your Chrome browser windows/tabs. +在移除之前,先关掉所有Chrome窗口和子窗口 $ rm -rf ~/.config/google-chrome/Default -After restarting Google Chrome, the folder ~/.config/google-chrome/Default will automatically be re-generated. +之后重启Google Chrome,文件夹~/.config/google-chrome/Default会自动生成。 -------------------------------------------------------------------------------- via: http://ask.xmodulo.com/your-profile-could-not-be-opened-correctly-google-chrome.html -译者:[译者ID](https://github.com/译者ID) +译者:[VicYu/Vic020](http://vicyu.net) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 232d40ac2ab00a39e191484d6989f43413ce2a8f Mon Sep 17 00:00:00 2001 From: Vic___ Date: Sat, 7 Feb 2015 23:09:25 +0800 Subject: [PATCH 237/725] moved --- ...our profile could not be opened correctly' on Google Chrome.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md (100%) diff --git a/sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md similarity index 100% rename from sources/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md rename to translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md From c567823cd8390bc452e24e931c3f8907ecb12ff1 Mon Sep 17 00:00:00 2001 From: VicYu Date: Sat, 7 Feb 2015 23:13:11 +0800 Subject: [PATCH 238/725] =?UTF-8?q?=E6=8A=A2=E5=9C=B0=E4=B8=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5 25 Linux Shell Scripting interview Questions & Answers.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md b/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md index a042cba174..11d5e6645a 100644 --- a/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md +++ b/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md @@ -1,3 +1,4 @@ + Vic 25 Linux Shell Scripting interview Questions & Answers ================================================================================ ### Q:1 What is Shell Script and why it is required ? ### @@ -374,4 +375,4 @@ via: http://www.linuxtechi.com/linux-shell-scripting-interview-questions-answers 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.linuxtechi.com/author/pradeep/ \ No newline at end of file +[a]:http://www.linuxtechi.com/author/pradeep/ From 36d9263f5cc3e9f0ac397fd156855bccb6c70c02 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 8 Feb 2015 11:10:29 +0800 Subject: [PATCH 239/725] translating --- ... Addresses To Single Network Interface Card On CentOS 7.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md b/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md index 73d91116cb..1b7ac2f5b3 100644 --- a/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md +++ b/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md @@ -1,3 +1,5 @@ +Translating---geekpi + Linux Basics: Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7 ================================================================================ Some times you might want to use more than one IP address for your network interface card. What are you going to do? Buy an extra network card and assign new IP? No, It’s not necessary(atleast in the small networks). We can now assign multiple ip addresses to single network interface card in CentOS / RHEL 7 systems. Curious to know how? Well, Follow me, It is not that difficult. @@ -205,4 +207,4 @@ via: http://www.unixmen.com/linux-basics-assign-multiple-ip-addresses-single-net 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.unixmen.com/author/sk/ \ No newline at end of file +[a]:http://www.unixmen.com/author/sk/ From dff489670f227d5a838d184656371e84f4fc73a0 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 8 Feb 2015 11:30:18 +0800 Subject: [PATCH 240/725] translated --- ...ngle Network Interface Card On CentOS 7.md | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) rename {sources => translated}/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md (71%) diff --git a/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md b/translated/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md similarity index 71% rename from sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md rename to translated/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md index 1b7ac2f5b3..3dec583608 100644 --- a/sources/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md +++ b/translated/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md @@ -1,16 +1,14 @@ -Translating---geekpi - -Linux Basics: Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7 +Linux 基础:在CentOS 7上给一个网卡分配多个IP地址 ================================================================================ -Some times you might want to use more than one IP address for your network interface card. What are you going to do? Buy an extra network card and assign new IP? No, It’s not necessary(atleast in the small networks). We can now assign multiple ip addresses to single network interface card in CentOS / RHEL 7 systems. Curious to know how? Well, Follow me, It is not that difficult. +有时你也许想要给一个网卡多个地址。你该怎么做呢?另外买一个网卡来分配地址?不用这么做(只要在小型网络中)。我们现在可以再CentOS/RHEL 7中给一个网卡分配多个ip地址。想知道怎么做么?好的,跟随我,这并不难。 -First, let us find the IP address of the network card. In my CentOS 7 server, I use only one network card. +首先,让我们找到网卡的IP地址。在我的CentOS 7服务器中,我只使用了一个网卡。 -Run the following command with root user privileges: +用root特权运行下面的命令: ip addr -Sample output: +示例输出: 1: lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 @@ -23,15 +21,15 @@ Sample output: inet 192.168.1.150/24 brd 192.168.1.255 scope global enp0s3 valid_lft forever preferred_lft forever -As you see in the above output, my network card name is enp0s3, and its IP address is 192.168.1.150. +如上所见,我的网卡名是enp0s3,ip地址是192.168.1.150。 -Well, as you may know, the the network card configuration files of your system is stored under **/etc/sysconfig/network-scripts/** directory. Each cards details will be stored in different names, for example **ifcfg-enp0s3**. +如你所知,网卡的配置文件存储在 **/etc/sysconfig/network-scripts/** 目录下。每个网卡的详细内容将会以不同的名字存储,比如**ifcfg-enp0s3**。 -Let us see the details of **ifcfg-enp0s3**. +让我们看下**ifcfg-enp0s3**的细节。 cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 -Sample output: +示例输出: TYPE="Ethernet" BOOTPROTO="none" @@ -52,13 +50,13 @@ Sample output: IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" -Okay, now we will assign multiple addresses in the same subnet. +好的,现在我们将在相同的子网中分配多个地址了。 -Edit file **/etc/sysconfig/network-scripts/ifcfg-enp0s3**: +编辑文件 **/etc/sysconfig/network-scripts/ifcfg-enp0s3**: vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 -Add extra IP addresses one by one as shown below. +像下面那样加入额外的IP地址。 TYPE="Ethernet" BOOTPROTO="none" @@ -81,19 +79,20 @@ Add extra IP addresses one by one as shown below. IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" -As you see above, I have added two more IP addresses: **IPADDR1=”192.168.1.151″ & IPADDR2=”192.168.1.152″** +如你所见,我已经加了两个IP地址:**IPADDR1=”192.168.1.151″ & IPADDR2=”192.168.1.152″** -Like wise, you can add as many a IP addresses you want. +类似地,你可以加入更多的ip地址。 Finally, save and close the file. Restart network service to take effect the changes. +最后,保存并退出文件。重启网络服务来使更改生效。 systemctl restart network -Now, let us check the IP addresses have been added or not. +现在,让我们检查是否已经加入了ip地址。 ip addr -Sample output: +示例输出: : lo: mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 @@ -112,13 +111,13 @@ Sample output: inet6 fe80::a00:27ff:fe3f:ab68/64 scope link valid_lft forever preferred_lft forever -As you see above, the single network interface card has three IP addresses. +如你所见,单个网卡已经有3个ip地址了。 -Let us ping the newly added IP addresses: +让我们ping一下新增的IP地址: ping -c 4 192.168.1.151 -Sample output: +示例输出: PING 192.168.1.151 (192.168.1.151) 56(84) bytes of data. 64 bytes from 192.168.1.151: icmp_seq=1 ttl=64 time=0.048 ms @@ -134,7 +133,7 @@ Sample output: ping -c 4 192.168.1.152 -Sample output: +示例输出: PING 192.168.1.152 (192.168.1.152) 56(84) bytes of data. 64 bytes from 192.168.1.152: icmp_seq=1 ttl=64 time=0.034 ms @@ -146,9 +145,9 @@ Sample output: 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.034/0.064/0.075/0.018 ms -If you want to use **different subnet**, then you can change the **PREFIX0=24** line to different subnet, such as **PREFIX1=16**. +如果你想要使用**不同的子网**,你要改变**PREFIX0=24**成不同的子网,比如 **PREFIX1=16**。 -For example, I am going to add Class A IP address(**ex.10.0.0.1**) to my network card. +比如,我想要添加一个A类地址(**比如10.0.0.1*)到我的网卡中。 TYPE="Ethernet" BOOTPROTO="none" @@ -173,15 +172,15 @@ For example, I am going to add Class A IP address(**ex.10.0.0.1**) to my network IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" -Do you notice that I have added a Class A type address(10.0.0.1) and prefix=16. +你可以看到我已经添加一个A类地址(10.0.0.1)并且前缀是16 -Save and close the file. Restart network service, +保存并退出文件。重启网络服务, -Then, ping the new added IP: +接着,ping新增的地址: ping -c 4 10.0.0.1 -Sample output: +示例输出: PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.097 ms @@ -193,16 +192,16 @@ Sample output: 4 packets transmitted, 4 received, 0% packet loss, time 3000ms rtt min/avg/max/mdev = 0.073/0.079/0.097/0.014 ms -Similarly, you can add different Gateways too. +相似地,你可以添加不同的网关。 -That’s it. +就是这样。 -------------------------------------------------------------------------------- via: http://www.unixmen.com/linux-basics-assign-multiple-ip-addresses-single-network-interface-card-centos-7/ 作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 985d674ba69578faed8f8d6d06640eb6a856edaa Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sun, 8 Feb 2015 12:25:09 +0800 Subject: [PATCH 241/725] Update 20141203 Undelete Files on Linux Systems.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- sources/tech/20141203 Undelete Files on Linux Systems.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20141203 Undelete Files on Linux Systems.md b/sources/tech/20141203 Undelete Files on Linux Systems.md index d0fa7f6a98..126501e225 100644 --- a/sources/tech/20141203 Undelete Files on Linux Systems.md +++ b/sources/tech/20141203 Undelete Files on Linux Systems.md @@ -1,3 +1,5 @@ +Translating by FSSlc + Undelete Files on Linux Systems ================================================================================ Often times, a computer user will delete a needed file accidentally and not have an easy way to regain or recreate the file. Thankfully, files can be undeleted. When a user deletes a file, it is not gone, only hidden for some time. Here is how it all works. On a filesystem, the system has what is called a file allocation list. This list keeps track of what files are where on the storage unit (hard-drive, MicroSD card, flash-drive, etc.). When a file is deleted, the filesystem will perform one of two tasks on the allocation table. The file's entry on the file allocation table marked as "free space" or the file's entry on the list is erased and then the space is marked as free. Now, if a file needs to be placed on the storage unit, the operating system will put the file in the space marked as empty. After the new file is written to the "empty space", the deleted file is now gone forever. When a deleted file is to be recovered, the user must not manipulate any files because if the "empty space" is used, then the file can never be retrieved. @@ -115,4 +117,4 @@ via: http://www.linux.org/threads/undelete-files-on-linux-systems.4316/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.linux.org/members/devyncjohnson.4843/ -[1]:http://www.cgsecurity.org/wiki/TestDisk \ No newline at end of file +[1]:http://www.cgsecurity.org/wiki/TestDisk From 87350c07a017128e61292d3a39b247d38e620224 Mon Sep 17 00:00:00 2001 From: soooogreen <54364732@qq.com> Date: Sun, 8 Feb 2015 13:19:58 +0800 Subject: [PATCH 242/725] Update 20150202 How to create and show a presentation from the command line on Linux.md translating by soooogreen first time to apply..for testing --- ...e and show a presentation from the command line on Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md b/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md index d80b385544..e871d29e42 100644 --- a/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md +++ b/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md @@ -1,3 +1,4 @@ +translating by soooogreen How to create and show a presentation from the command line on Linux ================================================================================ When you prepare a talk for audience, the first thing that will probably come to your mind is shiny presentation charts filled with fancy diagrams, graphics and animation effects. Fine. No one can deny the power of visually charming presentation. However, not all presentations need to be Ted talk quality. Often times, the purpose of a presentation is to convey specific information, which can easily be done with textual messages. In such cases, your time can be better spent on gathering information and checking facts, rather than searching for good-looking graphics from Google Image. @@ -183,4 +184,4 @@ via: http://xmodulo.com/presentation-command-line-linux.html [2]:https://github.com/visit1985/mdp [3]:http://daringfireball.net/projects/markdown/ [4]:https://aur.archlinux.org/packages/mdp-git/ -[5]:http://www.ngolde.de/tpp.html \ No newline at end of file +[5]:http://www.ngolde.de/tpp.html From ee93743a9cda14b7124f83d31bd69125caf18fa2 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sun, 8 Feb 2015 13:36:18 +0800 Subject: [PATCH 243/725] translating by KayGuoWhu --- ...nt to a float when a float cannot represent all int values.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md b/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md index 25a2dc6daf..b2e6372a0b 100644 --- a/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md +++ b/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md @@ -1,3 +1,4 @@ +translating by KayGuoWhu Why does C++ promote an int to a float when a float cannot represent all int values? --------- From ad06407b05681dece41cf1b85c53ffe0b3a92009 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Sun, 8 Feb 2015 19:08:40 +0800 Subject: [PATCH 244/725] Update 20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md --- ...8 Meet Vivaldi--A New Web Browser Built for Power Users.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md index c55a5fabe7..d8df2ec586 100644 --- a/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md +++ b/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md @@ -1,3 +1,5 @@ +Translating by H-mudcup + Meet Vivaldi — A New Web Browser Built for Power Users ================================================================================ ![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) @@ -57,4 +59,4 @@ via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:https://vivaldi.com/#Download \ No newline at end of file +[1]:https://vivaldi.com/#Download From 2e927dd0e0d18309d14d2b9d54bf1526029dd4eb Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 9 Feb 2015 09:54:57 +0800 Subject: [PATCH 245/725] =?UTF-8?q?20150209-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...RSS feed from the command line on Linux.md | 106 +++++++++++++ ...nQRM Cloud Computing Platform In Debian.md | 149 ++++++++++++++++++ ...esktop on Ubuntu 14.10 or Linux Mint 17.md | 98 ++++++++++++ 3 files changed, 353 insertions(+) create mode 100644 sources/tech/20150209 How to access Feedly RSS feed from the command line on Linux.md create mode 100644 sources/tech/20150209 Install OpenQRM Cloud Computing Platform In Debian.md create mode 100644 sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md diff --git a/sources/tech/20150209 How to access Feedly RSS feed from the command line on Linux.md b/sources/tech/20150209 How to access Feedly RSS feed from the command line on Linux.md new file mode 100644 index 0000000000..58a0841280 --- /dev/null +++ b/sources/tech/20150209 How to access Feedly RSS feed from the command line on Linux.md @@ -0,0 +1,106 @@ +How to access Feedly RSS feed from the command line on Linux +================================================================================ +In case you didn't know, [Feedly][1] is one of the most popular online news aggregation services. It offers seamlessly unified news reading experience across desktops, Android and iOS devices via browser extensions and mobile apps. Feedly took on the demise of Google Reader in 2013, quickly gaining a lot of then Google Reader users. I was one of them, and Feedly has remained my default RSS reader since then. + +While I appreciate the sleek interface of Feedly's browser extensions and mobile apps, there is yet another way to access Feedly: Linux command-line. That's right. You can access Feedly's news feed from the command line. Sounds geeky? Well, at least for system admins who live on headless servers, this can be pretty useful. + +Enter [Feednix][2]. This open-source software is a Feedly's unofficial command-line client written in C++. It allows you to browse Feedly's news feed in ncurses-based terminal interface. By default, Feednix is linked with a console-based browser called w3m to allow you to read articles within a terminal environment. You can choose to read from your favorite web browser though. + +In this tutorial, I am going to demonstrate how to install and configure Feednix to access Feedly from the command line. + +### Install Feednix on Linux ### + +You can build Feednix from the source using the following instructions. At the moment, the "Ubuntu-stable" branch of the official Github repository has the most up-to-date code. So let's use this branch to build it. + +As prerequisites, you will need to install a couple of development libraries, as well as w3m browser. + +#### Debian, Ubuntu or Linux Mint #### + + $ sudo apt-get install git automake g++ make libncursesw5-dev libjsoncpp-dev libcurl4-gnutls-dev w3m + $ git clone -b Ubuntu-stable https://github.com/Jarkore/Feednix.git + $ cd Feednix + $ ./autogen.sh + $ ./configure + $ make + $ sudo make install + +#### Fedora #### + + $ sudo yum groupinstall "C Development Tools and Libraries" + $ sudo yum install gcc-c++ git automake make ncurses-devel jsoncpp-devel libcurl-devel w3m + $ git clone -b Ubuntu-stable https://github.com/Jarkore/Feednix.git + $ cd Feednix + $ ./autogen.sh + $ ./configure + $ make + $ sudo make install + +Arch Linux + +On Arch Linux, you can easily install Feednix from [AUR][3]. + +### Configure Feednix for the First Time ### + +After installing it, launch Feednix as follows. + + $ feednix + +The first time you run Feednix, it will pop up a web browser window, where you need to sign up to create a Feedly's user ID and its corresponding developer access token. If you are running Feednix in a desktop-less environment, open a web browser on another computer, and go to https://feedly.com/v3/auth/dev. + +![](https://farm8.staticflickr.com/7427/15825106524_42883b3e32_b.jpg) + +Once you sign in, you will see your Feedly user ID generated. + +![](https://www.flickr.com/photos/xmodulo/15827565143/) + +To retrieve an access token, you need to follow the token link sent to your email address in your browser. Only then will you see the window showing your user ID, access token, and its expiration date. Be aware that access token is quite long (more than 200 characters). The token appears in a horizontally scrollable text box, so make sure to copy the whole access token string. + +![](https://farm9.staticflickr.com/8605/16446685812_9098df494b_b.jpg) + +Paste your user ID and access token into the Feednix' command-line prompt. + + [Enter User ID] >> XXXXXX + [Enter token] >> YYYYY + +After successful authentication, you will see an initial Feednix screen with two panes. The left-side "Categories" pane shows a list of news categories, while the right-side "Posts" pane displays a list of news articles in the current category. + +![](https://farm8.staticflickr.com/7412/16421639256_deb8e2d276_c.jpg) + +### Read News in Feednix ### + +Here I am going to briefly describe how to access Feedly via Feednix. + +#### Navigate Feednix #### + +As I mentioned, the top screen of Feednix consists of two panes. To switch focus between the two panes, use TAB key. To move up and down the list within a pane, use 'j' and 'k' keys, respectively. These keyboard shorcuts are obviously inspired by Vim text editor. + +#### Read an Article #### + +To read a particular article, press 'o' key at the current article. It will invoke w2m browser, and load the article inside the browser. Once you are done reading, press 'q' to quit the browser, and come back to Feednix. If your environment can open a web browser, you can press 'O' to load an article on your default web browser such as Firefox. + +![](https://farm8.staticflickr.com/7406/16445870201_b98e8da6d9_b.jpg) + +#### Subscribe to a News Feed #### + +You can add any arbitrary RSS news feed to your Feedly account from Feednix interface. To do so, simply press 'a' key. This will show "[ENTER FEED]:" prompt at the bottom of the screen. After typing the RSS feed, go ahead and fill in the name of the feed and its preferred category. + +![](https://farm8.staticflickr.com/7324/16421639296_b52ed3c52e_c.jpg) + +#### Summary #### + +As you can see, Feednix is a quite convenient and easy-to-use command-line RSS reader. If you are a command-line junkie as well as a regular Feedly user, Feednix is definitely worth trying. I have been communicating with the creator of Feednix, Jarkore, to troubleshoot some issue. As far as I can tell, he is very active in responding to bug reports and fixing bugs. I encourage you to try out Feednix and let him know your feedback. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/feedly-rss-feed-command-line-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:https://feedly.com/ +[2]:https://github.com/Jarkore/Feednix +[3]:https://aur.archlinux.org/packages/feednix/ \ No newline at end of file diff --git a/sources/tech/20150209 Install OpenQRM Cloud Computing Platform In Debian.md b/sources/tech/20150209 Install OpenQRM Cloud Computing Platform In Debian.md new file mode 100644 index 0000000000..127f10affc --- /dev/null +++ b/sources/tech/20150209 Install OpenQRM Cloud Computing Platform In Debian.md @@ -0,0 +1,149 @@ +Install OpenQRM Cloud Computing Platform In Debian +================================================================================ +### Introduction ### + +**openQRM** is a web-based open source Cloud computing and datacenter management platform that integrates flexibly with existing components in enterprise data centers. + +It supports the following virtualization technologies: + +- KVM, +- XEN, +- Citrix XenServer, +- VMWare ESX, +- LXC, +- OpenVZ. + +The Hybrid Cloud Connector in openQRM supports a range of private or public cloud providers to extend your infrastructure on demand via **Amazon AWS**, **Eucalyptus** or **OpenStack**. It, also, automates provisioning, virtualization, storage and configuration management, and it takes care of high-availability. A self-service cloud portal with integrated billing system enables end-users to request new servers and application stacks on-demand. + +openQRM is available in two different flavours such as: + +- Enterprise Edition +- Community Edition + +You can view the difference between both editions [here][1]. + +### Features ### + +- Private/Hybrid Cloud Computing Platform; +- Manages physical and virtualized server systems; +- Integrates with all major open and commercial storage technologies; +- Cross-platform: Linux, Windows, OpenSolaris, and *BSD; +- Supports KVM, XEN, Citrix XenServer, VMWare ESX(i), lxc, OpenVZ and VirtualBox; +- Support for Hybrid Cloud setups using additional Amazon AWS, Eucalyptus, Ubuntu UEC cloud resources; +- Supports P2V, P2P, V2P, V2V Migrations and High-Availability; +- Integrates with the best Open Source management tools – like puppet, nagios/Icinga or collectd; +- Over 50 plugins for extended features and integration with your infrastructure; +- Self-Service Portal for end-users; +- Integrated billing system. + +### Installation ### + +Here, we will install openQRM in Ubuntu 14.04 LTS. Your server must atleast meet the following requirements. + +- 1 GB RAM; +- 100 GB Hdd; +- Optional: Virtualization enabled (VT for Intel CPUs or AMD-V for AMD CPUs) in Bios. + +First, install make package to compile openQRM source package. + + sudo apt-get update + sudo apt-get upgrade + sudo apt-get install make + +Then, run the following commands one by one to install openQRM. + +Download the latest available version [from here][2]. + + wget http://sourceforge.net/projects/openqrm/files/openQRM-Community-5.1/openqrm-community-5.1.tgz + + tar -xvzf openqrm-community-5.1.tgz + + cd openqrm-community-5.1/src/ + + sudo make + + sudo make install + + sudo make start + +During installation, you’ll be asked to update the php.ini file. + +![~-openqrm-community-5.1-src_001](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@server-openqrm-community-5.1-src_001.png) + +Enter mysql root user password. + +![~-openqrm-community-5.1-src_002](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@server-openqrm-community-5.1-src_002.png) + +Re-enter password: + +![~-openqrm-community-5.1-src_003](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@server-openqrm-community-5.1-src_003.png) + +Select the mail server configuration type. + +![~-openqrm-community-5.1-src_004](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@server-openqrm-community-5.1-src_004.png) + +If you’re not sure, select Local only. In our case, I go with **Local only** option. + +![~-openqrm-community-5.1-src_005](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@server-openqrm-community-5.1-src_005.png) + +Enter your system mail name, and finally enter the Nagios administration password. + +![~-openqrm-community-5.1-src_007](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@server-openqrm-community-5.1-src_007.png) + +The above commands will take long time depending upon your Internet connection to download all packages required to run openQRM. Be patient. + +Finally, you’ll get the openQRM configuration URL along with username and password. + +![~_002](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/sk@debian-_002.png) + +### Configuration ### + +After installing openQRM, open up your web browser and navigate to the URL: **http://ip-address/openqrm**. + +For example, in my case http://192.168.1.100/openqrm. + +The default username and password is: **openqrm/openqrm**. + +![Mozilla Firefox_003](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/Mozilla-Firefox_003.png) + +Select a network card to use for the openQRM management network. + +![openQRM Server - Mozilla Firefox_004](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/openQRM-Server-Mozilla-Firefox_004.png) + +Select a database type. In our case, I selected mysql. + +![openQRM Server - Mozilla Firefox_006](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/openQRM-Server-Mozilla-Firefox_006.png) + +Now, configure the database connection and initialize openQRM. Here, I use **openQRM** as database name, and user as **root** and debian as password for the database. Be mindful that you should enter the mysql root user password that you have created while installing openQRM. + +![openQRM Server - Mozilla Firefox_012](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/openQRM-Server-Mozilla-Firefox_012.png) + +Congratulations!! openQRM has been installed and configured. + +![openQRM Server - Mozilla Firefox_013](http://180016988.r.cdn77.net/wp-content/uploads/2015/02/openQRM-Server-Mozilla-Firefox_013.png) + +### Update openQRM ### + +To update openQRM at any time run the following command: + + cd openqrm/src/ + make update + +What we have done so far is just installed and configured openQRM in our Ubuntu server. For creating, running Virtual Machines, managing Storage, integrating additional systems and running your own private Cloud, I suggest you to read the [openQRM Administrator Guide][3]. + +That’s all now. Cheers! Happy weekend!! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/install-openqrm-cloud-computing-platform-debian/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:http://www.openqrm-enterprise.com/products/edition-comparison.html +[2]:http://sourceforge.net/projects/openqrm/files/?source=navbar +[3]:http://www.openqrm-enterprise.com/fileadmin/Documents/Whitepaper/openQRM-Enterprise-Administrator-Guide-5.2.pdf \ No newline at end of file diff --git a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md new file mode 100644 index 0000000000..6955e16a11 --- /dev/null +++ b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md @@ -0,0 +1,98 @@ +Install the Gnome Flashback classical desktop on Ubuntu 14.10/Linux Mint 17 +================================================================================ +The [Gnome Flashback][1] desktop environment is a simple and great way to get back the old style classical desktop if you do not like Unity desktop, like many. + +Gnome Flashback is based on GTK 3 and provides a desktop interface visually similar to the old gnome desktop. + +Another alternative to gnome flashback is the MATE desktop from linux mint and XFCE desktop, but both of them are based on gtk 2. + +### Install Gnome Flashback ### + +Install the following package on your Ubuntu system and you are done. + + $ sudo apt-get install gnome-session-flashback + +Now logout and at the login screen press the settings button on the box that asks for password. There would be 2 options, Gnome Flashback (Metacity) and Gnome Flashback (Compiz). + +Metacity is lighter and faster, whereas Compiz gets you the more fancy desktop effects. Here is a screenshot of my gnome flashback desktop. + +It uses a wallpaper from elementary OS and also Plank dock with no bottom panel. This tutorial explains every bit of it. + +![ubuntu gnome flashback](http://www.binarytides.com/blog/wp-content/uploads/2015/02/ubuntu-gnome-flashback.png) + +After installing Gnome Flashback desktop you need to do a couple of more things to finetune it. + +### 1. Install Gnome Tweak Tool ### + +The Gnome Tweak Tool allows you to customize things like fonts, themes etc, that are otherwise difficult or impossible with the "unity-control-center" tool of Unity desktop. + + $ sudo apt-get install gnome-tweak-tool + +Find it in Applications > System Tools > Preferences > Tweak Tool + +### 2. Add applets to panel ### + +By default right clicking on the panels would not have any effect. Press the Alt+Super (windows) key on your keyboard while you right click on the panels and you would get the relevant options to customize the panel. + +You can modify the panel, remove it and also add applets to it. In this example we shall remove the bottom panel and replace it with Plank dock. + +Add a datetime applet on the top panel at the middle. Configure it to display the date time and weather conditions. + +Also add a workspace switcher applet to the top panel and create as many workspaces as you need. + +### 3. Take window title bar buttons to the right ### + +On Ubuntu the minimise, maximise and close buttons on the window title bar are on the left by default. It needs a small hack to get them to the right. + +To take the window buttons to the right use the following command, which I found at askubuntu. + + $ gsettings set org.gnome.desktop.wm.preferences button-layout 'menu:minimize,maximize,close' + +### 4. Install Plank dock ### + +The plank dock sits at the bottom and holds launchers for applications and window launchers for running applications. It hides itself when not necessary and shows up again when needed. Its the same dock as used by elementary OS. + +Run the following commands + + $ sudo add-apt-repository ppa:ricotz/docky -y + $ sudo apt-get update + $ sudo apt-get install plank -y + +Find it in Applications > Accessories > Plank. To configure it to start automatically with the system, go to System Tools > Preferences > Startup Applications and add the "plank" command to the list. + +### 5. Install Conky system monitor ### + +Conky is a nice way to decorate your desktop with system statistics like cpu and memory usage. It is lightweight and works most of the time without any hassles. + +Run the following commands - + + $ sudo apt-add-repository -y ppa:teejee2008/ppa + $ sudo apt-get update + $ sudo apt-get install conky-manager + +Now launch Applications > Accessories > Conky Manager and select the widget you want to display on your desktop. Conky Manager also allows you to configure it to launch at system startup. + +### 6. Install CompizConfig Settings Manager ### + +If you wish to use Gnome Flashback (Compiz) session then it would be useful to use the compiz settings manager to configure desktop effects. Install it with the following command + + $ sudo apt-get install compizconfig-settings-manager + +Now launch it from System Tools > Preferences > CompizConfig Settings Manager. + +> It so happened inside Virtualbox that, in the compiz session window decorations went missing. To fix it, launch Compiz settings and enable the "Copy to texture" plugin and then logout and login back. It should be fixed. + +However the Compiz session is slower than the Metacity session. + +-------------------------------------------------------------------------------- + +via: http://www.binarytides.com/install-gnome-flashback-ubuntu/ + +作者:[Silver Moon][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117145272367995638274/posts +[1]:https://wiki.gnome.org/action/show/Projects/GnomeFlashback?action=show&redirect=GnomeFlashback \ No newline at end of file From 78452d10d4ba316cf5c9c8f7ab8edd99e088f697 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 9 Feb 2015 10:07:29 +0800 Subject: [PATCH 246/725] =?UTF-8?q?20150209-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../news/20150209 CrunchBang Linux Is Dead.md | 32 ++++++++++++++++ .../20150209 Non-Linux FOSS--Homebrew.md | 24 ++++++++++++ ...Empty Trash In Ubuntu 14.04 [Quick Tip].md | 37 +++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 sources/news/20150209 CrunchBang Linux Is Dead.md create mode 100644 sources/share/20150209 Non-Linux FOSS--Homebrew.md create mode 100644 sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md diff --git a/sources/news/20150209 CrunchBang Linux Is Dead.md b/sources/news/20150209 CrunchBang Linux Is Dead.md new file mode 100644 index 0000000000..118baed41e --- /dev/null +++ b/sources/news/20150209 CrunchBang Linux Is Dead.md @@ -0,0 +1,32 @@ +CrunchBang Linux Is Dead!!! +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Crunchbang_Linux_Dead.jpeg) + +Yes! You read it correct. The minimalist Linux distribution **CrunchBang Linux has been discontinued**. + +CrunchBang Linux, popularly known for its abbreviated symbol #!, is based on Debian and comes with [Openbox][1] window manager. The dark themed Linux was/is a popular Linux choice for many experience Linux users. + +### CrunchBang discontinued for “it no longer holds any value” ### + +[Announcing][2] that CrunchBang will no longer be developed, head of the project Philip Newborough said that when he started the project, Linux world was different place. He mentioned that there was no ‘competition’ in the same ilk at that time but with the advancement of Linux distros like Lubuntu, Crunchbang doesn’t hold the same value. + +> For anyone who has been involved with Linux for the past ten years or so, I’m sure they’ll agree that things have moved on. Whilst some things have stayed exactly the same, others have changed beyond all recognition. It’s called progress, and for the most part, progress is a good thing. That said, when progress happens, some things get left behind, and for me, CrunchBang is something that I need to leave behind. I’m leaving it behind because I honestly believe that it no longer holds any value, and whilst I could hold on to it for sentimental reasons, I don’t believe that would be in the best interest of its users, who would benefit from using vanilla Debian. + +### What after CrunchBang demise? ### + +As happened in case of [Pear OS][3], CrunchBang forums will stay online. Downloads are available for now but will be removed in near future. Philip mentioned that he was excited about some of his incoming projects and his day job. I wish him luck in his future endeavors. It is sad to see the death of a nice Linux distribution like CrunchBang. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/crunchbang-linux-dead/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://en.wikipedia.org/wiki/Openbox +[2]:http://crunchbang.org/forums/viewtopic.php?id=38916 +[3]:http://itsfoss.com/pear-os-history/ \ No newline at end of file diff --git a/sources/share/20150209 Non-Linux FOSS--Homebrew.md b/sources/share/20150209 Non-Linux FOSS--Homebrew.md new file mode 100644 index 0000000000..bb385737f3 --- /dev/null +++ b/sources/share/20150209 Non-Linux FOSS--Homebrew.md @@ -0,0 +1,24 @@ +Non-Linux FOSS: Homebrew +================================================================================ +I use OS X quite often during my day job. I'm able to tolerate it largely due to the terminal. If I couldn't do my work with green text on a black background, I think I'd go crazy (or crazier). Unfortunately, OS X doesn't come with all the command-line tools I need. That's where Homebrew comes in to save the day. + +![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11811fossf1.png) + +Homebrew acts like the package management system OS X is lacking. Using commands very similar to apt-get, it allows the installation of hundreds of applications. A perfect example is the wget program. I was surprised to find that OS X doesn't include wget, but with Homebrew, it's a simple one-liner away. + +The best part is that Homebrew installs everything in the /usr/local file space. There's no reason to worry about Homebrew corrupting your system, because it doesn't touch anything outside of /usr/local. OS X system updates won't overwrite your programs, and because /usr/local/bin is already in the PATH, installed Homebrew apps just work! + +Homebrew uses Ruby to manage its packages and functions, but it doesn't require any programming knowledge to use. And the installation procedure is literally a copy/paste on the command line. If you use OS X, but you wish you could install packages as easily as in Linux, give Homebrew a try: [http://brew.sh][1]. + +-------------------------------------------------------------------------------- + +via: http://www.linuxjournal.com/content/non-linux-foss-homebrew + +作者:[Shawn Powers][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxjournal.com/users/shawn-powers +[1]:http://brew.sh/ \ No newline at end of file diff --git a/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md b/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md new file mode 100644 index 0000000000..6c70e335c5 --- /dev/null +++ b/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md @@ -0,0 +1,37 @@ +Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip] +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/empty-the-trash.jpg) + +### Problem ### + +The other day I ran in to an **issue while emptying trash in Ubuntu 14.04**. I right clicked on the trash icon and chose Empty Trash option, like I always do. It took some time with a progress bar showing that it was in the process of deleting the files in trash. But it just got stuck at it and I got ended with a frozen Nautilus File manager. I had to kill it via terminal. + +But this was painful because the files in trash were still there. And my repeated attempts to delete the trash resulted in same frozen window. + +### Solution ### + +Honestly, I do not know what caused this issue in the first place. But I do have a solution for you if you too are facing issue in deleting the trash via GUI in Ubuntu 14.04 or 14.10. + +Open a terminal and use the following command: + + sudo rm -rf ~/.local/share/Trash/* + +Now be careful in what you type. You are using the remove command with super user privileges. I trust you that you won’t be deleting any other files or directory. + +The above mentioned command is deleting all the files in Trash directory. In other words, it is emptying the trash in command line way. Once you use that command, you’ll see that the Trash has been emptied. If you delete any new files, you should not be having the same freezing Nautilus issue again. + +### Worked for you? ### + +I hope this little tip worked for you and you can empty the trash without any further issue in Ubuntu or any other Linux distribution. do let me know if you face any issue. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/fix-empty-trash-ubuntu/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ \ No newline at end of file From 864934ada75c613369171b6b1e325a7482dd4e07 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 9 Feb 2015 10:17:52 +0800 Subject: [PATCH 247/725] =?UTF-8?q?20150209-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....h--No such file or directory' on Linux.md | 91 +++++++++++++++++++ ... the process ID (PID) of a shell script.md | 48 ++++++++++ 2 files changed, 139 insertions(+) create mode 100644 sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md create mode 100644 sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md diff --git a/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md b/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md new file mode 100644 index 0000000000..2092f37e7d --- /dev/null +++ b/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md @@ -0,0 +1,91 @@ +Linux FAQs with Answers--How to fix “fatal error: x264.h: No such file or directory” on Linux +================================================================================ +> **Question**: I am trying to build a video encoding application from the source on Linux. However, during compilation, I am encountering the error: "fatal error: x264.h: No such file or directory" How can I fix this error? + +The following compilation error indicates that you do not have x264 library's development files installed on your Linux system. + + fatal error: x264.h: No such file or directory + +[x264][1] is an H.264/MPEG-4 AVC encoder library licensed with GNU GPL. The x264 library is popularly used by many video encoder/transcoder programs such as Avidemux, [FFmpeg][2], [HandBrake][3], OpenShot, MEncode and more. + +To solve the above compilation error, you need to install development files for x264 library. Here is how you can do it. + +### Install x264 Library and its Development Files on Debian, Ubuntu or Linux Mint ### + +On Debian based systems, x264 library is already included in the base repositories. Thus its installation is straightforward with apt-get as follows. + + $ sudo apt-get install libx264-dev + +### Install x264 Library and its Development Files on Fedora, CentOS/RHEL ### + +On Red Hat based distributions such as Fedora or CentOS, the x264 library is available via the free repository of RPM Fusion. Thus, you need to install [RPM Fusion (free)][4] first. + +Once RPM Fusion is set up, you can install x264 development files as follows. + + $ sudo yum --enablerepo=rpmfusion-free install x264-devel + +Note that RPM Fusion repository is not available for CentOS 7 yet, so the above method does not work for CentOS 7. In case of CentOS 7, you can build and install x264 library from the source, which is explained below. + +### Compile x264 Library from the Source on Debian, Ubuntu or Linux Mint ### + +If the libx264 package that comes with your distribution is not up-to-date, you can compile the latest x264 library from the source as follows. + + $ sudo apt-get install g++ automake autoconf libtool yasm nasm git + $ git clone git://git.videolan.org/x264.git + $ cd x264 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +The x264 library will be installed in /usr/local/lib. To allow the library to be used by other applications, you need to complete the last step: + +Open /etc/ld.so.conf with a text editor, and append the following line. + + $ sudo vi /etc/ld.so.conf + +---------- + + /usr/local/lib + +Finally reload all shared libraries by running: + + $ sudo ldconfig + +### Compile x264 Library from the Source on Fedora, CentOS/RHEL ### + +If the x264 library is not available on your Linux distribution (e.g., CentOS 7) or the x264 library is not up-to-date, you can build the latest x264 library from the source as follows. + + $ sudo yum install gcc gcc-c++ automake autoconf libtool yasm nasm git + $ git clone git://git.videolan.org/x264.git + $ cd x264 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +Finally, to allow other applications to use x264 library installed in /usr/local/lib, add the following line in /etc/ld.so.conf: + + $ sudo vi /etc/ld.so.conf + +---------- + + /usr/local/lib + +and reload all shared libraries by running: + + $ sudo ldconfig + +![](https://farm8.staticflickr.com/7350/16453197512_7c18c5c09e_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/fatal-error-x264-h-no-such-file-or-directory.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.videolan.org/developers/x264.html +[2]:http://ask.xmodulo.com/compile-ffmpeg-centos-fedora-rhel.html +[3]:http://xmodulo.com/how-to-install-handbrake-on-linux.html +[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html \ No newline at end of file diff --git a/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md b/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md new file mode 100644 index 0000000000..999e3b4327 --- /dev/null +++ b/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md @@ -0,0 +1,48 @@ +Linux FAQs with Answers--How to get the process ID (PID) of a shell script +================================================================================ +> **Question**: I want to know the process ID (PID) of the subshell under which my shell script is running. How can I find a PID in a bash shell script? + +When you execute a shell script, it will launch a process known as a subshell. As a child process of the main shell, a subshell executes a list of commands in a shell script as a batch (so-called "batch processing"). + +In some cases, you may want to know the process ID (PID) of the subshell where your shell script is running. This PID information can be used under different circumstances. For example, you can create a unique temporary file in /tmp by naming it with the shell script PID. In case a script needs to examine all running processes, it can exclude its own subshell from the process list. + +In bash, the **PID of a shell script's subshell process** is stored in a special variable called '$$'. This variable is read-only, and you cannot modify it in a shell script. For example: + + #!/bin/bash + + echo "PID of this script: $$" + +The above script will show the following output. + + PID of this script: 6583 + +Besides $$, bash shell exports several other read-only variables. For example, PPID stores the process ID of the subshell's parent process (i.e., main shell). UID stores the user ID of the current user who is executing the script. For example: + + #!/bin/bash + + echo "PID of this script: $$" + echo "PPID of this script: $PPID" + echo "UID of this script: $UID" + +Its output will be: + + PID of this script: 6686 + PPID of this script: 4656 + UID of this script: 1000 + +In the above, PID will keep changing every time you invoke a script. That is because each invocation of a script will create a new subshell. On the other hand, PPID will remain the same as long as you run a script inside the same shell. + +![](https://farm8.staticflickr.com/7437/16274890369_e78ce16d42_b.jpg) + +For a complete list of built-in bash variables, refer to its man page. + + $ man bash + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/process-id-pid-shell-script.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From de45e6f43accded722306fd582b38e748f4a73ee Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 9 Feb 2015 10:34:55 +0800 Subject: [PATCH 248/725] PUB:20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10 @JonathanKang --- ...d Setup My Weather Indicator in Ubuntu 14.10.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename {translated/tech => published}/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md (83%) diff --git a/translated/tech/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md b/published/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md similarity index 83% rename from translated/tech/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md rename to published/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md index 37c497511c..15c6896b3e 100644 --- a/translated/tech/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md +++ b/published/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md @@ -1,10 +1,10 @@ -在Ubuntu 14.10中如何安装和配置‘My Weather Indicator’ +在Ubuntu 14.10中如何安装和配置‘天气信息指示器’ ================================================================================ ![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/10/my-weather-indicator.jpg) -**在Ubuntu桌面中不缺乏若干应用同时提供天气信息的方法,你可以使用Unity Dash和桌面应用,比如[Typhoon][1],来获得天气信息。** +**在Ubuntu桌面中有各种提供天气信息的方法,你可以使用Unity Dash和桌面应用来获得天气信息,比如[Typhoon][1]。** -但是可以提供快速查询天气状况和温度数据,并且只需要一次鼠标点击而获得大量气象数据的面板插件,是到目前为止Linux平台下最受欢迎的天气应用。 +但是可以提供快速查询天气状况和温度数据,并且只需要一次鼠标点击而获得大量气象数据的面板插件,才是到目前为止Linux平台下最受欢迎的天气应用。 Atareao开发的[My Weather Indicator][2]就是这类应用中的一个,也可以说是最好的一个。 @@ -18,7 +18,7 @@ My Weather Indicator无法从Ubuntu软件商店中直接获取。不过开发者 - 下载My Weather Indicator (.deb安装包) -为了确保你的应用最是最新版本,我建议将[Atareao PPA][3]添加到你的软件镜像源然后通过PPA来安装。 +为了确保你的应用是最新版本,我建议将[Atareao PPA][3]添加到你的软件镜像源,然后通过PPA来安装。 怎么做?**打开一个新的终端**窗口(Unity Dash > 终端,或者按Ctrl+Alt+T快捷键),然后**输入下面的两行命令**,期间你需要在提示处输入你的系统密码: @@ -36,7 +36,7 @@ My Weather Indicator无法从Ubuntu软件商店中直接获取。不过开发者 ![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/10/Screen-Shot-2014-10-27-at-17.39.07.jpeg) -如果你正在旅行(或者是出于聊天需要),**你可以添加一个第二地区**。这个设置和第一地区的设置相同,只不过是在“第二地区”的标签栏罢了。 +如果你正在旅行(或者是出于聊天的需要),**你可以添加一个第二地区**。这个设置和第一地区的设置相同,只不过是出现在“第二地区”的标签栏罢了。 在“**小部件设置**”区域勾选“**显示桌面小部件**”选项就会在你的桌面上添加一个小的天气小部件。小部件提供许多不同的皮肤,所以你一定要精心挑选你最喜欢的一个(注释:点击“确定”后对小部件的更改才会保存)。 @@ -55,7 +55,7 @@ My Weather Indicator使用[Open Weather Map][4]作为默认的天气数据提供 最后,在‘General Options‘标签页,你可以设置数据更新间隔、设置开机自动运行选项以及从两个图标中选择一个作为面板图标。 -如果你不喜欢该应用,你可以尝试[Linux下查看天气数据的方法][5]。 +如果你是命令行控,你也可以尝试[Linux下查看天气数据的方法][5]。 -------------------------------------------------------------------------------- @@ -63,7 +63,7 @@ via: http://www.omgubuntu.co.uk/2014/10/install-weather-indicator-ubuntu-14-10 作者:[Joey-Elijah Sneddon][a] 译者:[JonathanKang](https://github.com/JonathanKang) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From da25e0538c99770992a2caaa532cdf54cb6ac883 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 9 Feb 2015 10:38:52 +0800 Subject: [PATCH 249/725] Translating by ZTinoZ --- .../share/20150114 What is a good IDE for C or C++ on Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 9560ce6ee1..ad6dc965a7 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -1,3 +1,4 @@ +Translating by ZTinoZ What is a good IDE for C/C++ on Linux ================================================================================ "A real coder doesn't use an IDE, a real coder uses [insert a text editor name here] with such and such plugins." We all heard that somewhere. Yet, as much as one can agree with that statement, an IDE remains quite useful. An IDE is easy to set up and use out of the box. Hence there is no better way to start coding a project from scratch. So for this post, let me present you with my list of good IDEs for C/C++ on Linux. Why is C/C++ specifically? Because C is my favorite language, and we need to start somewhere. Also note that there are in general a lot of ways to code in C, so in order to trim down the list, I only selected "real out-of-the-box IDE", not text editors like Gedit or Vim pumped with [plugins][1]. Not that this alternative is bad in any way, just that the list will go on forever if I include text editors. From a94e06d44dfdb3a77a9395c5051e8e975e615ecc Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 9 Feb 2015 10:55:46 +0800 Subject: [PATCH 250/725] PUB:20141205 What is a good free control panel for VPS @geekpi --- ...at is a good free control panel for VPS.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) rename {translated/tech => published}/20141205 What is a good free control panel for VPS.md (61%) diff --git a/translated/tech/20141205 What is a good free control panel for VPS.md b/published/20141205 What is a good free control panel for VPS.md similarity index 61% rename from translated/tech/20141205 What is a good free control panel for VPS.md rename to published/20141205 What is a good free control panel for VPS.md index b9c3f3fafd..dbd1759145 100644 --- a/translated/tech/20141205 What is a good free control panel for VPS.md +++ b/published/20141205 What is a good free control panel for VPS.md @@ -1,18 +1,18 @@ -VPS上好的控制面板是什么 +推荐一款不错的 VPS 控制面板:Ajenti ================================================================================ -任何有经验的Linux人员都认为没有一款控制面板可以打败纯命令行界面来管理[虚拟主机][1](VPS)。也有人争论有一款好的面板的一席之地,因为流线型的界面让常规管理操作可以通过点几下鼠标就可以完成。 +任何有经验的Linux人员都认为没有任何一款控制面板可以打败纯命令行界面来管理[虚拟主机][1](VPS)。也有人争辩说好的控制面板还是应该有一席之地,因为顺滑的操作界面让常规管理操作通过点几下鼠标就可以完成。 -至于控制面板,有共恩那个强大的充满警铃和汽笛的商业控制面板,也有不同免费的但也强大多功能的免费开源面板替代。这之中杰出的代表是[Ajenti][2]控制面板。 +至于控制面板,有那种强大的充满警铃和汽笛的商业控制面板,也有不同免费的但也强大多功能的免费开源面板替代品。这之中杰出的代表是[Ajenti][2]控制面板。 -Ajenti可以让你很简单地配置不同的通用服务程序,如Apache/nginx、Samba、BIND、Squid、MySQL、cron、防火墙等等,对管理通用VPS实例可以节省大量的时间。对于生产环境,Ajenti同样提供了插件和平台来支持虚拟web主机管理和自定义web UI开发。 +Ajenti可以让你很简单地配置不同的常规服务程序,如Apache/nginx、Samba、BIND、Squid、MySQL、cron、防火墙等等,对管理常规的 VPS 实例可以节省大量的时间。对于生产环境,Ajenti同样提供了插件和平台来支持虚拟 web 主机管理和自定义 web UI开发。 -Ajenti有[双重授权][3];一个是个人、企业内部或者教育用途免费使用的AGPLv3。然而,如果你是一家托管企业或者硬件提供商,那么你需要购买商业授权来使用Ajenti作为商业供应。 +Ajenti有[双重授权][3];一个是针对个人、企业内部或者教育用途免费使用的AGPLv3。然而,如果你是一家托管企业或者硬件提供商,那么你需要购买商业授权来使用Ajenti作为商业服务。 ### 在Linux上安装Ajenti ### 为了简化安装,Ajenti为主流Linux发行版提供了自己的仓库。安装Ajenti要做的就是配置目标仓库,并用默认包管理器来安装。 -安装前,一个RSA密钥和证书会生成用于SSL,Ajenti会见在8000端口监听HTTPS的web请求。如果你正在使用防火墙,你需要在防火墙中允许8000端口。为了安全,最好默认禁止8000端口的访问,并添加少数IP地址到白名单中。 +安装前会生成用于SSL的一个RSA密钥和证书,Ajenti会在8000端口监听HTTPS的web请求。如果你正在使用防火墙,你需要在防火墙中允许8000端口访问。为了安全,最好默认禁止8000端口的公开访问,并添加你的少数IP地址到白名单中。 #### 在Debian上安装Ajenti #### @@ -54,7 +54,7 @@ Ajenti有[双重授权][3];一个是个人、企业内部或者教育用途免 $ sudo service ajenti restart -直接在浏览器中输入https://:8000,你就会看到下面的Ajenti的登录界面。 +直接在浏览器中输入https://\:8000,你就会看到下面的Ajenti的登录界面。 ![](https://farm8.staticflickr.com/7512/15712738197_eeccd0f9dd_z.jpg) @@ -62,7 +62,7 @@ Ajenti有[双重授权][3];一个是个人、企业内部或者教育用途免 ![](https://farm8.staticflickr.com/7498/15897850312_d2ca46fa4b_z.jpg) -在左边面板的"SOFTWARE"选项下,你会看接一列安装的服务。当你安装了任何Ajenti支持的服务端程序时,软件会在重启ajenti服务后被自动加入列表。 +在左边面板的"SOFTWARE"选项下,你会看带一些已安装的服务。当你安装了任何Ajenti支持的服务端程序时,软件会在重启ajenti服务后被自动加入列表。 $ sudo service ajenti restart @@ -84,7 +84,7 @@ Ajenti提供了一个web界面来安装和升级VPS上的包。 #### 防火墙配置 #### -Ajenti允许你用两种方法管理防火墙规则(iptables或者CSF)。一种是使用用户友好的web面板,另一种是直接编辑原生的防火墙规则。 +Ajenti允许你用两种方法管理防火墙规则(使用iptables或者CSF)。一种方法是使用用户友好的web面板,另一种是直接编辑原始的防火墙规则。 ![](https://farm8.staticflickr.com/7490/15276234634_a220f2a555_z.jpg) @@ -98,25 +98,25 @@ Ajenti允许你用两种方法管理防火墙规则(iptables或者CSF)。一 #### 进程监控 #### -你可以u看见按照CPU和内存使用率排序的进程列表,按需可以结束它们。 +你可以看见按照CPU和内存使用率排序的进程列表,如果需要的话,也可以干掉它们。 ![](https://farm8.staticflickr.com/7556/15711008948_ed359c284d_z.jpg) #### 终端访问 #### -对于底层VPS访问,Ajenti提供了基于web的终端界面,你在这可以输入Linux命令。你也可以像下面那样在一个面板中打开多个终端。 +如果需要更低层面的VPS访问,Ajenti提供了基于web的终端界面,你在这可以输入Linux命令。你也可以像下面那样在一个面板中打开多个终端。 ![](https://farm8.staticflickr.com/7568/15896505251_8271ac16dd_z.jpg) #### Apache Web服务管理 #### -你可以编辑Apache配额文件,并管理apche2服务。 +你可以编辑Apache配置文件,并管理apache2服务。 ![](https://farm8.staticflickr.com/7572/15711009108_bb806d2dcd_z.jpg) #### MySQL/MariaDB 管理 #### -你可以访问MySQL/MariaDB服务并直接在上面执行原生SQL命令。 +你可以访问MySQL/MariaDB服务并直接在上面执行原始SQL命令。 ![](https://farm8.staticflickr.com/7580/15276234754_02375fd17b_z.jpg) @@ -128,13 +128,13 @@ Ajenti允许你用两种方法管理防火墙规则(iptables或者CSF)。一 #### 启动服务管理 #### -你可以浏览、启动、停止、重启安装的服务。 +你可以浏览、启动、停止、重启已安装的服务。 ![](https://farm8.staticflickr.com/7538/15898503935_1edf5c67ae_z.jpg) ### 总结 ### -Ajenti是一款易于使用的服务器管理控制面板,可以加入你开发的[自定义插件][5]。然而,记住任何好的控制面板都不会排除你学习面板后[VPS][6]上发生的情况的需求。一款面板会在你完全了解你正在做的事情的时候成会一款真正节省时间的利器,并且不依赖于控制面版来处理你行动的结果。 +Ajenti是一款易于使用的服务器管理控制面板,可以加入你开发的[自定义插件][5]。然而请记住,任何好的控制面板都不是阻止你学习在控制面板之后[VPS][6]里发生了什么的原因。一款好的面板会在你完全了解你正在做的事情时成会一款真正节省时间的利器,并且不依赖于控制面版来达成你所需要的目标。 -------------------------------------------------------------------------------- @@ -142,7 +142,7 @@ via: http://xmodulo.com/free-control-panel-for-vps.html 作者:[Dan Nanni][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -150,6 +150,6 @@ via: http://xmodulo.com/free-control-panel-for-vps.html [1]:http://xmodulo.com/go/digitalocean [2]:http://ajenti.org/ [3]:http://ajenti.org/licensing -[4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[4]:http://linux.cn/article-2324-1.html [5]:http://docs.ajenti.org/en/latest/dev/intro.html [6]:http://xmodulo.com/go/digitalocean \ No newline at end of file From 748ea6e5c5389cb853ec3f585e1b4e46b9c80a26 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 9 Feb 2015 11:43:16 +0800 Subject: [PATCH 251/725] PUB:20141219 How to schedule appointments and to-do tasks in a Linux terminal @geekpi --- ...nts and to-do tasks in a Linux terminal.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) rename {translated/tech => published}/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md (76%) diff --git a/translated/tech/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md b/published/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md similarity index 76% rename from translated/tech/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md rename to published/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md index c419029716..1e2d5c39cd 100644 --- a/translated/tech/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md +++ b/published/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md @@ -1,12 +1,12 @@ -如何在Linux终端下安排约会和待办事项 +在Linux终端下使用 calcurse 安排约会和待办事项 ================================================================================ -如果你是一个享受linux终端的系统管理员,但同样需要一中方法来安排每天最重要的任务、约会和会议,你会发现[calcurse][1]是一个很有用的工具。calcurse包含了日历、一个待办事项管理、一个调度程序和一个可配置的通知系统,这些都集成进了一个软件中,基于的都是ncurse的接口。同时,它不会限制你在终端中,你可以将你的日历和笔记导出成可以打印的格式。 +如果你是一个享受linux终端的系统管理员,但同样需要一种方法来安排每天最重要的任务、约会和会议,你会发现[calcurse][1]是一个很有用的工具。calcurse包含了日历、一个待办事项管理、一个调度程序和一个可配置的通知系统,这些都集成进了一个软件中,基于的都是ncurse的接口。同时,它不会限制你在终端中,你可以将你的日历和笔记导出成可以打印的格式。 -本片文章我们会探索如何在Linux上安装calcurse,并且教你如何利用它的特性。 +本篇文章我们会探索如何在Linux上安装calcurse,并且教你如何利用它的特性。 ### 在Linux上安装Culcurse ### -calcurse在大多数Linux发行版的标准仓库都有。万一在你的发行版上没有(比如CentOS/RHEL),一旦你安装了gcc和ncurse开发文件后就可以很简单地从源码安装。 +calcurse在大多数Linux发行版的标准仓库都有。万一在你的发行版上没有(比如CentOS/RHEL),只要你安装了gcc和ncurse开发文件后就可以很简单地从源码安装。 Debian、Ubuntu或者Linux Mint @@ -32,22 +32,22 @@ CentOS/RHEL $ calcurse -你将会看到下面的空白界面。如果配色不吸引你,你可以以后改变它们。 +你将会看到下面的空白界面。如果这配色不吸引你,你可以以后换一个。 ![](https://farm8.staticflickr.com/7567/15410270544_0af50a4eb6_c.jpg) -我们现在可以按下回车-‘q’- 再次按下回车- ‘y’来退出主界面。这个序列会告诉地不的菜单退出、保存当前的笔记并确认退出。 +我们现在可以按下回车-‘q’- 再次按下回车- ‘y’来退出主界面。这个按键序列激活界面底部的主菜单,并告诉它保存当前的笔记并确认退出。 -When we run calcurse for the first time, the following directory structure is created in our home directory: +我们第一次运行 calcurse 时,会在主目录创建如下子目录: ![](https://farm8.staticflickr.com/7482/15845194188_2ba15035e7_o.png) -这里是每一项的简要描述: +这里是每一个子目录的简要描述: -- **apts** 文件包含了用户所有的约会和事项,todo文件包含了所有的**todo** 列表。 +- **apts**文件包含了用户所有的约会和事项,todo文件包含了所有的**待办事项** 列表。 - **conf**文件,如你所想的那样,包含当前用户的独立设置。 -- **keys**文件包含了用户定义的按键绑定(比如:q或者Q推出,x或者X导出内容等等)。 -- 在**notes**子目录你会看到包含了笔记描述的文件,你可以附到任何一个安排事项中。 +- **keys**文件包含了用户定义的按键绑定(比如:q或者Q退出,x或者X导出内容等等)。 +- 在**notes**子目录你会看到包含了笔记描述的文件,这些笔记你可以附到任何一个安排事项中。 ### 改变配色 ### @@ -55,13 +55,13 @@ When we run calcurse for the first time, the following directory structure is cr ![](https://farm9.staticflickr.com/8595/16006755476_5289384f81_z.jpg) -使用最后一幅图的按键绑定来选色前景色和背景色配置来更好地适应你的需求: +使用最后一幅图的按键绑定来选择前景色和背景色配置,以更好地适应你的需求: ![](https://farm8.staticflickr.com/7499/15845274420_70bb95c221_b.jpg) -### A添加约会和待办任务 ### +### 添加约会和待办任务 ### -在前面的选项卡中浏览命令菜单时,我们看到按下‘o’可以从一个菜单到下一个菜单。我们可以把第二个菜单作为**安排编辑菜单**。 +在前面的选项卡中浏览命令菜单时,我们看到按下‘o’可以从一个菜单跳到下一个菜单。我们可以把第二个菜单作为**安排编辑菜单**。 ![](https://farm9.staticflickr.com/8634/16031851732_b947951f76_c.jpg) @@ -87,7 +87,7 @@ When we run calcurse for the first time, the following directory structure is cr ### 为事项设置通知 ### -你可以在通知菜单下配置通知。按照相同的步骤来以防改变了配色,但是选择**Notify**而不是**Colour**: +你可以在通知菜单下配置通知。按照相同的步骤来改变配色方案,但是选择**Notify**而不是**Colour**: ![](https://farm8.staticflickr.com/7569/15412900863_eaf2767e19_z.jpg) @@ -103,7 +103,7 @@ When we run calcurse for the first time, the following directory structure is cr ### 总结 ### -本篇教程中我们展示了如何设置一个多样化的调度器和提醒器来帮助你组织每日的活动和提前安排重要的事项。你或许还要calcurse的[PDF 手册][2],还请随意在下面的评论中提出你的疑问。欢迎你的评论,我也很高兴看到这些。 +本篇教程中我们展示了如何设置一个多样化的调度器和提醒器来帮助你组织每日的活动和提前安排重要的事项。你或许还要看看calcurse的[PDF 手册][2],请随意在下面的评论中提出你的疑问。欢迎你的评论,我也很高兴看到这些。 -------------------------------------------------------------------------------- @@ -111,7 +111,7 @@ via: http://xmodulo.com/schedule-appointments-todo-tasks-linux-terminal.html 作者:[Gabriel Cánepa][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2bade89f5749221522477a7b1324dac71e0d7e14 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 9 Feb 2015 13:31:47 +0800 Subject: [PATCH 252/725] =?UTF-8?q?20150209-4=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ck up a Debian system using backupninja.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 sources/tech/20150209 How to back up a Debian system using backupninja.md diff --git a/sources/tech/20150209 How to back up a Debian system using backupninja.md b/sources/tech/20150209 How to back up a Debian system using backupninja.md new file mode 100644 index 0000000000..edfc6150f6 --- /dev/null +++ b/sources/tech/20150209 How to back up a Debian system using backupninja.md @@ -0,0 +1,111 @@ +How to back up a Debian system using backupninja +================================================================================ +Prudence or experience by disaster can teach every [sysadmin][1] the importance of taking frequent system backups. You can do so by writing good old shell scripts, or using one (or more) of the many backup tools available for the job. Thus the more tools you become acquainted with, the better informed decisions you will make when implementing a backup solution. + +In this article we will present [backupninja][2], a lightweight and easy-to-configure system backup tool. With the help of programs like **rdiff-backup**, **duplicity**, **mysqlhotcopy** and **mysqldump**, Backupninja offers common backup features such as remote, secure and incremental file system backups, encrypted backup, and MySQL/MariaDB database backup. You can selectively enable status email reports, and can back up general hardware and system information as well. One key strength of backupninja is a built-in console-based wizard (called **ninjahelper**) that allows you to easily create configuration files for various backup scenarios. + +The downside, so to speak, is that backupninja requires other "helper" programs to be installed in order to take full advantage of all its features. While backupninja's RPM package is available for Red Hat-based distributions, backupninja's dependencies are optimized for Debian and its derivatives. Thus it is not recommended to try backupninja for Red Hat based systems. + +In this tutorial, we will cover the backupninja installation for Debian-based distributions. + +### Installing Backupninja ### + +Run the following command as root: + + # aptitude install backupninja + +During installation, several files and directories will be created: + +- **/usr/sbin/backupninja** is the main bash shell script. +- **/etc/cron.d/backupninja**, by default, instructs cron to run the main script once per hour. +- **/etc/logrotate.d/backupninja** rotates the logs created by the program. +- **/etc/backup.d/** is the directory where the configuration files for backup actions reside. +- **/etc/backupninja.conf** is the main configuration file that includes general options. It is well commented and explains each option in detail. +- **/usr/share/backupninja** is the directory where the scripts used by backupninja are located (aka "handlers"). These are the scripts which are in charge of doing the actual work. In this directory you will also find .helper files, which are used to configure and set up ninjahelper menus. +- **/usr/share/doc/backupninja/examples** contains templates for action configuration files (the kind of files that are created through ninjahelper). + +### Running Ninjahelper for the First Time ### + +When we try to launch ninjahelper, we can see that an internal dependency may be required. If prompted, enter "yes" and press the ENTER key to install dialog (a tool that displays user-friendly dialog boxes from shell scripts). + +![](https://farm8.staticflickr.com/7537/15700597667_6618fbc142_z.jpg) + +When you press Enter after typing yes, backupninja will install dialog and present the following screen once it's done. + +![](https://farm8.staticflickr.com/7469/15884374871_29f1c9acf1_z.jpg) + +#### Example 1: Back up Hardware and System Info #### + +After launching ninjahelper, we will create a new backup action: + +![](https://farm9.staticflickr.com/8637/15885715132_eb3156678e_z.jpg) + +If necessary helper programs are not installed, we will be presented with the following screens. Disregard this step if these packages have already been installed on your system. + +![](https://farm8.staticflickr.com/7508/15700315139_4c6117ef32_z.jpg) + +The next step consists of selecting the items that you want to be a part of this backup. The first four are selected by default, but you can deselect them by pressing the spacebar. + +![](https://farm8.staticflickr.com/7507/15699051870_65abaf52e5_z.jpg) + +Once you are done, press OK to continue. You will be able to choose whether you want to use the default configuration file for this backup action (/etc/backup.d/10.sys), or if you want to create a new one. In the latter case, a new file with the same contents as the default one will be created under the same directory but named 11.sys, and so on for future system backup actions. Note that you can edit the configuration file once it's created with your preferred text editor. + +![](https://farm9.staticflickr.com/8654/15885715072_1e6126e929_o.png) + +#### Example 2: Incremental Rsync Pull Backup of a Remote Directory #### + +As you most likely know, rsync is widely used to synchronize files and folders over a network. In the following example we will discuss an approach to take incremental pull backups of a remote directory with hardlinking to save historical data and store them in our local file server. This approach will help us save space and increase security on the server side. + +**Step 1**: Write a custom script in the /etc/backup.d directory with the following contents and chmod it to 600. Note that this directory may contain, besides plain configuration files, scripts that you want to run when backupninja is executed, with the advantage of using variables present in the main configuration file. + + # REMOTE USER + user=root + # REMOTE HOST + host=dev1 + # REMOTE DIRECTORY + remotedir=/home/gacanepa/ + # LOCAL DIRECTORY + localdir=/home/gacanepa/backup.0 + # LOCAL DIRECTORY WHERE PREVIOUS BACKUP WAS STORED + localdirold=/home/gacanepa/backup.1 + mv $localdir $localdirold + # RSYNC + rsync -av --delete --recursive --link-dest=$localdirold $user@$host:$remotedir $localdir + +In the above configuration, the '--link-dest' option of rsync is use to hardlink unchanged files (in all attributes) from $localdir-old to the destination directory ($localdir). + +**Step 2**: Before backupninja is run for the first time, the parent directory (/home/gacanepa in this case) is empty. The first time we execute: + + # backupninja -n + +the backup.0 directory is created, and later in the process its name is changed to backup.1. + +The second time we run backupninja, backup.0 is re-created and backup.1 is kept. + +![](https://farm8.staticflickr.com/7581/15700597497_0e0cd89ab9.jpg) + +**Step 3**: Verify that the contents of backup.1 are hard links to the files in backup.0 by comparing the respective inode numbers and directory sizes. + +![](https://farm9.staticflickr.com/8636/15700315029_e922ce771b.jpg) + +### Conclusion ### + +Backupninja is not only a classic backup tool, but also an easy-to-configure utility. You can write your own handlers to run backupninja as per the individual configuration files located in /etc/backup.d, and you can even write helpers for ninjahelper in order to include them in its main interface. + +For example, if you create a handler named xmodulo in /usr/share/backupninja, it will run by default every file with the .xmodulo extension in /etc/backup.d. If you decide you want to add your xmodulo handler to ninjahelper, you can write the corresponding helper as xmodulo.helper. In addition, if you want backupninja to run an arbitrary script, just add it to /etc/backup.d and you are good to go. + +Feel free to leave your comments, questions, or suggestions, using the form below. we will be more than glad to hear from you. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/backup-debian-system-backupninja.html + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:http://xmodulo.com/recommend/sysadminbook +[2]:https://labs.riseup.net/code/projects/backupninja \ No newline at end of file From b9fe9350e864238c44f72b4c0765c7e76b75fddc Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Mon, 9 Feb 2015 14:51:19 +0800 Subject: [PATCH 253/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...h Answers--How to install Go language on Linux.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md index d7dd2bb1c6..110fe965a5 100644 --- a/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md +++ b/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md @@ -1,6 +1,6 @@ 如何在Linux中安装Go语言 ================================================================================ -Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几个设计原则:简单、安全、速度。Go语言发行版拥有各种调试、测试、调优和代码审查工具。如今Go语言和它的工具链在大多数Linux发行版的基础仓库都有了,用默认的包管理器就可以安装。 +Go (也叫 "golang")是一款由Google最初开发的编程语言。它的诞生有几个设计原则:简单、安全、速度。Go语言发行版拥有各种调试、测试、调优和代码审查工具。如今Go语言和它的工具链在大多数Linux发行版的基础仓库都可用,用默认的包管理器就可以安装。 ### 在Ubuntu、Debian 或者 Linux Mint上安装Go语言 ### @@ -16,7 +16,7 @@ Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几 go version go1.2.1 linux/amd64 -按照你的需要,你或许想要使用apt-get安装额外的Go工具。 +根据你的需要,你或许想要使用apt-get安装额外的Go工具。 $ sudo apt-cache search golang @@ -36,7 +36,7 @@ Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几 go version go1.3.3 linux/amd64 -按照你的需要,你或许想要使用yum安装额外的Go工具。 +根据你的需要,你或许想要使用yum安装额外的Go工具。 $ yum search golang @@ -44,7 +44,7 @@ Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几 ### 从官网安装Go语言 ### -有时发行版中的版本并不是最新的。为防这样,你可以从官网安装最新的Go语言。下面是步骤。 +有时发行版中的go语言版本并不是最新的。为了避免这种情况,你可以从官网安装最新的Go语言。下面是步骤。 进入Go语言的[官方源码][1],并下载预编译二进制代码。 @@ -68,7 +68,7 @@ Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几 export PATH=$PATH:/usr/local/go/bin -如果你在/usr/local之外安装了了Go,你同样需要设置GOROOT环境变量来指向自定义的安装位置。 +如果你在/usr/local之外的自定义位置中安装了Go,你同样需要设置GOROOT环境变量来指向自定义的安装位置。 $ sudo vi /etc/profile @@ -89,7 +89,7 @@ Go (也叫 "golang")是一款由Google开发的编程语言。它的诞生有几 via: http://ask.xmodulo.com/install-go-language-linux.html 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 52ce1b91051d941645aa2738f5b65fca8a901ede Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Mon, 9 Feb 2015 15:55:46 +0800 Subject: [PATCH 254/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...inux FAQs with Answers--How to install Go language on Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20150205 Linux FAQs with Answers--How to install Go language on Linux.md (100%) diff --git a/translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/published/20150205 Linux FAQs with Answers--How to install Go language on Linux.md similarity index 100% rename from translated/tech/20150205 Linux FAQs with Answers--How to install Go language on Linux.md rename to published/20150205 Linux FAQs with Answers--How to install Go language on Linux.md From b786dcd7e696f14212ff4ffb926cbf91ab7a7672 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 9 Feb 2015 17:12:37 +0800 Subject: [PATCH 255/725] Translating by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index ad6dc965a7..bfd92b9d8a 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -1,7 +1,6 @@ -Translating by ZTinoZ -What is a good IDE for C/C++ on Linux +Linux上有哪些比较好的C/C++ IDE? ================================================================================ -"A real coder doesn't use an IDE, a real coder uses [insert a text editor name here] with such and such plugins." We all heard that somewhere. Yet, as much as one can agree with that statement, an IDE remains quite useful. An IDE is easy to set up and use out of the box. Hence there is no better way to start coding a project from scratch. So for this post, let me present you with my list of good IDEs for C/C++ on Linux. Why is C/C++ specifically? Because C is my favorite language, and we need to start somewhere. Also note that there are in general a lot of ways to code in C, so in order to trim down the list, I only selected "real out-of-the-box IDE", not text editors like Gedit or Vim pumped with [plugins][1]. Not that this alternative is bad in any way, just that the list will go on forever if I include text editors. +"一个真正的程序员是不用IDE的,他们是用uses insert a text editor name here with such and such plugins." We all heard that somewhere. Yet, as much as one can agree with that statement, an IDE remains quite useful. An IDE is easy to set up and use out of the box. Hence there is no better way to start coding a project from scratch. So for this post, let me present you with my list of good IDEs for C/C++ on Linux. Why is C/C++ specifically? Because C is my favorite language, and we need to start somewhere. Also note that there are in general a lot of ways to code in C, so in order to trim down the list, I only selected "real out-of-the-box IDE", not text editors like Gedit or Vim pumped with [plugins][1]. Not that this alternative is bad in any way, just that the list will go on forever if I include text editors. ### 1. Code::Blocks ### @@ -57,14 +56,14 @@ For all KDE fans out there, [KDevelop][11] might be the answer to your prayers. Finally, last for not least, [CodeLite][12] shows that you can take a traditional formula and still get something with its own feeling attached to it. If the interface really reminded me of Code::Blocks and Anjuta at first, I was just blown away by the extensive plugin library. Whether you want to diff a file, insert a copyright block, define an abbreviation, or push your work on Git, there is a plugin for you. If I had to nitpick, I would say that it lacks a few navigation shortcuts for my taste, but that's really it. -To conclude, I hope that this list had you discover new IDEs for coding in your favorite language. While Code::Blocks remains my favorite, it has some serious challengers. Also we are far from covering all the ways to code in C/C++ using an IDE on Linux. So if you have another one to propose, let us know in the comments. Also if you would like me to cover IDEs for a different language next, also let us know in the comment section. +最后,我希望that this list had you discover new IDEs for coding in your favorite language. While Code::Blocks remains my favorite, it has some serious challengers. Also we are far from covering all the ways to code in C/C++ using an IDE on Linux. So if you have another one to propose, let us know in the comments. Also if you would like me to cover IDEs for a different language next, also let us know in the comment section. -------------------------------------------------------------------------------- via: http://xmodulo.com/good-ide-for-c-cpp-linux.html 作者:[Adrien Brochard][a] -译者:[译者ID](https://github.com/译者ID) +译者:[ZTinoZ](https://github.com/ZTinoZ) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From cbe88e42529f9033da4e05604265ed707dee464d Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 9 Feb 2015 20:28:00 +0800 Subject: [PATCH 256/725] translating --- ...0209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md b/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md index 6c70e335c5..f667d8b54b 100644 --- a/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md +++ b/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md @@ -1,3 +1,5 @@ +Translating---geekpi + Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip] ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/empty-the-trash.jpg) @@ -34,4 +36,4 @@ via: http://itsfoss.com/fix-empty-trash-ubuntu/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://itsfoss.com/author/abhishek/ \ No newline at end of file +[a]:http://itsfoss.com/author/abhishek/ From 524c6888e931725095ee285775795f27a7cac9eb Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 9 Feb 2015 20:45:11 +0800 Subject: [PATCH 257/725] translated --- ...Empty Trash In Ubuntu 14.04 [Quick Tip].md | 39 ------------------- ...Empty Trash In Ubuntu 14.04 [Quick Tip].md | 37 ++++++++++++++++++ 2 files changed, 37 insertions(+), 39 deletions(-) delete mode 100644 sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md create mode 100644 translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md diff --git a/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md b/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md deleted file mode 100644 index f667d8b54b..0000000000 --- a/sources/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md +++ /dev/null @@ -1,39 +0,0 @@ -Translating---geekpi - -Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip] -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/empty-the-trash.jpg) - -### Problem ### - -The other day I ran in to an **issue while emptying trash in Ubuntu 14.04**. I right clicked on the trash icon and chose Empty Trash option, like I always do. It took some time with a progress bar showing that it was in the process of deleting the files in trash. But it just got stuck at it and I got ended with a frozen Nautilus File manager. I had to kill it via terminal. - -But this was painful because the files in trash were still there. And my repeated attempts to delete the trash resulted in same frozen window. - -### Solution ### - -Honestly, I do not know what caused this issue in the first place. But I do have a solution for you if you too are facing issue in deleting the trash via GUI in Ubuntu 14.04 or 14.10. - -Open a terminal and use the following command: - - sudo rm -rf ~/.local/share/Trash/* - -Now be careful in what you type. You are using the remove command with super user privileges. I trust you that you won’t be deleting any other files or directory. - -The above mentioned command is deleting all the files in Trash directory. In other words, it is emptying the trash in command line way. Once you use that command, you’ll see that the Trash has been emptied. If you delete any new files, you should not be having the same freezing Nautilus issue again. - -### Worked for you? ### - -I hope this little tip worked for you and you can empty the trash without any further issue in Ubuntu or any other Linux distribution. do let me know if you face any issue. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/fix-empty-trash-ubuntu/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ diff --git a/translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md b/translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md new file mode 100644 index 0000000000..17349f2330 --- /dev/null +++ b/translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md @@ -0,0 +1,37 @@ +在Ubuntu 14.04 中修复无法修复回收站[快速提示] +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/empty-the-trash.jpg) + +### 问题 ### + +**无法在Ubuntu 14.04中清空回收站的问题**。我右键回收站图标并选择清空回收站,就像我一直做的那样。我看到进度条显示删除文件中过了一段时间。但是它停止了,并且Nautilus文件管理也停止了。我不得不在终端中停止了它。 + +但是这很痛苦因为文件还在垃圾箱中。并且我反复尝试清空后窗口都冻结了。 + +### 方案 ### + +老实说,我不知道什么导致了这个问题。但是我有一个解决方案如果你在Ubuntu 14.04或者14.10遇到这个问题的话。 + +打开终端并使用下面的命令: + + sudo rm -rf ~/.local/share/Trash/* + +这里注意你的输入。你使用超级管理员权限来运行删除命令。我相信你不会删除其他文件或者目录。 + +上面的命令会删除回收站目录下的所有文件。换句话说,这是用命令清空垃圾箱。使用玩上面的命令后,你会看到垃圾箱已经清空了。如果你删除了所有文件,你不应该在看到Nautilus崩溃的问题了。 + +### 对你有用么? ### + +我希望这篇贴士对你有用,今后你也不会在Ubuntu或者其他发行版中再遇到相同的问题。如果你遇到任何问题请让我知道。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/fix-empty-trash-ubuntu/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ From 5c24e22135bb7618ec4dab7d1c20d12c7bc63169 Mon Sep 17 00:00:00 2001 From: soooogreen <54364732@qq.com> Date: Mon, 9 Feb 2015 20:58:29 +0800 Subject: [PATCH 258/725] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AE=8C=E6=88=90=20?= =?UTF-8?q?by=20soooogreen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...entation from the command line on Linux.md | 186 ------------------ ...entation from the command line on Linux.md | 186 ++++++++++++++++++ 2 files changed, 186 insertions(+), 186 deletions(-) delete mode 100644 sources/tech/20150202 How to create and show a presentation from the command line on Linux.md create mode 100644 translated/tech/20150202 How to create and show a presentation from the command line on Linux.md diff --git a/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md b/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md deleted file mode 100644 index d80b385544..0000000000 --- a/sources/tech/20150202 How to create and show a presentation from the command line on Linux.md +++ /dev/null @@ -1,186 +0,0 @@ -How to create and show a presentation from the command line on Linux -================================================================================ -When you prepare a talk for audience, the first thing that will probably come to your mind is shiny presentation charts filled with fancy diagrams, graphics and animation effects. Fine. No one can deny the power of visually charming presentation. However, not all presentations need to be Ted talk quality. Often times, the purpose of a presentation is to convey specific information, which can easily be done with textual messages. In such cases, your time can be better spent on gathering information and checking facts, rather than searching for good-looking graphics from Google Image. - -In the world of Linux, you can do presentation in several different ways, e.g., Impress for multimedia-rich content, [Impress.js][1] for stunning visualization, Beamer for hardcore LaTex users, and so on. If you are looking for a simple means to create and show a textual presentation, look no further. [mdp][2] can get the job done for you. - -### What is Mdp? ### - -mdp is an ncurses-based command-line presentation tool for Linux. What I like about mdp is its [markdown][3] support, which makes it easy to create slides with familiar markdown format. Naturally, it becomes painless to publish the slides in HTML format as well. Another plus is its support for UTF-8 character encoding, which comes in handy when showing non-English characters (e.g., Greek or Cyrillic alphabets). - -### Install Mdp on Linux ### - -Installation of mdp is mostly painless due to its light dependency requirement (i.e., ncursesw). - -#### Debian, Ubuntu or their derivatives #### - - $ sudo apt-get install git gcc make libncursesw5-dev - $ git clone https://github.com/visit1985/mdp.git - $ cd mdp - $ make - $ sudo make install - -#### Fedora or CentOS/RHEL #### - - $ sudo yum install git gcc make ncurses-devel - $ git clone https://github.com/visit1985/mdp.git - $ cd mdp - $ make - $ sudo make install - -#### Arch Linux #### - -On Arch Linux, you can easily install mdp from [AUR][4]. - -### Create a Presentation from the Command Line ### - -Once you installed mdp, you can easily create a presentation by using your favorite text editor. If you are familiar with markdown, it will take no time to master mdp. For those of you who are not familiar with markdown, starting with an example is the best way to learn mdp. - -Here is a 6-page sample presentation for your reference. - - %title: Sample Presentation made with mdp (Xmodulo.com) - %author: Dan Nanni - %date: 2015-01-28 - - -> This is a slide title <- - ========= - - -> mdp is a command-line based presentation tool with markdown support. <- - - *_Features_* - - * Multi-level headers - * Code block formatting - * Nested quotes - * Nested list - * Text highlight and underline - * Citation - * UTF-8 special characters - - ------------------------------------------------- - - -> # Example of nested list <- - - This is an example of multi-level headers and a nested list. - - # first-level title - - second-level - ------------ - - - *item 1* - - sub-item 1 - - sub-sub-item 1 - - sub-sub-item 2 - - sub-sub-item 3 - - sub-item 2 - - ------------------------------------------------- - - -> # Example of code block formatting <- - - This example shows how to format a code snippet. - - 1 /* Hello World program */ - 2 - 3 #include - 4 - 5 int main() - 6 { - 7 printf("Hello World"); - 8 return 0; - 9 } - - This example shows inline code: `sudo reboot` - - ------------------------------------------------- - - -> # Example of nested quotes <- - - This is an example of nested quotes. - - # three-level nested quotes - - > This is the first-level quote. - >> This is the second-level quote - >> and continues. - >>> *This is the third-level quote, and so on.* - - ------------------------------------------------- - - -> # Example of citations <- - - This example shows how to place a citation inside a presentation. - - This tutorial is published at [Xmodulo](http://xmodulo.com) - - You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo) - - Pretty cool, huh? - - ------------------------------------------------- - - -> # Example of UTF-8 special characters <- - - This example shows UTF-8 special characters. - - ae = ä, oe = ö, ue = ü, ss = ß - alpha = ?, beta = ?, upsilon = ?, phi = ? - Omega = ?, Delta = ?, Sigma = ? - - ??????????? - ?rectangle? - ??????????? - -### Show a Presentation from the Command Line ### - -Once you save the above code as slide.md text file, you can show the presentation by simply running: - - $ mdp slide.md - -You can navigate the presentation by pressing Enter/Space/Page-Down/Down-Arrow (next slide), Backspace/Page-Up/Up-Arrow (previous slide), Home (first slide), End (last slide), or numeric-N (N-th slide). - -The title of the presentation appears on top of each slide, and your name and page number are shown at the bottom. - -![](https://farm9.staticflickr.com/8637/16392457702_ec732d0094_c.jpg) - -This is an example of a nested list and multi-level headers. - -![](https://farm9.staticflickr.com/8567/16367397606_29be7df633_c.jpg) - -This is an example of a code snippet and inline code. - -![](https://farm9.staticflickr.com/8682/15770926144_0f982b0863_b.jpg) - -This is an example of nested quotes. - -![](https://farm9.staticflickr.com/8587/16393383115_0865c8b89b_c.jpg) - -This is an example of placing citations. - -![](https://farm8.staticflickr.com/7409/16392457712_ed36c14bc2_c.jpg) - -This is an example of UTF-8 special characters. - -![](https://farm9.staticflickr.com/8648/16205981560_7fa3debc75_c.jpg) - -### Summary ### - -In this tutorial, I showed you how to use mdp to create and show a presentation from the command line. Its markdown compatibility saves us the trouble and hassle of having to learn any new formatting, which is an advantage compared to [tpp][5], another command-line presentation tool. Due to its limitations, mdp may not qualify as your default presentation tool, but there should be definitely a use case for that. What do you think of mdp? Do you prefer something else? - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/presentation-command-line-linux.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/nanni -[1]:http://bartaz.github.io/impress.js/ -[2]:https://github.com/visit1985/mdp -[3]:http://daringfireball.net/projects/markdown/ -[4]:https://aur.archlinux.org/packages/mdp-git/ -[5]:http://www.ngolde.de/tpp.html \ No newline at end of file diff --git a/translated/tech/20150202 How to create and show a presentation from the command line on Linux.md b/translated/tech/20150202 How to create and show a presentation from the command line on Linux.md new file mode 100644 index 0000000000..e5fd1937a3 --- /dev/null +++ b/translated/tech/20150202 How to create and show a presentation from the command line on Linux.md @@ -0,0 +1,186 @@ +如何在Linux命令行中创建以及展示演示稿 +================================================================================ +你在准备一场演讲的时候,脑海可能会先被图文并茂、形象华丽的演示图稿所占据。诚然,没有人会否认一份生动形象的演讲稿所带来的积极作用。然而,并非所有的演讲都需要Ted Talk的质量。更多时候,演讲稿只为传达特定的信息。 而这个,使用文本信息足以完成。在这种情况下,你的时间可以更好的花在信息的搜集和核实上面,而不是在谷歌图像(Google Image)上寻找好看的图片。 + +在Linux的世界里,有几个不同的方式供你选择来做演讲。比如富多媒体展示,视觉冲击效果极佳的[Impress.js][1],还有专为LaTex用户提供的Beamer,等等。而如果你苦于寻找一种简单的方式来创建并且展示文本演示稿,[mdp][2]就能帮你实现。 + +### 什么是Mdp? ### + +mdp是Linux下一款基于菜单窗口的命令行演示工具。我喜欢mdp在于它对[markdown][3]的支持,使得很容易以熟悉的markdown格式来创建幻灯片。自然,还可以很轻松地用HTML格式来发布幻灯片。另一个好处是它支持UTF-8字符编码,这让非英语字符(如希腊或西里尔字母)的展示也变得很方便。 + +### 在Linux中安装Mdp ### + +mdp的少量依赖需求(也就是ncursesw)使得安装非常简单。 + +#### Debian、Ubuntu或者它们的衍生版 #### + + $ sudo apt-get install git gcc make libncursesw5-dev + $ git clone https://github.com/visit1985/mdp.git + $ cd mdp + $ make + $ sudo make install + +#### Fedora或者CentOS/RHEL #### + + $ sudo yum install git gcc make ncurses-devel + $ git clone https://github.com/visit1985/mdp.git + $ cd mdp + $ make + $ sudo make install + +#### Arch Linux #### + +Arch Linux可以通过[AUR][4]轻松安装mdp。 + +### 在命令行中创建演示稿 ### + +安装mdp完毕,你可以使用你喜欢的文本编辑器来轻松创建一个演示稿。如果你熟悉markdown,则很快可以驾驭mdp。而对于那些不熟悉markdown的人来说,学习mdp最好的方式就是从一个实例着手。 + +这里有一份6页的演示稿样本提供参考。 + + %标题: 利用mdp创建的演示稿样本(Xmodulo.com) + %作者: Dan Nanni + %日期: 2015-01-28 + + -> 这里是幻灯片标题 <- + ========= + + -> mdp是一款基于命令行的支持markdown的演示工具 <- + + *_特性_* + + * 多层次标题 + * 代码块格式 + * 嵌套引用 + * 嵌套列表 + * 文本高亮以及下划线 + * 引证 + * UTF-8编码特殊字符支持 + + ------------------------------------------------- + + -> # 嵌套列表实例 <- + + 这里是一个多层次标题以及嵌套列表的实例 + + # 第一层标题 + + 第二层 + ------------ + + - *item 1* + - sub-item 1 + - sub-sub-item 1 + - sub-sub-item 2 + - sub-sub-item 3 + - sub-item 2 + + ------------------------------------------------- + + -> # 代码块格式实例 <- + + 此例展示如何排版代码片段。 + + 1 /* Hello World program */ + 2 + 3 #include + 4 + 5 int main() + 6 { + 7 printf("Hello World"); + 8 return 0; + 9 } + + 此例展示内联代码: `sudo reboot` + + ------------------------------------------------- + + -> # 嵌套引用实例 <- + + 这是一个嵌套引用实例 + + # 三层嵌套引用 + + > This is the first-level quote. + >> This is the second-level quote + >> and continues. + >>> *This is the third-level quote, and so on.* + + ------------------------------------------------- + + -> # 引证实例 <- + + 此例展示如何在演示稿中放置引证。 + + This tutorial is published at [Xmodulo](http://xmodulo.com) + + You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo) + + 很酷是吧? + + ------------------------------------------------- + + -> # UTF-8编码特殊字符支持实例 <- + + 此例展示UTF-8编码特殊字符支持。 + + ae = ä, oe = ö, ue = ü, ss = ß + alpha = ?, beta = ?, upsilon = ?, phi = ? + Omega = ?, Delta = ?, Sigma = ? + + ??????????? + ?rectangle? + ??????????? + +### 在命令行中展示演示稿 ### + +当你把以上代码保存为slide.md的文本文件后,你可以运行以下命令来展示演示稿: + + $ mdp slide.md + +你可以通过按键Enter/Space/Page-Down/Down-Arrow (下一张幻灯)、Backspace/Page-Up/Up-Arrow (上一张幻灯)、Home (幻灯首页)、 End (幻灯末页)或者 numeric-N (第N页幻灯)来操作你的演示稿。 + +演示稿的标题将在每页幻灯的顶部展示,而你的名字和页码则会出现在幻灯的底部。 + +![](https://farm9.staticflickr.com/8637/16392457702_ec732d0094_c.jpg) + +这是嵌套列表和多层次标题的实例效果。 + +![](https://farm9.staticflickr.com/8567/16367397606_29be7df633_c.jpg) + +这是代码片段和内联代码的实例效果。 + +![](https://farm9.staticflickr.com/8682/15770926144_0f982b0863_b.jpg) + +这是嵌套引用的实例效果。 + +![](https://farm9.staticflickr.com/8587/16393383115_0865c8b89b_c.jpg) + +这是放置引证的实例效果。 + +![](https://farm8.staticflickr.com/7409/16392457712_ed36c14bc2_c.jpg) + +这是UTF-8编码特殊字符支持的实例效果。 + +![](https://farm9.staticflickr.com/8648/16205981560_7fa3debc75_c.jpg) + +### 总结 ### + +在本教程中,我演示了在命令行中如何使用mdp来创建并且展示一个演示稿。mdp的markdown兼容性让我们省去了学习其它新格式的麻烦,这相对于另一种名为[tpp][5]的演示工具来说是一个优势。拘于mdp的局限性,它可能无法作为你的默认演示工具。但是,值得肯定的是它一定能在某个场合下派上用场。你觉得mdp怎么样呢?你还喜欢其它的什么东西吗? + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/presentation-command-line-linux.html + +作者:[Dan Nanni][a] +译者:[soooogreen](https://github.com/soooogreen) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://bartaz.github.io/impress.js/ +[2]:https://github.com/visit1985/mdp +[3]:http://daringfireball.net/projects/markdown/ +[4]:https://aur.archlinux.org/packages/mdp-git/ +[5]:http://www.ngolde.de/tpp.html \ No newline at end of file From d50e02b27772ffa9ba3021f18142e56736c2d8c9 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 9 Feb 2015 21:58:12 +0800 Subject: [PATCH 259/725] PUB:20150202 How to create and show a presentation from the command line on Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @soooogreen 干的不错,兄弟! --- ...entation from the command line on Linux.md | 202 +++++++++--------- 1 file changed, 101 insertions(+), 101 deletions(-) rename {translated/tech => published}/20150202 How to create and show a presentation from the command line on Linux.md (50%) diff --git a/translated/tech/20150202 How to create and show a presentation from the command line on Linux.md b/published/20150202 How to create and show a presentation from the command line on Linux.md similarity index 50% rename from translated/tech/20150202 How to create and show a presentation from the command line on Linux.md rename to published/20150202 How to create and show a presentation from the command line on Linux.md index b249f30c38..04deb0264c 100644 --- a/translated/tech/20150202 How to create and show a presentation from the command line on Linux.md +++ b/published/20150202 How to create and show a presentation from the command line on Linux.md @@ -1,16 +1,16 @@ 如何在Linux命令行中创建以及展示演示稿 ================================================================================ -你在准备一场演讲的时候,脑海可能会先被图文并茂、形象华丽的演示图稿所占据。诚然,没有人会否认一份生动形象的演讲稿所带来的积极作用。然而,并非所有的演讲都需要Ted Talk的质量。更多时候,演讲稿只为传达特定的信息。 而这个,使用文本信息足以完成。在这种情况下,你的时间可以更好的花在信息的搜集和核实上面,而不是在谷歌图像(Google Image)上寻找好看的图片。 +你在准备一场演讲的时候,脑海可能会先被图文并茂、形象华丽的演示图稿所占据。诚然,没有人会否认一份生动形象的演讲稿所带来的积极作用。然而,并非所有的演讲都需要TED Talk的质量。更多时候,演讲稿只为传达特定的信息。 而这个,使用文本信息足以完成。在这种情况下,你的时间可以更好的花在信息的搜集和核实上面,而不是在谷歌图片搜索(Google Image)上寻找好看的图片。 -在Linux的世界里,有几个不同的方式供你选择来做演讲。比如富多媒体展示,视觉冲击效果极佳的[Impress.js][1],还有专为LaTex用户提供的Beamer,等等。而如果你苦于寻找一种简单的方式来创建并且展示文本演示稿,[mdp][2]就能帮你实现。 +在Linux的世界里,有几个不同的方式供你选择来做演讲。比如带有大量多媒体展示、视觉冲击效果极佳的[Impress.js][1],专为LaTex用户提供的Beamer,等等。而如果你苦于寻找一种简单的方式来创建并且展示文本演示稿,[mdp][2] 就能帮你实现。 ### 什么是Mdp? ### -mdp是Linux下一款基于菜单窗口的命令行演示工具。我喜欢mdp在于它对[markdown][3]的支持,使得很容易以熟悉的markdown格式来创建幻灯片。自然,还可以很轻松地用HTML格式来发布幻灯片。另一个好处是它支持UTF-8字符编码,这让非英语字符(如希腊或西里尔字母)的展示也变得很方便。 +mdp是Linux下一款基于ncurses的命令行演示工具。我喜欢mdp在于它对[markdown][3]的支持,使得我很容易以熟悉的markdown格式来创建幻灯片。自然,它还可以很轻松地用HTML格式来发布幻灯片。另一个好处是它支持UTF-8字符编码,这让非英语字符(如希腊或西里尔字母)的展示也变得很方便。 ### 在Linux中安装Mdp ### -mdp的少量依赖需求(也就是ncursesw)使得安装非常简单。 +mdp的依赖需求很少(如 ncursesw),这使得安装非常简单。 #### Debian、Ubuntu或者它们的衍生版 #### @@ -36,101 +36,101 @@ Arch Linux可以通过[AUR][4]轻松安装mdp。 安装mdp完毕,你可以使用你喜欢的文本编辑器来轻松创建一个演示稿。如果你熟悉markdown的话,很快就可以驾驭mdp。而对于那些不熟悉markdown的人来说,学习mdp最好的方式就是从一个实例着手。 -这里有一份6页的演示稿样本提供参考。 +这里有一份6页的演示稿样本可供参考。 - %标题: 利用mdp创建的演示稿样本(Xmodulo.com) - %作者: Dan Nanni - %日期: 2015-01-28 - - -> 这里是幻灯片标题 <- - ========= - - -> mdp是一款基于命令行的支持markdown的演示工具 <- - - *_特性_* - - * 多层次标题 - * 代码块格式 - * 嵌套引用 - * 嵌套列表 - * 文本高亮以及下划线 - * 引证 - * UTF-8编码特殊字符支持 - - ------------------------------------------------- - - -> # 嵌套列表实例 <- - - 这里是一个多层次标题以及嵌套列表的实例 - - # 第一层标题 - - 第二层 - ------------ - - - *item 1* - - sub-item 1 - - sub-sub-item 1 - - sub-sub-item 2 - - sub-sub-item 3 - - sub-item 2 - - ------------------------------------------------- - - -> # 代码块格式实例 <- - - 此例展示如何排版代码片段。 - - 1 /* Hello World program */ - 2 - 3 #include - 4 - 5 int main() - 6 { - 7 printf("Hello World"); - 8 return 0; - 9 } - - 此例展示内联代码: `sudo reboot` - - ------------------------------------------------- - - -> # 嵌套引用实例 <- - - 这是一个嵌套引用实例 - - # 三层嵌套引用 - - > This is the first-level quote. - >> This is the second-level quote - >> and continues. - >>> *This is the third-level quote, and so on.* - - ------------------------------------------------- - - -> # 引证实例 <- - - 此例展示如何在演示稿中放置引证。 - - This tutorial is published at [Xmodulo](http://xmodulo.com) - - You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo) - - 很酷是吧? - - ------------------------------------------------- - - -> # UTF-8编码特殊字符支持实例 <- - - 此例展示UTF-8编码特殊字符支持。 - - ae = ä, oe = ö, ue = ü, ss = ß - alpha = ?, beta = ?, upsilon = ?, phi = ? - Omega = ?, Delta = ?, Sigma = ? - - ??????????? - ?rectangle? - ??????????? + %title: Sample Presentation made with mdp (Xmodulo.com) + %author: Dan Nanni + %date: 2015-01-28 + + -> This is a slide title <- + ========= + + -> mdp is a command-line based presentation tool with markdown support. <- + + *_Features_* + + * Multi-level headers + * Code block formatting + * Nested quotes + * Nested list + * Text highlight and underline + * Citation + * UTF-8 special characters + + ------------------------------------------------- + + -> # Example of nested list <- + + This is an example of multi-level headers and a nested list. + + # first-level title + + second-level + ------------ + + - *item 1* + - sub-item 1 + - sub-sub-item 1 + - sub-sub-item 2 + - sub-sub-item 3 + - sub-item 2 + + ------------------------------------------------- + + -> # Example of code block formatting <- + + This example shows how to format a code snippet. + + 1 /* Hello World program */ + 2 + 3 #include + 4 + 5 int main() + 6 { + 7 printf("Hello World"); + 8 return 0; + 9 } + + This example shows inline code: `sudo reboot` + + ------------------------------------------------- + + -> # Example of nested quotes <- + + This is an example of nested quotes. + + # three-level nested quotes + + > This is the first-level quote. + >> This is the second-level quote + >> and continues. + >>> *This is the third-level quote, and so on.* + + ------------------------------------------------- + + -> # Example of citations <- + + This example shows how to place a citation inside a presentation. + + This tutorial is published at [Xmodulo](http://xmodulo.com) + + You are welcome to connect with me at [LinkedIn](http://www.linkedin.com/in/xmodulo) + + Pretty cool, huh? + + ------------------------------------------------- + + -> # Example of UTF-8 special characters <- + + This example shows UTF-8 special characters. + + ae = ä, oe = ö, ue = ü, ss = ß + alpha = ?, beta = ?, upsilon = ?, phi = ? + Omega = ?, Delta = ?, Sigma = ? + + ??????????? + ?rectangle? + ??????????? ### 在命令行中展示演示稿 ### @@ -138,7 +138,7 @@ Arch Linux可以通过[AUR][4]轻松安装mdp。 $ mdp slide.md -你可以通过按键Enter/Space/Page-Down/Down-Arrow (下一张幻灯)、Backspace/Page-Up/Up-Arrow (上一张幻灯)、Home (幻灯首页)、 End (幻灯末页)或者 numeric-N (第N页幻灯)来操作你的演示稿。 +你可以通过按键 回车/空格/下翻页/向下光标键 (下一张幻灯)、回退/上翻页/向上光标键 (上一张幻灯)、Home (幻灯首页)、 End (幻灯末页)或者 数字N (第N页幻灯)来操作你的演示稿。 演示稿的标题将在每页幻灯的顶部展示,而你的名字和页码则会出现在幻灯的底部。 @@ -156,7 +156,7 @@ Arch Linux可以通过[AUR][4]轻松安装mdp。 ![](https://farm9.staticflickr.com/8587/16393383115_0865c8b89b_c.jpg) -这是放置引证的实例效果。 +这是放置引文的实例效果。 ![](https://farm8.staticflickr.com/7409/16392457712_ed36c14bc2_c.jpg) @@ -174,7 +174,7 @@ via: http://xmodulo.com/presentation-command-line-linux.html 作者:[Dan Nanni][a] 译者:[soooogreen](https://github.com/soooogreen) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From f62be62c9a9f688c2cf3d34008dec0d265cbe0d7 Mon Sep 17 00:00:00 2001 From: mtunique Date: Tue, 10 Feb 2015 10:16:04 +0800 Subject: [PATCH 260/725] Translated --- .../20150128 Docker-1 Moving to Docker.md | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/sources/tech/20150128 Docker-1 Moving to Docker.md b/sources/tech/20150128 Docker-1 Moving to Docker.md index 1c1d4b78cc..36c8f16506 100644 --- a/sources/tech/20150128 Docker-1 Moving to Docker.md +++ b/sources/tech/20150128 Docker-1 Moving to Docker.md @@ -1,53 +1,52 @@ -Translating by mtunique Moving to Docker ================================================================================ ![](http://cocoahunter.com/content/images/2015/01/docker1.jpeg) -[TL;DR] This is the first post in a series of 3 on how my company moved its infrastructure from PaaS to Docker based deployment. If you want, you can skip the intro (this post) and head directly to the technical topics (links at the bottom of the page). +[TL;DR] 这是系列的第一篇文章,这系列讲述了我的公司如何把基础服务从PaaS迁移到Docker上。如果你愿意,你可以直接跳过介绍(这篇文章)直接看技术相关的话题(链接在页面的底部)。 ---------- -In the last month I've been strggling with devops. This is my very personal story and experience in trying to streamline a deployment process of a Raila app with Docker. +上个月,我一直在折腾开发环境。这是我个人故事和经验,关于尝试用Docker简化Rails应用的部署过程。 -When I started my company – [Touchware][1] – in 2012 I was a lone developer. Things were small, uncomplicated, they didn't require a lot of maintenance, nor they needed to scale all that much. During the course of last year though, we grew quite a lot (we are now a team of 10 people) and our server-side applications and API grew both in terms of scope and scale. +当我在2012年创建我的公司 – [Touchware][1]时,我还是一个独立开发者。很多事情很小,不复杂,不他们需要很多维护,他们也不需要不部署到很多机器上。经过过去一年的发展,我们成长了很多(我们现在是是拥有10个人团队)而且我们的服务端的程序和API无论在范围和规模方面都有增长。 -### Step 1 - Heroku ### +### 第1步 - Heroku ### -We still are a very small team and we need to make things going and run as smoothly as possible. When we looked for possible solutions, we decided to stick with something that would have removed from our shoulders the burden of managing hardware. Since we develop mainly Rails based applications and Heroku has a great support for RoR and various kind of DBs and cached (Postgres / Mongo / Redis etc.), the smartest choice seemed to be going with [Heroku][2]. And that's what we did. +我们还是个小公司,我们需要让事情运行地尽可能平稳。当我们寻找可行的解决方案时,我们打算坚持用那些可以帮助我们减轻对硬件依赖负担的工具。由于我们主要开发Rails应用,而Heroku对RoR,常用的数据库和缓存(Postgres/Mongo/Redis等)有很好的支持,最明智的选择就是用[Heroku][2] 。我们就是这样做的。 -Heroku has a great support and great documentation and deploying apps is just so snappy! Only problem is, when you start growing, you need to have piles of cash around to pay the bills. Not the best deal, really. +Heroku有很好的技术支持和文档,使得部署非常轻松。唯一的问题是,当你处于起步阶段,你需要很多开销。这不是最好的选择,真的。 -### Step 2 - Dokku ### +### 第2步 - Dokku ### -In a rush to try and cut the costs, we decided to try with Dokku. [Dokku][3], quoting the Github repo is a +为了尝试并降低成本,我们决定试试Dokku。[Dokku][3],引用GitHub上的一句话 > Docker powered mini-Heroku in around 100 lines of Bash -We launched some instances on [DigitalOcean][4] with Dokku pre-installed and we gave it spin. Dokku is very much like Heroku, but when you have complex applications for whom you need to twear params, or where you need certain dependencies, it's just not gonna work out. We had an app where we needed to apply multiple transformations on images and we couldn't find a way to install the correct version of imagemagick into the dokku-based Docker container that was hosting our Rails app. We still have a couple of very simple apps that are running on Dokku, but we had to move some of them back to Heroku. +我们启用的[DigitalOcean][4]上的很多台机器,都预装了Dokku。Dokku非常像Heroku,但是当你有复杂的项目需要调整配置参数或者是需要特殊的依赖时,它就不能胜任了。我们有一个应用,它需要对图片进行多次转换,我们无法安装一个适合版本的imagemagick到托管我们Rails应用的基于Dokku的Docker容器内。尽管我们还有很多应用运行在Dokku上,但我们还是不得不把一些迁移回Heroku。 -### Step 3 - Docker ### +### 第3步 - Docker ### -A couple of months ago, since the problem of devops and managing production apps was resurfacing, I decided to try out [Docker][5]. Docker, in simple terms, allows developers to containerize applications and to ease the deployment. Since a Docker container basically has all the dependencies it needs to run your app, if everything runs fine on your laptop, you can be sure it'll also run like a champ in production on a remote server, be it an AWS E2C instance or a VPS on DigitalOcean. +几个月前,由于开发环境和生产环境的问题重新出现,我决定试试Docker。简单来说,Docker让开发者容器化应用,简化部署。由于一个Docker容器本质上已经包含项目运行所需要的所有依赖,只要它能在你的笔记本上运行地很好,你就能确保它将也能在任何一个别的远程服务器的生产环境上运行,包括Amazon的EC2和DigitalOcean上的VPS。 -Docker IMHO is particularly interesting for the following reasons: +Docker IMHO特别有意思的原因是: -- it promotes modularization and separation of concerns: you need to start thinking about your apps in terms of logical components (load balancer: 1 container, DB: 1 container, webapp: 1 container etc.); -- it's very flexible in terms of deployment options: containers can be deployed to a wide variety of HW and can be easily redeployed to different servers / providers; -- it allows for a very fine grained tuning of your app environment: you build the images your containers runs from, so you have plenty of options for configuring your environment exactly as you would like to. +- 它促进了模块化和分离关注点:你只需要去考虑应用的逻辑部分(负载均衡:1个容器;数据库:1个容器;web服务器:1个容器); +- 在部署的配置上非常灵活:容器可以被部署在大量的HW上,也可以容易地重新部署在不同的服务器或者提供商那; +- 它允许非常细粒度地优化应用的运行环境:你可以利用你的容器来创建镜像,所以你有很多选择来配置环境。 -There are howerver some downsides: +它也有一些缺点: -- the learning curve is quite steep (this is probably a very personal problem, but I'm talking as a software dev and not as a skilled operations professional); -- setup is not simple, especially if you want to have a private registry / repository (more about this later). +- 它的学习曲线非常的陡峭(这是从一个软件开发者的角度来看,而不是经验丰富的运维人员); +- 搭建环境不简单,尤其是还需要自己搭建一个私有的registry/repository (后面有关于它的详细内容)。 -Following are some tips I put together during the course of the last week with the findings of someone that is new to the game. +下面是一些提示。这个系列的最后一周,我将把他们和一些新的放在一起。 ---------- -In the following articles we'll see how to setup a semi-automated Docker based deployment system. +在下面的文章中,我们将看到如何建立一个半自动化的基于Docker的部署系统。 -- [Setting up a private Docker registry][6] -- [Configuring a Rails app for semi-automated deployment][7] +- [建立私有的Docker registry][6] +- [配置Rails应用的半自动化话部署][7] -------------------------------------------------------------------------------- From 6a85aa05145ebb80992238bab6ae1b098b7ef013 Mon Sep 17 00:00:00 2001 From: mtunique Date: Tue, 10 Feb 2015 10:18:41 +0800 Subject: [PATCH 261/725] move 20150128 Docker-1 Moving to Docker.md to translate --- .../20150128 Docker-1 Moving to Docker.md | 81 ------------------- 1 file changed, 81 deletions(-) delete mode 100644 sources/tech/20150128 Docker-1 Moving to Docker.md diff --git a/sources/tech/20150128 Docker-1 Moving to Docker.md b/sources/tech/20150128 Docker-1 Moving to Docker.md deleted file mode 100644 index 36c8f16506..0000000000 --- a/sources/tech/20150128 Docker-1 Moving to Docker.md +++ /dev/null @@ -1,81 +0,0 @@ -Moving to Docker -================================================================================ -![](http://cocoahunter.com/content/images/2015/01/docker1.jpeg) - -[TL;DR] 这是系列的第一篇文章,这系列讲述了我的公司如何把基础服务从PaaS迁移到Docker上。如果你愿意,你可以直接跳过介绍(这篇文章)直接看技术相关的话题(链接在页面的底部)。 - ----------- - -上个月,我一直在折腾开发环境。这是我个人故事和经验,关于尝试用Docker简化Rails应用的部署过程。 - -当我在2012年创建我的公司 – [Touchware][1]时,我还是一个独立开发者。很多事情很小,不复杂,不他们需要很多维护,他们也不需要不部署到很多机器上。经过过去一年的发展,我们成长了很多(我们现在是是拥有10个人团队)而且我们的服务端的程序和API无论在范围和规模方面都有增长。 - -### 第1步 - Heroku ### - -我们还是个小公司,我们需要让事情运行地尽可能平稳。当我们寻找可行的解决方案时,我们打算坚持用那些可以帮助我们减轻对硬件依赖负担的工具。由于我们主要开发Rails应用,而Heroku对RoR,常用的数据库和缓存(Postgres/Mongo/Redis等)有很好的支持,最明智的选择就是用[Heroku][2] 。我们就是这样做的。 - -Heroku有很好的技术支持和文档,使得部署非常轻松。唯一的问题是,当你处于起步阶段,你需要很多开销。这不是最好的选择,真的。 - -### 第2步 - Dokku ### - -为了尝试并降低成本,我们决定试试Dokku。[Dokku][3],引用GitHub上的一句话 - -> Docker powered mini-Heroku in around 100 lines of Bash - -我们启用的[DigitalOcean][4]上的很多台机器,都预装了Dokku。Dokku非常像Heroku,但是当你有复杂的项目需要调整配置参数或者是需要特殊的依赖时,它就不能胜任了。我们有一个应用,它需要对图片进行多次转换,我们无法安装一个适合版本的imagemagick到托管我们Rails应用的基于Dokku的Docker容器内。尽管我们还有很多应用运行在Dokku上,但我们还是不得不把一些迁移回Heroku。 - -### 第3步 - Docker ### - -几个月前,由于开发环境和生产环境的问题重新出现,我决定试试Docker。简单来说,Docker让开发者容器化应用,简化部署。由于一个Docker容器本质上已经包含项目运行所需要的所有依赖,只要它能在你的笔记本上运行地很好,你就能确保它将也能在任何一个别的远程服务器的生产环境上运行,包括Amazon的EC2和DigitalOcean上的VPS。 - -Docker IMHO特别有意思的原因是: - -- 它促进了模块化和分离关注点:你只需要去考虑应用的逻辑部分(负载均衡:1个容器;数据库:1个容器;web服务器:1个容器); -- 在部署的配置上非常灵活:容器可以被部署在大量的HW上,也可以容易地重新部署在不同的服务器或者提供商那; -- 它允许非常细粒度地优化应用的运行环境:你可以利用你的容器来创建镜像,所以你有很多选择来配置环境。 - -它也有一些缺点: - -- 它的学习曲线非常的陡峭(这是从一个软件开发者的角度来看,而不是经验丰富的运维人员); -- 搭建环境不简单,尤其是还需要自己搭建一个私有的registry/repository (后面有关于它的详细内容)。 - -下面是一些提示。这个系列的最后一周,我将把他们和一些新的放在一起。 - ----------- - -在下面的文章中,我们将看到如何建立一个半自动化的基于Docker的部署系统。 - -- [建立私有的Docker registry][6] -- [配置Rails应用的半自动化话部署][7] - --------------------------------------------------------------------------------- - -via: http://cocoahunter.com/2015/01/23/docker-1/ - -作者:[Michelangelo Chasseur][a] -译者:[mtunique](https://github.com/mtunique) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://cocoahunter.com/author/michelangelo/ -[1]:http://www.touchwa.re/ -[2]:http://cocoahunter.com/2015/01/23/docker-1/www.heroku.com -[3]:https://github.com/progrium/dokku -[4]:http://cocoahunter.com/2015/01/23/docker-1/www.digitalocean.com -[5]:http://www.docker.com/ -[6]:http://cocoahunter.com/2015/01/23/docker-2/ -[7]:http://cocoahunter.com/2015/01/23/docker-3/ -[8]: -[9]: -[10]: -[11]: -[12]: -[13]: -[14]: -[15]: -[16]: -[17]: -[18]: -[19]: -[20]: From ef06f6f1bd7238dd50b756174565ba1c41168ff1 Mon Sep 17 00:00:00 2001 From: mtunique Date: Tue, 10 Feb 2015 10:19:49 +0800 Subject: [PATCH 262/725] translated Docker-1 Moving to docker --- .../20150128 Docker-1 Moving to Docker.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 translated/tech/20150128 Docker-1 Moving to Docker.md diff --git a/translated/tech/20150128 Docker-1 Moving to Docker.md b/translated/tech/20150128 Docker-1 Moving to Docker.md new file mode 100644 index 0000000000..36c8f16506 --- /dev/null +++ b/translated/tech/20150128 Docker-1 Moving to Docker.md @@ -0,0 +1,81 @@ +Moving to Docker +================================================================================ +![](http://cocoahunter.com/content/images/2015/01/docker1.jpeg) + +[TL;DR] 这是系列的第一篇文章,这系列讲述了我的公司如何把基础服务从PaaS迁移到Docker上。如果你愿意,你可以直接跳过介绍(这篇文章)直接看技术相关的话题(链接在页面的底部)。 + +---------- + +上个月,我一直在折腾开发环境。这是我个人故事和经验,关于尝试用Docker简化Rails应用的部署过程。 + +当我在2012年创建我的公司 – [Touchware][1]时,我还是一个独立开发者。很多事情很小,不复杂,不他们需要很多维护,他们也不需要不部署到很多机器上。经过过去一年的发展,我们成长了很多(我们现在是是拥有10个人团队)而且我们的服务端的程序和API无论在范围和规模方面都有增长。 + +### 第1步 - Heroku ### + +我们还是个小公司,我们需要让事情运行地尽可能平稳。当我们寻找可行的解决方案时,我们打算坚持用那些可以帮助我们减轻对硬件依赖负担的工具。由于我们主要开发Rails应用,而Heroku对RoR,常用的数据库和缓存(Postgres/Mongo/Redis等)有很好的支持,最明智的选择就是用[Heroku][2] 。我们就是这样做的。 + +Heroku有很好的技术支持和文档,使得部署非常轻松。唯一的问题是,当你处于起步阶段,你需要很多开销。这不是最好的选择,真的。 + +### 第2步 - Dokku ### + +为了尝试并降低成本,我们决定试试Dokku。[Dokku][3],引用GitHub上的一句话 + +> Docker powered mini-Heroku in around 100 lines of Bash + +我们启用的[DigitalOcean][4]上的很多台机器,都预装了Dokku。Dokku非常像Heroku,但是当你有复杂的项目需要调整配置参数或者是需要特殊的依赖时,它就不能胜任了。我们有一个应用,它需要对图片进行多次转换,我们无法安装一个适合版本的imagemagick到托管我们Rails应用的基于Dokku的Docker容器内。尽管我们还有很多应用运行在Dokku上,但我们还是不得不把一些迁移回Heroku。 + +### 第3步 - Docker ### + +几个月前,由于开发环境和生产环境的问题重新出现,我决定试试Docker。简单来说,Docker让开发者容器化应用,简化部署。由于一个Docker容器本质上已经包含项目运行所需要的所有依赖,只要它能在你的笔记本上运行地很好,你就能确保它将也能在任何一个别的远程服务器的生产环境上运行,包括Amazon的EC2和DigitalOcean上的VPS。 + +Docker IMHO特别有意思的原因是: + +- 它促进了模块化和分离关注点:你只需要去考虑应用的逻辑部分(负载均衡:1个容器;数据库:1个容器;web服务器:1个容器); +- 在部署的配置上非常灵活:容器可以被部署在大量的HW上,也可以容易地重新部署在不同的服务器或者提供商那; +- 它允许非常细粒度地优化应用的运行环境:你可以利用你的容器来创建镜像,所以你有很多选择来配置环境。 + +它也有一些缺点: + +- 它的学习曲线非常的陡峭(这是从一个软件开发者的角度来看,而不是经验丰富的运维人员); +- 搭建环境不简单,尤其是还需要自己搭建一个私有的registry/repository (后面有关于它的详细内容)。 + +下面是一些提示。这个系列的最后一周,我将把他们和一些新的放在一起。 + +---------- + +在下面的文章中,我们将看到如何建立一个半自动化的基于Docker的部署系统。 + +- [建立私有的Docker registry][6] +- [配置Rails应用的半自动化话部署][7] + +-------------------------------------------------------------------------------- + +via: http://cocoahunter.com/2015/01/23/docker-1/ + +作者:[Michelangelo Chasseur][a] +译者:[mtunique](https://github.com/mtunique) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://cocoahunter.com/author/michelangelo/ +[1]:http://www.touchwa.re/ +[2]:http://cocoahunter.com/2015/01/23/docker-1/www.heroku.com +[3]:https://github.com/progrium/dokku +[4]:http://cocoahunter.com/2015/01/23/docker-1/www.digitalocean.com +[5]:http://www.docker.com/ +[6]:http://cocoahunter.com/2015/01/23/docker-2/ +[7]:http://cocoahunter.com/2015/01/23/docker-3/ +[8]: +[9]: +[10]: +[11]: +[12]: +[13]: +[14]: +[15]: +[16]: +[17]: +[18]: +[19]: +[20]: From 4a3098043b5cf5a9696138c918072d607fdf6352 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 10 Feb 2015 11:37:55 +0800 Subject: [PATCH 263/725] Translating by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index bfd92b9d8a..d050368ed1 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -1,12 +1,12 @@ Linux上有哪些比较好的C/C++ IDE? ================================================================================ -"一个真正的程序员是不用IDE的,他们是用uses insert a text editor name here with such and such plugins." We all heard that somewhere. Yet, as much as one can agree with that statement, an IDE remains quite useful. An IDE is easy to set up and use out of the box. Hence there is no better way to start coding a project from scratch. So for this post, let me present you with my list of good IDEs for C/C++ on Linux. Why is C/C++ specifically? Because C is my favorite language, and we need to start somewhere. Also note that there are in general a lot of ways to code in C, so in order to trim down the list, I only selected "real out-of-the-box IDE", not text editors like Gedit or Vim pumped with [plugins][1]. Not that this alternative is bad in any way, just that the list will go on forever if I include text editors. +"一个真正的程序员是不用IDE(译者注:集成开发环境)的,他们都是用带着某某插件的文本编辑器来写代码。"我们总能在某些地方听到此类观点。然而,尽管越来越多的人同意这样的观点,但是一个IDE仍然非常有用,它设置简单,使用起来也很方便,因此没有更好办法能像这样来编写一个项目了。所以鉴于这点,在这里我想给大家列一份在linux平台上比较好的C/C++ IDE清单。为什么特地说C/C++呢?因为C语言是我最喜欢的编程语言而且我们总要找个切入点来开始。另外要注意的是,通常有很多种编写C代码的方法,所以为了消减清单的篇幅,我只选择了"真正好用的IDE",而不是诸如Gedit或Vim这种注入[插件][1]的文本编辑器。并不是说这些编辑器在任何情况下都不好,只是如果我将文本编辑器包含进去那这份清单就将永无止境了。 ### 1. Code::Blocks ### ![](https://farm8.staticflickr.com/7520/16089880989_10173db27b_c.jpg) -Starting all out with my personal favorite, [Code::Blocks][2] is a simple and fast IDE for C/C++ exclusively. Like any respectable IDE, it integrates syntax highlighting, bookmarking, word completion, project management, and a debugger. Where it shines is via its simple plugin system which adds indispensable tools like Valgrind and CppCheck, and less indispensable like a Tetris mini-game. But my reason for liking it particularly is for its coherent set of handy shortcuts, and the large number of options that never feel too overwhelming. +用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。Where it shines is via its simple plugin system which adds indispensable tools like Valgrind and CppCheck, and less indispensable like a Tetris mini-game. But my reason for liking it particularly is for its coherent set of handy shortcuts, and the large number of options that never feel too overwhelming. ### 2. Eclipse ### From 094c198a458af96a64488c83bc4c5e4df6416091 Mon Sep 17 00:00:00 2001 From: martin qi Date: Tue, 10 Feb 2015 13:59:38 +0800 Subject: [PATCH 264/725] Update 20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md --- ...back classical desktop on Ubuntu 14.10 or Linux Mint 17.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md index 6955e16a11..a1ae7919c3 100644 --- a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md +++ b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md @@ -1,3 +1,5 @@ +Translating by martin. + Install the Gnome Flashback classical desktop on Ubuntu 14.10/Linux Mint 17 ================================================================================ The [Gnome Flashback][1] desktop environment is a simple and great way to get back the old style classical desktop if you do not like Unity desktop, like many. @@ -95,4 +97,4 @@ via: http://www.binarytides.com/install-gnome-flashback-ubuntu/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://plus.google.com/117145272367995638274/posts -[1]:https://wiki.gnome.org/action/show/Projects/GnomeFlashback?action=show&redirect=GnomeFlashback \ No newline at end of file +[1]:https://wiki.gnome.org/action/show/Projects/GnomeFlashback?action=show&redirect=GnomeFlashback From 0a994b35ab9f41d1b1ab189ff606145c2a4d6bac Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 10 Feb 2015 15:29:32 +0800 Subject: [PATCH 265/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150114 Why Mac users don't switch to Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/talk => published}/20150114 Why Mac users don't switch to Linux.md (100%) diff --git a/translated/talk/20150114 Why Mac users don't switch to Linux.md b/published/20150114 Why Mac users don't switch to Linux.md similarity index 100% rename from translated/talk/20150114 Why Mac users don't switch to Linux.md rename to published/20150114 Why Mac users don't switch to Linux.md From 49686693e633d0f469c23015496e2d449aeef0aa Mon Sep 17 00:00:00 2001 From: soooogreen <54364732@qq.com> Date: Tue, 10 Feb 2015 23:20:48 +0800 Subject: [PATCH 266/725] Update 20150126 Improve system performance by moving your log files to RAM Using Ramlog.md soooogreen --- ...performance by moving your log files to RAM Using Ramlog.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md index db03257941..33aaf25554 100644 --- a/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md +++ b/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md @@ -1,3 +1,4 @@ +translating by soooogreen Improve system performance by moving your log files to RAM Using Ramlog ================================================================================ Ramlog act as a system daemon. On startup it creates ramdisk, it copies files from /var/log into ramdisk and mounts ramdisk as /var/log. All logs after that will be updated on ramdisk. Logs on harddrive are kept in folder /var/log.hdd which is updated when ramlog is restarted or stopped. On shutdown it saves log files back to harddisk so logs are consistent. Ramlog 2.x is using tmpfs by default, ramfs and kernel ramdisk are suppored as well. Program rsync is used for log synchronization. @@ -109,4 +110,4 @@ via: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-fil 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb \ No newline at end of file +[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb From 9c5ce3db236cf2816a5a90833e6523032b951d92 Mon Sep 17 00:00:00 2001 From: bazz2 Date: Wed, 11 Feb 2015 09:37:48 +0800 Subject: [PATCH 267/725] [translated by bazz2]How to Configure Chroot Environment in Ubuntu 14.04 --- ...gure Chroot Environment in Ubuntu 14.04.md | 147 ------------------ ...gure Chroot Environment in Ubuntu 14.04.md | 146 +++++++++++++++++ 2 files changed, 146 insertions(+), 147 deletions(-) delete mode 100644 sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md create mode 100644 translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md diff --git a/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md b/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md deleted file mode 100644 index 540789d367..0000000000 --- a/sources/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md +++ /dev/null @@ -1,147 +0,0 @@ -[bazz2222222] -How to Configure Chroot Environment in Ubuntu 14.04 -================================================================================ -There are many instances when you may wish to isolate certain applications, user, or environments within a Linux system. Different operating systems have different methods of achieving isolation, and in Linux, a classic way is through a `chroot` environment. - -In this guide, we'll show you step wise on how to setup an isolated environment using chroot in order to create a barrier between your regular operating system and a contained environment. This is mainly useful for testing purposes. We will teach you the steps on an **Ubuntu 14.04** VPS instance. - -Most system administrators will benefit from knowing how to accomplish a quick and easy chroot environment and it is a valuable skill to have. - -### The chroot environment ### - -A chroot environment is an operating system call that will change the root location temporarily to a new folder. Typically, the operating system's conception of the root directory is the actual root located at "/". However, with `chroot`, you can specify another directory to serve as the top-level directory for the duration of a chroot. - -Any applications that are run from within the `chroot` will be unable to see the rest of the operating system in principle. - -#### Advantages of Chroot Environment #### - -> - Test applications without the risk of compromising the entire host system. -> -> - From the security point of view, whatever happens in the chroot environment won't affect the host system (not even under root user). -> -> - A different operating system running in the same hardware. - -For instance, it allows you to build, install, and test software in an environment that is separated from your normal operating system. It could also be used as a method of **running 32-bit applications in a 64-bit environment**. - -But while chroot environments will certainly make additional work for an unprivileged user, they should be considered a hardening feature instead of a security feature, meaning that they attempt to reduce the number of attack vectors instead of creating a full solution. If you need full isolation, consider a more complete solution, such as Linux containers, Docker, vservers, etc. - -### Debootstrap and Schroot ### - -The necessary packages to setup the chroot environment are **debootstrap** and **schroot**, which are available in the ubuntu repository. The schroot command is used to setup the chroot environment. - -**Debootstrap** allows you to install a new fresh copy of any Debian (or debian-based) system from a repository in a directory with all the basic commands and binaries needed to run a basic instance of the operating system. - -The **schroot** allows access to chroots for normal users using the same mechanism, but with permissions checking and allowing additional automated setup of the chroot environment, such as mounting additional filesystems and other configuration tasks. - -These are the steps to implement this functionality in Ubuntu 14.04 LTS: - -### 1. Installing the Packages ### - -Firstly, We're gonna install debootstrap and schroot in our host Ubuntu 14.04 LTS. - - $ sudo apt-get install debootstrap - $ sudo apt-get install schroot - -### 2. Configuring Schroot ### - -Now that we have the appropriate tools, we just need to specify a directory that we want to use as our chroot environment. We will create a directory called linoxide in our root directory to setup chroot there: - - sudo mkdir /linoxide - -We have to configure schroot to suit our needs in the configuration file .we will modify the schroot configuration file with the information we require to get configured. - - sudo nano /etc/schroot/schroot.conf - -We are on an Ubuntu 14.04 LTS (Trusty Tahr) system currently, but let's say that we want to test out some packages available on Ubuntu 13.10, code named "Saucy Salamander". We can do that by creating an entry that looks like this: - - [saucy] - description=Ubuntu Saucy - location=/linoxide - priority=3 - users=arun - root-groups=root - -![](http://blog.linoxide.com/wp-content/uploads/2014/12/schroot-config.png) - -Modify the values of the configuration parameters in the above example to fit your system: - -### 3. Installing 32 bit Ubuntu with debootstrap ### - -Debootstrap downloads and installs a minimal operating system inside your **chroot environment**. You can install any debian-based distro of your choice, as long as you have a repository available. - -Above, we placed the chroot environment under the directory **/linoxide** and this is the root directory of the chroot environment. So we'll need to run debootstrap inside that directory which we have already created: - - cd /linoxide - sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ - sudo chroot /linoxide /debootstrap/debootstrap --second-stage - -You can replace amd64 in --arch as i386 or other bit OS you wanna setup available in the repository. You can replace the mirror http://archive.ubuntu.com/ubuntu/ above as the one closest, you can get the closest one from the official [Ubuntu Mirror Page][1]. - -**Note: You will need to add --foreign above 3rd line command if you choose to setup i386 bit OS choot in your 64 bit Host Ubuntu as:** - - sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ - -It takes some time (depending on your bandwidth) to download, install and configure the complete system. It takes about 500 MBs for a minimal installation. - -### 4. Finallizing the chroot environment ### - -After the system is installed, we'll need to do some final configurations to make sure the system functions correctly. First, we'll want to make sure our host `fstab` is aware of some pseudo-systems in our guest. - - sudo nano /etc/fstab - -Add the below lines like these to the bottom of your fstab: - - proc /linoxide/proc proc defaults 0 0 - sysfs /linoxide/sys sysfs defaults 0 0 - -Save and close the file. - -Now, we're going to need to mount these filesystems within our guest: - - $ sudo mount proc /linoxide/proc -t proc - $sudo mount sysfs /linoxide/sys -t sysfs - -We'll also want to copy our /etc/hosts file so that we will have access to the correct network information: - - $ sudo cp /etc/hosts /linoxide/etc/hosts - -Finally, You can list the available chroot environments using the schroot command. - - $ schroot -l - -We can enter the chroot environment through a command like this: - - $ sudo chroot /linoxide/ /bin/bash - -You can test the chroot environment by checking the version of distributions installed. - - # lsb_release -a - # uname -a - -To finish this tutorial, in order to run a graphic application from the chroot, you have to export the DISPLAY environment variable. - - $ DISPLAY=:0.0 ./apps - -Here, we have successfully installed Chrooted Ubuntu 13.10(Saucy Salamander) in your host Ubuntu 14.04 LTS (Trusty Tahr). - -You can exit chroot environment successfully by running the commands below: - - # exit - -Afterwards, we need to unmount our proc and sys filesystems: - - $ sudo umount /test/proc - $ sudo umount /test/sys - --------------------------------------------------------------------------------- - -via: http://linoxide.com/ubuntu-how-to/configure-chroot-environment-ubuntu-14-04/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:https://launchpad.net/ubuntu/+archivemirrors diff --git a/translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md b/translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md new file mode 100644 index 0000000000..789cb8a7fe --- /dev/null +++ b/translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md @@ -0,0 +1,146 @@ +如何在 Ubuntu 14.04 里面配置 chroot 环境 +================================================================================ +你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境。 + +在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目,这些步骤都在 **Ubuntu 14.04** 虚拟专用服务器(VPS)上执行。 + +学会快速搭建一个简单的 chroot 环境是一项非常实用的技能,绝大多数系统管理员都能从中受益。 + +### Chroot 环境 ### + +一个 chroot 环境就是通过系统调用,将一个本地目录临时变成根目录。一般所说的系统根目录就是挂载点"/",然而使用 chroot 命令后,你可以使用其它目录作为根目录。 + +原则上,任何运行在 chroot 环境内的应用都不能访问系统中其他信息(LCTT译注:使用 chroot 把一个目录变成根目录,在里面运行的应用只能访问本目录内的文件,无法访问到目录外的文件。然而,运行在 chroot 环境的应用可以通过 sysfs 文件系统访问到环境外的信息,所以,这里有个“原则上”的修饰语)。 + +### Chroot 环境的用处 ### + +> - 测试一个不稳定的应用服务不会影响到整个主机系统。 +> +> - 就算使用 root 权限做了些不当的操作,把 chroot 环境搞得一塌糊涂,也不会影响到主机系统。 +> +> - 可以在你的系统中运行另外一个操作系统。 + +举个例子,你可以在 chroot 环境中编译、安装、测试软件,而不去动真实的系统。你也可以**在64位环境下使用 chroot 创建一个32位环境,然后运行一个32位的程序**(LCTT泽注:如果你的真实环境是32位的,那就不能 chroot 一个64位的环境了)。 + +但是 为了安全考虑,chroot 环境为非特权用户设立了非常严格的限制,而不是提供完整的安全策略。如果你需要的是有完善的安全策略的隔离方案,可以考虑下 LXC、Docker、vservers等等。 + +### Debootstrap 和 Schroot ### + +使用 chroot 环境需要安装 **debootstrap** 和 **schroot**,这两个软件都在 Ubuntu 的镜像源中。其中 schroot 用于创建 chroot 环境。 + +**Debootstrap** 可以让你通过镜像源安装任何 Debian(或基于 Debian 的)系统,装好的系统会包含最基本的命令。 + +**Schroot** 命令允许用户使用相同的机制去创建 chroot 环境,但在访问 chroot 环境时会做些权限检查,并且会允许用户做些额外的自动设置,比如挂载一些文件系统。 + +在 Ubuntu 14.04 LTS 上,我们可以通过两步来实现这个功能: + +### 1. 安装软件包 ### + +第一步,在Ubuntu 14.04 LTS 主机系统上安装 debootstrap 和 schroot: + + $ sudo apt-get install debootstrap + $ sudo apt-get install schroot + +### 2. 配置 Schroot ### + +现在我们有工具在手,需要指定一个目录作为我们的 chroot 环境。这里创建一个目录先: + + sudo mkdir /linoxide + +编辑 schroot 的配置文件: + + sudo nano /etc/schroot/schroot.conf + +再提醒一下,我们现在是在 Ubuntu 14.04 LTS 系统上。如果我们想测试一个软件包能不能在 Ubuntu 13.10(代号是“Saucy Salamander”) 上运行,就可以在配置文件中添加下面的内容: + + [saucy] + description=Ubuntu Saucy + location=/linoxide + priority=3 + users=arun + root-groups=root + +![](http://blog.linoxide.com/wp-content/uploads/2014/12/schroot-config.png) + +根据你的系统要求,调整上面的配置信息。 + +### 3. 使用 debootstrap 安装32位 Ubuntu 系统 ### + +Debootstrap 命令会在你的 **chroot 环境**里面下载安装一个最小系统。只要你能访问镜像源,你就可以安装任何基于 Debian 的系统版本。 + +前面我们已经创建了 **/linoxide** 目录用于放置 chroot 环境,现在我们可以在这个目录里面运行 debootstrap 了: + + cd /linoxide + sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ + sudo chroot /linoxide /debootstrap/debootstrap --second-stage + +你可以将 --arch 的参数换成 i386 或其他架构,只要存在这种架构的镜像源。你也可以把镜像源 http://archive.ubuntu.com/ubuntu/ 换成离你最近的镜像源,具体可参考 [Ubuntu 官方镜像主页][1]。 + +**注意:如果你是在64位系统中创建32位系统,你需要在上面第3行命令中加入 --foreign 选项,就像下面的命令:** + + sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ + +下载需要一段时间,看你网络带宽性能。最小系统大概有500M。 + +### 4. 完成 chroot 环境 ### + +安装完系统后,我们需要做一些收尾工作,确保系统运行正常。首先,保证主机的 fstab 程序能意识到 chroot 环境的存在: + + sudo nano /etc/fstab + +在文件最后面添加下面的配置: + + proc /linoxide/proc proc defaults 0 0 + sysfs /linoxide/sys sysfs defaults 0 0 + +保存并关闭文件。 + +挂载一些文件系统到 chroot 环境: + + $ sudo mount proc /linoxide/proc -t proc + $ sudo mount sysfs /linoxide/sys -t sysfs + +复制 /etc/hosts 文件到 chroot 环境,这样 chroot 环境就可以使用网络了: + + $ sudo cp /etc/hosts /linoxide/etc/hosts + +最后使用 schroot -l 命令列出系统上所有的 chroot 环境: + + $ schroot -l + +使用下面的命令进入 chroot 环境: + + $ sudo chroot /linoxide/ /bin/bash + +测试安装的版本: + + # lsb_release -a + # uname -a + +为了在 chroot 环境中使用图形界面,你需要设置 DISPLAY 环境变量: + + $ DISPLAY=:0.0 ./apps + +目前为止,我已经成功地在 Ubuntu 14.04 LTS 上安装了 Ubuntu 13.10。 + +退出 chroot 环境: + + # exit + +清理一下,卸载文件系统: + + $ sudo umount /test/proc + $ sudo umount /test/sys + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/configure-chroot-environment-ubuntu-14-04/ + +作者:[Arun Pyasi][a] +译者:[bazz2](https://github.com/bazz2) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://launchpad.net/ubuntu/+archivemirrors From 36fbcd7d8ab1a9c2e3cd420e313ad07514707641 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 11 Feb 2015 11:25:27 +0800 Subject: [PATCH 268/725] =?UTF-8?q?20150211-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0211 25 Tips for Intermediate Git Users.md | 469 ++++++++++++++++++ 1 file changed, 469 insertions(+) create mode 100644 sources/tech/20150211 25 Tips for Intermediate Git Users.md diff --git a/sources/tech/20150211 25 Tips for Intermediate Git Users.md b/sources/tech/20150211 25 Tips for Intermediate Git Users.md new file mode 100644 index 0000000000..a4dcb2b546 --- /dev/null +++ b/sources/tech/20150211 25 Tips for Intermediate Git Users.md @@ -0,0 +1,469 @@ +25 Tips for Intermediate Git Users +================================================================================ +I’ve been using git for about 18 months now and thought I knew it pretty well. Then we had [Scott Chacon][1] from GitHub over to do some training at [LVS, a supplier/developer of betting/gaming software][2] (where contracted until 2013) and I learnt a ton in the first day. + +As someone who’s always felt fairly comfortable in Git, I thought sharing some of the nuggets I learnt with the community might help someone to find an answer without needing to do lots of research. + +### Basic Tips ### + +#### 1. First Steps After Install #### + +After installing Git, the first thing you should do is configure your name and email, as every commit will have these details: + + $ git config --global user.name "Some One" + $ git config --global user.email "someone@gmail.com" + +#### 2. Git is Pointer-Based #### + +Everything stored in git is in a file. When you create a commit it creates a file containing your commit message and associated data (name, email, date/time, previous commit, etc) and links it to a tree file. The tree file contains a list of objects or other trees. The object or blob is the actual content associated with the commit (a file, if you will, although the filename isn’t stored in the object, but in the tree). All of these files are stored with a filename of a SHA-1 hash of the object. + +From there branches and tags are simply files containing (basically) a SHA-1 hash which points to the commit. Using these references allows for a lot of flexibility and speed, as creating a new branch is as simple as creating a file with the name of the branch and the SHA-1 reference to the commit you’re branching from. Of course, you’d never do that as you’d use the Git command line tools (or a GUI), but it’s that simple. + +You may have heard references to the HEAD. This is simply a file containing the SHA-1 reference of the commit you’re currently pointing to. If you’re resolving a merge conflict and see HEAD, that’s nothing to do with a particular branch or necessarily a particular point on the branch but where you currently are. + +All the branch pointers are kept in .git/refs/heads, HEAD is in .git/HEAD and tags are in .git/refs/tags – feel free to have a look in there. + +#### 3. Two Parents – of course! #### + +When viewing a merge commit message in a log, you will see two parents (as opposed to the normal one for a work-based commit). The first parent is the branch you were on and the second is the one you merged in to it. + +#### 4. Merge Conflicts #### + +By now I’m sure you have had a merge conflict and had to resolve it. This is normally done by editing the file, removing the <<<<, ====, >>>> markers and the keeping the code you want to store. Sometimes it’s nice to see the code before either change, i.e. before you made the change in both branches that now conflicts. This is one command away: + + $ git diff --merge + diff --cc dummy.rb + index 5175dde,0c65895..4a00477 + --- a/dummy.rb + +++ b/dummy.rb + @@@ -1,5 -1,5 +1,5 @@@ + class MyFoo + def say + - puts "Bonjour" + - puts "Hello world" + ++ puts "Annyong Haseyo" + end + end + +If the file is binary, diffing files isn’t so easy… What you’ll normally want to do is to try each version of the binary file and decide which one to use (or manually copy portions over in the binary file’s editor). To pull a copy of the file from a particular branch (say you’re merging master and feature132): + + $ git checkout master flash/foo.fla # or... + $ git checkout feature132 flash/foo.fla + $ # Then... + $ git add flash/foo.fla + +Another way is to cat the file from git – you can do this to another filename then copy the correct file over (when you’ve decided which it is) to the normal filename: + + $ git show master:flash/foo.fla > master-foo.fla + $ git show feature132:flash/foo.fla > feature132-foo.fla + $ # Check out master-foo.fla and feature132-foo.fla + $ # Let's say we decide that feature132's is correct + $ rm flash/foo.fla + $ mv feature132-foo.fla flash/foo.fla + $ rm master-foo.fla + $ git add flash/foo.fla + +UPDATE: Thanks to Carl in the comments on the original blog post for the reminder, you can actually use “git checkout —ours flash/foo.fla” and “git checkout —theirs flash/foo.fla” to checkout a particular version without remembering which branches you merge in. Personally I prefer to be more explicit, but the option is there… + +Remember to add the file after resolving the merge conflict (as I do above). + +### Servers, Branching and Tagging ### + +#### 5. Remote Servers #### + +One of the most powerful features of Git is the ability to have more than one remote server (as well as the fact that you’re running a local repository always). You don’t always need write access either, you may have multiple servers you read from (to merge work in) and then write to another. To add a new remote server is simple: + + $ git remote add john git@github.com:johnsomeone/someproject.git + +If you want to see information about your remote servers you can do: + + # shows URLs of each remote server + $ git remote -v + + # gives more details about each + $ git remote show name + +You can always see the differences between a local branch and a remote branch: + + $ git diff master..john/master + +You can also see the changes on HEAD that aren’t on that remote branch: + + $ git log remote/branch.. + # Note: no final refspec after .. + +#### 6. Tagging #### + +In Git there are two types of tag – a lightweight tag and an annotated tag. Bearing in mind Tip 2 about Git being pointer based, the difference between the two is simple. A lightweight tag is simply a named pointer to a commit. You can always change it to point to another commit. An annotated tag is a name pointer to a tag object, with it’s own message and history. As it has it’s own message it can be GPG signed if required. + +Creating the two types of tag is easy (and one command line switch different) + + $ git tag to-be-tested + $ git tag -a v1.1.0 # Prompts for a tag message + +#### 7. Creating Branches #### + +Creating branches in git is very easy (and lightning quick due to it only needing to create a less than 100 byte file). The longhand way of creating a new branch and switching to it: + + $ git branch feature132 + $ git checkout feature132 + +Of course, if you know you’re going to want to switch to it straight away you can do it in one command: + + $ git checkout -b feature132 + +If you want to rename a local branch it’s as easy as (the long way to show what happens): + + $ git checkout -b twitter-experiment feature132 + $ git branch -d feature132 + +Update: Or you can (as Brian Palmer points out in the comments on the original blog post) just use the -m switch to “git branch” to do it in one step (as Mike points out, if you only specify one branch it renames your current branch): + + $ git branch -m twitter-experiment + $ git branch -m feature132 twitter-experiment + +#### 8. Merging Branches #### + +At some point in the future, you’re going to want to merge your changes back in. There are two ways to do this: + + $ git checkout master + $ git merge feature83 # Or... + $ git rebase feature83 + +The difference between merge and rebase is that merge tries to resolve the changes and create a new commit that blends them. Rebase tries to take your changes since you last diverged from the other branch and replay them from the HEAD of the other branch. However, don’t rebase after you’ve pushed a branch to a remote server – this can cause confusion/problems. + +If you aren’t sure which branches still have unique work on them – so you know which you need to merge and which ones can be removed, there are two switches to git branch that help: + + # Shows branches that are all merged in to your current branch + $ git branch --merged + + # Shows branches that are not merged in to your current branch + $ git branch --no-merged + +#### 9. Remote Branches #### + +If you have a local branch that you’d like to appear on a remote server, you can push it up with one command: + + $ git push origin twitter-experiment:refs/heads/twitter-experiment + # Where origin is our server name and twitter-experiment is the branch + +Update: Thanks to Erlend in the comments on the original blog post – this is actually the same as doing `git push origin twitter-experiment` but by using the full syntax you can see that you can actually use different names on both ends (so your local can be `add-ssl-support` while your remote name can be `issue-1723`). + +If you want to delete a branch from the server (note the colon before the branch name): + + $ git push origin :twitter-experiment + +If you want to show the state of all remote branches you can view them like this: + + $ git remote show origin + +This may list some branches that used to exist on the server but now don’t exist. If this is the case you can easily remove them from your local checkout using: + + $ git remote prune + +Finally, if you have a remote branch that you want to track locally, the longhand way is: + + $ git branch --track myfeature origin/myfeature + $ git checkout myfeature + +However, newer versions of Git automatically set up tracking if you use the -b flag to checkout: + + $ git checkout -b myfeature origin/myfeature + +### Storing Content in Stashes, Index and File System ### + +#### 10. Stashing #### + +In Git you can drop your current work state in to a temporary storage area stack and then re-apply it later. The simple case is as follows: + + $ git stash + # Do something... + $ git stash pop + +A lot of people recommend using `git stash apply` instead of pop, however if you do this you end up with a long list of stashes left hanging around. “pop” will only remove it from the stack if it applies cleanly. If you’ve used `git stash apply` you can remove the last item from the stack anyway using: + + $ git stash drop + +Git will automatically create a comment based on the current commit message. If you’d prefer to use a custom message (as it may have nothing to do with the previous commit): + + $ git stash save "My stash message" + +If you want to apply a particular stash from your list (not necessarily the last one) you can list them and apply it like this: + + $ git stash list + stash@{0}: On master: Changed to German + stash@{1}: On master: Language is now Italian + $ git stash apply stash@{1} + +#### 11. Adding Interactively #### + +In the subversion world you change files and then just commit everything that has changed. In Git you have a LOT more power to commit just certain files or even certain patches. To commit certain files or parts of files you need to go in to interactive mode. + + $ git add -i + staged unstaged path + + + *** Commands *** + 1: status 2: update 3: revert 4: add untracked + 5: patch 6: diff 7: quit 8: help + What now> + +This drops you in to a menu based interactive prompt. You can use the numbers of the commands or the highlighted letters (if you have colour highlighting turned on) to go in to that mode. Then it’s normally a matter of typing the numbers of the files you want to apply that action to (you can use formats like 1 or 1-4 or 2,4,7). + +If you want to go to patch mode (‘p’ or ‘5’ from interactive mode) you can also go straight in to that mode: + + $ git add -p + diff --git a/dummy.rb b/dummy.rb + index 4a00477..f856fb0 100644 + --- a/dummy.rb + +++ b/dummy.rb + @@ -1,5 +1,5 @@ + class MyFoo + def say + - puts "Annyong Haseyo" + + puts "Guten Tag" + end + end + Stage this hunk [y,n,q,a,d,/,e,?]? + +As you can see you then get a set of options at the bottom for choosing to add this changed part of the file, all changes from this file, etc. Using the ‘?’ command will explain the options. + +#### 12. Storing/Retrieving from the File System #### + +Some projects (the Git project itself for example) store additional files directly in the Git file system without them necessarily being a checked in file. + +Let’s start off by storing a random file in Git: + + $ echo "Foo" | git hash-object -w --stdin + 51fc03a9bb365fae74fd2bf66517b30bf48020cb + +At this point the object is in the database, but if you don’t set something up to point to that object it will be garbage collected. The easiest way is to tag it: + + $ git tag myfile 51fc03a9bb365fae74fd2bf66517b30bf48020cb + +Note that here we’ve used the tag myfile. When we need to retrieve the file we can do it with: + + $ git cat-file blob myfile + +This can be useful for utility files that developers may need (passwords, gpg keys, etc) but you don’t want to actually check out on to disk every time (particularly in production). + +### Logging and What Changed? ### + +#### 13. Viewing a Log #### + +You can’t use Git for long without using ‘git log’ to view your recent commits. However, there are some tips on how to use it better. For example, you can view a patch of what changed in each commit with: + + $ git log -p + +Or you can just view a summary of which files changed with: + + $ git log --stat + +There’s a nice alias you can set up which shows abbreviated commits and a nice graph of branches with the messages on a single line (like gitk, but on the command line): + + $ git config --global alias.lol "log --pretty=oneline --abbrev-commit --graph --decorate" + $ git lol + * 4d2409a (master) Oops, meant that to be in Korean + * 169b845 Hello world + +#### 14. Searching in the Log #### + +If you want to search for a particular author you can specify that: + + $ git log --author=Andy + +Update: Thanks to Johannes in the comments, I’ve cleared up some of the confusion here. + +Or if you have a search term that appears in the commit message: + + $ git log --grep="Something in the message" + +There’s also a more powerful command called the pickaxe command that look for the entry that removes or adds a particular piece of content (i.e. when it first appeared or was removed). This can tell you when a line was added (but not if a character on that line was later changed): + + $ git log -S "TODO: Check for admin status" + +What about if you changed a particular file, e.g. `lib/foo.rb` + + $ git log lib/foo.rb + +Let’s say you have a `feature/132` branch and a `feature/145` and you want to view the commits on those branches that aren’t on master (note the ^ meaning not): + + $ git log feature/132 feature/145 ^master + +You can also narrow it down to a date range using ActiveSupport style dates: + + $ git log --since=2.months.ago --until=1.day.ago + +By default it will use OR to combine the query, but you can easily change it to use AND (if you have more than one criteria) + + $ git log --since=2.months.ago --until=1.day.ago --author=andy -S "something" --all-match + +#### 15. Selecting Revisions to View/Change #### + +There are a number of items you can specify when referring to a revision, depending on what you know about it: + + $ git show 12a86bc38 # By revision + $ git show v1.0.1 # By tag + $ git show feature132 # By branch name + $ git show 12a86bc38^ # Parent of a commit + $ git show 12a86bc38~2 # Grandparent of a commit + $ git show feature132@{yesterday} # Time relative + $ git show feature132@{2.hours.ago} # Time relative + +Note that unlike the previous section, a caret on the end means the parent of that commit – a caret at the start means not on this branch. + +#### 16. Selecting a Range #### + +The easiest way is to use: + + $ git log origin/master..new + # [old]..[new] - everything you haven't pushed yet + +You can also omit the [new] and it will use your current HEAD. + +### Rewinding Time & Fixing Mistakes ### + +#### 17. Resetting changes #### + +You can easily unstage a change if you haven’t committed it using: + + $ git reset HEAD lib/foo.rb + +Often this is aliased to ‘unstage’ as it’s a bit non-obvious. + + $ git config --global alias.unstage "reset HEAD" + $ git unstage lib/foo.rb + +If you’ve committed the file already, you can do two things – if it’s the last commit you can just amend it: + + $ git commit --amend + +This undoes the last commit, puts your working copy back as it was with the changes staged and the commit message ready to edit/commit next time you commit. + +If you’ve committed more than once and just want to completely undo them, you can reset the branch back to a previous point in time. + + $ git checkout feature132 + $ git reset --hard HEAD~2 + +If you actually want to bring a branch to point to a completely different SHA1 (maybe you’re bringing the HEAD of a branch to another branch, or a further commit) you can do the following to do it the long way: + + $ git checkout FOO + $ git reset --hard SHA + +There’s actually a quicker way (as it doesn’t change your working copy back to the state of FOO first then forward to SHA): + + $ git update-ref refs/heads/FOO SHA + +#### 18. Committing to the Wrong Branch #### + +OK, let’s assume you committed to master but should have created a topic branch called experimental instead. To move those changes over, you can create a branch at your current point, rewind head and then checkout your new branch: + + $ git branch experimental # Creates a pointer to the current master state + $ git reset --hard master~3 # Moves the master branch pointer back to 3 revisions ago + $ git checkout experimental + +This can be more complex if you’ve made the changes on a branch of a branch of a branch etc. Then what you need to do is rebase the change on a branch on to somewhere else: + + $ git branch newtopic STARTPOINT + $ git rebase oldtopic --onto newtopic + +#### 19. Interactive Rebasing #### + +This is a cool feature I’ve seen demoed before but never actually understood, now it’s easy. Let’s say you’ve made 3 commits but you want to re-order them or edit them (or combine them): + + $ git rebase -i master~3 + +Then you get your editor pop open with some instructions. All you have to do is amend the instructions to pick/squash/edit (or remove them) commits and save/exit. Then after editing you can `git rebase —continue` to keep stepping through each of your instructions. + +If you choose to edit one, it will leave you in the state you were in at the time you committed that, so you need to use git commit —amend to edit it. + +**Note: DO NOT COMMIT DURING REBASE – only add then use —continue, —skip or —abort.** + +#### 20. Cleaning Up #### + +If you’ve committed some content to your branch (maybe you’ve imported an old repo from SVN) and you want to remove all occurrences of a file from the history: + + $ git filter-branch --tree-filter 'rm -f *.class' HEAD + +If you’ve already pushed to origin, but have committed the rubbish since then, you can also do this for your local system before pushing: + + $ git filter-branch --tree-filter 'rm -f *.class' origin/master..HEAD + +### Miscellaneous Tips ### + +#### 21. Previous References You’ve Viewed #### + +If you know you’ve previously viewed a SHA-1, but you’ve done some resetting/rewinding you can use the reflog commands to view the SHA-1s you’ve recently viewed: + + $ git reflog + $ git log -g # Same as above, but shows in 'log' format + +#### 22. Branch Naming #### + +A lovely little tip – don’t forget that branch names aren’t limited to a-z and 0-9. It can be quite nice to use / and . in names for fake namespacing or versionin, for example: + + $ # Generate a changelog of Release 132 + $ git shortlog release/132 ^release/131 + $ # Tag this as v1.0.1 + $ git tag v1.0.1 release/132 + +#### 23. Finding Who Dunnit #### + +Often it can be useful to find out who changed a line of code in a file. The simple command to do this is: + + $ git blame FILE + +Sometimes the change has come from a previous file (if you’ve combined two files, or you’ve moved a function) so you can use: + + $ # shows which file names the content came from + $ git blame -C FILE + +Sometimes it’s nice to track this down by clicking through changes and going further and further back. There’s a nice in-built gui for this: + + $ git gui blame FILE + +#### 24. Database Maintenance #### + +Git doesn’t generally require a lot of maintenance, it pretty much takes care of itself. However, you can view the statistics of your database using: + + $ git count-objects -v + +If this is high you can choose to garbage collect your clone. This won’t affect pushes or other people but it can make some of your commands run much faster and take less space: + + $ git gc + +It also might be worth running a consistency check every so often: + + $ git fsck --full + +You can also add a `—auto` parameter on the end (if you’re running it frequently/daily from crontab on your server) and it will only fsck if the stats show it’s necessary. + +When checking, getting “dangling” or “unreachable” is fine, this is often a result of rewinding heads or rebasing. Getting “missing” or “sha1 mismatch” is bad… Get professional help! + +#### 25. Recovering a Lost Branch #### + +If you delete a branch experimental with -D you can recreate it with: + + $ git branch experimental SHA1_OF_HASH + +You can often find the SHA1 hash using git reflog if you’ve accessed it recently. + +Another way is to use `git fsck —lost-found`. A dangling commit here is the lost HEAD (it will only be the HEAD of the deleted branch as the HEAD^ is referred to by HEAD so it’s not dangling) + +### Done! ### + +Wow, the longest blog post I’ve ever written, I hope someone finds it useful. If you did, or if you have any questions let me know in the comments… + +-------------------------------------------------------------------------------- + +via: https://www.andyjeffries.co.uk/25-tips-for-intermediate-git-users/ + +作者:[Andy Jeffries][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.andyjeffries.co.uk/author/andy-jeffries/ +[1]:http://gitcasts.com/about +[2]:http://www.lvs.co.uk/ \ No newline at end of file From 9176a44912fb7a48c1e2f0cf68ac1a49c7cefc74 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 11 Feb 2015 12:58:39 +0800 Subject: [PATCH 269/725] translating --- ...atal error--x264.h--No such file or directory' on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md b/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md index 2092f37e7d..ac028fe545 100644 --- a/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md +++ b/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md @@ -1,3 +1,5 @@ +translating----geekpi + Linux FAQs with Answers--How to fix “fatal error: x264.h: No such file or directory” on Linux ================================================================================ > **Question**: I am trying to build a video encoding application from the source on Linux. However, during compilation, I am encountering the error: "fatal error: x264.h: No such file or directory" How can I fix this error? @@ -88,4 +90,4 @@ via: http://ask.xmodulo.com/fatal-error-x264-h-no-such-file-or-directory.html [1]:http://www.videolan.org/developers/x264.html [2]:http://ask.xmodulo.com/compile-ffmpeg-centos-fedora-rhel.html [3]:http://xmodulo.com/how-to-install-handbrake-on-linux.html -[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html \ No newline at end of file +[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html From adfd8b55d5268d4ac32abb7b92a4d693e21187f0 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 11 Feb 2015 13:19:33 +0800 Subject: [PATCH 270/725] translated --- ....h--No such file or directory' on Linux.md | 93 ------------------- ....h--No such file or directory' on Linux.md | 91 ++++++++++++++++++ 2 files changed, 91 insertions(+), 93 deletions(-) delete mode 100644 sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md create mode 100644 translated/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md diff --git a/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md b/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md deleted file mode 100644 index ac028fe545..0000000000 --- a/sources/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md +++ /dev/null @@ -1,93 +0,0 @@ -translating----geekpi - -Linux FAQs with Answers--How to fix “fatal error: x264.h: No such file or directory” on Linux -================================================================================ -> **Question**: I am trying to build a video encoding application from the source on Linux. However, during compilation, I am encountering the error: "fatal error: x264.h: No such file or directory" How can I fix this error? - -The following compilation error indicates that you do not have x264 library's development files installed on your Linux system. - - fatal error: x264.h: No such file or directory - -[x264][1] is an H.264/MPEG-4 AVC encoder library licensed with GNU GPL. The x264 library is popularly used by many video encoder/transcoder programs such as Avidemux, [FFmpeg][2], [HandBrake][3], OpenShot, MEncode and more. - -To solve the above compilation error, you need to install development files for x264 library. Here is how you can do it. - -### Install x264 Library and its Development Files on Debian, Ubuntu or Linux Mint ### - -On Debian based systems, x264 library is already included in the base repositories. Thus its installation is straightforward with apt-get as follows. - - $ sudo apt-get install libx264-dev - -### Install x264 Library and its Development Files on Fedora, CentOS/RHEL ### - -On Red Hat based distributions such as Fedora or CentOS, the x264 library is available via the free repository of RPM Fusion. Thus, you need to install [RPM Fusion (free)][4] first. - -Once RPM Fusion is set up, you can install x264 development files as follows. - - $ sudo yum --enablerepo=rpmfusion-free install x264-devel - -Note that RPM Fusion repository is not available for CentOS 7 yet, so the above method does not work for CentOS 7. In case of CentOS 7, you can build and install x264 library from the source, which is explained below. - -### Compile x264 Library from the Source on Debian, Ubuntu or Linux Mint ### - -If the libx264 package that comes with your distribution is not up-to-date, you can compile the latest x264 library from the source as follows. - - $ sudo apt-get install g++ automake autoconf libtool yasm nasm git - $ git clone git://git.videolan.org/x264.git - $ cd x264 - $ ./configure --enable-static --enable-shared - $ make - $ sudo make install - -The x264 library will be installed in /usr/local/lib. To allow the library to be used by other applications, you need to complete the last step: - -Open /etc/ld.so.conf with a text editor, and append the following line. - - $ sudo vi /etc/ld.so.conf - ----------- - - /usr/local/lib - -Finally reload all shared libraries by running: - - $ sudo ldconfig - -### Compile x264 Library from the Source on Fedora, CentOS/RHEL ### - -If the x264 library is not available on your Linux distribution (e.g., CentOS 7) or the x264 library is not up-to-date, you can build the latest x264 library from the source as follows. - - $ sudo yum install gcc gcc-c++ automake autoconf libtool yasm nasm git - $ git clone git://git.videolan.org/x264.git - $ cd x264 - $ ./configure --enable-static --enable-shared - $ make - $ sudo make install - -Finally, to allow other applications to use x264 library installed in /usr/local/lib, add the following line in /etc/ld.so.conf: - - $ sudo vi /etc/ld.so.conf - ----------- - - /usr/local/lib - -and reload all shared libraries by running: - - $ sudo ldconfig - -![](https://farm8.staticflickr.com/7350/16453197512_7c18c5c09e_b.jpg) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/fatal-error-x264-h-no-such-file-or-directory.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://www.videolan.org/developers/x264.html -[2]:http://ask.xmodulo.com/compile-ffmpeg-centos-fedora-rhel.html -[3]:http://xmodulo.com/how-to-install-handbrake-on-linux.html -[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html diff --git a/translated/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md b/translated/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md new file mode 100644 index 0000000000..2ecacac6b1 --- /dev/null +++ b/translated/tech/20150209 Linux FAQs with Answers--How to fix 'fatal error--x264.h--No such file or directory' on Linux.md @@ -0,0 +1,91 @@ +Linux 有问必答:如何在Linux 中修复“fatal error: x264.h: No such file or directory”的错误 +================================================================================ +> **提问**: 我想在Linux中从源码编译视频编码程序。到那时,在编译时,我遇到了一个错误“fatal error: x264.h: No such file or directory”,我该如何修复? + +下面的编译错误错明你系统中没有x264开发库文件。 + + fatal error: x264.h: No such file or directory + +[x264][1]是GNU GPL授权的H.264/MPEG-4 AVC编码库。x264库被广泛用于视频编码/转码程序比如Avidemux、[FFmpeg][2]、 [HandBrake][3]、 OpenShot、 MEncode等等。 + +要解决这个问题,你需要安装x264的开发库文件。你可以这么做。 + +###在 Debian、 Ubuntu 或者 Linux Mint 中安装像x264库和开发文件 ### + +在基于Debian的系统中,x264库已经包含在基础仓库中。可以直接用apt-get来安装。 + + $ sudo apt-get install libx264-dev + +### 在 Fedora、 CentOS/RHEL中安装像x264库和开发文件 ### + +在基于Red Hat的发行版比如Fedora或者CentOS,x264库在免费的RPM Fusion仓库中有。那么,你需要首先安装[RPM Fusion (免费)][4] 。 + +RPM Fusion设置完成后,你可以使用下面的命令安装x264开发文件。 + + $ sudo yum --enablerepo=rpmfusion-free install x264-devel + +注意RPM Fusion仓库在CentOS 7中还没有,因此上面的方法在CentOS 7中还不可行。万一是CentOS 7 ,你可以从源码编译并安装x264,下面会解释的。 + +### 在Debian、 Ubuntu 或者 Linux Mint中源码编译x264库 ### + +如果libx264包在你的发行版中并没有,那么你可以按照下面的方法编译最新的x264库。 + + $ sudo apt-get install g++ automake autoconf libtool yasm nasm git + $ git clone git://git.videolan.org/x264.git + $ cd x264 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +x264库将会安装在/usr/local/lib。要让其他程序可以使用这个库,你需要完成最后一步。 + +打开/etc/ld.so.conf,并添加下面的行。 + + $ sudo vi /etc/ld.so.conf + +---------- + + /usr/local/lib + +最后运行下面的命令重新加载共享库: + + $ sudo ldconfig + +### 在 Fedora, CentOS/RHEL 中源码编译x264库 ### + +如果你Linux的发行版中没有x264库(比如:CentOS 7)或者x264库并不是最新的,你可以如下编译最新的x264库。 + + $ sudo yum install gcc gcc-c++ automake autoconf libtool yasm nasm git + $ git clone git://git.videolan.org/x264.git + $ cd x264 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +最后,要让其他的程序可以访问到位于 /usr/local/lib的x264库,在 /etc/ld.so.conf加入下面的行。 + + $ sudo vi /etc/ld.so.conf + +---------- + + /usr/local/lib + +最后运行下面的命令重新加载共享库: + + $ sudo ldconfig + +![](https://farm8.staticflickr.com/7350/16453197512_7c18c5c09e_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/fatal-error-x264-h-no-such-file-or-directory.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.videolan.org/developers/x264.html +[2]:http://ask.xmodulo.com/compile-ffmpeg-centos-fedora-rhel.html +[3]:http://xmodulo.com/how-to-install-handbrake-on-linux.html +[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html From 6e85872d67f3f83058907306afc20de4309f8660 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 11 Feb 2015 15:05:34 +0800 Subject: [PATCH 271/725] PUB:20141211 How to use matplotlib for scientific plotting on Linux @ideas4u --- ...lotlib for scientific plotting on Linux.md | 164 ++++++++++++++++++ ...lotlib for scientific plotting on Linux.md | 158 ----------------- 2 files changed, 164 insertions(+), 158 deletions(-) create mode 100644 published/20141211 How to use matplotlib for scientific plotting on Linux.md delete mode 100644 translated/tech/20141211 How to use matplotlib for scientific plotting on Linux.md diff --git a/published/20141211 How to use matplotlib for scientific plotting on Linux.md b/published/20141211 How to use matplotlib for scientific plotting on Linux.md new file mode 100644 index 0000000000..00ae499ed7 --- /dev/null +++ b/published/20141211 How to use matplotlib for scientific plotting on Linux.md @@ -0,0 +1,164 @@ +在Linux中使用matplotlib进行科学画图 +================================================================================ + +如果你想要在Linxu中获得一个高效、自动化、高质量的科学画图的解决方案,应该考虑尝试下matplotlib库。Matplotlib是基于python的开源科学测绘包,基于python软件基金会许可证发布。大量的文档和例子、集成了Python和Numpy科学计算包、以及自动化能力,是作为Linux环境中进行科学画图的可靠选择的几个原因。这个教程将提供几个用matplotlib画图的例子。 + +###特性### + +- 支持众多的图表类型,如:bar,box,contour,histogram,scatter,line plots.... +- 基于python的语法 +- 集成Numpy科学计算包 +- 数据源可以是 python 的列表、键值对和数组 +- 可定制的图表格式(坐标轴缩放、标签位置及标签内容等) +- 可定制文本(字体,大小,位置...) +- 支持TeX格式(等式,符号,希腊字体...) +- 与IPython相兼容(允许在 python shell 中与图表交互) +- 自动化(使用 Python 循环创建图表) +- 用Python 的循环迭代生成图片 +- 保存所绘图片格式为图片文件,如:png,pdf,ps,eps,svg等 + +基于Python语法的matplotlib是其许多特性和高效工作流的基础。世面上有许多用于绘制高质量图的科学绘图包,但是这些包允许你直接在你的Python代码中去使用吗?除此以外,这些包允许你创建可以保存为图片文件的图片吗?Matplotlib允许你完成所有的这些任务。从而你可以节省时间,使用它你能够花更少的时间创建更多的图片。 + +###安装### +安装Python和Numpy包是使用Matplotlib的前提,安装Numpy的指引请见[该链接][1]。 + + +可以通过如下命令在Debian或Ubuntu中安装Matplotlib: + + $ sudo apt-get install python-matplotlib + +在Fedora或CentOS/RHEL环境则可用如下命令: + + $ sudo yum install python-matplotlib + + +###Matplotlib 例子### + +本教程会提供几个绘图例子演示如何使用matplotlib: + +- 离散图和线性图 +- 柱状图 +- 饼状图 + +在这些例子中我们将用Python脚本来执行Mapplotlib命令。注意numpy和matplotlib模块需要通过import命令在脚本中进行导入。 + +np为nuupy模块的命名空间引用,plt为matplotlib.pyplot的命名空间引用: + + import numpy as np + import matplotlib.pyplot as plt + + +###例1:离散和线性图### + +第一个脚本,script1.py 完成如下任务: + +- 创建3个数据集(xData,yData1和yData2) +- 创建一个宽8英寸、高6英寸的图(赋值1) +- 设置图画的标题、x轴标签、y轴标签(字号均为14) +- 绘制第一个数据集:yData1为xData数据集的函数,用圆点标识的离散蓝线,标识为"y1 data" +- 绘制第二个数据集:yData2为xData数据集的函数,采用红实线,标识为"y2 data" +- 把图例放置在图的左上角 +- 保存图片为PNG格式文件 + +script1.py的内容如下: + + import numpy as np + import matplotlib.pyplot as plt + + xData = np.arange(0, 10, 1) + yData1 = xData.__pow__(2.0) + yData2 = np.arange(15, 61, 5) + plt.figure(num=1, figsize=(8, 6)) + plt.title('Plot 1', size=14) + plt.xlabel('x-axis', size=14) + plt.ylabel('y-axis', size=14) + plt.plot(xData, yData1, color='b', linestyle='--', marker='o', label='y1 data') + plt.plot(xData, yData2, color='r', linestyle='-', label='y2 data') + plt.legend(loc='upper left') + plt.savefig('images/plot1.png', format='png') + + +所画之图如下: + +![](https://farm8.staticflickr.com/7529/15927002365_f5ae11cf02_z.jpg) + + +###例2:柱状图### + +第二个脚本,script2.py 完成如下任务: + +- 创建一个包含1000个随机样本的正态分布数据集。 +- 创建一个宽8英寸、高6英寸的图(赋值1) +- 设置图的标题、x轴标签、y轴标签(字号均为14) +- 用samples这个数据集画一个40个柱状,边从-10到10的柱状图 +- 添加文本,用TeX格式显示希腊字母mu和sigma(字号为16) +- 保存图片为PNG格式。 + +script2.py代码如下: + + import numpy as np + import matplotlib.pyplot as plt + + mu = 0.0 + sigma = 2.0 + samples = np.random.normal(loc=mu, scale=sigma, size=1000) + plt.figure(num=1, figsize=(8, 6)) + plt.title('Plot 2', size=14) + plt.xlabel('value', size=14) + plt.ylabel('counts', size=14) + plt.hist(samples, bins=40, range=(-10, 10)) + plt.text(-9, 100, r'$\mu$ = 0.0, $\sigma$ = 2.0', size=16) + plt.savefig('images/plot2.png', format='png') + + +结果见如下链接: + +![](https://farm8.staticflickr.com/7531/15304765024_1cc271b6e0_z.jpg) + + +###例3:饼状图### + +第三个脚本,script3.py 完成如下任务: + +- 创建一个包含5个整数的列表 +- 创建一个宽6英寸、高6英寸的图(赋值1) +- 添加一个长宽比为1的轴图 +- 设置图的标题(字号为14) +- 用data列表画一个包含标签的饼状图 +- 保存图为PNG格式 + +脚本script3.py的代码如下: + + import numpy as np + import matplotlib.pyplot as plt + + data = [33, 25, 20, 12, 10] + plt.figure(num=1, figsize=(6, 6)) + plt.axes(aspect=1) + plt.title('Plot 3', size=14) + plt.pie(data, labels=('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5')) + plt.savefig('images/plot3.png', format='png') + + +结果如下链接所示: + +![](https://farm8.staticflickr.com/7504/15926356092_7c3e5217aa_z.jpg) + + +###总结### + +这个教程提供了几个用matplotlib科学画图包进行画图的例子,Matplotlib是在Linux环境中用于解决科学画图的绝佳方案,表现在其无缝地和Python、Numpy连接、自动化能力,和提供多种自定义的高质量的画图产品。matplotlib包的文档和例子详见[这里][2]。 + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/matplotlib-scientific-plotting-linux.html + +作者:[Joshua Reed][a] +译者:[ideas4u](https://github.com/ideas4u) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/joshua +[1]:http://xmodulo.com/numpy-scientific-computing-linux.html +[2]:http://matplotlib.org/ diff --git a/translated/tech/20141211 How to use matplotlib for scientific plotting on Linux.md b/translated/tech/20141211 How to use matplotlib for scientific plotting on Linux.md deleted file mode 100644 index 29c03c4c91..0000000000 --- a/translated/tech/20141211 How to use matplotlib for scientific plotting on Linux.md +++ /dev/null @@ -1,158 +0,0 @@ -+在Linux中使用matplotlib进行科学画图 -+================================================================================ -+ -+如果你想要在Linxu中获得一个高效、自动化、高质量的科学画图的解决方案,那就要考虑一下使用matplotlib库了。Matplotlib是基于python的开源科学测绘包,版权基于python软件基金许可证。大量的文档和例子,整合在Python和Numpy科学计处包中,其自动化性能是少数几个为什么这个包是在Linux环境中进行科学画图的可靠选择。这个教程将提供几个用matplotlib画图的例子。 -+ -+###特性### -+- -+-众多的画图类型,如:bar,box,contour,histogram,scatter,line plots.... -+-基于python的语法 -+-集成Numpy科学计算包 -+-可定制的画图格式(axes scales,tick positions, tick labels...) -+-可定制文本(字体,大小,位置...) -+-TeX 格式化(等式,符号,希腊字体...) -+-与IPython相兼容 -+-自动化 -用Python 的循环迭代生成图片 -+-保存所绘图片格式为图片文件,如:png,pdf,ps,eps,svg等 -+ -+ -+基于Python语法的matplotlib通过许多自身特性和高效工作流基础进行表现。 -+世面上有许多用于绘制高质量图的科学绘图包,但是这些包允许你直接在你的Python代码中去使用吗? -+除那以外,这些包允许你创建可以保存为图片文件的图片吗? -+Matplotlib允许你完成所有的这些任务。 -+你可以期望着节省你的时间,从于使用你能够花更多的时间在如何创建更多的图片。 -+ -+###安装### -+ 安装Python和Numpy包是使用Matplotlib的前提,安装Numpy的指引请见该链接。[here][1]. -+ -+ -+可以通过如下命令在Debian或Ubuntu中安装Matplotlib: -+ -+ $ sudo apt-get install python-matplotlib -+ -+ -+在Fedora或CentOS/RHEL环境则可用如下命令: -+ $ sudo yum install python-matplotlib -+ -+ -+###Matplotlib 例子### -+ -+该教程会提供几个绘图例子演示如何使用matplotlib: -+-离散和线性画图 -+-柱状图画图 -+-饼状图 -+ -+在这些例子中我们将用Python脚本来执行Mapplotlib命令。注意numpy和matplotlib模块需要通过import命令在脚本中进行导入。 -+在命令空间中,np指定为nuupy模块的引用,plt指定为matplotlib.pyplot的引用: -+ import numpy as np -+ import matplotlib.pyplot as plt -+ -+ -+###例1:离散和线性图### -+ -+第一个脚本,script1.py 完成如下任务: -+ -+-创建3个数据集(xData,yData1和yData2) -+-创建一个宽8英寸、高6英寸的图(赋值1) -+-设置图画的标题、x轴标签、y轴标签(字号均为14) -+-绘制第一个数据集:yData1为xData数据集的函数,用圆点标识的离散蓝线,标识为"y1 data" -+-绘制第二个数据集:yData2为xData数据集的函数,采用红实线,标识为"y2 data" -+-把图例放置在图的左上角 -+-保存图片为PNG格式文件 -+ -+script1.py的内容如下: -+ import numpy as np -+ import matplotlib.pyplot as plt -+ -+ xData = np.arange(0, 10, 1) -+ yData1 = xData.__pow__(2.0) -+ yData2 = np.arange(15, 61, 5) -+ plt.figure(num=1, figsize=(8, 6)) -+ plt.title('Plot 1', size=14) -+ plt.xlabel('x-axis', size=14) -+ plt.ylabel('y-axis', size=14) -+ plt.plot(xData, yData1, color='b', linestyle='--', marker='o', label='y1 data') -+ plt.plot(xData, yData2, color='r', linestyle='-', label='y2 data') -+ plt.legend(loc='upper left') -+ plt.savefig('images/plot1.png', format='png') -+ -+ -+所画之图如下: -+![](https://farm8.staticflickr.com/7529/15927002365_f5ae11cf02_z.jpg) -+ -+ -+###例2:柱状图### -+ -+第二个脚本,script2.py 完成如下任务: -+ -+-创建一个包含1000个随机样本的正态分布数据集。 -+-创建一个宽8英寸、高6英寸的图(赋值1) -+-设置图的标题、x轴标签、y轴标签(字号均为14) -+-用samples这个数据集画一个40个柱状,边从-10到10的柱状图 -+-添加文本,用TeX格式显示希腊字母mu和sigma(字号为16) -+-保存图片为PNG格式。 -+ -+script2.py代码如下: -+ import numpy as np -+ import matplotlib.pyplot as plt -+ -+ mu = 0.0 -+ sigma = 2.0 -+ samples = np.random.normal(loc=mu, scale=sigma, size=1000) -+ plt.figure(num=1, figsize=(8, 6)) -+ plt.title('Plot 2', size=14) -+ plt.xlabel('value', size=14) -+ plt.ylabel('counts', size=14) -+ plt.hist(samples, bins=40, range=(-10, 10)) -+ plt.text(-9, 100, r'$\mu$ = 0.0, $\sigma$ = 2.0', size=16) -+ plt.savefig('images/plot2.png', format='png') -+ -+ -+结果见如下链接: -+![](https://farm8.staticflickr.com/7531/15304765024_1cc271b6e0_z.jpg) -+ -+ -+###例3:饼状图### -+ -+第三个脚本,script3.py 完成如下任务: -+ -+-创建一个包含5个整数的列表 -+-创建一个宽6英寸、高6英寸的图(赋值1) -+-添加一个长宽比为1的轴图 -+-设置图的标题(字号为14) -+-用data列表画一个包含标签的饼状图 -+-保存图为PNG格式 -+ -+脚本script3.py的代码如下: -+ import numpy as np -+ import matplotlib.pyplot as plt -+ -+ data = [33, 25, 20, 12, 10] -+ plt.figure(num=1, figsize=(6, 6)) -+ plt.axes(aspect=1) -+ plt.title('Plot 3', size=14) -+ plt.pie(data, labels=('Group 1', 'Group 2', 'Group 3', 'Group 4', 'Group 5')) -+ plt.savefig('images/plot3.png', format='png') -+ -+ -+结果如下链接所示: -+![](https://farm8.staticflickr.com/7504/15926356092_7c3e5217aa_z.jpg) -+ -+ -+###总结### -+ 这个教程提供了几个用matplotlib科学画图包进行画图的例子,Matplotlib是在Linux环境中用于解决科学画图的绝佳方案,表现在其无缝地和Python、Numpy连接,自动化能力,和提供多种自定义的高质量的画图产品。[here][2]. -+ -+matplotlib包的文档和例子详见: -+-------------------------------------------------------------------------------- -+ -+via: http://xmodulo.com/matplotlib-scientific-plotting-linux.html -+ -+作者:[Joshua Reed][a] -+译者:[ideas4u](https://github.com/ideas4u) -+校对:[校对者ID](https://github.com/校对者ID) -+ -+本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -+ -+[a]:http://xmodulo.com/author/joshua -+[1]:http://xmodulo.com/numpy-scientific-computing-linux.html -+[2]:http://matplotlib.org/ From ba830d522c035ed283732a271e033750f1784fbe Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 11 Feb 2015 15:17:24 +0800 Subject: [PATCH 272/725] PUB:20150104 How To Install Websvn In CentOS 7 @GOLinux --- ...50104 How To Install Websvn In CentOS 7.md | 22 +++++-------------- 1 file changed, 5 insertions(+), 17 deletions(-) rename {translated/tech => published}/20150104 How To Install Websvn In CentOS 7.md (80%) diff --git a/translated/tech/20150104 How To Install Websvn In CentOS 7.md b/published/20150104 How To Install Websvn In CentOS 7.md similarity index 80% rename from translated/tech/20150104 How To Install Websvn In CentOS 7.md rename to published/20150104 How To Install Websvn In CentOS 7.md index c636f06da0..b1b8f87407 100644 --- a/translated/tech/20150104 How To Install Websvn In CentOS 7.md +++ b/published/20150104 How To Install Websvn In CentOS 7.md @@ -1,6 +1,6 @@ -CentOS 7中安装Websvn +在 CentOS 7中安装Websvn ================================================================================ -**WebSVN**为你的Subversion提供了一个试图,它设计用来反映Subversion的一整套方法。你可以检查任何文件或目录的日志,以及查看任何指定修改库中修改、添加或删除过的文件列表。你也可以检查同一文件两个版本的不同之处,以便确切地查看某个特性修订版中的修改。 +**WebSVN**为你的Subversion提供了一个视图,其设计用来对应Subversion的各种功能。你可以检查任何文件或目录的日志,以及查看任何指定版本中所修改、添加或删除过的文件列表。你也可以检查同一文件两个版本的不同之处,以便确切地查看某个特定的修订版本的变化。 ### 特性 ### @@ -8,31 +8,25 @@ WebSVN提供了以下这些特性: - 易于使用的界面; - 可自定义的模板系统; -- 文件列表的着色; +- 彩色文件列表; - 过错视图; - 日志信息搜索; - 支持RSS订阅; ### 安装 ### -我使用以下链接来将Subversion安装到CentOS 7。 +我按以下链接来将Subversion安装到CentOS 7。 - [CentOS 7上如何安装Subversion][1] **1 – 下载websvn到/var/www/html。** cd /var/www/html - ----------- - wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip **2 – 解压zip包。** unzip websvn-2.3.3.zip - ----------- - mv websvn-2.3.3 websvn **3 – 安装php到你的系统。** @@ -42,13 +36,7 @@ WebSVN提供了以下这些特性: **4 – 编辑web svn配置。** cd /var/www/html/websvn/include - ----------- - cp distconfig.php config.php - ----------- - vi config.php ---------- @@ -96,7 +84,7 @@ via: http://www.unixmen.com/install-websvn-centos-7/ 作者:[M.el Khamlichi][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d78f7ded4393fe5c0a02a05b3c4ee2213e1acbf2 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 11 Feb 2015 16:48:36 +0800 Subject: [PATCH 273/725] Translating by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index d050368ed1..2096f50b85 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -6,13 +6,13 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7520/16089880989_10173db27b_c.jpg) -用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。Where it shines is via its simple plugin system which adds indispensable tools like Valgrind and CppCheck, and less indispensable like a Tetris mini-game. But my reason for liking it particularly is for its coherent set of handy shortcuts, and the large number of options that never feel too overwhelming. +用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。它闪耀的地方在于它简单的插件系统,里面添加了不可缺少的工具,像Valgrind和CppCheck,还有不太重要的比如像俄罗斯方块这样的小游戏。但是我特别喜欢它的理由是它连贯方便的快捷键设定和大量的却感受不到受压迫的选项设置。 ### 2. Eclipse ### ![](https://farm8.staticflickr.com/7522/16276001255_66235a0a69_c.jpg) -I know that I said only "real out-of-the-box IDE" and not a text editor pumped with plugins, but [Eclipse][3] is a "real out-of-the-box IDE." It's just that Eclipse needs a little [plugin][4] (or a variant) to code in C. So I technically did not contradict myself. And it would have been impossible to make an IDE list without mentioning the behemoth that is Eclipse. Like it or not, Eclipse remains a great tool to code in Java. And thanks to the [CDT Project][5], it is possible to program in C/C++ too. You will benefit from all the power of Eclipse and its traditional features like word completion, code outline, code generator, and advanced refactoring. What it lacks in my opinion is the lightness of Code::Blocks. It is still very heavy and takes time to load. But if your machine can take it, or if you are a hardcore Eclipse fan, it is a very safe option. +我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[plugin][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。And thanks to the [CDT Project][5], it is possible to program in C/C++ too. You will benefit from all the power of Eclipse and its traditional features like word completion, code outline, code generator, and advanced refactoring. What it lacks in my opinion is the lightness of Code::Blocks. It is still very heavy and takes time to load. But if your machine can take it, or if you are a hardcore Eclipse fan, it is a very safe option. ### 3. Geany ### From 713c0374a1c2d33287f3c8d76d1458ce3eaab4a3 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Wed, 11 Feb 2015 16:55:54 +0800 Subject: [PATCH 274/725] Delete 20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md --- ...A New Web Browser Built for Power Users.md | 62 ------------------- 1 file changed, 62 deletions(-) delete mode 100644 sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md diff --git a/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md deleted file mode 100644 index d8df2ec586..0000000000 --- a/sources/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md +++ /dev/null @@ -1,62 +0,0 @@ -Translating by H-mudcup - -Meet Vivaldi — A New Web Browser Built for Power Users -================================================================================ -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) - -**A brand new web browser has arrived this week that aims to meet the needs of power users — and it’s already available for Linux.** - -Vivaldi is the name of this new browser and it has been launched as a tech preview (read: a beta without the responsibility) for 64-bit Linux machines, Windows and Mac. It is built — shock — on the tried-and-tested open-source frameworks of Chromium, Blink and Google’s open-source V8 JavaScript engine (among other projects). - -Does the world really want another browser? Vivaldi, the brain child of former Opera Software CEO Jon von Tetzchner, is less concerned about want and more about need. - -Vivaldi is being built with the sort of features that keyboard preferring tab addicts need. It is not being pitched at users who find Firefox perplexing or whose sole criticism of Chrome is that it moved the bookmarks button. - -That’s not tacky marketing spiel either. Despite the ‘technical preview’ badge it comes with, Vivaldi is already packed with features that demonstrate its power user slant. - -Plenty of folks feel left behind and underserved by the simplified, paired back offerings other software companies are producing. Vivaldi, even at this early juncture, looks well placed to succeed in winning them over. - -### Vivaldi Features ### - -A few of Vivaldi’s key features already present include: - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/quick.jpg) - -**Quick Commands** (Ctrl + Q) is an in-app HUD that lets you quickly filter through settings, options and features, be it opening a bookmark or hiding the status bar, using your keyboard. No clicks needed. - -**Tab Stacks** let you clean up your workspace by grouping separate tabs into one, and then using a keyboard command or the tab preview picker to switch between them. - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/tab-stacks.jpg) - -A collapsible **side panel** that houses extra features (just like old Opera) including a (not yet working) mail client, contacts, bookmarks browser and note taking section that lets you take and annotate screenshots. - -A bunch of other features are on offer too, including customizable keyboard shortcuts, a tabs bar that can be set on any edge of the browser (or hidden entirely), privacy options and a speed dial with folders. - -### Opera Mark II ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/vivaldi-settings-in-ubuntu-750x434.jpg) - -It’s not a leap to see Vivaldi as the true successor to Opera post-Presto (Opera’s old, proprietary rendering engine). Opera (which also pushed out a minor new update today) has split out many of its “power user” features as it chases a lighter, more manageable set of features. - -Vivaldi wants to pick up the baggage Opera has been so keen to offload. And while that might not help it grab marketshare it will see it grab the attention of power users, many of whom will no doubt already be using Linux. - -### Download ### - -Interested in taking it for a spin? You can. Vivaldi is available to download for Windows, Mac and 64-bit Linux distributions. On the latter you have a choice of Debian or RPM installer. - -Bear in mind that it’s not finished and that more features (including extensions, sync and more) are planned for future builds. - -- [Download Vivaldi Tech Preview for Linux][1] - --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power-users - -作者:[Joey-Elijah Sneddon][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:https://vivaldi.com/#Download From d52268115f3edf619cdee12203be13719ebbacc3 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Wed, 11 Feb 2015 16:58:41 +0800 Subject: [PATCH 275/725] =?UTF-8?q?Create=20Meet=20Vivaldi=20=E2=80=94=20A?= =?UTF-8?q?=20New=20Web=20Browser=20Built=20for=20Power=20Users.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... A New Web Browser Built for Power Users.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md diff --git a/translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md b/translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md new file mode 100644 index 0000000000..78122cd7c8 --- /dev/null +++ b/translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md @@ -0,0 +1,60 @@ +有请Vivaldi——全新网页浏览器,为高手级用户而生 +================================================================================ +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) + +**这一周一个为了满足高手级用户的需要而制造出来的全新网页浏览器已然来临——而且它已经可以在Linux上使用了。** + +Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux,Windows和Mac机的技术预览版(请读:无责任测试)发行。它是在 — 震惊 — 尝试且已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上制造的。 + +这个世界真的想要再有一个浏览器吗?Vivaldi——出自Opera软件前首席执行官Jon S.von Tetzchner的想法——不怎么关注所要,更关注所需。 + +Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那种功能。并没有为那些认为Firefox复杂或是对Chrome的唯一批评是它改动了书签按钮的用户而进行修改。 + +这也不是什么俗气的营销噱头。不去看它所戴的‘技术预览版’标签,Vivaldi已经有了明显偏向于高手级用户们的功能。 + +相当多的人觉得自己被其他软件公司所生产的简化的,配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会以至于打败了其他产品。 + +### Vivaldi功能### + +以下是几个Vivaldi已展示过的关键功能: + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/quick.jpg) + +**快捷命令** (Ctrl + Q)是个内置的HUD应用,他可以让你快速的滤过设置,选项和功能,用它打开一个书签或是隐藏状态栏,只需用你的键盘。无需点击。 + +**标签堆** 让你可以通过把多个不同标签分到一组来清理你的工作区,然后可以通过键盘命令或者可预览标签选择器在标签组之间进行切换。 + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/tab-stacks.jpg) + +一个可折叠的**侧边栏**藏有额外功能(就像旧Opera)包括一个(目前还不能工作的)邮箱客户端,链接,书签浏览器和可以让你截屏并做注释的笔记专区 + +还提供了一大堆其他的功能,包括设置键盘快捷键,一个可以被设置在浏览器任何一个边(或完全隐藏)的标签栏,隐私选项和一个快速打开文件夹的功能。 + +### Opera二代的印记 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/vivaldi-settings-in-ubuntu-750x434.jpg) + +把Vivaldi当作Opera post-Presto(Opera旧的拥有版权的引擎)的真正继承者并不是什么值得惊奇的事。当Opera(今天也推出了一个小更新)追求一个更轻、更好管理的一套功能时,已经剔除了它很多“高手级用户”功能。 + +Vivaldi想要捡起Opera曾急于脱手的负担。虽然这么做没有帮他抓到什么预期的市场份额,但是它抓住了高手级用户的眼球。他们大多数无疑已经在使用Linux了。 + +### 下载 ### + +有兴趣尝尝鲜?完全可以。Vivaldi可以下载到Windows,Mac以及64位Linux版本。不久的将来你还能选择Debian或RPM安装器。 + +请记住,它还没有完成,而且更多的功能(包括扩展、同步等等)正计划着在将来加入。 + +- [Download Vivaldi Tech Preview for Linux][1] + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power-users + +作者:[Joey-Elijah Sneddon][a] +译者:[H-mudcup](https://github.com/H-mudcup) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:https://vivaldi.com/#Download From 2c65f54ad9e0be27371eead537830a60671614a7 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Wed, 11 Feb 2015 17:02:46 +0800 Subject: [PATCH 276/725] Create 20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md --- ...A New Web Browser Built for Power Users.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md diff --git a/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md new file mode 100644 index 0000000000..78122cd7c8 --- /dev/null +++ b/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md @@ -0,0 +1,60 @@ +有请Vivaldi——全新网页浏览器,为高手级用户而生 +================================================================================ +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) + +**这一周一个为了满足高手级用户的需要而制造出来的全新网页浏览器已然来临——而且它已经可以在Linux上使用了。** + +Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux,Windows和Mac机的技术预览版(请读:无责任测试)发行。它是在 — 震惊 — 尝试且已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上制造的。 + +这个世界真的想要再有一个浏览器吗?Vivaldi——出自Opera软件前首席执行官Jon S.von Tetzchner的想法——不怎么关注所要,更关注所需。 + +Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那种功能。并没有为那些认为Firefox复杂或是对Chrome的唯一批评是它改动了书签按钮的用户而进行修改。 + +这也不是什么俗气的营销噱头。不去看它所戴的‘技术预览版’标签,Vivaldi已经有了明显偏向于高手级用户们的功能。 + +相当多的人觉得自己被其他软件公司所生产的简化的,配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会以至于打败了其他产品。 + +### Vivaldi功能### + +以下是几个Vivaldi已展示过的关键功能: + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/quick.jpg) + +**快捷命令** (Ctrl + Q)是个内置的HUD应用,他可以让你快速的滤过设置,选项和功能,用它打开一个书签或是隐藏状态栏,只需用你的键盘。无需点击。 + +**标签堆** 让你可以通过把多个不同标签分到一组来清理你的工作区,然后可以通过键盘命令或者可预览标签选择器在标签组之间进行切换。 + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/tab-stacks.jpg) + +一个可折叠的**侧边栏**藏有额外功能(就像旧Opera)包括一个(目前还不能工作的)邮箱客户端,链接,书签浏览器和可以让你截屏并做注释的笔记专区 + +还提供了一大堆其他的功能,包括设置键盘快捷键,一个可以被设置在浏览器任何一个边(或完全隐藏)的标签栏,隐私选项和一个快速打开文件夹的功能。 + +### Opera二代的印记 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/vivaldi-settings-in-ubuntu-750x434.jpg) + +把Vivaldi当作Opera post-Presto(Opera旧的拥有版权的引擎)的真正继承者并不是什么值得惊奇的事。当Opera(今天也推出了一个小更新)追求一个更轻、更好管理的一套功能时,已经剔除了它很多“高手级用户”功能。 + +Vivaldi想要捡起Opera曾急于脱手的负担。虽然这么做没有帮他抓到什么预期的市场份额,但是它抓住了高手级用户的眼球。他们大多数无疑已经在使用Linux了。 + +### 下载 ### + +有兴趣尝尝鲜?完全可以。Vivaldi可以下载到Windows,Mac以及64位Linux版本。不久的将来你还能选择Debian或RPM安装器。 + +请记住,它还没有完成,而且更多的功能(包括扩展、同步等等)正计划着在将来加入。 + +- [Download Vivaldi Tech Preview for Linux][1] + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power-users + +作者:[Joey-Elijah Sneddon][a] +译者:[H-mudcup](https://github.com/H-mudcup) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:https://vivaldi.com/#Download From 2ad4da4b8513a9e27b9a2a0221f54e00734ceae0 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Wed, 11 Feb 2015 17:03:03 +0800 Subject: [PATCH 277/725] =?UTF-8?q?Delete=20Meet=20Vivaldi=20=E2=80=94=20A?= =?UTF-8?q?=20New=20Web=20Browser=20Built=20for=20Power=20Users.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... A New Web Browser Built for Power Users.md | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md diff --git a/translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md b/translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md deleted file mode 100644 index 78122cd7c8..0000000000 --- a/translated/share/Meet Vivaldi — A New Web Browser Built for Power Users.md +++ /dev/null @@ -1,60 +0,0 @@ -有请Vivaldi——全新网页浏览器,为高手级用户而生 -================================================================================ -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) - -**这一周一个为了满足高手级用户的需要而制造出来的全新网页浏览器已然来临——而且它已经可以在Linux上使用了。** - -Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux,Windows和Mac机的技术预览版(请读:无责任测试)发行。它是在 — 震惊 — 尝试且已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上制造的。 - -这个世界真的想要再有一个浏览器吗?Vivaldi——出自Opera软件前首席执行官Jon S.von Tetzchner的想法——不怎么关注所要,更关注所需。 - -Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那种功能。并没有为那些认为Firefox复杂或是对Chrome的唯一批评是它改动了书签按钮的用户而进行修改。 - -这也不是什么俗气的营销噱头。不去看它所戴的‘技术预览版’标签,Vivaldi已经有了明显偏向于高手级用户们的功能。 - -相当多的人觉得自己被其他软件公司所生产的简化的,配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会以至于打败了其他产品。 - -### Vivaldi功能### - -以下是几个Vivaldi已展示过的关键功能: - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/quick.jpg) - -**快捷命令** (Ctrl + Q)是个内置的HUD应用,他可以让你快速的滤过设置,选项和功能,用它打开一个书签或是隐藏状态栏,只需用你的键盘。无需点击。 - -**标签堆** 让你可以通过把多个不同标签分到一组来清理你的工作区,然后可以通过键盘命令或者可预览标签选择器在标签组之间进行切换。 - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/tab-stacks.jpg) - -一个可折叠的**侧边栏**藏有额外功能(就像旧Opera)包括一个(目前还不能工作的)邮箱客户端,链接,书签浏览器和可以让你截屏并做注释的笔记专区 - -还提供了一大堆其他的功能,包括设置键盘快捷键,一个可以被设置在浏览器任何一个边(或完全隐藏)的标签栏,隐私选项和一个快速打开文件夹的功能。 - -### Opera二代的印记 ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/vivaldi-settings-in-ubuntu-750x434.jpg) - -把Vivaldi当作Opera post-Presto(Opera旧的拥有版权的引擎)的真正继承者并不是什么值得惊奇的事。当Opera(今天也推出了一个小更新)追求一个更轻、更好管理的一套功能时,已经剔除了它很多“高手级用户”功能。 - -Vivaldi想要捡起Opera曾急于脱手的负担。虽然这么做没有帮他抓到什么预期的市场份额,但是它抓住了高手级用户的眼球。他们大多数无疑已经在使用Linux了。 - -### 下载 ### - -有兴趣尝尝鲜?完全可以。Vivaldi可以下载到Windows,Mac以及64位Linux版本。不久的将来你还能选择Debian或RPM安装器。 - -请记住,它还没有完成,而且更多的功能(包括扩展、同步等等)正计划着在将来加入。 - -- [Download Vivaldi Tech Preview for Linux][1] - --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power-users - -作者:[Joey-Elijah Sneddon][a] -译者:[H-mudcup](https://github.com/H-mudcup) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:https://vivaldi.com/#Download From 58f75899dcf46dbfbd44d64cf7d4314201757571 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 11 Feb 2015 17:10:23 +0800 Subject: [PATCH 278/725] =?UTF-8?q?20150211-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...t Known Linux Archive or Compress Tools.md | 229 ++++++++++++++++++ ...umble in Ubuntu an Opensource VoIP Apps.md | 78 ++++++ ...igration From MySQL To MariaDB On Linux.md | 169 +++++++++++++ 3 files changed, 476 insertions(+) create mode 100644 sources/tech/20150211 Best Known Linux Archive or Compress Tools.md create mode 100644 sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md create mode 100644 sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md diff --git a/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md b/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md new file mode 100644 index 0000000000..3d3960cf4d --- /dev/null +++ b/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md @@ -0,0 +1,229 @@ +Best Known Linux Archive / Compress Tools +================================================================================ +Sending and receiving large files and pictures over the internet is a headache many times. Compression and decompression tools are meant to address this problem. Lets take a quick overview of a few open source tools that are available to make our jobs simpler. + +Tar +gzip, gunzip +bzip2, bunzip2 +7-Zip + +### Tar ### + +Tar is derived from 'Tape archiver' as this was initially used for archiving and storing files on magnetic tapes. It is a GNU software. It can compress a set of files (archives), extract them and manipulate those which already exist. It is useful for storing, backing up and transporting files. Tar can preserve file and directory structure while creating the archives. Files archived using tar have '.tar' extensions. + +Basic Usage + +#### a) Creating an archive (c / --create) #### + + tar --create --verbose --file=archive.tar file1 file2 file3 + +OR + + tar cvf archive.tar file1 file2 file3 + +![tar cvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-cvf.png) + +creating an archive + +#### b) Listing an archive ( t / --list) #### + + tar --list archive.tar + +![tar tvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-tvf.png) + +Listing the contents + +#### c) Extracting an archive (x / --extract) #### + + tar xvf archive.tar + + tar xvf archive.tar --wildcards '*.c' - extracts files with only *.c extension from the archive. + +![tar xvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-xvf.png) + +Extracting files + +![tar xvf --wildcards](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-wildcard.png) + +Extract only the required files + +#### d) Updating an archive ( u / --update) #### + + tar uvf archive.tar newfile.c - updates the archive by adding newfile.c if its version is newer than the existing one. + +![tar uvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-uvf.png) + +Updating an archive + +#### e) Delete from an archive (--delete) #### + + tar--delete -f archive.tar file1.c - deletes 'file1.c' from the tar ball 'archive.tar' + +![tar --delete](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-delete.png) + +Deleting files + +Refer to [tar home page][1] for its detailed usage + +### Gzip / Gunzip ### + +Gzip stands for GNU zip. It is a compression utility that is commonly available in Linux operating system. Compressed files have an extension of '*.gz' + +**Basic Usage** + +#### a) Compressing files #### + + gzip file(s) + +Each file gets compressed individually + +![gzip](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip.png) + +Compress files + +This generally deletes the original files after compression. We can keep the original file by using the -c option. + + gzip -c file > file.gz + +![gzip-c](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-c.png) + +Keep original files after compressing + +We can also compress a group of files into a single file + + cat file1 file2 file3 | gzip > archieve.gz + +![gz group](http://blog.linoxide.com/wp-content/uploads/2015/01/gz-group.png) + +Compressing a group of files + +#### b) Checking compression ratio #### + +Compression ratio of the compressed file(s) can be verified using the '-l' option. + + gzip -l archieve.gz + +![gzip -l](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-l.png) + +Checking compression ratio + +#### c) Unzipping files #### + +Gunzip is used for unzipping files. Here also, original files are deleted after decompression. Use the -c option to retain original files. + + gunzip -c archieve.gz + +![gunzip -c](http://blog.linoxide.com/wp-content/uploads/2015/01/gunzip-c.png) + +Unzipping files + +Using '-d' option with gzip command has the same effect of gunzip on compressed files. + +More details can be obtained from [gzip home page][2] + +### Bzip2 / Bunzip2 ### + +[Bzip2][3] is also a compression tool like gzip but can compress files to smaller sizes than that is possible with other traditional tools. But the drawback is that it is slower than gzip. + +**Basic Usage** + +#### a) File Compression #### + +Generally, no options are used for compression and the files to be compressed are passed as arguments. Each file gets compressed individually and compressed files will have the extension 'bz2'. + + bzip2 file1 file2 file3 + +![bzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2.png) + +File Compression + +Use '-k' option to keep the original files after compression / decompression. + +![bzip2 -k](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-k.png) + +Retaining original files after compression + +'-d' option is used for forced decompression. + +![bzip2 -d](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-d.png) + +Delete files using -d option + +#### b) Decompression #### + + bunzip2 filename + +![bunzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bunzip2.png) + +Decompressing files + +bunzip2 can decompress files with extensions bz2, bz, tbz2 and tbz. Files with tbz2 and tbz will end up with '.tar' extension after decompression. + + bzip2 -dc performs the function of decompressing files to the stdout + +### 7-zip ### + +[7-zip][4] is another open source file archiver. It uses 7z format which is a new compression format and provides high-compression ratio. Hence, it is considered to be better than the previously mentioned compression tools. It is available under Linux as p7zip package. The package includes three binaries – 7z, 7za and 7zr. Refer to the [p7zip wiki][5] for differences between these binaries. In this article, we will be using 7zr to explain the usage. Archived files will have '.7z' extension. + +**Basic usage** + +#### a) Creating an archive #### + + 7zr a archive-name.7z file-name(s) / directory-name(s) + +![7zr a](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-a.png) + +Creating an archive + +#### b) Listing an archive #### + + 7zr l archive-name.7z + +![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-l.png) + +Listing an archive + +#### c) Extracting an archive #### + + 7zr e archive-name.7z + +![7zr e](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-e.png) + +Extracting an archive + +#### d) Updating an archive #### + + 7zr u archive-name.7z new-file + +![7zr u](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-u.png) + +Updating an archive + +#### e) Deleting files from an archive #### + + 7zr d archive-name.7z file-to-be-deleted + +![7zr d](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d.png) + +Deleting files + +![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d-l.png) + +Verifying file deletion + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/tools/linux-compress-decompress-tools/ + +作者:[B N Poornima][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/bnpoornima/ +[1]:http://www.gnu.org/software/tar/ +[2]:http://www.gzip.org/ +[3]:http://www.bzip.org/ +[4]:http://www.7-zip.org/ +[5]:https://wiki.archlinux.org/index.php/p7zip \ No newline at end of file diff --git a/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md new file mode 100644 index 0000000000..fffe871da6 --- /dev/null +++ b/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -0,0 +1,78 @@ +Install Mumble in Ubuntu an Opensource VoIP Apps +================================================================================ +Mumble is a free and open source voice over IP (VoIP) application, released under the new BSD license, primarily designed for use by gamers and it's similar to programs such as TeamSpeak and Ventrilo. It uses a server to witch people can connect with a client to talk to each other. + +It offers the following great features: + +- low latency, very important for gaming +- offers in-game overlay so you can see who is talking and positional audio to hear the players from where they are located +- has encrypted communications so you can stay private and secure +- it also offers a few nice configuration interface that are easy to use +- very stable and good on resource usage for your server + +### Install Mumble ### + +[Mumble][1] has become very popular and is now present in the software repositories of the major Linux distributions and this makes it easy to install and setup. In Ubuntu you can use the command line to install it with apt-get by running the following command: + + $ sudo apt-get install mumble-server + +![mumble install](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-install.jpg) + +This will install the server (also called Murmur) on your server. + +### Configuring Mumble ### + +To setup Mumble you will need to run the following command: + +$ sudo dpkg-reconfigure mumble-server + +The following questions will pop-up: + +![mumble q1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q1.jpg) + +Pick Yes to have mumble start when your server boots, next it will ask if you wish to run it in a high-priority mode that will ensure lower latency, it's a good idea to have it run it like that for the best performance: + +![mumble q2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q2.jpg) + +It will then require you to introduce a password for the administrator user of the new mumble server, you will need to remember this password for when you will log-in. + +![mumble q3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q3.jpg) + +### Installing Mumble Client ### + +The client can be installed on most major platforms like Windows, Mac OS X and Linux. We will cover the installation and configuration on Ubuntu Linux, to install it you can use the Software Center or run the following command: + + $ sudo apt-get install mumble + +When you first run Mumble it will present you with a wizard to help you configure your audio input and output to make the best of the client. It will first ask you what sound device and microphone to use: + +![mumble client 1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-1.jpg) + +Then it will help you calibrate the devices: + +![mumble client 2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-2.jpg) + +And since mumble encrypts all the communication it will ask you to also create a certificate: + +![mumble client 3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-3.jpg) + +After you finish with the wizard you can add your first server and connect to it the dialog will look like this: + +![mumble add server](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-add-server.jpg) + +First enter a label, this can be anything you wish to remember the server by, next add the address and port of the server, and finally use "SuperUser" as user and the password you used when you configured the mumble server. + +You can now connect to the server and enjoy all of the features while you play online or talk to your friends or partners. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/install-mumble-ubuntu/ + +作者:[Adrian Dinu][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/adriand/ +[1]:http://wiki.mumble.info/wiki/Main_Page \ No newline at end of file diff --git a/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md new file mode 100644 index 0000000000..1588c979a4 --- /dev/null +++ b/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md @@ -0,0 +1,169 @@ +Simple Steps Migration From MySQL To MariaDB On Linux +================================================================================ +Hi all, this tutorial is all gonna be about how to migrate from MySQL to MariaDB on Linux Server or PC. So, you may ask why should we really migrate from MySQL to MariaDB for our database management. Here, below are the reasons why you should really need to migrate your database management system from MySQL to MariaDB. + +### Why should I use MariaDB instead of MySQL? ### + +MariaDB is an enhanced drop-in replacement and community-developed fork of the MySQL database system. It was developed by MariaDB foundation, and is being led by original developers of MySQL. Working with MariaDB is entirely same as MySQL. After Oracle bought MySQL, it is not free and open source anymore, but **MariaDB is still free and open source**. Top Websites like Google, Wikipedia, Linkedin, Mozilla and many more migrated to MariaDB. Its features are + +- Backwards compatible with MySQL +- Forever open source +- Maintained by MySQL's creator +- More cutting edge features +- More storage engines +- Large websites have switched + +Now, lets migrate to MariaDB. + +**For the testing purpose**, let us create a sample database called **linoxidedb** . + +Log in to MySQL as root user using the following command: + + $ mysql -u root -p + +Enter the mysql root user password. You’ll be redirected to the **mysql prompt**. + +**Create test databases:** + +Enter the following commands from mysql prompt to create test databases. + + mysql> create database linoxidedb; + +To view the list of available databases, enter the following command: + + mysql> show databases; + +![creating test databases](http://blog.linoxide.com/wp-content/uploads/2015/01/creating-test-databases.png) + +As see above, we have totally 5 databases including the newly created database linoxidedb . + + mysql> quit + +Now, we'll migrate the created databases from MySQL to MariaDB. + +Note: This tutorial is not necessary for CentOS, fedora based distribution of Linux because MariaDB is automatically installed instead of MySQL which requires no need to backup the existing databases, you just need to update mysql which will give you mariadb. + +### 1. Backup existing databases ### + +Our first important step is to create a backup of existing databases. To do that, we'll enter the following command from the **Terminal (not from MySQL prompt)**. + + $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql + +Oops! We encountered an error. No worries, it can be fixed. + + $ mysqldump: Error: Binlogging on server not active + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/mysqldump-error.png) +mysqldump error + +To fix this error, we have to do a small modification in **my.cnf** file. + +Edit my.cnf file: + + $ sudo nano /etc/mysql/my.cnf + +Under [mysqld] section, add the following parameter. + +**log-bin=mysql-bin** + +![configuring my.cnf](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-my.cnf_.png) + +Now, after done save and exit the file. Then, we'll need to restart mysql server. To do that please execute the below commands. + + $ sudo /etc/init.d/mysql restart + +Now, re-run the mysqldump command to backup all databases. + + $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/crearing-bakup-file.png) +dumping databases + +The above command will backup all databases, and stores them in **backupdatabase.sql** in the current directory. + +### 2. Uninstalling MySQL ### + +First of all, we'll want to **backup the my.cnf file to a safe location**. + +**Note**: The my.cnf file will not be deleted when uninstalling MySQL packages. We do it for the precaution. During MariaDB installation, the installer will ask us to keep the existing my.cnf(old backup) file or to use the package containers version (i.e new one). + +To backup the my.cnf file, please enter the following commands in a shell or terminal. + + $ sudo cp /etc/mysql/my.cnf my.cnf.bak + +To stop mysql service, enter the following command from your Terminal. + + $ sudo /etc/init.d/mysql stop + +Then, remove mysql packages. + + $ sudo apt-get remove mysql-server mysql-client + +![uninstalling mysql](http://blog.linoxide.com/wp-content/uploads/2015/01/uninstalling-mysql.png) + +### 3. Installing MariaDB ### + +Here are the commands to run to install MariaDB on your Ubuntu system: + + $ sudo apt-get install software-properties-common + $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db + # sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main' + +![adding mariadb repo](http://blog.linoxide.com/wp-content/uploads/2015/01/adding-repo-mariadb.png) + +Once the key is imported and the repository added you can install MariaDB with: + + $ sudo apt-get update + $ sudo apt-get install mariadb-server + +![installing mariadb](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-mariadb.png) + +![my.conf configuration prompt](http://blog.linoxide.com/wp-content/uploads/2015/01/my.conf-configuration-prompt.png) + +We should remember that during MariaDB installation, the installer will ask you either to use the existing my.cnf(old backup) file, or use the package containers version (i.e new one). You can either use the old my.cnf file or the package containers version. If you want to use the new my.cnf version, you can restore the contents of older my.cnf (We already have copied this file to safe location before) later ie my.cnf.bak . So, I will go for default which is N, we'll press N then. For other versions, please refer the [MariaDB official repositories page][2]. + +### 4. Restoring Config File ### + +To restore my.cnf from my.cnf.bak, enter the following command in Terminal. We have the old as my.cnf.bak file in our current directory, so we can simply copy the file using the following command: + + $ sudo cp my.cnf.bak /etc/mysql/my.cnf + +### 5. Importing Databases ### + +Finally, lets import the old databases that we created before. To do that, we'll need to run the following command. + + $ mysql -u root -p < backupdatabase.sql + +That’s it. We have successfully imported the old databases. + +Let us check if the databases are really imported. To do that, we'll wanna log in to mysql prompt using command: + + $ mysql -u root -p + +![importing database](http://blog.linoxide.com/wp-content/uploads/2015/01/importing-database.png) + +Now, to check whether the databases are migrated to MariaDB please run "**show databases**;" command inside the MarianDB prompt without quotes("") as + + mariaDB> show databases; + +![mysql to mariadb database migrated](http://blog.linoxide.com/wp-content/uploads/2015/01/maria-database-migrated.png) + +As you see in the above result all old databases including our very linoxidedb has been successfully migrated. + +### Conclusion ### + +Finally, we have successfully migrated our databases from MySQL to MariaDB Database Management System. MariaDB is far more better than MySQL. Though MySQL is still faster than MariaDB in performance but MariaDB is far more better because of its additional features and license. MariaDB is a Free and Open Source Software (FOSS) and will be FOSS forever but MySQL has many additional plugins, etc non-free and there is no proper public roadmap and won't be FOSS in future. If you have any questions, comments, feedback to us, please don't hesitate to write on the comment box below. Thank You ! And Enjoy MariaDB. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://mariadb.org/ +[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi \ No newline at end of file From 497b4ce51495ae9100ffb8e41cf0bc2f62e0b138 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 11 Feb 2015 17:19:27 +0800 Subject: [PATCH 279/725] =?UTF-8?q?20150211-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Server Against the GHOST Vulnerability.md | 44 ++++++++++++ ...b Based Monitoring tool) on Ubntu 14.10.md | 70 +++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md create mode 100644 sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md diff --git a/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md b/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md new file mode 100644 index 0000000000..a78b786606 --- /dev/null +++ b/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md @@ -0,0 +1,44 @@ +How To Protect Ubuntu Server Against the GHOST Vulnerability +================================================================================ +On January 27, 2015, a GNU C Library (glibc) vulnerability, referred to as the GHOST vulnerability, was announced to the general public. In summary, the vulnerability allows remote attackers to take complete control of a system by exploiting a buffer overflow bug in glibc's GetHOST functions.Check more details from [here][1] + +The GHOST vulnerability can be exploited on Linux systems that use versions of the GNU C Library prior to glibc-2.18. That is, systems that use an unpatched version of glibc from versions 2.2 to 2.17 are at risk. + +### Check System Vulnerability ### + +You can use the following command to check the glib version + + ldd --version + +### Output ### + +ldd (Ubuntu GLIBC 2.19-10ubuntu2) **2.19** +Copyright (C) 2014 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +Written by Roland McGrath and Ulrich Drepper. + +The glib version should be above 2.17 and from the output we are running 2.19.If you are seeing glib version between 2.2 to 2.17 then you need to run the following commands + + sudo apt-get update + + sudo apt-get dist-upgrade + +After the installation you need to reboot the server using the following command + + sudo reboot + +After reboot use the same command again and check the glib version. + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/how-to-protect-ubuntu-server-against-the-ghost-vulnerability.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://chargen.matasano.com/chargen/2015/1/27/vulnerability-overview-ghost-cve-2015-0235.html \ No newline at end of file diff --git a/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md b/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md new file mode 100644 index 0000000000..67d9d550e5 --- /dev/null +++ b/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md @@ -0,0 +1,70 @@ +Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10 +================================================================================ +A low-overhead monitoring web dashboard for a GNU/Linux machine. Simply drop-in the app and go!.Linux Dash's interface provides a detailed overview of all vital aspects of your server, including RAM and disk usage, network, installed software, users, and running processes. All information is organized into sections, and you can jump to a specific section using the buttons in the main toolbar. Linux Dash is not the most advanced monitoring tool out there, but it might be a good fit for users looking for a slick, lightweight, and easy to deploy application. + +### Linux-Dash Features ### + +A beautiful web-based dashboard for monitoring server info + +Live, on-demand monitoring of RAM, Load, Uptime, Disk Allocation, Users and many more system stats + +Drop-in install for servers with Apache2/nginx + PHP + +Click and drag to re-arrange widgets + +Support for wide range of linux server flavors + +### List of Current Widgets ### + +- General info +- Load Average +- RAM +- Disk Usage +- Users +- Software +- IP +- Internet Speed +- Online +- Processes +- Logs + +### Install Linux-dash on ubuntu server 14.10 ### + +First you need to make sure you have [Ubuntu LAMP server 14.10][1] installed and Now you have to install the following package + + sudo apt-get install php5-json unzip + +After the installation this module will enable for apache2 so you need to restart the apache2 server using the following command + + sudo service apache2 restart + +Now you need to download the linux-dash package and install + + wget https://github.com/afaqurk/linux-dash/archive/master.zip + + unzip master.zip + + sudo mv linux-dash-master/ /var/www/html/linux-dash-master/ + +Now you need to change the permissions using the following command + + sudo chmod 755 /var/www/html/linux-dash-master/ + +Now you need to go to http://serverip/linux-dash-master/ you should see similar to the following output + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/02/1.png) + +![](http://www.ubuntugeek.com/wp-content/uploads/2015/02/2.png) + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/install-linux-dash-web-based-monitoring-tool-on-ubntu-14-10.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://www.ubuntugeek.com/step-by-step-ubuntu-14-10-utopic-unicorn-lamp-server-setup.html \ No newline at end of file From e6322d796083f3745a1ecfb681145daa291c6268 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 17:52:27 +0800 Subject: [PATCH 280/725] Update 20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md --- ...esktop on Ubuntu 14.10 or Linux Mint 17.md | 73 ++++++++++--------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md index a1ae7919c3..f311e41565 100644 --- a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md +++ b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md @@ -1,90 +1,91 @@ -Translating by martin. - -Install the Gnome Flashback classical desktop on Ubuntu 14.10/Linux Mint 17 +在Ubuntu14.10/Mint7上安装Gnome Flashback classical桌面 ================================================================================ -The [Gnome Flashback][1] desktop environment is a simple and great way to get back the old style classical desktop if you do not like Unity desktop, like many. +如果你不喜欢现在的Unity桌面,[Gnome Flashback][1] 桌面环境是一个简单的并且很棒的选择,让你能找回曾经经典的桌面。 -Gnome Flashback is based on GTK 3 and provides a desktop interface visually similar to the old gnome desktop. +Gnome Flashback基于GTK3并提供与原先gnome桌面视觉上相似的界面。 -Another alternative to gnome flashback is the MATE desktop from linux mint and XFCE desktop, but both of them are based on gtk 2. +gnome flashback的另一个改变是采用了源自mint和xface的MATE桌面,但无论mint还是xface都是基于gtk2的。 -### Install Gnome Flashback ### +### 安装 Gnome Flashback ### -Install the following package on your Ubuntu system and you are done. +在你的ubuntu上安装以下包即可: $ sudo apt-get install gnome-session-flashback -Now logout and at the login screen press the settings button on the box that asks for password. There would be 2 options, Gnome Flashback (Metacity) and Gnome Flashback (Compiz). +然后注销到达登录界面,单击密码输入框右上角的徽标型按钮,即可选择桌面环境。可供选择的有Gnome Flashback (Metacity) 会话模式和Gnome Flashback (Compiz)会话模式。 -Metacity is lighter and faster, whereas Compiz gets you the more fancy desktop effects. Here is a screenshot of my gnome flashback desktop. +Metacity更轻更快,而Compiz则能带给你更棒的桌面效果。下面是我使用gnome flashback桌面的截图。 -It uses a wallpaper from elementary OS and also Plank dock with no bottom panel. This tutorial explains every bit of it. +桌面采用了elementary OS的壁纸和Plank dock并且移除了底部面板。这些都会在这篇教程中涉及到。 ![ubuntu gnome flashback](http://www.binarytides.com/blog/wp-content/uploads/2015/02/ubuntu-gnome-flashback.png) -After installing Gnome Flashback desktop you need to do a couple of more things to finetune it. +在安装好gnome flashback桌面以后也许你对效果还不满意,这样你可能需要执行接下来的一系列操作来对它进行微调。 -### 1. Install Gnome Tweak Tool ### +### 1. 安装 Gnome Tweak Tool ### -The Gnome Tweak Tool allows you to customize things like fonts, themes etc, that are otherwise difficult or impossible with the "unity-control-center" tool of Unity desktop. +Gnome Tweak Tool能够帮助你定制比如字体、主题等,那些在Unity桌面的控制中心十分困难或是不可能完成的任务。 $ sudo apt-get install gnome-tweak-tool -Find it in Applications > System Tools > Preferences > Tweak Tool +启动按步骤 应用程序 > 系统工具 > 首选项 > Tweak Tool -### 2. Add applets to panel ### +### 2. 在面板上添加小应用 ### -By default right clicking on the panels would not have any effect. Press the Alt+Super (windows) key on your keyboard while you right click on the panels and you would get the relevant options to customize the panel. +默认的右键点击面板是没有效果的。你可以尝试在右键点击面板的同时按住键盘上的Alt+Super (win)键,这样定制面板的相关选项将会出现。 -You can modify the panel, remove it and also add applets to it. In this example we shall remove the bottom panel and replace it with Plank dock. +你可以修改或删除面板并在上面添加些小应用。在这个例子中我们移除了底部面板,并用Plank dock来代替它的位置。 -Add a datetime applet on the top panel at the middle. Configure it to display the date time and weather conditions. +在顶部面板的中间添加一个显示时间的小应用。通过配置使它显示时间和天气。 -Also add a workspace switcher applet to the top panel and create as many workspaces as you need. +同样的添加一个工作空间切换器到顶部面板,并创建合适个数的工作空间。 -### 3. Take window title bar buttons to the right ### +### 3. 将窗口标题栏的按钮右置 ### -On Ubuntu the minimise, maximise and close buttons on the window title bar are on the left by default. It needs a small hack to get them to the right. +在ubuntu中,最小化、最大化和关闭按钮默认实在标题栏的左侧的。需要稍作手脚才能让他们乖乖回到右边去。 -To take the window buttons to the right use the following command, which I found at askubuntu. +想让窗口的按钮到右边可以使用下面的命令,这是我在askubuntu上找到的。 $ gsettings set org.gnome.desktop.wm.preferences button-layout 'menu:minimize,maximize,close' -### 4. Install Plank dock ### +### 4.安装 Plank dock ### -The plank dock sits at the bottom and holds launchers for applications and window launchers for running applications. It hides itself when not necessary and shows up again when needed. Its the same dock as used by elementary OS. +plank dock位于屏幕底部用于启动应用和切换打开的窗口。会在必要的时间隐藏自己,并在需要的时候出现。elementary OS使用的dock就是plank dock。 -Run the following commands +运行以下命令安装 $ sudo add-apt-repository ppa:ricotz/docky -y $ sudo apt-get update $ sudo apt-get install plank -y -Find it in Applications > Accessories > Plank. To configure it to start automatically with the system, go to System Tools > Preferences > Startup Applications and add the "plank" command to the list. +现在启动 应用程序 > 附件 > Plank。若想让它开机自动启动,找到 应用程序 > 系统工具 > 首选项 > 启动应用程序 并将“plank”的命令加到列表中。 -### 5. Install Conky system monitor ### +### 5. 安装 Conky 系统监视器 ### -Conky is a nice way to decorate your desktop with system statistics like cpu and memory usage. It is lightweight and works most of the time without any hassles. +Conky非常酷,它用系统的中如CPU和内存使用率的统计值来装饰桌面。它不太占资源并且运行的大部分时间都不惹麻烦。 -Run the following commands - +运行如下命令安装 $ sudo apt-add-repository -y ppa:teejee2008/ppa $ sudo apt-get update $ sudo apt-get install conky-manager -Now launch Applications > Accessories > Conky Manager and select the widget you want to display on your desktop. Conky Manager also allows you to configure it to launch at system startup. +现在启动 应用程序 > 附件 > Conky Manager 选择你想在桌面上显示的部件。Conky Manager同样可以配置到启动项中。 -### 6. Install CompizConfig Settings Manager ### +### 6. 安装CCSM ### -If you wish to use Gnome Flashback (Compiz) session then it would be useful to use the compiz settings manager to configure desktop effects. Install it with the following command +如果你更愿意使用Gnome Flashback (Compiz),那么CCSM将是你配置桌面特效的得力助手。 + +运行以下命令安装 $ sudo apt-get install compizconfig-settings-manager -Now launch it from System Tools > Preferences > CompizConfig Settings Manager. +启动按步骤 应用程序 > 系统工具 > 首选项 > CompizConfig Settings Manager. -> It so happened inside Virtualbox that, in the compiz session window decorations went missing. To fix it, launch Compiz settings and enable the "Copy to texture" plugin and then logout and login back. It should be fixed. -However the Compiz session is slower than the Metacity session. +>在虚拟机中经常会发生compiz会话中装饰窗口消失。可以通过启动Compiz设置,在打开"Copy to texture",注销后重新登录即可。 + +不过值得一提的是Compiz 会话会比Metacity慢。 -------------------------------------------------------------------------------- From 40951b7dd249c6702bb948ed72ac1d62270e512c Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 17:53:57 +0800 Subject: [PATCH 281/725] Update 20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md --- ...ck classical desktop on Ubuntu 14.10 or Linux Mint 17.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md index f311e41565..de5283e344 100644 --- a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md +++ b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md @@ -52,7 +52,7 @@ Gnome Tweak Tool能够帮助你定制比如字体、主题等,那些在Unity plank dock位于屏幕底部用于启动应用和切换打开的窗口。会在必要的时间隐藏自己,并在需要的时候出现。elementary OS使用的dock就是plank dock。 -运行以下命令安装 +运行以下命令安装: $ sudo add-apt-repository ppa:ricotz/docky -y $ sudo apt-get update @@ -64,7 +64,7 @@ plank dock位于屏幕底部用于启动应用和切换打开的窗口。会在 Conky非常酷,它用系统的中如CPU和内存使用率的统计值来装饰桌面。它不太占资源并且运行的大部分时间都不惹麻烦。 -运行如下命令安装 +运行如下命令安装: $ sudo apt-add-repository -y ppa:teejee2008/ppa $ sudo apt-get update @@ -76,7 +76,7 @@ Conky非常酷,它用系统的中如CPU和内存使用率的统计值来装饰 如果你更愿意使用Gnome Flashback (Compiz),那么CCSM将是你配置桌面特效的得力助手。 -运行以下命令安装 +运行以下命令安装: $ sudo apt-get install compizconfig-settings-manager From 81a6611755d97e5845bf7669e6ee5ac0fecfb196 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 11 Feb 2015 17:55:07 +0800 Subject: [PATCH 282/725] =?UTF-8?q?20150211-4=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ng Mod_Security and Mod_evasive Modules.md | 270 ++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 sources/tech/20150211 Protect Apache Against Brute Force or DDoS Attacks Using Mod_Security and Mod_evasive Modules.md diff --git a/sources/tech/20150211 Protect Apache Against Brute Force or DDoS Attacks Using Mod_Security and Mod_evasive Modules.md b/sources/tech/20150211 Protect Apache Against Brute Force or DDoS Attacks Using Mod_Security and Mod_evasive Modules.md new file mode 100644 index 0000000000..29bb770e5d --- /dev/null +++ b/sources/tech/20150211 Protect Apache Against Brute Force or DDoS Attacks Using Mod_Security and Mod_evasive Modules.md @@ -0,0 +1,270 @@ +Protect Apache Against Brute Force or DDoS Attacks Using Mod_Security and Mod_evasive Modules +================================================================================ +For those of you in the hosting business, or if you’re hosting your own servers and exposing them to the Internet, securing your systems against attackers must be a high priority. + +mod_security (an open source intrusion detection and prevention engine for web applications that integrates seamlessly with the web server) and mod_evasive are two very important tools that can be used to protect a web server against brute force or (D)DoS attacks. + +mod_evasive, as its name suggests, provides evasive capabilities while under attack, acting as an umbrella that shields web servers from such threats. + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Install-Mod_Security-Mod_evasive-in-CentOS.jpg) +Install Mod_Security and Mod_Evasive to Protect Apache + +In this article we will discuss how to install, configure, and put them into play along with Apache on RHEL/CentOS 6 and 7 as well as Fedora 21-15. In addition, we will simulate attacks in order to verify that the server reacts accordingly. + +This assumes that you have a LAMP server installed on your system. If not, please check this article before proceeding further. + +- [Install LAMP stack in RHEL/CentOS 7][1] + +You will also need to setup iptables as the default [firewall][2] front-end instead of firewalld if you’re running RHEL/CentOS 7 or Fedora 21. We do this in order to use the same tool in both RHEL/CentOS 7/6 and Fedora 21. + +### Step 1: Installing Iptables Firewall on RHEL/CentOS 7 and Fedora 21 ### + +To begin, stop and disable firewalld: + + # systemctl stop firewalld + # systemctl disable firewalld + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Disable-Firewalld-Service.png) +Disable Firewalld Service + +Then install the iptables-services package before enabling iptables: + + # yum update && yum install iptables-services + # systemctl enable iptables + # systemctl start iptables + # systemctl status iptables + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Install-Iptables-Firewall.png) +Install Iptables Firewall + +### Step 2: Installing Mod_Security and Mod_evasive ### + +In addition to having a LAMP setup already in place, you will also have to [enable the EPEL repository][3] in RHEL/CentOS 7/6 in order to install both packages. Fedora users don’t need to enable any repo, because epel is a already part of Fedora project. + + # yum update && yum install mod_security mod_evasive + +When the installation is complete, you will find the configuration files for both tools in /etc/httpd/conf.d. + + # ls -l /etc/httpd/conf.d + +![](http://www.tecmint.com/wp-content/uploads/2012/06/mod_security-mod_evasive-Configurations.png) +mod_security + mod_evasive Configurations + +Now, in order to integrate these two modules with Apache and have it load them when it starts, make sure the following lines appear in the top level section of mod_evasive.conf and mod_security.conf, respectively: + + LoadModule evasive20_module modules/mod_evasive24.so + LoadModule security2_module modules/mod_security2.so + +Note that modules/mod_security2.so and modules/mod_evasive24.so are the relative paths, from the /etc/httpd directory to the source file of the module. You can verify this (and change it, if needed) by listing the contents of the /etc/httpd/modules directory: + + # cd /etc/httpd/modules + # pwd + # ls -l | grep -Ei '(evasive|security)' + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Verify-mod_security-mod_evasive-Modules.png) +Verify mod_security + mod_evasive Modules + +Then restart Apache and verify that it loads mod_evasive and mod_security: + + # service httpd restart [On RHEL/CentOS 6 and Fedora 20-18] + # systemctl restart httpd [On RHEL/CentOS 7 and Fedora 21] + +---------- + + [Dump a list of loaded Static and Shared Modules] + + # httpd -M | grep -Ei '(evasive|security)' + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Check-mod_security-mod_evasive-Loaded.png) +Check mod_security + mod_evasive Modules Loaded + +### Step 3: Installing A Core Rule Set and Configuring Mod_Security ### + +In few words, a Core Rule Set (aka CRS) provides the web server with instructions on how to behave under certain conditions. The developer firm of mod_security provide a free CRS called OWASP ([Open Web Application Security Project][4]) ModSecurity CRS that can be downloaded and installed as follows. + +1. Download the OWASP CRS to a directory created for that purpose. + + # mkdir /etc/httpd/crs-tecmint + # cd /etc/httpd/crs-tecmint + # wget https://github.com/SpiderLabs/owasp-modsecurity-crs/tarball/master + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Download-mod_security-Core-Rules.png) +Download mod_security Core Rules + +2. Untar the CRS file and change the name of the directory for one of our convenience. + + # tar xzf master + # mv SpiderLabs-owasp-modsecurity-crs-ebe8790 owasp-modsecurity-crs + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Extract-mod_security-Core-Rules.png) +Extract mod_security Core Rules + +3. Now it’s time to configure mod_security. Copy the sample file with rules (owasp-modsecurity-crs/modsecurity_crs_10_setup.conf.example) into another file without the .example extension: + + # cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf + +and tell Apache to use this file along with the module by inserting the following lines in the web server’s main configuration file /etc/httpd/conf/httpd.conf file. If you chose to unpack the tarball in another directory you will need to edit the paths following the Include directives: + + + Include crs-tecmint/owasp-modsecurity-crs/modsecurity_crs_10_setup.conf + Include crs-tecmint/owasp-modsecurity-crs/base_rules/*.conf + + +Finally, it is recommended that we create our own configuration file within the /etc/httpd/modsecurity.d directory where we will place our customized directives (we will name it tecmint.conf in the following example) instead of modifying the CRS files directly. Doing so will allow for easier upgrading the CRSs as new versions are released. + + + SecRuleEngine On + SecRequestBodyAccess On + SecResponseBodyAccess On + SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream + SecDataDir /tmp + + +You can refer to the [SpiderLabs’ ModSecurity GitHub][5] repository for a complete explanatory guide of mod_security configuration directives. + +### Step 4: Configuring Mod_Evasive ### + +mod_evasive is configured using directives in /etc/httpd/conf.d/mod_evasive.conf. Since there are no rules to update during a package upgrade, we don’t need a separate file to add customized directives, as opposed to mod_security. + +The default mod_evasive.conf file has the following directives enabled (note that this file is heavily commented, so we have stripped out the comments to highlight the configuration directives below): + + + DOSHashTableSize 3097 + DOSPageCount 2 + DOSSiteCount 50 + DOSPageInterval 1 + DOSSiteInterval 1 + DOSBlockingPeriod 10 + + +Explanation of the directives: + +- DOSHashTableSize: This directive specifies the size of the hash table that is used to keep track of activity on a per-IP address basis. Increasing this number will provide a faster look up of the sites that the client has visited in the past, but may impact overall performance if it is set too high. +- DOSPageCount: Legitimate number of identical requests to a specific URI (for example, any file that is being served by Apache) that can be made by a visitor over the DOSPageInterval interval. +- DOSSiteCount: Similar to DOSPageCount, but refers to how many overall requests can be made to the entire site over the DOSSiteInterval interval. +- DOSBlockingPeriod: If a visitor exceeds the limits set by DOSSPageCount or DOSSiteCount, his source IP address will be blacklisted during the DOSBlockingPeriod amount of time. During DOSBlockingPeriod, any requests coming from that IP address will encounter a 403 Forbidden error. + +Feel free to experiment with these values so that your web server will be able to handle the required amount and type of traffic. + +**Only a small caveat**: if these values are not set properly, you run the risk of ending up blocking legitimate visitors. + +You may also want to consider other useful directives: + +#### DOSEmailNotify #### + +If you have a mail server up and running, you can send out warning messages via Apache. Note that you will need to grant the apache user SELinux permission to send emails if SELinux is set to enforcing. You can do so by running + + # setsebool -P httpd_can_sendmail 1 + +Next, add this directive in the mod_evasive.conf file with the rest of the other directives: + + DOSEmailNotify you@yourdomain.com + +If this value is set and your mail server is working properly, an email will be sent to the address specified whenever an IP address becomes blacklisted. + +#### DOSSystemCommand #### + +This needs a valid system command as argument, + + DOSSystemCommand + +This directive specifies a command to be executed whenever an IP address becomes blacklisted. It is often used in conjunction with a shell script that adds a firewall rule to block further connections coming from that IP address. + +**Write a shell script that handles IP blacklisting at the firewall level** + +When an IP address becomes blacklisted, we need to block future connections coming from it. We will use the following shell script that performs this job. Create a directory named scripts-tecmint (or whatever name of your choice) in /usr/local/bin and a file called ban_ip.sh in that directory. + + #!/bin/sh + # IP that will be blocked, as detected by mod_evasive + IP=$1 + # Full path to iptables + IPTABLES="/sbin/iptables" + # mod_evasive lock directory + MOD_EVASIVE_LOGDIR=/var/log/mod_evasive + # Add the following firewall rule (block all traffic coming from $IP) + $IPTABLES -I INPUT -s $IP -j DROP + # Remove lock file for future checks + rm -f "$MOD_EVASIVE_LOGDIR"/dos-"$IP" + +Our DOSSystemCommand directive should read as follows: + + DOSSystemCommand "sudo /usr/local/bin/scripts-tecmint/ban_ip.sh %s" + +In the line above, %s represents the offending IP as detected by mod_evasive. + +**Add the apache user to the sudoers file** + +Note that all of this just won’t work unless you to give permissions to user apache to run our script (and that script only!) without a terminal and password. As usual, you can just type visudo as root to access the /etc/sudoers file and then add the following 2 lines as shown in the image below: + + apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh + Defaults:apache !requiretty + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Add-Apache-User-to-Sudoers.png) +Add Apache User to Sudoers + +**IMPORTANT**: As a default security policy, you can only run sudo in a terminal. Since in this case we need to use sudo without a tty, we have to comment out the line that is highlighted in the following image: + + #Defaults requiretty + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Disable-tty-for-Sudo.png) +Disable tty for Sudo + +Finally, restart the web server: + + # service httpd restart [On RHEL/CentOS 6 and Fedora 20-18] + # systemctl restart httpd [On RHEL/CentOS 7 and Fedora 21] + +### Step 4: Simulating an DDoS Attacks on Apache ### + +There are several tools that you can use to simulate an external attack on your server. You can just google for “tools for simulating ddos attacks” to find several of them. + +Note that you, and only you, will be held responsible for the results of your simulation. Do not even think of launching a simulated attack to a server that you’re not hosting within your own network. + +Should you want to do the same with a VPS that is hosted by someone else, you need to appropriately warn your hosting provider or ask permission for such a traffic flood to go through their networks. Tecmint.com is not, by any means, responsible for your acts! + +In addition, launching a simulated DoS attack from only one host does not represent a real life attack. To simulate such, you would need to target your server from several clients at the same time. + +Our test environment is composed of a CentOS 7 server [IP 192.168.0.17] and a Windows host from which we will launch the attack [IP 192.168.0.103]: + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Confirm-Host-IPAddress.png) +Confirm Host IPAddress + +Please play the video below and follow the steps outlined in the indicated order to simulate a simple DoS attack: + +注:youtube视频,发布的时候不行做个链接吧 + + +Then the offending IP is blocked by iptables: + +![](http://www.tecmint.com/wp-content/uploads/2012/06/Blocked-Attacker-IP.png) +Blocked Attacker IP + +### Conclusion ### + +With mod_security and mod_evasive enabled, the simulated attack causes the CPU and RAM to experiment a temporary usage peak for only a couple of seconds before the source IPs are blacklisted and blocked by the firewall. Without these tools, the simulation will surely knock down the server very fast and render it unusable during the duration of the attack. + +We would love to hear if you’re planning on using (or have used in the past) these tools. We always look forward to hearing from you, so don’t hesitate to leave your comments and questions, if any, using the form below. + +### Reference Links ### + +- [https://www.modsecurity.org/][6] +- [http://www.zdziarski.com/blog/?page_id=442][7] + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/protect-apache-using-mod_security-and-mod_evasive-on-rhel-centos-fedora/ + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/gacanepa/ +[1]:http://www.tecmint.com/install-lamp-in-centos-7/ +[2]:http://www.tecmint.com/configure-firewalld-in-centos-7/ +[3]:http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/ +[4]:https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project +[5]:https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Configuration_Directives +[6]:https://www.modsecurity.org/ +[7]:http://www.zdziarski.com/blog/?page_id=442 \ No newline at end of file From c9a0a404e1a6f66dc39fea6c060ca8099abe8bbd Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 20:39:14 +0800 Subject: [PATCH 283/725] Update 20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md --- ...shback classical desktop on Ubuntu 14.10 or Linux Mint 17.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md index de5283e344..ae7968afd0 100644 --- a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md +++ b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md @@ -1,6 +1,6 @@ 在Ubuntu14.10/Mint7上安装Gnome Flashback classical桌面 ================================================================================ -如果你不喜欢现在的Unity桌面,[Gnome Flashback][1] 桌面环境是一个简单的并且很棒的选择,让你能找回曾经经典的桌面。 +如果你不喜欢现在的Unity桌面,[Gnome Flashback][1]桌面环境是一个简单的并且很棒的选择,让你能找回曾经经典的桌面。 Gnome Flashback基于GTK3并提供与原先gnome桌面视觉上相似的界面。 From 4ebba3f7818bb583dad65e989fbb85a77d22a0ab Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 21:20:26 +0800 Subject: [PATCH 284/725] translated --- ...esktop on Ubuntu 14.10 or Linux Mint 17.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 translated/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md diff --git a/translated/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/translated/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md new file mode 100644 index 0000000000..ae7968afd0 --- /dev/null +++ b/translated/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md @@ -0,0 +1,101 @@ +在Ubuntu14.10/Mint7上安装Gnome Flashback classical桌面 +================================================================================ +如果你不喜欢现在的Unity桌面,[Gnome Flashback][1]桌面环境是一个简单的并且很棒的选择,让你能找回曾经经典的桌面。 + +Gnome Flashback基于GTK3并提供与原先gnome桌面视觉上相似的界面。 + +gnome flashback的另一个改变是采用了源自mint和xface的MATE桌面,但无论mint还是xface都是基于gtk2的。 + +### 安装 Gnome Flashback ### + +在你的ubuntu上安装以下包即可: + + $ sudo apt-get install gnome-session-flashback + +然后注销到达登录界面,单击密码输入框右上角的徽标型按钮,即可选择桌面环境。可供选择的有Gnome Flashback (Metacity) 会话模式和Gnome Flashback (Compiz)会话模式。 + +Metacity更轻更快,而Compiz则能带给你更棒的桌面效果。下面是我使用gnome flashback桌面的截图。 + +桌面采用了elementary OS的壁纸和Plank dock并且移除了底部面板。这些都会在这篇教程中涉及到。 + +![ubuntu gnome flashback](http://www.binarytides.com/blog/wp-content/uploads/2015/02/ubuntu-gnome-flashback.png) + +在安装好gnome flashback桌面以后也许你对效果还不满意,这样你可能需要执行接下来的一系列操作来对它进行微调。 + +### 1. 安装 Gnome Tweak Tool ### + +Gnome Tweak Tool能够帮助你定制比如字体、主题等,那些在Unity桌面的控制中心十分困难或是不可能完成的任务。 + + $ sudo apt-get install gnome-tweak-tool + +启动按步骤 应用程序 > 系统工具 > 首选项 > Tweak Tool + +### 2. 在面板上添加小应用 ### + +默认的右键点击面板是没有效果的。你可以尝试在右键点击面板的同时按住键盘上的Alt+Super (win)键,这样定制面板的相关选项将会出现。 + +你可以修改或删除面板并在上面添加些小应用。在这个例子中我们移除了底部面板,并用Plank dock来代替它的位置。 + +在顶部面板的中间添加一个显示时间的小应用。通过配置使它显示时间和天气。 + +同样的添加一个工作空间切换器到顶部面板,并创建合适个数的工作空间。 + +### 3. 将窗口标题栏的按钮右置 ### + +在ubuntu中,最小化、最大化和关闭按钮默认实在标题栏的左侧的。需要稍作手脚才能让他们乖乖回到右边去。 + +想让窗口的按钮到右边可以使用下面的命令,这是我在askubuntu上找到的。 + + $ gsettings set org.gnome.desktop.wm.preferences button-layout 'menu:minimize,maximize,close' + +### 4.安装 Plank dock ### + +plank dock位于屏幕底部用于启动应用和切换打开的窗口。会在必要的时间隐藏自己,并在需要的时候出现。elementary OS使用的dock就是plank dock。 + +运行以下命令安装: + + $ sudo add-apt-repository ppa:ricotz/docky -y + $ sudo apt-get update + $ sudo apt-get install plank -y + +现在启动 应用程序 > 附件 > Plank。若想让它开机自动启动,找到 应用程序 > 系统工具 > 首选项 > 启动应用程序 并将“plank”的命令加到列表中。 + +### 5. 安装 Conky 系统监视器 ### + +Conky非常酷,它用系统的中如CPU和内存使用率的统计值来装饰桌面。它不太占资源并且运行的大部分时间都不惹麻烦。 + +运行如下命令安装: + + $ sudo apt-add-repository -y ppa:teejee2008/ppa + $ sudo apt-get update + $ sudo apt-get install conky-manager + +现在启动 应用程序 > 附件 > Conky Manager 选择你想在桌面上显示的部件。Conky Manager同样可以配置到启动项中。 + +### 6. 安装CCSM ### + +如果你更愿意使用Gnome Flashback (Compiz),那么CCSM将是你配置桌面特效的得力助手。 + +运行以下命令安装: + + $ sudo apt-get install compizconfig-settings-manager + +启动按步骤 应用程序 > 系统工具 > 首选项 > CompizConfig Settings Manager. + + +>在虚拟机中经常会发生compiz会话中装饰窗口消失。可以通过启动Compiz设置,在打开"Copy to texture",注销后重新登录即可。 + +不过值得一提的是Compiz 会话会比Metacity慢。 + +-------------------------------------------------------------------------------- + +via: http://www.binarytides.com/install-gnome-flashback-ubuntu/ + +作者:[Silver Moon][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117145272367995638274/posts +[1]:https://wiki.gnome.org/action/show/Projects/GnomeFlashback?action=show&redirect=GnomeFlashback From 65592541b10103ee69de37ef2c937e8a0cd5d150 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 21:21:23 +0800 Subject: [PATCH 285/725] Delete 20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md --- ...esktop on Ubuntu 14.10 or Linux Mint 17.md | 101 ------------------ 1 file changed, 101 deletions(-) delete mode 100644 sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md diff --git a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md b/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md deleted file mode 100644 index ae7968afd0..0000000000 --- a/sources/tech/20150209 Install the Gnome Flashback classical desktop on Ubuntu 14.10 or Linux Mint 17.md +++ /dev/null @@ -1,101 +0,0 @@ -在Ubuntu14.10/Mint7上安装Gnome Flashback classical桌面 -================================================================================ -如果你不喜欢现在的Unity桌面,[Gnome Flashback][1]桌面环境是一个简单的并且很棒的选择,让你能找回曾经经典的桌面。 - -Gnome Flashback基于GTK3并提供与原先gnome桌面视觉上相似的界面。 - -gnome flashback的另一个改变是采用了源自mint和xface的MATE桌面,但无论mint还是xface都是基于gtk2的。 - -### 安装 Gnome Flashback ### - -在你的ubuntu上安装以下包即可: - - $ sudo apt-get install gnome-session-flashback - -然后注销到达登录界面,单击密码输入框右上角的徽标型按钮,即可选择桌面环境。可供选择的有Gnome Flashback (Metacity) 会话模式和Gnome Flashback (Compiz)会话模式。 - -Metacity更轻更快,而Compiz则能带给你更棒的桌面效果。下面是我使用gnome flashback桌面的截图。 - -桌面采用了elementary OS的壁纸和Plank dock并且移除了底部面板。这些都会在这篇教程中涉及到。 - -![ubuntu gnome flashback](http://www.binarytides.com/blog/wp-content/uploads/2015/02/ubuntu-gnome-flashback.png) - -在安装好gnome flashback桌面以后也许你对效果还不满意,这样你可能需要执行接下来的一系列操作来对它进行微调。 - -### 1. 安装 Gnome Tweak Tool ### - -Gnome Tweak Tool能够帮助你定制比如字体、主题等,那些在Unity桌面的控制中心十分困难或是不可能完成的任务。 - - $ sudo apt-get install gnome-tweak-tool - -启动按步骤 应用程序 > 系统工具 > 首选项 > Tweak Tool - -### 2. 在面板上添加小应用 ### - -默认的右键点击面板是没有效果的。你可以尝试在右键点击面板的同时按住键盘上的Alt+Super (win)键,这样定制面板的相关选项将会出现。 - -你可以修改或删除面板并在上面添加些小应用。在这个例子中我们移除了底部面板,并用Plank dock来代替它的位置。 - -在顶部面板的中间添加一个显示时间的小应用。通过配置使它显示时间和天气。 - -同样的添加一个工作空间切换器到顶部面板,并创建合适个数的工作空间。 - -### 3. 将窗口标题栏的按钮右置 ### - -在ubuntu中,最小化、最大化和关闭按钮默认实在标题栏的左侧的。需要稍作手脚才能让他们乖乖回到右边去。 - -想让窗口的按钮到右边可以使用下面的命令,这是我在askubuntu上找到的。 - - $ gsettings set org.gnome.desktop.wm.preferences button-layout 'menu:minimize,maximize,close' - -### 4.安装 Plank dock ### - -plank dock位于屏幕底部用于启动应用和切换打开的窗口。会在必要的时间隐藏自己,并在需要的时候出现。elementary OS使用的dock就是plank dock。 - -运行以下命令安装: - - $ sudo add-apt-repository ppa:ricotz/docky -y - $ sudo apt-get update - $ sudo apt-get install plank -y - -现在启动 应用程序 > 附件 > Plank。若想让它开机自动启动,找到 应用程序 > 系统工具 > 首选项 > 启动应用程序 并将“plank”的命令加到列表中。 - -### 5. 安装 Conky 系统监视器 ### - -Conky非常酷,它用系统的中如CPU和内存使用率的统计值来装饰桌面。它不太占资源并且运行的大部分时间都不惹麻烦。 - -运行如下命令安装: - - $ sudo apt-add-repository -y ppa:teejee2008/ppa - $ sudo apt-get update - $ sudo apt-get install conky-manager - -现在启动 应用程序 > 附件 > Conky Manager 选择你想在桌面上显示的部件。Conky Manager同样可以配置到启动项中。 - -### 6. 安装CCSM ### - -如果你更愿意使用Gnome Flashback (Compiz),那么CCSM将是你配置桌面特效的得力助手。 - -运行以下命令安装: - - $ sudo apt-get install compizconfig-settings-manager - -启动按步骤 应用程序 > 系统工具 > 首选项 > CompizConfig Settings Manager. - - ->在虚拟机中经常会发生compiz会话中装饰窗口消失。可以通过启动Compiz设置,在打开"Copy to texture",注销后重新登录即可。 - -不过值得一提的是Compiz 会话会比Metacity慢。 - --------------------------------------------------------------------------------- - -via: http://www.binarytides.com/install-gnome-flashback-ubuntu/ - -作者:[Silver Moon][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117145272367995638274/posts -[1]:https://wiki.gnome.org/action/show/Projects/GnomeFlashback?action=show&redirect=GnomeFlashback From 72f11d30ceaf873bca5a0ddfc9a571e37fc5c862 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 21:30:24 +0800 Subject: [PATCH 286/725] [translating] 20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md --- ...l Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md b/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md index 67d9d550e5..5d854aa539 100644 --- a/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md +++ b/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md @@ -1,3 +1,5 @@ +translating by martin. + Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10 ================================================================================ A low-overhead monitoring web dashboard for a GNU/Linux machine. Simply drop-in the app and go!.Linux Dash's interface provides a detailed overview of all vital aspects of your server, including RAM and disk usage, network, installed software, users, and running processes. All information is organized into sections, and you can jump to a specific section using the buttons in the main toolbar. Linux Dash is not the most advanced monitoring tool out there, but it might be a good fit for users looking for a slick, lightweight, and easy to deploy application. @@ -67,4 +69,4 @@ via: http://www.ubuntugeek.com/install-linux-dash-web-based-monitoring-tool-on-u 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://www.ubuntugeek.com/step-by-step-ubuntu-14-10-utopic-unicorn-lamp-server-setup.html \ No newline at end of file +[1]:http://www.ubuntugeek.com/step-by-step-ubuntu-14-10-utopic-unicorn-lamp-server-setup.html From ecd29e979988b41b8cc66a96b01e997b43e6c6f6 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 21:31:48 +0800 Subject: [PATCH 287/725] Update 20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md --- ...all Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md b/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md index 5d854aa539..fe2432f8b3 100644 --- a/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md +++ b/sources/tech/20150211 Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10.md @@ -1,5 +1,3 @@ -translating by martin. - Install Linux-Dash (Web Based Monitoring tool) on Ubntu 14.10 ================================================================================ A low-overhead monitoring web dashboard for a GNU/Linux machine. Simply drop-in the app and go!.Linux Dash's interface provides a detailed overview of all vital aspects of your server, including RAM and disk usage, network, installed software, users, and running processes. All information is organized into sections, and you can jump to a specific section using the buttons in the main toolbar. Linux Dash is not the most advanced monitoring tool out there, but it might be a good fit for users looking for a slick, lightweight, and easy to deploy application. From c94e0af8e00e7f2582e9bf3c666fe8aadb000bf8 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Feb 2015 21:33:12 +0800 Subject: [PATCH 288/725] [translating]20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md --- ...150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md index fffe871da6..f49cc07c31 100644 --- a/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ b/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -1,3 +1,5 @@ +translating by martin. + Install Mumble in Ubuntu an Opensource VoIP Apps ================================================================================ Mumble is a free and open source voice over IP (VoIP) application, released under the new BSD license, primarily designed for use by gamers and it's similar to programs such as TeamSpeak and Ventrilo. It uses a server to witch people can connect with a client to talk to each other. @@ -75,4 +77,4 @@ via: http://linoxide.com/ubuntu-how-to/install-mumble-ubuntu/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/adriand/ -[1]:http://wiki.mumble.info/wiki/Main_Page \ No newline at end of file +[1]:http://wiki.mumble.info/wiki/Main_Page From 4663e6560ab83e78bb2daff978516aa0b82cb3ac Mon Sep 17 00:00:00 2001 From: J L Date: Wed, 11 Feb 2015 23:19:00 +0800 Subject: [PATCH 289/725] Announce for 20150205 --- ...xQuestions Survey Results Surface Top Open Source Projects.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md b/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md index c591faafcd..254684daaf 100644 --- a/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md +++ b/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md @@ -1,3 +1,4 @@ +[[jerryling315](https://github.com/jerryling315) 翻译中] LinuxQuestions Survey Results Surface Top Open Source Projects ================================================================================ ![](http://farm5.static.flickr.com/4099/4777335328_3cc363c419_m.jpg) From a55cab8befea49d61a905be2f053f0d81c0f6e97 Mon Sep 17 00:00:00 2001 From: soooogreen <54364732@qq.com> Date: Wed, 11 Feb 2015 23:29:56 +0800 Subject: [PATCH 290/725] Delete 20150126 Improve system performance by moving your log files to RAM Using Ramlog.md delete source --- ...ving your log files to RAM Using Ramlog.md | 113 ------------------ 1 file changed, 113 deletions(-) delete mode 100644 sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md diff --git a/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md deleted file mode 100644 index 33aaf25554..0000000000 --- a/sources/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md +++ /dev/null @@ -1,113 +0,0 @@ -translating by soooogreen -Improve system performance by moving your log files to RAM Using Ramlog -================================================================================ -Ramlog act as a system daemon. On startup it creates ramdisk, it copies files from /var/log into ramdisk and mounts ramdisk as /var/log. All logs after that will be updated on ramdisk. Logs on harddrive are kept in folder /var/log.hdd which is updated when ramlog is restarted or stopped. On shutdown it saves log files back to harddisk so logs are consistent. Ramlog 2.x is using tmpfs by default, ramfs and kernel ramdisk are suppored as well. Program rsync is used for log synchronization. - -Note: Logs not saved to harddrive are lost in case of power outage or kernel panic. - -Install ramlog if you have enough of free memory and you want to keep your logs on ramdisk. It is good for notebook users, for systems with UPS or for systems running from flash -- to save some write cycles. - -How it works and what it does: - -1.Ramlog starts among the first daemons (it depends on other daemons you have installed). - -2.Directory /var/log.hdd is created and hardlinked to /var/log. - -3.In case tmpfs (default) or ramfs is used, it is mounted over /var/log - -If kernel ramdisk is used, ramdisk created in /dev/ram9 and it is mounted to /var/log, by default ramlog takes all ramdisk memory specified by kernel argument "ramdisk_size". - -5.All other daemons are started and all logs are updated in ramdisk. Logrotate works on ramdisk as well. - -6.In case ramlog is restarted (by default it is one time per day), directory /var/log.hdd is synchronized with /var/log using rsync. Frequency of the automatic log saves can be controller via cron, by default, the ramlog file is placed into /etc/cron.daily - -7.On shutdown ramlog shuts among the last daemons. - -8. During ramlog stop phase files from /var/log.hdd are synchronized with /var/log -Then /var/log is unmounted, /var/log.hdd is unmounted as well and empty directory /var/log.hdd is deleted. - -**Note:- This article is for advanced users only** - -### Install Ramlog in Ubuntu ### - -First you need to download the .deb package from [here][1] using the following command - - wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb - -Now you should be having ramlog_2.0.0_all.deb package install this package using the following command - - sudo dpkg -i ramlog_2.0.0_all.deb - -This will complete the installation now you need to run the following commands - - sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 . - -#Now update sysklogd in init levels, so it is stopped properly before ramlog is stopped: - - sudo update-rc.d -f sysklogd remove - - sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 . - -Now you need to restart your system - - sudo reboot - -After rebooting you need to run ‘ramlog getlogsize' to determine the size of your actual /var/log.Add about 40% to that number to ensure your ramdisk has sufficient size -- this will be the ramdisk size - -Edit your boot manager config file such as /etc/grub.conf, /boot/grub/menu.lst or /etc/lilo.conf and add update the actual kernel by adding kernel paramter ‘ramdisk_size=xxx' where xxx is calculated ramdisk size - -### Configuring Ramlog ### - -Ramlog configuration file is located in /etc/default/ramlog on deb based systems and you can set there below variables: - -Variable (with default value): - -Description: - - RAMDISKTYPE=0 - # Values: - # 0 -- tmpfs (can be swapped) -- default - # 1 -- ramfs (no max size in older kernels, - # cannot be swapped, not SELinux friendly) - # 2 -- old kernel ramdisk - TMPFS_RAMFS_SIZE= - #Maximum size of memory to be used by tmpfs or ramfs. - # The value can be percentage of total RAM or size in megabytes -- for example: - # TMPFS_RAMFS_SIZE=40% - # TMPFS_RAMFS_SIZE=100m - # Empty value means default tmpfs/ramfs size which is 50% of total RAM. - # For more options please check ‘man mount', section ‘Mount options for tmpfs' - # (btw -- ramfs supports size limit in newer kernels - # as well despite man says there are no mount options) - # It has only effect if RAMDISKTYPE=0 or 1 - KERNEL_RAMDISK_SIZE=MAX - #Kernel ramdisk size in kilobytes or MAX to use entire ramdisk. - #It has only effect if RAMDISKTYPE=2 - LOGGING=1 - # 0=off, 1=on Logs can be found in /var/log/ramdisk - LOGNAME=ramlog - # name of the ramlog log file (makes sense if LOGGING=1) - VERBOSE=1 - # 0=off, 1=on (if 1, teststartstop puts detials - # to the logs and it is called after start or stop fails) - -### How to uninstall Ubuntu ### - -Open the terminal and run the following command - - sudo dpkg -P ramlog - -Note: If ramlog was running before you uninstalled it, you should reboot your box to finish uninstallation procedure. - --------------------------------------------------------------------------------- - -via: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html - -作者:[ruchi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb From d5c68cfcdec70e2cb611a858c7df5fdccccc4f14 Mon Sep 17 00:00:00 2001 From: soooogreen <54364732@qq.com> Date: Wed, 11 Feb 2015 23:31:29 +0800 Subject: [PATCH 291/725] Create 20150126 Improve system performance by moving your log files to RAM Using Ramlog.md --- ...ving your log files to RAM Using Ramlog.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md diff --git a/translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md new file mode 100644 index 0000000000..66f5d72f87 --- /dev/null +++ b/translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md @@ -0,0 +1,111 @@ +系统性能优化支招:使用Ramlog将日志文件转移到RAM +================================================================================ +Ramlog以系统守护进程的形式存在。它系统启动的时候创建了虚拟磁盘(ramdisk),将文件从目录/var/log复制到虚拟磁盘中,同时把虚拟磁盘挂载为/var/log。接着更新虚拟磁盘上所有的日志。硬盘上的日志会保留在目录/var/log中,直到ramlog重启或停止时被更新。而关机的时候,(ramdisk上的)日志文件会重新保存到硬盘上,以确保日志一致性。Ramlog 2.x默认使用tmpfs文件系统,同时也可以支持ramfs和内核ramdisk。使用rsync(译注:Linux数据镜像备份工具)这个工具来同步日志。 + +注意:没有保存进硬盘的日志将在断电或者内核混乱(kernel panic)的情况下丢失。 + +如果你拥有空间足够的可用内存,而又想把日志放进虚拟磁盘,就安装ramlog吧。它是笔记本用户、UPS系统或是直接在flash中运行的系统节省写周期的优良选择。 + +Ramlog的运行机制以及步骤: + +1.Ramlog在第一个守护进程(这取决于你所安装过的其它守护进程)的基础上启动。 + +2.然后创建目录/var/log.hdd并将其硬链至/var/log。 + +3.如果使用的是tmpfs(默认)或者ramfs之一的文件系统,将其挂载到/var/log上。 + +而如果使用的是内核ramdisk,ramdisk将在/dev/ram9中创建,并将挂载至/var/log。默认情况下ramlog会占用所有ramdisk的内存,其大小由内核参数"ramdisk_size"指定。 + +5.接着其它的守护进程被启动,并在ramdisk中更新日志。Logrotate(译注:Linux日志轮替工具)也是在ramdiks之上运行。 + +6.重启(默认一天一次)ramlog时,目录/var/log.hdd将借助rsync与/var/log保持同步。日志自动保存的频率可以通过cron(译注:Linux例行性工作调度)来控制。默认情况下,ramlog文件放置在目录/etc/cron.daily下。 + +7.系统关机时,ramlog在最后一个守护进程关闭之前关闭。 + +在ramlog关闭期间,/var/log.hdd中的文件将被同步至/var/log,接着/var/log和/var/log.hdd都被卸载,然后删除空目录/var/log.hdd。 + +**注意:- 此文仅面向高级用户** + +### 在Ubuntu中安装Ramlog ### + +首先需要用以下命令,从[这里][1]下载.deb安装包: + + wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb + +下载ramlog_2.0.0_all.deb安装包完毕,使用以下命令进行安装: + + sudo dpkg -i ramlog_2.0.0_all.deb + +这一步会完成整个安装,现在你需要运行以下命令: + + sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 . + +#现在,在初始状态下升级sysklogd,使之能在ramlog停止运行前正确关闭: + + sudo update-rc.d -f sysklogd remove + + sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 . + +然后重启系统: + + sudo reboot + +系统重启完毕,运行'ramlog getlogsize'获取/var/log的空间大小。在此基础之上多分配40%的空间,确保ramdisk有足够的空间(这整个都将作为ramdisk的空间大小)。 + +编辑引导配置文件,如/etc/grub.conf,、/boot/grub/menu.lst 或/etc/lilo.conf(译注:具体哪个配置文件视不同引导加载程序而定),kernel参数新增项'ramdisk_size=xxx'以更新当前内核,其中xxx是ramdisk的空间大小。 + +### 配置Ramlog ### + +基于deb的系统中,Ramlog的配置文件位于/etc/default/ramlog,你可以在该目录下设置以下变量: + +Variable (with default value): + +Description: + + RAMDISKTYPE=0 + # Values: + # 0 -- tmpfs (can be swapped) -- default + # 1 -- ramfs (no max size in older kernels, + # cannot be swapped, not SELinux friendly) + # 2 -- old kernel ramdisk + TMPFS_RAMFS_SIZE= + #Maximum size of memory to be used by tmpfs or ramfs. + # The value can be percentage of total RAM or size in megabytes -- for example: + # TMPFS_RAMFS_SIZE=40% + # TMPFS_RAMFS_SIZE=100m + # Empty value means default tmpfs/ramfs size which is 50% of total RAM. + # For more options please check ‘man mount', section ‘Mount options for tmpfs' + # (btw -- ramfs supports size limit in newer kernels + # as well despite man says there are no mount options) + # It has only effect if RAMDISKTYPE=0 or 1 + KERNEL_RAMDISK_SIZE=MAX + #Kernel ramdisk size in kilobytes or MAX to use entire ramdisk. + #It has only effect if RAMDISKTYPE=2 + LOGGING=1 + # 0=off, 1=on Logs can be found in /var/log/ramdisk + LOGNAME=ramlog + # name of the ramlog log file (makes sense if LOGGING=1) + VERBOSE=1 + # 0=off, 1=on (if 1, teststartstop puts detials + # to the logs and it is called after start or stop fails) + +### 在Ubuntu中卸载ramlog ### + +打开终端运行以下命令: + + sudo dpkg -P ramlog + +注意:如果ramlog卸载之前仍在运行,需要重启系统完成整个卸载工作。 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html + +作者:[ruchi][a] +译者:[soooogreen](https://github.com/soooogreen) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb From ab7f3b2951474f2ef198b87fbac1258fe29c7cff Mon Sep 17 00:00:00 2001 From: J L Date: Wed, 11 Feb 2015 23:39:30 +0800 Subject: [PATCH 292/725] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=BF=BB=E8=AF=91=20?= =?UTF-8?q?20150205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ns Survey Results Surface Top Open Source Projects.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) rename {sources => translated}/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md (57%) diff --git a/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md b/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md similarity index 57% rename from sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md rename to translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md index 254684daaf..9dd834754b 100644 --- a/sources/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md +++ b/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md @@ -3,15 +3,16 @@ LinuxQuestions Survey Results Surface Top Open Source Projects ================================================================================ ![](http://farm5.static.flickr.com/4099/4777335328_3cc363c419_m.jpg) -Many people in the Linux community look forward to the always highly detailed and reliable results of the annual surveys from LinuxQuestions.org. As [Susan covered in detail in this post][1], this year's [results][2], focused on what readers at the site deem to be the best open source projects, are now available. Most of the people at LinuxQuestions are expert-level users who are on the site to answer questions from newer Linux users. +在Linux用户社区中, 很多人每年都会期待来自 LinuxQuestions.org 细致并可靠的年度问卷调查结果. 如同[Susan在她的报告][1]中指出的那样, 今年的[结果][2]着重于调查网站读者心中最棒的开源项目. 这份报告目前已经完成. 在LinuxQuestions的大多数人都是"专家级"的用户, 他们经常在网站上在线回答Linux新手们的提问. +在Susan所作的报告的附加内容里, 你可以看到由"专家"们对开源世界的关注点分布. In addition to the summary results that Susan provided in her post, below you'll find a graphical snapshot of what the experts took note of on the open source front. -You can get a very nice graphical summary of the findings from the LinuxQuestions survey [here][3]. Here is a snapshot of the site's determination of the best Linux distributions, where Mint and Slackware fare quite well: +你也可以在[这里][3]找到一份较为精美的调查问卷总结图.这里呈现了网站投票得出的最佳Linux发行版, 可以看到Mint和Slackwaer平分了半壁江山: ![](http://i1311.photobucket.com/albums/s669/webworkerdaily/lin_zps9ogvyrty.png) -And below is a snapshot of the site's determination of the best cloud projects. Notably, the LinuxQuestions crowd gives very high praise to ownCloud. Definiitely check into the full results of the survey at the site, see [Susan's summary][4] of winners, and check out all the good graphics [here][5]. +而下图则是网站票选出的得出的最佳云项目. 值得注意的是, LinuxQuestions的用户群体给予了ownCloud项目极高的评价. 你一定得亲自去看看调查结果的详情, 也看看 [Susan关于各项目"赢家"][4]的总结 , 还有[一堆精美的图表][5]. ![](http://i1311.photobucket.com/albums/s669/webworkerdaily/lin2_zps9nxf7yyi.png) @@ -20,7 +21,7 @@ And below is a snapshot of the site's determination of the best cloud projects. via: http://ostatic.com/blog/linuxquestions-survey-results-surface-top-open-source-projects 作者:[Sam Dean][a] -译者:[译者ID](https://github.com/译者ID) +译者:[jerryling315](https://github.com/jerryling315) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From fe6017ced8f9e1522f81398e1d1d63908bb20df9 Mon Sep 17 00:00:00 2001 From: J L Date: Wed, 11 Feb 2015 23:40:16 +0800 Subject: [PATCH 293/725] Delete Translating note --- ...xQuestions Survey Results Surface Top Open Source Projects.md | 1 - 1 file changed, 1 deletion(-) diff --git a/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md b/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md index 9dd834754b..0052aab380 100644 --- a/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md +++ b/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md @@ -1,4 +1,3 @@ -[[jerryling315](https://github.com/jerryling315) 翻译中] LinuxQuestions Survey Results Surface Top Open Source Projects ================================================================================ ![](http://farm5.static.flickr.com/4099/4777335328_3cc363c419_m.jpg) From 328b0c29ee30f71c0dd2352f81ac2aff7d0562c5 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 12 Feb 2015 11:15:51 +0800 Subject: [PATCH 294/725] translating --- ...o Protect Ubuntu Server Against the GHOST Vulnerability.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md b/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md index a78b786606..3ff863af55 100644 --- a/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md +++ b/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md @@ -1,3 +1,5 @@ +Translating---geekpi + How To Protect Ubuntu Server Against the GHOST Vulnerability ================================================================================ On January 27, 2015, a GNU C Library (glibc) vulnerability, referred to as the GHOST vulnerability, was announced to the general public. In summary, the vulnerability allows remote attackers to take complete control of a system by exploiting a buffer overflow bug in glibc's GetHOST functions.Check more details from [here][1] @@ -41,4 +43,4 @@ via: http://www.ubuntugeek.com/how-to-protect-ubuntu-server-against-the-ghost-vu 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://chargen.matasano.com/chargen/2015/1/27/vulnerability-overview-ghost-cve-2015-0235.html \ No newline at end of file +[1]:http://chargen.matasano.com/chargen/2015/1/27/vulnerability-overview-ghost-cve-2015-0235.html From dacd5b1d1671cb7e8f837fc5e262f19cf811c3ac Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 12 Feb 2015 11:27:25 +0800 Subject: [PATCH 295/725] translated --- ... Server Against the GHOST Vulnerability.md | 46 ------------------- ... Server Against the GHOST Vulnerability.md | 44 ++++++++++++++++++ 2 files changed, 44 insertions(+), 46 deletions(-) delete mode 100644 sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md create mode 100644 translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md diff --git a/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md b/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md deleted file mode 100644 index 3ff863af55..0000000000 --- a/sources/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md +++ /dev/null @@ -1,46 +0,0 @@ -Translating---geekpi - -How To Protect Ubuntu Server Against the GHOST Vulnerability -================================================================================ -On January 27, 2015, a GNU C Library (glibc) vulnerability, referred to as the GHOST vulnerability, was announced to the general public. In summary, the vulnerability allows remote attackers to take complete control of a system by exploiting a buffer overflow bug in glibc's GetHOST functions.Check more details from [here][1] - -The GHOST vulnerability can be exploited on Linux systems that use versions of the GNU C Library prior to glibc-2.18. That is, systems that use an unpatched version of glibc from versions 2.2 to 2.17 are at risk. - -### Check System Vulnerability ### - -You can use the following command to check the glib version - - ldd --version - -### Output ### - -ldd (Ubuntu GLIBC 2.19-10ubuntu2) **2.19** -Copyright (C) 2014 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -Written by Roland McGrath and Ulrich Drepper. - -The glib version should be above 2.17 and from the output we are running 2.19.If you are seeing glib version between 2.2 to 2.17 then you need to run the following commands - - sudo apt-get update - - sudo apt-get dist-upgrade - -After the installation you need to reboot the server using the following command - - sudo reboot - -After reboot use the same command again and check the glib version. - --------------------------------------------------------------------------------- - -via: http://www.ubuntugeek.com/how-to-protect-ubuntu-server-against-the-ghost-vulnerability.html - -作者:[ruchi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://chargen.matasano.com/chargen/2015/1/27/vulnerability-overview-ghost-cve-2015-0235.html diff --git a/translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md b/translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md new file mode 100644 index 0000000000..38b7c955d3 --- /dev/null +++ b/translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md @@ -0,0 +1,44 @@ +如何让Ubuntu服务器远离鬼影漏洞影响 +================================================================================ +2015年1月27日,GNU C库(glibc)的一个漏洞也称鬼影漏洞被公诸于众。总的来说,这个漏洞允许远程攻击者利用glibc中的GetHOST函数的缓冲区溢出漏洞来获得系统的完全控制。点击[这里][1]获得更多细节。 + +鬼影漏洞可在版本在glibc-2.18之前的Linux系统上被利用。也就是说没有打过补丁的版本2.2到2.17都是有风险的。 + +### 检查系统漏洞 ### + +你可以使用下面的命令来检查glib的版本 + + ldd --version + +### 输出 ### + +ldd (Ubuntu GLIBC 2.19-10ubuntu2) **2.19** +Copyright (C) 2014 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +Written by Roland McGrath and Ulrich Drepper. + +glib的版本应该高于2.17,我们的输出是2.19。如果你看到glib的版本在2.2到2.17之间。你应该运行下面的命令。 + + sudo apt-get update + + sudo apt-get dist-upgrade + +安装完之后,你应该用下面的命令重启系统。 + + sudo reboot + +重启完成之后,你可以用同样的命令来检查glib的版本。 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/how-to-protect-ubuntu-server-against-the-ghost-vulnerability.html + +作者:[ruchi][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://chargen.matasano.com/chargen/2015/1/27/vulnerability-overview-ghost-cve-2015-0235.html From 80a04dd35f2f41294267b4a7fb22c5ac7078ecef Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Thu, 12 Feb 2015 11:30:48 +0800 Subject: [PATCH 296/725] Update 20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md --- ...8 Meet Vivaldi--A New Web Browser Built for Power Users.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md index 78122cd7c8..77e9762b7f 100644 --- a/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md +++ b/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md @@ -4,13 +4,13 @@ **这一周一个为了满足高手级用户的需要而制造出来的全新网页浏览器已然来临——而且它已经可以在Linux上使用了。** -Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux,Windows和Mac机的技术预览版(请读:无责任测试)发行。它是在 — 震惊 — 尝试且已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上制造的。 +Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux,Windows和Mac机发布了技术预览版(请读:无责任测试)。它是在 — 震惊 — 尝试且已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上制造的。 这个世界真的想要再有一个浏览器吗?Vivaldi——出自Opera软件前首席执行官Jon S.von Tetzchner的想法——不怎么关注所要,更关注所需。 Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那种功能。并没有为那些认为Firefox复杂或是对Chrome的唯一批评是它改动了书签按钮的用户而进行修改。 -这也不是什么俗气的营销噱头。不去看它所戴的‘技术预览版’标签,Vivaldi已经有了明显偏向于高手级用户们的功能。 +这也并不是什么俗气的营销噱头。尽管它带有‘技术预览版’标签,Vivaldi已经有了明显偏向于高手级用户们的功能。 相当多的人觉得自己被其他软件公司所生产的简化的,配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会以至于打败了其他产品。 From 6085276ada05eecaa8242feaaf5eb9ace9df063b Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 12 Feb 2015 12:25:00 +0800 Subject: [PATCH 297/725] Delete 20141203 Undelete Files on Linux Systems.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕,删除源文件。 --- ...0141203 Undelete Files on Linux Systems.md | 120 ------------------ 1 file changed, 120 deletions(-) delete mode 100644 sources/tech/20141203 Undelete Files on Linux Systems.md diff --git a/sources/tech/20141203 Undelete Files on Linux Systems.md b/sources/tech/20141203 Undelete Files on Linux Systems.md deleted file mode 100644 index 126501e225..0000000000 --- a/sources/tech/20141203 Undelete Files on Linux Systems.md +++ /dev/null @@ -1,120 +0,0 @@ -Translating by FSSlc - -Undelete Files on Linux Systems -================================================================================ -Often times, a computer user will delete a needed file accidentally and not have an easy way to regain or recreate the file. Thankfully, files can be undeleted. When a user deletes a file, it is not gone, only hidden for some time. Here is how it all works. On a filesystem, the system has what is called a file allocation list. This list keeps track of what files are where on the storage unit (hard-drive, MicroSD card, flash-drive, etc.). When a file is deleted, the filesystem will perform one of two tasks on the allocation table. The file's entry on the file allocation table marked as "free space" or the file's entry on the list is erased and then the space is marked as free. Now, if a file needs to be placed on the storage unit, the operating system will put the file in the space marked as empty. After the new file is written to the "empty space", the deleted file is now gone forever. When a deleted file is to be recovered, the user must not manipulate any files because if the "empty space" is used, then the file can never be retrieved. - -### How do undelete programs work? ### - -The majority of filesystems only mark the space as empty. With these filesystems, the undelete program looks at the file allocation list and copies the deleted file to another storage unit. If the files were copied to the same storage unit, then the user could lose other deleted files that are needed. - -Rarely do filesystems erase the allocation table entry. If a filesystem does, this is how an undelete program undeletes the file. The program searches the storage unit for file headers. All files have a specific string of code that is at the very beginning of the file. This is called a magic number. For example, the magic number of a compiled JAVA class is the hex number "CAFEBABE". So, an undelete program would find "CAFEBABE" and copy that file to another storage unit. Some undelete programs can look for a specific file type. The user may want a PDF, so the program searches for the hex magic number "25504446" which is the ASCII code for "%PDF". Other undelete programs search for all magic numbers. Then, the user can select which deleted files to recover. - -If a part of the file has been written over, then the whole file will be corrupted. The file can usually be recovered, but the contents will be useless. For instance, recovering a corrupted JPEG file will be pointless because the image viewer will not be able to generate an image from the file. So, the user has the file, but the file is useless. - -### Device Locations: ### - -Before we continue, here is some information that will aid in directing the undelete utilities to the correct storage unit. All devices are in the /dev/ folder. The name of each device (not the name that the admin gave each partition or device) that is given by the system follows a predictable scheme. The second partition on the first SATA hard-drive would be sda2. The first letter indicates the storage type, in this case SATA, but an "s" could also mean SCSI, FireWire, or USB. The second letter "d" means disk. The third letter indicates the device number, so an "a" would be the first SATA and a "b" would be the second. The number displays the partition. To name the whole device with all partitions type the letters without the number. For this example that would be sda. Other possible letters "h" as the first letter. This means PATA hard-drive (IDE). As some examples of this scheme, a user has a computer with one SATA hard-drive (sda). The drive has four partitions - sda1, sda2, sda3, and sda4. The user deletes the third one, but sda4 remains sda4 until sda4 is reformatted. The user then plugs in a usb memory card (sdb) with one partition - sdb1. The user then adds a IDE hard-drive with one partition - hda1. Next, the user adds a SCSI hard-drive - sdc1. Then, the user removes the USB memory card (sdb). Now, the SCSI remains sdc, but if the SCSI is removed and added back, it will be sdb. Even though other storage device existed, the IDE drive will have the "a" because it is the first IDE drive. IDE devices are numbered separately from SCSI, SATA, FireWire, and USB devices. - -### Recovery: ### - -Each undelete program has different abilities, features, and support for various filesystems. Below are some instructions for using TestDisk to recover files on a set of filesystems. - -**FAT16, FAT32, exFAT (FAT64), NTFS, and ext2/3/4:** - -TestDisk is an open-source, free program that works on Linux, *BSD, SunOS, Mac OS X, DOS, and Windows. TestDisk can be found here: [http://www.cgsecurity.org/wiki/TestDisk][1]. TestDisk can also be installed by typing "sudo apt-get install testdisk". TestDisk has many abilities, but this article is concerned with undeleting files. - -Open TestDisk in a terminal using root privileges by typing “sudo testdisk”. - -Now, the TestDisk command-line application will execute. The terminal appearance will change. TestDisk asks the user if it can keep logs. This is entirely up to the user. If the user is recovering files from the system storage, then do not keep a log. The choices are "Create", "Append", and "No Log". If the user wants a log, it is kept in that user's home folder. - -![](http://www.linux.org/attachments/screen1-jpg.342/) - -In the following screen, the storage devices are listed using the /dev/* method. For my system, the system's storage unit is /dev/sda. This means that my storage unit is a SATA hard-drive (sd) and it is the first hard-drive (a). The size of each storage unit is displayed in Gigabytes. Use the up and down arrows to select a storage device and hit enter. - -![](http://www.linux.org/attachments/screen2-jpg.343/) - -The next screen displays a list of partition table (also called partition map) types. Just as there is the file allocation table for files, there is a table for the partitions. Partitions are dividers on a storage device. For instance, on almost all Linux systems there is at least two partitions - EXT3/4 and Swap. Each partition table will be briefly described. TestDisk does not support all partition tables, so this is not a complete list. - -![](http://www.linux.org/attachments/screen3-jpg.344/) - -- **Intel** - This partition table is very common on Windows systems and many Linux systems. This table is also know as MBR. -- **EFI GPT** - This is usually used with Linux systems. This partition map is most recommended for Linux because the concept of logical/extended partitions does not apply to GPT (GUID Partition Table) tables. This means that a Linux user can multiboot many forms of Linux with one Linux OS on each partition. There are other advantages to using GPT, but that is beyond this article. -- **Humax** - Humax maps are used with device made by the South Korean company Humax. -- **Mac** - The Apple Partition Map (APM) is used by Apple devices. -- **None** - Some devices do not have a partition table. For instance, many Subor game consoles do not use a partition map. If a user tried to undelete a file on these devices thinking that the partition map was one of the other choices, the user will be confused by the fact that TestDisk does not find any filesystem or files. -- **Sun** - The Sun partition table is used by Sun systems. -- **Xbox** - The Xbox uses the Xbox partition map for its storage devices. - -If a user selects "Xbox" even though their system uses GPT, TestDisk will not be able to find a partition or filesystem. If it does, then it will guess incorrectly. (The image below displays the output when the incorrect partition type) - -![](http://www.linux.org/attachments/xbox-jpg.350/) - -Once the user picks the correct choice for their device, on the next screen, select "Advanced". - -![](http://www.linux.org/attachments/screen4-jpg.345/) - -Now, the user should see a list of all of their filesystems/partitions on the storage unit. If the user had chosen the wrong partition map, then here is where they will know if they made the incorrect selection. If there are no errors, highlight the partition that contains the deleted file by placing the text-based cursor on it. Use the left and right arrows to highlight "List" on the bottom of the terminal. Now, hit enter. - -![](http://www.linux.org/attachments/screen5-jpg.346/) - -A new screen is displayed with a list of files and folders. The whitish files are current files that are not deleted. The red files have been deleted. On the far right column is the files' names. The next column over to the left is the creation date of the file. One column over to the left again is the files' sizes in bytes. To the far left is a column with dashes, "d"s, "r"s, "w"s, and "x"s. These are the file permissions. A "d" indicates that the item is a directory. The rest of the permission syntax is irrelevant to this article. The item on the top of the file list titled "." means the current directory. The second object titled ".." means go up one directory, so a user can move up a directory by selecting this line. For an example, I will go into the directory "Xaiml_Dataset". The folder is nearly full of deleted files. I will undelete "computers.xaiml" by pressing "c" on the keyboard. I am now asked to select a destination directory. Of course, I will put it on another partition. I am in my home folder, and I press "c". It does not matter what folder is highlighted. The current folder is the destination directory. Now, I am back to the list of files. At the top of the screen is a message that says "Copy Done!". In my home folder is a folder called "Xaiml_Dataset", and inside is the Xaiml file. If I press "c" on more deleted files, they will be placed in the new folder without a****g me for a destination. - -![](http://www.linux.org/attachments/screen6-jpg.347/) - -![](http://www.linux.org/attachments/screen7-jpg.348/) - -![](http://www.linux.org/attachments/screen8-jpg.349/) - -When finished press "q" repeatedly until the normal terminal is seen. The folder "Xaiml_Dataset" can only be accessed by the root. To fix this, use root privileges to change the folder permissions and the contained files. After that, the files have been recovered and accessible to the user. - -### ReiserFS: ### - -To undelete a file from a ReiserFS filesystem, make a backup of all of the files on the partition because this method can cause the file to be lost if something goes wrong. Next, execute the following command where DEVICE is the device in the form sda2. Some files will be put in the lost+found directory and other will remain where they were before deletion. - - reiserfsck --rebuild-tree --scan-whole-partition /dev/DEVICE - -### Recover Deleted File that is Open in a Program: ### - -Assume a user accidentally deletes a file that a program has open. The file of the hard-drive was deleted, but the program is using a copy of the file that is on the RAM. Thankfully, there are two easy solutions. - -If the program has save capabilities like a text editor, the user can resave the file. Thus, the file editor will write the file to the hard-drive. - -Assume that this is an MP3 file in a music player. The music player cannot save the MP3 file. This task requires a little more time than the previous situation. Unfortunately, this method does not work on all systems and applications. To begin, type the following command. - - lsof -c smplayer | grep mp3 - -This command LiSts all of the Open Files used by Smplayer. This list is piped (given) to grep which searches for mp3. The output looks like the following. - - smplayer 10037 collier mp3 169r 8,1 676376 1704294 /usr/bin/smplayer - -Now, type the following command to recover the file directly from the RAM (on Linux systems, /proc/ is the RAM) and copy it to a folder of choice. The "cp" is the copy command. The 10037 number comes from the process number given in the output. The 169 is the file descriptor shown in the output. The "~/Music/" is the destination directory. Lastly, "music.mp3" is the file name that the user wants for the file. - - cp /proc/10037/fd/169 ~/Music/music.mp3 - -### Real Deletion: ### - -To make for sure that a file can never be recovered, use a command that "wipes" the hard-drive. Wiping the hard-drive means writing meaningless data to the disk. For example, many wiping programs write zeros, random letters, or random data to the hard-drive. No space is taken up or lost. The wiping program just overwrites the "empty space". If the storage unit is ever full of files with no free space remaining, then all of the previously deleted files will be gone. - -The purpose of wiping hard-drives is to make sure that private data is never seen. For illustration, a company may order new computers. The manager decides to sell the old computers. However, there is concern that the new owners may view company secrets or customer information like credit card numbers and addresses. Thankfully, a computer technician in the company can wipe the hard-drives before selling the old computers. - -To install secure-delete, a wiping program, type "sudo apt-get install secure-delete". This installs a set of four commands that make sure that deleted files are never recovered. - -- srm - permanently delete a file. Usage: srm -f ./secret_file.txt -- sfill - wipe the free space. Usage: sfill -f /mount/point/of/partition -- sswap - wipe swap space. Usage: sswap -f /dev/SWAP_DEVICE - -If computers were to truly delete a file selected for deletion, then more time would be required to perform the task. It is quick and easy to mark some space as free, but to make the file gone forever requires time. Wiping a storage unit, for instance, takes a few hours to complete (depending on storage size). Overall, the current system works well because even when a user empties the recycle bin, they still have another chance to change their mind. - --------------------------------------------------------------------------------- - -via: http://www.linux.org/threads/undelete-files-on-linux-systems.4316/ - -作者:[DevynCJohnson][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.linux.org/members/devyncjohnson.4843/ -[1]:http://www.cgsecurity.org/wiki/TestDisk From d09ecfd9a8f017e08aa1bc690fd5481cbb4b680e Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 12 Feb 2015 12:27:45 +0800 Subject: [PATCH 298/725] =?UTF-8?q?=E3=80=90Translated=E3=80=9120141203=20?= =?UTF-8?q?Undelete=20Files=20on=20Linux=20Systems.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 翻译完毕。FSSlc --- ...0141203 Undelete Files on Linux Systems.md | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 translated/tech/20141203 Undelete Files on Linux Systems.md diff --git a/translated/tech/20141203 Undelete Files on Linux Systems.md b/translated/tech/20141203 Undelete Files on Linux Systems.md new file mode 100644 index 0000000000..c5c6d9409d --- /dev/null +++ b/translated/tech/20141203 Undelete Files on Linux Systems.md @@ -0,0 +1,118 @@ +怎样在 Linux 系统中恢复已删除文件 +================================================================================ +大多数情况下,一个电脑用户可能意外地删除了一个仍然需要的文件,但没有一个简便的方法来重新找回或重建这个文件。幸好,文件可以被恢复。当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间。这里将解释它是如何工作的。在一个文件系统中,有一个叫做 `文件分配表` 的文件,这个表跟踪文件在存储单元(硬盘, MicroSD 卡,闪存驱动器 等等)中的位置。当一个文件被删除,文件系统将会在`文件分配表`中执行以下 两个任务中的一个:这个文件在`文件分配表`上的条目被标记为 “空白空间” 或 这个文件在`文件分配表`的条目被擦除,且相应的空间被标记为 空白空间 。现在,如果一个文件需要被放置在一个存储单元上,操作系统将会把这个文件放置到标记为 空白 的空间中。在新文件被写入到这个空白空间后,被删除的文件就彻底消失了。当需要恢复一个已经删除的文件时,用户绝对不能再对任何文件进行操作,因为假如 该文件对应的 空白空间 被占用,这个文件就永远也不能恢复了。 + +### 恢复软件是如何工作的? ### + +大多数的文件系统只是标记空间为空白,在这些文件系统下,恢复软件查看`文件分配表`这个文件,然后复制被删除的文件到另外的存储单元中。假如该文件被复制到原来所处的存储单元中,那么用户将有可能会失去那个所需的删除文件。 + +文件系统很少会擦除`文件配置表`中的条目。假如文件系统真的这样做了, 这便是恢复软件在恢复文件了。恢复软件在存储单元中扫描文件头,所有文件都拥有一个特殊的编码字符串,它们位于文件的最前面,也被叫做 `魔法数字`。例如,一个编译的 JAVA 类文件的魔法数字在十六进制中是“CAFEBABE”。所以,假如要恢复该类型的文件,恢复软件会查找 “CAFEBABE” 然后复制文件到另一个存储单元。一些恢复软件可以查找某种特殊的文件类型。若用户想恢复一个 PDF 文件,则恢复软件将会查找十六进制的魔法数字 “25504446”,这恰恰是 ASCII 编码中的 “%PDF”。其他的恢复软件将查找所有的魔法数字。然后,用户可以选择恢复哪个已删除的文件。 + +假如一个文件的部分被重写了,则整个文件就会被损坏。通常这个文件可以被恢复,但是其中的内容可能已经没有什么用处。例如,恢复一个已损坏的 JPEG 文件将会是无意义的,因为 图片查看器不能从这个损坏的文件产生一幅图片。因此,即使用户拥有了这个文件,该文件也将毫无用处。 + +### 设备的位置: ### + +在我们继续之前,下面的一些信息将会对 指引恢复软件找到正确的存储单元 起到一定的帮助。所有的设备均挂载在 `/dev/` 目录下。操作系统赋予每个设备的名称(并不是管理员给予每个分区或设备的名称) 遵循一定的命名规律。第一个 SATA 硬盘的第二个分区的名称将会是 sda2。名称的第一个字母暗示了存储类型,在这里指的是 SATA,但字母 “s” 也可能指的是 SCSI, FireWire(火线端口), 或 USB。第二个字母 “d” 指的是 disk(硬盘)。第三个字母指的是设备序数,即字母 “a” 指的是第一个 SATA 而 “b” 指的是第二个。最后的数字代表分区。一个带有所有分区的设备的命名将只有字母而没有数字。对于上面的例子,对应的名称为 sda 。作为命名的第一个字母还可能是 “h” ,这对应 PATA 硬盘(IDE)。以下为命名规律的一些例子。假如一个用户有一个 SATA 硬盘(sda),这个设备有 4 个分区- sda1, sda2, sda3, 和 sda4 。该用户删除了第三个分区,但直到格式化第四个分区之前,将第四个分区保留。然后该用户插入了一个带有一个分区 - 即sdb1- 的 usb 存储卡(sdb),又增加了一个 带有一个分区 -hda1- 的 IDE 硬盘 ,接着该用户又增加了一个 SCSI 硬盘 - sdc1 。接着用户移除了 USB 存储卡(sdb)。现在,SCSI 硬盘的名称仍然为 sdc,但如果这个 SCSI 被移除接着再被插入,则它的名称将变为 sdb。即使其他的存储设备仍然存在, 那个 IDE 硬盘的名称仍会有一个 “a”, 因为它是第一个 IDE 硬盘,IDE 设备的命名与 SCSI, SATA, FireWire, 和 USB 设备要分开计数。 + +### 恢复: ### + +每个恢复软件有其不同的功能,特征及支持的不同文件系统。下面是一些关于 使用 TestDisk 在一系列的文件系统中恢复文件的指南。 + +**FAT16, FAT32, exFAT (FAT64), NTFS, 以及 ext2/3/4:** + +TestDisk 是一个运行在 Linux, *BSD, SunOS, Mac OS X, DOS, 和 Windows 等操作系统下的开源,免费软件。 TestDisk 可以从下面的链接中找到 :[http://www.cgsecurity.org/wiki/TestDisk][1]。TestDisk 也可以通过键入 `sudo apt-get install testdisk` 来安装。TestDisk 有着许多的功能,但这篇文章将只关注 恢复文件 这个功能。 + +使用 root 权限从终端中打开 TestDisk 可以通过键入 `sudo testdisk` 命令。 + +现在, TestDisk 命令行应用将会被执行。终端的外观将会改变。TestDisk 询问用户 它是否可以保留日志,这完全由用户决定。假如一个用户正从系统存储中恢复文件,则 TestDisk 不会保留日志。可选择的选项有 "生成", "追加", 和 "无 log"。假如用户想保留日志,则日志将会保留在该用户的主目录。 + +![](http://www.linux.org/attachments/screen1-jpg.342/) + +在接着的屏幕中,存储设备以 `/dev/*`的方式被罗列出来。对于我的系统,系统的存储单元为 `/dev/sda`,这意味着我的存储单元为 一个 SATA硬盘(sd) 且它是第一个硬盘(a)。每个存储单元的容量以 Gigabyte(千兆字节)为单位显示的。使用上下键来选择一个存储设备然后点击进入。 + +![](http://www.linux.org/attachments/screen2-jpg.343/) + +下一屏显示出一个列有分区表(也叫做 分区映射表)的清单。正如文件有`文件配置表`,分区有着分区表。分区是存储设备上的划分部分。例如在几乎所有的 Linux 系统中,至少存在两种分区类型 - EXT3/4 和 Swap 。每一个分区表将会在下面被简要地描述。TestDisk 并不支持所有类型的分区表,所以下面的列表不是完整的。 + +![](http://www.linux.org/attachments/screen3-jpg.344/) + +- **Intel** - 这类分区表在 Windows 系统和许多的 Linux 系统中非常普遍,它也以 MBR 的名称为人们熟知。 +- **EFI GPT** - 这种类型的分区表通常用在 Linux 系统中。对于 Linux系统,这种分区表是最为推荐的, 因为逻辑分区或扩展分区的概念并不适用于 GPT (GUID Partition Table) 分区表。 这意味着,如果每个分区中有一个 Linux 系统,一个 Linux 用户可以从多种类型的 Linux 系统中进行多重启动。当然使用 GPT 分区表还有其他的优势,但那些已超出了本文的讨论范围。 +- **Humax** - Humax 分区映射表适用于韩国公司 Humax 生产的设备。 +- **Mac** - Apple 分区映射表 (APM) 适用于 Apple 的设备。 +- **None** - 某些设备并没有分区表。例如,许多 Subor 游戏控制台不使用分区映射表。如果一个用户试图从这类设备中恢复文件, 并且认为分区表不是其他的类型,则实际上 TestDisk 并不能找到任何的文件系统或者文件,这将给用户带来困扰。 +- **Sun** - Sun 分区表适用于 Sun 系统。 +- **Xbox** -Xbox 适用于使用 Xbox 分区映射表的自家存储设备。 + +假如用户选择了 “Xbox” ,尽管他的系统使用了 GPT 分区表, 那么 TestDisk 将不能找到任何分区或文件系统。假如 TestDisk 按照用户的选择执行,则它将不正确地进行猜测。(下面的图片显示的是当分区表类型错误时的输出) + +![](http://www.linux.org/attachments/xbox-jpg.350/) + +一旦用户为他们的设备选择了正确的选项,则在下一屏中,选择 “高级” 选项。 + +![](http://www.linux.org/attachments/screen4-jpg.345/) + +现在,用户将看到一个列有 在用户的存储设备中所有的文件系统或分区 的列表。假如用户选择了错误的分区映射表,则在这一步中用户就将会知道他们做出了错误的选择。假如没有错误,通过放置文字类型的光标来高亮含有被删除文件的分区。使用 左右键 来高亮位于终端底部的 “列表”。接着,点击确认。 + +![](http://www.linux.org/attachments/screen5-jpg.346/) + +新的一屏便会呈现出列有文件和目录的列表。那些发白的文件就是还没有被删除的文件,而红色的文件就是那些已经被删除了的文件。最右边的一列是文件的名称,从右到左方向的接着一列是文件的创建日期,再往左的一列是文件的大小(以 byte(比特) 为单位),最左边带有虚线, “d” ,“r”, “w” 和"x"的一列则代表的是文件的权限情况。“d” 表示该文件为一个目录,其他的权限术语与本文关系不大。在列表的最顶端以“.”代表的一项表示当前目录,第二行以".."代表的一项表示当前目录的上级目录,通过选择这一行,用户可以到达上级目录。举个例子,我想进入"Xaiml_Dataset" 目录,该目录基本上由被删除的文件组成。通过按键盘上的 "c"键,我将恢复文件 "computers.xaiml",接着我被询问选择一个目标目录,当然,我将放置该文件到另一个分区中。现在,我在我的家目录中,并按下了“c”键。哪个目录被高亮并没有什么影响。当前目录就是目标目录,在屏幕的上方,将会显示“复制完成”的消息。在我的家目录中便会有一个名为"Xaiml_Dataset"的目录,里面里有名为 Xaiml 的文件。 假如我在更多的 已删除文件上按“c” 键,则这些文件将会被放置到新的文件夹中而无需再向我询问目标目录。 + +![](http://www.linux.org/attachments/screen6-jpg.347/) + +![](http://www.linux.org/attachments/screen7-jpg.348/) + +![](http://www.linux.org/attachments/screen8-jpg.349/) + +当这些步骤完成后,重复按“q”键直到看到正常的终端模样。目录"Xaiml_Dataset" 只能被 root 用户访问。为了修复这个问题,使用 root 权限改变该目录及其子目录的权限。做完这些后,文件便被恢复了且用户可以访问它们。 + +### ReiserFS: ### + +为了从 ReiserFS 文件系统中恢复一个文件,首先需将分区中的所有文件做一个备份。因为如果发生某些错误, 这个方法可能会引起文件丢失。接着执行下面的命令,其中 `DEVICE`指的是那些以 sda2 形式命名的设备。一些文件将被放入 lost+found 目录而其他则会保存到原先被删除的位置。 + + reiserfsck --rebuild-tree --scan-whole-partition /dev/DEVICE + +### 恢复被某个程序打开的删除文件: ### + +假设用户意外地删除了一个文件,且该文件被某个程序打开。虽然在硬盘中该文件被删除了,但这个程序正使用着位于 RAM 中的该文件的副本。幸好,我们有两种简单的解决方法来恢复该文件。 + +假如这个软件有自动保存功能,如文本编辑器,则用户可以重新保存该文件,这样,文本编辑器可以将该文件写入硬盘中。 + +假设在音乐播放器中有一个 MP3 文件,而该音乐播放器并不能保存该 MP3 文件,则这种情形下需要比先前花更多的时间来恢复文件。不幸的是,这种方法并不能保证在所有的系统和应用中有效。首先,键入下面的命令。 + + lsof -c smplayer | grep mp3 + +上面的命令会列出所有由 smplayer 使用的文件,这个列表由 `grep` 命令通过管道搜索 mp3 。命令的输入类似于下面: + + smplayer 10037 collier mp3 169r 8,1 676376 1704294 /usr/bin/smplayer + +现在,键入下面的命令来直接从 RAM(在 Linux 系统中,`/proc/`代表 RAM) 中恢复文件,并复制该文件到选定的文件夹中。其中 `cp` 指的是复制命令,输出中的数字 10037 来自于进程数,输出中的数字 169 指的是文件描述符,"~/Music/"为目标目录,最后的 "music.mp3" 为用户想恢复的文件的名称。 + + cp /proc/10037/fd/169 ~/Music/music.mp3 + +### 真正的删除: ### + +为确保一个文件不能被恢复,可以使用一个命令来 “擦除” 硬盘。擦除硬盘意味着向硬盘中写入无意义的数据。例如,许多擦除程序向硬盘中写入零,随机字母或随机数据,没有空间将会被占用或丢失,擦除程序只是对空白空间进行重写覆盖。假如存储单元被文件占满而没有空余空间,则所有先前被删除的文件将会消失。 + +擦除硬盘的目的是确保隐私数据不被他人看见。举个例子,一个公司可能预订了一些新的电脑,总经理决定将旧的电脑卖掉,然而,新的电脑拥有者可能会看到公司的一些机密或诸如信用卡号码,地址等顾客信息。幸好,公司的电脑技术人员可以在卖掉这些旧电脑之前,擦除这些硬盘。 + +为了安装擦除程序 secure-delete,键入 `sudo apt-get install secure-delete`,这个命令将会安装一个包含 4 个程序的程序集,用以确保被删除的文件不能被恢复。 + +- srm - 永久删除一个文件。使用方法: `srm -f ./secret_file.txt` +- sfill - 擦除空白空间。使用方法: `sfill -f /mount/point/of/partition` +- sswap - 擦除 swap 空间。使用方法: `sswap -f /dev/SWAP_DEVICE` + +假如电脑真的要去删除打算删除的文件,那么需要花费更长的时间去执行删除任务。将某些空间标记为空白空间是快速且容易的,但使得文件永远消失需要花费一定的时间。例如,擦除一个存储单元,可能需要花费几个小时的时间(根据磁盘容量大小)。总之,当前的系统工作良好,因为即便用户清空了垃圾箱,他们仍然有另一次机会来改变他们当初的想法。 + +-------------------------------------------------------------------------------- + +via: http://www.linux.org/threads/undelete-files-on-linux-systems.4316/ + +作者:[DevynCJohnson][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linux.org/members/devyncjohnson.4843/ +[1]:http://www.cgsecurity.org/wiki/TestDisk From 05fe9ecaf54a2a8f2efa5bbe0c382f9dcf99c6ba Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 12 Feb 2015 16:38:19 +0800 Subject: [PATCH 299/725] Delete 20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md --- ...umble in Ubuntu an Opensource VoIP Apps.md | 80 ------------------- 1 file changed, 80 deletions(-) delete mode 100644 sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md diff --git a/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md deleted file mode 100644 index f49cc07c31..0000000000 --- a/sources/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ /dev/null @@ -1,80 +0,0 @@ -translating by martin. - -Install Mumble in Ubuntu an Opensource VoIP Apps -================================================================================ -Mumble is a free and open source voice over IP (VoIP) application, released under the new BSD license, primarily designed for use by gamers and it's similar to programs such as TeamSpeak and Ventrilo. It uses a server to witch people can connect with a client to talk to each other. - -It offers the following great features: - -- low latency, very important for gaming -- offers in-game overlay so you can see who is talking and positional audio to hear the players from where they are located -- has encrypted communications so you can stay private and secure -- it also offers a few nice configuration interface that are easy to use -- very stable and good on resource usage for your server - -### Install Mumble ### - -[Mumble][1] has become very popular and is now present in the software repositories of the major Linux distributions and this makes it easy to install and setup. In Ubuntu you can use the command line to install it with apt-get by running the following command: - - $ sudo apt-get install mumble-server - -![mumble install](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-install.jpg) - -This will install the server (also called Murmur) on your server. - -### Configuring Mumble ### - -To setup Mumble you will need to run the following command: - -$ sudo dpkg-reconfigure mumble-server - -The following questions will pop-up: - -![mumble q1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q1.jpg) - -Pick Yes to have mumble start when your server boots, next it will ask if you wish to run it in a high-priority mode that will ensure lower latency, it's a good idea to have it run it like that for the best performance: - -![mumble q2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q2.jpg) - -It will then require you to introduce a password for the administrator user of the new mumble server, you will need to remember this password for when you will log-in. - -![mumble q3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q3.jpg) - -### Installing Mumble Client ### - -The client can be installed on most major platforms like Windows, Mac OS X and Linux. We will cover the installation and configuration on Ubuntu Linux, to install it you can use the Software Center or run the following command: - - $ sudo apt-get install mumble - -When you first run Mumble it will present you with a wizard to help you configure your audio input and output to make the best of the client. It will first ask you what sound device and microphone to use: - -![mumble client 1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-1.jpg) - -Then it will help you calibrate the devices: - -![mumble client 2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-2.jpg) - -And since mumble encrypts all the communication it will ask you to also create a certificate: - -![mumble client 3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-3.jpg) - -After you finish with the wizard you can add your first server and connect to it the dialog will look like this: - -![mumble add server](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-add-server.jpg) - -First enter a label, this can be anything you wish to remember the server by, next add the address and port of the server, and finally use "SuperUser" as user and the password you used when you configured the mumble server. - -You can now connect to the server and enjoy all of the features while you play online or talk to your friends or partners. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/ubuntu-how-to/install-mumble-ubuntu/ - -作者:[Adrian Dinu][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/adriand/ -[1]:http://wiki.mumble.info/wiki/Main_Page From 96fd7daa9c9b2bba55ea585f7ada0faeb505f3d1 Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 12 Feb 2015 16:40:20 +0800 Subject: [PATCH 300/725] translated --- ...umble in Ubuntu an Opensource VoIP Apps.md | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md diff --git a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md new file mode 100644 index 0000000000..65607a059b --- /dev/null +++ b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -0,0 +1,79 @@ +Ubuntu安装Mumble一个开源VoIP应用 +================================================================================ +Mumble是一个免费开源的VoIP应用,遵守New BSD License,主要面向的用户群体是玩家。运行起来类似于TeamSpeak和Ventrilo,用户通过连接到同一个服务器来实现相互通讯。 + +Mumble提供了如下的一些特性: + +- 低延迟,这点对游戏相当重要 +- 提供游戏中的可视插件,通过它你可以知道是谁正在和你通话并定位他们的位置 +- 交谈内容经过加密的,能够保护你的隐私和安全 +- 界面简单易于上手 +- 稳定高效的使用你的服务器资源 + +### 安装 Mumble ### + +[Mumble][1]已经流行开来,进入了许多linux主流发行版的软件仓库,这使它安装起来更加的方便。若你使用的是Ubuntu那么使用apt-get就能安装,详细命令如下: + + $ sudo apt-get install mumble-server + +![mumble install](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-install.jpg) + +这条命令将会在你的服务器上安装服务端(亦称Murmur)。 + +### 配置 Mumble ### + +运行以下命令启动Mumble: + +$ sudo dpkg-reconfigure mumble-server + +会弹出以下一些问题: + +![mumble q1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q1.jpg) + +选择“是”开机自动启动mumble,接着它会询问你是否运行高性能模式以保持低延迟,为了让它保持最佳性能这是个不错的主意。 + +![mumble q2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q2.jpg) + +接着为你刚安装好的mumble服务端设置最高权限用户的密码,记住密码会在登录时用到。 + +![mumble q3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q3.jpg) + +### 安装 Mumble 客户端 ### + +客户端可以安装到许多的主流操作系统中,例如windows,mac和linux。我们将涉及在Ubuntu linux上的安装和配置,你可以使用软件中心或以下的命令安装客户端: + + $ sudo apt-get install mumble + +第一次运行mumble时,导向将会帮助你配置音频的输入输出,使其能在客户端上保持最好的效果。第一次同样也会询问你要使用的是什么声音设备和麦克风: + +![mumble client 1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-1.jpg) + +然后它将帮你校准设备: +Then it will help you calibrate the devices: + +![mumble client 2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-2.jpg) + +在mumble帮你加密通讯时会询问你是否创建证书: + +![mumble client 3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-3.jpg) + +完成导向后你就能添加第一个服务器,连接对话框如下图所示: + +![mumble add server](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-add-server.jpg) + +首先输入一个标签,名字任意因为那只不过是为了记住服务器的,然后输入服务器的地址和端口,最后使用“SuperUser”作为用户名而密码则是你配置mumble服务器端时输入的密码。 + +现在你可以连接到服务器了,在联网玩游戏或与你好友、队友聊天开黑时享受这些功能给你带来的乐趣吧! + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/install-mumble-ubuntu/ + +作者:[Adrian Dinu][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/adriand/ +[1]:http://wiki.mumble.info/wiki/Main_Page From 3f0d9425f39e2116092c916a22ca4761d3cf3001 Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 12 Feb 2015 16:42:51 +0800 Subject: [PATCH 301/725] Update 20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md --- ...20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md index 65607a059b..51f3344ca9 100644 --- a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -24,7 +24,7 @@ Mumble提供了如下的一些特性: 运行以下命令启动Mumble: -$ sudo dpkg-reconfigure mumble-server + $ sudo dpkg-reconfigure mumble-server 会弹出以下一些问题: From 68c1bae04996369c6429482414d0f4cd3a60b85d Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 12 Feb 2015 16:53:02 +0800 Subject: [PATCH 302/725] Update 20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md --- ...20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md index 51f3344ca9..d471c4743f 100644 --- a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -1,4 +1,4 @@ -Ubuntu安装Mumble一个开源VoIP应用 +Ubuntu安装Mumble——一个开源VoIP应用 ================================================================================ Mumble是一个免费开源的VoIP应用,遵守New BSD License,主要面向的用户群体是玩家。运行起来类似于TeamSpeak和Ventrilo,用户通过连接到同一个服务器来实现相互通讯。 From 98cdc238b1e608678d52a2f0cc648f18babe8258 Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 12 Feb 2015 16:54:48 +0800 Subject: [PATCH 303/725] Update 20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md --- ...20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md index d471c4743f..e1911efe29 100644 --- a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -1,4 +1,4 @@ -Ubuntu安装Mumble——一个开源VoIP应用 +Ubuntu上的一个开源VoIP应用——Mumble ================================================================================ Mumble是一个免费开源的VoIP应用,遵守New BSD License,主要面向的用户群体是玩家。运行起来类似于TeamSpeak和Ventrilo,用户通过连接到同一个服务器来实现相互通讯。 From e8ffd880ac46003f3b81ab11623b6636559c5d9f Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 12 Feb 2015 16:56:21 +0800 Subject: [PATCH 304/725] Update 20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md --- ...211 Install Mumble in Ubuntu an Opensource VoIP Apps.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md index e1911efe29..254345f765 100644 --- a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -34,13 +34,13 @@ Mumble提供了如下的一些特性: ![mumble q2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q2.jpg) -接着为你刚安装好的mumble服务端设置最高权限用户的密码,记住密码会在登录时用到。 +接着为你刚安装好的mumble服务端设置最高权限用户的密码,记住密码它会在登录时用到。 ![mumble q3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-q3.jpg) ### 安装 Mumble 客户端 ### -客户端可以安装到许多的主流操作系统中,例如windows,mac和linux。我们将涉及在Ubuntu linux上的安装和配置,你可以使用软件中心或以下的命令安装客户端: +客户端可以安装到许多的主流操作系统中,例如windows,mac和linux。我们将教你在Ubuntu linux上安装和配置,你可以使用软件中心也可以用命令安装客户端: $ sudo apt-get install mumble @@ -49,11 +49,10 @@ Mumble提供了如下的一些特性: ![mumble client 1](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-1.jpg) 然后它将帮你校准设备: -Then it will help you calibrate the devices: ![mumble client 2](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-2.jpg) -在mumble帮你加密通讯时会询问你是否创建证书: +因为mumble帮你加密所有的通讯内容所以它会征询你创建证书: ![mumble client 3](http://blog.linoxide.com/wp-content/uploads/2015/01/mumble-client-3.jpg) From b1a9efec421fd4813b682e1ae726e56ff7879509 Mon Sep 17 00:00:00 2001 From: martin qi Date: Fri, 13 Feb 2015 10:30:08 +0800 Subject: [PATCH 305/725] [translating] 20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md --- ...1 Simple Steps Migration From MySQL To MariaDB On Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md index 1588c979a4..fc04e08a2f 100644 --- a/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md +++ b/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md @@ -1,3 +1,5 @@ +Translating by martin. + Simple Steps Migration From MySQL To MariaDB On Linux ================================================================================ Hi all, this tutorial is all gonna be about how to migrate from MySQL to MariaDB on Linux Server or PC. So, you may ask why should we really migrate from MySQL to MariaDB for our database management. Here, below are the reasons why you should really need to migrate your database management system from MySQL to MariaDB. @@ -166,4 +168,4 @@ via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ [a]:http://linoxide.com/author/arunp/ [1]:https://mariadb.org/ -[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi \ No newline at end of file +[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi From b3c9a61fb99fc112755c725ce0ccefcdf6edfbc0 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Fri, 13 Feb 2015 10:44:32 +0800 Subject: [PATCH 306/725] [translated] 20150115 Get back your privacy and control.md --- ...50115 Get back your privacy and control.md | 1114 ----------------- ...50115 Get back your privacy and control.md | 1111 ++++++++++++++++ 2 files changed, 1111 insertions(+), 1114 deletions(-) delete mode 100644 sources/tech/20150115 Get back your privacy and control.md create mode 100644 translated/tech/20150115 Get back your privacy and control.md diff --git a/sources/tech/20150115 Get back your privacy and control.md b/sources/tech/20150115 Get back your privacy and control.md deleted file mode 100644 index 915e3b073e..0000000000 --- a/sources/tech/20150115 Get back your privacy and control.md +++ /dev/null @@ -1,1114 +0,0 @@ -zpl1025 -Get back your privacy and control over your data in just a few hours: build your own cloud for you and your friends -================================================================================ -40'000+ searches over 8 years! That's my Google Search history. How about yours? (you can find out for yourself [here][1]) With so many data points across such a long time, Google has a very precise idea of what you've been interested in, what's been on your mind, what you are worried about, and how that all changed over the years since you first got that Google account. - -### Some of the most personal pieces of your identity are stored on servers around the world beyond your control ### - -Let's say you've been a Gmail user between 2006 and 2013 like me, meaning you received 30'000+ emails and wrote about 5000 emails over that 7 year period. Some of the emails you sent or received are very personal, maybe so personal that you probably wouldn't like even some family members or close friends to go through them systematically. Maybe you also drafted a few emails that you never sent because you changed your mind at the last minute. But even if you never sent them, these emails are still stored somewhere on a server. As a result, it's fair to say that Google servers know more about your personal life than your closest friends or your family. - -Statistically, it's a safe bet to consider that you've got a smartphone. You can barely use the phone without using the contacts app which stores your contacts in Google Contact on Google servers by default. So not only does Google know about your emails, but also about your offline contacts: who you like to call, who calls you, whom you text, and what you text them about. You don't have to take my word for it, you can verify for yourself by taking a look at the permissions you gave apps such as the Google Play Service to read the list of people that called you and the SMS you got. Do you also use the calendar app that comes with your phone? Unless you explicitly opted out while setting up your calendar, this means that Google knows precisely what you're up to, at every time of the day, day after day, year after year. The same applies if you chose an iPhone over an Android phone, except Apple gets to know about your correspondance, contacts and schedule instead of Google. - -Do you also take great care to keep the contacts in your directory up-to-date, updating your friend's, colleagues's and and family's email addresses and phone numbers when they move to a new job or change carrier? That gives Google an extraordinarily accurate, up-to-date picture of your social network. And you love the GPS of your smartphone which you use a lot together with Google Maps. This means Google not only knows what you do from your calendar but also where you are, where you live, where you work. And by correlating GPS location data across users, Google can also tell with whom you may socializing with right now. - -### Your daily habit of handing out your most personal information will impact your life in a way that no one can even forsee ### - -To summarize, if you are an average internet user, Google has up-to-date, in-depth information about your interests, worries, passions, questions, over almost 10 years. It has a collection of some of your most personal messages (emails, SMS), an hour-by-hour detail of your daily activities and location, and a high-quality picture of your social network. Such an intimate knowledge of you likely goes beyond what your closest friends, family, or your sweetheart know of you. - -It wouldn't come to mind to give this mass of deeply personal information to complete strangers, for instance by putting it all on a USB key and leaving it on a table in a random cafe with a note saying 'Personal data of Olivier Martin, use as you please'. Who knows who might find it and what they would do with it? Yet, we have no problem handing in core pieces of your identity to strangers at IT companies with a strong interest in our data (that's how they make their bread) and [world-class experts in data analysis][2], perhaps just because it happens by default without us thinking about it when we hit that green 'Accept' button. - -With so much high-quality information, over the years, Google may well get to know you better than you can ever hope to know yourself: heck, crawling through my digital past right now, I can't remember having written half of the emails I sent five years ago. I am surprised and pleased to rediscover my interest in marxism back in 2005 and my joining [ATTAC][3] (an organization which strives to limit speculation and improve social justice by taxing financial transactions) the next year. And god knows why I was so much into dancing shoes back in 2007. These is pretty harmless information (you wouldn't have expected me to reveal something embarassing here, would you? ;-). But by connecting the dots between high-quality data over different aspects of your life (what, when, with whom, where, ...) over such time spans, one may extrapolate predictive statements about you. For instance, from the shopping habits of a 17-year-old girl, supermarkets can tell that she is pregnant before her dad even hears about it ([true story][4]). Who knows what will become possible with high-quality data the like Google has, which goes well beyond shopping habits? By connecting the dots, maybe one can predict how your tastes or political views will change in the coming years. Today, [companies you have never heard of claim to have 500 data points about you][5], including religion, sexual orientation and political views. Speaking of politics, what if you decide to go into politics in 10 years from now? Your life may change, your views too, and you may even forget, but Google won't. Will you have to worry that your opponent is in touch with someone who has access to your data at Google and can dig up something embarassing on you from those bottomless wells of personal data you gave away over the years? How long until Google or Facebook get hacked [just like Sony was recently hacked][6] and all your personal data end up in the public sphere forever? - -One of the reason most of us have entrusted our personal data to these companies is that they provide their services for free. But how free is it really? The value of the average Google account varies depending on the method used to estimate it: [1000 USD/year][7] accounts for the amount of time you invest in writing emails, while the value of your account for the advertisement industry is somewhere between [220 USD/year][8] and [500 USD/year][9]. So the service is not exactly free: you pay for it through advertisement and the yet unknown uses that our data may find in the future. - -I've been writing about Google mostly because that's the company I've entrusted most of my digital identify to so far and hence the one I know best. But I may well have written Apple or Facebook. These companies truly changed the world with their fantastic advances in design, engineering and services we love(d) to use, every day. But it doesn't mean we should stack up all our most personal data in their servers and entrust them with our digital lives: the potential for harm is just too large. - -### Claim back your privacy and that of people you care for in just 5h ### - -It does not have to be this way. You can live in the 21st century, have a smartphone, use email and GPS on daily basis, and still retain your privacy. All you need to do is get back control over your personal data: emails, calendar, contacts, files, etc.. The [Prism-Break.org][10] website lists software that help controlling the fate of your personal data. Beyond these options, the safest and most powerful way to get back control over your personal data is to host your cloud yourself, by building your own server. But you may just not have the time and energy to research how exactly to do that and make it work smoothly. - -That's where the present article fits in. In just 5 hours, we will set up a server to host your emails, contacts, calendars and files for you, your friends and your family. The server is designed to act as a hub or cloud for your personal data, so that you always retain full control over it. The data will automatically be synchronized between your PC/laptop, your phone and your tablet. Essentially, **we will set up a system that replaces Gmail, Google Drive / Dropbox, Google Contacts, Google Calendar and Picasa**. - -Just doing this for yourself will already be a big step. But then, a significant fraction of your personal information will still leak out and end up on some servers in the silicon valley, just because so many of the people you interact with every day use Gmail and have smartphones. So it's a good idea to have some of the people you are closest to join the adventure. - -We will build a system that - -- **supports an arbitrary number of domains and users**. This makes it easy to share your server with family and friends, so that they get control over their personal data too and can share the cost of the server with you. The people sharing your server can use their own domain name or share yours. -- **lets you send and receive your emails from any network** upon successfully logging in onto the server. This way, you can send your emails from any of your email addresses, from any device (PC, phone, tablet), and any network (at home, at work, from a public network, ...) -- **encrypts network traffic** when sending and receiving emails so people you don't trust won't fish out your password and won't be able to read your private emails. -- **offers state-of-the-art antispam**, combining black lists of known spammers, automatic greylisting, and adaptative spam filtering. Re-training the adaptative spam filter if an email is misclassified is simply done by moving spam in or out of the Junk/Spam folder. Also, the server will contribute to community-based spam fighting efforts. -- **requires just a few minutes of maintenance once in a while**, basically to install security updates and briefly check the server logs. Adding a new email address boils down to adding one record to a database. Apart from that, you can just forget about it and live your life. I set up the system described in this article 14 months ago and the thing has just been running smoothly since then. So I completely forgot about it, until I recently smiled at the thought that casually pressing the 'Check email' button of my phone caused electrons to travel all the way to Iceland (where my server sits) and back. - -To go through this article, you'll need a minimum of technical capabilities. If you know what is the difference between SMTP and IMAP, what is a DNS, and have a basic understanding of TCP/IP, you know enough to follow through. You will also need a basic working knowledge of Unix (working with files from the command line, basic system administration). And you'll need a total of 5 hours of time to set it up. - -Here's an overview what we will do: - -- [Get a Virtual Private Server, a domain name, and set them up][11] -- [Set up postfix and dovecot to send and receive email][12] -- [Prevent SPAM from reaching your INBOX][13] -- [Make sure the emails you send get through spam filters][14] -- [Host calendars, contacts, files with Owncloud and set up webmail][15] -- [Sync your devices to the cloud][16] - -### This article was inspired by and builds upon previous work ### - -This article draws heavily from two other articles, namely [Xavier Claude][17]'s and [Drew Crawford][18]'s introduction to email self-hosting. - -The article includes all the features of Xavier's and Draw's articles, except from three features that Drew had and which I didn't need, namely push support for email (I like to check email only when I decide to, otherwise I get distracted all the time), fulltext search in email (which I don't have a use for), and storing emails in an encrypted form (my emails and data are not critical to the point that I have to encrypt them locally on the server). If you need any of these features, feel free to just add them by following to the respective section of Drew's article, which is compatible with the present one. - -Compared to Xavier's and Drew's work, the present article improves on several aspects: - -- it fixes bugs and typos based on my experience with Drew's article and the numerous comments on his original article. I also went through the present article, setting up the server from scratch several times to replicate it and make sure it would work right out of the box. -- low maintenance: compared to Xavier's work, the present article adds support for multiple email domains on the server. It does so by requiring the minimum amount of server maintenance possible: basically, to add a domain or a user, just add one row to a mysql table and that's it (no need to add sieve scripts, ...). -- I added webmail. -- I added a section on setting up a cloud, to host not just your emails but also your files, your addressbook / contacts (emails, phone numbers, birthdays, ...), calendars and pictures for use across your devices. - -### Get a Virtual Private Server, a domain name, and set them up ### - -Let's start by setting the basic infrastructure: our virtual private server and our domain name. - -I've had an excellent experience with the Virtual Private Servers (VPS) of [1984.is][19] and [Linode][20]. In this article, we will use **Debian Wheezy**, for which both 1984 and Linode provide ready-made images to deploy on your VPS. I like 1984 because the servers are hosted in Iceland which run exclusively on renewable energy (geothermical and hydropower) and hence does not contribute to the climate change, unlike [the coal power plants on which most US-based datacenters currently run on][21]. Also, they put emphasis on [civil liberties, transparency, freedom][22] and [Free Software][23]. - -It could be a good idea to start a file to store the various passwords we will need to set on the server (user accounts, mail accounts, cloud accounts, database accounts). It's definitely a good idea to encrypt this file (maybe with [GnuPG][24]), so that it won't be too easy to attack your server even if the computer you use to set up your server gets stolen or compromised. - -For registering a domain name, I've been using the services of [gandi][25] for over 10 years now, also with satisfaction. For this article, we will set up a zone with the name **jhausse.net**. We then add a host named **cloud.jhausse.net** to it, set the MX record to that host. While you're at it, set short Time To Lives (TTL) to your records like 300 seconds so that you'll be able to make changes to your zone and test the result rapidly while you're setting up the server. - -Finally, set the PTR record (reverse DNS) so that the IP address of the host maps back to its name. If you don't understand the previous sentence, read [this article][26] to get the background. If you use Linode, you can set the PTR record in the control panel in the Remote Access section. With 1984, contact the tech support who will help you with it. - -On the server, we will start by adding a non-privledged user, so that we don't end up working as root all the time. Also, to log in as root will require an extra layer of security. - - adduser roudy - -Then, in **/etc/ssh/sshd_config**, we set - - PermitRootLogin no - -and reload the ssh server - - service ssh reload - -Then, we'll need to change the hostname of the server. Edit **/etc/hostname** so that it has just a single line with your hostname, in our case - - cloud - -Then, edit the ssh server's public key files **/etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ecdsa_key.pub** so that the end of the file reflects your hostname, or instance **root@cloud**. Then restart the system to make sure the hostname is fixed wherever is should be - - reboot - -We will update the system and remove services we don't need to reduce the risk of remote attacks. - - apt-get update - apt-get dist-upgrade - service exim4 stop - apt-get remove exim4 rpcbind - apt-get autoremove - apt-get install vim - -I like to use vim for editing config files remotely. For this, it helps to automatically turn on syntax highlighting. We do so by adding - - syn on - -to **~/.vimrc**. - -### Set up postfix and dovecot to send and receive email ### - - apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-mysql mysql-server dovecot-lmtpd postgrey - -In the [Postfix][27] configuration menu, we select **Internet Site**, and set the system mail name to **jhausse.net**. - -We will now set up a database to store the list of domains hosted on our server, the list of users for each of these domains (together with their password), and a list of mail aliases (to forward email from a given address to another one). - - mysqladmin -p create mailserver - mysql -p mailserver - mysql> GRANT SELECT ON mailserver.* TO 'mailuser'@'localhost' IDENTIFIED BY 'mailuserpass'; - mysql> FLUSH PRIVILEGES; - mysql> CREATE TABLE `virtual_domains` ( - `id` int(11) NOT NULL auto_increment, - `name` varchar(50) NOT NULL, - PRIMARY KEY (`id`) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - mysql> CREATE TABLE `virtual_users` ( - `id` int(11) NOT NULL auto_increment, - `domain_id` int(11) NOT NULL, - `password` varchar(106) NOT NULL, - `email` varchar(100) NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `email` (`email`), - FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE - ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - mysql> CREATE TABLE `virtual_aliases` ( - `id` int(11) NOT NULL auto_increment, - `domain_id` int(11) NOT NULL, - `source` varchar(100) NOT NULL, - `destination` varchar(100) NOT NULL, - PRIMARY KEY (`id`), - FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE - ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -We will host the **jhausse.net** domain. If there are other domains you'd like to host, you can also add them. We also set up a postmaster address for each domain, which forwards to **roudy@jhausse.net**. - - mysql> INSERT INTO virtual_domains (`name`) VALUES ('jhausse.net'); - mysql> INSERT INTO virtual_domains (`name`) VALUES ('otherdomain.net'); - mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('1', 'postmaster', 'roudy@jhausse.net'); - mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('2', 'postmaster', 'roudy@jhausse.net'); - -We now add a locally hosted email account **roudy@jhausse.net**. First, we generate a password hash for it: - - doveadm pw -s SHA512-CRYPT - -and then add the hash to the database - - mysql> INSERT INTO `mailserver`.`virtual_users` (`domain_id`, `password`, `email`) VALUES ('1', '$6$YOURPASSWORDHASH', 'roudy@jhausse.net'); - -Now that our list of domains, aliases and users are in place, we will set up postfix (SMTP server, for outgoing mail). Replace the contents of **/etc/postfix/main.cf** with the following: - - myhostname = cloud.jhausse.net - myorigin = /etc/mailname - mydestination = localhost.localdomain, localhost - mynetworks_style = host - - # We disable relaying in the general case - smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination - # Requirements on servers that contact us: we verify the client is not a - # known spammer (reject_rbl_client) and use a graylist mechanism - # (postgrey) to help reducing spam (check_policy_service) - smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023 - disable_vrfy_command = yes - inet_interfaces = all - smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) - biff = no - append_dot_mydomain = no - readme_directory = no - - # TLS parameters - smtpd_tls_cert_file=/etc/ssl/certs/cloud.crt - smtpd_tls_key_file=/etc/ssl/private/cloud.key - smtpd_use_tls=yes - smtpd_tls_auth_only = yes - smtp_tls_security_level=may - smtp_tls_loglevel = 1 - smtpd_tls_loglevel = 1 - smtpd_tls_received_header = yes - smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache - smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache - - # Delivery - alias_maps = hash:/etc/aliases - alias_database = hash:/etc/aliases - message_size_limit = 50000000 - recipient_delimiter = + - - # The next lines are useful to set up a backup MX for myfriendsdomain.org - # relay_domains = myfriendsdomain.org - # relay_recipient_maps = - - # Virtual domains - virtual_transport = lmtp:unix:private/dovecot-lmtp - virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf - virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf - virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf - local_recipient_maps = $virtual_mailbox_maps - -Now we need to teach postfix to figure out which domains we would like him to accept emails for using the database we just set up. Create a new file **/etc/postfix/mysql-virtual-mailbox-domains.cf** and add the following: - - user = mailuser - password = mailuserpass - hosts = 127.0.0.1 - dbname = mailserver - query = SELECT 1 FROM virtual_domains WHERE name='%s' - -We teach postfix to find out whether a given email account exists by creating **/etc/postfix/mysql-virtual-mailbox-maps.cf** with the following content - - user = mailuser - password = mailuserpass - hosts = 127.0.0.1 - dbname = mailserver - query = SELECT 1 FROM virtual_users WHERE email='%s' - -Finally, postfix will use **/etc/postfix/mysql-virtual-alias-maps.cf** to look up mail aliases - - user = mailuser - password = mailuserpass - hosts = 127.0.0.1 - dbname = mailserver - query = SELECT virtual_aliases.destination as destination FROM virtual_aliases, virtual_domains WHERE virtual_aliases.source='%u' AND virtual_aliases.domain_id = virtual_domains.id AND virtual_domains.name='%d' - -With all this in place, it is now time to test if postfix can query our database properly. We can do this using **postmap**: - - postmap -q jhausse.net mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf - postmap -q roudy@jhausse.net mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf - postmap -q postmaster@jhausse.net mysql:/etc/postfix/mysql-virtual-alias-maps.cf - postmap -q bob@jhausse.net mysql:/etc/postfix/mysql-virtual-alias-maps.cf - -If you set up everything properly, the first two queries should return 1, the third query should return **roudy@jhausse.net** and the last one should return nothing at all. - -Now, let's set up dovecot (the IMAP server, to fetch incoming mail on the server from our devices). Edit **/etc/dovecot/dovecot.conf** to set the following parameters: - - # Enable installed protocol - # !include_try /usr/share/dovecot/protocols.d/*.protocol - protocols = imap lmtp - -which will only enable imap (to let us fetch emails) and lmtp (which postfix will use to pass incoming emails to dovecot). Edit **/etc/dovecot/conf.d/10-mail.conf** to set the following parameters: - - mail_location = maildir:/var/mail/%d/%n - [...] - mail_privileged_group = mail - [...] - first_valid_uid = 0 - -which will store emails in /var/mail/domainname/username. Note that these settings are spread at different locations in the file, and are sometimes already there for us to set: we just need to comment them out. The other settings which are already in the file, you can leave as is. We will have to do the same to update settings in many more files in the remaining of this article. In **/etc/dovecot/conf.d/10-auth.conf**, set the parameters: - - disable_plaintext_auth = yes - auth_mechanisms = plain - #!include auth-system.conf.ext - !include auth-sql.conf.ext - -In **/etc/dovecot/conf.d/auth-sql.conf.ext**, set the following parameters: - - passdb { - driver = sql - args = /etc/dovecot/dovecot-sql.conf.ext - } - userdb { - driver = static - args = uid=mail gid=mail home=/var/mail/%d/%n - } - -where we just taught dovecot that users have their emails in /var/mail/domainname/username and to look up passwords from the database we just created. Now we still need to teach dovecot how exactly to use the database. To do so, put the following into **/etc/dovecot/dovecot-sql.conf.ext**: - - driver = mysql - connect = host=localhost dbname=mailserver user=mailuser password=mailuserpass - default_pass_scheme = SHA512-CRYPT - password_query = SELECT email as user, password FROM virtual_users WHERE email='%u'; - -We now fix permissions on config files - - chown -R mail:dovecot /etc/dovecot - chmod -R o-rwx /etc/dovecot - -Almost there! We just need to edit a couple files more. In **/etc/dovecot/conf.d/10-master.conf**, set the following parameters: - - service imap-login { - inet_listener imap { - #port = 143 - port = 0 - } - inet_listener imaps { - port = 993 - ssl = yes - } - } - - service pop3-login { - inet_listener pop3 { - #port = 110 - port = 0 - } - inet_listener pop3s { - #port = 995 - #ssl = yes - port = 0 - } - } - - service lmtp { - unix_listener /var/spool/postfix/private/dovecot-lmtp { - mode = 0666 - group = postfix - user = postfix - } - user = mail - } - - service auth { - unix_listener auth-userdb { - mode = 0600 - user = mail - #group = - } - - # Postfix smtp-auth - unix_listener /var/spool/postfix/private/auth { - mode = 0666 - user = postfix - group = postfix - } - - # Auth process is run as this user. - #user = $default_internal_user - user = dovecot - } - - service auth-worker { - user = mail - } - -Note that we set ports for all services but imaps to 0, which effectively disables them. Then, in **/etc/dovecot/conf.d/15-lda.conf**, specify an email address for the postmaster: - - postmaster_address = postmaster@jhausse.net - -Last but not least, we need to generate a pair of public and private key for the server, which we will use both in dovecot and postfix: - - openssl req -new -newkey rsa:4096 -x509 -days 365 -nodes -out "/etc/ssl/certs/cloud.crt" -keyout "/etc/ssl/private/cloud.key" - -Make sure that you specify your the Fully Qualified Domain Name (FQDN) of the server, in our case: - - Common Name (e.g. server FQDN or YOUR name) []:cloud.jhausse.net - -If you don't, our clients may complain that the server name in the SSL certificate does not match the name of the server they are connecting to. We tell dovecot to use these keys by setting the following parameters in **/etc/dovecot/conf.d/10-ssl.conf**: - - ssl = required - ssl_cert = : Relay access denied - -That's good: had the server accepted the mail, it would have meant that we set up postfix as an open relay for all the spammers of the world and beyhond to use. Instead of the 'Relay access denied' message, you may instead get the message - - 554 5.7.1 Service unavailable; Client host [87.68.61.119] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=87.68.61.119 - -This means that you are trying to contact the server from an IP address that is considered as a spammer's address. I got this message while trying to connect to the server through my regular Internet Service Provider (ISP). To fix this issue, you can try to connect from another host, maybe another server you have access to through SSH. Alternatively, you can reconfigure Postfix's **main.cf** not to use Spamhaus's RBL, reload postfix, and verify that the above test works. In both cases, it's important that you find a solution that works for you because we'll test other things in a minute. If you chose to reconfigure Postfix not to use RBLs, don't forget to put the RBLs back in and to reload postfix after finishing the article to avoid getting more spam than necessary. - -Now let's try to send a valid email by SMTP on port 25, which regular mail servers use to talk to each other: - - openssl s_client -connect cloud.jhausse.net:25 -starttls smtp - EHLO cloud.jhausse.net - MAIL FROM:youremail@domain.com - rcpt to:roudy@jhausse.net - -to which the server should respond - - Client host rejected: Greylisted, see http://postgrey.schweikert.ch/help/jhausse.net.html - -which shows that [postgrey][28] is working as it should. What postgrey does it to reject emails with a temporary error if the sender has never been seen before. The technical rules of email require email servers to try to deliver the email again. After five minutes, postgrey will accept the email. Legit email servers around the world will try repeatidly to redeliver the email to us, but most spammers won't. So, wait for 5 minutes, try to send the email again using the command above, and verify that postfix now accepts the email. - -Afterwards, we'll check that we can fetch the two emails that we just sent ourselves by talking IMAP to dovecot: - - openssl s_client -crlf -connect cloud.jhausse.net:993 - 1 login roudy@jhausse.net "mypassword" - 2 LIST "" "*" - 3 SELECT INBOX - 4 UID fetch 1:1 (UID RFC822.SIZE FLAGS BODY.PEEK[]) - 5 LOGOUT - -where you should replace mypassword with the password you set for this email account. If that works, we basically have a functional email server which can receive our incoming emails, and from which we get retreive these emails from our devices (PC/laptop, tablets, phones, ...). But we can't give it our emails to send unless we send them from the server itself. We'll now allow postfix to forward our emails, but only upon successful authentification, that is after it could make sure that the email comes from someone who has a valid account on the server. To do so, we'll open a special, SSL-only, SASL-authentified email submission service. Set the following parameters in **/etc/postfix/master.cf**: - - submission inet n - - - - smtpd - -o syslog_name=postfix/submission - -o smtpd_tls_security_level=encrypt - -o smtpd_sasl_auth_enable=yes - -o smtpd_client_restrictions=permit_sasl_authenticated,reject - -o smtpd_sasl_type=dovecot - -o smtpd_sasl_path=private/auth - -o smtpd_sasl_security_options=noanonymous - -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_non_fqdn_recipient,reject_unauth_destination - -and reload postfix - - service postfix reload - -Now, let's try to use this service from a different machine than than the server, to verify postfix will now relay our emails and nobody else's: - - openssl s_client -connect cloud.jhausse.net:587 -starttls smtp - EHLO cloud.jhausse.net - -Notice the '250-AUTH PLAIN' capabilities advertized by server, which doesn't appear when we connect to port 25. - - MAIL FROM:asdf@jkl.net - rcpt to:bob@gmail.com - 554 5.7.1 : Relay access denied - QUIT - -That's good, postfix won't relay our emails if he doesn't know us. So let's authentify ourselves first. To do so, we first need to generate an authentification string: - - echo -ne '\000roudy@jhausse.net\000mypassword'|base64 - -and let's try to send emails through the server again: - - openssl s_client -connect cloud.jhausse.net:587 -starttls smtp - EHLO cloud.jhausse.net - AUTH PLAIN DGplYW5AMTk4NGNsb3VQLm5ldAA4bmFmNGNvNG5jOA== - MAIL FROM:asdf@jkl.net - rcpt to:bob@gmail.com - -which postfix should now accept. To complete the test, let's verify that our virtual aliases work by sending an email to postmaster@jhausse.net and making sure it goes to roudy@jhausse.net: - - telnet cloud.jhausse.net 25 - EHLO cloud.jhausse.net - MAIL FROM:youremail@domain.com - rcpt to:postmaster@jhausse.net - data - Subject: Virtual alias test - - Dear postmaster, - Long time no hear! I hope your MX is working smoothly and securely. - Yours sincerely, Roudy - . - QUIT - -Let's check the mail made it all the way to the right inbox: - - openssl s_client -crlf -connect cloud.jhausse.net:993 - 1 login roudy@jhausse.net "mypassword" - 2 LIST "" "*" - 3 SELECT INBOX - * 2 EXISTS - * 2 RECENT - 4 LOGOUT - -At this point, we have a functional email server, both for incoming and outgoing mails. We can set up our devices to use it. - -PS: did you remember to [try sending an email to an account hosted by the server through port 25][29] again, to verify that you are not longer blocked by postgrey? - -### Prevent SPAM from reaching your INBOX ### - -For the sake of SPAM filtering, we already have Realtime BlackLists (RBLs) and greylisting (postgrey) in place. We'll now take our spam fighting capabilities up a notch by adding adaptative spam filtering. This means we'll add artificial intelligence to our email server, so that it can learn from experience what is spam and what is not. We will use [dspam][30] for that. - - apt-get install dspam dovecot-antispam postfix-pcre dovecot-sieve - -dovecot-antispam is a package that allows dovecot to retrain the spam filter if we find an email that is misclassified by dspam. Basically, all we need to do is to move emails in or out of the Junk/Spam folder. dovecot-antispam will then take care of calling dspam to retrain the filter. As for postfix-pcre and dovecot-sieve, we will use them respectively to pass incoming emails through the spam filter and to automatically move spam to the user's Junk/Spam folder. - -In **/etc/dspam/dspam.conf**, set the following parameters to these values: - - TrustedDeliveryAgent "/usr/sbin/sendmail" - UntrustedDeliveryAgent "/usr/lib/dovecot/deliver -d %u" - Tokenizer osb - IgnoreHeader X-Spam-Status - IgnoreHeader X-Spam-Scanned - IgnoreHeader X-Virus-Scanner-Result - IgnoreHeader X-Virus-Scanned - IgnoreHeader X-DKIM - IgnoreHeader DKIM-Signature - IgnoreHeader DomainKey-Signature - IgnoreHeader X-Google-Dkim-Signature - ParseToHeaders on - ChangeModeOnParse off - ChangeUserOnParse full - ServerPID /var/run/dspam/dspam.pid - ServerDomainSocketPath "/var/run/dspam/dspam.sock" - ClientHost /var/run/dspam/dspam.sock - -Then, in **/etc/dspam/default.prefs**, change the following parameters to: - - spamAction=deliver # { quarantine | tag | deliver } -> default:quarantine - signatureLocation=headers # { message | headers } -> default:message - showFactors=on - -Now we need to connect dspam to postfix and dovecot by adding these two lines at the end of **/etc/postfix/master.cf**: - - dspam unix - n n - 10 pipe - flags=Ru user=dspam argv=/usr/bin/dspam --deliver=innocent,spam --user $recipient -i -f $sender -- $recipient - dovecot unix - n n - - pipe - flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} - -Now we will tell postfix to filter every new email that gets submitted to the server on port 25 (normal SMTP traffic) through dspam, except if the email is submitted from the server itself (permit_mynetworks). Note that the emails we submit to postfix with SASL authentication won't be filtered through dspam either, as we set up a separate submission service for those in the previous section. Edit **/etc/postfix/main.cf** to change the **smtpd_client_restrictions** to the following: - - smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, check_client_access pcre:/etc/postfix/dspam_filter_access - -At the end of the file, also also add: - - # For DSPAM, only scan one mail at a time - dspam_destination_recipient_limit = 1 - -We now need to specify the filter we defined. Basically, we will tell postfix to send all emails (/./) to dspam through a unix socket. Create a new file **/etc/postfix/dspam_filter_access** and put the following line into it: - - /./ FILTER dspam:unix:/run/dspam/dspam.sock - -That's it for the postfix part. Now let's set up dovecot for spam filtering. In **/etc/dovecot/conf.d/20-imap.conf**, edit the **imap mail_plugins** plugins parameter such that: - - mail_plugins = $mail_plugins antispam - -and add a section for lmtp: - - protocol lmtp { - # Space separated list of plugins to load (default is global mail_plugins). - mail_plugins = $mail_plugins sieve - } - -We now configure the dovecot-antispam plugin. Edit **/etc/dovecot/conf.d/90-plugin.conf** to add the following content to the plugin section: - - plugin { - ... - # Antispam (DSPAM) - antispam_backend = dspam - antispam_allow_append_to_spam = YES - antispam_spam = Junk;Spam - antispam_trash = Trash;trash - antispam_signature = X-DSPAM-Signature - antispam_signature_missing = error - antispam_dspam_binary = /usr/bin/dspam - antispam_dspam_args = --user;%u;--deliver=;--source=error - antispam_dspam_spam = --class=spam - antispam_dspam_notspam = --class=innocent - antispam_dspam_result_header = X-DSPAM-Result - } - -and in **/etc/dovecot/conf.d/90-sieve.conf**, specify a default sieve script which will apply to all users of the server: - - sieve_default = /etc/dovecot/default.sieve - -What is sieve and why do we need a default script for all users? Sieve lets us automatize tasks on the IMAP server. In our case, we won't all emails identified as spam to be put in the Junk folder instead of in the Inbox. We would like this to be the default behavior for all users on the server; that's why we just set this script as default script. Let's create this script now, by creating a new file **/etc/dovecot/default.sieve** with the following content: - - require ["regex", "fileinto", "imap4flags"]; - # Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox - if allof (header :regex "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$", - not header :contains "X-DSPAM-Reclassified" "Innocent") { - # Mark as read - # setflag "\\Seen"; - # Move into the Junk folder - fileinto "Junk"; - # Stop processing here - stop; - } - -Now we need to compile this script so that dovecot can run it. We also need to give it appropriate permissions. - - cd /etc/dovecot - sievec . - chown mail.dovecot default.siev* - chmod 0640 default.sieve - chmod 0750 default.svbin - -Finally, we need to fix permissions on two postfix config files that dspam needs to read from: - - chmod 0644 /etc/postfix/dynamicmaps.cf /etc/postfix/main.cf - -That's it! Let's restart dovecot and postfix - - service dovecot restart - service postfix restart - -and test the antispam, by contacting the server from a remote host (e.g. the computer we are using to set the server): - - openssl s_client -connect cloud.jhausse.net:25 -starttls smtp - EHLO cloud.jhausse.net - MAIL FROM:youremail@domain.com - rcpt to:roudy@jhausse.net - DATA - Subject: DSPAM test - - Hi Roudy, how'd you like to eat some ham tonight? Yours, J - . - QUIT - -Let's check if the mail arrived: - - openssl s_client -crlf -connect cloud.jhausse.net:993 - 1 login roudy@jhausse.net "mypassword" - 2 LIST "" "*" - 3 SELECT INBOX - 4 UID fetch 3:3 (UID RFC822.SIZE FLAGS BODY.PEEK[]) - -Which should return something the email with a collection of flag set by SPAM which look like this: - - X-DSPAM-Result: Innocent - X-DSPAM-Processed: Sun Oct 5 16:25:48 2014 - X-DSPAM-Confidence: 1.0000 - X-DSPAM-Probability: 0.0023 - X-DSPAM-Signature: 5431710c178911166011737 - X-DSPAM-Factors: 27, - Received*Postfix+with, 0.40000, - Received*with+#+id, 0.40000, - like+#+#+#+ham, 0.40000, - some+#+tonight, 0.40000, - Received*certificate+requested, 0.40000, - Received*client+certificate, 0.40000, - Received*for+roudy, 0.40000, - Received*Sun+#+#+#+16, 0.40000, - Received*Sun+#+Oct, 0.40000, - Received*roudy+#+#+#+Oct, 0.40000, - eat+some, 0.40000, - Received*5+#+#+16, 0.40000, - Received*cloud.jhausse.net+#+#+#+id, 0.40000, - Roudy+#+#+#+to, 0.40000, - Received*Oct+#+16, 0.40000, - to+#+#+ham, 0.40000, - Received*No+#+#+requested, 0.40000, - Received*jhausse.net+#+#+Oct, 0.40000, - Received*256+256, 0.40000, - like+#+#+some, 0.40000, - Received*ESMTPS+id, 0.40000, - how'd+#+#+to, 0.40000, - tonight+Yours, 0.40000, - Received*with+cipher, 0.40000 - 5 LOGOUT - -Good! You now have adaptive spam filtering set up for the users of your server. Of course, each user will need to train the filter in the first few weeks. To train a message as spam, just move it to a folder called "Spam" or "Junk" using any of your devices (PC, tablet, phone). Otherwise it'll be trained as ham. - -### Make sure the emails you send get through spam filters ### - -Our goal in this section will be to make our mail server appear as clean as possible to the world and to make it harder for spammers to send emails in our name. As a side-effect, this will help us get our emails through the spam filters of other mail servers. - -#### Sender Policy Framework #### - -Sender Policy Framework (SPF) is a record that your add to your zone which declares which mail servers on the whole internet can send emails for your domain name. Setting it up is very easy, use the SPF wizard at [microsoft.com][31] to generate your SPF record, and then add it to your zone as a TXT record. It will look like this: - - jhausse.net. 300 IN TXT v=spf1 mx mx:cloud.jhausse.net -all - -#### Reverse PTR #### - -We discussed this point [earlier][32] in this article, it's a good idea that you set up the reverse DNS for your server correctly, so that doing a reverse lookup on the IP address of your server returns the actual name of your server. - -#### OpenDKIM #### - -When we activate [OpenDKIM][33], postfix will sign every outgoing email using a cryptographic key. We will then deposit that key in our zone, on the DNS. That way, every mail server in the world will be able to verify if the email actually came from us, or if it was forged by a spammer. Let's install opendkim: - - apt-get install opendkim opendkim-tools - -And set it up by editing **/etc/opendkim.conf** so that it looks like this: - - ## - ## opendkim.conf -- configuration file for OpenDKIM filter - ## - Canonicalization relaxed/relaxed - ExternalIgnoreList refile:/etc/opendkim/TrustedHosts - InternalHosts refile:/etc/opendkim/TrustedHosts - KeyTable refile:/etc/opendkim/KeyTable - LogWhy Yes - MinimumKeyBits 1024 - Mode sv - PidFile /var/run/opendkim/opendkim.pid - SigningTable refile:/etc/opendkim/SigningTable - Socket inet:8891@localhost - Syslog Yes - SyslogSuccess Yes - TemporaryDirectory /var/tmp - UMask 022 - UserID opendkim:opendkim - -We'll need a couple of additional files which we will store in **/etc/opendkim**: - - mkdir -pv /etc/opendkim/ - cd /etc/opendkim/ - -Let's create a new file **/etc/opendkim/TrustedHosts** with the following content - - 127.0.0.1 - -and a new file called **/etc/opendkim/KeyTable** with the following content - - cloudkey jhausse.net:mail:/etc/opendkim/mail.private - -This tells OpenDKIM that we want to use an encryption key named 'cloudkey' whose contents can be found in /etc/opendkim/mail.private. We will create another file named **/etc/opendkim/SigningTable** and add the following line: - - *@jhausse.net cloudkey - -which tells OpenDKIM that every emails of the jhausse.net domain should be signed using the key 'cloudkey'. If we have other domains which we want to sign, we can add them here too. - -The next step is to generate that key and fix permissions on OpenDKIM's config files. - - opendkim-genkey -r -s mail [-t] - chown -Rv opendkim:opendkim /etc/opendkim - chmod 0600 /etc/opendkim/* - chmod 0700 /etc/opendkim - -At first, it's a good idea to use the -t which will signal to other mail servers that you are just in testing mode, and that they shouldn't discard emails based on your OpenDKIM signature (yet). You can get your OpenDKIM key from the mail.txt file: - - cat mail.txt - -and then add it to your zone file as TXT record, which should look like this - - mail._domainkey.cloud1984.net. 300 IN TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqG... - -Finally, we need to tell postfix to sign outgoing emails. At the end of /etc/postfix/main.cf, add: - - # Now for OpenDKIM: we'll sign all outgoing emails - smtpd_milters = inet:127.0.0.1:8891 - non_smtpd_milters = $smtpd_milters - milter_default_action = accept - -And reload the corresponding services - - service postfix reload - service opendkim restart - -Now let's test if our OpenDKIM public key can be found and matches the private key: - - opendkim-testkey -d jhausse.net -s mail -k mail.private -vvv - -which should return - - opendkim-testkey: key OK - -For this, you may need to wait a bit until the name server has reloaded the zone (on Linode, this happens every 15min). You can use **dig** to check if the zone was reloaded yet. - -If this works, let's test if other servers can validate our OpenDKIM signatures and SPF record. To do this, we can use [Brandon Checkett's email test][34]. To send an email to a test address given to us on [Brandon's webpage][34], we can run the following command on the server - - mail -s CloudCheck ihAdmTBmUH@www.brandonchecketts.com - -On Brandon's webpage, you should then see **result = pass** in the 'DKIM Signature' section, and **Result: pass** in the 'SPF Information' section. If our emails pass this test, just regenerate an OpenDKIM key without the -t switch, upload the new key to the zone file, and retest to still if it still passes the tests. If so, congrats! You just successfully set up OpenDKIM and SPF on your server! - -### Host calendars, contacts, files with Owncloud and set up a webmail with Roundcube ### - -Now that we have a top-notch email server, let's add to it the possibility to store your contacts, calendars, and files in the cloud. These are services that the [Owncloud][35] provides out of the box. While we're at it, we'll also set up a webmail, so you can check email even if you're travelling without electronics, or in case your phone and laptop run out of battery. - -Installing Owncloud is straighforward and is well described [here][36]. On Debian, it boils down to adding the owncloud repository to your apt sources, downloading owncloud's release key and adding it to your apt keyring, and then installing owncloud itself using apt-get: - - echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list - wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_6.0/Release.key - apt-key add - < Release.key - apt-get update - apt-get install apache2 owncloud roundcube - -When prompted for it, choose **dbconfig** and then say you want **roundcube** to use **mysql**. Then, provide the mysql root password and set a good password for the roundcube mysql user. Then, edit the roundcube config file **/etc/roundcube/main.inc.php** so that logging in on roundcube will default to using your IMAP server: - - $rcmail_config['default_host'] = 'ssl://localhost'; - $rcmail_config['default_port'] = 993; - -Now we will set up the apache2 webserver with SSL so that we can talk to Owncloud and Roundcube using encryption for our passwords and data. Let's turn on Apache's ssl module: - - a2enmod ssl - -and edit **/etc/apache2/ports.conf** to set the following parameters: - -NameVirtualHost *:80 -Listen 80 -ServerName www.jhausse.net - - - # If you add NameVirtualHost *:443 here, you will also have to change - # the VirtualHost statement in /etc/apache2/sites-available/default-ssl - # to - # Server Name Indication for SSL named virtual hosts is currently not - # supported by MSIE on Windows XP. - NameVirtualHost *:443 - Listen 443 - - - - Listen 443 - - -We'll set up a default website for encrypted connections to the webserver as **https://www.jhausse.net** under **/var/www**. Edit **/etc/apache2/sites-available/default-ssl**: - - - ServerAdmin webmaster@localhost - - DocumentRoot /var/www - ServerName www.jhausse.net - [...] - - Deny from all - - [...] - SSLCertificateFile /etc/ssl/certs/cloud.crt - SSLCertificateKeyFile /etc/ssl/private/cloud.key - [...] - - -and let's also set up a website for unencrypted connections to **http://www.jhausse.net** under **/var/www**. Edit **/etc/apache2/sites-available/default**: - - - DocumentRoot /var/www - ServerName www.jhausse.net - [...] - - Deny from all - - - -That way, we can serve pages for www.jhausse.net by putting them in /var/www. The 'Deny from all' directive prevents access to Owncloud through www.jhausse.net: we will set it up to access it through **https://cloud.jhausse.net** instead. - -We will now set up the webmail (roundcube) so that it will be accessed through **https://webmail.jhausse.net**. Edit **/etc/apache2/sites-available/roundcube** to have the following content: - - - - ServerAdmin webmaster@localhost - - DocumentRoot /var/lib/roundcube - # The host name under which you'd like to access the webmail - ServerName webmail.jhausse.net - - Options FollowSymLinks - AllowOverride None - - - ErrorLog ${APACHE_LOG_DIR}/error.log - - # Possible values include: debug, info, notice, warn, error, crit, - # alert, emerg. - LogLevel warn - - CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined - - # SSL Engine Switch: - # Enable/Disable SSL for this virtual host. - SSLEngine on - - # do not allow unsecured connections - # SSLRequireSSL - SSLCipherSuite HIGH:MEDIUM - - # A self-signed (snakeoil) certificate can be created by installing - # the ssl-cert package. See - # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. - # If both key and certificate are stored in the same file, only the - # SSLCertificateFile directive is needed. - SSLCertificateFile /etc/ssl/certs/cloud.crt - SSLCertificateKeyFile /etc/ssl/private/cloud.key - - # Those aliases do not work properly with several hosts on your apache server - # Uncomment them to use it or adapt them to your configuration - Alias /program/js/tiny_mce/ /usr/share/tinymce/www/ - - # Access to tinymce files - - Options Indexes MultiViews FollowSymLinks - AllowOverride None - Order allow,deny - allow from all - - - - Options +FollowSymLinks - # This is needed to parse /var/lib/roundcube/.htaccess. See its - # content before setting AllowOverride to None. - AllowOverride All - order allow,deny - allow from all - - - # Protecting basic directories: - - Options -FollowSymLinks - AllowOverride None - - - - Options -FollowSymLinks - AllowOverride None - Order allow,deny - Deny from all - - - - Options -FollowSymLinks - AllowOverride None - Order allow,deny - Deny from all - - - - SSLOptions +StdEnvVars - - - SSLOptions +StdEnvVars - - # SSL Protocol Adjustments: - # The safe and default but still SSL/TLS standard compliant shutdown - # approach is that mod_ssl sends the close notify alert but doesn't wait for - # the close notify alert from client. When you need a different shutdown - # approach you can use one of the following variables: - # o ssl-unclean-shutdown: - # This forces an unclean shutdown when the connection is closed, i.e. no - # SSL close notify alert is send or allowed to received. This violates - # the SSL/TLS standard but is needed for some brain-dead browsers. Use - # this when you receive I/O errors because of the standard approach where - # mod_ssl sends the close notify alert. - # o ssl-accurate-shutdown: - # This forces an accurate shutdown when the connection is closed, i.e. a - # SSL close notify alert is send and mod_ssl waits for the close notify - # alert of the client. This is 100% SSL/TLS standard compliant, but in - # practice often causes hanging connections with brain-dead browsers. Use - # this only for browsers where you know that their SSL implementation - # works correctly. - # Notice: Most problems of broken clients are also related to the HTTP - # keep-alive facility, so you usually additionally want to disable - # keep-alive for those clients, too. Use variable "nokeepalive" for this. - # Similarly, one has to force some clients to use HTTP/1.0 to workaround - # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and - # "force-response-1.0" for this. - BrowserMatch "MSIE [2-6]" \ - nokeepalive ssl-unclean-shutdown \ - downgrade-1.0 force-response-1.0 - # MSIE 7 and newer should be able to use keepalive - BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown - - - -and declare the server in your DNS, for instance: - - webmail.jhausse.net. 300 IN CNAME cloud.jhausse.net. - -Now let's enable these three websites - - a2ensite default default-ssl roundcube - service apache2 restart - -and the webmail, accessible under **https://webmail.jhausse.net**, should basically work. Log in using the full email (e.g. roudy@jhausse.net) and the password you set in mailserver DB at the beginning of this article. The first time you connect, the browser will warn you that the certificate was not signed by a certification authority. That's fine, just add an exception. - -Last but not least, we will create a virtual host for owncloud by putting the following content in **/etc/apache2/sites-available/owncloud**: - - - - ServerAdmin webmaster@localhost - - DocumentRoot /var/www/owncloud - ServerName cloud.jhausse.net - - Options FollowSymLinks - AllowOverride None - - - Options Indexes FollowSymLinks MultiViews - AllowOverride All - Order allow,deny - allow from all - - - ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ - - AllowOverride None - Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch - Order allow,deny - Allow from all - - - ErrorLog ${APACHE_LOG_DIR}/error.log - - # Possible values include: debug, info, notice, warn, error, crit, - # alert, emerg. - LogLevel warn - - CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined - - # SSL Engine Switch: - # Enable/Disable SSL for this virtual host. - SSLEngine on - - # do not allow unsecured connections - # SSLRequireSSL - SSLCipherSuite HIGH:MEDIUM - SSLCertificateFile /etc/ssl/certs/cloud.crt - SSLCertificateKeyFile /etc/ssl/private/cloud.key - - - SSLOptions +StdEnvVars - - - SSLOptions +StdEnvVars - - - BrowserMatch "MSIE [2-6]" \ - nokeepalive ssl-unclean-shutdown \ - downgrade-1.0 force-response-1.0 - # MSIE 7 and newer should be able to use keepalive - BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown - - - -and activate owncloud by running - - a2ensite owncloud - service apache2 reload - -Then go ahead an configure owncloud by connecting to **https://cloud.jhausse.net/** in a web browswer. - -That's it! Now you've got your own Google Drive, Calendar, Contacts, Dropbox, and Gmail! Enjoy your freshly recovered privacy! :-) - -### Sync your devices to the cloud ### - -To sync your emails, you can just use your favorite email client: the standard email program on Android or iOS, [k9mail][37], or Thunderbird on your PC. Or you can also use the webmail we set up. - -How to sync your calendar and contacts with the cloud is described in the doc of owncloud. On Android, I'm using the CalDAV-Sync and CardDAV-Sync apps which act as bridges between the Android calendar and contacts apps of the phone and the owncloud server. - -For files, there is an Android app called Owncloud to access your files from your phone and automatically upload pictures and videos you take to your cloud. Accessing your files on the your Mac/PC is easy and [well described in the Owncloud documentation][38]. - -### Last tips ### - -During the first few weeks, it's a good idea to monitor **/var/log/syslog** and **/var/log/mail.log** on a daily basis and make sure everything everything is running smoothly. It's important to do so before you invite others (friends, family, ...) to be hosted on your server; you might loose their trust in self-hosting for good if they trust you with their data and the server suddently becomes unavailable. - -To add another email user, just add a row to the **virtual_users** table of the **mailserver** DB. - -To add a domain, just add a row to the **virtual_domains** table. Then update **/etc/opendkim/SigningTable** to get outgoing emails signed, upload the OpenDKIM key to the zone, and reload OpenDKIM. - -Owncloud has its own user DB which can be managed by logging in in Owncloud as administrator. - -Finally, it's important to think in advance of a solution in case your server becomes temporarily unavailable. For instance, where would your mails go until your server returns? One solution would be to find a friend who can act as your backup MX, while you act as his backup MX (see the **relay_domains** and **relay_recipient_maps** setting in Postfix's **main.cf** file). Similarly, what if your server is compromised and a malicious individual erases all your files there? For that, it's important to think of a regular backup system. Linode offers backups as an option. On 1984.is, I set up a basic but sufficient automatic backup system using on crontabs and scp. - --------------------------------------------------------------------------------- - -via: https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/ - -作者:[Roudy Jhausse ][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:aboutlinux@free.fr -[1]:https://history.google.com/history/ -[2]:http://research.google.com/workatgoogle.html -[3]:http://www.attac.org/ -[4]:http://www.nytimes.com/2012/02/19/magazine/shopping-habits.html?pagewanted=all -[5]:http://vimeo.com/ondemand/termsandconditions -[6]:http://www.techtimes.com/articles/21670/20141208/sony-pictures-hack-nightmare-week-celebs-data-leak-and-threatening-emails-to-employees.htm -[7]:http://blog.backupify.com/2012/07/25/what-is-my-gmail-account-really-worth/ -[8]:http://adage.com/article/digital/worth-facebook-google/293042/ -[9]:http://vimeo.com/ondemand/termsandconditions -[10]:https://prism-break.org/en/ -[11]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#VPS -[12]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#mail -[13]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#dspam -[14]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#SPF -[15]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#owncloud -[16]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#sync -[17]:http://linuxfr.org/news/heberger-son-courriel -[18]:http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ -[19]:http://www.1984.is/ -[20]:http://www.linode.com/ -[21]:http://www.greenpeace.org/international/Global/international/publications/climate/2012/iCoal/HowCleanisYourCloud.pdf -[22]:http://www.1984.is/about/ -[23]:http://www.fsf.org/ -[24]:https://www.gnupg.org/ -[25]:http://www.gandi.net/ -[26]:http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html -[27]:http://www.postfix.org/ -[28]:http://postgrey.schweikert.ch/ -[29]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#testPort25 -[30]:http://dspam.sourceforge.net/ -[31]:http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/ -[32]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#PTR -[33]:http://opendkim.org/opendkim-README -[34]:http://www.brandonchecketts.com/emailtest.php -[35]:http://owncloud.org/ -[36]:http://owncloud.org/install/ -[37]:https://code.google.com/p/k9mail/ -[38]:http://doc.owncloud.org/server/7.0/user_manual/files/files.html diff --git a/translated/tech/20150115 Get back your privacy and control.md b/translated/tech/20150115 Get back your privacy and control.md new file mode 100644 index 0000000000..9695c1f3de --- /dev/null +++ b/translated/tech/20150115 Get back your privacy and control.md @@ -0,0 +1,1111 @@ +在短短几个小时里拿回自己数据的隐私和控制权:为自己和朋友们搭建私有云 +================================================================================ +8年里40'000多次搜索!这是我的Google搜索历史。你的呢?(可以在[这里][1]自己找一下)有经过这么长时间积累下来的这么多数据点,Google已经能非常精确的推测你对什么感兴趣,曾经的想法,担忧过的事情,以及从你第一次获得Google帐号后这些年里所有这些的变化。 + +### 很多非常私人的信息不受自己控制地存储在世界范围内的服务器上 ### + +比如说你也像我一样从2006年到2013年都是Gmail用户,意味着你收到了30'000+的电子邮件以及在这7年里写了差不多5000封电子邮件。这些发送或收到的电子邮件里有很多是非常私人的,私人到你甚至不希望自己的家人或好友能系统地查看。也许你还写过一些草稿邮件,因为最后一分钟改变主意而从没发出去。但是尽管你从未发出去,这些邮件仍然保存在服务器上的某个地方。结论是,说Google服务器比你最亲密的朋友或家人都更了解你的个人生活一点也不过分。 + +从统计数据来看,可以很安全地赌你拥有一部智能手机。如果不使用联系人应用的话手机将基本没法用,而它默认会将你的联系人信息保存到Google服务器上的Google联系人里。所以,现在Google不仅知道了你的电子邮件,还有了你的离线联系人:你喜欢打给谁,谁来过电话,你发过短信给谁,以及发了些什么。你也不需要听我的片面之词,可以自己检查一下,看看你开放给类似Google Play服务的一些应用的权限,用来读取来电信息以及收到的短信。你是否还会用到手机里自带的日历应用?除非你在设置日程的时候明确地去掉,那么Google将精确地知道你将要做什么,一天里的每个时段,每一天,每一年。用iPhone代替Android手机也是一样的,只是Apple会代替Google来掌握你的往来邮件,联系人和日程计划。 + +你是否还会非常小心地同步自己的联系人信息,在你朋友,同事或家人换工作或换服务商的时候更新他们的电子邮件地址和手机号?这给Google提供了一副你社交网络的非常精确的,最新的图片。还有你非常喜欢手机的GPS功能,经常配合Google地图使用。这意味着Google不仅能从日程里知道你在干什么,还知道你在哪儿,住在哪儿,在哪儿工作。然后再关联用户之间的GPS位置信息,GOogle还能知道你现在可能正在和哪些人来往。 + +### 这种泄漏自己私人信息的日常爱好会以一种甚至没人能够预测的方式影响你的生活 ### + +总结一下,如果你是一个普通的因特网用户,Google拥有过去差不多10年里你最新的,深度的信息,关于你的兴趣,忧虑,热情,疑问。它还收集了一些你很私人的信息(电子邮件,短信),精确到小时的你的日常活动和位置,一副你社交网络的高品质图片。关于你的如此私密的数据,很可能已经超越了你最亲密的朋友,家人或爱人对你的了解。 + +不敢想象把这些深度的个人信息交给完全陌生的人,就好像把这些信息拷到一个U盘里,然后随便放到某个咖啡厅的桌上,留张纸条说“Olivier Martin的个人数据,请随便”。谁知道什么人会拿到它以及用来干嘛?然而,我们毫不犹豫地把自己的主要信息交给那些对我们的数据很感兴趣的IT公司的陌生人(这是他们制造面包的材料)以及[世界级的数据分析专家][2]手里,也许只是因为我们在点击那个绿色的'接受'按钮时根本没有想这么多。 + +有这么多的高质量信息,这么多年里,Google可能会比你希望自我了解的更了解你自己:尼玛,回想我过去的数字生活,我已经不记得5年前发出的邮件里的一半了。我很高兴能重新发现早在2005年对马克思主义的兴趣以及第二年加入了[ATTAC][3](一个致力于通过征收金融交易税来限制投机和改善社会公平的组织)。天知道为什么我竟然在2007年这么喜欢跳舞。这些都是无关紧要的信息(你不要指望我能爆出什么猛料,不会吧?;-)。但是,连接起这些高质量数据点,关于你生活的方方面面(做什么,什么时候,和谁一起,在哪里,...),并跨越这么长时间间隔,应该能推测出你的未来状态。比如说,根据一个17岁女孩的购物习惯,超市甚至可以在他父亲听说之前断定这个女孩怀孕了([真实故事][4])。谁知道通过像Google所掌握的这些远远超出购物习惯的高质量数据能做些什么?连接起这些点,也许有人能预测你未来几年里口味或政治观点的变化。如今,[你从未听过的公司声称拥有你500项数据点][5],包括宗教信仰,性取向和政治观点。提到政治,如果说你决定今后10年内进入政坛会怎么样?你的生活会改变,你的观点也一样,甚至你有时候会有所遗忘,但是Google不会。那你会不会担心你的对手会接触一些可以从Google访问你数据的人并会从你过去这些年里积累的个人数据深渊里挖出一些猛料呢?[就像最近Sony被黑][6]一样,多久以后会轮到Google或Facebook,以致让你的个人信息最终永远暴露? + +我们大多数人把自己的个人数据托付给这些公司的一个原因就是它们提供免费服务。但是真的免费吗?一般的Google帐号的价值根据评估方式不同会有些差别:你花在写邮件上的时间占到[1000美元/年][7],你的帐号对于广告产业的价值差不多在[220美元/年][8]到[500美元/年][9]之间。所以这些服务并不是真的免费:会通过广告和我们的数据在未来的一些未知使用来间接付费。 + +我写的最多的是Google,这是因为这是我托付个人数字信息的,以及目前我所知道做的最好的公司。但是我也提到过Apple或Facebook。这些公司通过它们在设计,工程和我们(曾经)喜欢每天使用的服务方面的神奇进步实实在在地改变了世界。但是这并不是说我们应该把所有我们最私人的个人数据堆积到它们的服务器上并把我们的数字生活托付给它们:潜在的危害实在太大了。 + +### 只要5小时,拿回自己以及关心的人的隐私权 ### + +并不是一定要这样做。你可以生活在21世纪,拿着智能手机,每天都用电子邮件和GPS,却仍然可以保留自己的隐私。你所需要的就是拿回自己个人数据的控制权:邮件、日程、联系人、文件,等等。[Prism-Break.org][10]网站上列出了一些能帮你掌握个人数据命运的软件。除此以外,控制自己个人数据的最安全和最有效的方式是架设自己的服务器并搭建自己的云。不过你也许只是没有时间或精力去研究具体该怎么做以及如何让它能流畅工作。 + +这也是这篇文章的意义所在。仅仅5个小时内,我们将配置出一台服务器来支撑你的邮件、联系人、日程表和各种文件,为你、你的朋友和你的家人。这个服务器将设计成一个个人数据中心或云,所以你能时刻保留它的完整控制。数据将自动在你的台式机/笔记本、手机和平板之间同步。从根本上来说,**我们将建立一个系统来代替Gmail、Google文件/Dropbox、Google联系人、Google日历和Picasa**。 + +为自己做这件事情已经是迈出很大一步了。但是,你个人信息的很大一部分将仍然泄漏出去并保存到硅谷的一些主机上,只是因为和你日常来往的太多人在用Gmail和使用智能手机。所以最好是带上你一些比较亲近的人加入这次探险。 + +我们将构建的系统能够 + +- **支持任意数目的域名和用户**。这样就能轻易地和你的家人朋友共享这台服务器,所以他们也能掌控自己的个人数据,并且还能和你一起分摊服务费用。和你一起共享服务器的人可以使用他们自己的域名或者共享你的。 +- **允许你从任意网络发送和接收电子邮件**,需要成功登录服务器之后。这样,你可以通过任意的邮件地址,任意设备(台式机、手机、平板),任意网络(家里、公司、公共网络、...)来发送电子邮件。 +- **在发送和接收邮件的时候加密网络数据**,这样,你不信任的人不能钓出你的密码,也不能看到你的私人邮件。 +- **提供最先进的反垃圾邮件技术**,结合了已知垃圾邮件黑名单,自动灰名单,和自适应垃圾邮件过滤。如果邮件被误判了只需要简单地把它拖入或拖出垃圾目录就可以重新配置垃圾邮件过滤器。而且,服务器还会为基于社区的反垃圾邮件努力做出贡献。 +- **一段时间里只需要几分钟的维护**,基本上只是安装安全更新和简单地检查一下服务器日志。添加一个新的邮件地址只需要在数据库中插入一条记录。除此之外,你可以忘记它的存在过自己的生活。我在14个月之前搭建了本文描述的这个系统,从那以后就一直顺利运行。所以我完全把它给忘了,直到我最近觉得随便按下手机上的‘检查邮件’会导致电子一路跑到冰岛(我放置服务器的地方)再回来的想法有点好笑才想起来。 + +要完成这篇文章里的工作,你需要一点基本的技术能力。如果你知道SMTP和IMAP的区别,什么是DNS,以及对TCP/IP有基本了解的话,就够了。你还将需要一点基本的Unix知识(在命令行下和文件一起工作,基本的系统管理)。然后你需要花总共5小时时间来搭建。 + +下面是我们将要做的事情的概述。 + +- [申请一个虚拟私人服务器,一个域名,并把它们配置好][11] +- [设置postfix和dovecot来收发电子邮件][12] +- [阻止垃圾邮件进入你的收件箱][13] +- [确保你发出的邮件能通过垃圾邮件过滤器][14] +- [使用Owncloud提供日历,联系人,文件服务并配置webmail][15] +- [在云上同步你的设备][16] + +### 这篇文章是受之前工作的启发并以之为基础 ### + +本文很大程度参考了两篇文章,由[Xavier Claude][17]和[Drew Crawford][18]写的关于架设私有邮件服务器的介绍。 + +本文覆盖了Xavier和Drew的文章里所描述的所有功能,除了3个地方Drew有而我没有:邮件推送支持(我喜欢由我主动检查邮件,而其他时候都不会被打扰),邮件全文检索(我一直都没用过),以及使用加密方式存储邮件(我的邮件和数据还没那么重要到要把它们加密后再存到本地服务器上)。如果你需要这些功能,只需要按照Drew的文章里相应部分的说明做就好了,和本文的内容兼容。 + +和Xavier和Drew的成果比起来,本文有下面几个主要改进: + +- 根据我自己按Drew文章操作的经验以及原文的大量回复,修改了一些问题和文字错误。我也把本文所介绍的内容仔细检查了几遍,从头开始设定了几次服务器做重复验证以确保能正常工作。 +- 低维护:和Xavier的方式比起来,本文增加了在服务器上支持多个邮件域名。这样做是为了尽可能地减少服务器维护工作:基本上,要添加一个域名或用户,只需要往mysql数据库表里增加一行就好了(不需要增加过滤脚本,等等)。 +- 我增加了webmail。 +- 我增加了设定云服务器的部分,不仅能收发邮件还能管理文件,地址本/联系人(邮件地址,电话号码,生日,等等等),日程表和图片,供所有设备访问使用。 + +### 申请一个虚拟私人服务器,一个域名,并把它们配置好 ### + +让我们从设置基础设施开始:我们的虚拟私人主机和我们的域名。 + +我用过[1984.is][19]和[Linode][20]提供的虚拟私人主机(VPS),体验非常好。在本文中,我们将使用**Debian Wheezy**,这个在1984和Linode都提供了已经做好的映像文件可以直接布置到你的VPS上。我喜欢1984是因为它的服务器在冰岛,也是唯一使用可再生能源(地热和水力发电)的地方,目前还没有影响过气候变化,不像[大多数美国数据中心目前大多数依赖于烧煤的火力发电站][21]。而且,他们注重[民权,透明,自由][22]以及[免费软件][23]。 + +最好是在服务器上创建一个文件用来保存后面要用到的各种密码(用户账号,邮件账号,云帐号,数据库帐号)。当然最好是加密一下(可以用[GnuPG][24]),这样就算用来设定服务器的电脑被偷了或被入侵了,你的服务器就不会那么容易被攻击。 + +关于注册域名,我已经使用[grandi][25]的服务超过10年了,也很满意。在本文中,我们将开辟一个叫**jhausse.net**的域名。然后在上面增加一个叫**cloud.jhausse.net**的二级域名,并绑定MX纪录。在完成之后,设置比较短的纪录生存时间(TTL)比如300秒,这样你在设置服务器的时候,可以修改你的域并很快测试到结果。 + +最后,设置PTR纪录(反向DNS),这样IP地址可以反向映射回它的域名。如果你不理解前面这句话,看下[这篇文章][26]来获得相关背景知识。如果你使用Linode的服务,你可以在远程访问这一栏的控制面板里设置PTR纪录。如果是1984,联系一下技术支持来帮你搞定。 + +在服务器上,我们从添加一个普通用户开始,这样我们不用从头到尾一直用root账号。另外,用root登陆也需要额外多一层安全措施。 + + adduser roudy + +然后,在文件**/etc/ssh/sshd_config**中设置 + + PermitRootLogin no + +然后重启ssh服务 + + service ssh reload + +然后,我们要修改服务器的主机名。编辑文件**/etc/hostname**,只有一行就是自己的主机名,我们这个例子中是 + + cloud + +然后,编辑ssh服务的公钥文件**/etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ecdsa_key.pub**,这样文件末尾可以反映你的主机名,比如**root@cloud**。然后重启系统保证主机名在系统的每个需要它的角落都生效了。 + + reboot + +我们将更新系统并移除不必要的服务以降低远程攻击的风险。 + + apt-get update + apt-get dist-upgrade + service exim4 stop + apt-get remove exim4 rpcbind + apt-get autoremove + apt-get install vim + +我喜欢使用vim远程编辑配置文件。打开自动语法高亮会很有帮助。添加下面这一行到**~/.vimrc**文件中。 + + syn on + +### 设置postfix和dovecot来收发电子邮件 ### + + apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-mysql mysql-server dovecot-lmtpd postgrey + +在[Postfix][27]的配置菜单里,选择**因特网站点**,把系统邮件名设为**jhausse.net**。 + +现在开始添加一个数据库用于保存主机上管理的域名列表,和每个域名下的用户列表(同时也包括他们各自的密码),以及邮件别名列表(用于从一个地址往另一个地址转发邮件)。 + + mysqladmin -p create mailserver + mysql -p mailserver + mysql> GRANT SELECT ON mailserver.* TO 'mailuser'@'localhost' IDENTIFIED BY 'mailuserpass'; + mysql> FLUSH PRIVILEGES; + mysql> CREATE TABLE `virtual_domains` ( + `id` int(11) NOT NULL auto_increment, + `name` varchar(50) NOT NULL, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + mysql> CREATE TABLE `virtual_users` ( + `id` int(11) NOT NULL auto_increment, + `domain_id` int(11) NOT NULL, + `password` varchar(106) NOT NULL, + `email` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `email` (`email`), + FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + mysql> CREATE TABLE `virtual_aliases` ( + `id` int(11) NOT NULL auto_increment, + `domain_id` int(11) NOT NULL, + `source` varchar(100) NOT NULL, + `destination` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +我们将承载**jhausse.net**域名。如果还需要加入其他域名,也没问题。我们也会为每个域名设置一个邮件管理地址,转寄给**roudy@jhausse.net**。 + + mysql> INSERT INTO virtual_domains (`name`) VALUES ('jhausse.net'); + mysql> INSERT INTO virtual_domains (`name`) VALUES ('otherdomain.net'); + mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('1', 'postmaster', 'roudy@jhausse.net'); + mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('2', 'postmaster', 'roudy@jhausse.net'); + +现在已经添加了一个本地邮件账号**roudy@jhausse.net**。首先,为它生成一个哈希密码: + + doveadm pw -s SHA512-CRYPT + +然后把哈希值加入到数据库中 + + mysql> INSERT INTO `mailserver`.`virtual_users` (`domain_id`, `password`, `email`) VALUES ('1', '$6$YOURPASSWORDHASH', 'roudy@jhausse.net'); + +现在我们的域名,别名和用户列表都设置好了,然后开始设置postfix(SMTP服务器,用来发送邮件)。把文件**/etc/postfix/main.cf**替换为下面的内容: + + myhostname = cloud.jhausse.net + myorigin = /etc/mailname + mydestination = localhost.localdomain, localhost + mynetworks_style = host + + # We disable relaying in the general case + smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination + # Requirements on servers that contact us: we verify the client is not a + # known spammer (reject_rbl_client) and use a graylist mechanism + # (postgrey) to help reducing spam (check_policy_service) + smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023 + disable_vrfy_command = yes + inet_interfaces = all + smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) + biff = no + append_dot_mydomain = no + readme_directory = no + + # TLS parameters + smtpd_tls_cert_file=/etc/ssl/certs/cloud.crt + smtpd_tls_key_file=/etc/ssl/private/cloud.key + smtpd_use_tls=yes + smtpd_tls_auth_only = yes + smtp_tls_security_level=may + smtp_tls_loglevel = 1 + smtpd_tls_loglevel = 1 + smtpd_tls_received_header = yes + smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache + smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache + + # Delivery + alias_maps = hash:/etc/aliases + alias_database = hash:/etc/aliases + message_size_limit = 50000000 + recipient_delimiter = + + + # The next lines are useful to set up a backup MX for myfriendsdomain.org + # relay_domains = myfriendsdomain.org + # relay_recipient_maps = + + # Virtual domains + virtual_transport = lmtp:unix:private/dovecot-lmtp + virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf + virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf + virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf + local_recipient_maps = $virtual_mailbox_maps + +现在我们要让postfix知道如何从我们设定的数据库里找出需要接收邮件的域名。建立一个新文件**/etc/postfix/mysql-virtual-mailbox-domains.cf**并添加以下内容: + + user = mailuser + password = mailuserpass + hosts = 127.0.0.1 + dbname = mailserver + query = SELECT 1 FROM virtual_domains WHERE name='%s' + +我们可以让postfix判断给定的电子邮件账号是否存在,创建文件**/etc/postfix/mysql-virtual-mailbox-maps.cf**并写入以下内容: + + user = mailuser + password = mailuserpass + hosts = 127.0.0.1 + dbname = mailserver + query = SELECT 1 FROM virtual_users WHERE email='%s' + +最后,postfix会根据文件**/etc/postfix/mysql-virtual-alias-maps.cf**的内容来查找邮件别名 + + user = mailuser + password = mailuserpass + hosts = 127.0.0.1 + dbname = mailserver + query = SELECT virtual_aliases.destination as destination FROM virtual_aliases, virtual_domains WHERE virtual_aliases.source='%u' AND virtual_aliases.domain_id = virtual_domains.id AND virtual_domains.name='%d' + +在配置好这些后,现在要测试一下postfix是否能正常查询数据库。我们可以用**postmap**命令测试: + + postmap -q jhausse.net mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf + postmap -q roudy@jhausse.net mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf + postmap -q postmaster@jhausse.net mysql:/etc/postfix/mysql-virtual-alias-maps.cf + postmap -q bob@jhausse.net mysql:/etc/postfix/mysql-virtual-alias-maps.cf + +如果一切都正常配置了的话,头两个查询应该输出1,第3个查询应该输出**roudy@jhausse.net**,而最后一个应该什么都不输出。 + +现在,让我们设置一下dovecot(一个IMAP服务程序,用来在我们的设备上从服务器获取收件箱里的邮件)。编辑文件**/etc/dovecot/dovecot.conf**设置以下参数: + + # Enable installed protocol + # !include_try /usr/share/dovecot/protocols.d/*.protocol + protocols = imap lmtp + +这样将只打开imap(让我们可以获取邮件)和lmtp(postfix用来将收件箱里的邮件转给dovecot)。编辑**/etc/dovecot/conf.d/10-mail.conf**并设置以下参数: + + mail_location = maildir:/var/mail/%d/%n + [...] + mail_privileged_group = mail + [...] + first_valid_uid = 0 + +这样邮件将被保存到目录/var/mail/domainname/username下。注意下这几个选项散布在配置文件的不同位置,有时已经在那里写好了:我们只需要取消注释。文件里的其他设定选项,可以维持原样。在本文后面还有很多文件需要用同样的方式更新设置。在文件**/etc/dovecot/conf.d/10-auth.conf**里,设置以下参数: + + disable_plaintext_auth = yes + auth_mechanisms = plain + #!include auth-system.conf.ext + !include auth-sql.conf.ext + +在文件**/etc/dovecot/conf.d/auth-sql.conf.ext**里,设置以下参数: + + passdb { + driver = sql + args = /etc/dovecot/dovecot-sql.conf.ext + } + userdb { + driver = static + args = uid=mail gid=mail home=/var/mail/%d/%n + } + +这是告诉dovecot用户的邮件保存在目录/var/mail/domainname/username下,以及如何从我们刚建立的数据库里查找密码。现在我们还需要告诉dovecot具体如何使用数据库。这样需要把下面的内容加入**/etc/dovecot/dovecot-sql.conf.ext**文件: + + driver = mysql + connect = host=localhost dbname=mailserver user=mailuser password=mailuserpass + default_pass_scheme = SHA512-CRYPT + password_query = SELECT email as user, password FROM virtual_users WHERE email='%u'; + +我们现在修改一下配置文件的权限 + + chown -R mail:dovecot /etc/dovecot + chmod -R o-rwx /etc/dovecot + +基本差不多了!只是还需要再多编辑几个文件。在文件**/etc/dovecot/conf.d/10-master.conf**里,设置以下参数: + + service imap-login { + inet_listener imap { + #port = 143 + port = 0 + } + inet_listener imaps { + port = 993 + ssl = yes + } + } + + service pop3-login { + inet_listener pop3 { + #port = 110 + port = 0 + } + inet_listener pop3s { + #port = 995 + #ssl = yes + port = 0 + } + } + + service lmtp { + unix_listener /var/spool/postfix/private/dovecot-lmtp { + mode = 0666 + group = postfix + user = postfix + } + user = mail + } + + service auth { + unix_listener auth-userdb { + mode = 0600 + user = mail + #group = + } + + # Postfix smtp-auth + unix_listener /var/spool/postfix/private/auth { + mode = 0666 + user = postfix + group = postfix + } + + # Auth process is run as this user. + #user = $default_internal_user + user = dovecot + } + + service auth-worker { + user = mail + } + +注意下我们把除了imaps之外所有服务的端口都设置成了0,这样可以有效地禁止这些服务。然后,在文件**/etc/dovecot/conf.d/15-lda.conf**里,指定一个邮箱管理地址: + + postmaster_address = postmaster@jhausse.net + +最后但很重要的一点,我们为服务器需要生成一对公钥和私钥,可以同时用于dovecot和postfix: + + openssl req -new -newkey rsa:4096 -x509 -days 365 -nodes -out "/etc/ssl/certs/cloud.crt" -keyout "/etc/ssl/private/cloud.key" + +请确保你指定了服务器的完全限定域名(FQDN),在本文的例子里: + + Common Name (e.g. server FQDN or YOUR name) []:cloud.jhausse.net + +如果没有的话,我们的客户端会抱怨在SSL证书里的服务器名字和所连接的服务器名字不一致。我们将通过修改配置文件**/etc/dovecot/conf.d/10-ssl.conf**里的如下选项来告诉dovecot使用刚生成的密钥: + + ssl = required + ssl_cert = : Relay access denied + +这个没问题:如果服务器能接受这封邮件,那意味着我们架设的postfix是一个对全世界所有垃圾邮件都开放的中继,将完全没法使用。除了'Relay access denied'消息,你也可能会收到这样的响应: + + 554 5.7.1 Service unavailable; Client host [87.68.61.119] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=87.68.61.119 + +意思是你正尝试从一个被标记成垃圾邮件发送者的IP地址连接服务器。我在通过普通的因特网服务提供商(ISP)连接服务器时曾收到过这样的消息。要解决这个问题,可以试着从另一个主机发起连接,比如另外一个你可以SSH登录的主机。另外一种方式是,你可以修改postfix的**main.cf**配置文件,不要使用Spamhous的RBL,重启postfix服务,然后再检查上面的测试是否正常。不管用哪种方式,最重要的是你要确定一个能工作的,因为我们后面马上要测试其他功能。如果你选择了重新配置postfix不使用RBL,别忘了在完成本文后重新开启RBL并重启postfix,以避免收到一些不必要的垃圾邮件。 + +现在,我们试一下往SMTP端口25发送一封有效的邮件,这是一般正常的邮件服务器用来彼此对话的方式: + + openssl s_client -connect cloud.jhausse.net:25 -starttls smtp + EHLO cloud.jhausse.net + MAIL FROM:youremail@domain.com + rcpt to:roudy@jhausse.net + +服务器应该有这样的响应 + + Client host rejected: Greylisted, see http://postgrey.schweikert.ch/help/jhausse.net.html + +这意味着[postgrey][28]工作正常。postgrey做的是用临时错误拒绝未知发送者的邮件。邮件的技术规则是要求邮件服务器尝试重新发送邮件。在5分钟后,postgrey就会接收这封邮件。一般世界范围内遵守规则的邮件服务器都会尝试为我们重复投递邮件,但大多数垃圾邮件发送者不会这样做。所以,等上5分钟,再次通过上面的命令发送一次,然后检查postfix应该正常接收了邮件。 + +之后,我们检查一下我们可以通过IMAP和dovecot对话获取刚才发送的两封邮件。 + + openssl s_client -crlf -connect cloud.jhausse.net:993 + 1 login roudy@jhausse.net "mypassword" + 2 LIST "" "*" + 3 SELECT INBOX + 4 UID fetch 1:1 (UID RFC822.SIZE FLAGS BODY.PEEK[]) + 5 LOGOUT + +这里,你应该把mypassword替换为你自己为这个邮件账号设定的密码。如果能正常工作,基本上我们已经拥有一个能接收邮件的邮件服务器了,通过它我们可以在各种设备(PC/笔记本,平板,手机,...)上收取邮件了。但是我们不能把邮件给它发送出去,除非我们自己从服务器发送。现在我们将让postfix为我们转发邮件,但是这个只有成功登录才可以,这是为了保证邮件是由服务器上的某个有效帐号发出来的。要做到这个,我们要打开一个特殊的,全程SSL连接的,SASL鉴权的邮件提交服务。在文件**/etc/postfix/master.cf**里设置下面的参数: + + submission inet n - - - - smtpd + -o syslog_name=postfix/submission + -o smtpd_tls_security_level=encrypt + -o smtpd_sasl_auth_enable=yes + -o smtpd_client_restrictions=permit_sasl_authenticated,reject + -o smtpd_sasl_type=dovecot + -o smtpd_sasl_path=private/auth + -o smtpd_sasl_security_options=noanonymous + -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_non_fqdn_recipient,reject_unauth_destination + +然后重启postfix服务 + + service postfix reload + +现在,让我们试试从一台不同的机器连接这个服务,确定一下postfix现在能够正常中继我们自己的而不是其他任何人的邮件: + + openssl s_client -connect cloud.jhausse.net:587 -starttls smtp + EHLO cloud.jhausse.net + +注意一下服务器建议的'250-AUTH PLAIN'功能,在从端口25连接的时候不会生效。 + + MAIL FROM:asdf@jkl.net + rcpt to:bob@gmail.com + 554 5.7.1 : Relay access denied + QUIT + +这个没问题,postfix在不认识我们的时候是不会中继邮件的。所以,首先让我们先鉴定一下自己的身份。要这样做,我们首先需要生成一个鉴权字符串: + + echo -ne '\000roudy@jhausse.net\000mypassword'|base64 + +然后让我们尝试再次通过服务器发送邮件: + + openssl s_client -connect cloud.jhausse.net:587 -starttls smtp + EHLO cloud.jhausse.net + AUTH PLAIN DGplYW5AMTk4NGNsb3VQLm5ldAA4bmFmNGNvNG5jOA== + MAIL FROM:asdf@jkl.net + rcpt to:bob@gmail.com + +现在postfix应该能正常接收。最后完成这个测试,来检查一下我们的虚拟别名能正常工作,给postmaster@jhausse.net发送一封邮件然后确认一下它会被送到roudy@jhausse.net: + + telnet cloud.jhausse.net 25 + EHLO cloud.jhausse.net + MAIL FROM:youremail@domain.com + rcpt to:postmaster@jhausse.net + data + Subject: Virtual alias test + + Dear postmaster, + Long time no hear! I hope your MX is working smoothly and securely. + Yours sincerely, Roudy + . + QUIT + +让我们检查一下邮件是否被正常送到正确的收件箱了: + + openssl s_client -crlf -connect cloud.jhausse.net:993 + 1 login roudy@jhausse.net "mypassword" + 2 LIST "" "*" + 3 SELECT INBOX + * 2 EXISTS + * 2 RECENT + 4 LOGOUT + +到这里,我们已经拥有一个能正常工作的邮箱服务器了,能收发邮件。我们可以配置自己的设备来使用它。 + +PS:不要忘记再次[试试通过端口25往自己架设的服务器上的帐号发送邮件][29],来验证你已经没有被postgrey阻挡了。 + +### 阻止垃圾邮件进入你的收件箱 ### + +为了过滤垃圾邮件,我们已经使用了实时黑名单(RBLs)和灰名单(postgrey)。现在我们将增加自适应垃圾邮件过滤来让我们的垃圾邮件过滤能力提高一个等级。这意味着我们将为我们的邮件服务器增加人工智能,这样它就能从经验中学习哪些有件是垃圾哪些不是。我们将使用[dspam][30]来实现这个功能。 + + apt-get install dspam dovecot-antispam postfix-pcre dovecot-sieve + +dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误分类了之后让dovecot重新更新垃圾邮件过滤器。基本上,我们所需要做的就只是把邮件放进或拿出垃圾箱。dovecot-antispam将负责调用dspam来更新过滤器。至于postfix-pcre和dovecot-sieve,我们将分别用它们来把接收的邮件递给垃圾邮件过滤器以及自动把垃圾邮件放入用户的垃圾箱。 + +在配置文件**/etc/dspam/dspam.conf**里,为以下参数设置相应的值: + + TrustedDeliveryAgent "/usr/sbin/sendmail" + UntrustedDeliveryAgent "/usr/lib/dovecot/deliver -d %u" + Tokenizer osb + IgnoreHeader X-Spam-Status + IgnoreHeader X-Spam-Scanned + IgnoreHeader X-Virus-Scanner-Result + IgnoreHeader X-Virus-Scanned + IgnoreHeader X-DKIM + IgnoreHeader DKIM-Signature + IgnoreHeader DomainKey-Signature + IgnoreHeader X-Google-Dkim-Signature + ParseToHeaders on + ChangeModeOnParse off + ChangeUserOnParse full + ServerPID /var/run/dspam/dspam.pid + ServerDomainSocketPath "/var/run/dspam/dspam.sock" + ClientHost /var/run/dspam/dspam.sock + +然后,在配置文件**/etc/dspam/default.prefs**里,把以下参数改为: + + spamAction=deliver # { quarantine | tag | deliver } -> default:quarantine + signatureLocation=headers # { message | headers } -> default:message + showFactors=on + +现在我们需要把dspam连接到postfix和dovecot上,在配置文件**/etc/postfix/master.cf**最后添加这样两行: + + dspam unix - n n - 10 pipe + flags=Ru user=dspam argv=/usr/bin/dspam --deliver=innocent,spam --user $recipient -i -f $sender -- $recipient + dovecot unix - n n - - pipe + flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} + +现在我们将告诉postfix通过dspam来过滤所有提交给服务器端口25(一般的SMTP通信)的新邮件,除非该邮件是从服务器本身发出(permit_mynetworks)。注意下我们通过SASL鉴权提交给postfix的邮件不会通过dspam过滤,因为我们在前面部分里为这种方式设定了独立的提交服务。编辑文件**/etc/postfix/main.cf**将选项**smtpd_client_restrictions**改为如下内容: + + smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, check_client_access pcre:/etc/postfix/dspam_filter_access + +在文件末尾,还需要增加: + + # For DSPAM, only scan one mail at a time + dspam_destination_recipient_limit = 1 + +现在我们需要指定我们定义的过滤器。基本上,我们将告诉postfix把所有邮件(/./)通过unix套接字发给dspam。创建一个新文件**/etc/postfix/dspam_filter_access**并把下面一行写进去: + + /./ FILTER dspam:unix:/run/dspam/dspam.sock + +这是postfix部分的配置。现在让我们为dovecot设置垃圾过滤。在文件**/etc/dovecot/conf.d/20-imap.conf**里,修改**imap mail_plugin**插件参数为下面的方式: + + mail_plugins = $mail_plugins antispam + +并为lmtp增加一个部分: + + protocol lmtp { + # Space separated list of plugins to load (default is global mail_plugins). + mail_plugins = $mail_plugins sieve + } + +我们现在设置dovecot-antispam插件。编辑文件**/etc/dovecot/conf.d/90-plugin.conf**并把以下内容添加到插件部分: + + plugin { + ... + # Antispam (DSPAM) + antispam_backend = dspam + antispam_allow_append_to_spam = YES + antispam_spam = Junk;Spam + antispam_trash = Trash;trash + antispam_signature = X-DSPAM-Signature + antispam_signature_missing = error + antispam_dspam_binary = /usr/bin/dspam + antispam_dspam_args = --user;%u;--deliver=;--source=error + antispam_dspam_spam = --class=spam + antispam_dspam_notspam = --class=innocent + antispam_dspam_result_header = X-DSPAM-Result + } + +然后在文件**/etc/dovecot/conf.d/90-sieve.conf**里指定默认的sieve脚本,这个将对服务器上所有用户有效: + + sieve_default = /etc/dovecot/default.sieve + +什么是sieve以及为什么我们需要为所有用户设置一个默认脚本?sieve可以在IMAP服务器上为我们自动处理任务。在我们的例子里,我们想让所有被确定为垃圾的邮件会被移到垃圾箱而不是收件箱里。我们希望这是服务器上所有用户的默认行为;这是为什么我们把这个脚本设为默认脚本。现在让我们来创建这个脚本,建立一个新文件**/etc/dovecot/default.sieve**并写入以下内容: + + require ["regex", "fileinto", "imap4flags"]; + # Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox + if allof (header :regex "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$", + not header :contains "X-DSPAM-Reclassified" "Innocent") { + # Mark as read + # setflag "\\Seen"; + # Move into the Junk folder + fileinto "Junk"; + # Stop processing here + stop; + } + +现在我们需要编译这个脚本好让dovecot能运行它。我们也需要给它合适的权限。 + + cd /etc/dovecot + sievec . + chown mail.dovecot default.siev* + chmod 0640 default.sieve + chmod 0750 default.svbin + +最后,我们需要修改dspam要读取的两个postfix配置文件的权限: + + chmod 0644 /etc/postfix/dynamicmaps.cf /etc/postfix/main.cf + +就这些!让我们重启dovecot和postfix服务 + + service dovecot restart + service postfix restart + +然后通过从远程主机(比如我们用来设定服务器的电脑)连接服务器来测试一下反垃圾邮件: + + openssl s_client -connect cloud.jhausse.net:25 -starttls smtp + EHLO cloud.jhausse.net + MAIL FROM:youremail@domain.com + rcpt to:roudy@jhausse.net + DATA + Subject: DSPAM test + + Hi Roudy, how'd you like to eat some ham tonight? Yours, J + . + QUIT + +让我们检查一下邮件是否已经送到: + + openssl s_client -crlf -connect cloud.jhausse.net:993 + 1 login roudy@jhausse.net "mypassword" + 2 LIST "" "*" + 3 SELECT INBOX + 4 UID fetch 3:3 (UID RFC822.SIZE FLAGS BODY.PEEK[]) + +这个应该返回SPAM为邮件增加了一组标记的数据,看上去像这样: + + X-DSPAM-Result: Innocent + X-DSPAM-Processed: Sun Oct 5 16:25:48 2014 + X-DSPAM-Confidence: 1.0000 + X-DSPAM-Probability: 0.0023 + X-DSPAM-Signature: 5431710c178911166011737 + X-DSPAM-Factors: 27, + Received*Postfix+with, 0.40000, + Received*with+#+id, 0.40000, + like+#+#+#+ham, 0.40000, + some+#+tonight, 0.40000, + Received*certificate+requested, 0.40000, + Received*client+certificate, 0.40000, + Received*for+roudy, 0.40000, + Received*Sun+#+#+#+16, 0.40000, + Received*Sun+#+Oct, 0.40000, + Received*roudy+#+#+#+Oct, 0.40000, + eat+some, 0.40000, + Received*5+#+#+16, 0.40000, + Received*cloud.jhausse.net+#+#+#+id, 0.40000, + Roudy+#+#+#+to, 0.40000, + Received*Oct+#+16, 0.40000, + to+#+#+ham, 0.40000, + Received*No+#+#+requested, 0.40000, + Received*jhausse.net+#+#+Oct, 0.40000, + Received*256+256, 0.40000, + like+#+#+some, 0.40000, + Received*ESMTPS+id, 0.40000, + how'd+#+#+to, 0.40000, + tonight+Yours, 0.40000, + Received*with+cipher, 0.40000 + 5 LOGOUT + +很好!你现在已经为你服务器上的用户配置好自适应垃圾邮件过滤。当然,每个用户将需要在开始的几周里培训过滤器。要标记一则信息为垃圾,只需要在你的任意设备(电脑,平板,手机)上将它移动到叫“垃圾箱”或“废纸篓”的目录里。否则它将被标记为有用。 + +### 确保你发出的邮件能通过垃圾邮件过滤器 ### + +这个部分我们的目标是让我们的邮件服务器能尽量干净地出现在世界上,并让垃圾邮件发送者们更难以我们的名义发邮件。作为附加效果,这也有助于让我们的邮件能通过其他邮件服务器的垃圾邮件过滤器。 + +#### 发送者策略框架 #### + +发送者策略框架(SPF)是你添加到自己服务器区域里的一份记录,声明了整个因特网上哪些邮件服务器能以你的域名发邮件。设置非常简单,使用[microsoft.com][31]上的SPF向导来生成你的SPF记录,然后作为一个TXT记录添加到自己的服务器区域里。看上去像这样: + + jhausse.net. 300 IN TXT v=spf1 mx mx:cloud.jhausse.net -all + +#### 反向PTR #### + +我们[之前][32]在本文里讨论过这个问题,建议你为自己的服务器正确地设置反向DNS,这样对服务器IP地址的反向查询能返回你服务器的实际名字。 + +#### OpenDKIM #### + +当我们激活[OpenDKIM][33]后,postfix会用密钥为每封发出去的邮件签名。然后我们将把这个密钥存储在DNS域中。这样的话,世界上任意一个邮件服务器都能够检验邮件是否真的是我们发出的,或是由垃圾邮件发送者伪造的。让我们先安装opendkim: + + apt-get install opendkim opendkim-tools + +然后按如下方式编辑**/etc/opendkim.conf**文件的配置: + + ## + ## opendkim.conf -- configuration file for OpenDKIM filter + ## + Canonicalization relaxed/relaxed + ExternalIgnoreList refile:/etc/opendkim/TrustedHosts + InternalHosts refile:/etc/opendkim/TrustedHosts + KeyTable refile:/etc/opendkim/KeyTable + LogWhy Yes + MinimumKeyBits 1024 + Mode sv + PidFile /var/run/opendkim/opendkim.pid + SigningTable refile:/etc/opendkim/SigningTable + Socket inet:8891@localhost + Syslog Yes + SyslogSuccess Yes + TemporaryDirectory /var/tmp + UMask 022 + UserID opendkim:opendkim + +我们还需要几个额外的文件,将保存在目录**/etc/opendkim**里: + + mkdir -pv /etc/opendkim/ + cd /etc/opendkim/ + +让我们建立新文件**/etc/opendkim/TrustedHosts**并写入以下内容 + + 127.0.0.1 + +建立新文件**/etc/opendkim/KeyTable**并写入以下内容 + + cloudkey jhausse.net:mail:/etc/opendkim/mail.private + +这会告诉OpenDKIM我们希望使用一个名叫'cloudkey'的加密密钥,它的内容在文件/etc/opendkim/mail.private里。我们建立另一个名叫**/etc/opendkim/SigningTable**的文件然后写入下面这一行: + + *@jhausse.net cloudkey + +这会告诉OpenDKIM每封从jhausse.net域发出的邮件都应该用'cloudkey'密钥签名。如果我们还有其他域希望也能签名,我们也可以在这里添加。 + +下一步是生成密钥并修改OpenDKIM配置文件的权限。 + + opendkim-genkey -r -s mail [-t] + chown -Rv opendkim:opendkim /etc/opendkim + chmod 0600 /etc/opendkim/* + chmod 0700 /etc/opendkim + +一开始,最好使用-t开关,这样会通知其他邮件服务器你只是在测试模式下,这样他们就不会丢弃基于你的OpenDKIM签名的邮件(目前来说)。你可以从mail.txt文件里看到OpenDKIM密钥: + + cat mail.txt + +然后把它作为一个TXT记录添加到区域文件里,应该是这样的 + + mail._domainkey.cloud1984.net. 300 IN TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqG... + +最后,我们需要告诉postfix来为发出的邮件签名。在文件/etc/postfix/main.cf末尾,添加: + + # Now for OpenDKIM: we'll sign all outgoing emails + smtpd_milters = inet:127.0.0.1:8891 + non_smtpd_milters = $smtpd_milters + milter_default_action = accept + +然后重启相关服务 + + service postfix reload + service opendkim restart + +现在让我们测试一下能找到我们的OpenDKIM公钥并和私钥匹配: + + opendkim-testkey -d jhausse.net -s mail -k mail.private -vvv + +这个应该返回 + + opendkim-testkey: key OK + +这个你可能需要等一会直到域名服务器重新加载该区域(对于Linode,每15分钟会更新一次)。你可以用**dig**来检查区域是否已经重新加载。 + +如果这个没问题,让我们测试一下其他服务器能验证我们的OpenDKIM签名和SPF记录。要做这个,我们可以用[Brandon Checkett的邮件测试][34]。发送一封邮件到[Brandon的网页][34]上提供的测试地址,我们可以在服务器上运行下面的命令 + + mail -s CloudCheck ihAdmTBmUH@www.brandonchecketts.com + +在Brandon的网页上,我们应该可以在'DKIM Signature'部分里看到**result = pass**的文字,以及在'SPF Information'部分看到**Result: pass**的文字。如果我们的邮件通过这个测试,只要不加-t开关重新生成OpenDKIM密钥,上传新的密钥到区域文件里,然后重新测试检查是否仍然可以通过这些测试。如果可以的话,恭喜!你已经在你的服务器上成功配置好OpenDKIM和SPF了! + +### 使用Owncloud提供日历,联系人,文件服务并通过Roundcube配置网页邮件 ### + +既然我们已经拥有了一流的邮件服务器,让我们再为它增加在云上保存通讯录,日程表和文件的能力。这些是[Owncloud][35]所提供的非常赞的服务。在这个弄好后,我们还会设置一个网页邮件,这样就算你没带任何电子设备出去旅行时,或者说在你的手机或笔记本没电的情况下,也可以检查邮件。 + +安装Owncloud非常直观,而且在[这里][36]有非常好的介绍。在Debian系统里,归根结底就是把owncloud的仓库添加到apt源里,下载Owncloud的发行密钥并安装到apt钥匙链中,然后通过apt-get安装Owncloud: + + echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/ /' >> /etc/apt/sources.list.d/owncloud.list + wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_6.0/Release.key + apt-key add - < Release.key + apt-get update + apt-get install apache2 owncloud roundcube + +在有提示的时候,选择**dbconfig**然后说你希望**roundcube**使用**mysql**。然后,提供一下mysql的root密码并为roundcube的mysql用户设置一个漂亮的密码。然后,按如下方式编辑roundcube的配置文件**/etc/roundcube/main.inc.php**,这样登录roundcube默认会使用你的IMAP服务器: + + $rcmail_config['default_host'] = 'ssl://localhost'; + $rcmail_config['default_port'] = 993; + +现在我们来配置一下apache2网页服务器增加SSL支持,这样我们可以和Owncloud和Roundcube对话时使用加密的方式传输我们的密码和数据。让我们打开Apache的ssl模块: + + a2enmod ssl + +然后编辑文件**/etc/apache2/ports.conf**并设定以下参数: + +NameVirtualHost *:80 +Listen 80 +ServerName www.jhausse.net + + + # If you add NameVirtualHost *:443 here, you will also have to change + # the VirtualHost statement in /etc/apache2/sites-available/default-ssl + # to + # Server Name Indication for SSL named virtual hosts is currently not + # supported by MSIE on Windows XP. + NameVirtualHost *:443 + Listen 443 + + + + Listen 443 + + +我们将在目录**/var/www**下为服务器加密连接**https://www.jhausse.net**设定一个默认网站。编辑文件**/etc/apache2/sites-available/default-ssl**: + + + ServerAdmin webmaster@localhost + + DocumentRoot /var/www + ServerName www.jhausse.net + [...] + + Deny from all + + [...] + SSLCertificateFile /etc/ssl/certs/cloud.crt + SSLCertificateKeyFile /etc/ssl/private/cloud.key + [...] + + +然后让我们同时也在目录**/var/www**下设定一个非加密连接**http://www.jhausse.net**的默认网站。编辑文件**/etc/apache2/sites-available/default**: + + + DocumentRoot /var/www + ServerName www.jhausse.net + [...] + + Deny from all + + + +这样的话,我们通过把文件放到/var/www目录下让www.jhausse.net使用它们提供网站服务。名叫'Deny from all'的指令可以阻止通过www.jhausse.net访问Owncloud:我们将设定通过**https://cloud.jhausse.net**来正常访问。 + +现在我们将设定网页邮件(roundcube),让它可以通过网址**https://webmail.jhausse.net**来访问。编辑文件**/etc/apache2/sites-available/roundcube**并写入以下内容: + + + + ServerAdmin webmaster@localhost + + DocumentRoot /var/lib/roundcube + # The host name under which you'd like to access the webmail + ServerName webmail.jhausse.net + + Options FollowSymLinks + AllowOverride None + + + ErrorLog ${APACHE_LOG_DIR}/error.log + + # Possible values include: debug, info, notice, warn, error, crit, + # alert, emerg. + LogLevel warn + + CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined + + # SSL Engine Switch: + # Enable/Disable SSL for this virtual host. + SSLEngine on + + # do not allow unsecured connections + # SSLRequireSSL + SSLCipherSuite HIGH:MEDIUM + + # A self-signed (snakeoil) certificate can be created by installing + # the ssl-cert package. See + # /usr/share/doc/apache2.2-common/README.Debian.gz for more info. + # If both key and certificate are stored in the same file, only the + # SSLCertificateFile directive is needed. + SSLCertificateFile /etc/ssl/certs/cloud.crt + SSLCertificateKeyFile /etc/ssl/private/cloud.key + + # Those aliases do not work properly with several hosts on your apache server + # Uncomment them to use it or adapt them to your configuration + Alias /program/js/tiny_mce/ /usr/share/tinymce/www/ + + # Access to tinymce files + + Options Indexes MultiViews FollowSymLinks + AllowOverride None + Order allow,deny + allow from all + + + + Options +FollowSymLinks + # This is needed to parse /var/lib/roundcube/.htaccess. See its + # content before setting AllowOverride to None. + AllowOverride All + order allow,deny + allow from all + + + # Protecting basic directories: + + Options -FollowSymLinks + AllowOverride None + + + + Options -FollowSymLinks + AllowOverride None + Order allow,deny + Deny from all + + + + Options -FollowSymLinks + AllowOverride None + Order allow,deny + Deny from all + + + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + # SSL Protocol Adjustments: + # The safe and default but still SSL/TLS standard compliant shutdown + # approach is that mod_ssl sends the close notify alert but doesn't wait for + # the close notify alert from client. When you need a different shutdown + # approach you can use one of the following variables: + # o ssl-unclean-shutdown: + # This forces an unclean shutdown when the connection is closed, i.e. no + # SSL close notify alert is send or allowed to received. This violates + # the SSL/TLS standard but is needed for some brain-dead browsers. Use + # this when you receive I/O errors because of the standard approach where + # mod_ssl sends the close notify alert. + # o ssl-accurate-shutdown: + # This forces an accurate shutdown when the connection is closed, i.e. a + # SSL close notify alert is send and mod_ssl waits for the close notify + # alert of the client. This is 100% SSL/TLS standard compliant, but in + # practice often causes hanging connections with brain-dead browsers. Use + # this only for browsers where you know that their SSL implementation + # works correctly. + # Notice: Most problems of broken clients are also related to the HTTP + # keep-alive facility, so you usually additionally want to disable + # keep-alive for those clients, too. Use variable "nokeepalive" for this. + # Similarly, one has to force some clients to use HTTP/1.0 to workaround + # their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and + # "force-response-1.0" for this. + BrowserMatch "MSIE [2-6]" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + # MSIE 7 and newer should be able to use keepalive + BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown + + + +然后在你的DNS服务商那里声明一下服务器,例如: + + webmail.jhausse.net. 300 IN CNAME cloud.jhausse.net. + +现在让我激活这三个网站 + + a2ensite default default-ssl roundcube + service apache2 restart + +关于网页邮件,可以通过网址**https://webmail.jhausse.net**来访问,基本上能工作。之后使用邮箱全名(例如roudy@jhausse.net)和在本文一开始在邮件服务器数据库里设定的密码登录。第一次连接成功,浏览器会警告说证书没有可靠机构的签名。这个没什么关系,只要添加一个例外。 + +最后但很重要的是,我们将通过把以下内容你哦个写入**/etc/apache2/sites-available/owncloud**来为Owncloud创建一个虚拟主机。 + + + + ServerAdmin webmaster@localhost + + DocumentRoot /var/www/owncloud + ServerName cloud.jhausse.net + + Options FollowSymLinks + AllowOverride None + + + Options Indexes FollowSymLinks MultiViews + AllowOverride All + Order allow,deny + allow from all + + + ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ + + AllowOverride None + Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch + Order allow,deny + Allow from all + + + ErrorLog ${APACHE_LOG_DIR}/error.log + + # Possible values include: debug, info, notice, warn, error, crit, + # alert, emerg. + LogLevel warn + + CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined + + # SSL Engine Switch: + # Enable/Disable SSL for this virtual host. + SSLEngine on + + # do not allow unsecured connections + # SSLRequireSSL + SSLCipherSuite HIGH:MEDIUM + SSLCertificateFile /etc/ssl/certs/cloud.crt + SSLCertificateKeyFile /etc/ssl/private/cloud.key + + + SSLOptions +StdEnvVars + + + SSLOptions +StdEnvVars + + + BrowserMatch "MSIE [2-6]" \ + nokeepalive ssl-unclean-shutdown \ + downgrade-1.0 force-response-1.0 + # MSIE 7 and newer should be able to use keepalive + BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown + + + +然后通过执行以下命令激活Owncloud + + a2ensite owncloud + service apache2 reload + +之后通过在浏览器里打开链接**https://cloud.jhausse.net/**配置一下Owncloud。 + +就这些了!现在你已经拥有自己的Google Drive,日程表,联系人,Dropbox,以及Gmail!好好享受下新鲜恢复保护的隐私吧!:-) + +### 在云上同步你的设备 ### + +要同步你的邮件,你可以只是用你喜欢的邮件客户端:Android或iOS自带的默认邮件应用,[k9mail][37],或者电脑上的Thunderbird。或者你也可以使用我们设置好的网页邮件。 + +在Owncloud的文档里描述了如何与云端同步你的日程表和联系人。在Android系统中,我用的是CalDAV-Sync,CardDAV-Sync应用桥接了手机上Android自带日历以及联系人应用和Owncloud服务器。 + +对于文件,有一个叫Owncloud的Android应用可以访问你手机上的文件,然后自动把你拍的图片和视频上传到云中。在你的Mac/PC上访问云端文件也很容易,在[Owncloud文档里有很好的描述][38]。 + +### 最后一点提示 ### + +在上线后的前几个星期里,最好每天检查一下日志**/var/log/syslog**和**/var/log/mail.log**以保证一切都在顺利运行。在你邀请其他人(朋友,家人,等等)加入你的服务器之前这很重要。他们信任你能很好地架设个人服务器维护他们的数据,但是如果服务器突然崩溃会让他们很失望。 + +要添加另一个邮件用户,只要在数据库**mailserver**的**virtual_users**表中增加一行。 + +要添加一个域名,只要在**virtual_domains**表中增加一行。然后更新**/etc/opendkim/SigningTable**为发出的邮件签名,上传OpenDKIM密钥到服务器区域,然后吃哦更年期OpenDKIM服务。 + +Owncloud有自己的用户数据库,在用管理员帐号登录后可以修改。 + +最后,万一在服务器临时崩溃的时候想办法找解决方案很重要。比如说,在服务器恢复之前你的邮件应该送往哪儿?一种方式是找个能帮你做备份MX的朋友,同时你也可以当他的备份MX(看下postfix的配置文件**main.cf**里**relay_domains**和**relay_recipient_maps**里的设定)。与此类似,如果你的服务器被破解然后一个坏蛋把你所有文件删了怎么办?对于这个,考虑增加一个常规备份系统就很重要了。Linode提供了备份选项。在1984.is里,我用crontabs和scp做了一个基本但管用的自动备份系统。 + +-------------------------------------------------------------------------------- + +via: https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/ + +作者:[Roudy Jhausse ][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:aboutlinux@free.fr +[1]:https://history.google.com/history/ +[2]:http://research.google.com/workatgoogle.html +[3]:http://www.attac.org/ +[4]:http://www.nytimes.com/2012/02/19/magazine/shopping-habits.html?pagewanted=all +[5]:http://vimeo.com/ondemand/termsandconditions +[6]:http://www.techtimes.com/articles/21670/20141208/sony-pictures-hack-nightmare-week-celebs-data-leak-and-threatening-emails-to-employees.htm +[7]:http://blog.backupify.com/2012/07/25/what-is-my-gmail-account-really-worth/ +[8]:http://adage.com/article/digital/worth-facebook-google/293042/ +[9]:http://vimeo.com/ondemand/termsandconditions +[10]:https://prism-break.org/en/ +[11]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#VPS +[12]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#mail +[13]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#dspam +[14]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#SPF +[15]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#owncloud +[16]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#sync +[17]:http://linuxfr.org/news/heberger-son-courriel +[18]:http://sealedabstract.com/code/nsa-proof-your-e-mail-in-2-hours/ +[19]:http://www.1984.is/ +[20]:http://www.linode.com/ +[21]:http://www.greenpeace.org/international/Global/international/publications/climate/2012/iCoal/HowCleanisYourCloud.pdf +[22]:http://www.1984.is/about/ +[23]:http://www.fsf.org/ +[24]:https://www.gnupg.org/ +[25]:http://www.gandi.net/ +[26]:http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html +[27]:http://www.postfix.org/ +[28]:http://postgrey.schweikert.ch/ +[29]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#testPort25 +[30]:http://dspam.sourceforge.net/ +[31]:http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/ +[32]:https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/#PTR +[33]:http://opendkim.org/opendkim-README +[34]:http://www.brandonchecketts.com/emailtest.php +[35]:http://owncloud.org/ +[36]:http://owncloud.org/install/ +[37]:https://code.google.com/p/k9mail/ +[38]:http://doc.owncloud.org/server/7.0/user_manual/files/files.html From 78b4961b8cda4027772fdc0af50d3520fb28f67c Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 13 Feb 2015 13:21:48 +0800 Subject: [PATCH 307/725] translating --- ...wers--How to get the process ID (PID) of a shell script.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md b/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md index 999e3b4327..2fff492d6a 100644 --- a/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md +++ b/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md @@ -1,3 +1,5 @@ +Translating---geekpi + Linux FAQs with Answers--How to get the process ID (PID) of a shell script ================================================================================ > **Question**: I want to know the process ID (PID) of the subshell under which my shell script is running. How can I find a PID in a bash shell script? @@ -45,4 +47,4 @@ via: http://ask.xmodulo.com/process-id-pid-shell-script.html 译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 09f2ee0599e09b3e437b9a127d6791c85ec6d0c3 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 13 Feb 2015 13:53:44 +0800 Subject: [PATCH 308/725] translated --- ... the process ID (PID) of a shell script.md | 50 ------------------- ... the process ID (PID) of a shell script.md | 48 ++++++++++++++++++ 2 files changed, 48 insertions(+), 50 deletions(-) delete mode 100644 sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md create mode 100644 translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md diff --git a/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md b/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md deleted file mode 100644 index 2fff492d6a..0000000000 --- a/sources/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md +++ /dev/null @@ -1,50 +0,0 @@ -Translating---geekpi - -Linux FAQs with Answers--How to get the process ID (PID) of a shell script -================================================================================ -> **Question**: I want to know the process ID (PID) of the subshell under which my shell script is running. How can I find a PID in a bash shell script? - -When you execute a shell script, it will launch a process known as a subshell. As a child process of the main shell, a subshell executes a list of commands in a shell script as a batch (so-called "batch processing"). - -In some cases, you may want to know the process ID (PID) of the subshell where your shell script is running. This PID information can be used under different circumstances. For example, you can create a unique temporary file in /tmp by naming it with the shell script PID. In case a script needs to examine all running processes, it can exclude its own subshell from the process list. - -In bash, the **PID of a shell script's subshell process** is stored in a special variable called '$$'. This variable is read-only, and you cannot modify it in a shell script. For example: - - #!/bin/bash - - echo "PID of this script: $$" - -The above script will show the following output. - - PID of this script: 6583 - -Besides $$, bash shell exports several other read-only variables. For example, PPID stores the process ID of the subshell's parent process (i.e., main shell). UID stores the user ID of the current user who is executing the script. For example: - - #!/bin/bash - - echo "PID of this script: $$" - echo "PPID of this script: $PPID" - echo "UID of this script: $UID" - -Its output will be: - - PID of this script: 6686 - PPID of this script: 4656 - UID of this script: 1000 - -In the above, PID will keep changing every time you invoke a script. That is because each invocation of a script will create a new subshell. On the other hand, PPID will remain the same as long as you run a script inside the same shell. - -![](https://farm8.staticflickr.com/7437/16274890369_e78ce16d42_b.jpg) - -For a complete list of built-in bash variables, refer to its man page. - - $ man bash - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/process-id-pid-shell-script.html - -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md b/translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md new file mode 100644 index 0000000000..760757a712 --- /dev/null +++ b/translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md @@ -0,0 +1,48 @@ +Linux有问必答:如何在脚本中获取进程ID(PID) +================================================================================ +> **提问**: 我想要知道运行中脚本subshell的进程id。我该如何在shell脚本中得到PID。 + +当我在执行shell脚本时,它会启动一个叫subshell的进程。作为主shell的子进程,subshell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 + +在某些情况下,你也许想要知道运行中的subshell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的subshell。 + +在bash中,**subshell进程的PID**存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如: + + #!/bin/bash + + echo "PID of this script: $$" + +上面的脚本会得到下面的输出: + + PID of this script: 6583 + +除了$$, bash shell还会导出其他的只读变量。比如,PPID存储subshell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID。比如: + + #!/bin/bash + + echo "PID of this script: $$" + echo "PPID of this script: $PPID" + echo "UID of this script: $UID" + +输出是: + + PID of this script: 6686 + PPID of this script: 4656 + UID of this script: 1000 + +上面输出中,PID每次执行都会变化。这个因为每次运行都会创建一个新的shell。另一方面,PPID每次都会一样只要你在同一个shell中运行。 + +![](https://farm8.staticflickr.com/7437/16274890369_e78ce16d42_b.jpg) + +对于所有bash内置变量列表,参考man页。 + + $ man bash + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/process-id-pid-shell-script.html + +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 4aa6493d879f26fe664dfe30eb5b4e92fa9ad6c6 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Fri, 13 Feb 2015 14:29:22 +0800 Subject: [PATCH 309/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...XBMC) In Ubuntu 14.04 and Linux Mint 17.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md b/translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md index 20b6715d38..61202528a9 100644 --- a/translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md +++ b/translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md @@ -1,28 +1,28 @@ -Ubuntu14.04或Mint17如何安装Kodi14(XBMC) +如何在 Ubuntu 14.04 和 Linux Mint 17 中安装 Kodi14(XBMC) ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Kodi_Xmas.jpg) [Kodi][1],原名就是大名鼎鼎的XBMC,发布[最新版本14][2],命名为Helix。感谢官方XMBC提供的PPA,现在可以很简单地在Ubuntu14.04中安装了。 -Kodi是一个优秀的自由和开源的(GPL)媒体中心软件,支持所有平台,如Windows, Linux, Mac, Android等。此软件拥有全屏幕的媒体中心,可以管理所有音乐和视频,不单支持本地文件还支持网络播放,如Tube,[Netflix][3], Hulu, Amazon Prime和其他串流服务商。 +有些人可能还不了解Kodi,它是一个媒体中心软件,支持所有平台,如Windows、Linux、 Mac, Android等。此软件拥有全屏的媒体中心,可以管理所有音乐和视频,不单支持本地文件还支持网络播放,如Tube、[Netflix][3]、 Hulu, Amazon Prime和其他流媒体服务商。 -### Ubuntu 14.04, 14.10 和 Linux Mint 17 中安装XBMC 14 Kodi Helix ### +### 在 Ubuntu 14.04 和 Linux Mint 17 中安装 XBMC 14 Kodi Helix ### 再次感谢官方的PPA,让我们可以轻松安装Kodi 14。 -支持Ubuntu 14.04, Ubuntu 12.04, Linux Mint 17, Pinguy OS 14.04, Deepin 2014, LXLE 14.04, Linux Lite 2.0, Elementary OS and 其他基于Ubuntu的Linux 发行版。 +支持Ubuntu 14.04、Ubuntu 12.04、Linux Mint 17、Pinguy OS 14.04、Deepin 2014、LXLE 14.04、Linux Lite 2.0, Elementary OS 以及其他基于 Ubuntu 的 Linux 发行版。 打开终端(Ctrl+Alt+T)然后使用下列命令。 sudo add-apt-repository ppa:team-xbmc/ppa sudo apt-get update sudo apt-get install kodi -需要下载大约100MB,在我的观点这不是很大。若需安装解码插件,使用下列命令: +需要下载大约100MB,在我看来,这不是很大。若需安装解码插件,使用下列命令: sudo apt-get install kodi-audioencoder-* kodi-pvr-* -#### 从Ubuntu中移除Kodi 14 #### +#### 从 Ubuntu 中移除 Kodi 14 #### -从系统中移除Kodi 14 ,使用下列命令: +从系统中移除 Kodi 14,使用下列命令: sudo apt-get remove kodi @@ -30,10 +30,8 @@ Kodi是一个优秀的自由和开源的(GPL)媒体中心软件,支持所 sudo add-apt-repository --remove ppa:team-xbmc/ppa -我希望这个简单的文章可以帮助到你,在Ubuntu, Linux Mint 和其他 Linux版本中轻松安装Kodi 14。 -你怎么发现Kodi 14 Helix? -你有没有使用其他的什么媒体中心? -可以在下面的评论区分享你的观点。 +我希望这篇简单的文章可以帮助到你在Ubuntu、Linux Mint 和其他 Linux 版本中轻松安装 Kodi 14。你是怎么发现 Kodi 14 Helix 的? +你有没有使用其他的媒体中心来作为 XBMC 的替代?可以在下面的评论区分享你的观点。 -------------------------------------------------------------------------------- @@ -41,7 +39,7 @@ via: http://itsfoss.com/install-kodi-14-xbmc-in-ubuntu-14-04-linux-mint-17/ 作者:[Abhishek][a] 译者:[Vic020/VicYu](http://www.vicyu.net) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From df316cfec2c113041b0e7575ede7e043b83325c2 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Fri, 13 Feb 2015 14:59:32 +0800 Subject: [PATCH 310/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5 How To Install Winusb In Ubuntu 14.04.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md b/translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md index b9fe775752..a65ba04392 100644 --- a/translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md +++ b/translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md @@ -1,16 +1,16 @@ -如何在Ubuntu 14.04 中安装Winusb +如何在 Ubuntu 14.04 中安装 Winusb ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/WinUSB_Ubuntu_1404.jpeg) -[WinUSB][1]是一款简单的且有用的工具,可以让你从Windows ISO镜像或者DVD中创建USB安装盘。它结合了GUI和命令行,你可以根据你的喜好决定使用哪种。 +[WinUSB][1]是一款即简单又有用的工具,可以让你从 Windows ISO 镜像或者 DVD 中创建 USB 安装盘。它结合了 GUI 和命令行,你可以根据你的喜好决定使用哪种。 -在本篇中我们会展示**如何在Ubuntu 14.04、14.10 和 Linux Mint 17 中安装WinUSB**。 +在本文中我们会展示**如何在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB**。 -### 在Ubuntu 14.04、14.10 和 Linux Mint 17 中安装WinUSB ### +### 在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB ### -直到Ubuntu 13.10, WinUSBu一直都在积极开发,且在官方PPA中可以找到。这个PPA还没有为Ubuntu 14.04 和14.10更新,但是二进制文件仍旧可在更新版本的Ubuntu和Linux Mint中运行。基于[基于你使用的系统是32位还是64位的][2],使用下面的命令来下载二进制文件: +在 Ubuntu 13.10 之前, WinUSBu 一直都在积极开发,且在官方 PPA 中可以找到。这个 PPA 还没有为 Ubuntu 14.04 和 14.10 更新,但是二进制文件仍旧可在更新版本的 Ubuntu 和 Linux Mint 中运行。基于[你使用的系统是32位还是64位][2],使用下面的命令来下载二进制文件: -打开终端,并在32位的系统下使用下面的命令: +打开终端,32位的系统下使用下面的命令: wget https://launchpad.net/~colingille/+archive/freshlight/+files/winusb_1.0.11+saucy1_i386.deb @@ -22,15 +22,15 @@ sudo dpkg -i winusb* -不要担心在你安装WinUSB时看见错误。使用这条命令修复依赖: +不要担心在你安装WinUSB时看到错误。使用这条命令修复依赖错误: sudo apt-get -f install -之后,你就可以在Unity Dash中查找WinUSB并且用它在Ubuntu 14.04 中创建Windows的live USB了。 +之后,你就可以在 Unity Dash 中查找 WinUSB 并且用它在 Ubuntu 14.04 中创建 Windows 的 live USB 了。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/WinUSB_Ubuntu.png) -我希望这篇文章能够帮到你**在Ubuntu 14.04、14.10 和 Linux Mint 17 中安装WinUSB**。 +我希望这篇文章能够帮到你**在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB**。 -------------------------------------------------------------------------------- @@ -38,10 +38,10 @@ via: http://itsfoss.com/install-winusb-in-ubuntu-14-04/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://itsfoss.com/author/Abhishek/ [1]:http://en.congelli.eu/prog_info_winusb.html -[2]:http://itsfoss.com/how-to-know-ubuntu-unity-version/ \ No newline at end of file +[2]:http://itsfoss.com/how-to-know-ubuntu-unity-version/ From 8c334b577e0e9e13155d78dbca9d4406393ba86f Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 13 Feb 2015 15:50:13 +0800 Subject: [PATCH 311/725] Translating by ZTinoZ --- .../share/20150114 What is a good IDE for C or C++ on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 2096f50b85..2cf3d3ab37 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -12,7 +12,7 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7522/16276001255_66235a0a69_c.jpg) -我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[plugin][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。And thanks to the [CDT Project][5], it is possible to program in C/C++ too. You will benefit from all the power of Eclipse and its traditional features like word completion, code outline, code generator, and advanced refactoring. What it lacks in my opinion is the lightness of Code::Blocks. It is still very heavy and takes time to load. But if your machine can take it, or if you are a hardcore Eclipse fan, it is a very safe option. +我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[plugin][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。这里要感谢[CDT 项目][5],让Eclipse编写C程序变得可能。你同样可以体验到Eclipse的强大功能包括它的一些传统功能特点比如自动补全、代码大纲、代码生成器和先进的重构功能。照我话说,它的不足之处在于它不如Code::Blocks那么轻量级,它仍然很臃肿,要花费很多时间去载入。但是如果你的电脑可以驾驭它,或者你是个忠实的Eclipse粉,那么它一定是你的不二选择。 ### 3. Geany ### From 91abf5dc4d9e335474f0111f11ab8ad852f61d1d Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sat, 14 Feb 2015 07:43:44 +0800 Subject: [PATCH 312/725] Update 20150211 Best Known Linux Archive or Compress Tools.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- .../20150211 Best Known Linux Archive or Compress Tools.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md b/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md index 3d3960cf4d..86623a5c99 100644 --- a/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md +++ b/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md @@ -1,3 +1,5 @@ +Translating by FSSlc + Best Known Linux Archive / Compress Tools ================================================================================ Sending and receiving large files and pictures over the internet is a headache many times. Compression and decompression tools are meant to address this problem. Lets take a quick overview of a few open source tools that are available to make our jobs simpler. @@ -226,4 +228,4 @@ via: http://linoxide.com/tools/linux-compress-decompress-tools/ [2]:http://www.gzip.org/ [3]:http://www.bzip.org/ [4]:http://www.7-zip.org/ -[5]:https://wiki.archlinux.org/index.php/p7zip \ No newline at end of file +[5]:https://wiki.archlinux.org/index.php/p7zip From b9b12c00f376953e59a9dd18fd061b256261ae66 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Sun, 15 Feb 2015 10:27:40 +0800 Subject: [PATCH 313/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...A New Web Browser Built for Power Users.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md index 77e9762b7f..f82ca8965d 100644 --- a/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md +++ b/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md @@ -1,18 +1,18 @@ -有请Vivaldi——全新网页浏览器,为高手级用户而生 +认识Vivaldi——一款为高手级用户定制的全新网页浏览器 ================================================================================ ![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/Screen-Shot-2015-01-27-at-17.36.jpg) -**这一周一个为了满足高手级用户的需要而制造出来的全新网页浏览器已然来临——而且它已经可以在Linux上使用了。** +**这周一个为了满足高手级用户的需要而定制的全新网页浏览器已然来临——而且它已经可以在Linux上使用了。** -Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux,Windows和Mac机发布了技术预览版(请读:无责任测试)。它是在 — 震惊 — 尝试且已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上制造的。 +Vivaldi就是这个新浏览器的名字,而且它还面向64位Linux、Windows 和 Mac 机发布了技术预览版(注解:无责任测试版)。它是建立在已测试过的Chromium开源框架,Blink和Google的开源V8 JavaScript引擎(以及其他项目)的基础上。 -这个世界真的想要再有一个浏览器吗?Vivaldi——出自Opera软件前首席执行官Jon S.von Tetzchner的想法——不怎么关注所要,更关注所需。 +这个世界真的还需要一个浏览器吗?Opera软件前首席执行官Jon S.von Tetzchner的构想——Vivaldi不怎么关注所要,更关注所需。 -Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那种功能。并没有为那些认为Firefox复杂或是对Chrome的唯一批评是它改动了书签按钮的用户而进行修改。 +Vivaldi被制造成带有着偏向于键盘操作的tab键痴迷者所需的那种功能。并没有为那些认为Firefox复杂或是批评Chrome改动了书签按钮的用户而进行修改。 这也并不是什么俗气的营销噱头。尽管它带有‘技术预览版’标签,Vivaldi已经有了明显偏向于高手级用户们的功能。 -相当多的人觉得自己被其他软件公司所生产的简化的,配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会以至于打败了其他产品。 +相当多的人觉得自己被其他软件公司所生产的简化的,配对后发行的产品遗弃了、糊弄了。Vivaldi——即使在这个过渡期的早期——看起来适逢其会,可以打败其他产品。 ### Vivaldi功能### @@ -20,13 +20,13 @@ Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那 ![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/quick.jpg) -**快捷命令** (Ctrl + Q)是个内置的HUD应用,他可以让你快速的滤过设置,选项和功能,用它打开一个书签或是隐藏状态栏,只需用你的键盘。无需点击。 +**快捷命令** (Ctrl + Q)是个内置的HUD应用,它可以让你快速过滤设置、选项和功能,用它打开一个书签或是隐藏状态栏,只需用你的键盘,无需鼠标点击。 **标签堆** 让你可以通过把多个不同标签分到一组来清理你的工作区,然后可以通过键盘命令或者可预览标签选择器在标签组之间进行切换。 ![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/tab-stacks.jpg) -一个可折叠的**侧边栏**藏有额外功能(就像旧Opera)包括一个(目前还不能工作的)邮箱客户端,链接,书签浏览器和可以让你截屏并做注释的笔记专区 +一个可折叠的**侧边栏**藏有额外功能(就像旧Opera)包括一个(目前还不能工作的)邮箱客户端,链接,书签浏览器和可以让你截屏并做注释的笔记专区。 还提供了一大堆其他的功能,包括设置键盘快捷键,一个可以被设置在浏览器任何一个边(或完全隐藏)的标签栏,隐私选项和一个快速打开文件夹的功能。 @@ -34,9 +34,9 @@ Vivaldi被制造成带有着偏向于键盘操作的tab键瘾君子所需的那 ![](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/vivaldi-settings-in-ubuntu-750x434.jpg) -把Vivaldi当作Opera post-Presto(Opera旧的拥有版权的引擎)的真正继承者并不是什么值得惊奇的事。当Opera(今天也推出了一个小更新)追求一个更轻、更好管理的一套功能时,已经剔除了它很多“高手级用户”功能。 +把Vivaldi当作Opera post-Presto(Opera拥有版权的旧引擎)的真正继承者并不是什么值得惊奇的事。当Opera(今天也推出了一个小更新)追求一个更轻、更好管理的一套功能时,已经剔除了它很多“高手级用户”功能。 -Vivaldi想要捡起Opera曾急于脱手的负担。虽然这么做没有帮他抓到什么预期的市场份额,但是它抓住了高手级用户的眼球。他们大多数无疑已经在使用Linux了。 +Vivaldi想要捡起Opera曾急于脱手的负担。虽然这么做没有帮它抓住什么预期的市场份额,但是它吸引了高手级用户的眼球。他们大多数无疑已经在使用Linux了。 ### 下载 ### @@ -52,7 +52,7 @@ via: http://www.omgubuntu.co.uk/2015/01/vivaldi-web-browser-linux-download-power 作者:[Joey-Elijah Sneddon][a] 译者:[H-mudcup](https://github.com/H-mudcup) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 10abec198e23c141fc51b1c79457f0293a72f155 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Sun, 15 Feb 2015 11:31:07 +0800 Subject: [PATCH 314/725] translated --- ...Scripting interview Questions & Answers.md | 238 +++++++++--------- 1 file changed, 124 insertions(+), 114 deletions(-) diff --git a/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md b/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md index 11d5e6645a..9a131bee9d 100644 --- a/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md +++ b/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md @@ -1,68 +1,68 @@ - Vic -25 Linux Shell Scripting interview Questions & Answers +Linux Shell脚本 入门25问 ================================================================================ -### Q:1 What is Shell Script and why it is required ? ### +### Q:1 Shell脚本是什么、为什么它是必需的吗? ### -Ans: A Shell Script is a text file that contains one or more commands. As a system administrator we often need to issue number of commands to accomplish the task, we can add these all commands together in a text file (Shell Script) to complete daily routine task. +答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要发出多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成日常工作任务。 -### Q:2 What is the default login shell and how to change default login shell for a specific user ? ### +### Q:2 什么是默认登录shell,如何改变指定用户的登录shell ### -Ans: In Linux like Operating system “/bin/bash” is the default login shell which is assigned while user creation. We can change default shell using the “chsh” command . Example is shown below : +答:在Linux操作系统,“/ bin / bash”是默认登录shell,在用户创建时被分配的。使用chsh命令可以改变默认的shell。示例如下所示: # chsh -s # chsh linuxtechi -s /bin/sh -### Q:3 What are the different type of variables used in a shell Script ? ### +### Q:3 有什么不同的类型在shell脚本中使用? ### -Ans: In a shell script we can use two types of variables : +答:在shell脚本,我们可以使用两个类型变量: -- System defined variables -- User defined variables +- 系统定义变量 +- 用户定义变量 -System defined variables are defined or created by Operating System(Linux) itself. These variables are generally defined in Capital Letters and can be viewed by “**set**” command. -User defined variables are created or defined by system users and the values of variables can be viewed by using the command “`echo $`” +系统变量是由系统系统自己创建的。这些变量由大写字母组成,可以通过“**set**”命令查看。 -### Q:4 How to redirect both standard output and standard error to the same location ? ### +用户变量由系统用户来生成,变量的值可以通过命令“`echo $<变量名>`”查看 -Ans: There two method to redirect std output and std error to the same location: +### Q:4 如何同时重定向标准输出和错误输出到同一位置? ### -Method:1 2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) +答:这里有两个方法来实现: -Method:2 &> (# ls /usr/share/doc &> out.txt ) +方法1:2>&1 (# ls /usr/share/doc > out.txt 2>&1 ) -### Q:5 What is the Syntax of “nested if statement” in shell scripting ? ### +方法二:&> (# ls /usr/share/doc &> out.txt ) -Ans : Basic Syntax is shown below : +### Q:5 shell脚本中“if”的语法 ? ### - if [ Condition ] +答:基础语法: + + if [ 条件 ] then - command1 - command2 + 命令1 + 命令2 ….. else - if [ condition ] + if [ 条件 ] then - command1 - command2 + 命令1 + 命令2 …. else - command1 - command2 + 命令1 + 命令2 ….. fi fi -### Q:6 What is the use of “$?” sign in shell script ? ### +### Q:6 shell脚本中“$?”标记的用途是什么? ? ### -Ans:While writing a shell script , if you want to check whether previous command is executed successfully or not , then we can use “$?” with if statement to check the exit status of previous command. Basic example is shown below : +答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。简单的例子如下: root@localhost:~# ls /usr/bin/shar /usr/bin/shar root@localhost:~# echo $? 0 -If exit status is 0 , then command is executed successfully +如果结束状态是0,说明前一个命令执行成功。 root@localhost:~# ls /usr/bin/share @@ -70,11 +70,11 @@ If exit status is 0 , then command is executed successfully root@localhost:~# echo $? 2 -If the exit status is other than 0, then we can say command is not executed successfully. +如果结束状态不是0,说明命令执行失败。 -### Q:7 How to compare numbers in Linux shell Scripting ? ### +### Q:7 在shell脚本中如何比较两个数 ? ### -Ans: test command is used to compare numbers in if-then statement. Example is shown below : +答:测试用例使用if-then来比较两个数,例子如下: #!/bin/bash x=10 @@ -87,77 +87,76 @@ Ans: test command is used to compare numbers in if-then statement. Example is sh echo “y is greater than x” fi -### Q:8 What is the use of break command ? ### +### Q:8 shell脚本中break命令的作用 ? ### -Ans: The break command is a simple way to escape out of a loop in progress. We can use the break command to exit out from any loop, including while and until loops. +答:break命令一个简单的用途是退出执行中的循环。我们可以在while 和until循环中使用break命令跳出循环。 -### Q:9 What is the use of continue command in shell scripting ? ### +### Q:9 shell脚本中continue命令的作用 ? ### -Ans The continue command is identical to break command except it causes the present iteration of the loop to exit, instead of the entire loop. Continue command is useful in some scenarios where error has occurred but we still want to execute the next commands of the loop. +答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令很多时候是很有用的,例如错误发生,但我们依然希望循环继续的时候。 -### Q:10 Tell me the Syntax of “Case statement” in Linux shell scripting ? ### +### Q:10 告诉我shell脚本中Case语句的语法 ? ### -Ans: The basic syntax is shown below : +答:基础语法如下: - case word in - value1) - command1 - command2 + case 变量 in + 值1) + 命令1 + 命令2 ….. - last_command - !! - value2) - command1 - command2 + 最后命令 + !! + 值2) + 命令1 + 命令2 …… - last_command + 最后命令 ;; esac -### Q:11 What is the basic syntax of while loop in shell scripting ? ### +### Q:11 shell脚本中while循环语法 ? ### -Ans: Like the for loop, the while loop repeats its block of commands a number of times. Unlike the for loop, however, the while loop iterates until its while condition is no longer true. The basic syntax is : +答:如同for循环,while循环重复自己所有命令只要条件成立,不同于for循环。基础语法: - while [ test_condition ] + while [ 条件 ] do - commands… + 命令… done -### Q:12 How to make a shell script executable ? ### +### Q:12 如何使脚本成为可执行状态 ? ### -Ans: Using the chmod command we can make a shell script executable. Example is shown below : +答:使用chmod命令来使脚本可执行。例子如下: # chmod a+x myscript.sh -### Q:13 What is the use of “#!/bin/bash” ? ### +### Q:13 “#!/bin/bash”的作用 ? ### -Ans: #!/bin/bash is the first of a shell script , known as shebang , where # symbol is called hash and ‘!’ is called as bang. It shows that command to be executed via /bin/bash. +答:#!/bin/bash是shell脚本的第一行,总所周知,#符号调用hash而!调用bang。它的意思是命令使用 /bin/bash来执行命令 -### Q:14 What is the syntax of for loop in shell script ? ### +### Q:14 shell脚本中for循环语法 ? ### -Ans: Basic Syntax of for loop is given below : +答:for循环基础语法: - for variables in list_of_items + for 变量 in 循环列表 do - command1 - command2 + 命令1 + 命令2 …. - last_command + 最后命令 done -### Q:15 How to debug a shell script ? ### +### Q:15 如何调试shell脚本 ? ### -Ans: A shell script can be debug if we execute the script with ‘-x’ option ( sh -x myscript.sh). Another way to debug a shell script is by using ‘-nv’ option ( sh -nv myscript.sh). +答:使用'-x'参数(sh -x myscript.sh)可以调试shell脚本。另一个种方法是使用‘-nv’参数( sh -nv myscript.sh) -### Q:16 How compare the strings in shell script ? ### +### Q:16 shell脚本如何比较字符串? ### -Ans: test command is used to compare the text strings. The test command compares text strings by comparing each character in each string. +答:test命令可以用来比较字符串。Test命令比较字符串通过比较每一个字符来比较。 -### Q:17 What are the Special Variables set by Bourne shell for command line arguments ? ### +### Q:17 Bourne shell(bash) 中有哪些特别变量 ? ### -Ans: The following table lists the special variables set by the Bourne shell for command line arguments . +答:下面的表列出了Bourne shell为命令行设置的特殊变量。 -注:表格部分 @@ -165,10 +164,10 @@ Ans: The following table lists the special variables set by the Bourne shell for @@ -176,7 +175,7 @@ Ans: The following table lists the special variables set by the Bourne shell for

$0

@@ -184,7 +183,7 @@ Ans: The following table lists the special variables set by the Bourne shell for

$1

@@ -192,7 +191,7 @@ Ans: The following table lists the special variables set by the Bourne shell for

$2

@@ -208,7 +207,7 @@ Ans: The following table lists the special variables set by the Bourne shell for

$9

@@ -216,7 +215,7 @@ Ans: The following table lists the special variables set by the Bourne shell for

$#

@@ -224,17 +223,17 @@ Ans: The following table lists the special variables set by the Bourne shell for

$*

-

Special Variables

+

内建变量

-

Holds

+

解释

-

Name of the Script from the command line

+

来自命令行脚本的名字

-

First Command-line argument

+

第一个命令行参数

-

Second Command-line argument

+

第二个命令行参数

-

Ninth Command line argument

+

第九个命令行参数

-

Number of Command line arguments

+

命令行参数的数量

-

All Command-line arguments, separated with spaces

+

所有命令行参数,以空格隔开

### Q:18 How to test files in a shell script ? ### +### Q:18 在shell脚本中,如何测试文件 ? ### -Ans: test command is used to perform different test on the files. Basic test are listed below : +答:test命令可以用来测试文件。基础用法如下表格: -注:表格部分 @@ -245,79 +244,79 @@ Ans: test command is used to perform different test on the files. Basic test are

Test

-

Usage

+

用法

-

-d file_name

+

-d 文件名

-

Returns true if the file exists and is a directory

+

返回true,如果文件存在并且是一个目录

-

-e file_name

+

-e 文件名

-

Returns true if the file exists

+

返回true,如果文件存在

-

-f file_name

+

-f 文件名

-

Returns true if the file exists and is a regular file

+

返回true,如果文件存在并且是普通文件

-

-r file_name

+

-r 文件名

-

Returns true if the file exists and have read permissions

+

返回true,如果文件存在并拥有读权限

-

-s file_name

+

-s 文件名

-

Returns true if the file exists and is not empty

+

返回true,如果文件存在并且不为空

-

-w file_name

+

-w 文件名

-

Returns true if the file exists and have write permissions

+

返回true,如果文件存在并拥有写权限

-

-x file_name

+

-x 文件名

-

Returns true if the file exists and have execute permissions

+

返回true,如果文件存在并拥有执行权限

-### Q:19 How to put comments in your shell script ? ### +### Q:19 在shell脚本中,如何写入注释 ? ### -Ans: Comments are the messages to yourself and for other users that describe what a script is supposed to do and how its works.To put comments in your script, start each comment line with a hash sign (#) . Example is shown below : +答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一个注释以#开头。例子如下: #!/bin/bash # This is a command echo “I am logged in as $USER” -### Q:20 How to get input from the terminal for shell script ? ### +### Q:20 如何得到来自终端的命令输入到shell脚本? ### -Ans: ‘read’ command reads in data from the terminal (using keyboard). The read command takes in whatever the user types and places the text into the variable you name. Example is shown below : +答:read命令可以读取来自终端(使用键盘)的数据。read命令接入用户的输入并置于变量中。例子如下: # vi /tmp/test.sh @@ -331,37 +330,48 @@ Ans: ‘read’ command reads in data from the terminal (using keyboard). The re LinuxTechi My Name is LinuxTechi -### Q:21 How to unset or de-assign variables ? ### +### Q:21 如何取消设置或取消变量 ? ### -Ans: ‘unset’ command is used to de-assign or unset a variable. Syntax is shown below : +答:“unset”命令用于去取消或取消设置一个变量。语法如下所示: - # unset + # unset <变量名> -### Q:22 How to perform arithmetic operation ? ### +### Q:22 如何执行算术运算 ? ### -Ans: There are two ways to perform arithmetic operations : +答:有两种方法来执行算术运算: -1. Using `expr` command (# expr 5 + 2 ) -2. using a dollar sign and square brackets ( `$[ operation ]` ) Example : test=$[16 + 4] ; test=$[16 + 4] +1.使用`expr`命令(# expr 5 + 2) +2.用一个美元符号和方括号(`$[ 表达式 ]`)例如:test=$[16 + 4] ; test=$[16 + 4] -### Q:23 Basic Syntax of do-while statement ? ### +### Q:23 do-while语句的基本格式 ? ### -Ans: The do-while statement is similar to the while statement but performs the statements before checking the condition statement. The following is the format for the do-while statement: +答:do-while语句类似于while语句,但检查条件语句之前先执行命令。下面是用do-while语句的语法 do { - statements - } while (condition) + 命令 + } while (条件) -### Q:24 How to define functions in shell scripting ? ### +### Q:24 在shell脚本如何定义函数呢 ? ### -Ans: A function is simply a block of of code with a name. When we give a name to a block of code, we can then call that name in our script, and that block will be executed. Example is shown below : +答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用名字,该块就会被执行。示例如下所示: $ diskusage () { df -h ; } -### Q:25 How to use bc (bash calculator) in a shell script ? ### + 译注:下面是我给的shell函数语法,原文没有 -Ans: Use the below Syntax to use bc in shell script. + [ function ] 函数名 [()] + { + + 命令; + [return int;] + + } + + +### Q:25 如何在shell脚本中使用BC(bash计算器) ? ### + +答:使用下列格式,在shell脚本中使用bc variable=`echo “options; expression” | bc` @@ -370,7 +380,7 @@ Ans: Use the below Syntax to use bc in shell script. via: http://www.linuxtechi.com/linux-shell-scripting-interview-questions-answers/ 作者:[Pradeep Kumar][a] -译者:[译者ID](https://github.com/译者ID) +译者:[VicYu/Vic020](http://vicyu.net) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2b1d2d58ba17a13dc4d2e05ebd25262824fbd953 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Sun, 15 Feb 2015 11:31:42 +0800 Subject: [PATCH 315/725] moved --- ...0205 25 Linux Shell Scripting interview Questions & Answers.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md (100%) diff --git a/sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md b/translated/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md similarity index 100% rename from sources/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md rename to translated/tech/20150205 25 Linux Shell Scripting interview Questions & Answers.md From 2eadea9fd92d8706c1a3f3621b9a70f8773426cb Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Sun, 15 Feb 2015 12:09:08 +0800 Subject: [PATCH 316/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...est GNOME Shell Themes For Ubuntu 14.04.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md b/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md index 339ef5f836..1b414e71c0 100644 --- a/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md +++ b/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md @@ -2,7 +2,7 @@ Ubuntu 14.04 上 最好的 GNOME Shell 主题 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Best_Gnome_Shell_Themes.jpeg) -自定义主题是自定义你的 Linux 桌面的最好方式。假如你在 [Ubuntu 14.04 中安装 GNOME][1] 或 在 Ubuntu 14.10 中安装了 GNOME,你或许想改变默认的主题以呈现出不同的外观。在这里,为帮助你完成该任务,我已经编制好了一个 **Ubuntu 或其他已经安装了 GNOME shell 的 Linux 操作系统中,最好的 GNOME Shell 主题** 的清单 。但在我们揭晓这份清单之前, 让我们先了解如何在 GNOME shell 中安装和应用新的主题。 +最好的方式来自定义你的 Linux 桌面就是使用自定义主题。假如你在 [Ubuntu 14.04 中安装 GNOME][1] 或 在 Ubuntu 14.10 中安装了 GNOME,你或许想改变默认的主题以呈现出不同的外观。在这里,为了帮助你完成该任务,我已经编制好了一个列表—— **Ubuntu 或其他已经安装了 GNOME shell 的 Linux 操作系统中,最好的 GNOME Shell 主题** 。但在我们揭晓这份列表之前, 让我们先了解如何在 GNOME shell 中安装和应用新的主题。 ### 在 GNOME Shell 中安装主题 ### @@ -12,7 +12,7 @@ Ubuntu 14.04 上 最好的 GNOME Shell 主题 sudo apt-get install gnome-tweak-tool ``` -或者,你可以使用新主题通过把它们放置到 `~/.themes` 目录中。如果你需要,我已经写了一个关于 [如何安装和使用 GNOME shell][2]的具体教程。 +或者,你可以通过把主题放置到 `~/.themes` 目录中来使用。如果你需要,我已经写了一个关于 [如何安装和使用 GNOME shell][2]的具体教程。 ### 最好的 GNOME Shell 主题 ### @@ -22,7 +22,7 @@ sudo apt-get install gnome-tweak-tool ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/02/mockups_numix_5.jpeg) -任何没有提到 [Numix 主题][3] 的清单都是不完整的。这个主题是如此地受欢迎以至于 [Numix 团队开发出一个新的 Linux 操作系统, Ozon][4]。考虑到他们的设计作品 Numix 主题,称在不久的将来发行的 `Ozon` 为 [最美丽的 Linux 操作系统][5] 也不为过。 +任何没有提到 [Numix 主题][3] 的列表都是不完整的。这个主题是如此地受欢迎以至于 [Numix 团队开发出一个新的 Linux 操作系统, Ozon][4]。考虑到他们的设计作品 Numix 主题,把不久将发行的 `Ozon` 称为 [最美丽的 Linux 操作系统][5] 也不为过。 使用下面的命令,在基于 Ubuntu 的发行版本中安装 Numix 主题: @@ -36,7 +36,7 @@ sudo apt-get install numix-icon-theme-circle ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Elegance_Colors_Theme_GNOME_Shell.jpeg) -另一个来自 Numix 团队的成员之一的 Satyajit Sahoo 的美丽主题 。[Elegance Colors][6] 拥有自己的 PPA (译者注: 即 Personal Package Archive 的缩写) 使得你可以轻易地安装它: +另一个美丽主题来自 Numix 团队成员之一 Satyajit Sahoo。[Elegance Colors][6] 拥有自己的 PPA (译者注: 即 Personal Package Archive 的缩写) 使得你可以轻松安装它: ``` sudo add-apt-repository ppa:satyajit-happy/themes @@ -48,7 +48,7 @@ sudo apt-get install gnome-shell-theme-elegance-colors ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Moka_GNOME_Shell.jpeg) -[Moka][7] 是另一个迷人的主题,它总是位于美丽的主题的清单之中。它是由给我们带来 Unity Tweak Tool 的开发者所设计。 Moka 是你绝对要尝试的主题之一: +[Moka][7] 是另一个迷人的主题,它总是位于美丽的主题列表之中。它是由 Unity Tweak Tool 的开发者所设计。 Moka 是你一定要尝试的主题: ``` sudo add-apt-repository ppa:moka/stable @@ -68,7 +68,7 @@ sudo apt-get install moka-gnome-shell-theme ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Ciliora_Prima_Gnome_Shell.jpeg) -以前它以 Zukitwo Dark 的名字为人们熟知, Ciliora-Prima 是一个拥有方块图标的主题,可得到的三种版本之间相互略有不同。你可以从下面的链接中下载它们: +以前它以 Zukitwo Dark 的名字为人们熟知, Ciliora-Prima 是一个拥有方块图标的主题,可使用的三种版本之间彼此略有不同。你可以从下面的链接中下载它们: - [Download Ciliora-Prima GNOME Shell Theme][9] @@ -76,7 +76,7 @@ sudo apt-get install moka-gnome-shell-theme ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Faience_GNOME_Shell_Theme.jpeg) -Faience 作为一个受欢迎的主题已经有一段时间了。你可以通过下面的 PPA 为 GNOME 3.10 及更高版本 安装 Faience: +Faience 作为一个受欢迎的主题已经有一段时间了。你可以通过下面的 PPA 为 GNOME 3.10 及更高版本安装 Faience: ``` sudo add-apt-repository ppa:tiheum/equinox @@ -88,7 +88,7 @@ sudo apt-get install faience-theme ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Paper_GTK_Theme.jpeg) -自从 Google 提出 `Material Design`,人们一直为之疯狂。Paper GTK 主题受 Google Material design 启发, 作者为 Sam Hewitt( Moka 项目开发者之一); 它正处于开发中,这意味着当前你将不能对 Paper 拥有最好的体验。假如你和我一样,具有一点实验精神,你绝对可以试一试。 +自从 Google 提出 `Material Design`,人们一直为之疯狂。Paper GTK 主题受 Google Material design 启发,作者为 Sam Hewitt( Moka 项目开发者之一);它正处于开发中,这意味着当前你还不能拥有 Paper 的最好体验。假如你和我一样,具有一点实验精神,你绝对可以试一试。 ``` sudo add-apt-repository ppa:snwh/pulp @@ -96,9 +96,9 @@ sudo apt-get update sudo apt-get install paper-gtk-theme ``` -以上就是我的清单。假如你正试着给你的 Ubuntu 换一个不同的模样,你也应该试试这个清单: [Ubuntu 14.04 中最好的图标主题][10]。 +以上就是我的列表。如果你正试着给你的 Ubuntu 换一个不同的模样,你也应该试试这个列表: [Ubuntu 14.04 中最好的图标主题][10]。 -你是怎样找到这份 **最好的 GNOME shell 主题** 清单的呢?在上面列举的主题中,哪个是你最中意的呢? 如果它没有在这里列出,请一定让我们知道那个你心目中最好的 GNOME shell 主题 。 +你是怎样找到这份 **最好的 GNOME shell 主题** 列表的呢?在上面列举的主题中,哪个是你最中意的? 如果它没有在这里列出,请一定在评论中告诉我们哪个是你心目中最好的 GNOME shell 主题 。 -------------------------------------------------------------------------------- @@ -106,7 +106,7 @@ via: http://itsfoss.com/gnome-shell-themes-ubuntu-1404/ 作者:[Abhishek][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 76559ab6dc49ac982b1c0ff4a7aac642723ffd22 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Sun, 15 Feb 2015 12:51:15 +0800 Subject: [PATCH 317/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150112 Best GNOME Shell Themes For Ubuntu 14.04.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md (100%) diff --git a/translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md b/published/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md similarity index 100% rename from translated/share/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md rename to published/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md From e06edfcc7de09e187b913c600ee9df79105a104a Mon Sep 17 00:00:00 2001 From: DeadFire Date: Sun, 15 Feb 2015 14:41:18 +0800 Subject: [PATCH 318/725] =?UTF-8?q?20150215-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... web server logs interactively on Linux.md | 143 ++++++++++++++++++ ...ween computers over network with btsync.md | 136 +++++++++++++++++ ...150225 How to Hide PHP Version in Linux.md | 56 +++++++ 3 files changed, 335 insertions(+) create mode 100644 sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md create mode 100644 sources/tech/20150215 How to share files between computers over network with btsync.md create mode 100644 sources/tech/20150225 How to Hide PHP Version in Linux.md diff --git a/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md b/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md new file mode 100644 index 0000000000..f2f7a9a270 --- /dev/null +++ b/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md @@ -0,0 +1,143 @@ +How to analyze and view Apache web server logs interactively on Linux +================================================================================ +Whether you are in the web hosting business, or run a few web sites on a VPS yourself, chances are you want to display visitor statistics such as top visitors, requested files (dynamic or static), used bandwidth, client browsers, and referring sites, and so forth. + +[GoAccess][1] is a command-line log analyzer and interactive viewer for Apache or Nginx web server. With this tool, you will not only be able to browse the data mentioned earlier, but also parse the web server logs to dig for further data as well - and **all of this within a terminal window in real time**. Since as of today [most web servers][2] use either a Debian derivative or a Red Hat based distribution as the underlying operating system, I will show you how to install and use GoAccess in Debian and CentOS. + +### Installing GoAccess on Linux ### + +In Debian, Ubuntu and derivatives, run the following command to install GoAccess: + + # aptitude install goaccess + +In CentOS, you'll need to enable the [EPEL repository][3] and then: + + # yum install goaccess + +In Fedora, simply use yum command: + + # yum install goaccess + +If you want to install GoAccess from the source to enable further options (such as GeoIP location), install [required dependencies][4] for your operating system, and then follow these steps: + + # wget http://tar.goaccess.io/goaccess-0.8.5.tar.gz + # tar -xzvf goaccess-0.8.5.tar.gz + # cd goaccess-0.8.5/ + # ./configure --enable-geoip + # make + # make install + +That will install version 0.8.5, but you can always verify what is the latest version in the [Downloads page][5] of the project's web site. + +Since GoAccess does not require any further configurations, once it's installed you are ready to go. + +### Running GoAccess ### + +To start using GoAccess, just run it against your Apache access log. + +For Debian and derivatives: + + # goaccess -f /var/log/apache2/access.log + +For Red Hat based distros: + + # goaccess -f /var/log/httpd/access_log + +When you first launch GoAccess, you will be presented with the following screen to choose the date and log format. As explained, you can toggle between options using the spacebar and proceed with F10. As for the date and log formats, you may want to refer to the [Apache documentation][6] if you need to refresh your memory. + +In this case, Choose Common Log Format (CLF): + +![](https://farm8.staticflickr.com/7422/15868350373_30c16d7c30.jpg) + +and then press F10. You will be presented with the statistics screen. For the sake of brevity, only the header, which shows the summary of the log file, is shown in the next image: + +![](https://farm9.staticflickr.com/8683/16486742901_7a35b5df69_b.jpg) + +### Browsing Web Server Statistics with GoAccess ### + +As you scroll down the page with the down arrow, you will find the following sections, sorted by requests. The order of the categories presented here may vary depending on your distribution or your preferred installation method (from repositories or from source): + +1. Unique visitors per day (HTTP requests having the same IP, same date and same agent are considered an unique visit) + +![](https://farm8.staticflickr.com/7308/16488483965_a439dbc5e2_b.jpg) + +2. Requested files (Pages-URL) + +![](https://farm9.staticflickr.com/8651/16488483975_66d05dce51_b.jpg) + +3. Requested static files (e.g., .png, .js, etc) + +4. Referrers URLs (the URLs where each request came from) + +5. HTTP 404 Not Found response code + +![](https://farm9.staticflickr.com/8669/16486742951_436539b0da_b.jpg) + +6. Operating Systems + +7. Browsers + +8. Hosts (client IPs) + +![](https://farm8.staticflickr.com/7392/16488483995_56e706d77c_z.jpg) + +9. HTTP status codes + +![](https://farm8.staticflickr.com/7282/16462493896_77b856f670_b.jpg) + +10. Top referring sites + +11. Top keyphrases used on Google's search engine + +If you also want to inspect the archived logs, you can pipe them to GoAccess as follows. + +For Debian and derivatives: + + # zcat -f /var/log/apache2/access.log* | goaccess + +For Red Hat based distributions: + + # cat /var/log/httpd/access* | goaccess + +Should you need a more detailed report of any of the above (1 through 11), press the desired section number and then O (uppercase o) to bring up what is called the Detailed View. The following image shows the output of 5-O (press 5, then press O): + +![](https://farm8.staticflickr.com/7382/16302213429_48d9233f40_b.jpg) + +To display GeoIP location information, open the Detail View in the Hosts section, as explained earlier, and you will see the location of the client IPs that performed requests to your web server: + +![](https://farm8.staticflickr.com/7393/16488484075_d778aa91a2_z.jpg) + +If your system has not been very busy lately, some of the above sections will not show a great deal of information, but that situation can change as more and more requests are made to your web server. + +### Saving Reports for Offline Analysis ### + +There will be times when you don't want to inspect your system's stats in real time, but save it to a file for offline analysis or printing. To generate an HTML report, simply redirect the output of the GoAccess commands mentioned earlier to an HTML file. Then just point your web browser to the file to open it. + + # zcat -f /var/log/apache2/access.log* | goaccess > /var/www/webserverstats.html + +Once the report is displayed, you will need to click on the Expand link to show the detail view on each category: + +![](https://farm9.staticflickr.com/8658/16486743041_bd8a80794d_o.png) + +注释:youtube视频 + + +As we have discussed throughout this article, GoAccess is an invaluable tool that will provide you, as a system administrator, with HTTP statistics in a visual report on the fly. Although GoAccess by default presents its results to the standard output, you can also save them to JSON, HTML, or CSV files. This converts GoAccess in an incredibly useful tool to monitor and display statistics of a web server. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/interactive-apache-web-server-log-analyzer-linux.html + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:http://goaccess.io/ +[2]:http://w3techs.com/technologies/details/os-linux/all/all +[3]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[4]:http://goaccess.io/download#dependencies +[5]:http://goaccess.io/download +[6]:http://httpd.apache.org/docs/2.4/logs.html \ No newline at end of file diff --git a/sources/tech/20150215 How to share files between computers over network with btsync.md b/sources/tech/20150215 How to share files between computers over network with btsync.md new file mode 100644 index 0000000000..3af649b886 --- /dev/null +++ b/sources/tech/20150215 How to share files between computers over network with btsync.md @@ -0,0 +1,136 @@ +How to share files between computers over network with btsync +================================================================================ +If you are the type of person who uses several devices to work online, I'm sure you must be using, or at least wishing to use, a method for syncing files and directories among those devices. + +BitTorrent Sync, also known as btsync for short, is a cross-platform sync tool (freeware) which is powered by BitTorrent, the famous protocol for peer-to-peer (P2P) file sharing. Unlike classic BitTorrent clients, however, btsync encrypts traffic and grants access to shared files based on auto-generated keys across different operating system and device types. + +More specifically, when you add files or folder to btsync as shareable, corresponding read/write keys (so-called secret codes) are created. These keys are then shared among different devices via HTTPS links, emails, QR codes, etc. Once two devices are paired via a key, the linked content can be synced directly between them. There is no file size limit, and transfer speeds are never throttled unless you explicitly say so. You will be able to create accounts inside btsync, under which you can create and manage keys and files to share via web interface. + +BitTorrent Sync is available on multiple operating systems including Linux, MacOS X, Windows, as well as [Android][1] and [iOS][2]. In this tutorial, I will show you how to use BitTorrent Sync to sync files between a Linux box (a home server), and a Windows machine (a work laptop). + +### Installing Btsync on Linux ### + +BitTorrent Sync is available for download from the [project's website][3]. I assume that the Windows version of BiTorrent Sync is installed on a Windows laptop, which can be done very easily. I will focus on installing and configuring it on the Linux server. + +In the download page, choose your architecture, right click on the corresponding link, choose Copy link location (or similar, depending on your browser), and paste the link to wget in your terminal, as follows: + +**For 64-bit Linux:** + + # wget http://download.getsyncapp.com/endpoint/btsync/os/linux-x64/track/stable + +**For 32-bit Linux:** + + # wget http://download.getsyncapp.com/endpoint/btsync/os/linux-i386/track/stable + +![](https://farm9.staticflickr.com/8635/15895277773_8acf317e3c_c.jpg) + +Once the download has completed, extract the contents of the tarball into a directory specially created for that purpose: + + # cd /usr/local/bin + # mkdir btsync + # tar xzf stable -C btsync + +![](https://farm8.staticflickr.com/7306/16329173869_7dc8b64a39_b.jpg) + +You can now either add /usr/local/bin/btsync to your PATH environment variable. + + export PATH=$PATH:/usr/local/bin/btsync + +or run the btsync binary right from that folder. We'll go with the first option as it requires less typing and is easier to remember. + +### Configuring Btsync ### + +Btsync comes with a built-in web server which is used as the management interface for BitTorrent Sync. To be able to access the web interface, you need to create a configuration file. You can do that with the following command: + + # btsync --dump-sample-config > btsync.config + +Then edit the btsync.config file (webui section) with your preferred text editor, as follows: + + "listen" : "0.0.0.0:8888", + "login" : "yourusername", + "password" : "yourpassword" + +You can choose any username and password. + +![](https://farm9.staticflickr.com/8599/15895277793_da63841433_b.jpg) + +![](Feel free to check the README file in /usr/local/bin/btsync directory if you want to tweak the configuration further, but this will do for now.) + +### Running Btsync for the First Time ### + +As system administrators we believe in logs! So before we launch btsync, we will create a log file for btsync. + + # touch /var/log/btsync.log + +Finally it's time to start btsync: + + # btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log + +![](https://farm8.staticflickr.com/7288/16327720298_ccf2cbedea_c.jpg) + +Now point your web browser to the IP address of the Linux server and the port where btsync is listening on (192.168.0.15:8888 in my case), and agree to the privacy policies, terms, and EULA: + +![](https://farm9.staticflickr.com/8597/16327720318_d52551fc44_b.jpg) + +and you will be taken to the home page of your btsync installation: + +![](https://farm8.staticflickr.com/7412/16329544687_9a174527d8_c.jpg) + +Click on Add a folder, and choose a directory in your file system that you want to share. In our example, we will use /btsync: + +![](https://farm8.staticflickr.com/7407/16515452485_e25ded559f_b.jpg) + +That's enough by now. Please install BitTorrent Sync on your Windows machine (or another Linux box, if you want) before proceeding. + +### Sharing Files with Btsync ### + +The following screencast shows how to sync an existing folder in a Windows 8 machine [192.168.0.106]. After adding the desired folder, get its key, and add it in your Linux installation via the "Enter a key or link" menu (as shown in the previous image), and the sync will start: + +注释:youtube视频 + + +Now repeat the process for other computers or devices; selecting a folder or files to share, and importing the corresponding key(s) in your "central" btsync installation via the web interface on your Linux server. + +### Auto-start Btsync as a Normal User ### + +You will notice that the synced files in the screencast were created in the /btsync directory belonging to user and group 'root'. That is because we launched BitTorrent Sync manually as the superuser. However, under normal circumstances, you will want to have BitTorrent Sync start on boot and running as a non-privileged user (www-data or other special account created for that purpose, btsync user for example). + +To do so, create a user called btsync, and add the following stanza to the /etc/rc.local file (before the exit 0 line): + + sudo -u btsync /usr/local/bin/btsync/btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log + +Finally, create the pid file: + + # touch /usr/local/bin/btsync/.sync//sync.pid + +and change the ownership of /usr/local/bin/btsync recursively: + + # chown -R btsync:root /usr/local/bin/btsync + +Now reboot and verify that btsync is running as the intended user: + +![](https://farm9.staticflickr.com/8647/16327988660_644f6d4505_c.jpg) + +Based on your chosen distribution, you may find other ways to enable btsync to start on boot. In this tutorial I chose the rc.local approach since it's distribution-agnostic. + +### Final Remarks ### + +As you can see, BitTorrent Sync is almost like server-less Dropbox for you. I said "almost" because of this: When you sync between devices on the same local network, sync happens directly between two devices. However, if you try to sync across different networks, and the devices to be paired are behind restrictive firewalls, there is a chance that the sync traffic goes through a third-party relay server operated by BitTorrent. While they claim that the traffic is [AES-encrypted][4], you may still not want this to happen. For your privacy, be sure to turn off relay/tracker server options in every folder that you are sharing. + +Hope it helps! Happy syncing! + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/share-files-between-computers-over-network.html + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:https://play.google.com/store/apps/details?id=com.bittorrent.sync +[2]:https://itunes.apple.com/us/app/bittorrent-sync/id665156116 +[3]:http://www.getsync.com/ +[4]:http://www.getsync.com/tech-specs \ No newline at end of file diff --git a/sources/tech/20150225 How to Hide PHP Version in Linux.md b/sources/tech/20150225 How to Hide PHP Version in Linux.md new file mode 100644 index 0000000000..ddc219bac1 --- /dev/null +++ b/sources/tech/20150225 How to Hide PHP Version in Linux.md @@ -0,0 +1,56 @@ +How to Hide PHP Version in Linux +================================================================================ +In general, most of the web server software has been installed with default settings that will lead to information leakage. One of them is a PHP software. PHP (Hypertest Preprocessor) is one of the most popular server-side HTML embedded scripting language for the websites today. In the current challenging times, there are lots of attacker will try to discover the weaknesses in your your server system. Hence, i will describe the simple way to hide the PHP information in Linux server. + +By default **expose_php** is set to On. Turning off the “expose_php” parameter causes that PHP will hide it version details. + + [root@centos66 ~]# vi /etc/php.ini + +In your php.ini, locate the line containing expose_php On and set it to Off: + + expose_php = Off + +Before the changes, web server header will look like below : + + [root@centos66 ~]# curl -I http://www.ehowstuff.com/ + +---------- + + HTTP/1.1 200 OK + Server: nginx + Content-Type: text/html; charset=UTF-8 + Vary: Accept-Encoding + X-Powered-By: PHP/5.3.3 + X-Pingback: http://www.ehowstuff.com/xmlrpc.php + Date: Wed, 11 Feb 2015 14:10:43 GMT + X-Page-Speed: 1.9.32.2-4321 + Cache-Control: max-age=0, no-cache + +After the changes, PHP will no longer show the version to the web server header : + +[root@centos66 ~]# curl -I http://www.ehowstuff.com/ + +HTTP/1.1 200 OK +Server: nginx +Date: Wed, 11 Feb 2015 15:38:14 GMT +Content-Type: text/html; charset=UTF-8 +Vary: Accept-Encoding +X-Pingback: http://www.ehowstuff.com/xmlrpc.php +Date: Wed, 11 Feb 2015 14:10:43 GMT +X-Page-Speed: 1.9.32.2-4321 +Cache-Control: max-age=0, no-cache + +As always if you need any help you can reach us on twitter @ehowstuff or drop us a comment below. [Jumping through archives page to read more articles..][1] + +-------------------------------------------------------------------------------- + +via: http://www.ehowstuff.com/how-to-hide-php-version-in-linux/ + +作者:[skytech][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ehowstuff.com/author/mhstar/ +[1]:http://www.ehowstuff.com/archives/ \ No newline at end of file From 7c73b8be9d11601e73bf7a8266fa712ab0dd79e1 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Sun, 15 Feb 2015 15:50:07 +0800 Subject: [PATCH 319/725] =?UTF-8?q?20150215-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Icons From Dock In Elementary OS Freya.md | 55 +++++++++++++++++++ ...fault Instead of Ubuntu Software Center.md | 46 ++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md create mode 100644 sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md diff --git a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md new file mode 100644 index 0000000000..cccee5971a --- /dev/null +++ b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md @@ -0,0 +1,55 @@ +Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya [Quick Tip] +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) + +This quick tip shows you **how to get rid of two Google Chrome icons from the dock in Elementary OS Freya**. + +I hardly use the default Midori browser in [Elementary OS][1] Freya as Google Chrome is my main browser across all OSes. While [Midori][2] is kept in the dock by default, you’ll have to search for Google Chrome in Slingshot (applications) every time you want to open Google Chrome. To save time, I presume you have selected the “keep in dock” option for a quick access to Chrome. + +The problem here is that when you click on the Chrome icon in the dock, it creates another instance of Google Chrome. This leaves you with two Chrome icons in the docks and this is something that might be ignored by many but definitely an annoyance and against the design. If you share the same feeling, let’s see how can we remove the second Google Chrome icon. + +### Remove two Google Chrome icons from dock in Elementary OS Freya ### + +#### Step 1: #### + +Remove Google Chrome from the dock. + +#### Step 2: #### + +Open the terminal and use the following command: + + cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications + +#### Step 3: #### + +Next we need to edit the google-chrome.desktop file. Use the following commands: + + scratch-text-editor ~/.local/share/applications/google-chrome.desktop + +It will open the google-chrome.desktop file in Scratch for editing. Under the [Desktop Entry] section, add the following line: + + StartupWMClass=Google-chrome-stable + +It will look a bit like this: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) + +#### Step 4: #### + +Go to Slingshot and open Google Chrome again. Do select “keep in dock” again. Close it and start it again to verify that it doesn’t open a new Chrome instance in the dock. No reboot of system is required here. + +I hope this quick tip helped you to remove multiple Google Chrome icons from dock in Elementary OS Freya. Feel free to ask your questions and drop your suggestions in the comment below. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://elementary.io/ +[2]:http://midori-browser.org/ \ No newline at end of file diff --git a/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md new file mode 100644 index 0000000000..9bcbbb967e --- /dev/null +++ b/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md @@ -0,0 +1,46 @@ +How To Make GDebi Default Instead of Ubuntu Software Center +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Make_GDebi_Default.jpeg) + +If you use Ubuntu or Ubuntu based Linux distribution such as Elementary OS Freya, you might be using Ubuntu Software Center to install .deb executable files. Ubuntu Software Center is a nice application for finding and installing apps but it is resource heavy and slow. This is why I prefer using [App Grid, a lighter alternative of Ubuntu Software Center][1]. + +Now, if you just trying to install a .deb file, I would not recommend either of Ubuntu Software Center or App Grid. I suggest GDebi, a dedicated program for installing Debian executable files. It is extremely lightweight and focused on installing .deb files. Best thing about GDebi is that it also shows the dependencies that will be installed along with the desired program. + +In this post we shall see **how to install GDebi and use it as the default installer instead of Ubuntu Software Center**. + +### Install GDebi in Ubuntu and other Linux distributions ### + +Open a terminal and use the following command: + + sudo apt-get install gdebi + +### Make GDebi default for .deb installation ### + +Once you have installed GDebi, it’s time to see how to make it the default application for installing .deb files. Please note that I am using Elementary OS Freya in this tutorial but the steps are applicable to all Ubuntu based distribution. Just the screenshots may look different. + +Download a .deb file first. Let’s say you have downloaded Google Chrome. Go to the download directory and right click on the .deb file. In here, go to **properties**. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default.jpeg) + +In the properties, you should see the option of **open with**. Click on it and change it to GDebi. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default_Ubuntu.jpeg) + +Next time you double click on a .deb file, it will automatically open GDebi to install the .deb file. Indeed using such light applications is a good way to [speed up Ubuntu][2] or other Linux systems. + +What do you say? You still prefer Ubuntu Software Center for application installation or GDebi? Or if you are old school, [Synaptic Package Manager][3] perhaps? Which one is your favorite? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/gdebi-default-ubuntu-software-center/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/app-grid-lighter-alternative-ubuntu-software-center/ +[2]:http://itsfoss.com/speed-up-ubuntu-1310/ +[3]:http://www.nongnu.org/synaptic/ \ No newline at end of file From b9644b6f35a125a793cfb5e412438b24301bc610 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Sun, 15 Feb 2015 16:23:09 +0800 Subject: [PATCH 320/725] =?UTF-8?q?20150215-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ux Games We Will See In 2015 And Beyond.md | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md diff --git a/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md new file mode 100644 index 0000000000..9f11f47573 --- /dev/null +++ b/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md @@ -0,0 +1,136 @@ +A Look At What Linux Games We Will See In 2015 And Beyond +================================================================================ +Linux Gaming is dead they said, Linux Gaming is pointless they said...ah whatever. Here’s a look at what’s to come for us in 2015 and beyond. + +It's pretty hard to keep up with everything that's going on for us, but here's a quick look at what we could see soon. + +### Confirmed Games ### + +#### Adventure Games #### + +- [Firewatch][1] +- [Paradise Lost: First Contact][2] +- [SteamWorld Heist][3] + +#### Action Games #### + +- [Darksiders][4] +- [Darksiders II][5] +- [Ray's The Dead][6] +- [Skullgirls][7] + +#### FPS Games #### + +- [Bioshock Infinite][8] +- Half Life 3 /troll +- [Homefront: The Revolution][9] +- [Killing Floor 2][10] +- Serious Sam 4 (No official site for it yet) +- [Storm United][11] +- [SUPERHOT][12] + +#### Platformers #### + +- [Broforce][13] +- [Chasm][14] +- [Giana Sisters][15] +- [Heart Forth, Alicia][16] +- [Hot Tin Roof][17] +- [Infinifactory][18] +- [Mighty No. 9][19] +- [Night in the Woods][20] +- [Noct][21] +- [Oddworld: New 'N' Tasty][22] +- [Red Goddess][23] + +#### RPG Games #### + +- [Divinity: Original Sin][24] +- [Pillars Of Eternity][25] +- [Shadowrun: Hong Kong][26] +- [The Banner Saga][27] + +#### Strategy Games #### + +- [Age of Wonders III][28] +- [Banished][29] +- [Cities: Skylines][30] +- [Clockwork Empires][31] +- [Parkitect][32] +- [Scrolls][33] +- [Space Pirates And Zombies 2][34] + +#### Sandbox Games #### + +- [Terraria][35] +- [X Rebirth][36] + +#### Unconfirmed, but highly likely #### + +- [Company of Heroes 2][37] +- [Outlast][38] +- [Shadow Warrior][39] +- [Torchlight II][40] + +Then there’s the [two ports teased from Feral Interactive][41], we can’t let them be left out just because we don’t know what they are. + +We imagine Aspyr Media are also working on new bigger ports, but they have only just released their latest game, so it may be a few months until we see anything. + +**This isn't a complete list** of course, as we can easily forget with the sheer amount of games heading our way, and wow what a list! + +We have GDC next month, and we are expecting a few announcements too. While we don't have anything solid, with Valve's big presence with Steam Machines we are expecting at least some more Linux games, otherwise it we fear it may be a little lacklustre for Valve to only show off older existing games for Linux. + +What did we miss that you’re excited about for Linux? + +-------------------------------------------------------------------------------- + +via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-see-in-2015-and-beyond.4963 + +作者:[liamdawe][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.gamingonlinux.com/profiles/1 +[1]:https://www.gamingonlinux.com/articles/category/17/articles/firewatch-a-first-person-mystery-game-finally-reveals-itself-in-a-trailer.4231 +[2]:http://www.asthreeworks.com/games/ +[3]:https://www.gamingonlinux.com/articles/category/17/articles/image-form-announces-steamworld-heist.4304 +[4]:https://www.gamingonlinux.com/articles/darksiders-linux-port-looks-like-it-is-still-happening.4893 +[5]:https://www.gamingonlinux.com/articles/darksiders-2-confirmed-for-linux.4154 +[6]:http://ragtagstudio.com/?page_id=457 +[7]:https://www.gamingonlinux.com/articles/editorial-skullgirls-on-linux-finally-shows-some-progress.4789 +[8]:https://www.gamingonlinux.com/articles/bioshock-infinite-looks-set-for-a-linux-release-confirmed.4668 +[9]:http://www.homefront-game.com/ +[10]:https://www.gamingonlinux.com/articles/category/17/articles/killing-floor-2-fps-has-a-new-trailer.4676 +[11]:https://www.gamingonlinux.com/articles/storm-united-online-fps-shows-first-real-gameplay-video-first-alpha-due-soon.4872 +[12]:http://superhotgame.com/ +[13]:http://steamcommunity.com/app/274190/discussions/0/540738051503306548/#c540738051518330743 +[14]:https://www.gamingonlinux.com/articles/category/17/articles/chasm-rpg-platformer-will-have-a-same-day-linux-release.4266 +[15]:https://www.gamingonlinux.com/articles/linux-port-of-platformer-giana-sisters-brought-inhouse-sequel-might-get-sameday-release.4913 +[16]:http://www.alonsomartin.mx/hfa/ +[17]:http://www.hottinroofgame.com/ +[18]:https://twitter.com/zachtronics/status/566016742825005057 +[19]:http://www.mightyno9.com/ +[20]:http://www.nightinthewoods.com/ +[21]:https://www.gamingonlinux.com/articles/category/17/articles/noct-a-fantastic-top-down-thermal-image-survival-horror-game.4783 +[22]:https://www.gamingonlinux.com/articles/puzzle-platformer-oddworld-new-n-tasty-will-release-for-linux-next-month.4836 +[23]:https://www.gamingonlinux.com/articles/new-trailer-for-platformer-red-goddesss-looks-really-good.4939 +[24]:https://www.gamingonlinux.com/articles/divinity-original-sin-is-pushing-ahead-for-the-linux-release.4938 +[25]:https://www.gamingonlinux.com/articles/pillars-of-eternity-the-rpg-aims-for-a-sameday-linux-release-on-march-26th.4834 +[26]:https://www.kickstarter.com/projects/webeharebrained/shadowrun-hong-kong +[27]:https://www.gamingonlinux.com/articles/the-banner-saga-rpg-looks-close-to-a-linux-version.4862 +[28]:https://www.gamingonlinux.com/articles/the-linux-port-of-age-of-wonders-iii-is-progressing-a-bit-too-explosive-right-now.4857 +[29]:https://www.gamingonlinux.com/articles/banished-survival-city-building-sim-is-being-ported-to-linux.4813 +[30]:https://www.gamingonlinux.com/articles/city-builder-game-cities-skylines-now-has-a-release-date.4954 +[31]:https://www.gamingonlinux.com/articles/clockwork-empires-still-pushing-towards-a-linux-version-suffering-delays.4734 +[32]:https://www.gamingonlinux.com/articles/category/17/articles/parkitect-what-roller-coaster-tycoon-should-have-grown-into.4528 +[33]:https://www.gamingonlinux.com/articles/mojangs-scrolls-now-has-an-experimental-linux-build.4450 +[34]:https://www.gamingonlinux.com/articles/space-pirates-and-zombies-2-reveals-the-zombies-in-a-brand-new-video.4759 +[35]:https://www.gamingonlinux.com/articles/terraria-officially-confirmed-to-be-in-development-for-linux-finally.4299 +[36]:https://www.gamingonlinux.com/articles/egosofts-x-rebirth-actively-being-ported-to-linux.4822 +[37]:https://www.gamingonlinux.com/articles/company-of-heroes-2-looks-like-it-is-heading-to-linux.4199 +[38]:https://www.gamingonlinux.com/articles/outlast-that-really-scary-game-looks-like-its-still-heading-to-linux.4896 +[39]:https://www.gamingonlinux.com/articles/shadow-warrior-looks-like-it-will-come-to-linux.4859 +[40]:https://www.gamingonlinux.com/articles/torchlight-ii-has-even-more-positive-signs-for-linux.4817 +[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ \ No newline at end of file From 2a9fe89b45481064a4915562ed2cab708f73413a Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 15 Feb 2015 16:31:31 +0800 Subject: [PATCH 321/725] PUB:20141226 How to Download Music from Grooveshark with a Linux OS @Stevearzh --- ...ow to Download Music from Grooveshark with a Linux OS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {translated/share => published}/20141226 How to Download Music from Grooveshark with a Linux OS.md (86%) diff --git a/translated/share/20141226 How to Download Music from Grooveshark with a Linux OS.md b/published/20141226 How to Download Music from Grooveshark with a Linux OS.md similarity index 86% rename from translated/share/20141226 How to Download Music from Grooveshark with a Linux OS.md rename to published/20141226 How to Download Music from Grooveshark with a Linux OS.md index 0af3e996d3..b6ecc8acbd 100644 --- a/translated/share/20141226 How to Download Music from Grooveshark with a Linux OS.md +++ b/published/20141226 How to Download Music from Grooveshark with a Linux OS.md @@ -6,7 +6,7 @@ **Grooveshark 对于喜欢音乐的人来说是一个不错的在线平台,同时有多种从上面下载音乐的方法。Groovesquid 是众多允许用户从 Grooveshark 上下载音乐的应用之一,并且是支持多平台的。** -只要有在线流媒体服务,就一定有方法从获取你之前看过或听过的视频及音乐。即使下载接口关闭了,也不是什么大不了的事,因为还有很多种解决方法,无论你用的什么操作系统。比如,网络上就有许多种 YouTube 下载器,同样的道理,从 Grooveshark 上下载音乐也并非难事。 +只要有在线流媒体服务,就一定有方法将你看过或听过的视频及音乐保存到本地。即使下载接口关闭了,也不是什么大不了的事,因为还有很多种解决方法,无论你用的什么操作系统。比如,网络上就有许多种 YouTube 下载器,同样的道理,从 Grooveshark 上下载音乐也并非难事。 现在,得考虑合法性的问题。与许多其他应用一样,Groovesquid 并非是完全不合法的。如果有用户使用应用去做一些非法的事情,那责任应归咎于用户。同样的道理也适用于 utorrent 或者 Bittorrent。只要你不触及版权问题,那你就可以无所顾忌的使用 Groovesquid 了。 @@ -14,7 +14,7 @@ 你能够找到的 Groovesquid 的唯一缺点是,它是基于 Java 而编写的,这从来都不是一个好的兆头。虽然为了确保应用的可移植性这样做确实是一个好方法,但这样做的结果导致了其糟糕的界面。确实是非常糟糕的的界面,不过这一点并不会影响到用户的使用体验,特别是这款应用所完成的工作时如此的有用。 -有一点需要注意的地方。Groovesquid 是一款免费的应用,但为了将免费保持下去,它会在菜单栏的右侧显示一则广告。这对大多数人来说都应该不是问题,不过最好在打开应用后注意下菜单栏右侧。 +有一点需要注意的地方。Groovesquid 是一款免费的应用,但为了将免费保持下去,它会在菜单栏的右侧显示一则广告。这对大多数人来说都应该不是问题,不过最好在打开应用后注意下菜单栏右侧(那不是应用的一部分)。 从易用性的角度来看,这款应用非常简洁。用户可以通过在顶部地址栏里输入链接直接下载单曲,地址栏的位置可以通过其左侧的下拉菜单进行修改。在下拉菜单中,也可以修改为歌曲名称、流行度、专辑名称、播放列表以及艺术家。有些选项向你提供了诸如查看 Grooveshark 上最流行的音乐,或者下载整个播放列表等。 @@ -38,7 +38,7 @@ via: http://news.softpedia.com/news/How-to-Download-Music-from-Grooveshark-with- 作者:[Silviu Stahie][a] 译者:[Stevearzh](https://github.com/Stevearzh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 120d5e349aa0c04f2650b1d34743acc55655699e Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 15 Feb 2015 17:02:04 +0800 Subject: [PATCH 322/725] PUB:20140917 How to create a software RAID-1 array with mdadm on Linux @shipsw --- ...ftware RAID-1 array with mdadm on Linux.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename {translated/tech => published}/20140917 How to create a software RAID-1 array with mdadm on Linux.md (83%) diff --git a/translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md b/published/20140917 How to create a software RAID-1 array with mdadm on Linux.md similarity index 83% rename from translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md rename to published/20140917 How to create a software RAID-1 array with mdadm on Linux.md index ddbdfc8689..4c183956d3 100644 --- a/translated/tech/20140917 How to create a software RAID-1 array with mdadm on Linux.md +++ b/published/20140917 How to create a software RAID-1 array with mdadm on Linux.md @@ -1,10 +1,10 @@ 如何使用linux程序mdadm创建软件RAID1软阵列 ================================================================================ -磁盘冗余阵列(RAID)是将多个物理磁盘结合成一个逻辑磁盘的技术,该技术可以提高磁盘容错性能,提高磁盘的读写速度。根据数据存储的排列(如 条带存储,镜像存储,奇偶或者他们的组合),定义了几个不同级别的RAID(RAID-0,RAID-1,RAID-5 等等)。磁盘阵列可以使用软件或者硬件方式实现。现代Linux操作系统中,基本的软件RAID功能是默认安装的。 +磁盘冗余阵列(RAID)是将多个物理磁盘结合成一个逻辑磁盘的技术,该技术可以提高磁盘容错性能,提高磁盘的读写速度。根据数据存储的排列(如:条带存储,镜像存储,奇偶或者他们的组合),定义了几个不同级别的RAID(RAID-0,RAID-1,RAID-5 等等)。磁盘阵列可以使用软件或者硬件方式实现。现代Linux操作系统中,基本的软件RAID功能是默认安装的。 本文中,我们将介绍软件方式构建RAID-1阵列(镜像阵列),RAID-1将相同的数据写到不同的设备中。虽然可以使用同一个磁盘的两个分区实现RAID-1,但是如果磁盘坏了的话数据就都丢了,所以没什么意义。实际上,这也是为什么大多数RAID级别都使用多个物理磁盘提供冗余。当单盘失效后不影响整个阵列的运行,并且可以在线更换磁盘,最重要的是数据不会丢失。尽管如此,阵列不能取代外部存储的定期备份。 -由于RAID-1阵列的大小是最小磁盘的大小,一般来说应该使用两个大小相同的磁盘来组建RAID-1。 +由于RAID-1阵列的大小是阵列中最小磁盘的大小,一般来说应该使用两个大小相同的磁盘来组建RAID-1。 ### 安装mdadm ### @@ -28,7 +28,7 @@ # aptitude install mdadm -Ubuntu系统中,会要求为电子邮件通知配置后缀MTA。你可以跳过去。 +Ubuntu系统中,会要求配置Postfix MTA 以发送电子邮件通知。你可以跳过去。 Debian系统中,安装程序会显示以下解释信息,用来帮助我们去判断是否将根目录安装到RAID阵列中。下面的所有操作都有赖于这一步,所以应该仔细阅读他。 @@ -38,13 +38,13 @@ Debian系统中,安装程序会显示以下解释信息,用来帮助我们 ![](https://farm6.staticflickr.com/5555/15198241896_29e08b977f.jpg) -提示是否开机启动阵列的时候,选择是。注意,这里需要往/etc/fstab 文件中添加一个条目使得系统启动的时候正确挂载阵列。 +提示是否开机启动阵列的时候,选择“是”。注意,这里需要往/etc/fstab 文件中添加一个条目使得系统启动的时候正确挂载阵列。 ![](https://farm4.staticflickr.com/3875/15220883342_2b1d689a0a_z.jpg) ### 硬盘分区 ### -现在开始准备建立阵列需要的硬盘。这里往插入两个8GB的usb磁盘,使用dmesg命令设备显示设备 /dev/sdb 和 /dev/sdc +现在开始准备建立阵列需要的硬盘。这里插入两个8GB的usb磁盘,使用dmesg命令设备显示设备 /dev/sdb 和 /dev/sdc # dmesg | less @@ -107,7 +107,7 @@ Debian系统中,安装程序会显示以下解释信息,用来帮助我们 ![](https://farm6.staticflickr.com/5583/15034683868_6c28564e5a_z.jpg) -'mdadm -D'命令提供的信息中,最重要就是阵列状态类。激活状态说明阵列正在进行读写操作。其他几个状态分别为 完成(读写完成)、降级(有一块磁盘失效或丢失)或者恢复中(一张新盘已插入,系统正在写入数据)。这几个状态涵盖类大多数情况。 +'mdadm -D'命令提供的信息中,最重要就是阵列状态类。激活状态说明阵列正在进行读写操作。其他几个状态分别为:完成(读写完成)、降级(有一块磁盘失效或丢失)或者恢复中(一张新盘已插入,系统正在写入数据)。这几个状态涵盖了大多数情况。 ### 格式化或加载磁盘阵列 ### @@ -128,7 +128,7 @@ Debian系统中,安装程序会显示以下解释信息,用来帮助我们 mdadm工具内置有磁盘阵列监控功能。当mdadm作为守护程序运行的时候(就像我们上文那样),会周期性的检测阵列运行状态,将检测到的信息通过电子邮件或者系统日志报告上来。当然,也可以配置其在发生致命性错误的时候调用紧急命令。 -mdadm默认会记录所有已知分区和阵列的事件,并将他们记录到 /var/log/syslog中。或者你可以在配置文件中(/etc/mdadm/mdadm.conf debian系统 /etc/mdadm.conf 红帽子系统)以以下格式指定监控设备或者阵列。如果mdadm.conf文件不存在,你可以创建一个。 +mdadm默认会记录所有已知分区和阵列的事件,并将他们记录到 /var/log/syslog中。或者你可以在配置文件中(debian系统:/etc/mdadm/mdadm.conf ,红帽子系统:/etc/mdadm.conf )用以下格式指定监控设备或者阵列。如果mdadm.conf文件不存在,你可以创建一个。 DEVICE /dev/sd[bcde]1 /dev/sd[ab]1 @@ -169,7 +169,7 @@ CentOS或者RHEL 6: ![](https://farm6.staticflickr.com/5563/15218183681_63a10da704_z.jpg) -现在我们的阵列已经可以访问类,拷贝文件/etc/passwd到/mnt中测试一下: +现在我们的阵列已经可以访问了,拷贝文件/etc/passwd到/mnt中测试一下: ![](https://farm6.staticflickr.com/5593/15034475219_a3476aec0a_o.png) @@ -179,7 +179,7 @@ Debian系统中,需要在/etc/default/mdadm 设置 AUTOSTART 变量为 true ### 模拟磁盘丢失故障 ### -我们将使用以下命令卸载磁盘来模拟磁盘故障。注意,在实际应用中,磁盘已经上故障状态了,不需要卸载。 +我们将使用以下命令卸载磁盘来模拟磁盘故障。注意,在实际应用中,磁盘如果已经是故障状态了,不需要卸载。 首先,卸载阵列: @@ -190,7 +190,7 @@ Debian系统中,需要在/etc/default/mdadm 设置 AUTOSTART 变量为 true # mdadm /dev/md0 --fail /dev/sdb1 #Marks /dev/sdb1 as faulty # mdadm --remove /dev/md0 /dev/sdb1 #Removes /dev/sdb1 from the array -然后,如果你有个备用盘的话,重新添加以下: +然后,如果你有个备用盘的话,重新添加一下: # mdadm /dev/md0 --add /dev/sdb1 @@ -208,7 +208,7 @@ Debian系统中,需要在/etc/default/mdadm 设置 AUTOSTART 变量为 true # mdadm /dev/md0 --add /dev/sdb1 # mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 -希望本文对你有所帮助 +希望本文对你有所帮助。 -------------------------------------------------------------------------------- @@ -216,7 +216,7 @@ via: http://xmodulo.com/2014/09/create-software-raid1-array-mdadm-linux.html 作者:[Gabriel Cánepa][a] 译者:[shipsw](https://github.com/shipsw) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 920bb55f3e8c471133ac9c4dc1f64636f3686167 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 16 Feb 2015 11:57:26 +0800 Subject: [PATCH 323/725] PUB:20141030 Test drive Linux with nothing but a flash drive @zpl1025 --- ...ve Linux with nothing but a flash drive.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename {translated/tech => published}/20141030 Test drive Linux with nothing but a flash drive.md (83%) diff --git a/translated/tech/20141030 Test drive Linux with nothing but a flash drive.md b/published/20141030 Test drive Linux with nothing but a flash drive.md similarity index 83% rename from translated/tech/20141030 Test drive Linux with nothing but a flash drive.md rename to published/20141030 Test drive Linux with nothing but a flash drive.md index 9c1c8684d6..602c99eb18 100644 --- a/translated/tech/20141030 Test drive Linux with nothing but a flash drive.md +++ b/published/20141030 Test drive Linux with nothing but a flash drive.md @@ -1,7 +1,5 @@ 试试只用U盘加载Linux系统 ================================================================================ -![Penguins gathered together: Linux for the win](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png) -图片来源:Opensource.com 也许你听过Linux并对它有点好奇,终于想要实际体验一下,但可能不知道从哪儿开始。 @@ -9,25 +7,27 @@ 如果你手上正好有个U盘的话,那就可以试试做一个USB Linux启动盘。它是一个包含了整个操作系统并可以直接引导开机的U盘。创建它并不需要什么专业技术能力,让我们来看看怎么做,以及如何从USB引导进入Linux系统。 +![Penguins gathered together: Linux for the win](https://opensource.com/sites/default/files/styles/image-full-size/public/images/life/OSDC_Penguin_Image_520x292_12324207_0714_mm_v1a.png) + ### 你需要准备的 ### 除了一台台式机或笔记本电脑外,你还需要: - 一个空白的U盘-最好容量能有4GB或更多。 - 一个你想尝试的Linux发行版[ISO镜像][1](一种把所有磁盘内容打包起来的档案文件)。待会再详细介绍。 -- 一个叫[Unetbootin][2]的应用程序,它是一个开源的,跨平台的工具,用来创建USB启动盘。运行它并不需要启动Linux。在下面的教程中,我是在MacBook上运行的Unetbootiin。 +- 一个叫[Unetbootin][2]的应用程序,它是一个开源的,跨平台的工具,用来创建USB启动盘。运行它并不需要启动Linux。在下面的教程中,我是在MacBook上运行的Unetbootiin(LCTT 译注:它还有 Windows 和 Linux 版本)。 ### 开始干活 ### -把U盘插到你电脑的USB端口上,然后启动Unetbootin。然后会要求你输入电脑的登录密码。 +把U盘插到你电脑的USB端口上,然后启动Unetbootin。然后会要求你输入当前电脑的登录密码。 ![Unetbootin main window](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-main.png) -还记得之前提到的ISO镜像文件吗?有两种方式可以获得:要么自己从你想尝试的Linux发行版网站上下载,或者让Unetbootin帮你下载。还是选后者,在窗口顶部点击**选择发行版**,选择你想下载的发行版,然后点击**选择版本**来选择你希望尝试的发行版版本。 +还记得之前提到的ISO镜像文件吗?有两种方式可以获得:要么自己从你想尝试的Linux发行版网站上下载,或者让Unetbootin帮你下载。如果选后者,在窗口顶部点击**选择发行版**,选择你想下载的发行版,然后点击**选择版本**来选择你希望尝试的发行版版本。 ![Downloading a Linux distribution](http://opensource.com/sites/default/files/images/life-uploads/unetbootin-download-distro.png) -或者,你也可以自己下载发行版。通常,我想尝试的Linux发行版都没有在列表中。如果选择另一个方向,点击**磁盘镜像**,然后点击按钮来选择你下载好的.iso文件。 +或者,你也可以自己下载发行版。通常,我想尝试的Linux发行版都没有在列表中。如果选择自己下载,那么点击**磁盘镜像**,然后点击按钮来选择你下载好的.iso文件。 注意到下面的选项**预留每次重新启动后保存文件的空间(仅Ubuntu有效)**吗?如果你尝试的是Ubuntu或它的任一个衍生版(比如Lubuntu或Xubuntu),你可以在U盘上留出几M空间用来保存文件,比如网页书签或你自己创建的文档。当用这个U盘下次启动Ubuntu的时候,你可以继续使用这些文件。 @@ -39,21 +39,21 @@ ### 检验USB启动盘 ### -这个时候,你需要拥抱一下自己内在的极客精神。不会太难,不过你将需要进入[BIOS][3]去偷看一下你电脑内部空间。你的电脑的BIOS会加载各种硬件,并控制电脑操作系统的引导或启动。 +这个时候,你需要拥抱一下自己内在的极客精神。这不会太难,不过你将需要进入[BIOS][3]去偷看一下你的电脑内部空间。你的电脑的BIOS会加载各种硬件,并控制电脑操作系统的引导或启动。 -BIOS通常会按这个顺序搜索操作系统(或者类似的顺序):硬盘,然后是CD/DVD光驱,然后是外部存储设备。你需要调整这个顺序,让外部存储设备(在这里,意味着你的U盘启动盘)成为BIOS第一个搜索的设备。 +BIOS通常会按这个顺序搜索操作系统(或者类似的顺序):硬盘,然后是CD/DVD光驱,然后是外部存储设备。你需要调整这个顺序,让外部存储设备(在这里,指的是你的U盘启动盘)成为BIOS第一个搜索的设备。 -要做到这个,把U盘插到电脑上再重启电脑。在看到提示信息**Press F2 to enter setup**之后,按它要求的做。在有的电脑上,这个键可能是F10。 +要做到这一点,请把U盘插到电脑上再重启电脑。在看到提示信息**Press F2 to enter setup**之后,按它要求的做。在有的电脑上,这个键可能是F10。 在BIOS里,用键盘上的向右方向键切换到**Boot**菜单。然后你将看到你电脑上的驱动器列表。使用键盘上的向下方向键选中名字为**USB HDD**的选项,然后按下**F6**移动这个选项到列表的顶部。 -完成后,按下**F10**来保存改动。然后你会从BIOS里被踢出来,然后电脑会自己启动。等一小会,你就会看到一个你正在尝试的Linux发行版的启动菜单。选择**Run without installing**(或者最接近的选项)。 +完成后,按下**F10**来保存改动。然后你会从BIOS里被踢出来,然后电脑会自己启动。等一小会,你就会看到一个你正在尝试的Linux发行版的启动菜单。选择**Run without installing**(或者最类似的选项)。 在进入桌面后,你可以连接上无线或有线网络,看看网页,试一试预装的软件。你还可以看看,比如说,你的打印机或扫描仪是否能在你试的这个发行版下正常工作。你要是真的想不开,也可以去摸一下命令行。 ### 能干什么 ### -根据你尝试的Linux发行版和你使用的U盘的速度,操作系统可能会需要更长的时间来加载,而且很可能比直接装到硬盘上会慢一点。 +根据你尝试的Linux发行版和你使用的U盘的速度,操作系统可能会需要较长的时间来加载,而且很可能比直接装到硬盘上会慢一点。 还有,你也只能运行Linux发行版里预装好的基本软件。通常会有网页浏览器,一个文字处理软件,一个文本编辑器,一个媒体播放器,一个相片浏览器,以及一套实用工具。这些应该足够给你使用Linux的感觉了。 @@ -65,7 +65,7 @@ via: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive 作者:[Scott Nesbitt][a] 译者:[zpl1025](https://github.com/zpl1025) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3a79f4853cf05ae6ddc3ec6ea8e205f939014492 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 16 Feb 2015 14:40:17 +0800 Subject: [PATCH 324/725] translating --- sources/news/20150209 CrunchBang Linux Is Dead.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sources/news/20150209 CrunchBang Linux Is Dead.md b/sources/news/20150209 CrunchBang Linux Is Dead.md index 118baed41e..0f296e607e 100644 --- a/sources/news/20150209 CrunchBang Linux Is Dead.md +++ b/sources/news/20150209 CrunchBang Linux Is Dead.md @@ -1,4 +1,6 @@ -CrunchBang Linux Is Dead!!! +Translating----geekpi + +CrunchBang Linux 已死!!! ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Crunchbang_Linux_Dead.jpeg) @@ -29,4 +31,4 @@ via: http://itsfoss.com/crunchbang-linux-dead/ [a]:http://itsfoss.com/author/abhishek/ [1]:http://en.wikipedia.org/wiki/Openbox [2]:http://crunchbang.org/forums/viewtopic.php?id=38916 -[3]:http://itsfoss.com/pear-os-history/ \ No newline at end of file +[3]:http://itsfoss.com/pear-os-history/ From 1a5bb9aa805c5a0e77d3bd864b703f7e68cfcf52 Mon Sep 17 00:00:00 2001 From: geekpi Date: Mon, 16 Feb 2015 15:05:53 +0800 Subject: [PATCH 325/725] translated --- .../news/20150209 CrunchBang Linux Is Dead.md | 34 ------------------- .../news/20150209 CrunchBang Linux Is Dead.md | 32 +++++++++++++++++ 2 files changed, 32 insertions(+), 34 deletions(-) delete mode 100644 sources/news/20150209 CrunchBang Linux Is Dead.md create mode 100644 translated/news/20150209 CrunchBang Linux Is Dead.md diff --git a/sources/news/20150209 CrunchBang Linux Is Dead.md b/sources/news/20150209 CrunchBang Linux Is Dead.md deleted file mode 100644 index 0f296e607e..0000000000 --- a/sources/news/20150209 CrunchBang Linux Is Dead.md +++ /dev/null @@ -1,34 +0,0 @@ -Translating----geekpi - -CrunchBang Linux 已死!!! -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Crunchbang_Linux_Dead.jpeg) - -Yes! You read it correct. The minimalist Linux distribution **CrunchBang Linux has been discontinued**. - -CrunchBang Linux, popularly known for its abbreviated symbol #!, is based on Debian and comes with [Openbox][1] window manager. The dark themed Linux was/is a popular Linux choice for many experience Linux users. - -### CrunchBang discontinued for “it no longer holds any value” ### - -[Announcing][2] that CrunchBang will no longer be developed, head of the project Philip Newborough said that when he started the project, Linux world was different place. He mentioned that there was no ‘competition’ in the same ilk at that time but with the advancement of Linux distros like Lubuntu, Crunchbang doesn’t hold the same value. - -> For anyone who has been involved with Linux for the past ten years or so, I’m sure they’ll agree that things have moved on. Whilst some things have stayed exactly the same, others have changed beyond all recognition. It’s called progress, and for the most part, progress is a good thing. That said, when progress happens, some things get left behind, and for me, CrunchBang is something that I need to leave behind. I’m leaving it behind because I honestly believe that it no longer holds any value, and whilst I could hold on to it for sentimental reasons, I don’t believe that would be in the best interest of its users, who would benefit from using vanilla Debian. - -### What after CrunchBang demise? ### - -As happened in case of [Pear OS][3], CrunchBang forums will stay online. Downloads are available for now but will be removed in near future. Philip mentioned that he was excited about some of his incoming projects and his day job. I wish him luck in his future endeavors. It is sad to see the death of a nice Linux distribution like CrunchBang. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/crunchbang-linux-dead/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://en.wikipedia.org/wiki/Openbox -[2]:http://crunchbang.org/forums/viewtopic.php?id=38916 -[3]:http://itsfoss.com/pear-os-history/ diff --git a/translated/news/20150209 CrunchBang Linux Is Dead.md b/translated/news/20150209 CrunchBang Linux Is Dead.md new file mode 100644 index 0000000000..7d6cee2613 --- /dev/null +++ b/translated/news/20150209 CrunchBang Linux Is Dead.md @@ -0,0 +1,32 @@ +CrunchBang Linux 已死!!! +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Crunchbang_Linux_Dead.jpeg) + +是的,你没看错。最小的Linux发行版**CrunchBang Linux 已经消失了**。 + +CrunchBang Linux,大家都知道它的缩写符号 #!,基于的是Debian和[Openbox][1]窗口管理器。黑色主题的Linux是每一个有经验的Linux用户的选择。 + +### CrunchBang 因为 “不再有继续下去的价值” 而消失了 ### + +[公告][2]称CrunchBang将不在继续开发,项目的领头人Philip Newborough说他在开始这个项目的时候,Linux时间是一个不同的地方。他指出那时在相同的种类在同一时间段中没有‘竞争’,但是随着Linux发行版的进步如Lubuntu,Crunchbang不再有相同的价值了。 + +> 对于任何十年前使用Linux的人而言,我确定他们同意事物在发展。虽然一些事情一直保持不变,还有一些的变化超出了认知。这称之为进步,对于大部分事物而言,进步是一件好事。也就是说当进步发生时,一些事物落后了,对于我而言,CrunchBang就是我需要抛弃的东西。我抛弃它的原因是我真实地认为它不再具有任何价值了,虽然我还可以因为一些多愁善感的原因把它留下来,但是我不认为那些使用原生Debian用户的兴趣了。 + +### CrunchBang消失之后会怎么样? ### + +就像[Pear OS][3]那样,CrunchBang论坛仍将在线。现在仍可以下载但是不久的将来就会停止。Philip提到对他即将面对的新的项目和工作感到很激动。我希望他今后工作顺利。很难过见到一个像CrunchBang这样好的Linux发行版的消失。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/crunchbang-linux-dead/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://en.wikipedia.org/wiki/Openbox +[2]:http://crunchbang.org/forums/viewtopic.php?id=38916 +[3]:http://itsfoss.com/pear-os-history/ From 614ef1e612a5361511d8681ff626c94acd128835 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 17 Feb 2015 11:15:03 +0800 Subject: [PATCH 326/725] translating --- ...Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md index 552f98e3f2..fd9fab4e4e 100644 --- a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md +++ b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md @@ -1,3 +1,5 @@ +Translating---geekpi + OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10 ---- *Users have been advised to upgrade as soon as possible* @@ -30,4 +32,4 @@ via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-1 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://news.softpedia.com/editors/browse/silviu-stahie \ No newline at end of file +[a]:http://news.softpedia.com/editors/browse/silviu-stahie From 237e002be578123a69ad758f125291de847e1046 Mon Sep 17 00:00:00 2001 From: geekpi Date: Tue, 17 Feb 2015 11:33:56 +0800 Subject: [PATCH 327/725] translated --- ...Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 35 ------------------- ...Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 31 ++++++++++++++++ 2 files changed, 31 insertions(+), 35 deletions(-) delete mode 100644 sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md create mode 100644 translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md diff --git a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md deleted file mode 100644 index fd9fab4e4e..0000000000 --- a/sources/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md +++ /dev/null @@ -1,35 +0,0 @@ -Translating---geekpi - -OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10 ----- -*Users have been advised to upgrade as soon as possible* - -##Canonical published details about a new OpenJDK 7 version has been pushed to the Ubuntu 14.04 LTS and Ubuntu 14.10 repositories. This update fixes a number of problems and various vulnerabilities. - -The Ubuntu maintainers have upgraded the OpenJDK packages in the repositories and numerous fixes have been implemented. This is an important update and it covers a few libraries. - -"Several vulnerabilities were discovered in the OpenJDK JRE related to information disclosure, data integrity and availability. An attacker could -exploit these to cause a denial of service or expose sensitive data over the network,” reads the security notice. - -Also, "a vulnerability was discovered in the OpenJDK JRE related to information disclosure and integrity. An attacker could exploit this to -expose sensitive data over the network." - -These are just a couple of the vulnerabilities identified and corrected by the developer and implemented by the maintainers/., and for a more detailed description of the problems, you can see Canonical's security notification. Users have been advised to upgrade their systems as soon as possible. - -The flaws can be fixed if you upgrade your system to the latest openjdk-7-related packages specific to each distribution. To apply the patch, users will have to run the Update Manager application. In general, a standard system update will make all the necessary changes. All Java-related applications will have to be restarted. - --------------------------------------------------------------------------------- - -via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml - -本文发布时间:29 Jan 2015, 16:53 GMT - -作者:[Silviu Stahie][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/silviu-stahie diff --git a/translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md new file mode 100644 index 0000000000..1801580d00 --- /dev/null +++ b/translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md @@ -0,0 +1,31 @@ +OpenJDK 7的漏洞已经在Ubuntu 14.04 和Ubuntu 14.10中解决了 +---- +*建议用户尽快升级* + +## Canonical公布新的OpenJDK 7 的版本已经提交到Ubuntu 14.04 LTS和Ubuntu 14.10 的仓库中了。更新修复了大量的问题和漏洞。 + +Ubuntu维护者已经升级了仓库中的OpenJDK包,并且含有大量的修复。这是一个重要的更新切涵盖了少量的库。 + +安全公告中说“OpenJDK JRE中发现了一些信息泄露、数据完整性和可用性的漏洞。攻击者可以利用这些通过网络执行拒绝服务或者泄露信息。” + +同样,“OpenJDK JRE中发现了关于信息泄露和完整性的漏洞。攻击者可以利用这点通过网络泄露敏感信息。” + +这里有几个漏洞被开发者确认并修复,并有维护人员实现。关于问题的详细描述,你可以参考Canonical的安全通告。用户被建议尽快升级系统。 + +这个漏洞只要你升级到最新的openjdk 7相关的包就可以修复。要应用补丁,用户需要运行升级管理程序。通常上,一个标准系统更新就会运行必要的更新。所有java相关的程序需要重新启动。 + +-------------------------------------------------------------------------------- + +via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml + +本文发布时间:29 Jan 2015, 16:53 GMT + +作者:[Silviu Stahie][a] + +译者:[geekpi](https://github.com/geekpi) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/silviu-stahie From 761aec20665f70d0729f7522f90b8d41c1da9e53 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Feb 2015 13:08:33 +0800 Subject: [PATCH 328/725] =?UTF-8?q?=E9=80=89=E9=A2=98=EF=BC=88=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=96=87=E7=AB=A0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...from brute force attacks using fail2ban.md | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md diff --git a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md new file mode 100644 index 0000000000..6397e82c7e --- /dev/null +++ b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md @@ -0,0 +1,170 @@ +How to protect SSH server from brute force attacks using fail2ban +================ + +One common attack on SSH service is brute force attacks where a remote attacker indefinitely attempts to log in with different passwords. Of course there are arguments against password authentication for SSH, and alternative authentication mechanisms such as [public key authentication][1] or [two-factor authentication][2] exist to obsolete such attacks. Putting aside pros and cons of different authentication methods, let's consider the situation where password authentication is required. How would you protect your SSH server against brute-force attacks? + +[fail2ban][3] is a well-known open-source intrusion prevention framework on Linux that monitors various system log files (e.g., /var/log/auth.log or /var/log/secure) and automatically triggers various defensive actions upon detecting any suspicious activities. In fact, fail2ban can be quite useful to defend against brute force password guessing attacks on an SSH server. + +In this guide, I will demonstrate **how to install and configure fail2ban to protect an SSH server against brute force attacks from a remote IP address**. + +### Install Fail2ban on Linux + +To install fail2ban on CentOS or RHEL, first [set up EPEL repository][4], and then run the following command. + + $ sudo yum install fail2ban + +To install fail2ban on Fedora, simply run: + + $ sudo yum install fail2ban + +To install fail2ban on Ubuntu, Debian or Linux Mint: + + $ sudo apt-get install fail2ban + +### Configure Fail2ban for SSH Server + +Now you are ready to configure fail2ban to harden your SSH server. You need to edit the configuration file at /etc/fail2ban/jail.conf. The configuration file contains "DEFAULT" section where you define default parameters for all monitored services, and service-specific sections where you define any service-specific jails (e.g., SSH, Apache, etc) to overwrite default parameters. + +In the service-specific jail sections (somewhere after [DEFAULT] section), you need to define [ssh-iptables] section, where you define SSH-specific jail configurations. Actual IP address banning is done by iptables. + +The following is an example of /etc/fail2ban/jail.conf which contains "ssh-iptables" jail configuration. Of course there could be other application-specific jails depending on your needs. + + $ sudo vi /etc/fail2ban/jail.local + +``` +[DEFAULT] +# a space delimited list of IP addresses, CIDR prefixes, or DNS hostnames +# to bypass fail2ban protection +ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24 + +# number of seconds during which a client host is blocked +bantime = 86400 + +# number of failures before a client host is blocked +maxretry = 5 + +# number of seconds within which "maxentry" failures result in banning +findtime = 600 + +mta = sendmail + +[ssh-iptables] +enabled = true +filter = sshd +action = iptables[name=SSH, port=ssh, protocol=tcp] +sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com] +# for Debian-based distros +logpath = /var/log/auth.log +# for Red Hat-based distros +logpath = /var/log/secure +# ssh-specific max-retry threshold +maxretry = 3 +``` + +According to the above configuration, fail2ban will automatically ban any remote IP address from which there have been at least 3 failed login attempts within the last 10 minutes. Once banned, the offending IP address will remain blocked for 24 hours. Such an event will be notified by sendemail to a recipient email address. + +Once the configuration file is ready, restart fail2ban service as follows. + +On Debian, Ubuntu or CentOS/RHEL 6: + + $ sudo service fail2ban restart + +On Fedora or CentOS/RHEL 7: + + $ sudo systemctl restart fail2ban + +To verify fail2ban is running successfully, run fail2ban-client command with "ping" argument. If fail2ban service is running okay, you should see "pong" as a response. + + $ sudo fail2ban-client ping + Server replied: pong + +### Test Protection against SSH Brute-Force Attacks with Fail2ban + +To test whether fail2ban works, try to SSH to the server using incorrect passwords to simulate a brute-force attack. In the mean time, monitor /var/log/fail2ban.log, which is logging any interesting events that are happening in fail2ban. + + $ sudo tail -f /var/log/fail2ban.log + +![](https://farm8.staticflickr.com/7550/15882084127_fccf9ca7b7_c.jpg) + +According to the log file above, fail2ban has banned an IP address 192.168.1.8, upon detecting multiple failed SSH login attempts from the IP address. + +### Check Fail2ban Status and Unban Blocked IP Addresses + +As fail2ban's "ssh-iptables" jail uses iptables to block offending IP addresses, you can easily verify the ban by checking current iptables rules as follows. + + $ sudo iptables --list -n + +``` +Chain INPUT (policy ACCEPT) +target prot opt source destination +fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 + +Chain FORWARD (policy ACCEPT) +target prot opt source destination + +Chain OUTPUT (policy ACCEPT) +target prot opt source destination + +Chain fail2ban-SSH (1 references) +target prot opt source destination +DROP all -- 192.168.1.8 0.0.0.0/0 +RETURN all -- 0.0.0.0/0 0.0.0.0/0 +``` + +If you want to unblock the IP address from fail2ban, you can also use iptables command: + + $ sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP + +While you can check and manage fail2ban's IP blocklist manually with iptables command like above, a proper way is in fact to use fail2ban-client command-line tool. This tool allows you to manage not only "ssh-iptables" jail, but also any other types of fail2ban jails in a unified command-line interface. + +To check fail2ban status (which will show a list of currently active jails): + + $ sudo fail2ban-client status + +To check the status of a particular jail (e.g., ssh-iptables): + + $ sudo fail2ban-client status ssh-iptables + +The above command will show a list of banned IP addresses. + +![](https://farm8.staticflickr.com/7497/16067847655_021d23e320_b.jpg) + +To unban a particular IP address: + + $ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8 + +![](https://farm8.staticflickr.com/7465/16065915571_b215a8b344_b.jpg) + +Note that if you stop fail2ban, all blocked IP addresses will be unblocked. When you restart fail2ban, it will find a list of offending IP addresses from /var/log/secure (or /var/log/auth.log), and re-ban those IP addresses if the elapsed time of the offenses are still within ban time. + +### Set Fail2ban to Auto-start on Boot + +Once you haved tested fail2ban successfully, the last step is to enable fail2ban to launch automatically upon powering on your server. On Debian-based distributions, fail2ban auto-start is enabled by default. On Red Hat-based distributions, enable auto-start as follows. + +On CentOS/RHEL 6: + + $ sudo chkconfig fail2ban on + +On Fedora or CentOS/RHEL 7: + + $ sudo systemctl enable fail2ban + +### Summary + +In this tutorial, I demonstrated how to install and configure fail2ban to protect an SSH server. While fail2ban can mitigate brute-force password guessing attacks, please note that it cannot protect SSH servers against sophisticated distributed brute-force campaigns, where an attacker bypasses fail2ban by using many thousands of bot-controlled IP addresses. + +----------- + +via: http://linoxide.com/tools/linux-compress-decompress-tools/ + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://xmodulo.com/how-to-force-ssh-login-via-public-key-authentication.html +[2]:http://xmodulo.com/two-factor-authentication-ssh-login-linux.html +[3]:http://www.fail2ban.org/ +[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html \ No newline at end of file From 2fc741d9e43755b8243b7fe9502ce28becf50e18 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Feb 2015 13:17:40 +0800 Subject: [PATCH 329/725] =?UTF-8?q?=E6=B8=85=E9=99=A4=E5=92=8C=E6=94=B6?= =?UTF-8?q?=E5=9B=9E=E8=BF=87=E6=9C=9F=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... as the Most Beautiful LibreOffice Ever.md | 38 ------ ...50202 The Pirate Bay Is Now Back Online.md | 38 ------ ...rth of Devuan GNU or Linux Distribution.md | 98 -------------- ... Ubuntu Edition, the First Ubuntu Phone.md | 45 ------- ...20141211 Open source all over the world.md | 3 - ... and the Integrated Open Source Company.md | 81 ----------- ...er the enterprise and other predictions.md | 2 - ...inus Tells Wired Leap Second Irrelevant.md | 29 ---- ...about diversity niceness in open source.md | 44 ------ ... Top 10 FOSS legal developments of 2014.md | 72 ---------- ...122 Top 10 open source projects of 2014.md | 126 ------------------ ...e a syslog server with rsyslog on Linux.md | 2 - ...l Repository in Ubuntu using APT-mirror.md | 1 - 13 files changed, 579 deletions(-) delete mode 100644 sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md delete mode 100644 sources/news/20150202 The Pirate Bay Is Now Back Online.md delete mode 100644 sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md delete mode 100644 sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md delete mode 100644 sources/talk/20141217 Docker and the Integrated Open Source Company.md delete mode 100644 sources/talk/20150112 Linus Tells Wired Leap Second Irrelevant.md delete mode 100644 sources/talk/20150119 Linus Torvalds responds to Ars about diversity niceness in open source.md delete mode 100644 sources/talk/20150122 Top 10 FOSS legal developments of 2014.md delete mode 100644 sources/talk/20150122 Top 10 open source projects of 2014.md diff --git a/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md b/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md deleted file mode 100644 index 3718ee58a6..0000000000 --- a/sources/news/20150130 LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever.md +++ /dev/null @@ -1,38 +0,0 @@ -LibreOffice 4.4 Released as the Most Beautiful LibreOffice Ever ----- -*The developer has made a lot of UI improvements* - -![LibreOffice 4.4](http://i1-news.softpedia-static.com/images/news2/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575-2.jpg) - -The Document Foundation has just announced that a new major update has been released for LibreOffice and it brings important UI improvements, enough for them to call this the most beautiful version ever. - -The Document Foundation doesn't usually make the UI the main focus of an update, but now the developers are saying that this is the most beautiful release made so far and that says a lot. Fortunately, this version is not just about interface fixes and there are plenty of other major improvements that should really provide a very good reason to get LibreOffice 4.4. - -LibreOffice has been gaining quite a lot of fans and users, and the past couple of years have been very successful. The office suite is implemented by default in most of the important Linux distributions out there and it was adopted by numerous administrations and companies across the world. LibreOffice is proving to be a difficult adversary for Microsoft's Office and each new version makes it even better. -LibreOffice 4.4 brings a lot of new features - -If we move aside all the improvements made to the interface, we're still left with a ton of fixes and changes. The Document Foundation takes its job very seriously and all upgrades really improve the users' experience tremendously. - -"LibreOffice 4.4 has got a lot of UX and design love, and in my opinion is the most beautiful ever. We have completed the dialog conversion, redesigned menu bars, context menus, toolbars, status bars and rulers to make them much more useful. The Sifr monochrome icon theme is extended and now the default on OS X. We also developed a new Color Selector, improved the Sidebar to integrate more smoothly with menus, and reworked many user interface details to follow today’s UX trends," [says Jan "Kendy" Holesovsky](1), a member of the Membership Committee and the leader of the design team. - -Some of the other improvements include much better support for OOXML file formats, the source code has been "groomed" and cleaned after a Coverity Scan analysis, digital signatures for exported PDF files, improved import filters for Microsoft Visio, Microsoft Publisher and AbiWord files, and Microsoft Works spreadsheets, and much more. - -For now, the PPA doesn't have the latest version, but that should change soon. For the time being, you can download the [LibreOffice 4.4](2) source packages from Softpedia, if you want to compile them yourself. - --------------------------------------------------------------------------------- - -via:http://news.softpedia.com/news/LibreOffice-4-4-Releases-As-the-Most-Beautiful-LibreOffice-Ever-471575.shtml - -本文发布时间:29 Jan 2015, 14:16 GMT - -作者:[Silviu Stahie][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/silviu-stahie -[1]:http://blog.documentfoundation.org/2015/01/29/libreoffice-4-4-the-most-beautiful-libreoffice-ever/ -[2]:http://linux.softpedia.com/get/Office/Office-Suites/LibreOffice-60713.shtml \ No newline at end of file diff --git a/sources/news/20150202 The Pirate Bay Is Now Back Online.md b/sources/news/20150202 The Pirate Bay Is Now Back Online.md deleted file mode 100644 index acde800ad8..0000000000 --- a/sources/news/20150202 The Pirate Bay Is Now Back Online.md +++ /dev/null @@ -1,38 +0,0 @@ -The Pirate Bay Is Now Back Online ------- -*The website was closed for about seven weeks* -![The Pirate Bay](http://i1-news.softpedia-static.com/images/news2/The-Pirate-Bay-Is-Now-Back-Online-471802-2.jpg) -##After being [raided](1) by the police almost two months ago, (in)famous torrent website The Pirate Bay is now back online. Those who thought the website will never return will be either disappointed or happy given that The Pirate Bay seems to live once again. - -In order to celebrate its coming back, The Pirate Bay admins have posted a Phoenix bird on the front page, which signifies the fact that the website can't be killed only damaged. - -About two weeks after The Pirate Bay was raided the domain miraculously came back to life. Soon after a countdown appeared on the temporary homepage of The Pirate Bay indicating that the website is almost ready for a comeback. - -The countdown hinted to February 1, as the possible date for The Pirate Bay's comeback, but it looks like those who manage the website manage to pull it out one day earlier. - -Beginning today, those who have accounts on The Pirate Bay can start downloading the torrents they want. Other than the Phoenix on the front page there are no other messages that might point to the resurrection The Pirate Bay except for the fact that it's now operational. - -Admins of the website said a few weeks ago they will find ways to manage and optimize The Pirate Bay, so that there will be minimal chances for the website to be closed once again. Let's see how it lasts this time. - -##Another version of The Pirate Bay may be launched soon - -In related news, one of the members of the original staff was dissatisfied with the decisions made by the majority regarding some of the changes made in the way admins interact with the website. - -He told [Torrentfreak](2) earlier this week that he, along with a few others, will open his version of The Pirate Bay, which they claim will be the "real" one. - ------- -via:http://news.softpedia.com/news/The-Pirate-Bay-Is-Now-Back-Online-471802.shtml - -本文发布时间:31 Jan 2015, 22:49 GMT - -作者:[Cosmin Vasile][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/cosmin-vasile -[1]:http://news.softpedia.com/news/The-Pirate-Bay-Is-Down-December-9-2014-466987.shtml -[2]:http://torrentfreak.com/pirate-bay-back-online-150131/ \ No newline at end of file diff --git a/sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md b/sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md deleted file mode 100644 index 89299a55d5..0000000000 --- a/sources/news/20150205 Debian Forked over systemd--Birth of Devuan GNU or Linux Distribution.md +++ /dev/null @@ -1,98 +0,0 @@ -Debian Forked over systemd: Birth of Devuan GNU/Linux Distribution -================================================================================ -Debian GNU/Linux distribution is one of the oldest Linux distribution that is currently in working state. init used to be the default central management and configuration platform for Linux operating system before systemd emerged. Systemd from the date of its release has been very much controversial. - -Sooner or later it has replaced init on most of the Linux distribution. Debian remained no exception and Debian 8 codename JESSIE will be having systemd by default. The Debian adaptation of systemd in replacement of init caused polarization. This led to forking of Debian and hence Devuan GNU/Linux distribution born. - -Devuan project started with the primary goal to put back nit and remove controversial systemd. A lot of Linux Distribution are based on Debian or a derivative of Debian and one does not simply fork Debian. Debian will always attract developers. - -### What Devuan is all About? ### - -Devuan in Italian (pronounced Devone in English) suggests “Don’t panic and keep forking Debian”, for Init-Freedom lovers. Developers see Devuan as the beginning of a process which aims at base distribution and is able to protect the freedom of developers and community. - -![Devuan Linux](http://www.tecmint.com/wp-content/uploads/2015/02/Devuan-Linux.jpg) - -Debian Forked over systemd: Birth of Devuan Linux - -Devuan project priority includes – interoperability, diversity and backward compatibility. It will derive its own installer and repos from Debian and modify where ever required. If everything works smooth by the mid of 2015 users can switch to Devuan from Debian 7 and start using devuan repos. - -The process of switching will fairly remain as simple as upgrading a Debian installation. The project will be as minimal as possible and completely in accordance of UNIX philosophy – “Doing one thing and doing it well”. The targeted users of Devuan will be System Admins, Developers and users having experience of Debian. - -The project started by italian developers has raised a fund of 4.5k€ (EUR) in the year 2014. They have moved distro infrastructure from GitHub to GitLab, progress on Loginkit (systemd Logind replaced), discussing Logo and other important aspects useful in long run. - -A few of the Logos are in discussion now are shown in the picture. - -![Devuan Logo Proposals](http://www.tecmint.com/wp-content/uploads/2015/02/Devuan-Logos.jpeg) - -Devuan Logo Proposals - -Have a look at them here at: [http://without-systemd.org/wiki/index.php/Category:Logo][1] - -The unrest over systemd that gave birth to Devuan is good or bad? Lets have a look. - -### Is Devuan fork a good thing? ### - -Well! difficult to answer that forking such a huge distro is really going to be of any good. A (group of) developer(s) who initially were working with Debian got unsatisfied with systemd and forked it. - -Now the actual number of developers working on Debian/Systemd decreased which is going to affect the productivity of both the projects. Now the same number of developers are working on two different projects. - -What you think would be the fate of Devuan as well as Debian project? Won’t it hinder the progress of either distro and Linux in the long run? - -Please give your [comments][2] about Devuan project. - -注:如果可以在发布文章的时候发布一个调查,就把下面这段发成一个调查,如果不行,就直接嵌入js代码 - - - -Do you think systemd for Debian is - -Good -Bad -Don't Know -Don't Care -Other: - -VoteView ResultsPolldaddy.com - - -**Do you really feel that Debian with systemd will have a bad fate as depicted below** - -![Strip SystmeD](http://www.tecmint.com/wp-content/uploads/2015/02/Strip-SystmeD.jpg) - -Strip SystmeD - -Time to wait for Devuan 1.0 and lets see what it could contain. - -### Conclusion ### - -All the major Linux Distributions Like Fedora, RedHat, openSUSE, SUSE Enterprise, Arch, Megia have already switched to Systemd, Ubuntu and Debian are in the way to replace init with systemd. Only Gentoo and Slack till date have shown no interest in systemd but who knows someday even Gentoo and slack too started moving in the same direction. - -The reputation of Debian as a Linux Distro is something very few have reached the mark. It is blessed by some hundreds of developers and millions of users. The actual question is what percentage of users and developers were not comfortable with systemd. If the percentage is really high then what led debian to switch to systemd. Had it moved against the wishes of its users and developers. If this is the case the chance of success of devuan is pretty fair. Well how many developers put long hours of code punching for the project. - -Hope the fate of this project will not be something like those distros which once was started with high degree of passion and enthusiasm and later the developers got uninterested. - -Post Script : Linus Torvalds do not mind systemd that much. - -**If you need Devuan, then join and support it now!** - -Development : [https://git.devuan.org][3] -Donations : [https://devuan.org/donate.html][4] -Discussions : [https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng][5] -Devuan Developers : onelove@devuan.org - --------------------------------------------------------------------------------- - -via: http://www.tecmint.com/debian-forked-over-systemd-birth-of-devuan-linux/ - -作者:[Avishek Kumar][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.tecmint.com/author/avishek/ -[1]:http://without-systemd.org/wiki/index.php/Category:Logo -[2]:http://www.tecmint.com/debian-forked-over-systemd-birth-of-devuan-linux/#comments -[3]:https://git.devuan.org/ -[4]:https://devuan.org/donate.html -[5]:https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng \ No newline at end of file diff --git a/sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md b/sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md deleted file mode 100644 index 02b147abd9..0000000000 --- a/sources/news/20150207 BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone.md +++ /dev/null @@ -1,45 +0,0 @@ -BQ and Canonical Officially Launch Aquaris E4.5 Ubuntu Edition, the First Ubuntu Phone ------- -*Everything you need to know about Aquaris E4.5* - -##BQ and Canonical have officially announced the new Aquaris E4.5 Ubuntu Edition and the fact that the phone will be available in the coming weeks through a series of flash sales. - -Information about the imminent launch of BQ Ubuntu phone has been around for some time and now it the two companies seem to have decided to make it official. This is the first device powered by Ubuntu Touch and a lot of people will be paying very close attention to what is happening in the mobile world. - -Ubuntu Touch is the latest operating system from Canonical and it's a brand new experience that aims to be very different from what users can find right now on the market, and that includes systems like Jola or Firefox OS. The OS has been in the works for more than two years and it's a system designed to work on all kind of devices, across the hardware spectrum. - -##Who is BQ and why has Canonical chosen them? - -When Mark Shuttleworth announced the two partners for the launch of Ubuntu Touch, BQ and Meizu, most of the people watching asked the same question. Who? BQ is not a very big company, but it's a young company and it has already started to penetrate the European market with some interesting devices. In many ways, they are doing the same thing companies like Meizu or Xiaomi are trying and succeeded in China: to offer devices that are interesting and different from what everyone else is doing. - -Many Ubuntu fans have questioned Canonical’s decision of choosing small companies and not big ones, but they are trying to do the same thing as the just-mentioned hardware makers. They want to offer an operating system radically different from what everyone else is doing. It's easy to understand why the goals of Canonical and BQ are actually one and the same. - -##What is Ubuntu Touch? - -The new operating system developed by Canonical embraces the fact that people are now swiping a lot more than they are tapping. Smartphones are no longer something new and everyone can understand how to swipe and get things done on a phone. Ubuntu devs have taken this to a whole new level. The operating system has no buttons, with the exception of the regular power and volume buttons. Everything is done with swiped gestures, from all sides of the screen. - -Also, Ubuntu Touch brings a new concept to the market, that of scopes. There is no longer a home screen, just scopes defined by the user to expand the experience. For example, you can have a Music scope that aggregates all your music sources on a single screen. It's a different way of looking at your smartphone, but this is built for people who crave a new experience. Don't worry, regular apps still exist, but they are differently integrated. - -![Aquaris E4.5 Ubuntu Edition start screen](http://i1-news.softpedia-static.com/images/news2/BQ-and-Canonical-Officially-Launch-Aquaris-E4-5-Ubuntu-Edition-472397-5.jpg) - -"As any kind of content can be presented via Scopes - they provide developers an easy path for their creations to be integral to the device experience. It is simple to create new Scopes via an easy to use UI toolkit with much lower development and maintenance costs than traditional apps. Canonical and BQ have worked with a host of partners to ensure that there is a wealth of interesting, relevant and dynamic content available at launch, with more content partners to follow," said Cristian Parrino, VP Mobile at Canonical. - -##BQ’s Aquaris E4.5 Ubuntu Edition hardware specs - -First of all, it's important to know that Aquaris E4.5 Ubuntu Edition is a dual-sim phone and it comes unlocked so that everyone can use it with their network. It boasts a MediaTek Quad-Core Cortex A7 processor running at up to 1.3 GHz, a 4.5-inch screen, 1GB RAM, rear camera with high-quality BSI sensors, Largan lens, and autofocus with dual flash(8MP), and front camera with 5MP. - -It's also worth mentioning that several operators in Europe, including 3 Sweden, amena.com, giffgaff, and Portugal Telecom have decided to provide SIM bundles at purchase. The price is €169.90 ($191). - -So, are you ready to buy the Aquaris E4.5 Ubuntu Edition? - --------------------------------------------------------------------------------- - -via: http://news.softpedia.com/news/BQ-and-Canonical-Officially-Launch-Aquaris-E4-5-Ubuntu-Edition-472397.shtml - -作者:[Silviu Stahie][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/silviu-stahie \ No newline at end of file diff --git a/sources/talk/20141211 Open source all over the world.md b/sources/talk/20141211 Open source all over the world.md index 175d870cb7..bd306edd5a 100644 --- a/sources/talk/20141211 Open source all over the world.md +++ b/sources/talk/20141211 Open source all over the world.md @@ -1,6 +1,3 @@ -////translating by yupmoon - - Open source all over the world ================================================================================ ![](https://opensource.com/sites/default/files/styles/image-full-size/public/images/business/BUS_OpenSourceExperience_520x292_cm.png) diff --git a/sources/talk/20141217 Docker and the Integrated Open Source Company.md b/sources/talk/20141217 Docker and the Integrated Open Source Company.md deleted file mode 100644 index 5a98324135..0000000000 --- a/sources/talk/20141217 Docker and the Integrated Open Source Company.md +++ /dev/null @@ -1,81 +0,0 @@ -Docker and the Integrated Open Source Company -================================================================================ -It’s been a long time since an open source project has gotten as much buzz and attention as Docker. The easiest way to explain the concept is, well, to look at the logo of the eponymous1 company that created and manages the project: - -![](http://2yj23r14cytosbxol4cavq337g.wpengine.netdna-cdn.com/wp-content/uploads/2014/12/docker.png) - -The reference in the logo is to shipping containers, one of the most important inventions of the 20th century. Actually, the word “invention” is not quite right: the idea of putting bulk goods into consistently-sized boxes goes back at least a few hundred years.[2][1] What changed the world was the standardization of containers by a trucking magnate named Malcom McLean and Keith Tantlinger, his head engineer. Tantlinger developed much of the technology undergirding the intermodal container, especially its corner casting and Twistlock mechanism that allowed the containers to be stacked on ships, transported by trucks, and moved by crane. More importantly, Tantlinger convinced McLean to release the patented design for anyone to copy without license, knowing that the technology would only be valuable if it were deployed in every port and on every transport ship in the world. Tantlinger, to put it in software terms, open-sourced the design. - -Shipping containers really are a perfect metaphor for what Docker is building: standardized containers for applications. - - -- Just as the idea of a container wasn’t invented by Tantlinger, Docker is building on a concept that has been around for quite a while. Companies like Oracle, HP, and IBM have used containers for many years, and Google especially has a very similar implementation to Docker that they use for internal projects. Docker, though, by being open source and [community-centric][2], offers the promise of standardization -- It doesn’t matter what is inside of a shipping container; the container itself will fit on any ship, truck, or crane in the world. Similarly, it doesn’t matter what app (and associated files, frameworks, dependencies, etc.) is inside of a docker container; the container will run on any Linux distribution and, more importantly, just about every cloud provider including AWS, Azure, Google Cloud Platform, Rackspace, etc. -- When you move abroad, you can literally have a container brought to your house, stick in your belongings, and then have the entire thing moved to a truck to a crane to a ship to your new country. Similarly, containers allow developers to build and test an application on their local machine and have confidence that the application will behave the exact same way when it is pushed out to a server. Because everything is self-contained, the developer does not need to worry about there being different frameworks, versions, and other dependencies in the various places the application might be run - -The implications of this are far-reaching: not only do containers make it easier to manage the lifecycle of an application, they also (theoretically) commoditize cloud services through the age-old hope of “write once run anywhere.” More importantly, at least for now, docker containers offer the potential of being far more efficient than virtual machines. Relative to a container, using virtual machines is like using a car transport ship to move cargo: each unique entity on the ship is self-powered, which means a lot of wasted resources (those car engines aren’t very useful while crossing the ocean). Similarly, each virtual machine has to deal with the overhead of its own OS; containers, on the other hand, all share the same OS resulting in huge efficiency gains.[3][4] - -In short, Docker is a really big deal from a technical perspective. What excites me, though, is that the company is also innovating when it comes to their business model. - ----------- - -The problem with monetizing open source is self-evident: if the software is freely available, what exactly is worth paying for? And, unlike media, you can’t exactly stick an advertisement next to some code! - -For many years the default answer has been to “be like Red Hat.” Red Hat is the creator and maintainer of the Red Hat Enterprise Linux (RHEL) distribution, which, like all Linux distributions, is freely available.[4][5] Red Hat, however, makes money by offering support, training, a certification program, etc. for enterprises looking to use their software. It is very much a traditional enterprise model – make money on support! – just minus the up-front license fees. - -This sort of business is certainly still viable; Hortonworks is [set to IPO][3] with a similar model based on Hadoop, albeit at a much lower valuation than it received during its last VC round. That doesn’t surprise me: I don’t think this is a particularly great model from a business perspective. - -To understand why it’s useful to think about there being three distinct parts of any company that is based on open source: the open source project itself, any value-added software built on top of that project, and the actual means of making money: - -![](http://2yj23r14cytosbxol4cavq337g.wpengine.netdna-cdn.com/wp-content/uploads/2014/12/opensourcepaper.jpg) - -*There are three parts of an open source business: the project itself, the value-added software on top of that project, and the means of monetization* - -The problem with the “Red Hat” model is the complete separation of all three of these parts: Red Hat doesn’t control the core project (Linux), and their value-added software (RHEL) is free, leaving their money-making support program to stand alone. To the company’s credit they have pulled this model off, but I think a big reason is because utilizing Linux was so much more of a challenge back in the 90s.[5][11] I highly doubt Red Hat could successfully build a similar business from scratch today. - -![](http://2yj23r14cytosbxol4cavq337g.wpengine.netdna-cdn.com/wp-content/uploads/2014/12/redhatpaper.jpg) - -*The three parts of Red Hat’s business are separate and more difficult for the company to control and monetize* - -GitHub, the repository hosting service, is exploring what is to my mind a more compelling model. GitHub’s value-added software is a hosting service based on Git, an open-source project designed by Linux creator Linus Torvalds. Crucially, GitHub is seeking to monetize that hosting service directly, both through a SaaS model and through an on-premise enterprise offering[6][6]. This means that, in comparison to Red Hat, there is one less place to disintermediate GitHub: you can’t get their value-added software (for private projects – public is free) unless you’re willing to pay. - -![](http://2yj23r14cytosbxol4cavq337g.wpengine.netdna-cdn.com/wp-content/uploads/2014/12/githubpaper.jpg) - -*While GitHub does not control Git, their value-added software and means of monetization are unified, making the latter much easier and more sustainable* - -Docker takes the GitHub model a step further: the company controls everything from the open source project itself to the value-added software (DockerHub) built on top of that, and, just last week, [announced a monetization model][7] that is very similar to GitHub’s enterprise offering. Presuming Docker continues its present momentum and finds success with this enterprise offering, they have the potential to be a fully integrated open source software company: project, value-added software, and monetization all rolled into one. - -![](http://2yj23r14cytosbxol4cavq337g.wpengine.netdna-cdn.com/wp-content/uploads/2014/12/dockerpaper.jpg) - -*Docker controls all the parts of their business: they are a fully integrated open source company.* - -This is exciting, and, to be honest, a little scary. What is exciting is that very few movements have had such a profound effect as open source software, and not just on the tech industry. Open source products are responsible for end user products like this blog; more importantly, open source technologies have enabled exponentially more startups to get off the ground with minimal investment, vastly accelerating the rate of innovation and iteration in tech.[7][8] The ongoing challenge for any open source project, though, is funding, and Docker’s business model is a potentially sustainable solution not just for Docker but for future open source technologies. - -That said, if Docker is successful, over the long run commercial incentives will steer the Docker open source project in a way that benefits Docker the company, which may not be what is best for the community broadly. That is what is scary about this: might open source in the long run be subtly corrupted by this business model? The makers of CoreOS, a stripped-down Linux distribution that is a perfect complement for Docker, [argued that was the case][9] last week: - -> We thought Docker would become a simple unit that we can all agree on. Unfortunately, a simple re-usable component is not how things are playing out. Docker now is building tools for launching cloud servers, systems for clustering, and a wide range of functions: building images, running images, uploading, downloading, and eventually even overlay networking, all compiled into one monolithic binary running primarily as root on your server. The standard container manifesto was removed. We should stop talking about Docker containers, and start talking about the Docker Platform. It is not becoming the simple composable building block we had envisioned. - -This, I suppose, is the beauty of open source: if you disagree, fork, which is essentially what CoreOS did, launching their own “Rocket” container.[8][10] It also shows that Docker’s business model – and any business model that contains open source – will never be completely defensible: there will always be a disintermediation point. I suspect, though, that Rocket will fail and Docker’s momentum will continue: the logic of there being one true container is inexorable, and Docker has already built up quite a bit of infrastructure and – just maybe – a business model to make it sustainable. - --------------------------------------------------------------------------------- - -via: http://stratechery.com/2014/docker-integrated-open-source-company/ - -作者:[Ben Thompson][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://stratechery.com/category/about/ -[1]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:1:1300 -[2]:https://github.com/docker/docker -[3]:http://blogs.wsj.com/digits/2014/12/01/ipo-bound-hortonworks-drops-out-of-billion-dollar-startup-club/ -[4]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:2:1300 -[5]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:3:1300 -[6]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:5:1300 -[7]:http://blog.docker.com/2014/12/docker-announces-docker-hub-enterprise/ -[8]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:6:1300 -[9]:https://coreos.com/blog/rocket/ -[10]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:7:1300 -[11]:http://stratechery.com/2014/docker-integrated-open-source-company/#fn:4:1300 \ No newline at end of file diff --git a/sources/talk/20141219 2015 will be the year Linux takes over the enterprise and other predictions.md b/sources/talk/20141219 2015 will be the year Linux takes over the enterprise and other predictions.md index 4718480b82..0d2b26cc98 100644 --- a/sources/talk/20141219 2015 will be the year Linux takes over the enterprise and other predictions.md +++ b/sources/talk/20141219 2015 will be the year Linux takes over the enterprise and other predictions.md @@ -1,5 +1,3 @@ -translating by barney-ro - 2015 will be the year Linux takes over the enterprise (and other predictions) ================================================================================ > Jack Wallen removes his rose-colored glasses and peers into the crystal ball to predict what 2015 has in store for Linux. diff --git a/sources/talk/20150112 Linus Tells Wired Leap Second Irrelevant.md b/sources/talk/20150112 Linus Tells Wired Leap Second Irrelevant.md deleted file mode 100644 index ee1516c474..0000000000 --- a/sources/talk/20150112 Linus Tells Wired Leap Second Irrelevant.md +++ /dev/null @@ -1,29 +0,0 @@ -Linus Tells Wired Leap Second Irrelevant -================================================================================ -![](https://farm4.staticflickr.com/3852/14863156322_a354770b14_o.jpg) - -Two larger publications today featured Linux and the effect of the upcoming leap second. The Register today said that the leap second effects of the past are no longer an issue. Coincidentally, Wired talked to Linus Torvalds about the same issue today as well. - -**Linus Torvalds** spoke with Wired's Robert McMillan about the approaching leap second due to be added in June. The Register said the last leap second in 2012 took out Mozilla, StumbleUpon, Yelp, FourSquare, Reddit and LinkedIn as well as several major airlines and travel reservation services that ran Linux. Torvalds told Wired today that the kernel is patched and he doesn't expect too many issues this time around. [He said][1], "Just take the leap second as an excuse to have a small nonsensical party for your closest friends. Wear silly hats, get a banner printed, and get silly drunk. That’s exactly how relevant it should be to most people." - -**However**, The Register said not everyone agrees with Torvalds' sentiments. They quote Daily Mail saying, "The year 2015 will have an extra second — which could wreak havoc on the infrastructure powering the Internet," then remind us of the Y2K scare that ended up being a non-event. The Register's Gavin [Clarke concluded][2]: - -> No reason the Penguins were caught sans pants. - -> Now they've gone belt and braces. - -The take-away is: move along, nothing to see here. - --------------------------------------------------------------------------------- - -via: http://ostatic.com/blog/linus-tells-wired-leap-second-irrelevant - -作者:[Susan Linton][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://ostatic.com/member/susan-linton -[1]:http://www.wired.com/2015/01/torvalds_leapsecond/ -[2]:http://www.theregister.co.uk/2015/01/09/leap_second_bug_linux_hysteria/ \ No newline at end of file diff --git a/sources/talk/20150119 Linus Torvalds responds to Ars about diversity niceness in open source.md b/sources/talk/20150119 Linus Torvalds responds to Ars about diversity niceness in open source.md deleted file mode 100644 index b98e27eacf..0000000000 --- a/sources/talk/20150119 Linus Torvalds responds to Ars about diversity niceness in open source.md +++ /dev/null @@ -1,44 +0,0 @@ -Linus Torvalds responds to Ars about diversity, niceness in open source -================================================================================ -> Acknowledges diversity factors, says "we're different in so many other ways." - -![See, sometimes Linus isn't flicking people off.](http://cdn.arstechnica.net/wp-content/uploads/2013/09/linus-torvalds.jpg) -See, sometimes Linus isn't flicking people off. - -Athanasios Kasampalis - -On Thursday, Linux legend Linus Torvalds sent a lengthy statement to Ars Technica responding to [statements he made in Auckland, New Zealand earlier that day about diversity and "niceness"][2] in the open source sector. - -"What I wanted to say [at the keynote]—and clearly must have done very badly—is that one of the great things about open source is exactly the fact that different people are so different," Torvalds wrote via e-mail. "I think people sometimes look at it as being just 'programmers,' which is not true. It's about all the people who are more oriented toward commercial things, too. It's about all those people who are interested in legal issues—and the social ones, too!" - -Torvalds spoke to what he thought was a larger concept of "diversity" than what has been mentioned a lot in recent stories on the topic, including economic disparity, language, and culture (even between neighboring European countries). "There's a lot of talk about gender and sexual preferences and race, but we're different in so many other ways, too," he wrote. - -"'Open source' as a term and as a movement hasn't been about 'you have to be a believer,'" Torvalds added. "It's not a religion. It's not an 'us vs them' thing. We've been able to work with all those 'evil commercial interests' and companies who also do proprietary software. And I think that was one of the things that the Linux community (and others—don't get me wrong, it's not unique to us) did and does well." - -Torvalds also talked about progress since the GPL vs. BSD "flame wars" from the '80s and early '90s, saying that the open source movement brought more technology and less "ideology" to the sector. "Which is not to say that a lot of people aren't around because they believe it's the 'ethical' thing to do (I do myself too)," Torvalds added, "but you don't have to believe that, and you can just do it because it's the most fun, or the most efficient way to do technology development." - -### “This ‘you have to be nice’ seems very popular in the US” ### - -He then sent a second e-mail to Ars about the topic of "niceness" that came up during the keynote. He said that his return to his Auckland hotel was delayed by "like three hours" because of hallway conversations about this very topic. - -"I don't know where you happen to be based, but this 'you have to be nice' seems to be very popular in the US," Torvalds continued, calling the concept an "ideology." - -"The same way we have developers and marketing people and legal people who speak different languages, I think we can have some developers who are used to—and prefer—a more confrontational style, and still **also** have people who don't," he wrote. - -He lambasted the "brainstorming" model of having a criticism-free bubble to bounce ideas off of. "Maybe it works for some people, but I happen to simply not believe in it," he said. "I'd rather be really confrontational, and bad ideas should be [taken] down aggressively. Even good ideas need to be vigorously defended." - -"Maybe it's just because I like arguing," Torvalds added. "I'm just not a huge believer in politeness and sensitivity being preferable over bluntly letting people know your feelings. But I also understand that other people are driven away by cursing and crass language when it all gets a bit too carried away." To that point, Torvalds said that the open source movement might simply need more "people who are good at mediating," as opposed to asking developers to calm their own tone or attitude. - --------------------------------------------------------------------------------- - -via: http://arstechnica.com/business/2015/01/linus-torvalds-responds-to-ars-about-diversity-niceness-in-open-source/ - -作者:[Sam Machkovech][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://arstechnica.com/author/samred/ -[1]:https://secure.flickr.com/photos/12693492@N04/1338136415/in/photolist-33fikv-3jXFce-3ALpLy-4m6Shj-4pADUg-4pHwcW-4rNTR7-4GMhKc-4HM2qp-4JSHKa-4PomQo-4SKxMo-58LBYf-5iVNX6-5tXbB8-5xi67A-5A8rRc-5C8fAT-5Ccxjw-5EcYvx-5UoNTc-5UoVJK-5Uti6q-5UuiX2-5UuE2B-5UyEJu-5UyHMf-5UyJ2G-5UFbXP-5UFg8Z-5UFhwV-5UKDkG-5UKDP9-5UTHGv-5XM2s2-5YFmLu-65N31L-6pSwh7-6trmfx-6H2uZP-6JVV4V-71qkot-71BBbk-72vuYo-73j9yB-79aQ2a-79bfqe-79EKPH-79EXvD-79PuG5-7a4BxF -[2]:http://arstechnica.com/business/2015/01/linus-torvalds-on-why-he-isnt-nice-i-dont-care-about-you/ \ No newline at end of file diff --git a/sources/talk/20150122 Top 10 FOSS legal developments of 2014.md b/sources/talk/20150122 Top 10 FOSS legal developments of 2014.md deleted file mode 100644 index a97e4910c6..0000000000 --- a/sources/talk/20150122 Top 10 FOSS legal developments of 2014.md +++ /dev/null @@ -1,72 +0,0 @@ -Top 10 FOSS legal developments of 2014 -================================================================================ -![](http://opensource.com/sites/default/files/styles/image-full-size/public/images/law/LAW_PatentSpotlight_520x292_cm.png.png?itok=N-O9b4FW) - -Image by : opensource.com - -The year 2014 continued the trend of the increasing importance of legal issues for the FOSS community. Continuing [the tradition of looking back][1] over the top ten legal developments in FOSS, my selection of the top ten issues for 2014 is as follows: - -### 1. Courts interpret General Public License version 2 (GPLv2) ### - -The GPLv2 continues to be the most widely used and most important license for free and open source software. Black Duck Software estimates that 16 billion lines of code are licensed under the GPLv2. Despite its importance, the GPLv2 has been the subject of very few court decisions, and virtually all of the most important terms of the GPLv2 have not been interpreted by courts. This lack of court decisions is about to change due to the five interrelated cases arising from an attempt by Versata Software, Inc. (Versata) to terminate its software license to Ameriprise Financial, Inc. Versata’s product included software licensed by Ximpleware, Inc. (Ximpleware) under the GPLv2, but Versata had not complied with the terms of the GPLv2. Ximpleware sued Versata and eight of its customers for both copyright and patent infringement. (For a more detailed description of the facts [read this article][2].) This dispute is important because Ximpleware is the first commercial enforcer of the GPLv2 in which the courts are likely to issue decisions and Ximpleware is seeking monetary damages rather than compliance. - -### 2. GPL guides ### - -Two of the most important organizations enforcing the GPL family of licenses recently provided [guidance on compliance][3]: On October 31, the Software Freedom Law Center published the second version of their Practical Guide to GPL Compliance. Several days later, the Software Conservancy and the Free Software Foundation published the first version of their guide, the Copyleft, and the GNU General Public License: [A Comprehensive Tutorial and Guide][4]. These guides are required reading for anyone managing FOSS. - -### 3. EU Commission (EC) to revise FOSS policy ### - -Governments are one of the most important users of software but have had a mixed record in using and contributing to FOSS (free and open source software). The EC recently announced that it intends to remove the barriers that may hinder code contributions to FOSS projects. In particular, the EC wants to clarify legal aspects, including intellectual property rights, copyright, and which author or authors to name when submitting code to the upstream repositories. Pierre Damas, Head of Sector at the Directorate General for IT, [hopes that such clarification][5] will motivate many of the EC’s software developers and functionaries to promote the use of FOSS at the EC. - -### 4. Validation of FOSS business model by Hortonworks IPO ### - -Hortonworks provides services and support for the Hadoop data analysis software managed by the Apache Software Foundation. Hortonworks is one of three venture backed companies based on the Hadoop software. Hortonworks went public this fall and immediately rose 65% in share price, valuing the company at over $1 billion. The market for Hadoop products, software, and services is projected to reach $50.2 billion in 2020, up from $1.5 billion in 2012. - -### 5. Core Infrastructure Initiative ### - -The Linux Foundation put together [a consortium of companies][6] to support the many smaller open source projects that are critical to software ecosystem, such as OpenSSL. This effort was a response to the Heartbleed problem with OpenSSL in 2013, which I described in last year’s summary. This consortium is a great example of the ability of the FOSS community to come together to solve community problems. - -### 6. Linux SCO case terminated again ### - -The lawsuit by Santa Cruz Operations, Inc. (SCO) against IBM claiming that Linux includes Unix code was once a potentially major challenge to FOSS. Despite losing its suit against Novell, the bankruptcy court allowed SCO to continue its suit against IBM. I thought this case [had been concluded in 2008][7], but Judge Nuffer appears to have put the case to rest on December 15, 2014. He dismissed the case against IBM based on the decisions in the Novell case (although SCO could still appeal once again): - -*It is further ORDERED that, with respect to all remaining claims and counterclaims, SCO is bound by, and may not here re-litigate, the rulings in the Novell Judgment that Novell (not SCO) owns the copyrights to the pre-1996 UNIX source code, and that Novell waived SCO’s contract claims against IBM for alleged breaches of the licensing agreements pursuant to which IBM licensed such source code.* - -### 7. FOSS trademark issues ### - -The use of trademarks in FOSS projects continues to raise issues. This year brought the settlement of the dispute over the “Python” mark between the Python Software Foundation and Veber, a small hosting company in the UK. Veber had decided to use "Python" in branding certain of its products and services. In addition, the OpenStack Foundation is working through the application of trademarks to the OpenStack project through its [DefCore committee][8]. - -### 8. Use of FOSS by commercial companies expands ### - -We have discussed in the past how many large companies are using FOSS as an explicit strategy to build their software. Jim Zemlin, Executive Director of the Linux Foundation, has described this strategic use of FOSS as external “research and development.” His conclusions are supported by Gartner who noted that “the top tech companies are still spending tens of billions of dollars on software research and development, the smart ones are leveraging open source for 80 percent of the code and spending their money on the remaining 20 percent, which represents their program’s ‘special sauce.’” The scope of this trend was emphasized by Microsoft’s announcement that it was “open sourcing” the .NET software framework (this software is used by millions of developers to build and operate websites and other large online applications). - -### 9. Rockstar Consortium threat evaporates ### - -The Rockstar Consortium was formed by Microsoft, Blackberry, Ericsson, Sony, and Apple to exploit the 6,000 patents from Nortel Networks. The Rockstar Consortium sued Google for infringement of the Android operating system. This litigation was aimed at fundamental functions of the Android operating system and could have had a significant effect on the Android ecosystem. The Rockstar Consortium settled its litigation with Google this year, but then sold 4,000 of its patents to RPX, the patent defense firm (financed by a number of companies as well as RPX). The remaining patents were distributed to the members of the Rockstar Consortium. - -### 10. Android litigation ### - -The litigation surrounding Android continued this year, with significant developments in the patent litigation between Apple Computer, Inc. (Apple) and Samsung Electronics, Inc. (Samsung) and the copyright litigation over the Java APIs between Oracle Corporation (Oracle) and Google, Inc. (Google). Apple and Samsung have agreed to end patent disputes in nine countries, but they will continue the litigation in the US. As I stated last year, the Rockstar Consortium was a wild card in this dispute. However, the Rockstar Consortium settled its litigation with Google this year and sold off its patents, so it will no longer be a risk to the Android ecosystem. - -The copyright litigation regarding the copyrightability of the Java APIs was brought back to life by the Court of Appeals for the Federal Circuit (CAFC) decision which overturned [the District Court decision][9]. The District Court had found that Google was not liable for copyright infringement for its admitted copying of the Java APIs: the court found that the Java APIs were either not copyrightable or their use by Google was protected by various defenses to copyright. The CAFC overturned both the decision and the analysis and remanded the case to the District Court for a review of the fair use defense raised by Google. Subsequently, Google filed an appeal to the Supreme Court. The impact of a finding that Google was liable for copyright infringement in this case would have a dramatic effect on Android and, depending on the reasoning, would have a ripple effect across the interpretation of the scope of the “copyleft” terms of the GPL family of licenses which use APIs. - --------------------------------------------------------------------------------- - -via: http://opensource.com/law/15/1/top-foss-legal-developments-2014 - -作者:[Mark Radcliffe][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://opensource.com/users/mradcliffe -[1]:http://lawandlifesiliconvalley.com/blog/?p=853 -[2]:http://opensource.com/law/14/12/gplv2-court-decisions-versata -[3]:http://www.softwarefreedom.org/resources/ -[4]:http://www.copyleft.org/guide/ -[5]:https://joinup.ec.europa.eu/community/osor/news/european-commission-update-its-open-source-policy -[6]:http://www.linuxfoundation.org/programs/core-infrastructure-initiative -[7]:http://lawandlifesiliconvalley.com/blog/?m=200812 -[8]:https://wiki.openstack.org/wiki/Governance/CoreDefinition -[9]:http://law.justia.com/cases/federal/appellate-courts/cafc/13-1021/13-1021-2014-05-09.html \ No newline at end of file diff --git a/sources/talk/20150122 Top 10 open source projects of 2014.md b/sources/talk/20150122 Top 10 open source projects of 2014.md deleted file mode 100644 index edc81938d6..0000000000 --- a/sources/talk/20150122 Top 10 open source projects of 2014.md +++ /dev/null @@ -1,126 +0,0 @@ -Top 10 open source projects of 2014 -================================================================================ -![](http://opensource.com/sites/default/files/styles/image-full-size/public/images/life/top10_projects_lead.jpg?itok=tMZo2sYi) - -Image credits : [CC0 Public Domain][1], modifications by Jen Wike Huger - -Every year we collect the best of the best open source projects covered on Opensource.com. [Last year's list of 10 projects][2] guided people working and interested in tech throughout 2014. Now, we're setting you up for 2015 with a brand new list of accomplished open source projects. - -Some faces are new. Some have been around and just keep rocking it. Let's dive in! - -## Top 10 open source projects in 2014 ## - -### Docker ### - -[application container platform][3] - -"In the same way that power management and virtualisation has allowed us to get maximum engineering benefit from our server utilisation, the problem of how to really solve first world problems in virtualisation has remained prevalent. Docker's open sourcing in 2013 can really align itself with these pivotal moments in the evolution of open source—providing the extensible building blocks allowing us as engineers and architects to extend distributed platforms like never before." —Richard Morrell, [Senior software engineer Petazzoni on the breathtaking growth of Docker][4]. - -**Interview**: VP of Services for Docker talks to Jodi Biddle in [Why is Docker the new craze in virtualization and cloud computing?][5] "I think it's the lightweight nature of Docker combined with the workflow. It's fast, easy to use and a developer-centric DevOps-ish tool. Its mission is basically: make it easy to package and ship code." —James Turnbull. - -### Kubernetes ### - -[orchestration system for containers][6] - -"One of the projects you're starting to hear a lot about in the orchestration space is [Kubernetes][7], which came out of Google's internal container work. It aims to provide features such as high availability and replication, service discovery, and service aggregation." —Gordon Haff, [Open source accelerating the pace of software][8]. - -### Taiga ### - -[project management platform][9] - -"It’s almost always the case that the project management tool doesn’t reflect the actual project scenario. One solution to this is using a tool that is intuitive and fits alongside the developer's normal workflow. Additionally, a tool that is quick to update and attracts users to use it. [Taiga][10] is an open source project management tool that aims to solve the basic problem of software usability." —Nitish Tiwari, [Taiga, a new open source project management tool with focus on usability][11]. - -### Apache Mesos ### - -[cluster manager][12] - -"[Apache Mesos][13] is a cluster manager that provides efficient resource isolation and sharing across distributed applications or frameworks. It sits between the application layer and the operating system and makes it easier to deploy and manage applications in large-scale clustered environments more efficiently. It can run many applications on a dynamically shared pool of nodes. Prominent users of Mesos include Twitter, Airbnb, MediaCrossing, Xogito and Categorize. —Sachin P Bappalige, [Open source datacenter computing with Apache Mesos][14]. - -Interview: Head of Open Source at Twitter talks to Jason Hibbets in [Scale like Twitter with Apache Mesos][15]. "As of today, Twitter has over 270 million active users which produces 500+ million tweets a day, up to 150k+ tweets per second, and more than 100TB+ of compressed data per day. Architecturally, Twitter is mostly composed of services, mostly written in the open source project [Finagle][16], representing the core nouns of the platform such as the user service, timeline service, and so on. Mesos allows theses services to scale to tens of thousands of bare-metal machines and leverage a shared pool of servers across data centers." —Chris Aniszczyk - -### OpenStack ### - -[cloud computing platform][17] - -"As OpenStack continues to mature and slowly make its way into production environments, the focus on the user is continuing to grow. And so, to better meet the needs of users, the community is working hard to get users to meet the next step of engagement by highlighting those users who are change agents both in their organization and within the OpenStack community at large: the superusers." —Jason Baker, [What is an OpenStack superuser][18]? - -**Interview**: Infrastructure manager at CERN talks to Jason Hibbets in [How OpenStack powers the research at CERN][19]. "At CERN, the European Organization for Nuclear Research physicists and engineers are probing the fundamental structure of the universe. In order to do this, we use some of the world's largest and most complex scientific instruments such as the Large Hadron Collider, a 27 KM ring 100m underground on the border between France and Switzerland. OpenStack provides the infrastructure cloud which is used to provide much of the compute resources for this processing." —Tim Bell. - -### Ansible ### - -[IT automation tool][20] - -"A lot of what I want to do is enable people to not only have more free time for beer, but to have more free time for their own projects, their own ideas, and to do new an interesting things." —[Michael DeHaan, Making your IT infrastructure boring with Ansible][21]. - -**Interview**: CTO of Ansible talks to Jen Krieger in [Behind the scenes with CTO Michael DeHaan of Ansible][22]. "I like to quote Star Trek 2 a lot. We definitely optimize for 'the needs of the many'. I know Spock dies after he says that, but he does get to come back." —Michael DeHaan - -### ownCloud ### - -[cloud storage tool][23] - -"I was looking for an easy way how to have all my online storage services, such as Google Drive and Dropbox, integrated with my Linux desktop without using some nasty hack, and I finally have a solution that works. I'm here to share it with you. This is not rocket science really, all I did was a little bit of documentation reading, and a couple of clicks." —Jiri Folta, [Using ownCloud to integrate Dropbox, Google Drive, and more in Gnome][24]. - -**Listed**: Top 5 open source alternatives: "ownCloud does most everything that the proprietary names do and it keeps control of your information in your hands." —Scott Nesbitt, [Five open source alternatives to popular web apps][25]. - -### Apache Hadoop ### - -[framework for big data][26] - -"Apache Hadoop is an open source software framework for storage and large scale processing of data-sets on clusters of commodity hardware. Hadoop is an Apache top-level project being built and used by a global community of contributors and users. It is licensed under the Apache License 2.0." —Sachin P Bappalige, [An introduction to Apache Hadoop for big data][27]. - -### Drupal ### - -[content management system (CMS)][28] - -"When it was released in 2011, Drupal 7 was the most accessible open source content management system (CMS) available. I expect that this will be true until the release of Drupal 8. Web accessibility requires constant vigilance and will be something that will always need attention in any piece of software striving to meet the Web Content Accessibility Guidelines (WCAG) 2.0 guidelines." —Mike Gifford, [Drupal 8's accessibility advantage][29]. - -### OpenDaylight ### - -[foundation for software defined networking][30] - -"We are seeing more and more that the networking functions traditionally done in the datacenter by dedicated, almost exclusively proprietary hardware and software combinations, are now being defined through software. Leading that charge within the open source community has been the [OpenDaylight Project][31], a collaborative project through the [Linux Foundation][32] working to define the needs which software defined networking may fill and coordinating the efforts of individuals and companies worldwide to create an open source solution to software defined networking (SDN)." —Jason Baker, [Define your network in software with OpenDaylight][33]. - --------------------------------------------------------------------------------- - -via: http://opensource.com/business/14/12/top-10-open-source-projects-2014 - -作者:[Jen Wike Huger][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://opensource.com/users/jen-wike -[1]:http://pixabay.com/en/lightbulb-lamp-light-hotspot-336193/ -[2]:http://opensource.com/life/13/12/top-open-source-projects-2013 -[3]:https://www.docker.com/ -[4]:http://opensource.com/business/14/7/interview-jerome-petazzoni-docker -[5]:https://opensource.com/business/14/7/why-docker-new-craze-virtualization-and-cloud-computing -[6]:http://kubernetes.io/ -[7]:https://cloud.google.com/compute/docs/containers -[8]:http://opensource.com/business/14/11/open-source-accelerating-pace-software -[9]:https://taiga.io/ -[10]:https://github.com/taigaio -[11]:https://opensource.com/business/14/10/taiga-open-source-project-management-tool -[12]:http://mesos.apache.org/ -[13]:http://mesos.apache.org/ -[14]:https://opensource.com/business/14/9/open-source-datacenter-computing-apache-mesos -[15]:https://opensource.com/business/14/8/interview-chris-aniszczyk-twitter-apache-mesos -[16]:https://twitter.github.io/finagle/ -[17]:http://www.openstack.org/ -[18]:https://opensource.com/business/14/5/what-is-openstack-superuser -[19]:https://opensource.com/business/14/10/interview-tim-bell-cern-it-operating-systems -[20]:http://www.ansible.com/home -[21]:https://opensource.com/business/14/12/ansible-it-infrastructure -[22]:https://opensource.com/business/14/10/interview-michael-dehaan-ansible -[23]:http://owncloud.org/ -[24]:https://opensource.com/life/14/12/using-owncloud-integrate-dropbox-google-drive-gnome -[25]:https://opensource.com/life/14/10/five-open-source-alternatives-popular-web-apps -[26]:http://hadoop.apache.org/ -[27]:http://opensource.com/life/14/8/intro-apache-hadoop-big-data -[28]:https://www.drupal.org/ -[29]:http://opensource.com/business/14/5/new-release-drupal-8-accessibility-advantage -[30]:http://www.opendaylight.org/ -[31]:http://www.opendaylight.org/ -[32]:http://www.linuxfoundation.org/ -[33]:http://opensource.com/business/14/5/defining-your-network-software-opendaylight diff --git a/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md b/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md index e55c028ecd..276e5a05fa 100644 --- a/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md +++ b/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md @@ -1,5 +1,3 @@ -translating by coloka... - How to configure a syslog server with rsyslog on Linux ================================================================================ A syslog server represents a central log monitoring point on a network, to which all kinds of devices including Linux or Windows servers, routers, switches or any other hosts can send their logs over network. By setting up a syslog server, you can filter and consolidate logs from different hosts and devices into a single location, so that you can view and archive important log messages more easily. diff --git a/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md b/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md index 121f496d6a..2cba8c739f 100644 --- a/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md +++ b/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md @@ -1,4 +1,3 @@ -ideas4u is translating! 4 Steps to Setup Local Repository in Ubuntu using APT-mirror ================================================================================ Today we will show you how to setup a local repository in your Ubuntu PC or Ubuntu Server straight from the official Ubuntu repository. There are a lot benefit of creating a local repository in your computer if you have a lot of computers to install software, security updates and fixes often in all systems, then having a local Ubuntu repository is an efficient way. Because all required packages are downloaded over the fast LAN connection from your local server, so that it will save your Internet bandwidth and reduces the annual cost of Internet.. From 554e7cf7bd5f859f9a0d8654929f7ae506f09e57 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Feb 2015 13:43:42 +0800 Subject: [PATCH 330/725] PUB:20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4 @geekpi --- ...tall SSL on Apache 2.4 in Ubuntu 14.0.4.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) rename {translated/tech => published}/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md (61%) diff --git a/translated/tech/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md b/published/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md similarity index 61% rename from translated/tech/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md rename to published/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md index 6f5a53fdee..638bb2f67f 100644 --- a/translated/tech/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md +++ b/published/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md @@ -1,15 +1,14 @@ -如何在Ubuntu 14.04 上为Apache 2.4 安装SSL +如何在Ubuntu 14.04 上为Apache 2.4 安装SSL支持 ================================================================================ -今天我会站如如何为你的个人网站或者博客安装**SSL 证书**,来保护你的访问者和网站之间通信的安全。 +今天我会讲述如何为你的个人网站或者博客安装**SSL 证书**,来保护你的访问者和网站之间通信的安全。 -安全套接字层或称SSL,是一种加密网站和浏览器之间连接的标准安全技术。这确保服务器和浏览器之间传输的数据保持隐私和安全。这被成千上万的人使用来保护他们与客户的通信。要启用SSL链接,web服务器需要安装SSL证书。 +安全套接字层或称SSL,是一种加密网站和浏览器之间连接的标准安全技术。这确保服务器和浏览器之间传输的数据保持隐私和安全。它被成千上万的人使用来保护他们与客户的通信。要启用SSL链接,Web服务器需要安装SSL证书。 -你可以创建你自己的SSL证书,但是这默认不会被浏览器信任,要修复这个问题,你需要从受信任的证书机构(CA)处购买证书,我们会向你展示如何 -或者证书并在apache中安装。 +你可以创建你自己的SSL证书,但是这默认不会被浏览器所信任,要解决这个问题,你需要从受信任的证书机构(CA)处购买证书,我们会向你展示如何获取证书并在apache中安装。 ### 生成一个证书签名请求 ### -证书机构(CA)会要求你在你的服务器上生成一个证书签名请求(CSR)。这是一个很简单的过程,只需要一会就行,你需要运行下面的命令并输入需要的信息: +证书机构(CA)会要求你在你的服务器上生成一个证书签名请求(CSR)。这是一个很简单的过程,只需要一会儿就行,你需要在你的服务器上运行下面的命令并输入需要的信息: # openssl req -new -newkey rsa:2048 -nodes -keyout yourdomainname.key -out yourdomainname.csr @@ -17,13 +16,13 @@ ![generate csr](http://blog.linoxide.com/wp-content/uploads/2015/01/generate-csr.jpg) -这一步会生成两个文件按:一个用于解密SSL证书的私钥文件,一个证书签名请求(CSR)文件(用于申请你的SSL证书)。 +这一步会生成两个文件:一个用于解密SSL证书的私钥文件,一个证书签名请求(CSR)文件(用于申请你的SSL证书)。 -根据你申请的机构,你会需要上传csr文件或者在网站表格中粘帖他的内容。 +根据你申请的机构,你会需要上传csr文件或者在网站表格中粘帖该文件内容。 ### 在Apache中安装实际的证书 ### -生成步骤完成之后,你会收到新的数字证书,本篇教程中我们使用[Comodo SSL][1]并在一个zip文件中收到了证书。要在apache中使用它,你首先需要用下面的命令为收到的证书创建一个组合的证书: +生成步骤完成之后,你会收到新的数字证书。本篇教程中我们使用[Comodo SSL][1],并在一个它发给我们的zip文件中收到了证书。要在apache中使用它,你首先需要用下面的命令用收到的证书创建一个组合的证书: # cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > bundle.crt @@ -48,12 +47,12 @@ 你现在应该可以用https://YOURDOMAIN/(注意使用‘https’而不是‘http’)来访问你的网站了,并可以看到SSL的进度条了(通常在你浏览器中用一把锁来表示)。 -**NOTE:** All the links must now point to https, if some of the content on the website (like images or css files) still point to http links you will get a warning in the browser, to fix this you have to make sure that every link points to https. -**注意:** 现在所有的链接都必须指向https,如果网站上的一些内容(像图片或者css文件等)仍旧指向http链接的话,你会在浏览器中得到一个警告,要修复这个问题,请确保每个链接都指向了https。 + +**注意:** 现在所有的内容链接都必须指向https,如果网站上的一些内容(像图片或者css文件等)仍旧指向http链接的话,你会在浏览器中得到一个警告,要修复这个问题,请确保每个链接都指向了https。 ### 在你的网站上重定向HTTP请求到HTTPS中 ### -如果你希望重定向常规的HTTP请求到HTTPS,添加下面的文本到你希望的虚拟主机或者如果希望给服务器上所有网站都添加的话就加入到apache.conf中: +如果你希望重定向常规的HTTP请求到HTTPS,添加下面的文本到你希望修改的虚拟主机,或者如果希望给服务器上所有网站都添加的话就加入到apache.conf中: RewriteEngine On RewriteCond %{HTTPS} off @@ -65,7 +64,7 @@ via: http://linoxide.com/ubuntu-how-to/install-ssl-apache-2-4-in-ubuntu/ 作者:[Adrian Dinu][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From f46f79cf0f9f2d816c399d1ed93455f83b13de14 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Feb 2015 14:31:31 +0800 Subject: [PATCH 331/725] PUB:20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7 @GOLinux --- ...ution Installations in RHEL or CentOS 7.md | 105 +++++++++++------- 1 file changed, 64 insertions(+), 41 deletions(-) rename {translated/tech => published}/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md (86%) diff --git a/translated/tech/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md b/published/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md similarity index 86% rename from translated/tech/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md rename to published/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md index db3cd3b706..046cee4f98 100644 --- a/translated/tech/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md +++ b/published/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md @@ -1,12 +1,13 @@ RHEL/CentOS 7中配置用于多版本Linux安装的“PXE网络启动服务器” ================================================================================ -**PXE服务器**——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录CD/DVD或使用某个物理介质,它也可以减轻你网络中多台机器同时安装Linux发行版的工作。 +**PXE服务器**——预启动执行环境——指示客户端计算机直接从网络接口启动、运行或安装操作系统,而不需要烧录CD/DVD或使用某个物理介质,它可以减轻你网络中多台机器同时安装Linux发行版的工作。 ![Setting PXE Network Boot in RHEL/CentOS 7](http://www.tecmint.com/wp-content/uploads/2014/10/Setting-PXE-Network-Boot-in-CentOS.png) -在RHEL/CentOS 7中设置PXE网络启动 -#### 需求 #### +*在RHEL/CentOS 7中设置PXE网络启动* + +#### 前置阅读 #### - [CentOS 7最小化安装步骤][1] - [RHEL 7最小化安装步骤][2] @@ -14,7 +15,7 @@ RHEL/CentOS 7中配置用于多版本Linux安装的“PXE网络启动服务器 - [移除RHEL/CentOS 7中不要的服务][4] - [安装NTP服务器以设置RHEL/CentOS 7的正确时间][5] -本文将介绍如何在配置有本地镜像安装仓库的**RHEL/CentOS 7** 64位上安装并配置一台**PXE服务器**,仓库源由CentOS 7 DVD ISO镜像提供,并由**DNSMASQ**服务器提供解析。 +本文将介绍如何在配置有本地镜像安装仓库的**RHEL/CentOS 7** 64位上安装并配置一台**PXE服务器**,仓库源由CentOS 7 DVD 的 ISO镜像提供,并由**DNSMASQ**服务器提供解析。 该机器提供了**DNS**和**DHCP**服务,用于网络启动引导的**Syslinux**包,**TFTP-Server**——提供了可通过网络使用**小文件传输协议**下载的可启动镜像,以及提供本地挂载DVD镜像的**VSFTPD**服务器——它将扮演官方RHEL/CentOS 7镜像安装仓库的角色,安装器将从这里提取所需的包。 @@ -27,11 +28,12 @@ RHEL/CentOS 7中配置用于多版本Linux安装的“PXE网络启动服务器 # yum install dnsmasq ![Install dnsmasq Package](http://www.tecmint.com/wp-content/uploads/2014/10/Install-dnsmasq-in-CentOS.jpg) -安装dnsmasq包 -**2.** DNSMASQ的默认主配置文件位于**/etc**目录中,虽然不需要任何说明就能看懂,但编辑起来确实相当困难的,即使有很详细的说明性注释。 +*安装dnsmasq包* -首先,确保你备份了该文件,以便你需要在以后对它进行恢复。然后使用你喜爱的文本编辑器创建一个新的空配置文件,命令如下。 +**2.** DNSMASQ的默认的主配置文件位于**/etc**目录中,虽然不需要任何说明就能看懂,但编辑起来确实相当困难的,即使有很详细的说明性注释。 + +首先,确保你备份了该文件,以便你需要在以后对它进行恢复。然后使用你爱用的文本编辑器创建一个新的空配置文件,命令如下。 # mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup # nano /etc/dnsmasq.conf @@ -61,7 +63,8 @@ RHEL/CentOS 7中配置用于多版本Linux安装的“PXE网络启动服务器 tftp-root=/var/lib/tftpboot ![Dnsmasq Configuration](http://www.tecmint.com/wp-content/uploads/2014/10/dnsmasq-configuration.jpg) -Dnsmasq配置 + +*Dnsmasq配置* 你需要修改的声明有以下这些: @@ -89,14 +92,16 @@ Dnsmasq配置 # yum install syslinux ![Install Syslinux Bootloaders](http://www.tecmint.com/wp-content/uploads/2014/10/install-syslinux-bootloaders.jpg) -安装Syslinux启动加载器 + +*安装Syslinux启动加载器* **5.** PXE启动加载器文件位于**/usr/share/syslinux**系统绝对路径下,你可以通过列出该路径下的内容来查看。该步骤不是必须的,但你可能需要知道该路径,因为在下一步中,我们将拷贝该路径下的所有内容到**TFTP服务器**路径下。 # ls /usr/share/syslinux ![Syslinux Files](http://www.tecmint.com/wp-content/uploads/2014/10/syslinux-files.jpg) -Syslinux文件 + +*Syslinux文件* ### 步骤3: 安装TFTP-Server并加入SYSLINUX加载启动器 ### @@ -106,7 +111,8 @@ Syslinux文件 # cp -r /usr/share/syslinux/* /var/lib/tftpboot ![Install TFTP Server](http://www.tecmint.com/wp-content/uploads/2014/10/install-tftp-server.jpg) -安装TFTP服务器 + +*安装TFTP服务器* ### 步骤4: 设置PXE服务器配置文件 ### @@ -117,13 +123,13 @@ Syslinux文件 # mkdir /var/lib/tftpboot/pxelinux.cfg # touch /var/lib/tftpboot/pxelinux.cfg/default -**8.** 现在,该来编辑**PXE服务器**配置文件了,为它添加合法的Linux发行版安装选项。请注意,该文件中使用的所有路径必须是相对于**/var/lib/tftpboot**目录的。 +**8.** 现在,该来编辑**PXE服务器**配置文件了,为它添加合理的Linux发行版安装选项。请注意,该文件中使用的所有路径必须是相对于**/var/lib/tftpboot**目录的。 -下面,你可以看到配置文件的样例,你可以使用该模板,但请修改安装镜像(kernel和initrd文件)、协议(FTP、HTTP、HTTPS、NFS)以及映射你网络安装源仓库和路径的IP地址。 +下面,你可以看到配置文件的样例,你可以使用该模板,但请修改安装镜像(kernel和initrd文件)、协议(FTP、HTTP、HTTPS、NFS)以及映射你网络安装源仓库和路径的IP地址等参数。 # nano /var/lib/tftpboot/pxelinux.cfg/default -添加一下整个节录到文件中。 +添加以下整个节录到文件中。 default menu.c32 prompt 0 @@ -151,17 +157,18 @@ Syslinux文件 menu label ^4) Boot from local drive ![Configure PXE Server](http://www.tecmint.com/wp-content/uploads/2014/10/configure-pxe-server.jpg) -配置PXE服务器 + +*配置PXE服务器* 正如你所见,CentOS 7启动镜像(kernel和initrd)位于名为**centos7**的目录,该目录是**/var/lib/tftpboot**目录的相对路径(其系统绝对路径为**/var/lib/tftpboot/centos7**),而安装器仓库位于可通过FTP协议访问的**192.168.1.20/pub**网络位置中——在本例中,这些仓库位于本地,因为IP地址和PXE服务器地址相同。 同时,菜单**label 3**指定客户端安装应该通过**VNC**从一个远程位置实现(这里替换VNC密码为一个健壮的密码),如果你在一台没有输入输出的客户端上安装,菜单**label 2**指定了作为安装源的一个CentOS 7官方互联网镜像(这种情况要求客户端通过DHCP和NAT连接到互联网)。 -**重要**:正如你在上述配置中说看到的,我们使用了CentOS 7进行演示,但是你也可以定义RHEL 7镜像。而下面的完整说明和配置都只是基于CentOS 7的,所以在选在发行版时要当心。 +**重要**:正如你在上述配置中所看到的,我们使用了CentOS 7进行演示,但是你也可以定义一个 RHEL 7镜像。而下面的整个的说明和配置都只是基于CentOS 7的,所以在选发行版时要注意一下。 ### 步骤5: 添加CentOS 7启动镜像到PXE服务器 ### -**9.** 对于此步骤,需要用到CentOS的kernel和initrd文件。要获取这些文件,你需要**CentOS 7 DVD ISO**镜像。所以,去下载CentOS DVD镜像吧,然后把它放入你的DVD驱动器并挂载镜像到**/mnt**路径,命令见下面。 +**9.** 对于此步骤,需要用到CentOS的kernel和initrd文件。要获取这些文件,你需要**CentOS 7 DVD ISO**镜像。所以,去下载CentOS DVD镜像吧,然后把它(刻录成光盘)放入你的DVD驱动器并挂载镜像到**/mnt**路径,命令见下面。 使用DVD,而不是最小化CD镜像的原因在于,在后面我们将使用该DVD的内容为**FTP**源创建本地安装器仓库。 @@ -169,27 +176,29 @@ Syslinux文件 # ls /mnt ![Mount CentOS DVD](http://www.tecmint.com/wp-content/uploads/2014/10/mount-centos-dvd.jpg) -挂载CentOS DVD + +*挂载CentOS DVD* 如果你的机器没有DVD驱动器,你也可以使用**wget**或**curl**工具从[CentOS镜像站][7]下载**CentOS 7 DVD ISO**到本地并挂载。 # wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso # mount -o loop /path/to/centos-dvd.iso /mnt -**10.** 在DVD内容可供使用后,创建**centos7**目录并将CentOS 7可启动kernel和initrd映像文件从DVD挂载位置拷贝到centos7文件夹。 +**10.** 在DVD内容可供使用后,创建**centos7**目录并将CentOS 7 的可启动的 kernel和initrd映像文件从DVD挂载位置拷贝到centos7文件夹。 # mkdir /var/lib/tftpboot/centos7 # cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7 # cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7 ![Copy CentOS Bootable Files](http://www.tecmint.com/wp-content/uploads/2014/10/copy-centos-bootable-files.jpg) -拷贝CentOS可启动文件 + +*拷贝CentOS可启动文件* 使用该方法的原因在于,今后你可能会在**/var/lib/tftpboot**路径中创建新的独立的目录,并添加其它Linux发行版到PXE菜单中,你就不会将整个目录结构弄得一团糟了。 ### 步骤6: 创建CentOS 7本地镜像安装源 ### -**11.** 虽然你可以通过多种协议设置**安装源镜像**,如HTTP、HTTPS或NFS,但对于本指南,我选择使用**FTP**协议。因为通过**vsftpd**,你可以很便捷地配置,而且它也很稳定。 +**11.** 虽然你可以通过多种协议设置**安装源镜像**,如HTTP、HTTPS或NFS,但对于本指南,我选择了使用**FTP**协议。因为通过**vsftpd**,你可以很便捷地配置,而且它也很稳定。 接下里,安装vsftpd进程,然后复制所有DVD挂载目录中的内容到**vsftpd**默认服务器路径下(**/var/ftp/pub**)——这会花费一些时间,这取决于你的系统资源。然后为该路径设置可读权限,命令如下。 @@ -198,17 +207,20 @@ Syslinux文件 # chmod -R 755 /var/ftp/pub ![Install Vsftpd Server](http://www.tecmint.com/wp-content/uploads/2014/10/install-vsftpd-in-centos.jpg) -安装Vsftpd服务器 + +*安装Vsftpd服务器* ![Copy Files to FTP Path](http://www.tecmint.com/wp-content/uploads/2014/10/copy-files-to-ftp-path.jpg) -拷贝Files到FTP路径 + +*拷贝Files到FTP路径* ![Set Permissions on FTP Path](http://www.tecmint.com/wp-content/uploads/2014/10/set-permission-on-ftp-path.jpg) -设置FTP路径的权限 + +*设置FTP路径的权限* ### 步骤7: 在系统范围内启动并启用进程 ### -**12.** 既然PXE服务器配置已经完成,那么就来启动**DNSMASQ**和**VSFTPD**服务器吧。验证它们的状况并在系统范围内启用,以便让这些服务在每次系统重启后都能随系统启动,命令如下。 +**12.** 既然PXE服务器配置已经完成,那么就来启动**DNSMASQ**和**VSFTPD**服务器吧。验证它们的状况并在系统上启用,以便让这些服务在每次系统重启后都能随系统启动,命令如下。 # systemctl start dnsmasq # systemctl status dnsmasq @@ -218,10 +230,12 @@ Syslinux文件 # systemctl enable vsftpd ![Start Dnsmasq Service](http://www.tecmint.com/wp-content/uploads/2014/10/start-dnsmasq.jpg) -启动Dnsmasq服务 + +*启动Dnsmasq服务* ![Start Vsftpd Service](http://www.tecmint.com/wp-content/uploads/2014/10/start-vsftpd.jpg) -启动Vsftpd服务 + +*启动Vsftpd服务* ### 步骤8: 打开防火墙并测试FTP安装源 ### @@ -236,53 +250,62 @@ Syslinux文件 # firewall-cmd --reload ## Apply rules ![Check Listening Ports](http://www.tecmint.com/wp-content/uploads/2014/10/check-listening-ports.jpg) -检查监听端口 + +*检查监听端口* ![Open Ports in Firewall](http://www.tecmint.com/wp-content/uploads/2014/10/open-ports-on-firewall.jpg) -在防火墙上开启端口 + +*在防火墙上开启端口* **14.** 要测试FTP安装源网络路径,请在本地或另外一台计算机上打开浏览器([**lynx**][8]就可以做此事),然后输入你架设有FTP服务的PXE服务器的IP地址,并在填入的URL后面加上**/pub**网络位置,结果应该和截图中看到的一样。 ftp://192.168.1.20/pub ![Access FTP Files via Browser](http://www.tecmint.com/wp-content/uploads/2014/10/browse-ftp-files.jpg) -通过浏览器访问FTP文件 + +*通过浏览器访问FTP文件* **15.** 要解决PXE服务器最终的配置或其它信息产生的问题,请在live模式下诊断,命令如下: # tailf /var/log/messages ![Check PXE Logs for Errors](http://www.tecmint.com/wp-content/uploads/2014/10/check-pxe-errors.jpg) -检查PXE日志错误 -**16.** 最后,最后所需的步骤就是卸载CentOS 7 DVD,并移除物理介质。 +*检查PXE日志错误* + +**16.** 最后,最终所需的步骤就是卸载CentOS 7 DVD,并移除物理介质。 # umount /mnt ### 步骤9: 配置客户端从网络启动 ### -**17.** 现在,你的客户端可以通过它们的系统BIOS或在**BIOS开机自检**时按指定键来配置网络启动作为**首要启动设备**,具体方法见主板说明手册。 +**17.** 现在,你的客户端可以通过它们的系统BIOS或在**BIOS开机自检**时按指定键来配置网络启动作为**首选启动设备**,具体方法见主板说明手册。 为了选择网络启动,在第一次PXE提示符出现时,请按下**F8**键进入到PXE安装界面,然后敲**回车**键继续进入PXE菜单。 ![PXE Network Boot](http://www.tecmint.com/wp-content/uploads/2014/10/pxe-network-boot.jpg) -PXE网络启动 + +*PXE网络启动* ![PXE Network OS Boot](http://www.tecmint.com/wp-content/uploads/2014/10/pxe-network-os-boot.jpg) -PXE网络OS启动 + +*PXE网络OS启动* **18.** 一旦你进入PXE菜单,请选择你的CentOS 7安装类型,敲**回车**键继续安装过程,就像你使用本地启动介质安装一样。 -请记下这一点,使用菜单中的变体2需要激活目标客户端上的互联网连接。在下面的屏幕截图中,你可以通过VNC看到远程安装的实例。 +请记住这一点,使用菜单中的变体2需要激活目标客户端上的互联网连接。在下面的屏幕截图中,你可以通过VNC看到远程安装的实例。 ![PXE Menu](http://www.tecmint.com/wp-content/uploads/2014/10/pxe-menu.jpg) -PXE菜单 + +*PXE菜单* ![Remote Linux Installation via VNC](http://www.tecmint.com/wp-content/uploads/2014/10/os-installation-via-vnc.jpg) -通过VNC远程安装Linux + +*通过VNC远程安装Linux* ![Remote Installation of CentOS](http://www.tecmint.com/wp-content/uploads/2014/10/remote-centos-installation.jpg) -远程安装CentOS + +*远程安装CentOS* 以上是**CentOS 7**上配置最小化**PXE服务器**的所有内容。在我的本系列下一篇文章中,我将讨论其它PXE服务器配置过程中的其它问题,如怎样使用**Kickstart**文件来配置自动化安装**CentOS 7**,以及添加其它Linux发行版到PXE菜单——**Ubuntu Server**和**Debian 7**。 @@ -292,14 +315,14 @@ via: http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/ 作者:[Matei Cezar][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.tecmint.com/author/cezarmatei/ [1]:http://www.tecmint.com/centos-7-installation/ [2]:http://www.tecmint.com/redhat-enterprise-linux-7-installation/ -[3]:http://www.tecmint.com/configure-network-interface-in-rhel-centos-7-0/ +[3]:http://linux.cn/article-3977-1.html [4]:http://www.tecmint.com/remove-unwanted-services-in-centos-7/ [5]:http://www.tecmint.com/install-ntp-server-in-centos/ [6]:http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html From 0bc12034fd138b8006aab8f3fcd25ed2beb9388b Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Feb 2015 14:43:58 +0800 Subject: [PATCH 332/725] PUB:20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7 @GOLinux --- ...t Environment Setup on RHEL or CentOS 7.md | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) rename {translated/tech => published}/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md (91%) diff --git a/translated/tech/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md b/published/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md similarity index 91% rename from translated/tech/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md rename to published/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md index 35936459d3..e131acbbc7 100644 --- a/translated/tech/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md +++ b/published/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md @@ -1,24 +1,26 @@ 添加Ubuntu 14.10,Ubuntu 14.04和Debian 7到RHEL/CentOS 7的PXE网络启动环境 ================================================================================ 本教程将指引你添加**Ubuntu 14.10 Server, Ubuntu 14.04 Server**和**Debian 7 Wheezy**发行版到**RHEL/CentOS 7**的PXE网络启动环境中。 + ![Add Ubuntu and Debian to PXE Network](http://www.tecmint.com/wp-content/uploads/2014/11/Add-Ubuntu-and-Debian-to-PXE.png) -添加Ubuntu和Debian到PXE网络 + +*添加Ubuntu和Debian到PXE网络* 虽然对于本教程,我只会演示怎样来添加**64位**网络安装镜像,但对于Ubuntu或者Debian的**32位**系统,或者其它架构的镜像,操作步骤也基本相同。同时,就我而言,我会解释添加Ubuntu 32位源的方法,但不会演示配置。 从PXE服务器安装 **Ubuntu**或者**Debian**要求你的客户机必须激活网络连接,最好是使用**DHCP**通过**NAT**来进行动态分配地址。以便安装器拉取所需的包并完成安装过程。 -#### 需求 #### +#### 前置阅读 #### - [在RHEL/CentOS 7中为多种Linux发行版安装PXE网络启动服务器][1] ## 步骤 1: 添加Ubuntu 14.10和Ubuntu 14.04服务器到PXE菜单 ## -**1.** 为**Ubuntu 14.10**和**Ubuntu 14.04**添加网络安装源到PXE菜单可以通过两种方式实现:其一是通过下载Ubuntu CD ISO镜像并挂载到PXE服务器机器上以便可以读取Ubuntu网络启动文件,其二是通过直接下载Ubuntu网络启动归档包并将其解压缩到系统中。下面,我将进一步讨论这两种方法: +**1.** 要将**Ubuntu 14.10**和**Ubuntu 14.04**添加网络安装源到PXE菜单可以通过两种方式实现:其一是通过下载Ubuntu CD ISO镜像并挂载到PXE服务器机器上,以便可以读取Ubuntu网络启动文件,其二是通过直接下载Ubuntu网络启动归档包并将其解压缩到系统中。下面,我将进一步讨论这两种方法: ### 使用Ubuntu 14.10和Ubuntu 14.04 CD ISO镜像 ### -为了能使用此方法,你的PXE服务器需要有一台可工作的CD/DVD驱动器。在一台专有计算机上,转到[Ubuntu 14.10下载][2]和[Ubuntu 14.04 下载][3]页,获取64位**服务器安装镜像**,将它烧录到CD,并将CD镜像放到PXE服务器DVD/CD驱动器,然后使用以下命令挂载到系统。 +为了能使用此方法,你的PXE服务器需要有一台可工作的CD/DVD驱动器(LCTT 译注:也可以不用,参考下面内容)。在一台专用的计算机上,转到[Ubuntu 14.10下载][2]和[Ubuntu 14.04 下载][3]页,获取64位**服务器安装镜像**,将它烧录到CD,并将CD镜像放到PXE服务器DVD/CD驱动器,然后使用以下命令挂载到系统。 # mount /dev/cdrom /mnt @@ -160,16 +162,20 @@ 下面是**Ubuntu 14.04**PXE客户端安装测试的截图。 ![Select Ubuntu from PXE Menu](http://www.tecmint.com/wp-content/uploads/2014/11/Select-Ubuntu-from-PXE-Menu.jpg) -从PXE菜单选择Ubuntu + +*从PXE菜单选择Ubuntu* ![Choose Ubuntu Installation Language](http://www.tecmint.com/wp-content/uploads/2014/11/Select-Ubuntu-Installation-Language.jpg) -选择Ubuntu安装语言 + +*选择Ubuntu安装语言* ![Choose Ubuntu Rescue Mode](http://www.tecmint.com/wp-content/uploads/2014/11/Select-Ubuntu-Rescue-Mode.jpg) -选择Ubuntu救援模式 + +*选择Ubuntu救援模式* ![Ubuntu Rescue Mode Shell](http://www.tecmint.com/wp-content/uploads/2014/11/Ubuntu-Rescue-Mode-Shell.jpg) -Ubuntu救援模式Shell + +*Ubuntu救援模式Shell* ## 步骤 2: 添加Debian 7 Wheezy到PXE菜单 ## @@ -184,7 +190,8 @@ Ubuntu救援模式Shell # wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz ![Download Debain 7 Netboot](http://www.tecmint.com/wp-content/uploads/2014/11/Download-Debain-7-Netboot.jpg) -下载Debian 7网络启动包 + +*下载Debian 7网络启动包* **6.** 在**wget**下载完成**netboot.tar.gz**文件后,请将其解压缩并运行以下命令拷贝**debian-installer**目录到tftp服务器默认路径。 @@ -192,10 +199,12 @@ Ubuntu救援模式Shell # cp -rf debian-installer/ /var/lib/tftpboot/ ![Extract Debain 7 Netboot](http://www.tecmint.com/wp-content/uploads/2014/11/Extract-Debain-7-Netboot.jpg) -解压缩Debian 7网络启动包 + +*解压缩Debian 7网络启动包* ![Copy Debain 7 Netboot to FTP](http://www.tecmint.com/wp-content/uploads/2014/11/Copy-Debain-7-Netboot-to-FTP.jpg) -拷贝Debian 7网络启动文件到FTP + +*拷贝Debian 7网络启动文件到FTP* **7.** 要添加**Debian Wheezy**标签到**PXE菜单**,请用你最喜爱的文本编辑器打开PXE服务器默认配置文件并添加以下标签。 @@ -214,7 +223,8 @@ Debian Wheezy 64位的PXE标签菜单。 append auto=true priority=critical vga=788 initrd=debian-installer/amd64/initrd.gz -- quiet ![Add Debian to PXE Boot](http://www.tecmint.com/wp-content/uploads/2014/11/Add-Debian-to-PXE-Boot.jpg) -添加Debian到PXE启动 + +*添加Debian到PXE启动* **注**:如果你想要添加其它Debian架构,请重复上述步骤,并相应替换PXE默认菜单配置文件中的标签号和**debian-installer/$architecture_name/**目录。 @@ -225,10 +235,12 @@ Debian Wheezy 64位的PXE标签菜单。 **9.** 然后通过网络启动一台客户机,选择从PXE菜单安装Debian,并像正常安装一样进一步下去。 ![Select Install Debian from PXE](http://www.tecmint.com/wp-content/uploads/2014/11/Select-Install-Debian-from-PXE.jpg) -选择从PXE安装Debian + +*选择从PXE安装Debian* ![Select Debian Install Language](http://www.tecmint.com/wp-content/uploads/2014/11/Select-Debian-Install-Language.jpg) -选择Debian安装语言 + +*选择Debian安装语言* 以上是要求添加并从RHEL/CentOS 7 PXE服务器安装**Ubuntu**或**Debian**到客户机上的全部步骤。在我的下一篇文章中,我将讨论一种更为复杂的方法,如何使用RHEL/CentOS 7 PXE网络启动服务器来安装**Windows 7**到客户机。 @@ -243,7 +255,7 @@ via: http://www.tecmint.com/add-ubuntu-to-pxe-network-boot/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.tecmint.com/author/cezarmatei/ -[1]:http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/ +[1]:http://linux.cn/article-4902-1.html [2]:http://releases.ubuntu.com/14.10/ [3]:http://releases.ubuntu.com/14.04/ [4]:http://cdimage.ubuntu.com/netboot/14.10/ From 5fcce05c1d49e59276e4688c4fb057492635397f Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Feb 2015 21:06:28 +0800 Subject: [PATCH 333/725] PUB:20141219 How to block unwanted IP addresses on Linux efficiently @geekpi --- ...anted IP addresses on Linux efficiently.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) rename {translated/tech => published}/20141219 How to block unwanted IP addresses on Linux efficiently.md (75%) diff --git a/translated/tech/20141219 How to block unwanted IP addresses on Linux efficiently.md b/published/20141219 How to block unwanted IP addresses on Linux efficiently.md similarity index 75% rename from translated/tech/20141219 How to block unwanted IP addresses on Linux efficiently.md rename to published/20141219 How to block unwanted IP addresses on Linux efficiently.md index 5d45755066..feb53945b0 100644 --- a/translated/tech/20141219 How to block unwanted IP addresses on Linux efficiently.md +++ b/published/20141219 How to block unwanted IP addresses on Linux efficiently.md @@ -1,6 +1,7 @@ -如何在Linux有效地屏蔽不需要的IP +如何在 Linux 下大量屏蔽恶意 IP 地址 ================================================================================ -你可能需要在Linux的不同的环境下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的生产邮件服务器。或者你因一些原因想要禁止某些国家访问web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个? + +很多情况下,你可能需要在Linux下屏蔽IP地址。比如,作为一个终端用户,你可能想要免受间谍软件或者IP追踪的困扰。或者当你在运行P2P软件时。你可能想要过滤反P2P活动的网络链接。如果你是一名系统管理员,你可能想要禁止垃圾IP地址访问你们的公司邮件服务器。或者你因一些原因想要禁止某些国家访问你的web服务。在许多情况下,然而,你的IP地址屏蔽列表可能会很快地增长到几万的IP。该如何处理这个? ### Netfilter/IPtables 的问题 ### @@ -8,11 +9,11 @@ $ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP -如果你想要完全屏蔽一个IP地址,你可以用下面的命令很简单地做到: +如果你想要完全屏蔽一个IP地址段,你可以用下面的命令很简单地做到: $ sudo iptables -A INPUT -s 1.1.2.0/24 -p TCP -j DROP -然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然无法扩展。 +然而,当你有1000个独立IP地址,且不带CIDR(无类别域间路由)前缀,你该怎么做?你要有1000条iptable规则!这显然这并不适于大规模屏蔽。 $ sudo iptables -A INPUT -s 1.1.1.1 -p TCP -j DROP $ sudo iptables -A INPUT -s 2.2.2.2 -p TCP -j DROP @@ -21,13 +22,13 @@ ### 什么是IP集? ### -这时候就是[IP集][1]登场了。IP集是一个内核特性,它允许多个(独立)IP地址、MAC地址或者甚至是端口号编码并有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后,你可以创建一条iptable规则来匹配这个集合。 +这时候就是[IP集][1]登场了。IP集是一个内核特性,它允许多个(独立)IP地址、MAC地址或者甚至是端口号被编码和有效地存储在位图/哈希内核数据结构中。一旦IP集创建之后,你可以创建一条iptables规则来匹配这个集合。 -你应该马上看见IP集合的好处了,它可以让你用一条iptable规则匹配多个ip地址!你可以用多个IP地址和端口号的方式来构造IP集,并且可以动态地更新规则而没有请能影响。 +你马上就会看见IP集合的好处了,它可以让你用一条iptable规则匹配多个ip地址!你可以用多个IP地址和端口号的方式来构造IP集,并且可以动态地更新规则而没有性能影响。 ### 在Linux中安装IPset工具 ### -为了创建和管理IP集,你需要使用成为ipset的用户空间工具。 +为了创建和管理IP集,你需要使用称为ipset的用户空间工具。 要在Debian、Ubuntu或者Linux Mint上安装: @@ -45,7 +46,7 @@ Fedora或者CentOS/RHEL 7上安装: $ sudo ipset create banthis hash:net -第二个参数(hash:net)是必须的,代表的是集合的类型。IP集有[多个类型][2]。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储独立的IP地址,你可以使用hash:ip类型。 +第二个参数(hash:net)是必须的,代表的是集合的类型。IP集有[多个类型][2]。hash:net类型的IP集使用哈希来存储多个CIDR块。如果你想要在一个集合中存储单独的IP地址,你可以使用hash:ip类型。 一旦创建了一个IP集之后,你可以用下面的命令来检查: @@ -70,25 +71,25 @@ Fedora或者CentOS/RHEL 7上安装: ![](https://farm8.staticflickr.com/7518/15380353474_4d6b9dbf63_z.jpg) -现在是时候去创建一个使用IP集的iptable规则了。这里的关键是使用"-m set --match-set "选项。 +现在是时候去创建一个使用IP集的iptables规则了。这里的关键是使用"-m set --match-set "选项。 现在让我们创建一条让之前那些IP块不能通过80端口访问web服务的iptable规则。可以通过下面的命令: $ sudo iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP -如果你想,你可以保存特定的IP集到一个文件中,以后可以从文件中还原: +如果你愿意,你可以保存特定的IP集到一个文件中,以后可以从文件中还原: $ sudo ipset save banthis -f banthis.txt $ sudo ipset destroy banthis $ sudo ipset restore -f banthis.txt -上面的命令中,我使用了destory选项来删除一个已有的IP集来见证我可以还原它。 +上面的命令中,我使用了destory选项来删除一个已有的IP集来看看我是否可以还原它。 ### 自动IP地址禁用 ### -现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上,有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是,让我们看看如何自动将IP黑名单家到IP集中。 +现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上,有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是,让我们看看如何自动将IP黑名单加到IP集中。 -首先让我们从[iblocklist.com][3]抓取免费的黑名单,这个网站u有不同的免费和收费的名单。免费的版本是P2P格式。 +首先让我们从[iblocklist.com][3]得到免费的黑名单,这个网站有不同的免费和收费的名单。免费的版本是P2P格式。 接下来我要使用一个名为iblocklist2ipset的开源Python工具来将P2P格式的黑名单转化成IP集。 @@ -131,14 +132,13 @@ Fedora或者CentOS/RHEL 7上安装: $ sudo ipset list banthis - 在写这篇文章时候,“level1”类表包含了237,000个屏蔽的IP列表。你可以看到很多IP地址已经加入到IP集中了。 -最后,创建一条iptable命令来屏蔽它们! +最后,创建一条iptables命令来屏蔽这些坏蛋! ### 总结 ### -这篇文章中,我描述了你该如何用强大的ipset来·屏蔽不想要的IP地址。同时结合了第三方工具iblocklist2ipset,这样你就可以流畅地维护你的IP屏蔽列表了。对于那些对于ipset的速度提升好奇的人来说,下图显示了iptables在使用和不使用ipset的基准测试结果。 +这篇文章中,我描述了你该如何用强大的ipset来屏蔽不想要的IP地址。同时结合了第三方工具iblocklist2ipset,这样你就可以流畅地维护你的IP屏蔽列表了。那些对ipset的性能提升好奇的人,下图显示了iptables在使用和不使用ipset的基准测试结果。 ![](https://farm8.staticflickr.com/7575/15815220998_e1935c94c0_z.jpg) @@ -150,7 +150,7 @@ via: http://xmodulo.com/block-unwanted-ip-addresses-linux.html 作者:[Dan Nanni][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c33a123fa4aeb41d73be960fbad70ca59b87ad94 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 18 Feb 2015 15:25:09 +0800 Subject: [PATCH 334/725] PUB:20141224 Linux FAQs with Answers--How to rename multiple files on Linux @geekpi --- ...rs--How to rename multiple files on Linux.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) rename {translated/tech => published}/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md (67%) diff --git a/translated/tech/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md b/published/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md similarity index 67% rename from translated/tech/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md rename to published/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md index 24120bd386..d804bd390e 100644 --- a/translated/tech/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md +++ b/published/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md @@ -1,21 +1,20 @@ -Linux有问必答-- 如何在Linux重命名多个文件 +Linux有问必答:如何在Linux下重命名多个文件 ================================================================================ > **提问**:我知道我可以用mv命令重命名文件。但是当我想重命名很多文件怎么办?如果为每个文件都这么做将会是很乏味的。有没有办法一次性重命名多个文件? -在Linux中,当你想要改变一个文件名,使用mv命令就好了。然而mv不能使用通配符重命名多个文件。可以用sed、awk或者与[xargs][1]结合使用来处理多个文件的情况。然而,这些命令行即繁琐u又不友好,并且如果不小心的话还很容易出错。你不会想要撤销1000个文件的错误名的。 +在Linux中,当你想要改变一个文件名,使用mv命令就好了。然而mv不能使用通配符重命名多个文件。可以用sed、awk或者与[xargs][1]结合使用来处理多个文件的情况。然而,这些命令行即繁琐又不友好,并且如果不小心的话还很容易出错。你不会想要撤销1000个文件的错误名吧! -When it comes to renaming multiple files, the rename utility is probably the easiest, the safest, and the most powerful command-line tool. The rename command is actually a Perl script, and comes pre-installed on all modern Linux distributions. -当你想要重命名多个文件的时候,重命名的工具或许是最简单、最安全和最强大的命令行工具。重命名命令实际上是一个Perl脚本,它预安装在所有的现在Linux发行班上 +当你想要重命名多个文件的时候,rename 工具或许是最简单、最安全和最强大的命令行工具。这个rename命令实际上是一个Perl脚本,它预安装在所有的现在Linux发行版上。 下面是重命名命令的基本语法。 rename [-v -n -f] - 是Perl兼容正则表达式,它表示的是要重命名的文件和该怎么做。正则表达式的形式是‘s/old-name/new-name/’。 +\ 是Perl兼容正则表达式,它表示的是要重命名的文件和该怎么做。正则表达式的形式是‘s/old-name/new-name/’。 ‘-v’选项会显示文件名改变的细节(比如:XXX重命名成YYY)。 -‘-n’选项告诉rename会在不实际改变名称的情况下显示文件将会重命名的情况。这个选项在你想要在不改变文件名的情况下模拟改变文件名的情况下很有用。 +‘-n’选项告诉rename命令在不实际改变名称的情况下显示文件将会重命名的情况。这个选项在你想要在不改变文件名的情况下模拟改变文件名的情况下很有用。 ‘-f’选项强制覆盖存在的文件。 @@ -43,7 +42,7 @@ When it comes to renaming multiple files, the rename utility is probably the eas ### 更改文件名模式 ### -现在让我们考虑包含子模式的更复杂的正则表达式。在PCRE中,子模式包含在圆括号中,$符后接上数字(比如$1,$2)。 +现在让我们考虑更复杂的包含子模式的正则表达式。在PCRE中,子模式包含在圆括号中,$符后接上数字(比如$1,$2)。 比如,下面的命令会将‘img_NNNN.jpeg’变成‘dan_NNNN.jpg’。 @@ -57,7 +56,7 @@ When it comes to renaming multiple files, the rename utility is probably the eas img_5420.jpeg renamed as dan_5420.jpg img_5421.jpeg renamed as dan_5421.jpg -比如,下面的命令会将‘img_000NNNN.jpeg’变成‘dan_NNNN.jpg’。 +比如,下面的命令会将‘img\_000NNNN.jpeg’变成‘dan\_NNNN.jpg’。 # rename -v 's/img_\d{3}(\d{4})\.jpeg$/dan_$1\.jpg/' *jpeg @@ -76,7 +75,7 @@ When it comes to renaming multiple files, the rename utility is probably the eas via: http://ask.xmodulo.com/rename-multiple-files-linux.html 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 71bf51d050f76070804488fcb7f9dc686456075a Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 18 Feb 2015 15:31:59 +0800 Subject: [PATCH 335/725] PUB:20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17 @Vic020 --- ...all Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename {translated/tech => published}/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md (92%) diff --git a/translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md b/published/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md similarity index 92% rename from translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md rename to published/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md index 61202528a9..64e065fa5b 100644 --- a/translated/tech/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md +++ b/published/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md @@ -2,14 +2,14 @@ ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Kodi_Xmas.jpg) -[Kodi][1],原名就是大名鼎鼎的XBMC,发布[最新版本14][2],命名为Helix。感谢官方XMBC提供的PPA,现在可以很简单地在Ubuntu14.04中安装了。 +[Kodi][1],原名就是大名鼎鼎的XBMC,发布了开发代号为Helix的[最新版本14][2]。感谢官方XMBC提供的PPA,现在可以很简单地在Ubuntu14.04中安装了。 有些人可能还不了解Kodi,它是一个媒体中心软件,支持所有平台,如Windows、Linux、 Mac, Android等。此软件拥有全屏的媒体中心,可以管理所有音乐和视频,不单支持本地文件还支持网络播放,如Tube、[Netflix][3]、 Hulu, Amazon Prime和其他流媒体服务商。 ### 在 Ubuntu 14.04 和 Linux Mint 17 中安装 XBMC 14 Kodi Helix ### -再次感谢官方的PPA,让我们可以轻松安装Kodi 14。 -支持Ubuntu 14.04、Ubuntu 12.04、Linux Mint 17、Pinguy OS 14.04、Deepin 2014、LXLE 14.04、Linux Lite 2.0, Elementary OS 以及其他基于 Ubuntu 的 Linux 发行版。 +再次感谢官方的PPA,让我们可以轻松安装Kodi 14。支持Ubuntu 14.04、Ubuntu 12.04、Linux Mint 17、Pinguy OS 14.04、Deepin 2014、LXLE 14.04、Linux Lite 2.0, Elementary OS 以及其他基于 Ubuntu 的 Linux 发行版。 + 打开终端(Ctrl+Alt+T)然后使用下列命令。 sudo add-apt-repository ppa:team-xbmc/ppa @@ -31,6 +31,7 @@ sudo add-apt-repository --remove ppa:team-xbmc/ppa 我希望这篇简单的文章可以帮助到你在Ubuntu、Linux Mint 和其他 Linux 版本中轻松安装 Kodi 14。你是怎么发现 Kodi 14 Helix 的? + 你有没有使用其他的媒体中心来作为 XBMC 的替代?可以在下面的评论区分享你的观点。 -------------------------------------------------------------------------------- From fbdce4f657062bfb0893bc305f7b1876b7f893df Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 18 Feb 2015 15:45:50 +0800 Subject: [PATCH 336/725] translating --- sources/share/20150209 Non-Linux FOSS--Homebrew.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150209 Non-Linux FOSS--Homebrew.md b/sources/share/20150209 Non-Linux FOSS--Homebrew.md index bb385737f3..23a59a2ff2 100644 --- a/sources/share/20150209 Non-Linux FOSS--Homebrew.md +++ b/sources/share/20150209 Non-Linux FOSS--Homebrew.md @@ -1,3 +1,5 @@ +Translating---geekpi + Non-Linux FOSS: Homebrew ================================================================================ I use OS X quite often during my day job. I'm able to tolerate it largely due to the terminal. If I couldn't do my work with green text on a black background, I think I'd go crazy (or crazier). Unfortunately, OS X doesn't come with all the command-line tools I need. That's where Homebrew comes in to save the day. @@ -21,4 +23,4 @@ via: http://www.linuxjournal.com/content/non-linux-foss-homebrew 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.linuxjournal.com/users/shawn-powers -[1]:http://brew.sh/ \ No newline at end of file +[1]:http://brew.sh/ From a511692fa569490e0b159408ae8b6cb16d5b76e2 Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 18 Feb 2015 16:01:00 +0800 Subject: [PATCH 337/725] translated --- .../20150209 Non-Linux FOSS--Homebrew.md | 26 ------------------- .../20150209 Non-Linux FOSS--Homebrew.md | 24 +++++++++++++++++ 2 files changed, 24 insertions(+), 26 deletions(-) delete mode 100644 sources/share/20150209 Non-Linux FOSS--Homebrew.md create mode 100644 translated/share/20150209 Non-Linux FOSS--Homebrew.md diff --git a/sources/share/20150209 Non-Linux FOSS--Homebrew.md b/sources/share/20150209 Non-Linux FOSS--Homebrew.md deleted file mode 100644 index 23a59a2ff2..0000000000 --- a/sources/share/20150209 Non-Linux FOSS--Homebrew.md +++ /dev/null @@ -1,26 +0,0 @@ -Translating---geekpi - -Non-Linux FOSS: Homebrew -================================================================================ -I use OS X quite often during my day job. I'm able to tolerate it largely due to the terminal. If I couldn't do my work with green text on a black background, I think I'd go crazy (or crazier). Unfortunately, OS X doesn't come with all the command-line tools I need. That's where Homebrew comes in to save the day. - -![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11811fossf1.png) - -Homebrew acts like the package management system OS X is lacking. Using commands very similar to apt-get, it allows the installation of hundreds of applications. A perfect example is the wget program. I was surprised to find that OS X doesn't include wget, but with Homebrew, it's a simple one-liner away. - -The best part is that Homebrew installs everything in the /usr/local file space. There's no reason to worry about Homebrew corrupting your system, because it doesn't touch anything outside of /usr/local. OS X system updates won't overwrite your programs, and because /usr/local/bin is already in the PATH, installed Homebrew apps just work! - -Homebrew uses Ruby to manage its packages and functions, but it doesn't require any programming knowledge to use. And the installation procedure is literally a copy/paste on the command line. If you use OS X, but you wish you could install packages as easily as in Linux, give Homebrew a try: [http://brew.sh][1]. - --------------------------------------------------------------------------------- - -via: http://www.linuxjournal.com/content/non-linux-foss-homebrew - -作者:[Shawn Powers][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.linuxjournal.com/users/shawn-powers -[1]:http://brew.sh/ diff --git a/translated/share/20150209 Non-Linux FOSS--Homebrew.md b/translated/share/20150209 Non-Linux FOSS--Homebrew.md new file mode 100644 index 0000000000..a6f30ec50e --- /dev/null +++ b/translated/share/20150209 Non-Linux FOSS--Homebrew.md @@ -0,0 +1,24 @@ +非Linux的免费开源软件:Homebrew +================================================================================ +我日常工作中使用的是OS X。我能容忍它很大程序上是因为它的终端。如果我不能在黑色背景绿色文字的终端下工作,我想我会疯了。不幸的是,OS Xmei没有我需要的全部命令行工具。Homebrew的到来拯救了这。 + +![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11811fossf1.png) + +Homebrew扮演了OS X中缺乏的包管理器的角色。命令的使用很像apt-get,它能够安装无数的应用。一个最好的例子是wget。我很惊讶OS X中没有包含wget,但是homebrew中有,这是最简单的一套了 + +最棒的是homebrew在/usr/local文件夹下安装软件。你不必担心homebrew会破坏你的系统,因为它不会访问/usr/local之外的其他文件。OSX系统更新不会覆盖你的程序,并且/usr/local/bin已经在PATH中,使用homebrew安装的程序可以直接工作。 + +homebrew使用ruby管理它的包和功能,但是使用它不需要任何编程知识。并且安装过程只需要在命令行中复制粘贴就好了。如果你使用的是OS X,但是你希望像在Linux中那样方便地安装熬,就试一试homrbrew吧:[http://brew.sh][1]。 + +-------------------------------------------------------------------------------- + +via: http://www.linuxjournal.com/content/non-linux-foss-homebrew + +作者:[Shawn Powers][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxjournal.com/users/shawn-powers +[1]:http://brew.sh/ From 53ff38ea21d4d3ede0227a4c83df875c1f1e941a Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 18 Feb 2015 16:08:44 +0800 Subject: [PATCH 338/725] PUB:20150104 Auditd--Tool for Security Auditing on Linux Server @shipsw --- ...l for Security Auditing on Linux Server.md | 79 +++++++++++-------- 1 file changed, 46 insertions(+), 33 deletions(-) rename {translated/tech => published}/20150104 Auditd--Tool for Security Auditing on Linux Server.md (73%) diff --git a/translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md b/published/20150104 Auditd--Tool for Security Auditing on Linux Server.md similarity index 73% rename from translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md rename to published/20150104 Auditd--Tool for Security Auditing on Linux Server.md index 1071e1521b..3e528fffa6 100644 --- a/translated/tech/20150104 Auditd--Tool for Security Auditing on Linux Server.md +++ b/published/20150104 Auditd--Tool for Security Auditing on Linux Server.md @@ -1,14 +1,14 @@ Auditd - Linux 服务器安全审计工具 ================================================================================ -首先,Linoxide组祝读者 **2015新年快乐万事如意!** 。下面开始这个新年版审计工具的介绍。 +首先,Linux中国祝贺读者 **2015羊年春节快乐,万事如意!** 。下面开始这个新年版审计工具的介绍。 -安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要维护它。安全防护包括很多东西,审计是其中一个。 +安全防护是首先要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。 -我们知道Linux系统上有一个叫 **auditd** 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。审计工具是什么?如何使用?下面我们开始介绍。 +我们知道Linux系统上有一个叫 **auditd** 的审计工具。这个工具在大多数Linux操作系统中是默认安装的。那么auditd 是什么?如何使用呢?下面我们开始介绍。 ### 什么是审计? ### -审计(或审计监控)是Linux审计系统中用户部分的一个组件,负责将审计记录写入磁盘。 +auditd(或 auditd 守护进程)是Linux审计系统中用户空间的一个组件,其负责将审计记录写入磁盘。 ![](http://blog.linoxide.com/wp-content/uploads/2014/12/what_is_auditd.png) @@ -20,16 +20,17 @@ Ubuntu系统中,我们可以使用 [wajig][1] 工具或者 **apt-get 工具** 按照下面的说明安装auditd,安装完毕后将自动安装以下auditd和相关的工具: -- **auditctl ;** 运行过程中控制守护进程的工具,比如如添加规则等等。 -- **/etc/audit/audit.rules ;** 记录审计规则的文件。 -- **aureport ;** 查看和生成审计报告的工具。 -- **ausearch ;** 查找审计事件的工具 -- **auditspd ;** 转发事件通知给其他应用程序,不写审计日志文件。 -- **autrace ;** 跟踪处理过程的命令。 -- **/etc/audit/auditd.conf ;** auditd工具的配置文件。 -- 首次安装 **auditd** 后, 审计规则是空的。 +- **auditctl :** 即时控制审计守护进程的行为的工具,比如如添加规则等等。 +- **/etc/audit/audit.rules :** 记录审计规则的文件。 +- **aureport :** 查看和生成审计报告的工具。 +- **ausearch :** 查找审计事件的工具 +- **auditspd :** 转发事件通知给其他应用程序,而不是写入到审计日志文件中。 +- **autrace :** 一个用于跟踪进程的命令。 +- **/etc/audit/auditd.conf :** auditd工具的配置文件。 -可以使用以下命令查看 +首次安装 **auditd** 后, 审计规则是空的。 + +可以使用以下命令查看: $ sudo auditctl -l @@ -41,7 +42,7 @@ Ubuntu系统中,我们可以使用 [wajig][1] 工具或者 **apt-get 工具** #### Audit 文件和目录访问审计 #### -我们使用审计工具的一个目的是监控文件和目录的更改。对于auditd工具,我们可使用命令来配置(注意,以下命令需要root权限)。 +我们使用审计工具的一个基本的需求是监控文件和目录的更改。使用auditd工具,我们可通过如下命令来配置(注意,以下命令需要root权限)。 **文件审计** @@ -51,9 +52,9 @@ Ubuntu系统中,我们可以使用 [wajig][1] 工具或者 **apt-get 工具** **选项 :** -- **-w path ;** 监控指定的路径,上面的命令指定监控路径 /etc/passwd -- **-p ; ** 指定触发审计的文件和目录的访问权限 -- **rwxa ;** 指定的触发条件,r 读取权限,w 写入权限,x 执行权限 +- **-w path :** 指定要监控的路径,上面的命令指定了监控的文件路径 /etc/passwd +- **-p :** 指定触发审计的文件/目录的访问权限 +- **rwxa :** 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr) #### 目录审计 #### @@ -79,31 +80,41 @@ Ubuntu系统中,我们可以使用 [wajig][1] 工具或者 **apt-get 工具** $ sudo ausearch -f /etc/passwd -- **-f** 设定ausearch审计/etc/passwd文件 -- 下面是输出 : +- **-f** 设定ausearch 调出 /etc/passwd文件的审计内容 + +下面是输出 : + > **time**->Mon Dec 22 09:39:16 2014 + > type=PATH msg=audit(1419215956.471:194): item=0 **name="/etc/passwd"** inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL + > type=CWD msg=audit(1419215956.471:194): **cwd="/home/pungki"** + > type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 **syscall=5** success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 **auid=4294967295 uid=1000 gid=1000** euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295 **comm="sudo" exe="/usr/bin/sudo"** key=(null) 下面开始解读输出结果。 -- **time ;** 审计时间。 -- **name ;** 审计对象 -- **cwd ;** 当前路径 -- **syscall ;** 相关的系统调用 -- **auid ;** 审计用户ID -- **uid and gid ;** 访问文件的用户ID和用户组ID -- **comm ;** 用户访问文件的命令 -- **exe ;** 上面命令的可执行文件路径 -- 以上审计日志显示文件未被改动。 +- **time :** 审计时间。 +- **name :** 审计对象 +- **cwd :** 当前路径 +- **syscall :** 相关的系统调用 +- **auid :** 审计用户ID +- **uid 和 gid :** 访问文件的用户ID和用户组ID +- **comm :** 用户访问文件的命令 +- **exe :** 上面命令的可执行文件路径 - 以下我们将要添加一个用户,看看auditd如何记录文件 /etc/passwd的改动的。 +以上审计日志显示文件未被改动。 + +以下我们将要添加一个用户,看看auditd如何记录文件 /etc/passwd的改动的。 > **time->**Mon Dec 22 11:25:23 2014 + > type=PATH msg=audit(1419222323.628:510): item=1 **name="/etc/passwd.lock"** inode=143992 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=DELETE + > type=PATH msg=audit(1419222323.628:510): item=0 **name="/etc/"** inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT + > type=CWD msg=audit(1419222323.628:510): **cwd="/root"** + > type=SYSCALL msg=audit(1419222323.628:510): arch=40000003 **syscall=10** success=yes exit=0 a0=bfc0ceec a1=0 a2=bfc0ceec a3=897764c items=2 ppid=2978 pid=2994 **auid=4294967295 uid=0 gid=0** euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 **comm="chfn" exe="/usr/bin/chfn"** key=(null) 我们可以看到,在指定的时间,**/etc/passwd ** 被root用户(uid =0, gid=0)在/root目录下修改。/etc/passwd 文件是使用**/usr/bin/chfn** 访问的。 @@ -133,7 +144,7 @@ Ubuntu系统中,我们可以使用 [wajig][1] 工具或者 **apt-get 工具** 一旦定义审计规则后,它会自动运行。过一段时间后,我们可以看看auditd是如何帮我们跟踪审计的。 -Auditd提供了另一个工具叫 **aureport** 。从名字上可以猜到, **aureport** 是使用系统日志生成简要报告的工具。 +Auditd提供了另一个工具叫 **aureport** 。从名字上可以猜到, **aureport** 是使用系统审计日志生成简要报告的工具。 我们已经配置auditd去跟踪/etc/passwd文件。auditd参数设置后一段时间后,audit.log 文件就创建出来了。 @@ -155,7 +166,7 @@ Auditd提供了另一个工具叫 **aureport** 。从名字上可以猜到, * 从上图可以看出,由两个用户在特定的时间授权失败。 -如果我们想看所有相关账户修改的事件,可以使用-m参数。 +如果我们想看所有账户修改相关的事件,可以使用-m参数。 $ sudo aureport -m @@ -165,8 +176,10 @@ Auditd提供了另一个工具叫 **aureport** 。从名字上可以猜到, * 我们已经添加如下规则: +- $ sudo auditctl -w /etc/passwd -p rwxa - $ sudo auditctl -w /production/ -- 现在,如果确信这些规则正常,我们可以将其添加到**/etc/audit/audit.rules**中使得规则永久有效。以下介绍如何将他们添加到/etc/audit/audit.rules中去。 + +现在,如果确信这些规则可以正常工作,我们可以将其添加到**/etc/audit/audit.rules**中使得规则永久有效。以下介绍如何将他们添加到/etc/audit/audit.rules中去。 ![](http://blog.linoxide.com/wp-content/uploads/2014/12/audit_rules_file.png) @@ -192,7 +205,7 @@ via: http://linoxide.com/how-tos/auditd-tool-security-auditing/ 作者:[Pungki Arianto][a] 译者:[shipsw](https://github.com/shipsw) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 9fdc9f9324b786499a0b5d1b9d5ff905a38fb8ac Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 19 Feb 2015 12:31:11 +0800 Subject: [PATCH 339/725] Update 20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇文章。 --- ...teps to Setup Local Repository in Ubuntu using APT-mirror.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md b/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md index 2cba8c739f..f3a5a451d6 100644 --- a/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md +++ b/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md @@ -1,3 +1,5 @@ +Translating by FSSlc + 4 Steps to Setup Local Repository in Ubuntu using APT-mirror ================================================================================ Today we will show you how to setup a local repository in your Ubuntu PC or Ubuntu Server straight from the official Ubuntu repository. There are a lot benefit of creating a local repository in your computer if you have a lot of computers to install software, security updates and fixes often in all systems, then having a local Ubuntu repository is an efficient way. Because all required packages are downloaded over the fast LAN connection from your local server, so that it will save your Internet bandwidth and reduces the annual cost of Internet.. From 00d1c52258a3bb3427ef2ede55d854dcc441df7e Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 19 Feb 2015 15:10:23 +0800 Subject: [PATCH 340/725] translating --- ...wo Google Chrome Icons From Dock In Elementary OS Freya.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md index cccee5971a..e8c39f25cf 100644 --- a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md +++ b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md @@ -1,3 +1,5 @@ +Translating---geekpi + Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya [Quick Tip] ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) @@ -52,4 +54,4 @@ via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ [a]:http://itsfoss.com/author/abhishek/ [1]:http://elementary.io/ -[2]:http://midori-browser.org/ \ No newline at end of file +[2]:http://midori-browser.org/ From 91ff15cfe0f15e2bb7f775ed75d08034e594415d Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 19 Feb 2015 15:27:52 +0800 Subject: [PATCH 341/725] translated --- ... Icons From Dock In Elementary OS Freya.md | 57 ------------------- ... Icons From Dock In Elementary OS Freya.md | 56 ++++++++++++++++++ 2 files changed, 56 insertions(+), 57 deletions(-) delete mode 100644 sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md create mode 100644 translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md diff --git a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md deleted file mode 100644 index e8c39f25cf..0000000000 --- a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md +++ /dev/null @@ -1,57 +0,0 @@ -Translating---geekpi - -Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya [Quick Tip] -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) - -This quick tip shows you **how to get rid of two Google Chrome icons from the dock in Elementary OS Freya**. - -I hardly use the default Midori browser in [Elementary OS][1] Freya as Google Chrome is my main browser across all OSes. While [Midori][2] is kept in the dock by default, you’ll have to search for Google Chrome in Slingshot (applications) every time you want to open Google Chrome. To save time, I presume you have selected the “keep in dock” option for a quick access to Chrome. - -The problem here is that when you click on the Chrome icon in the dock, it creates another instance of Google Chrome. This leaves you with two Chrome icons in the docks and this is something that might be ignored by many but definitely an annoyance and against the design. If you share the same feeling, let’s see how can we remove the second Google Chrome icon. - -### Remove two Google Chrome icons from dock in Elementary OS Freya ### - -#### Step 1: #### - -Remove Google Chrome from the dock. - -#### Step 2: #### - -Open the terminal and use the following command: - - cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications - -#### Step 3: #### - -Next we need to edit the google-chrome.desktop file. Use the following commands: - - scratch-text-editor ~/.local/share/applications/google-chrome.desktop - -It will open the google-chrome.desktop file in Scratch for editing. Under the [Desktop Entry] section, add the following line: - - StartupWMClass=Google-chrome-stable - -It will look a bit like this: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) - -#### Step 4: #### - -Go to Slingshot and open Google Chrome again. Do select “keep in dock” again. Close it and start it again to verify that it doesn’t open a new Chrome instance in the dock. No reboot of system is required here. - -I hope this quick tip helped you to remove multiple Google Chrome icons from dock in Elementary OS Freya. Feel free to ask your questions and drop your suggestions in the comment below. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://elementary.io/ -[2]:http://midori-browser.org/ diff --git a/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md new file mode 100644 index 0000000000..19bb495231 --- /dev/null +++ b/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md @@ -0,0 +1,56 @@ +如何避免在ELemetary OS Freya中出现两个Google Chrome 图标[快速提示] +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) + +这篇文章会教你**如何避免在ELemetary OS Freya中出现两个Google Chrome 图标**。 + +Chrome才是我在所有系统中使用的主浏览器。而[Modori][2]默认在dock中,你不得不每次在使用Chrome时在Slingshot中搜索Google Chrome。为了节省时间,我假设你选择的是“保持在dock”中。 + +这里的问题是当你点击dock中的Chrome图标时,它会创建另外一个Google Chrome的实例。这就在dock中留下两个Chrome图标,这个或许可以被忽略但是很显然这是设计上的一个干扰。如果你有相同的感受,让我们看下如何移除这第二个Google Chrome图标。 + +### 在Elementary OS Freya的dock中删除第二个Google Chrome 图标 ### + +#### 第一步: #### + +从dock中删除Google Chrome。 + +#### 第二步: #### + +打开终端并使用下面的命令: + + cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications + +#### 第三步: #### + +接下来我们要编辑google-chrome.destop文件。使用下面的命令: + + scratch-text-editor ~/.local/share/applications/google-chrome.desktop + +这会用Scratch打开google-chrome.destop文件。在[Desktop Entry]段落下,加入下面的行: + + + StartupWMClass=Google-chrome-stable + +看上去像这样: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) + +#### 第四步: #### + +进入Slingshot并且再次打开Google Chrome。再次选择“keep in dock”。关闭并重启来验证它是否在dock中打开了另外一个新的Chrome实例。这里不需要重启系统。 + +我希望这篇提示能够帮助你删除Elementary OS Freya中多出的Chrome图标。有任何问题或建议让我在评论区中知道。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://elementary.io/ +[2]:http://midori-browser.org/ From 7babd7fd76adf4482bca0b121bee07c0d821ec11 Mon Sep 17 00:00:00 2001 From: zheng Date: Thu, 19 Feb 2015 15:31:43 +0800 Subject: [PATCH 342/725] Revert "translated" This reverts commit 91ff15cfe0f15e2bb7f775ed75d08034e594415d. --- ... Icons From Dock In Elementary OS Freya.md | 57 +++++++++++++++++++ ... Icons From Dock In Elementary OS Freya.md | 56 ------------------ 2 files changed, 57 insertions(+), 56 deletions(-) create mode 100644 sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md delete mode 100644 translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md diff --git a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md new file mode 100644 index 0000000000..e8c39f25cf --- /dev/null +++ b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md @@ -0,0 +1,57 @@ +Translating---geekpi + +Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya [Quick Tip] +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) + +This quick tip shows you **how to get rid of two Google Chrome icons from the dock in Elementary OS Freya**. + +I hardly use the default Midori browser in [Elementary OS][1] Freya as Google Chrome is my main browser across all OSes. While [Midori][2] is kept in the dock by default, you’ll have to search for Google Chrome in Slingshot (applications) every time you want to open Google Chrome. To save time, I presume you have selected the “keep in dock” option for a quick access to Chrome. + +The problem here is that when you click on the Chrome icon in the dock, it creates another instance of Google Chrome. This leaves you with two Chrome icons in the docks and this is something that might be ignored by many but definitely an annoyance and against the design. If you share the same feeling, let’s see how can we remove the second Google Chrome icon. + +### Remove two Google Chrome icons from dock in Elementary OS Freya ### + +#### Step 1: #### + +Remove Google Chrome from the dock. + +#### Step 2: #### + +Open the terminal and use the following command: + + cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications + +#### Step 3: #### + +Next we need to edit the google-chrome.desktop file. Use the following commands: + + scratch-text-editor ~/.local/share/applications/google-chrome.desktop + +It will open the google-chrome.desktop file in Scratch for editing. Under the [Desktop Entry] section, add the following line: + + StartupWMClass=Google-chrome-stable + +It will look a bit like this: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) + +#### Step 4: #### + +Go to Slingshot and open Google Chrome again. Do select “keep in dock” again. Close it and start it again to verify that it doesn’t open a new Chrome instance in the dock. No reboot of system is required here. + +I hope this quick tip helped you to remove multiple Google Chrome icons from dock in Elementary OS Freya. Feel free to ask your questions and drop your suggestions in the comment below. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://elementary.io/ +[2]:http://midori-browser.org/ diff --git a/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md deleted file mode 100644 index 19bb495231..0000000000 --- a/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md +++ /dev/null @@ -1,56 +0,0 @@ -如何避免在ELemetary OS Freya中出现两个Google Chrome 图标[快速提示] -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) - -这篇文章会教你**如何避免在ELemetary OS Freya中出现两个Google Chrome 图标**。 - -Chrome才是我在所有系统中使用的主浏览器。而[Modori][2]默认在dock中,你不得不每次在使用Chrome时在Slingshot中搜索Google Chrome。为了节省时间,我假设你选择的是“保持在dock”中。 - -这里的问题是当你点击dock中的Chrome图标时,它会创建另外一个Google Chrome的实例。这就在dock中留下两个Chrome图标,这个或许可以被忽略但是很显然这是设计上的一个干扰。如果你有相同的感受,让我们看下如何移除这第二个Google Chrome图标。 - -### 在Elementary OS Freya的dock中删除第二个Google Chrome 图标 ### - -#### 第一步: #### - -从dock中删除Google Chrome。 - -#### 第二步: #### - -打开终端并使用下面的命令: - - cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications - -#### 第三步: #### - -接下来我们要编辑google-chrome.destop文件。使用下面的命令: - - scratch-text-editor ~/.local/share/applications/google-chrome.desktop - -这会用Scratch打开google-chrome.destop文件。在[Desktop Entry]段落下,加入下面的行: - - - StartupWMClass=Google-chrome-stable - -看上去像这样: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) - -#### 第四步: #### - -进入Slingshot并且再次打开Google Chrome。再次选择“keep in dock”。关闭并重启来验证它是否在dock中打开了另外一个新的Chrome实例。这里不需要重启系统。 - -我希望这篇提示能够帮助你删除Elementary OS Freya中多出的Chrome图标。有任何问题或建议让我在评论区中知道。 - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ - -作者:[Abhishek][a] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://elementary.io/ -[2]:http://midori-browser.org/ From 8e83ef1442c76cb0cc40bf52b6818ff9215dbb48 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 19 Feb 2015 15:39:20 +0800 Subject: [PATCH 343/725] translated --- ... Icons From Dock In Elementary OS Freya.md | 57 ------------------- ... Icons From Dock In Elementary OS Freya.md | 56 ++++++++++++++++++ 2 files changed, 56 insertions(+), 57 deletions(-) delete mode 100644 sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md create mode 100644 translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md diff --git a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md deleted file mode 100644 index e8c39f25cf..0000000000 --- a/sources/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md +++ /dev/null @@ -1,57 +0,0 @@ -Translating---geekpi - -Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya [Quick Tip] -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) - -This quick tip shows you **how to get rid of two Google Chrome icons from the dock in Elementary OS Freya**. - -I hardly use the default Midori browser in [Elementary OS][1] Freya as Google Chrome is my main browser across all OSes. While [Midori][2] is kept in the dock by default, you’ll have to search for Google Chrome in Slingshot (applications) every time you want to open Google Chrome. To save time, I presume you have selected the “keep in dock” option for a quick access to Chrome. - -The problem here is that when you click on the Chrome icon in the dock, it creates another instance of Google Chrome. This leaves you with two Chrome icons in the docks and this is something that might be ignored by many but definitely an annoyance and against the design. If you share the same feeling, let’s see how can we remove the second Google Chrome icon. - -### Remove two Google Chrome icons from dock in Elementary OS Freya ### - -#### Step 1: #### - -Remove Google Chrome from the dock. - -#### Step 2: #### - -Open the terminal and use the following command: - - cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications - -#### Step 3: #### - -Next we need to edit the google-chrome.desktop file. Use the following commands: - - scratch-text-editor ~/.local/share/applications/google-chrome.desktop - -It will open the google-chrome.desktop file in Scratch for editing. Under the [Desktop Entry] section, add the following line: - - StartupWMClass=Google-chrome-stable - -It will look a bit like this: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) - -#### Step 4: #### - -Go to Slingshot and open Google Chrome again. Do select “keep in dock” again. Close it and start it again to verify that it doesn’t open a new Chrome instance in the dock. No reboot of system is required here. - -I hope this quick tip helped you to remove multiple Google Chrome icons from dock in Elementary OS Freya. Feel free to ask your questions and drop your suggestions in the comment below. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://elementary.io/ -[2]:http://midori-browser.org/ diff --git a/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md new file mode 100644 index 0000000000..19bb495231 --- /dev/null +++ b/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md @@ -0,0 +1,56 @@ +如何避免在ELemetary OS Freya中出现两个Google Chrome 图标[快速提示] +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) + +这篇文章会教你**如何避免在ELemetary OS Freya中出现两个Google Chrome 图标**。 + +Chrome才是我在所有系统中使用的主浏览器。而[Modori][2]默认在dock中,你不得不每次在使用Chrome时在Slingshot中搜索Google Chrome。为了节省时间,我假设你选择的是“保持在dock”中。 + +这里的问题是当你点击dock中的Chrome图标时,它会创建另外一个Google Chrome的实例。这就在dock中留下两个Chrome图标,这个或许可以被忽略但是很显然这是设计上的一个干扰。如果你有相同的感受,让我们看下如何移除这第二个Google Chrome图标。 + +### 在Elementary OS Freya的dock中删除第二个Google Chrome 图标 ### + +#### 第一步: #### + +从dock中删除Google Chrome。 + +#### 第二步: #### + +打开终端并使用下面的命令: + + cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications + +#### 第三步: #### + +接下来我们要编辑google-chrome.destop文件。使用下面的命令: + + scratch-text-editor ~/.local/share/applications/google-chrome.desktop + +这会用Scratch打开google-chrome.destop文件。在[Desktop Entry]段落下,加入下面的行: + + + StartupWMClass=Google-chrome-stable + +看上去像这样: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/two_Google_Chrome_Elementary_Freya.png) + +#### 第四步: #### + +进入Slingshot并且再次打开Google Chrome。再次选择“keep in dock”。关闭并重启来验证它是否在dock中打开了另外一个新的Chrome实例。这里不需要重启系统。 + +我希望这篇提示能够帮助你删除Elementary OS Freya中多出的Chrome图标。有任何问题或建议让我在评论区中知道。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://elementary.io/ +[2]:http://midori-browser.org/ From 651ba8285ee3bf889bbaab474b9c83b75e5564c3 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 19 Feb 2015 22:43:47 +0800 Subject: [PATCH 344/725] PUB:20150205 LinuxQuestions Survey Results Surface Top Open Source Projects @jerryling315 --- ...rvey Results Surface Top Open Source Projects.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) rename {translated/talk => published}/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md (54%) diff --git a/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md b/published/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md similarity index 54% rename from translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md rename to published/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md index 0052aab380..9430f11ada 100644 --- a/translated/talk/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md +++ b/published/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md @@ -1,17 +1,16 @@ -LinuxQuestions Survey Results Surface Top Open Source Projects +LinuxQuestions 问卷调查揭晓最佳开源项目 ================================================================================ ![](http://farm5.static.flickr.com/4099/4777335328_3cc363c419_m.jpg) -在Linux用户社区中, 很多人每年都会期待来自 LinuxQuestions.org 细致并可靠的年度问卷调查结果. 如同[Susan在她的报告][1]中指出的那样, 今年的[结果][2]着重于调查网站读者心中最棒的开源项目. 这份报告目前已经完成. 在LinuxQuestions的大多数人都是"专家级"的用户, 他们经常在网站上在线回答Linux新手们的提问. +在Linux用户社区中, 很多人每年都会期待来自 LinuxQuestions.org 细致可靠的年度问卷调查报告。如同[Susan在她的报告][1]中指出的那样, 今年的[结果][2]着重于调查网站读者心中最棒的开源项目。 这份报告目前已经完成。 在LinuxQuestions的大多数人都是“专家级”的用户, 他们经常在网站上在线回答Linux新手们的提问。 -在Susan所作的报告的附加内容里, 你可以看到由"专家"们对开源世界的关注点分布. -In addition to the summary results that Susan provided in her post, below you'll find a graphical snapshot of what the experts took note of on the open source front. +在Susan所作的报告的附加内容里, 你可以看到由“专家”们对开源世界的关注点分布。 -你也可以在[这里][3]找到一份较为精美的调查问卷总结图.这里呈现了网站投票得出的最佳Linux发行版, 可以看到Mint和Slackwaer平分了半壁江山: +你也可以在[这里][3]找到一份较为精美的调查问卷总结图.这里呈现了网站投票得出的最佳Linux发行版, 可以看到Mint和Slackwaer平分了半壁江山: ![](http://i1311.photobucket.com/albums/s669/webworkerdaily/lin_zps9ogvyrty.png) -而下图则是网站票选出的得出的最佳云项目. 值得注意的是, LinuxQuestions的用户群体给予了ownCloud项目极高的评价. 你一定得亲自去看看调查结果的详情, 也看看 [Susan关于各项目"赢家"][4]的总结 , 还有[一堆精美的图表][5]. +而下图则是网站票选出的得出的最佳云项目。值得注意的是, LinuxQuestions的用户群体给予了ownCloud项目极高的评价。 你一定得亲自去看看调查结果的详情, 也看看 [Susan 关于各项目“赢家”][4]的总结, 还有[一堆精美的图表][5]。 ![](http://i1311.photobucket.com/albums/s669/webworkerdaily/lin2_zps9nxf7yyi.png) @@ -21,7 +20,7 @@ via: http://ostatic.com/blog/linuxquestions-survey-results-surface-top-open-sour 作者:[Sam Dean][a] 译者:[jerryling315](https://github.com/jerryling315) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a12cc5dd8a681894f2516a367a4eeeb03419e9f9 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Feb 2015 00:00:52 +0800 Subject: [PATCH 345/725] PUB:20150121 If a 32-bit integer overflows @KayGuoWhu --- .../20150121 If a 32-bit integer overflows.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) rename {translated/talk => published}/20150121 If a 32-bit integer overflows.md (87%) diff --git a/translated/talk/20150121 If a 32-bit integer overflows.md b/published/20150121 If a 32-bit integer overflows.md similarity index 87% rename from translated/talk/20150121 If a 32-bit integer overflows.md rename to published/20150121 If a 32-bit integer overflows.md index 651e829189..30687f4bc8 100644 --- a/translated/talk/20150121 If a 32-bit integer overflows.md +++ b/published/20150121 If a 32-bit integer overflows.md @@ -1,16 +1,17 @@ 如果使用32位整型会溢出,那么是否可以使用一个40位结构体代替64位长整型? ---------- +====== + +###问题: -#问题: 假如说,使用32位的整型会溢出,在不考虑使用长整型的情况下,如果我们只需要表示2的40次方范围内的数,是否可以利用某些40位长的数据类型来表示呢?这样的话,每个整型数就可以节省24位的空间。 如果可以,该怎么做? 需求是:我现在必须处理数以亿计的数字,所以在存储空间上受到了很大的限制。 -#回答: +###回答: -##可以是可以,但是…… +可以是可以,但是…… 这种方法的确可行,但这么做通常没什么意义(因为几乎没有程序需要处理多达十亿的数字): @@ -22,14 +23,15 @@ struct bad_idea }; ``` -在这里,变量var占据40位大小,但是以生成代码时拥有非常低的运行效率来换取的(事实证明“非常”二字言过其实了——测试中程序开销仅仅增加了1%到2%,正如下面的测试时间所示),而且这么做通常没什么用。除非你还需要保存一个24位的值(或者是8位、16位的值),这样你皆可以它们放到同一个结构中。不然的话,因为对齐内存地址产生的开销会抵消这么做带来的好处。 +在这里,变量var占据40位大小,但是这是以生成代码时拥有非常低的运行效率来换取的(事实证明“非常”二字言过其实了——测试中程序开销仅仅增加了1%到2%,正如下面的测试时间所示),而且这么做通常没什么用。除非你还需要保存一个24位的值(或者是8位、16位的值),这样你皆可以它们放到同一个结构中。不然的话,因为对齐内存地址产生的开销会抵消这么做带来的好处。 在任何情况下,除非你是真的需要保存数以亿计的数字,否则这样做给内存消耗带来的好处是可以忽略不计的(但是为了处理这些位字段的额外代码量是不可忽略的!)。 ###说明: 在此期间,这个问题已经被更新了,是为了说明实际上确实有需要处理数以亿计数字的情况。假设,采取某些措施来防止因为结构体对齐和填充抵消好处(比如在后24位中存储其它的内容,或者使用多个8位来存储40位),那么这么做就变得有意义了。 -如果有十亿个数,每个数都节省三个字节的空间,那么这么做就非常有用了。因为使用更小的空间存储要求更少的内存页,也就会产生更少的cache和TLB不命中和内存缺页(单个缺页会产生数以千万计的指令(译者注:直译是这样,但语义说不通!))。 + +如果有十亿个数,每个数都节省三个字节的空间,那么这么做就非常有用了。因为使用更小的空间存储要求更少的内存页,也就会产生更少的cache和TLB不命中和内存缺页(单个缺页会产生数以千万计的指令 [译者注:直译是这样,但语义说不通!])。 尽管上面提到的情况不足以充分利用到剩余的24位(它仅仅使用了40位部分),如果确实在剩余位中放入了有用的数据,那么使用类似下面的方法会使得这种思路就管理内存而言显得非常有用。 @@ -43,9 +45,10 @@ struct using_gaps ``` 结构体大小和对齐长度等于64位整型的大小,所以只要使用得当就不会浪费空间,比如对一个保存10亿个数的数组使用这个结构(不考虑使用指定编译器的扩展)。如果你不会用到一个8位的值,那么你可以使用一个48位和16位的值(giving a bigger overflow margin)。 + 或者以牺牲可用性为代价,把8个64位的值放入这样的结构体中(或者使用40和64的组合使得其和满足320)。当然,在这种情况下,通过代码去访问数组结构体中的元素会变得非常麻烦(尽管一种方法是实现一个operator[]在功能上还原线性数组,隐藏结构体的复杂性)。 -更新: +###更新: 我写了一个快速测试工具,只是为了获得位字段的开销(以及伴随位字段引用的重载操作)。由于长度限制将代码发布在gcc.godbolt.org上,在本人64位Win7上的测试结果如下: @@ -85,7 +88,7 @@ via:[stackoverflow](http://stackoverflow.com/questions/27705409/if-a-32-bit-inte 作者:[Damon][a][Michael Kohne][b] 译者:[KayGuoWhu](https://github.com/KayGuoWhu) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 20ae8ef474e5ea70b6effa189316ff84d72beafa Mon Sep 17 00:00:00 2001 From: FSSlc Date: Fri, 20 Feb 2015 09:39:23 +0800 Subject: [PATCH 346/725] Translated 20150211 Best Known Linux Archive or Compress Tools.md --- ...t Known Linux Archive or Compress Tools.md | 231 ------------------ ...t Known Linux Archive or Compress Tools.md | 229 +++++++++++++++++ 2 files changed, 229 insertions(+), 231 deletions(-) delete mode 100644 sources/tech/20150211 Best Known Linux Archive or Compress Tools.md create mode 100644 translated/tech/20150211 Best Known Linux Archive or Compress Tools.md diff --git a/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md b/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md deleted file mode 100644 index 86623a5c99..0000000000 --- a/sources/tech/20150211 Best Known Linux Archive or Compress Tools.md +++ /dev/null @@ -1,231 +0,0 @@ -Translating by FSSlc - -Best Known Linux Archive / Compress Tools -================================================================================ -Sending and receiving large files and pictures over the internet is a headache many times. Compression and decompression tools are meant to address this problem. Lets take a quick overview of a few open source tools that are available to make our jobs simpler. - -Tar -gzip, gunzip -bzip2, bunzip2 -7-Zip - -### Tar ### - -Tar is derived from 'Tape archiver' as this was initially used for archiving and storing files on magnetic tapes. It is a GNU software. It can compress a set of files (archives), extract them and manipulate those which already exist. It is useful for storing, backing up and transporting files. Tar can preserve file and directory structure while creating the archives. Files archived using tar have '.tar' extensions. - -Basic Usage - -#### a) Creating an archive (c / --create) #### - - tar --create --verbose --file=archive.tar file1 file2 file3 - -OR - - tar cvf archive.tar file1 file2 file3 - -![tar cvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-cvf.png) - -creating an archive - -#### b) Listing an archive ( t / --list) #### - - tar --list archive.tar - -![tar tvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-tvf.png) - -Listing the contents - -#### c) Extracting an archive (x / --extract) #### - - tar xvf archive.tar - - tar xvf archive.tar --wildcards '*.c' - extracts files with only *.c extension from the archive. - -![tar xvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-xvf.png) - -Extracting files - -![tar xvf --wildcards](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-wildcard.png) - -Extract only the required files - -#### d) Updating an archive ( u / --update) #### - - tar uvf archive.tar newfile.c - updates the archive by adding newfile.c if its version is newer than the existing one. - -![tar uvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-uvf.png) - -Updating an archive - -#### e) Delete from an archive (--delete) #### - - tar--delete -f archive.tar file1.c - deletes 'file1.c' from the tar ball 'archive.tar' - -![tar --delete](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-delete.png) - -Deleting files - -Refer to [tar home page][1] for its detailed usage - -### Gzip / Gunzip ### - -Gzip stands for GNU zip. It is a compression utility that is commonly available in Linux operating system. Compressed files have an extension of '*.gz' - -**Basic Usage** - -#### a) Compressing files #### - - gzip file(s) - -Each file gets compressed individually - -![gzip](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip.png) - -Compress files - -This generally deletes the original files after compression. We can keep the original file by using the -c option. - - gzip -c file > file.gz - -![gzip-c](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-c.png) - -Keep original files after compressing - -We can also compress a group of files into a single file - - cat file1 file2 file3 | gzip > archieve.gz - -![gz group](http://blog.linoxide.com/wp-content/uploads/2015/01/gz-group.png) - -Compressing a group of files - -#### b) Checking compression ratio #### - -Compression ratio of the compressed file(s) can be verified using the '-l' option. - - gzip -l archieve.gz - -![gzip -l](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-l.png) - -Checking compression ratio - -#### c) Unzipping files #### - -Gunzip is used for unzipping files. Here also, original files are deleted after decompression. Use the -c option to retain original files. - - gunzip -c archieve.gz - -![gunzip -c](http://blog.linoxide.com/wp-content/uploads/2015/01/gunzip-c.png) - -Unzipping files - -Using '-d' option with gzip command has the same effect of gunzip on compressed files. - -More details can be obtained from [gzip home page][2] - -### Bzip2 / Bunzip2 ### - -[Bzip2][3] is also a compression tool like gzip but can compress files to smaller sizes than that is possible with other traditional tools. But the drawback is that it is slower than gzip. - -**Basic Usage** - -#### a) File Compression #### - -Generally, no options are used for compression and the files to be compressed are passed as arguments. Each file gets compressed individually and compressed files will have the extension 'bz2'. - - bzip2 file1 file2 file3 - -![bzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2.png) - -File Compression - -Use '-k' option to keep the original files after compression / decompression. - -![bzip2 -k](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-k.png) - -Retaining original files after compression - -'-d' option is used for forced decompression. - -![bzip2 -d](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-d.png) - -Delete files using -d option - -#### b) Decompression #### - - bunzip2 filename - -![bunzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bunzip2.png) - -Decompressing files - -bunzip2 can decompress files with extensions bz2, bz, tbz2 and tbz. Files with tbz2 and tbz will end up with '.tar' extension after decompression. - - bzip2 -dc performs the function of decompressing files to the stdout - -### 7-zip ### - -[7-zip][4] is another open source file archiver. It uses 7z format which is a new compression format and provides high-compression ratio. Hence, it is considered to be better than the previously mentioned compression tools. It is available under Linux as p7zip package. The package includes three binaries – 7z, 7za and 7zr. Refer to the [p7zip wiki][5] for differences between these binaries. In this article, we will be using 7zr to explain the usage. Archived files will have '.7z' extension. - -**Basic usage** - -#### a) Creating an archive #### - - 7zr a archive-name.7z file-name(s) / directory-name(s) - -![7zr a](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-a.png) - -Creating an archive - -#### b) Listing an archive #### - - 7zr l archive-name.7z - -![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-l.png) - -Listing an archive - -#### c) Extracting an archive #### - - 7zr e archive-name.7z - -![7zr e](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-e.png) - -Extracting an archive - -#### d) Updating an archive #### - - 7zr u archive-name.7z new-file - -![7zr u](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-u.png) - -Updating an archive - -#### e) Deleting files from an archive #### - - 7zr d archive-name.7z file-to-be-deleted - -![7zr d](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d.png) - -Deleting files - -![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d-l.png) - -Verifying file deletion - --------------------------------------------------------------------------------- - -via: http://linoxide.com/tools/linux-compress-decompress-tools/ - -作者:[B N Poornima][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/bnpoornima/ -[1]:http://www.gnu.org/software/tar/ -[2]:http://www.gzip.org/ -[3]:http://www.bzip.org/ -[4]:http://www.7-zip.org/ -[5]:https://wiki.archlinux.org/index.php/p7zip diff --git a/translated/tech/20150211 Best Known Linux Archive or Compress Tools.md b/translated/tech/20150211 Best Known Linux Archive or Compress Tools.md new file mode 100644 index 0000000000..9938efd5a5 --- /dev/null +++ b/translated/tech/20150211 Best Known Linux Archive or Compress Tools.md @@ -0,0 +1,229 @@ +Linux 下最为人熟知的归档/压缩工具 +================================================================================ +很多时候,通过互联网发送或接收大文件和图片是一件令人头疼的事。压缩及解压缩工具正好可以应对这个问题。下面让我们快速浏览一些可以使得我们的工作更加轻松的开源工具。 + +Tar +gzip, gunzip +bzip2, bunzip2 +7-Zip + +### Tar ### + +Tar 由 'Tape archiver' 衍生而来,最初被用来在磁带上归档和存储文件。Tar 是一个 GNU 软件,它可以压缩一组文件(归档),或提取它们以及对已经存在的压缩文件进行相关操作。在存储、备份以及转移文件方面,它是很有帮助的。在创建归档文件时,Tar 可以保持原有文件和目录结构不变。通过 Tar 归档的文件的后缀名为 ‘.tar’。 + +基本用法 + +#### a) 创建归档 (c / --create) #### + + tar --create --verbose --file=archive.tar file1 file2 file3 + +或 + + tar cvf archive.tar file1 file2 file3 + +![tar cvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-cvf.png) + +创建一个归档 + +#### b) 列出归档文件内容 ( t / --list) #### + + tar --list archive.tar + +![tar tvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-tvf.png) + +列出归档中包含的文件 + +#### c) 提取归档 (x / --extract) #### + + tar xvf archive.tar + + tar xvf archive.tar --wildcards '*.c' - 从归档中提取后缀名为 *.c 的文件。 + +![tar xvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-xvf.png) + +提取文件 + +![tar xvf --wildcards](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-wildcard.png) + +只提取需要的文件 + +#### d) 对归档进行更新 ( u / --update) #### + + tar uvf archive.tar newfile.c - 假如归档的版本比先前存在的版本新,通过添加文件 newfile.c 来更新归档. + +![tar uvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-uvf.png) + +更新一个归档 + +#### e) 从归档中删除文件 (--delete) #### + + tar--delete -f archive.tar file1.c - 从压缩包'archive.tar' 中删除文件'file1.c' + +![tar --delete](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-delete.png) + +删除文件 + +更加具体的使用方法请参考[tar 主页][1]。 + +### Gzip / Gunzip ### + +Gzip 代表 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩应用,被其压缩的文件的后缀名为'*.gz' 。 + +** 基本用法 ** + +#### a) 压缩文件 #### + + gzip file(s) + +每个文件将被单独压缩。 + +![gzip](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip.png) + +压缩文件 + +通常在压缩完成后,它会将原来的文件删除。我们可以使用 `-c` 选项来保留原来的文件。 + + gzip -c file > file.gz + +![gzip-c](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-c.png) + +压缩后保留原有文件 + +我们也可以将一组文件压缩到一个单独的文件中 + + cat file1 file2 file3 | gzip > archieve.gz + +![gz group](http://blog.linoxide.com/wp-content/uploads/2015/01/gz-group.png) + +压缩一组文件 + +#### b) 检查压缩比 #### + +被压缩文件的压缩比可以使用 ‘-l’ 选项来进行检验。 + + gzip -l archieve.gz + +![gzip -l](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-l.png) + +检查压缩率 + +#### c) 解压文件 #### + +Gunzip 被用来解压文件,在这里,原有文件在被解压后同样会被删除。使用 `-c`选项来保留原始文件。 + + gunzip -c archieve.gz + +![gunzip -c](http://blog.linoxide.com/wp-content/uploads/2015/01/gunzip-c.png) + +解压文件 + +gzip 加上'-d'选项 和 gunzip 对压缩文件有同样的效果。 + +更多细节可以从 [gzip 主页][2] 得到。 + +### Bzip2 / Bunzip2 ### + +同 gzip 一样,[Bzip2][3] 也是一个压缩工具,与其他传统的工具相比,它可以将文件压缩到更小,但其缺点为:运行速度比 gzip 慢。 + +** 基本用法 ** + +#### a) 压缩文件 #### + +一般情况下,针对压缩而言,Bzip2 没有选项可供选择,将被压缩的文件被传递为它的参数。每个文件被单独压缩,且压缩文件以 'bz2' 为后缀名。 + + bzip2 file1 file2 file3 + +![bzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2.png) + +文件压缩 + +使用 '-k' 选项可以使得 在压缩或解压缩之后保留原有的文件。 + +![bzip2 -k](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-k.png) + +在压缩后保留原有文件。 + +'-d' 选项被用来强制解压缩。 + +![bzip2 -d](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-d.png) + +使用 -d 选项删除文件 (!! 注:我(FSSlc)认为 这里的图片说明有误,可以参考 manpage或bzip 的官网来校对一下。) + +#### b) 解压 #### + + bunzip2 filename + +![bunzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bunzip2.png) + +解压文件 + +bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 和 tbz 的文件在压缩后,后缀名将变为'.tar' 。 + + bzip2 -dc 执行解压文件到标准输出的功能。 + +### 7-zip ### + +[7-zip][4] 是另一个开源压缩软件。它使用 7z 这种新的压缩格式,并支持高压缩比。因此,它被认为是比先前提及的压缩工具更好的软件。在 Linux 下,可以通过 p7zip 软件包得到,该软件包里包含 3 个二进制文件 – 7z, 7za 和 7zr,读者可以参考 [p7zip wiki][5] 来了解这三个二进制文件之间的不同。在本篇中,我们将使用 7zr 来解释 7-zip 的用法。归档文件以 '.7z' 为后缀名。 + +** 基本用法 ** + +#### a) 创建归档 #### + + 7zr a archive-name.7z file-name(s) / directory-name(s) + +![7zr a](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-a.png) + +创建一个归档文件 + +#### b) 列出归档包含文件 #### + + 7zr l archive-name.7z + +![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-l.png) + +列出归档中包含的文件 + +#### c) 提取归档文件 #### + + 7zr e archive-name.7z + +![7zr e](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-e.png) + +提取归档 + +#### d) 更新归档文件 #### + + 7zr u archive-name.7z new-file + +![7zr u](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-u.png) + +更新一个归档文件 + +#### e) 从归档文件中删除文件 #### + + 7zr d archive-name.7z file-to-be-deleted + +![7zr d](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d.png) + +删除文件 + +![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d-l.png) + +确认文件删除 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/tools/linux-compress-decompress-tools/ + +作者:[B N Poornima][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/bnpoornima/ +[1]:http://www.gnu.org/software/tar/ +[2]:http://www.gzip.org/ +[3]:http://www.bzip.org/ +[4]:http://www.7-zip.org/ +[5]:https://wiki.archlinux.org/index.php/p7zip \ No newline at end of file From 5600ef3e03590034c92d0f5babdc384656dc5e02 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Fri, 20 Feb 2015 09:43:18 +0800 Subject: [PATCH 347/725] Translated 20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md --- ...l Repository in Ubuntu using APT-mirror.md | 127 ------------------ ...l Repository in Ubuntu using APT-mirror.md | 125 +++++++++++++++++ 2 files changed, 125 insertions(+), 127 deletions(-) delete mode 100644 sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md create mode 100644 translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md diff --git a/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md b/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md deleted file mode 100644 index f3a5a451d6..0000000000 --- a/sources/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md +++ /dev/null @@ -1,127 +0,0 @@ -Translating by FSSlc - -4 Steps to Setup Local Repository in Ubuntu using APT-mirror -================================================================================ -Today we will show you how to setup a local repository in your Ubuntu PC or Ubuntu Server straight from the official Ubuntu repository. There are a lot benefit of creating a local repository in your computer if you have a lot of computers to install software, security updates and fixes often in all systems, then having a local Ubuntu repository is an efficient way. Because all required packages are downloaded over the fast LAN connection from your local server, so that it will save your Internet bandwidth and reduces the annual cost of Internet.. - -You can setup a local repository of Ubuntu in your local PC or server using many tools, but we'll featuring about APT-Mirror in this tutorial. Here, we'll be mirroring packages from the default mirror to our Local Server or PC and we'll need at least **120 GB** or more free space in your local or external hard drive. It can be configured through a **HTTP** or **FTP** server to share its software packages with local system clients. - -We'll need to install Apache Web Server and APT-Mirror to get our stuffs working out of the box. Here are the steps below to configure a working local repository: - -### 1. Installing Required Packages ### - -First of all, we are going to pull whole packages from the public repository of Ubuntu package server and save them in our local Ubuntu server hard disk. - -We'll first install a web server to host our local repository. We'll install Apache web server but you can install any web server you wish, web server are necessary for the http protocol. You can additionally install FTP servers like proftpd, vsftpd,etc if you need to configure for ftp protocols and Rsync for rsync protocols. - - $ sudo apt-get install apache2 - -And then we'll need to install apt-mirror: - - $ sudo apt-get install apt-mirror - -![apt-mirror-installation](http://blog.linoxide.com/wp-content/uploads/2014/12/apt-mirror-install.png) - -**Note: As I have already mentioned that we'll need at least 120 GBs free space to get all the packages mirrored or download.** - -### 2. Configuring APT-Mirror ### - -Now create a directory on your harddisk to save all packages. For example, let us create a directory called “/linoxide”. We are going to save all packages in this directory: - - $ sudo mkdir /linoxide - -![repo-dir](http://blog.linoxide.com/wp-content/uploads/2014/12/mkdir-linoxide.png) - -Now, open the file **/etc/apt/mirror.list** file - - $ sudo nano /etc/apt/mirror.list - -![apt-mirror-edit](http://blog.linoxide.com/wp-content/uploads/2014/12/edit-mirror-list-300x7.png) - -Copy the below lines of configuration to mirror.list and edit as your requirements. - - ############# config ################## - # - set base_path /linoxide - # - # set mirror_path $base_path/mirror - # set skel_path $base_path/skel - # set var_path $base_path/var - # set cleanscript $var_path/clean.sh - # set defaultarch - # set postmirror_script $var_path/postmirror.sh - # set run_postmirror 0 - set nthreads 20 - set _tilde 0 - # - ############# end config ############## - - deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse - deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse - deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse - #deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse - #deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse - - deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse - deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse - deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse - #deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse - #deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse - - clean http://archive.ubuntu.com/ubuntu - -![mirror-list-config](http://blog.linoxide.com/wp-content/uploads/2014/12/mirror-list-config.png) - -**Note: You can replace the above official mirror server url by the nearest one, you can get your nearest server by visiting the page [Ubuntu Mirror Server][1]. If you are not in hurry and can wait for the mirroring, you can go with the default official one.** - -Here, we are going to mirror package repository of the latest and greatest LTS release of Ubuntu ie. Ubuntu 14.04 LTS (Trusty Tahr) so, we have configured trusty. If you need to mirror of Saucy or other version of Ubuntu, please edit it as its codename. - -Now, we'll have to run apt-mirror which will now get/mirror all the packages in the repository. - - sudo apt-mirror - -It will take time to download all the packages from the Ubuntu Server which depends upon the connection speed and performance with respect to you and the mirror server. I have interrupted the download as I have already done that... - -![downloading-packages](http://blog.linoxide.com/wp-content/uploads/2014/12/downloading-index.png) - -### 3.Configuring Web Server ### - -To be able to access the repo from other computers you need a webserver. You can also do it via ftp but I choose to use a webserver as I mentioned in above step 1. So, we are now gonna configure Apache Server: - -We will create a symlink from our local repo's directory to a directory ubuntu in the hosting directory of Apache ie /var/www/ubuntu - - $ sudo ln -s /linoxide /var/www/ubuntu - $ sudo service apache2 start - -![symlinks-apache2](http://blog.linoxide.com/wp-content/uploads/2014/12/symblink-apache2.png) - -The above command will allow us to browse our Mirrored Repo from our localhost ie http://127.0.0.1 by default. - -### 4. Configuring Client Side ### - -Finally, we need to add repository source in other computers which will fetch the packages and repository from our computer. To do that, we'll need to edit /etc/apt/sources.list and add the following lines. - - $ sudo nano /etc/apt/sources.list - -Add this line in /etc/apt/sources.list and save. - - deb http://192.168.0.100/ubuntu/ trusty main restricted universe - -**Note: here 192.168.0.100 is the LAN IP address of our server computer, you need to replace that with yours.** - - $ sudo apt-get update - -Finally, we are done. Now you can install the required packages using sudo apt-get install packagename from your local Ubuntu repository with high speed download and with low bandwidth. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/ubuntu-how-to/setup-local-repository-ubuntu/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:https://launchpad.net/ubuntu/+archivemirrors diff --git a/translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md b/translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md new file mode 100644 index 0000000000..c49b52c461 --- /dev/null +++ b/translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md @@ -0,0 +1,125 @@ +在 Ubuntu中使用 APT-mirror 简单四步配置本地软件仓库 +================================================================================ +今天,我们将向你展示如何在你的 Ubuntu 个人电脑 或 Ubuntu 服务器 中,直接通过 Ubuntu 官方软件仓库来配置本地软件仓库。在你的电脑中创建一个本地软件仓库有着许多的好处。假如你有许多电脑需要安装软件,安全升级和修复,那么配置一个本地软件仓库是一个高效的方法。因为,所有需要安装的软件包都可以通过快速局域网连接从你的本地服务器中下载,这样可以节省你的网络带宽,降低互联网的年度开支 ... + +你可以使用多种工具在你的本地个人电脑或服务器中配置一个 Ubuntu 的本地软件仓库,但在本教程中,我们将为你介绍 APT-Mirror。这里,我们将把默认的镜像包镜像到 我们本地的服务器或个人电脑中,并且在本地或外置硬盘中,我们至少需要 **120 GB** 或更多的可用空间。 上面的任务可以通过配置一个 **HTTP** 或 **FTP** 服务器来 与本地系统客户端共享软件包。 + +我们需要安装 Apache 网络服务器和 APT-Mirror 来使得我们的工作得以开始。下面是配置一个可工作的本地软件仓库的步骤: + +### 1. 安装需要的软件包 ### + +首先,我们需要从 Ubuntu 的公共软件包仓库中取得所有的软件包,然后在我们本地的 Ubuntu 服务器硬盘中保存它们。 + +首先我们安装一个网络服务器来承载我们的本地软件仓库。这里我们将安装 Apache 网络服务器,但你可以安装任何你中意的网络服务器,对于 http 协议,网络服务器是必须的。假如你需要配置 ftp 协议 及 rsync 协议,你还可以再分别额外安装 FTP 服务器,如 proftpd, vsftpd 等等 和 Rsync 。 + + $ sudo apt-get install apache2 + +然后我们需要安装 apt-mirror: + + $ sudo apt-get install apt-mirror + +![apt-mirror-installation](http://blog.linoxide.com/wp-content/uploads/2014/12/apt-mirror-install.png) + +**注: 正如我先前提到的,我们需要至少 120 GB 的可用空间来使得所有的软件包被镜像或下载。** + +### 2. 配置 APT-Mirror ### + +现在,在你的硬盘上创建一个目录来保存所有的软件包。例如,我们创建一个名为 `/linoxide`的目录,我们将在这个目录中保存所有的软件包: + + $ sudo mkdir /linoxide + +![repo-dir](http://blog.linoxide.com/wp-content/uploads/2014/12/mkdir-linoxide.png) + +现在,打开文件 **/etc/apt/mirror.list** : + + $ sudo nano /etc/apt/mirror.list + +![apt-mirror-edit](http://blog.linoxide.com/wp-content/uploads/2014/12/edit-mirror-list-300x7.png) + +复制下面的命令行配置到 `mirror.list`文件中并按照你的需求进行修改: + + ############# config ################## + # + set base_path /linoxide + # + # set mirror_path $base_path/mirror + # set skel_path $base_path/skel + # set var_path $base_path/var + # set cleanscript $var_path/clean.sh + # set defaultarch + # set postmirror_script $var_path/postmirror.sh + # set run_postmirror 0 + set nthreads 20 + set _tilde 0 + # + ############# end config ############## + + deb http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse + deb http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse + deb http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse + #deb http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse + #deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse + + deb-src http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse + deb-src http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse + deb-src http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse + #deb-src http://archive.ubuntu.com/ubuntu trusty-proposed main restricted universe multiverse + #deb-src http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse + + clean http://archive.ubuntu.com/ubuntu + +![mirror-list-config](http://blog.linoxide.com/wp-content/uploads/2014/12/mirror-list-config.png) + +**注: 你可以将上面的官方镜像服务器网址更改为离你最近的服务器的网址,而这可以访问 [Ubuntu Mirror Server][1]来得到。假如你并不着急并可以等待镜像的完成,你可以沿用默认的官方镜像服务器网址。** + +这里,我们将要镜像 最新和最大的 Ubuntu LTS 发行版 --- 即 Ubuntu 14.04 LTS (Trusty Tahr) --- 的软件包仓库,所以在上面的配置中发行版本号为 trusty 。假如我们需要镜像 Saucy 或其他的 Ubuntu 发行版本,请修改上面的 trusy 为相应的代号。 + +现在,我们必须运行 apt-mirror 来下载或镜像 官方仓库中的所有软件包。 + + sudo apt-mirror + +从 Ubuntu 服务器中下载所有的软件包所花费的时间取决于 你和镜像服务器之间的网络连接速率和性能。我已经中断了下载,因为我已经下载好了 ... + +![downloading-packages](http://blog.linoxide.com/wp-content/uploads/2014/12/downloading-index.png) + +### 3.配置网络服务器 ### + +为了使得其他的电脑能够取得这个软件仓库,你需要一个网络服务器。你也可以通过 ftp 来完成这件事,但我选择使用一个网络服务器因为在上面的步骤 1 中我提及到使用网络服务器。因此,我们现在要对 Apache 服务器进行配置: + +我们将为我们本地的软件仓库目录 建立一个到 Apache 托管目录 --- 即 `/var/www/ubuntu` --- 的符号链接。 + + $ sudo ln -s /linoxide /var/www/ubuntu + $ sudo service apache2 start + +![symlinks-apache2](http://blog.linoxide.com/wp-content/uploads/2014/12/symblink-apache2.png) + +上面的命令将允许我们从本地主机(localhost) --- 即 http://127.0.0.1(默认情况下) --- 浏览我们的镜像软件仓库。 + +### 4. 配置客户端 ### + +最后,我们需要在其他的电脑中添加软件源,来使得它们可以从我们的电脑中取得软件包或软件仓库。为达到此目的,我们需要编辑 `/etc/apt/sources.list` 文件并添加下面的命令: + + $ sudo nano /etc/apt/sources.list + +添加下面的一行到` /etc/apt/sources.list`中并保存。 + + deb http://192.168.0.100/ubuntu/ trusty main restricted universe + +**注: 这里的 192.168.0.100 是我们的服务器电脑的 局域网 IP 地址,你需要替换为你的服务器电脑的局域网 IP 地址** + + $ sudo apt-get update + +最终,我们完成了任务。现在,你可以使用`sudo apt-get install packagename` 命令来从你的本地 Ubuntu 软件仓库中安装所需的软件包,这将会是高速的且消耗很少的带宽。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/setup-local-repository-ubuntu/ + +作者:[Arun Pyasi][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://launchpad.net/ubuntu/+archivemirrors From 83d38fba2257a24bd189ab2cb4ef59af4d752981 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 20 Feb 2015 14:27:29 +0800 Subject: [PATCH 348/725] translating --- ...119 Cutegram--A Better Telegram Client For GNU or Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md b/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md index 7a051be4fc..a04d4a5f5f 100644 --- a/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md +++ b/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md @@ -1,3 +1,5 @@ +Translating---geekpi + Cutegram: A Better Telegram Client For GNU/Linux ================================================================================ No need for a introduction to **Telegram**, right? Telegram is a popular free Instant messenger application that can be used to chat with your friends all over the world. Unlike Whatsapp, Telegram is free forever, no ads, no subscription fees. And, the Telegram client is open source too. Telegram is available for many different platforms, including Linux, Android, iOS, Windows Phone, Windows, and Mac OS X. The messages which are sending using telegram are highly encrypted and self-destructive. It is very secure, and there is no limit on the size of your media and chats. @@ -73,4 +75,4 @@ via: http://www.unixmen.com/cutegram-better-telegram-client-gnulinux/ [a]:http://www.unixmen.com/author/sk/ [1]:http://www.unixmen.com/install-telegram-desktop-via-ppa/ -[2]:http://aseman.co/en/products/cutegram/ \ No newline at end of file +[2]:http://aseman.co/en/products/cutegram/ From 123de83ceec08b53f53f4320f3d465767ab7c081 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 20 Feb 2015 14:51:37 +0800 Subject: [PATCH 349/725] translated --- ...Better Telegram Client For GNU or Linux.md | 78 ------------------- ...Better Telegram Client For GNU or Linux.md | 77 ++++++++++++++++++ 2 files changed, 77 insertions(+), 78 deletions(-) delete mode 100644 sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md create mode 100644 translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md diff --git a/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md b/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md deleted file mode 100644 index a04d4a5f5f..0000000000 --- a/sources/share/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md +++ /dev/null @@ -1,78 +0,0 @@ -Translating---geekpi - -Cutegram: A Better Telegram Client For GNU/Linux -================================================================================ -No need for a introduction to **Telegram**, right? Telegram is a popular free Instant messenger application that can be used to chat with your friends all over the world. Unlike Whatsapp, Telegram is free forever, no ads, no subscription fees. And, the Telegram client is open source too. Telegram is available for many different platforms, including Linux, Android, iOS, Windows Phone, Windows, and Mac OS X. The messages which are sending using telegram are highly encrypted and self-destructive. It is very secure, and there is no limit on the size of your media and chats. - -You can install and use Telegram desktop on your Debian/Ubuntu systems as mentioned in [our previous tutorial][1]. However, a new telegram client called **Cutegram** is available now to make your chat experience more fun and easy. - -### What is Cutegram? ### - -Cutegram is a free and opensource telegram clients for GNU/Linux focusing on user friendly, compatibility with Linux desktop environments and easy to use. Cutegram using Qt5, QML, libqtelegram, libappindication, AsemanQtTools technologies and Faenza icons and Twitter emojies graphic sets. It’s free and released under GPLv3 license. - -### Install Cutegram ### - -Head over to the Cutegram homepage and download the latest version of your distribution’s choice. As I use Ubuntu 64 bit, I downloaded the .deb file. - - wget http://aseman.co/downloads/cutegram/cutegram_1.0.2-1-amd64.deb - -Now, Install Cutegram as shown below. - - sudo apt-get install gdebi - sudo gdebi cutegram_1.0.2-1-amd64.deb - -For other distributions, run the following commands. - -**64bit:** - - wget http://aseman.co/downloads/cutegram/cutegram-1.0.2-linux-x64-installer.run - -**32 bit:** - - wget http://aseman.co/downloads/cutegram/cutegram-1.0.2-linux-installer.run - -Set executable permission: - - chmod + cutegram-1.0.2-linux*.run - -And, install it as shown below. - - sudo ./cutegram-1.0.2-linux*.run - -### Usage ### - -Launch Cutegram either from Menu or Unity dash. From the login screen, select your country, and enter your mobile number, finally click **Login**. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_005.png) - -A code will be sent to your mobile number. Enter the code and click **Sign in**. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_002.png) - -There you go. - -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_003.png) - -Start Chatting! - -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_004.png) - -And, you can set a profile picture, start new chat/group chat, or secret chat from using the buttons on the left pane. - -Stay happy! Cheers!! - -For more details, check the [Cutegram website][2]. - --------------------------------------------------------------------------------- - -via: http://www.unixmen.com/cutegram-better-telegram-client-gnulinux/ - -作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.unixmen.com/author/sk/ -[1]:http://www.unixmen.com/install-telegram-desktop-via-ppa/ -[2]:http://aseman.co/en/products/cutegram/ diff --git a/translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md b/translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md new file mode 100644 index 0000000000..4f0a57ff52 --- /dev/null +++ b/translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md @@ -0,0 +1,77 @@ +Cutegram: 一个GNU/Linux下更好的Telegram客户端 +================================================================================ +不需要再介绍**Telegram**了,对吧。Telegram是一款流行的免费即时通信工具,帮助在全球与你的朋友聊天。不像Whatsapp,Telegram是永久免费、没有广告、没有订阅费用。并且Telegram客户端也是开源的。Telegram在许多不同的平台中都有,包括Linux、Android、iOS、Windows Phone和Mac OS X。使用telegram发送的消失是高度加密且会自我毁灭。它很安全,并且没有对你媒体和聊天的大小作限制。 + +在[先前的教程][1]中我们已经提到你可以在Ubuntu/Debian中安装Telegram。然而,一个新的Telegram客户端叫**Cutegram**出现了,可以使你的聊天体验更加有趣和简单。 + +### Cutegram是什么? ### + +Cutegram是一款GNU/Linux中专注于用户友好、与LInux桌面环境兼容和易于使用的开源telegram客户端。Cutegram使用Qt5、QML、libqtelegram、libappindication、AsemanQtTools技术和Faenzatu图标和Twitter emojies图片集。它在GPLv3许可证下免费发布。 + +### 安装 Cutegram ### + +进入Cutegrm的首页病根据你的发行版版本选择最新的版本。我使用的是Ubuntu 64位版,所以我下载的是.deb文件。 + + wget http://aseman.co/downloads/cutegram/cutegram_1.0.2-1-amd64.deb + +现在,如下安装Cutegram: + + sudo apt-get install gdebi + sudo gdebi cutegram_1.0.2-1-amd64.deb + +对于其他发行版,运行下面的命令。 + +**64位:** + + wget http://aseman.co/downloads/cutegram/cutegram-1.0.2-linux-x64-installer.run + +**32位:** + + wget http://aseman.co/downloads/cutegram/cutegram-1.0.2-linux-installer.run + +设置执行权限: + + chmod + cutegram-1.0.2-linux*.run + +如下进行安装。 + + sudo ./cutegram-1.0.2-linux*.run + +### 使用 ### + +在菜单或者Unity dash中启动Cutegram。在登录界面,选择你的国家并输入电话号码,最好点击**Login** + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_005.png) + +A code will be sent to your mobile number. Enter the code and click **Sign in**. +一个验证码将会发送到你手机上。输入验证码病点击**** + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_002.png) + +你会看到 + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_003.png) + +开始聊天吧! + +![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_004.png) + +接着,你可以设置头像,开始新的聊天/群聊,或者使用左边面板的按钮开始秘密聊天。 + +玩得开心!干杯!! + +更多细节,请关注[Cutegram 网站][2] + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/cutegram-better-telegram-client-gnulinux/ + +作者:[SK][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:http://www.unixmen.com/install-telegram-desktop-via-ppa/ +[2]:http://aseman.co/en/products/cutegram/ From b45234e2136a323171c5b14e482db40097da4e4e Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Feb 2015 21:08:29 +0800 Subject: [PATCH 350/725] PUB:20150209 CrunchBang Linux Is Dead @geekpi --- .../20150209 CrunchBang Linux Is Dead.md | 32 +++++++++++++++++++ .../news/20150209 CrunchBang Linux Is Dead.md | 32 ------------------- 2 files changed, 32 insertions(+), 32 deletions(-) create mode 100644 published/20150209 CrunchBang Linux Is Dead.md delete mode 100644 translated/news/20150209 CrunchBang Linux Is Dead.md diff --git a/published/20150209 CrunchBang Linux Is Dead.md b/published/20150209 CrunchBang Linux Is Dead.md new file mode 100644 index 0000000000..7adfa42887 --- /dev/null +++ b/published/20150209 CrunchBang Linux Is Dead.md @@ -0,0 +1,32 @@ +CrunchBang Linux 已死!!! +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Crunchbang_Linux_Dead.jpeg) + +是的,你没看错。最小的Linux发行版**CrunchBang Linux 已经消失了**。 + +CrunchBang Linux,被大家所熟知的缩写标志“#!”,其基于Debian和[Openbox][1]窗口管理器。这个黑色主题的 Linux 发行版是许多资深 Linux用户的选择。 + +### CrunchBang 因为 “不再有继续下去的价值” 而消失了 ### + +其[公告][2]称,CrunchBang将不在继续开发,项目的领头人Philip Newborough说他在开始这个项目的时候,Linux 世界和现在不同。他指出那时在这种发行版还没有‘竞争’,但是随着Linux发行版的进步,如Lubuntu,Crunchbang这样的发行版就不具备原来的价值了。 + +> 对于任何十年前使用Linux的人而言,我想他们都会看到事物在不断发展。虽然一些事情一直保持不变,还有一些的变化超出了认知。这称之为进步。对于大部分事物而言,进步是一件好事。也就是说当进步发生时,一些事物落后了。对于我而言,CrunchBang就是我需要抛弃的东西。我抛弃它的原因是我真的认为它不再具有任何价值了,虽然我还可以因为一些多愁善感的原因把它留下来,但是我不认为那些使用原生Debian用户还有兴趣了。 + +### CrunchBang消失之后会怎么样? ### + +就像[Pear OS][3]那样,CrunchBang论坛仍将在线。现在仍可以下载但是不久的将来就会停止。Philip对他即将面对的新的项目和工作感到很激动。我希望他今后工作顺利。很难过见到一个像CrunchBang这样好的Linux发行版的消失。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/crunchbang-linux-dead/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://en.wikipedia.org/wiki/Openbox +[2]:http://crunchbang.org/forums/viewtopic.php?id=38916 +[3]:http://itsfoss.com/pear-os-history/ diff --git a/translated/news/20150209 CrunchBang Linux Is Dead.md b/translated/news/20150209 CrunchBang Linux Is Dead.md deleted file mode 100644 index 7d6cee2613..0000000000 --- a/translated/news/20150209 CrunchBang Linux Is Dead.md +++ /dev/null @@ -1,32 +0,0 @@ -CrunchBang Linux 已死!!! -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Crunchbang_Linux_Dead.jpeg) - -是的,你没看错。最小的Linux发行版**CrunchBang Linux 已经消失了**。 - -CrunchBang Linux,大家都知道它的缩写符号 #!,基于的是Debian和[Openbox][1]窗口管理器。黑色主题的Linux是每一个有经验的Linux用户的选择。 - -### CrunchBang 因为 “不再有继续下去的价值” 而消失了 ### - -[公告][2]称CrunchBang将不在继续开发,项目的领头人Philip Newborough说他在开始这个项目的时候,Linux时间是一个不同的地方。他指出那时在相同的种类在同一时间段中没有‘竞争’,但是随着Linux发行版的进步如Lubuntu,Crunchbang不再有相同的价值了。 - -> 对于任何十年前使用Linux的人而言,我确定他们同意事物在发展。虽然一些事情一直保持不变,还有一些的变化超出了认知。这称之为进步,对于大部分事物而言,进步是一件好事。也就是说当进步发生时,一些事物落后了,对于我而言,CrunchBang就是我需要抛弃的东西。我抛弃它的原因是我真实地认为它不再具有任何价值了,虽然我还可以因为一些多愁善感的原因把它留下来,但是我不认为那些使用原生Debian用户的兴趣了。 - -### CrunchBang消失之后会怎么样? ### - -就像[Pear OS][3]那样,CrunchBang论坛仍将在线。现在仍可以下载但是不久的将来就会停止。Philip提到对他即将面对的新的项目和工作感到很激动。我希望他今后工作顺利。很难过见到一个像CrunchBang这样好的Linux发行版的消失。 - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/crunchbang-linux-dead/ - -作者:[Abhishek][a] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://en.wikipedia.org/wiki/Openbox -[2]:http://crunchbang.org/forums/viewtopic.php?id=38916 -[3]:http://itsfoss.com/pear-os-history/ From 37ab2123f3dd0e7c1f40f06d0bfb3e362feaca33 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Feb 2015 21:43:16 +0800 Subject: [PATCH 351/725] PUB:20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10 @geekpi --- ...ties Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) rename {translated/news => published}/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md (54%) diff --git a/translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/published/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md similarity index 54% rename from translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md rename to published/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md index 1801580d00..e49dd12654 100644 --- a/translated/news/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md +++ b/published/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md @@ -2,29 +2,27 @@ OpenJDK 7的漏洞已经在Ubuntu 14.04 和Ubuntu 14.10中解决了 ---- *建议用户尽快升级* -## Canonical公布新的OpenJDK 7 的版本已经提交到Ubuntu 14.04 LTS和Ubuntu 14.10 的仓库中了。更新修复了大量的问题和漏洞。 +**Canonical发布新 OpenJDK 7 的安全公告,它已经提交到Ubuntu 14.04 LTS和Ubuntu 14.10 的仓库中。该更新修复了大量的问题和漏洞。** -Ubuntu维护者已经升级了仓库中的OpenJDK包,并且含有大量的修复。这是一个重要的更新切涵盖了少量的库。 +Ubuntu维护者已经升级了仓库中的OpenJDK包,并且含有大量的修复。这是一个重要的更新,其涵盖了少量的库。 安全公告中说“OpenJDK JRE中发现了一些信息泄露、数据完整性和可用性的漏洞。攻击者可以利用这些通过网络执行拒绝服务或者泄露信息。” 同样,“OpenJDK JRE中发现了关于信息泄露和完整性的漏洞。攻击者可以利用这点通过网络泄露敏感信息。” -这里有几个漏洞被开发者确认并修复,并有维护人员实现。关于问题的详细描述,你可以参考Canonical的安全通告。用户被建议尽快升级系统。 +这里有几个漏洞被开发者确认,并且由维护人员解决。关于该问题的详细描述,你可以参考Canonical的安全通告。建议用户尽快升级系统。 -这个漏洞只要你升级到最新的openjdk 7相关的包就可以修复。要应用补丁,用户需要运行升级管理程序。通常上,一个标准系统更新就会运行必要的更新。所有java相关的程序需要重新启动。 +这个漏洞只要你升级到最新的openjdk 7相关的包就可以修复。要应用该补丁,用户需要运行升级管理程序。通常上,一个标准系统更新就会安装必要的更新。所有java相关的程序需要重新启动。 -------------------------------------------------------------------------------- -via:http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml +via: http://linux.softpedia.com/blog/OpenJDK-7-Vulnerabilities-Closed-in-Ubuntu-14-04-and-Ubuntu-14-10-471605.shtml 本文发布时间:29 Jan 2015, 16:53 GMT 作者:[Silviu Stahie][a] - 译者:[geekpi](https://github.com/geekpi) - -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 598ee2512c5ee6254ca794288acf3a4fe5312cc4 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Fri, 20 Feb 2015 22:01:55 +0800 Subject: [PATCH 352/725] Translating by FSSlc --- ...w To Make GDebi Default Instead of Ubuntu Software Center.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md index 9bcbbb967e..55bca268d1 100644 --- a/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md +++ b/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md @@ -1,3 +1,5 @@ +Translating by FSSlc + How To Make GDebi Default Instead of Ubuntu Software Center ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Make_GDebi_Default.jpeg) From 5219906b2dffb7d0a8bd3d714ec46b98f8d361fb Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Feb 2015 22:29:05 +0800 Subject: [PATCH 353/725] PUB:20140819 Top 4 Linux download managers @H-mudcup --- .../20140819 Top 4 Linux download managers.md | 60 ++++++++++--------- 1 file changed, 31 insertions(+), 29 deletions(-) rename {translated/share => published}/20140819 Top 4 Linux download managers.md (69%) diff --git a/translated/share/20140819 Top 4 Linux download managers.md b/published/20140819 Top 4 Linux download managers.md similarity index 69% rename from translated/share/20140819 Top 4 Linux download managers.md rename to published/20140819 Top 4 Linux download managers.md index 78c5b9ec12..5896665a80 100644 --- a/translated/share/20140819 Top 4 Linux download managers.md +++ b/published/20140819 Top 4 Linux download managers.md @@ -1,17 +1,16 @@ -Translated By H-mudcup - -Linux排名前四的下载管理器 +Linux下的四大下载管理器 ================================================================================ -**改善并更好的管理你的网页下载,不论是镜像、抓取数据包还是仅仅更好的掌控你的文件。** +**改善你的网页下载,以便更好的管理文件镜像、批量下载还是仅仅希望更好的管理你的文件。** -下载管理器现在似乎已经是旧闻了,但是他们仍然非常有用。我们来比较一下Linux上排名前四的下载管理器。 +下载管理器现在似乎已经不新鲜了,但是他们仍然非常有用。我们来比较一下Linux上排名前四的下载管理器。 ### [uGet][1] ### -如同很多其他的Linux应用一样uGet把体积轻巧和功能全面作为宣传亮点。它能处理有着过滤器的多线程数据流,还能与任何网络浏览器进行整合。它从当初的UrlGet开始,如今已经经过了十年。它还能在Windows上运行。 +如同很多其他的Linux应用一样,uGet把体积轻巧和功能全面作为宣传亮点。它能处理多线程下载,支持过滤器,还能与任何网络浏览器进行整合。它从当初的UrlGet开始,如今已经经过了十年。它还能在Windows上运行。 ![uGet is actually very full-featured, with a lot of the kind of functions that advanced torrent clients use](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/uget1.png) -uGet的功能其实非常全面,有很多先进的BT下载客户端所拥有的功能 + +*uGet的功能其实非常全面,有很多先进的BT下载客户端所拥有的功能* #### 界面 #### @@ -23,40 +22,41 @@ uGet让我们想起了许多BT下载客户端的界面:有着活跃、结束 #### 功能 #### -成熟的uGet完备了各种功能,包括按计划进行下载任务的启动和终止的高级功能,通过剪贴板批量下载,还能改变它在剪贴板里查找的文件的类型。虽然有插件选项,但不多。 +成熟的uGet完备了各种功能,包括按计划启动和终止下载任务的高级功能,通过剪贴板批量下载,还能改变它在剪贴板里查找的文件的类型。虽然有插件选项,但不多。 -#### 可得性 #### +#### 可获得性 #### -虽然在多数主要的发行版的软件库中都能得到它,但uGet网站上有着定期更新的适用于各种流行的发行版的二进制安装文件,还能轻易获得源代码。它的运行基于GTK 3+的图形库,所以它在某些桌面环境上的封装要比其他的小,然而我们得说,在KDE或其他Qt桌面上值得有这么一个额外的从属。 +虽然在多数主要的发行版的软件库中都能得到它,但uGet网站上有着定期更新的适用于各种流行的发行版的二进制安装文件,还能轻易获得源代码。它的运行基于GTK 3+的图形库,所以它在某些桌面环境上的封装要比其他的小,然而我们得说,在KDE或其他Qt桌面上值得为此添加额外的依赖库。 #### 总体评价 #### 8/10 -我们非常喜欢uGet——它种类繁多的功能和极高的人气,让它成为了能与Linux浏览器优雅结合的,万能的下载管理器。 +我们非常喜欢uGet——它种类繁多的功能和极高的人气,让它成为了能与Linux浏览器优雅结合的万能下载管理器。 ### [KGet][2] ### -KDE自家的下载管理器貌似原本是设计成与KDE的网页浏览器,Konqueror,一同工作的。它带来了我们这次测试中所期待的功能:多下载控制和对下载完成的文件计算校验和的能力。 +KDE自家的下载管理器貌似原本是设计成与KDE的网页浏览器 Konqueror 一同工作的。它带来了我们这次测试中所期待的功能:多下载控制和对下载完成的文件计算校验和的能力。 ![You need to manually activate the ability to keep an eye on the clipboard for links](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/kget1.png) -你需要手动激活查看剪贴板中下载链接的功能 + +*你需要手动激活查看剪贴板中下载链接的功能* #### 界面 #### -作为一个备受期待的KDE应用软件,KGet用一贯的图标和线条,与桌面环境的审美风格完美融合。它的设计也相当简洁,在主工具栏里只显示最必要的功能,当前下载也以最小界面显示。 +作为一个备受期待的KDE应用软件,KGet采用一贯的图标和线条,与桌面环境的审美风格完美融合。它的设计也相当简洁,在主工具栏里只显示最必要的功能,当前下载也以最小界面显示。 #### 集成 #### -KGet会集成到本地的KDE的Konqueror浏览器里,虽然它并不是最流行的浏览器。Firefox对KGet的支持是一如往常的是通过FlashGot完成的,但是在Chromium里并没有任何一种方法能真正的将它集成进去。你可以打开一个询问你是否想下载已复制的URL的功能,然而KGet对于剪贴板的分析并不是很好,有的时候会把文本下载下来。 +KGet会集成到本地的KDE的Konqueror浏览器里,虽然它并不是最流行的浏览器。Firefox对KGet的支持是一如既往的是通过FlashGot完成的,但是在Chromium里并没有任何一种方法能真正的将它集成进去。你可以打开一个“询问你是否想下载已复制好的URL”的功能,然而KGet对于剪贴板的分析并不是很好,有的时候会把文本下载下来。 #### 功能 #### -能够选择的功能并不多。没有计划任务,没有批量下载,而且通常情况下,下载功能的数量几乎是光秃秃的。剪贴板扫描功能,想法很不错就是有点问题。设置菜单看起来有点怪怪的,因为它看起来应该设计有更多的功能。 +能够选择的功能并不多。没有计划任务,没有批量下载,基本上没有什么特色的下载功能。剪贴板扫描功能,想法很不错就是有点问题。设置菜单看起来有点怪怪的,因为它看起来应该设计有更多的功能。 -#### 可得性 #### +#### 可获得性 #### -虽然它不会随着KDE默认安装,但可以在任何支持KDE的发行版里得到它。虽然它的运行需要几个KDE库,找到它的源代码也很困难。支持如此少的发行版,二进制安装文件也没什么可选的。 +虽然它不会随着KDE默认安装,但可以在任何支持KDE的发行版里得到它。虽然它的运行需要几个KDE库,找到它的源代码也很困难。除了少数几个发行版之外也没有什么二进制安装文件。 #### 总体评价 #### @@ -66,14 +66,15 @@ KGet并没有真正的给予用户比大多数主流浏览器内置下载管理 ### [DownThemAll!][3] ### -经由Firefox的附件进入Linux的DownThemAll某种程度上可以说是跨平台。这让它只能通过Firefox使用,然而作为世界上最流行的浏览器之一,它这更加紧凑的集成也许正是某些人对下载管理器所期望的。 +经由Firefox的附属组件进入Linux的DownThemAll从某种程度上可以说是跨平台。这让它只能通过Firefox使用,然而作为世界上最流行的浏览器之一,它这更加紧凑的集成也许正是某些人对下载管理器所期望的。 ![There are actually a whole lot of options available for DownThemAll! that make it very flexible](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/down1.png) -其实在DownThemALL!上有很多选项可以设置,这让它非常的灵活 + +*其实在DownThemALL!上有很多选项可以设置,这让它非常的灵活* #### 界面 #### -与Firefox的集成使得DownThemAll!的风格符合浏览器的审美标准,右键单击可以唤出普通下载和DownThemAll选项。额外的对话框菜单通常和Firefox使用相同的主题,然而主下载窗口则非常整洁并且是基于它本身的设计。 +与Firefox的集成使得DownThemAll!的风格符合浏览器的审美标准,右键单击可以唤出普通下载和DownThemAll选项。额外的对话框菜单通常和Firefox的主题风格一致,然而主下载窗口则非常整洁并采用了它自己的设计。 #### 集成 #### @@ -81,11 +82,11 @@ KGet并没有真正的给予用户比大多数主流浏览器内置下载管理 #### 功能 #### -拥有着能同时控制多个下载任务的能力,限制而不荒废带宽以及先进的自动或手动过滤功能,DownThemAll!有着一大堆有助于大规模下载的优秀功能。“一键”功能还让它能非常迅速的启动到预定的文件夹中的下载。这比普通下载功能快多了。 +拥有着能同时控制多个下载任务的能力,限制而不浪费带宽以及先进的自动或手动过滤功能,DownThemAll!有着一大堆有助于大规模下载的优秀功能。“一键”功能还让它能非常迅速的启动预定文件夹的下载。这比普通下载功能快多了。 -#### 可得性 #### +#### 可获得性 #### -Firefox几乎能在所有的发行版和Linux以外的操作系统中获得。这让DownThemAll!也和它一样多产。不幸的是,这是一把双刃剑,因为Firefox可能不是你喜欢的浏览器。它还给浏览器增加了一些负担,让它的启动不再那么轻松。 +Firefox几乎能在所有的发行版和Linux以外的操作系统中获得。这让DownThemAll!也和它一样多能。不幸的是,这是一把双刃剑,因为Firefox可能不是你喜欢的浏览器。它还给浏览器增加了一些负担,让它的启动不再那么轻松。 #### 总体评价 #### @@ -95,10 +96,11 @@ DownThemAll!是很优秀的,如果你使用Firefox你也许就不再需要用 ### [Steadyflow][4] ### -Steadyflow很容易在Ubuntu和一些基于Debian的发行版中获得,获取到它的方式可能受到了限制,但它在某些圈子里一直被认为是你能得到的任何发行版里最好的管理器。它能查找剪贴板里的URL,使用GNOME的预设代理,还有许多其他的功能。 +Steadyflow很容易在Ubuntu和一些基于Debian的发行版中获得,获取它的方式可能受到了一些制约,但它在某些圈子里一直被认为是你能得到的任何发行版里最好的管理器。它能查找剪贴板里的URL,使用GNOME的预设代理,还有许多其他的功能。 ![The settings in Steady flow are extremely limiting and somewhat difficult to access](http://www.linuxuser.co.uk/wp-content/uploads/2014/08/steady1.png) -Steady flow里的设置非常受限,而且有点难以使用。 + +*Steady flow里的设置非常少,而且有点难以使用。* #### 界面 #### @@ -112,7 +114,7 @@ Steadyflow的形象相当简洁,令人愉悦的、干净的界面并没有让 极度缺少功能,选项菜单也受到很大限制。暂停和恢复功能看起来也不怎么好使——这是任何浏览器文件下载功能的最基本的部分。文件下载结束的通知和默认行为是可以设置的,还可以选择在文件下载完成之后运行脚本。 -#### 可得性 #### +#### 可获得性 #### 只能在Ubuntu上获取,还不容易得到这个应用的源代码。这意味着虽然在所有基于Ubuntu的发行版中都能很容易的得到它,但也仅限于这些发行版。由于它不是Linux上能得到的最好的下载管理器,所以也不用想太多。 @@ -126,7 +128,7 @@ Steadyflow的形象相当简洁,令人愉悦的、干净的界面并没有让 #### uGet #### -在此次测试中,我们已经证明了现代电脑中还是有下载管理器的一席之地的,即便它们中的佼佼者们从BT下载客户端中抄袭了某些功能,貌似侵犯了他们的权益。对于某些人来说BT下载可能是个更有效率的方式,随着ISP们对待BT流量越来越机智,一些人可能用一个好的下载管理器就得到更好的效果。大多数主流ISP不仅仅强加了数据转移标记,在高峰时段他们中的一些甚至开始减慢或封掉BT流量——甚至连发行版的ISO文件和其他免费软件的合法数据流都被限制了。 +在此次测试中,我们已经证明了现代电脑中还是有下载管理器的一席之地的,即便它们中的佼佼者们从BT下载客户端中抄袭了某些功能,貌似侵犯了他们的权益。对于某些人来说BT下载可能是个更有效率的方式,随着ISP们对待BT流量越来越机智,一些人可能用一个好的下载管理器就得到更好的效果。大多数主流ISP不仅仅强加了数据传输限额,在高峰时段他们中的一些甚至开始减慢或封掉BT流量——甚至连发行版的ISO文件和其他免费软件的合法数据流都被限制了。 对于这类问题Steadyflow看起来是非常受欢迎的解决方式,但我们的使用和测试显示出,它是一个未完成的简陋的产品。更加古老的uGet则是这场表演的明星,有着惊人数量的可选功能,这些功能既能在下载单一文件中有所帮助,还能在整个网页里过滤出相关元素进行抓取。DownThemAll!与之类似,优秀的Firefox有加分,但它也离不开Firefox,有着几乎同级别的功能,但集成效果更好。 @@ -140,7 +142,7 @@ via: http://www.linuxuser.co.uk/reviews/top-4-linux-download-managers 作者:Rob Zwetsloot 译者:[H-mudcup](https://github.com/H-mudcup) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 1a624a9c2a10a92b1218ca6ac3ea448093fd8c40 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 21 Feb 2015 01:38:18 +0800 Subject: [PATCH 354/725] [translated] 02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md --- ...igration From MySQL To MariaDB On Linux.md | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md diff --git a/translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md new file mode 100644 index 0000000000..e21084faeb --- /dev/null +++ b/translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md @@ -0,0 +1,169 @@ +Linux上从MySQL迁移到MariaDB的简单步骤 +================================================================================ +大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程。也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB。往下看我们告诉你为什么这样做。 + +### 为什么要用MariaDB来代替MySQL ### + +MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样。自从Oracle买下了MySQL,它就不再自由开源了,但是 **MariaDB仍然自由开源**。一些如谷歌、维基、LinkedIn、Mozilla等的顶级的网站已经迁移到MariaDB了。它的优势在哪里: + +- 向后兼容MySQL +- 永远开源 +- 由MySQL缔造者的维护 +- 更尖端的功能 +- 更多的存储引擎 +- 大型的网站已经转向MariaDB + +现在,让我们迁移到MariaDB吧! + +**以测试为目的**让我们创建一个叫**linoxidedb**的示例数据库。 + +使用以下命令用root账户登陆MySQL: + + $ mysql -u root -p + +输入mysql root用户的密码后,你将进入**mysql的命令行** + +**创建测试数据库:** + +在mysql命令行输入以下命令以创建测试数据库。 + + mysql> create database linoxidedb; + +查看可用的数据库,输入以下命令: + + mysql> show databases; + +![creating test databases](http://blog.linoxide.com/wp-content/uploads/2015/01/creating-test-databases.png) + +如你所见,算上刚刚新建的linoxidedb我们一共有5个数据库。 + + mysql> quit + +现在,我们就将刚创建的数据库从MySQL迁移到MariaDB。 + +注:使用CentOS这类基于fedora的linux发行版没有必要参考这篇教程,因为它们在安装MariaDB时会自动代替MySQL,无需备份现有的数据库,你只需要更新mysql就可以得到mariadb。 + +### 1. 备份现有的数据库 ### + +我们第一个重要的步骤就是备份现有的数据库。我们在**终端(不是MySQL命令行)**里输入如下命令来完成备份。 + + $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql + +哇哦!我们遇到了点麻烦。别担心我们可以搞定。 + + $ mysqldump: Error: Binlogging on server not active + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/mysqldump-error.png) +mysqldump error + +为了修复这个错误,我们需要对**my.cnf**文件做一些小改动。 + +编辑my.cnf文件: + + $ sudo nano /etc/mysql/my.cnf + +在[mysqld]部分添加如下参数。 + +**log-bin=mysql-bin** + +![configuring my.cnf](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-my.cnf_.png) + +好了在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启: + + $ sudo /etc/init.d/mysql restart + +现在,重新运行mysqldump命令来备份所有的数据库。 + + $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/crearing-bakup-file.png) +dumping databases + +上面的命令将会备份所有的数据库,把它们存储在当前目录下的**backupdatabase.sql**文件中。 + +### 2. 卸载MySQL ### + +首先,我们得把**my.cnt文件挪到安全的地方去**。 + +**注**:my.cnf文件将不会在你卸载MySQL包的时候被删除,我们这样做只是以防万一。在MariaDB安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。 + +在shell或终端中输入如下命令来备份my.cnt文件: + + $ sudo cp /etc/mysql/my.cnf my.cnf.bak + +运行命令来终止mysql服务: + + $ sudo /etc/init.d/mysql stop + +然后移除mysql包: + + $ sudo apt-get remove mysql-server mysql-client + +![uninstalling mysql](http://blog.linoxide.com/wp-content/uploads/2015/01/uninstalling-mysql.png) + +### 3. 安装MariaDB ### + +这是在Ubuntu系统中安装MariaDB的命令: + + $ sudo apt-get install software-properties-common + $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db + # sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main' + +![adding mariadb repo](http://blog.linoxide.com/wp-content/uploads/2015/01/adding-repo-mariadb.png) + +键值导入并且添加完仓库后你就可以用以下命令安装MariaDB了: + + $ sudo apt-get update + $ sudo apt-get install mariadb-server + +![installing mariadb](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-mariadb.png) + +![my.conf configuration prompt](http://blog.linoxide.com/wp-content/uploads/2015/01/my.conf-configuration-prompt.png) + +我们应该还没忘记在MariaDB安装时,它会问你是使用现有的my.cnf文件,还是包中自带的版本。你可以使用以前的my.cnf也可以用包中自带的。即使你想直接使用新的my.cnf文件,你依然可以晚点将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方那个去了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考[MariaDB官方仓库][2]。 + +### 4. 恢复配置文件 ### + +想要将my.cnf.bak中的内容恢复到my.cnf,在终端中输入以下命令。由于my.cnf.bak文件在当前目录下,所以我们只要简单的执行以下命令即可: + + $ sudo cp my.cnf.bak /etc/mysql/my.cnf + +### 5. 导入数据库 ### + +最后,让我们把我们之前创建的数据库导入吧!运行一下命令即可完成导入。 + + $ mysql -u root -p < backupdatabase.sql + +就这样,我们已成功将之前的数据库导入了进来。 + +来,让我们登陆一下mysql命令行,检查一下数据库是否真的已经导入了: + + $ mysql -u root -p + +![importing database](http://blog.linoxide.com/wp-content/uploads/2015/01/importing-database.png) + +为了检查数据库是否被迁移到MariaDB,请在MariaDB命令行中输入“**show databases**;”不用输入(“”),如下: + + mariaDB> show databases; + +![mysql to mariadb database migrated](http://blog.linoxide.com/wp-content/uploads/2015/01/maria-database-migrated.png) + +如你所见,linoxidedb及所有的数据库都已经成功的被迁移了。 + +### 总结 ### + +最后,我们已经成功地从MySQL迁移到了MariaDB数据库管理系统。MariaDB比MySQL好,虽然在性能方面MySQL还是比它更快,但是MariaDB的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下MySQL还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望那你能喜欢MariaDB。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://mariadb.org/ +[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi From 5b0d136f4944d76b29e63ee4dd923cb379e5bc9d Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 21 Feb 2015 01:40:00 +0800 Subject: [PATCH 355/725] [translated] 20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md --- ...igration From MySQL To MariaDB On Linux.md | 169 ++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md diff --git a/translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md new file mode 100644 index 0000000000..e21084faeb --- /dev/null +++ b/translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md @@ -0,0 +1,169 @@ +Linux上从MySQL迁移到MariaDB的简单步骤 +================================================================================ +大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程。也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB。往下看我们告诉你为什么这样做。 + +### 为什么要用MariaDB来代替MySQL ### + +MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样。自从Oracle买下了MySQL,它就不再自由开源了,但是 **MariaDB仍然自由开源**。一些如谷歌、维基、LinkedIn、Mozilla等的顶级的网站已经迁移到MariaDB了。它的优势在哪里: + +- 向后兼容MySQL +- 永远开源 +- 由MySQL缔造者的维护 +- 更尖端的功能 +- 更多的存储引擎 +- 大型的网站已经转向MariaDB + +现在,让我们迁移到MariaDB吧! + +**以测试为目的**让我们创建一个叫**linoxidedb**的示例数据库。 + +使用以下命令用root账户登陆MySQL: + + $ mysql -u root -p + +输入mysql root用户的密码后,你将进入**mysql的命令行** + +**创建测试数据库:** + +在mysql命令行输入以下命令以创建测试数据库。 + + mysql> create database linoxidedb; + +查看可用的数据库,输入以下命令: + + mysql> show databases; + +![creating test databases](http://blog.linoxide.com/wp-content/uploads/2015/01/creating-test-databases.png) + +如你所见,算上刚刚新建的linoxidedb我们一共有5个数据库。 + + mysql> quit + +现在,我们就将刚创建的数据库从MySQL迁移到MariaDB。 + +注:使用CentOS这类基于fedora的linux发行版没有必要参考这篇教程,因为它们在安装MariaDB时会自动代替MySQL,无需备份现有的数据库,你只需要更新mysql就可以得到mariadb。 + +### 1. 备份现有的数据库 ### + +我们第一个重要的步骤就是备份现有的数据库。我们在**终端(不是MySQL命令行)**里输入如下命令来完成备份。 + + $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql + +哇哦!我们遇到了点麻烦。别担心我们可以搞定。 + + $ mysqldump: Error: Binlogging on server not active + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/mysqldump-error.png) +mysqldump error + +为了修复这个错误,我们需要对**my.cnf**文件做一些小改动。 + +编辑my.cnf文件: + + $ sudo nano /etc/mysql/my.cnf + +在[mysqld]部分添加如下参数。 + +**log-bin=mysql-bin** + +![configuring my.cnf](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-my.cnf_.png) + +好了在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启: + + $ sudo /etc/init.d/mysql restart + +现在,重新运行mysqldump命令来备份所有的数据库。 + + $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/crearing-bakup-file.png) +dumping databases + +上面的命令将会备份所有的数据库,把它们存储在当前目录下的**backupdatabase.sql**文件中。 + +### 2. 卸载MySQL ### + +首先,我们得把**my.cnt文件挪到安全的地方去**。 + +**注**:my.cnf文件将不会在你卸载MySQL包的时候被删除,我们这样做只是以防万一。在MariaDB安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。 + +在shell或终端中输入如下命令来备份my.cnt文件: + + $ sudo cp /etc/mysql/my.cnf my.cnf.bak + +运行命令来终止mysql服务: + + $ sudo /etc/init.d/mysql stop + +然后移除mysql包: + + $ sudo apt-get remove mysql-server mysql-client + +![uninstalling mysql](http://blog.linoxide.com/wp-content/uploads/2015/01/uninstalling-mysql.png) + +### 3. 安装MariaDB ### + +这是在Ubuntu系统中安装MariaDB的命令: + + $ sudo apt-get install software-properties-common + $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db + # sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main' + +![adding mariadb repo](http://blog.linoxide.com/wp-content/uploads/2015/01/adding-repo-mariadb.png) + +键值导入并且添加完仓库后你就可以用以下命令安装MariaDB了: + + $ sudo apt-get update + $ sudo apt-get install mariadb-server + +![installing mariadb](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-mariadb.png) + +![my.conf configuration prompt](http://blog.linoxide.com/wp-content/uploads/2015/01/my.conf-configuration-prompt.png) + +我们应该还没忘记在MariaDB安装时,它会问你是使用现有的my.cnf文件,还是包中自带的版本。你可以使用以前的my.cnf也可以用包中自带的。即使你想直接使用新的my.cnf文件,你依然可以晚点将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方那个去了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考[MariaDB官方仓库][2]。 + +### 4. 恢复配置文件 ### + +想要将my.cnf.bak中的内容恢复到my.cnf,在终端中输入以下命令。由于my.cnf.bak文件在当前目录下,所以我们只要简单的执行以下命令即可: + + $ sudo cp my.cnf.bak /etc/mysql/my.cnf + +### 5. 导入数据库 ### + +最后,让我们把我们之前创建的数据库导入吧!运行一下命令即可完成导入。 + + $ mysql -u root -p < backupdatabase.sql + +就这样,我们已成功将之前的数据库导入了进来。 + +来,让我们登陆一下mysql命令行,检查一下数据库是否真的已经导入了: + + $ mysql -u root -p + +![importing database](http://blog.linoxide.com/wp-content/uploads/2015/01/importing-database.png) + +为了检查数据库是否被迁移到MariaDB,请在MariaDB命令行中输入“**show databases**;”不用输入(“”),如下: + + mariaDB> show databases; + +![mysql to mariadb database migrated](http://blog.linoxide.com/wp-content/uploads/2015/01/maria-database-migrated.png) + +如你所见,linoxidedb及所有的数据库都已经成功的被迁移了。 + +### 总结 ### + +最后,我们已经成功地从MySQL迁移到了MariaDB数据库管理系统。MariaDB比MySQL好,虽然在性能方面MySQL还是比它更快,但是MariaDB的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下MySQL还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望那你能喜欢MariaDB。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://mariadb.org/ +[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi From 2834e5efdb3397f6351fb908584f6e51515ea355 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 21 Feb 2015 01:41:06 +0800 Subject: [PATCH 356/725] Delete 02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md --- ...igration From MySQL To MariaDB On Linux.md | 169 ------------------ 1 file changed, 169 deletions(-) delete mode 100644 translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md diff --git a/translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md deleted file mode 100644 index e21084faeb..0000000000 --- a/translated/tech/02150211 Simple Steps Migration From MySQL To MariaDB On Linux.md +++ /dev/null @@ -1,169 +0,0 @@ -Linux上从MySQL迁移到MariaDB的简单步骤 -================================================================================ -大家好!这是一篇介绍如何在服务器或个人电脑上从MySQL迁移到MariaDB的教程。也许你会问为什么我们要将数据库管理从MySQL迁移到MariaDB。往下看我们告诉你为什么这样做。 - -### 为什么要用MariaDB来代替MySQL ### - -MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。它由MySQL前开发者们带头组织的基金会开发,使用起来和MySQL完全一样。自从Oracle买下了MySQL,它就不再自由开源了,但是 **MariaDB仍然自由开源**。一些如谷歌、维基、LinkedIn、Mozilla等的顶级的网站已经迁移到MariaDB了。它的优势在哪里: - -- 向后兼容MySQL -- 永远开源 -- 由MySQL缔造者的维护 -- 更尖端的功能 -- 更多的存储引擎 -- 大型的网站已经转向MariaDB - -现在,让我们迁移到MariaDB吧! - -**以测试为目的**让我们创建一个叫**linoxidedb**的示例数据库。 - -使用以下命令用root账户登陆MySQL: - - $ mysql -u root -p - -输入mysql root用户的密码后,你将进入**mysql的命令行** - -**创建测试数据库:** - -在mysql命令行输入以下命令以创建测试数据库。 - - mysql> create database linoxidedb; - -查看可用的数据库,输入以下命令: - - mysql> show databases; - -![creating test databases](http://blog.linoxide.com/wp-content/uploads/2015/01/creating-test-databases.png) - -如你所见,算上刚刚新建的linoxidedb我们一共有5个数据库。 - - mysql> quit - -现在,我们就将刚创建的数据库从MySQL迁移到MariaDB。 - -注:使用CentOS这类基于fedora的linux发行版没有必要参考这篇教程,因为它们在安装MariaDB时会自动代替MySQL,无需备份现有的数据库,你只需要更新mysql就可以得到mariadb。 - -### 1. 备份现有的数据库 ### - -我们第一个重要的步骤就是备份现有的数据库。我们在**终端(不是MySQL命令行)**里输入如下命令来完成备份。 - - $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql - -哇哦!我们遇到了点麻烦。别担心我们可以搞定。 - - $ mysqldump: Error: Binlogging on server not active - -![](http://blog.linoxide.com/wp-content/uploads/2015/01/mysqldump-error.png) -mysqldump error - -为了修复这个错误,我们需要对**my.cnf**文件做一些小改动。 - -编辑my.cnf文件: - - $ sudo nano /etc/mysql/my.cnf - -在[mysqld]部分添加如下参数。 - -**log-bin=mysql-bin** - -![configuring my.cnf](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-my.cnf_.png) - -好了在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启: - - $ sudo /etc/init.d/mysql restart - -现在,重新运行mysqldump命令来备份所有的数据库。 - - $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql - -![](http://blog.linoxide.com/wp-content/uploads/2015/01/crearing-bakup-file.png) -dumping databases - -上面的命令将会备份所有的数据库,把它们存储在当前目录下的**backupdatabase.sql**文件中。 - -### 2. 卸载MySQL ### - -首先,我们得把**my.cnt文件挪到安全的地方去**。 - -**注**:my.cnf文件将不会在你卸载MySQL包的时候被删除,我们这样做只是以防万一。在MariaDB安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。 - -在shell或终端中输入如下命令来备份my.cnt文件: - - $ sudo cp /etc/mysql/my.cnf my.cnf.bak - -运行命令来终止mysql服务: - - $ sudo /etc/init.d/mysql stop - -然后移除mysql包: - - $ sudo apt-get remove mysql-server mysql-client - -![uninstalling mysql](http://blog.linoxide.com/wp-content/uploads/2015/01/uninstalling-mysql.png) - -### 3. 安装MariaDB ### - -这是在Ubuntu系统中安装MariaDB的命令: - - $ sudo apt-get install software-properties-common - $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db - # sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main' - -![adding mariadb repo](http://blog.linoxide.com/wp-content/uploads/2015/01/adding-repo-mariadb.png) - -键值导入并且添加完仓库后你就可以用以下命令安装MariaDB了: - - $ sudo apt-get update - $ sudo apt-get install mariadb-server - -![installing mariadb](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-mariadb.png) - -![my.conf configuration prompt](http://blog.linoxide.com/wp-content/uploads/2015/01/my.conf-configuration-prompt.png) - -我们应该还没忘记在MariaDB安装时,它会问你是使用现有的my.cnf文件,还是包中自带的版本。你可以使用以前的my.cnf也可以用包中自带的。即使你想直接使用新的my.cnf文件,你依然可以晚点将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方那个去了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考[MariaDB官方仓库][2]。 - -### 4. 恢复配置文件 ### - -想要将my.cnf.bak中的内容恢复到my.cnf,在终端中输入以下命令。由于my.cnf.bak文件在当前目录下,所以我们只要简单的执行以下命令即可: - - $ sudo cp my.cnf.bak /etc/mysql/my.cnf - -### 5. 导入数据库 ### - -最后,让我们把我们之前创建的数据库导入吧!运行一下命令即可完成导入。 - - $ mysql -u root -p < backupdatabase.sql - -就这样,我们已成功将之前的数据库导入了进来。 - -来,让我们登陆一下mysql命令行,检查一下数据库是否真的已经导入了: - - $ mysql -u root -p - -![importing database](http://blog.linoxide.com/wp-content/uploads/2015/01/importing-database.png) - -为了检查数据库是否被迁移到MariaDB,请在MariaDB命令行中输入“**show databases**;”不用输入(“”),如下: - - mariaDB> show databases; - -![mysql to mariadb database migrated](http://blog.linoxide.com/wp-content/uploads/2015/01/maria-database-migrated.png) - -如你所见,linoxidedb及所有的数据库都已经成功的被迁移了。 - -### 总结 ### - -最后,我们已经成功地从MySQL迁移到了MariaDB数据库管理系统。MariaDB比MySQL好,虽然在性能方面MySQL还是比它更快,但是MariaDB的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下MySQL还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望那你能喜欢MariaDB。 - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:https://mariadb.org/ -[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi From 3654c31a6eb6ad8f1a24bd6f303fa2017029248a Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 21 Feb 2015 01:42:52 +0800 Subject: [PATCH 357/725] Delete 20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md --- ...igration From MySQL To MariaDB On Linux.md | 171 ------------------ 1 file changed, 171 deletions(-) delete mode 100644 sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md diff --git a/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md deleted file mode 100644 index fc04e08a2f..0000000000 --- a/sources/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md +++ /dev/null @@ -1,171 +0,0 @@ -Translating by martin. - -Simple Steps Migration From MySQL To MariaDB On Linux -================================================================================ -Hi all, this tutorial is all gonna be about how to migrate from MySQL to MariaDB on Linux Server or PC. So, you may ask why should we really migrate from MySQL to MariaDB for our database management. Here, below are the reasons why you should really need to migrate your database management system from MySQL to MariaDB. - -### Why should I use MariaDB instead of MySQL? ### - -MariaDB is an enhanced drop-in replacement and community-developed fork of the MySQL database system. It was developed by MariaDB foundation, and is being led by original developers of MySQL. Working with MariaDB is entirely same as MySQL. After Oracle bought MySQL, it is not free and open source anymore, but **MariaDB is still free and open source**. Top Websites like Google, Wikipedia, Linkedin, Mozilla and many more migrated to MariaDB. Its features are - -- Backwards compatible with MySQL -- Forever open source -- Maintained by MySQL's creator -- More cutting edge features -- More storage engines -- Large websites have switched - -Now, lets migrate to MariaDB. - -**For the testing purpose**, let us create a sample database called **linoxidedb** . - -Log in to MySQL as root user using the following command: - - $ mysql -u root -p - -Enter the mysql root user password. You’ll be redirected to the **mysql prompt**. - -**Create test databases:** - -Enter the following commands from mysql prompt to create test databases. - - mysql> create database linoxidedb; - -To view the list of available databases, enter the following command: - - mysql> show databases; - -![creating test databases](http://blog.linoxide.com/wp-content/uploads/2015/01/creating-test-databases.png) - -As see above, we have totally 5 databases including the newly created database linoxidedb . - - mysql> quit - -Now, we'll migrate the created databases from MySQL to MariaDB. - -Note: This tutorial is not necessary for CentOS, fedora based distribution of Linux because MariaDB is automatically installed instead of MySQL which requires no need to backup the existing databases, you just need to update mysql which will give you mariadb. - -### 1. Backup existing databases ### - -Our first important step is to create a backup of existing databases. To do that, we'll enter the following command from the **Terminal (not from MySQL prompt)**. - - $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql - -Oops! We encountered an error. No worries, it can be fixed. - - $ mysqldump: Error: Binlogging on server not active - -![](http://blog.linoxide.com/wp-content/uploads/2015/01/mysqldump-error.png) -mysqldump error - -To fix this error, we have to do a small modification in **my.cnf** file. - -Edit my.cnf file: - - $ sudo nano /etc/mysql/my.cnf - -Under [mysqld] section, add the following parameter. - -**log-bin=mysql-bin** - -![configuring my.cnf](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-my.cnf_.png) - -Now, after done save and exit the file. Then, we'll need to restart mysql server. To do that please execute the below commands. - - $ sudo /etc/init.d/mysql restart - -Now, re-run the mysqldump command to backup all databases. - - $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql - -![](http://blog.linoxide.com/wp-content/uploads/2015/01/crearing-bakup-file.png) -dumping databases - -The above command will backup all databases, and stores them in **backupdatabase.sql** in the current directory. - -### 2. Uninstalling MySQL ### - -First of all, we'll want to **backup the my.cnf file to a safe location**. - -**Note**: The my.cnf file will not be deleted when uninstalling MySQL packages. We do it for the precaution. During MariaDB installation, the installer will ask us to keep the existing my.cnf(old backup) file or to use the package containers version (i.e new one). - -To backup the my.cnf file, please enter the following commands in a shell or terminal. - - $ sudo cp /etc/mysql/my.cnf my.cnf.bak - -To stop mysql service, enter the following command from your Terminal. - - $ sudo /etc/init.d/mysql stop - -Then, remove mysql packages. - - $ sudo apt-get remove mysql-server mysql-client - -![uninstalling mysql](http://blog.linoxide.com/wp-content/uploads/2015/01/uninstalling-mysql.png) - -### 3. Installing MariaDB ### - -Here are the commands to run to install MariaDB on your Ubuntu system: - - $ sudo apt-get install software-properties-common - $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db - # sudo add-apt-repository 'deb http://mirror.mephi.ru/mariadb/repo/5.5/ubuntu trusty main' - -![adding mariadb repo](http://blog.linoxide.com/wp-content/uploads/2015/01/adding-repo-mariadb.png) - -Once the key is imported and the repository added you can install MariaDB with: - - $ sudo apt-get update - $ sudo apt-get install mariadb-server - -![installing mariadb](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-mariadb.png) - -![my.conf configuration prompt](http://blog.linoxide.com/wp-content/uploads/2015/01/my.conf-configuration-prompt.png) - -We should remember that during MariaDB installation, the installer will ask you either to use the existing my.cnf(old backup) file, or use the package containers version (i.e new one). You can either use the old my.cnf file or the package containers version. If you want to use the new my.cnf version, you can restore the contents of older my.cnf (We already have copied this file to safe location before) later ie my.cnf.bak . So, I will go for default which is N, we'll press N then. For other versions, please refer the [MariaDB official repositories page][2]. - -### 4. Restoring Config File ### - -To restore my.cnf from my.cnf.bak, enter the following command in Terminal. We have the old as my.cnf.bak file in our current directory, so we can simply copy the file using the following command: - - $ sudo cp my.cnf.bak /etc/mysql/my.cnf - -### 5. Importing Databases ### - -Finally, lets import the old databases that we created before. To do that, we'll need to run the following command. - - $ mysql -u root -p < backupdatabase.sql - -That’s it. We have successfully imported the old databases. - -Let us check if the databases are really imported. To do that, we'll wanna log in to mysql prompt using command: - - $ mysql -u root -p - -![importing database](http://blog.linoxide.com/wp-content/uploads/2015/01/importing-database.png) - -Now, to check whether the databases are migrated to MariaDB please run "**show databases**;" command inside the MarianDB prompt without quotes("") as - - mariaDB> show databases; - -![mysql to mariadb database migrated](http://blog.linoxide.com/wp-content/uploads/2015/01/maria-database-migrated.png) - -As you see in the above result all old databases including our very linoxidedb has been successfully migrated. - -### Conclusion ### - -Finally, we have successfully migrated our databases from MySQL to MariaDB Database Management System. MariaDB is far more better than MySQL. Though MySQL is still faster than MariaDB in performance but MariaDB is far more better because of its additional features and license. MariaDB is a Free and Open Source Software (FOSS) and will be FOSS forever but MySQL has many additional plugins, etc non-free and there is no proper public roadmap and won't be FOSS in future. If you have any questions, comments, feedback to us, please don't hesitate to write on the comment box below. Thank You ! And Enjoy MariaDB. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:https://mariadb.org/ -[2]:https://downloads.mariadb.org/mariadb/repositories/#mirror=mephi From 2f19219d128c9a4bbd91837378647b947210227e Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 21 Feb 2015 01:51:08 +0800 Subject: [PATCH 358/725] Update 20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改一个翻译错误 --- ...20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md index 254345f765..762e363beb 100644 --- a/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md +++ b/translated/tech/20150211 Install Mumble in Ubuntu an Opensource VoIP Apps.md @@ -1,6 +1,6 @@ Ubuntu上的一个开源VoIP应用——Mumble ================================================================================ -Mumble是一个免费开源的VoIP应用,遵守New BSD License,主要面向的用户群体是玩家。运行起来类似于TeamSpeak和Ventrilo,用户通过连接到同一个服务器来实现相互通讯。 +Mumble是一个自由开源的VoIP应用,遵守New BSD License,主要面向的用户群体是玩家。运行起来类似于TeamSpeak和Ventrilo,用户通过连接到同一个服务器来实现相互通讯。 Mumble提供了如下的一些特性: From 0fcd0d498b8d0467f35d660477429ffb15341083 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 21 Feb 2015 01:57:41 +0800 Subject: [PATCH 359/725] Update 20150215 How to share files between computers over network with btsync.md --- ... share files between computers over network with btsync.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150215 How to share files between computers over network with btsync.md b/sources/tech/20150215 How to share files between computers over network with btsync.md index 3af649b886..e892f2bb55 100644 --- a/sources/tech/20150215 How to share files between computers over network with btsync.md +++ b/sources/tech/20150215 How to share files between computers over network with btsync.md @@ -1,3 +1,5 @@ +translating by martin. + How to share files between computers over network with btsync ================================================================================ If you are the type of person who uses several devices to work online, I'm sure you must be using, or at least wishing to use, a method for syncing files and directories among those devices. @@ -133,4 +135,4 @@ via: http://xmodulo.com/share-files-between-computers-over-network.html [1]:https://play.google.com/store/apps/details?id=com.bittorrent.sync [2]:https://itunes.apple.com/us/app/bittorrent-sync/id665156116 [3]:http://www.getsync.com/ -[4]:http://www.getsync.com/tech-specs \ No newline at end of file +[4]:http://www.getsync.com/tech-specs From dbd9be1217475d4a3b0070983675bf04b837b68a Mon Sep 17 00:00:00 2001 From: coloka Date: Sat, 21 Feb 2015 10:43:25 +0800 Subject: [PATCH 360/725] [Translating]20150121 How to apply image effects to pictures on Raspberry Pi --- ...121 How to apply image effects to pictures on Raspberry Pi.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md b/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md index 920f542832..6f97f3454e 100644 --- a/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md +++ b/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md @@ -1,3 +1,4 @@ +Translating by coloka How to apply image effects to pictures on Raspberry Pi ================================================================================ Like a common pocket camera which has a built-in function to add various effects on captured photos, [Raspberry Pi camera board][1] ("raspi cam") can actually do the same. With the help of raspistill camera control options, we can add the image effects function like we have in a pocket camera. From 0615c77f20047b51976a660a928887c31b1d572d Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Feb 2015 22:40:26 +0800 Subject: [PATCH 361/725] PUB:20150105 How To Install Winusb In Ubuntu 14.04 @geekpi --- .../20150105 How To Install Winusb In Ubuntu 14.04.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20150105 How To Install Winusb In Ubuntu 14.04.md (69%) diff --git a/translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md b/published/20150105 How To Install Winusb In Ubuntu 14.04.md similarity index 69% rename from translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md rename to published/20150105 How To Install Winusb In Ubuntu 14.04.md index a65ba04392..8fb636c6d2 100644 --- a/translated/tech/20150105 How To Install Winusb In Ubuntu 14.04.md +++ b/published/20150105 How To Install Winusb In Ubuntu 14.04.md @@ -2,13 +2,13 @@ ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/WinUSB_Ubuntu_1404.jpeg) -[WinUSB][1]是一款即简单又有用的工具,可以让你从 Windows ISO 镜像或者 DVD 中创建 USB 安装盘。它结合了 GUI 和命令行,你可以根据你的喜好决定使用哪种。 +[WinUSB][1]是一款即简单又有用的工具,可以让你从 Windows ISO 镜像或者 DVD 中创建 USB 安装盘(LCTT译注:支持将 Windows Vista/7/8/PE 制作成 USB 安装盘)。它支持 GUI 和命令行,你可以根据你的喜好决定使用哪种。 在本文中我们会展示**如何在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB**。 ### 在 Ubuntu 14.04、14.10 和 Linux Mint 17 中安装 WinUSB ### -在 Ubuntu 13.10 之前, WinUSBu 一直都在积极开发,且在官方 PPA 中可以找到。这个 PPA 还没有为 Ubuntu 14.04 和 14.10 更新,但是二进制文件仍旧可在更新版本的 Ubuntu 和 Linux Mint 中运行。基于[你使用的系统是32位还是64位][2],使用下面的命令来下载二进制文件: +在 Ubuntu 13.10 之前, WinUSB 一直都在积极开发,且在官方 PPA 中可以找到。但这个 PPA 还没有为 Ubuntu 14.04 和 14.10 更新,不过其二进制文件仍旧可在更新版本的 Ubuntu 和 Linux Mint 中运行。基于[你使用的系统是32位还是64位][2],使用下面的命令来下载二进制文件: 打开终端,32位的系统下使用下面的命令: @@ -18,11 +18,11 @@ wget https://launchpad.net/~colingille/+archive/freshlight/+files/winusb_1.0.11+saucy1_amd64.deb -一旦你下载了正确的二进制包,你可以用下面的命令安装WinUSB: +当你下载了正确的二进制包,你可以用下面的命令安装WinUSB: sudo dpkg -i winusb* -不要担心在你安装WinUSB时看到错误。使用这条命令修复依赖错误: +不要担心在你安装WinUSB时看到的错误。使用这条命令修复依赖错误: sudo apt-get -f install From f1669fc0c4defed30d3c4ff32533a57048a1469d Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Feb 2015 23:07:03 +0800 Subject: [PATCH 362/725] PUB:20150106 How to deduplicate files on Linux with dupeGuru @geekpi --- ...eduplicate files on Linux with dupeGuru.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) rename {translated/tech => published}/20150106 How to deduplicate files on Linux with dupeGuru.md (51%) diff --git a/translated/tech/20150106 How to deduplicate files on Linux with dupeGuru.md b/published/20150106 How to deduplicate files on Linux with dupeGuru.md similarity index 51% rename from translated/tech/20150106 How to deduplicate files on Linux with dupeGuru.md rename to published/20150106 How to deduplicate files on Linux with dupeGuru.md index b8ffbd37e8..143e786e09 100644 --- a/translated/tech/20150106 How to deduplicate files on Linux with dupeGuru.md +++ b/published/20150106 How to deduplicate files on Linux with dupeGuru.md @@ -1,10 +1,10 @@ -如何在Linux上使用dupeGuru删除重复文件 +删除重复文件的神器:dupeGuru ================================================================================ -最近,我被要求清理我父亲的文件和文件夹。有一个难题是,里面存在很多不正确的名字的重复文件。有移动硬盘的备份,同时还为同一个文件编辑了多个版本,甚至改变的目录结构,同一个文件被复制了好几次,改变名字,改变位置等,这些挤满了磁盘空间。追踪每一个文件成了一个最大的问题。万幸的是,有一个小巧的软件可以帮助你省下很多时间来找到删除你系统中重复的文件:[dupeGuru][1]。它用Python写成,这个去重软件几个小时钱前切换到了GPLv3许可证。因此是时候用它来清理你的文件了! +最近,我需要清理我父亲的文件和文件夹。有一个难题是,里面存在很多不正确的名字的重复文件。有移动硬盘的备份,同时还为同一个文件编辑了多个版本,甚至改变的目录结构,同一个文件被复制了好几次,名字改变,位置改变等,这些文件挤满了磁盘空间。追踪每一个文件成了一个最大的问题。万幸的是,有一个小巧的软件可以帮助你省下很多时间来找到删除你系统中重复的文件:[dupeGuru][1]。它用Python写成,这个去重软件几个小时前切换到了GPLv3许可证。因此是时候用它来清理你的文件了! ### dupeGuru的安装 ### -在Ubuntu上, 你可以加入Hardcoded的软件PPA: +在Ubuntu上, 你可以加入如下硬编码的软件PPA: $ sudo apt-add-repository ppa:hsoft/ppa $ sudo apt-get update @@ -33,29 +33,29 @@ DupeGuru的构想是既快又安全。这意味着程序不会在你的系统上 ![](https://farm9.staticflickr.com/8600/16016041367_5ab2834efb_z.jpg) -注意的是默认上dupeGuru基于文件的内容匹配,而不是他们的名字。为了防止意外地删除了重要的文件,匹配那列列出了使用的匹配算法。在这里,你可以选择你想要删除的匹配文件,并按下“Action” 按钮来看到可用的操作。 +注意的是默认上dupeGuru基于文件的内容匹配,而不是他们的名字。为了防止意外地删除了重要的文件,匹配列列出了其使用的匹配算法。在这里,你可以选择你想要删除的匹配文件,并按下“Action” 按钮来看到可用的操作。 ![](https://farm8.staticflickr.com/7516/16199976361_c8f919b06e_b.jpg) -可用的选项是相当广泛的。简而言之,你可以删除重复、移动到另外的位置、忽略它们、打开它们、重命名它们甚至用自定义命令运行它们。如果你选择删除重复文件,你可能会像我一样非常意外竟然还有删除选项。 +可用的选项相当广泛。简而言之,你可以删除重复、移动到另外的位置、忽略它们、打开它们、重命名它们甚至用自定义命令运行它们。如果你希望删除重复文件,你可能会像我一样非常意外竟然有这么多种删除方式。 ![](https://farm8.staticflickr.com/7503/16014366568_54f70e3140.jpg) -你不及可以将删除文件移到垃圾箱或者永久删除,还可以选择留下指向原文件的链接(软链接或者硬链接)。也就是说,重复文件按将会删除但是会保留下指向原文件的链接。这将会省下大量的磁盘空间。如果你将这些文件导入到工作空间或者它们有一些依赖时很有用。 +你不仅可以将删除的文件移到垃圾箱或者永久删除,还可以选择留下指向原文件的链接(软链接或者硬链接)。也就是说,重复文件将会删除文件存储,但是会保留下一个指向原文件的链接。这将会省下大量的磁盘空间。如果你将这些文件导入到工作空间或者它们有一些依赖时很有用。 -还有一个奇特的选项:你可以用HTML或者CSV文件导出结果。不确定你会不会这么做,但是我假设你想追踪重复文件而不是想让dupeGuru处理它们时会有用。 +还有一个奇特的选项:你可以用HTML或者CSV文件导出结果。我不确定你会不会需要这么做,但是我假设你想追踪重复文件而不是想让dupeGuru处理它们时会有用。 -最后但并不是最不重要的是,偏好菜单可以让你对去重的想法成真。 +最后但并不是最不重要的是,偏好菜单可以让你按照你的想法来操作去重这件事。 ![](https://farm8.staticflickr.com/7493/16015755749_a9f343b943_z.jpg) -这里你可以选择扫描的标准,基于内容还是基于文字,并且有一个阈值来控制结果的数量。这里同样可以定义自定义在执行中可以选择的命令。在无数其他小的选项中,要注意的是dupeGuru默认忽略小于10KB的文件。 +这里你可以选择扫描的标准,基于内容还是基于名字,并且有一个阈值来控制结果的数量。这里同样可以定义自定义在执行中可以选择的命令。混在其他那些小的选项中,要注意的是dupeGuru默认忽略小于10KB的文件。 -要了解更多的信息,我建议你到[official website][4]官方网站看下,这里有很多文档、论坛支持和其他好东西。 +要了解更多的信息,我建议你到[官方网站][4]看下,这里有很多文档、论坛支持和其他好东西。 -总结一下,dupeGuru是我无论何时准备备份或者释放空间时想到的软件。我发现这对高级用户而言也足够强大了,对新人而言也很直观。锦上添花的是:dupeGuru是跨平台的额,这意味着你可以在Mac或者在Windows PC上都可以使用。如果你有特定的需求,想要清理音乐或者图片。这里有两个变种:[dupeguru-me][5]和 [dupeguru-pe][6], 相应地可以清理音频和图片文件。与常规版本的不同是它不仅比较文件格式还比较特定的媒体数据像质量和码率。 +总结一下,dupeGuru是我无论何时准备备份或者释放空间时所想到的软件。我发现这对高级用户而言也足够强大了,对新人而言也很直观。锦上添花的是:dupeGuru是跨平台的,这意味着你可以在Mac或者在Windows PC上都可以使用。如果你有特定的需求,想要清理音乐或者图片。这里有两个变种:[dupeguru-me][5]和 [dupeguru-pe][6], 相应地可以清理音频和图片文件。与常规版本的不同是它不仅比较文件格式还比较特定的媒体数据像质量和码率。 -你dupeGuru怎么样?你会考虑使用它么?或者你有任何可以替代的软件的建议么?让我在评论区知道你们的想法。 +你觉得dupeGuru怎么样?你会考虑使用它么?或者你有任何可以替代的软件的建议么?让我在评论区知道你们的想法。 -------------------------------------------------------------------------------- @@ -63,7 +63,7 @@ via: http://xmodulo.com/dupeguru-deduplicate-files-linux.html 作者:[Adrien Brochard][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 249a70a7c90bc0f886701ff32e4040b8091fff84 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Feb 2015 23:45:05 +0800 Subject: [PATCH 363/725] PUB:20150106 Managing Linux server configs with the SaltStack @GOLinux --- ...Linux server configs with the SaltStack.md | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) rename {translated/tech => published}/20150106 Managing Linux server configs with the SaltStack.md (90%) diff --git a/translated/tech/20150106 Managing Linux server configs with the SaltStack.md b/published/20150106 Managing Linux server configs with the SaltStack.md similarity index 90% rename from translated/tech/20150106 Managing Linux server configs with the SaltStack.md rename to published/20150106 Managing Linux server configs with the SaltStack.md index 1acf7c2434..44c980dddc 100644 --- a/translated/tech/20150106 Managing Linux server configs with the SaltStack.md +++ b/published/20150106 Managing Linux server configs with the SaltStack.md @@ -1,20 +1,21 @@ -SaltStack:Linux服务器配置管理神器 +通过 SaltStack 管理服务器配置 ================================================================================ ![](http://techarena51.com/wp-content/uploads/2015/01/SaltStack+logo+-+black+on+white.png) 我在搜索[Puppet][1]的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)。我发现Salt在配置和使用上都要比Puppet简单,当然这只是一家之言,你大可不必介怀。另外一个爱上Salt的理由是,它可以让你从命令行管理服务器配置,比如: -要通过Salt来更新所有服务器,你只需运行以下命令 +要通过Salt来更新所有服务器,你只需运行以下命令即可 - salt ‘*’ pkg.upgrade + salt '*' pkg.upgrade -**安装SaltStack到Linux上。** -如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从[这里][2]添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系哦。 +##安装SaltStack到Linux上## -Salt遵循服务器-客户端模式,服务器端称为领主,而客户端则称为下属。 +如果你是在CentOS 6/7上安装的话,那么Salt可以通过EPEL仓库获取到。而对于Pi和Ubuntu Linux用户,你可以从[这里][2]添加Salt仓库。Salt是基于python的,所以你也可以使用‘pip’来安装,但是你得用yum-utils或是其它包管理器来自己处理它的依赖关系。 -**安装并配置Salt领主** +Salt采用服务器-客户端模式,服务器端称为领主,而客户端则称为下属。 + +###安装并配置Salt领主### [root@salt-master~]# yum install salt-master @@ -27,7 +28,7 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但 [root@salt-master ~]# systemctl start salt-master -**安装并配置Salt下属** +###安装并配置Salt下属### [root@salt-minion~]#yum install salt-minion @@ -39,7 +40,7 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但 在启动时,下属客户机会生成一个密钥和一个id。然后,它会连接到Salt领主服务器并验证自己的身份。Salt领主服务器在允许下属客户机下载配置之前,必须接受下属的密钥。 -**在Salt领主服务器上列出并接受密钥** +###在Salt领主服务器上列出并接受密钥### # 列出所有密钥 [root@salt-master~] salt-key -L @@ -59,7 +60,7 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但 在接受下属客户机的密钥后,你可以使用‘salt’命令来立即获取信息。 -**Salt命令行实例** +##Salt命令行实例## # 检查下属是否启动并运行 [root@salt-master~] salt 'minion.com' test.ping @@ -75,15 +76,15 @@ Salt配置文件位于/etc/salt和/srv/salt。Salt虽然可以开箱即用,但 # 安装/更新所有服务器上的软件 [root@salt-master ~]# salt '*' pkg.install git -salt命令需要一些组件来发送信息,其中之一是mimion id,而另一个是下属客户机上要调用的函数。 +salt命令需要一些组件来发送信息,其中之一是下属客户机的id,而另一个是下属客户机上要调用的函数。 在第一个实例中,我使用‘test’模块的‘ping’函数来检查系统是否启动。该函数并不是真的实施一次ping,它仅仅是在下属客户机作出回应时返回‘真’。 ‘cmd.run’用于执行远程命令,而‘pkg’模块包含了包管理的函数。本文结尾提供了全部内建模块的列表。 -**颗粒实例** +###颗粒实例### -Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。 +Salt使用一个名为**颗粒(Grains)**的界面来获取系统信息。你可以使用颗粒在指定属性的系统上运行命令。 [root@vps4544 ~]# salt -G 'os:Centos' test.ping minion: @@ -91,11 +92,11 @@ Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用 更多颗粒实例,请访问http://docs.saltstack.com/en/latest/topics/targeting/grains.html -**通过状态文件系统进行包管理。** +##通过状态文件系统进行包管理## -为了是软件配置自动化,你需要使用状态系统,并创建状态文件。这些文件使用YAML格式和python字典、列表、字符串以及编号来构成数据结构。将这些文件从头到尾研读一遍,这将有助于你更好地理解它的配置。 +为了使软件配置自动化,你需要使用状态系统,并创建状态文件。这些文件使用YAML格式和python字典、列表、字符串以及编号来构成数据结构。将这些文件从头到尾研读一遍,这将有助于你更好地理解它的配置。 -**VIM状态文件实例** +###VIM状态文件实例### [root@salt-master~]# vim /srv/salt/vim.sls vim-enhanced: @@ -107,7 +108,7 @@ Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用 - group: root - mode: 644 -该文件的第一和第三行成为状态id,它们必须包含有需要管理的包或文件的确切名称或路径。在状态id之后是状态和函数声明,‘pkg’和‘file’是状态声明,而‘installed’和‘managed’是函数声明。函数接受参数,用户、组、模式和源都是函数‘managed’的参数。 +该文件的第一和第三行称为状态id,它们必须包含有需要管理的包或文件的确切名称或路径。在状态id之后是状态和函数声明,‘pkg’和‘file’是状态声明,而‘installed’和‘managed’是函数声明。函数接受参数,用户、组、模式和源都是函数‘managed’的参数。 要将该配置应用到下属客户端,请移动你的‘vimrc’文件到‘/src/salt’,然后运行以下命令。 @@ -253,7 +254,7 @@ Salt使用一个名为**颗粒**的界面来获取系统信息。你可以使用 [root@vps4544 ssh]# cp /etc/ssh/sshd_config /srv/salt/ssh/ [root@vps4544 ssh]# salt 'minion.com' state.sls ssh -**Top文件和环境。** +###Top文件和环境### top文件(top.sls)是用来定义你的环境的文件,它允许你映射下属客户机到包,默认环境是‘base’。你需要定义在基本环境下,哪个包会被安装到哪台服务器。 @@ -268,7 +269,7 @@ top文件(top.sls)是用来定义你的环境的文件,它允许你映射 dev: - /srv/salt/dev -现在,添加一个top.sls文件到/src/salt +现在,添加一个top.sls文件到/src/salt。 [root@salt-master ~]# vim /srv/salt/top.sls base: @@ -299,7 +300,9 @@ top文件(top.sls)是用来定义你的环境的文件,它允许你映射 下属客户机将下载top文件并搜索用于它的配置,领主服务器也会将配置应用到所有下属客户机。 -这仅仅是一个Salt的简明教程,如果你想要深入学习并理解,你可以访问以下链接。如果你已经在使用Salt,那么请告诉我你的建议和意见吧。 +--- + +这仅仅是一个Salt的简明教程,如果你想要深入学习并理解,你可以访问下面的链接。如果你已经在使用Salt,那么请告诉我你的建议和意见吧。 更新: [Foreman][3] 已经通过[插件][4]支持salt。 @@ -329,7 +332,7 @@ via: http://techarena51.com/index.php/getting-started-with-saltstack/ 作者:[Leo G][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From f49604a794e8a35c90b2dcf1cba330d931232196 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Feb 2015 23:51:54 +0800 Subject: [PATCH 364/725] PUB:20150115 Configure Mate Desktop With Mate Tweak @geekpi --- .../20150115 Configure Mate Desktop With Mate Tweak.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20150115 Configure Mate Desktop With Mate Tweak.md (92%) diff --git a/translated/tech/20150115 Configure Mate Desktop With Mate Tweak.md b/published/20150115 Configure Mate Desktop With Mate Tweak.md similarity index 92% rename from translated/tech/20150115 Configure Mate Desktop With Mate Tweak.md rename to published/20150115 Configure Mate Desktop With Mate Tweak.md index 7ae68abaae..3b2f1c972b 100644 --- a/translated/tech/20150115 Configure Mate Desktop With Mate Tweak.md +++ b/published/20150115 Configure Mate Desktop With Mate Tweak.md @@ -4,7 +4,7 @@ [在Ubuntu中安装Mate桌面][1]是一码事但是你或许想要知道如何**配置Mate桌面**? 大多数桌面环境都有它们自己的调整工具。比如Unity有Unity Tweak,Gnome有Gnome Tweak,Elementary OS有 Elementary OS Teweak。好消息是Mate桌面也有它自己的调整工具,叫Mate Tweak][2]。 -Mate Tweak是[mintDesktop][3]的克隆分支,一款Linux Mint的配置工具。 +Mate Tweak是[mintDesktop][3]的克隆分支,那是一款Linux Mint的配置工具。 ### 安装Mate Tweak来配置Mate桌面 ### @@ -22,7 +22,7 @@ via: http://itsfoss.com/configure-mate-desktop-mate-tweak/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 48a3204c132d03dd78941f3be1ca3e82bdd372d7 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sun, 22 Feb 2015 07:52:38 +0800 Subject: [PATCH 365/725] Translated --- ...fault Instead of Ubuntu Software Center.md | 48 ------------------- ...fault Instead of Ubuntu Software Center.md | 46 ++++++++++++++++++ 2 files changed, 46 insertions(+), 48 deletions(-) delete mode 100644 sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md create mode 100644 translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md diff --git a/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md deleted file mode 100644 index 55bca268d1..0000000000 --- a/sources/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md +++ /dev/null @@ -1,48 +0,0 @@ -Translating by FSSlc - -How To Make GDebi Default Instead of Ubuntu Software Center -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Make_GDebi_Default.jpeg) - -If you use Ubuntu or Ubuntu based Linux distribution such as Elementary OS Freya, you might be using Ubuntu Software Center to install .deb executable files. Ubuntu Software Center is a nice application for finding and installing apps but it is resource heavy and slow. This is why I prefer using [App Grid, a lighter alternative of Ubuntu Software Center][1]. - -Now, if you just trying to install a .deb file, I would not recommend either of Ubuntu Software Center or App Grid. I suggest GDebi, a dedicated program for installing Debian executable files. It is extremely lightweight and focused on installing .deb files. Best thing about GDebi is that it also shows the dependencies that will be installed along with the desired program. - -In this post we shall see **how to install GDebi and use it as the default installer instead of Ubuntu Software Center**. - -### Install GDebi in Ubuntu and other Linux distributions ### - -Open a terminal and use the following command: - - sudo apt-get install gdebi - -### Make GDebi default for .deb installation ### - -Once you have installed GDebi, it’s time to see how to make it the default application for installing .deb files. Please note that I am using Elementary OS Freya in this tutorial but the steps are applicable to all Ubuntu based distribution. Just the screenshots may look different. - -Download a .deb file first. Let’s say you have downloaded Google Chrome. Go to the download directory and right click on the .deb file. In here, go to **properties**. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default.jpeg) - -In the properties, you should see the option of **open with**. Click on it and change it to GDebi. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default_Ubuntu.jpeg) - -Next time you double click on a .deb file, it will automatically open GDebi to install the .deb file. Indeed using such light applications is a good way to [speed up Ubuntu][2] or other Linux systems. - -What do you say? You still prefer Ubuntu Software Center for application installation or GDebi? Or if you are old school, [Synaptic Package Manager][3] perhaps? Which one is your favorite? - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/gdebi-default-ubuntu-software-center/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/app-grid-lighter-alternative-ubuntu-software-center/ -[2]:http://itsfoss.com/speed-up-ubuntu-1310/ -[3]:http://www.nongnu.org/synaptic/ \ No newline at end of file diff --git a/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md new file mode 100644 index 0000000000..603c20cfce --- /dev/null +++ b/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md @@ -0,0 +1,46 @@ +如何是 GDebi 代替 Ubuntu Software Center 成为默认的 deb 包安装器 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Make_GDebi_Default.jpeg) + +假如你使用 Ubuntu 或像 Elementary OS Freya 一样的基于 Ubuntu 的 Linux 发行版本,也许你使用 Ubuntu 软件中心 来安装 `.deb` 可执行文件。对于查找和安装应用, Ubuntu 软件中心 是一个很好的应用,但它会消耗很多资源且运行速度缓慢。这就是为什么我更偏爱使用 [App Grid,一个 Ubuntu 软件中心 的轻量替代品][1]。 + +现在,假如你只是尝试安装一个 `.deb` 文件, 我不会向你推荐 Ubuntu 软件中心 或 App Grid ,我的建议为 GDebi,一个安装 Debian 可执行文件的专用程序。它极其轻量,且专注于安装 `.deb` 文件。关于 GDebi 最好的功能是它也可以为你展示出将要安装的程序的依赖。 + +在这篇文章中,我们将见证 ** 如何安装 GDebi 和使用它代替 Ubuntu 软件中心 作为默认的安装器**。 + +### 在 Ubuntu 和其他 Linux 发行版本中安装 GDebi ### + +打开终端并使用下面的命令: + + sudo apt-get install gdebi + +### 使得 GDebi成为默认的 `.deb`包安装器 ### + +一旦你安装了 GDebi,就该是看看如何使它成为安装 `.deb` 文件的默认应用的时间了。请读者注意在这篇教程中 我使用的是 Elementary OS Freya ,但是下面的步骤对于所有基于 Ubuntu 的发行版本都是适用的。 + +首先下载一个 `.deb`文件。例如你已经下载了一个 Google Chrome 的 `.deb`包。进入下载目录并右击该 `.deb`文件。这里,接着选择 **属性**选项。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default.jpeg) + +在属性中,你应该可以看到 **打开方式** 选项。点击它并选择为 GDebi。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default_Ubuntu.jpeg) + +下次你双击一个 `.deb` 文件,将自动打开 GDebi 来安装`.deb` 文件。使用这样轻量的应用的确是一个[加速 Ubuntu][2] 或其他 Linux 系统的好方法。 + +你有什么意见呢?对于安装应用,你仍然偏爱于 Ubuntu 软件中心还是 GDebi 呢?抑或,假如你是一个守旧派,也许你更喜欢[[新立得软件包管理器(Synaptic Package Manager)][3]? 哪一个是你的最爱呢? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/gdebi-default-ubuntu-software-center/ + +作者:[Abhishek][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/app-grid-lighter-alternative-ubuntu-software-center/ +[2]:http://itsfoss.com/speed-up-ubuntu-1310/ +[3]:http://www.nongnu.org/synaptic/ \ No newline at end of file From 2f309610bfe286651c9966a14f12f932f31408f9 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sun, 22 Feb 2015 08:02:27 +0800 Subject: [PATCH 366/725] Update 20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 最后修改,确认翻译。 --- ...efault Instead of Ubuntu Software Center.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md index 603c20cfce..a8032e03ca 100644 --- a/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md +++ b/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md @@ -1,10 +1,10 @@ -如何是 GDebi 代替 Ubuntu Software Center 成为默认的 deb 包安装器 +如何使 GDebi 代替 Ubuntu Software Center 作为默认的 deb 包安装器 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Make_GDebi_Default.jpeg) -假如你使用 Ubuntu 或像 Elementary OS Freya 一样的基于 Ubuntu 的 Linux 发行版本,也许你使用 Ubuntu 软件中心 来安装 `.deb` 可执行文件。对于查找和安装应用, Ubuntu 软件中心 是一个很好的应用,但它会消耗很多资源且运行速度缓慢。这就是为什么我更偏爱使用 [App Grid,一个 Ubuntu 软件中心 的轻量替代品][1]。 +假如你使用 Ubuntu 或像 Elementary OS Freya 一样的基于 Ubuntu 的 Linux 发行版本,也许你使用 Ubuntu 软件中心 来安装 `.deb` 可执行文件。对于查找和安装应用, Ubuntu 软件中心 是一个很好的应用,但它会消耗很多资源且运行速度缓慢。这就是为什么我更偏爱使用 [App Grid,一个 Ubuntu 软件中心 的轻量替代品][1] 的原因。 -现在,假如你只是尝试安装一个 `.deb` 文件, 我不会向你推荐 Ubuntu 软件中心 或 App Grid ,我的建议为 GDebi,一个安装 Debian 可执行文件的专用程序。它极其轻量,且专注于安装 `.deb` 文件。关于 GDebi 最好的功能是它也可以为你展示出将要安装的程序的依赖。 +现在,假如你只是尝试安装一个 `.deb` 文件, 我不会向你推荐 Ubuntu 软件中心 或 App Grid ,我的建议为 GDebi,一个安装 Debian 可执行文件的专用程序。它极其轻量,且专注于安装 `.deb` 文件。关于 GDebi 最有用的功能是它也可以为你展示出将要安装的程序的依赖。 在这篇文章中,我们将见证 ** 如何安装 GDebi 和使用它代替 Ubuntu 软件中心 作为默认的安装器**。 @@ -14,11 +14,11 @@ sudo apt-get install gdebi -### 使得 GDebi成为默认的 `.deb`包安装器 ### +### 使得 GDebi 成为默认的 `.deb`包安装器 ### -一旦你安装了 GDebi,就该是看看如何使它成为安装 `.deb` 文件的默认应用的时间了。请读者注意在这篇教程中 我使用的是 Elementary OS Freya ,但是下面的步骤对于所有基于 Ubuntu 的发行版本都是适用的。 +一旦你安装了 GDebi,就该是看看如何使它成为安装 `.deb` 文件的默认应用的时刻了。请读者注意在这篇教程中 我使用的是 Elementary OS Freya ,但下面的步骤对于所有基于 Ubuntu 的发行版本都是适用的。 -首先下载一个 `.deb`文件。例如你已经下载了一个 Google Chrome 的 `.deb`包。进入下载目录并右击该 `.deb`文件。这里,接着选择 **属性**选项。 +首先下载一个 `.deb`文件。例如你已经下载了一个 Google Chrome 的 `.deb`包。进入下载目录并右击该 `.deb`文件。在这里,接着选择 **属性**选项。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default.jpeg) @@ -26,9 +26,9 @@ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default_Ubuntu.jpeg) -下次你双击一个 `.deb` 文件,将自动打开 GDebi 来安装`.deb` 文件。使用这样轻量的应用的确是一个[加速 Ubuntu][2] 或其他 Linux 系统的好方法。 +这样下次你双击一个 `.deb` 文件,便会自动打开 GDebi 来安装这个`.deb` 文件。使用这样轻量的应用的确是一个[加速 Ubuntu][2] 或其他 Linux 系统的好方法。 -你有什么意见呢?对于安装应用,你仍然偏爱于 Ubuntu 软件中心还是 GDebi 呢?抑或,假如你是一个守旧派,也许你更喜欢[[新立得软件包管理器(Synaptic Package Manager)][3]? 哪一个是你的最爱呢? +你有什么意见呢?对于安装应用,你仍然偏爱于 Ubuntu 软件中心 还是 GDebi 呢?抑或,假如你是一个守旧派,也许你更喜欢 [新立得软件包管理器(Synaptic Package Manager)][3]? 哪一个是你的最爱呢? -------------------------------------------------------------------------------- @@ -43,4 +43,4 @@ via: http://itsfoss.com/gdebi-default-ubuntu-software-center/ [a]:http://itsfoss.com/author/abhishek/ [1]:http://itsfoss.com/app-grid-lighter-alternative-ubuntu-software-center/ [2]:http://itsfoss.com/speed-up-ubuntu-1310/ -[3]:http://www.nongnu.org/synaptic/ \ No newline at end of file +[3]:http://www.nongnu.org/synaptic/ From 2d0ca99ca21473467fa83eafc723e20a5771bb88 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sun, 22 Feb 2015 08:18:30 +0800 Subject: [PATCH 367/725] [Translating] 20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md --- ...11 Useful Utilities To Supercharge Your Ubuntu Experience.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md b/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md index e947762b7c..928778fc4b 100644 --- a/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md +++ b/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md @@ -1,3 +1,5 @@ +Translating by FSSlc + 11 Useful Utilities To Supercharge Your Ubuntu Experience ================================================================================ **Whether you’re a relative novice or a seasoned pro, we all want to get the most from our operating system. Ubuntu, like most modern OSes, has more to offer than what is presented at first blush.** From 81b5755ebd49efdeeb5b63b53669ed63c8c02747 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 22 Feb 2015 14:01:32 +0800 Subject: [PATCH 368/725] translating --- sources/tech/20150225 How to Hide PHP Version in Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150225 How to Hide PHP Version in Linux.md b/sources/tech/20150225 How to Hide PHP Version in Linux.md index ddc219bac1..edd042e8f2 100644 --- a/sources/tech/20150225 How to Hide PHP Version in Linux.md +++ b/sources/tech/20150225 How to Hide PHP Version in Linux.md @@ -1,3 +1,5 @@ +Translating----geekpi + How to Hide PHP Version in Linux ================================================================================ In general, most of the web server software has been installed with default settings that will lead to information leakage. One of them is a PHP software. PHP (Hypertest Preprocessor) is one of the most popular server-side HTML embedded scripting language for the websites today. In the current challenging times, there are lots of attacker will try to discover the weaknesses in your your server system. Hence, i will describe the simple way to hide the PHP information in Linux server. @@ -53,4 +55,4 @@ via: http://www.ehowstuff.com/how-to-hide-php-version-in-linux/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.ehowstuff.com/author/mhstar/ -[1]:http://www.ehowstuff.com/archives/ \ No newline at end of file +[1]:http://www.ehowstuff.com/archives/ From 972a0dcc68cd2ebf3c195141f3911adc8cebb91f Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 22 Feb 2015 14:18:51 +0800 Subject: [PATCH 369/725] translated --- ...0150225 How to Hide PHP Version in Linux.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) rename {sources => translated}/tech/20150225 How to Hide PHP Version in Linux.md (53%) diff --git a/sources/tech/20150225 How to Hide PHP Version in Linux.md b/translated/tech/20150225 How to Hide PHP Version in Linux.md similarity index 53% rename from sources/tech/20150225 How to Hide PHP Version in Linux.md rename to translated/tech/20150225 How to Hide PHP Version in Linux.md index edd042e8f2..1634ff2af2 100644 --- a/sources/tech/20150225 How to Hide PHP Version in Linux.md +++ b/translated/tech/20150225 How to Hide PHP Version in Linux.md @@ -1,18 +1,16 @@ -Translating----geekpi - -How to Hide PHP Version in Linux +如何在Linux中隐藏PHP版本 ================================================================================ -In general, most of the web server software has been installed with default settings that will lead to information leakage. One of them is a PHP software. PHP (Hypertest Preprocessor) is one of the most popular server-side HTML embedded scripting language for the websites today. In the current challenging times, there are lots of attacker will try to discover the weaknesses in your your server system. Hence, i will describe the simple way to hide the PHP information in Linux server. +通常上,大多数默认设置安装的web服务器存在信息泄露。这其中之一是PHP。PHP(超文本预处理器)是如今流行的服务端html嵌入式语言。在如今这个充满挑战的时代,有许多攻击者会尝试发现你服务端的漏洞。因此,我会简单描述如何在Linux服务器中隐藏PHP信息。 -By default **expose_php** is set to On. Turning off the “expose_php” parameter causes that PHP will hide it version details. +默认上**exposr_php**默认是开的。关闭“expose_php”参数可以使php隐藏它的版本信息。 [root@centos66 ~]# vi /etc/php.ini -In your php.ini, locate the line containing expose_php On and set it to Off: +在你的php.ini, 定位到含有expose_php的那行把On设成Off: expose_php = Off -Before the changes, web server header will look like below : +在此之前,web服务器头看上去就像这样: [root@centos66 ~]# curl -I http://www.ehowstuff.com/ @@ -28,7 +26,7 @@ Before the changes, web server header will look like below : X-Page-Speed: 1.9.32.2-4321 Cache-Control: max-age=0, no-cache -After the changes, PHP will no longer show the version to the web server header : +更改之后,php就不会在web服务头中显示版本了: [root@centos66 ~]# curl -I http://www.ehowstuff.com/ @@ -42,14 +40,14 @@ Date: Wed, 11 Feb 2015 14:10:43 GMT X-Page-Speed: 1.9.32.2-4321 Cache-Control: max-age=0, no-cache -As always if you need any help you can reach us on twitter @ehowstuff or drop us a comment below. [Jumping through archives page to read more articles..][1] +有任何需要帮助的请到twiiter @ehowstuff,或在下面留下你的评论。[点此获取更多历史文章][1] -------------------------------------------------------------------------------- via: http://www.ehowstuff.com/how-to-hide-php-version-in-linux/ 作者:[skytech][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 9587a9d871f240274f53b3c8285ca512d230662e Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Feb 2015 21:25:44 +0800 Subject: [PATCH 370/725] PUB:20150122 Linux FAQs with Answers--How to add a cron job on Linux @geekpi --- ...s with Answers--How to add a cron job on Linux.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) rename {translated/tech => published}/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md (81%) diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md b/published/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md similarity index 81% rename from translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md rename to published/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md index 6f0a5effe3..70326e249f 100644 --- a/translated/tech/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md +++ b/published/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md @@ -2,7 +2,7 @@ Linux 有问必答: 如何在Linux中加入cron任务 ================================================================================ > **提问**: 我想在我的Linux中安排一个计划任务,该任务在固定时间周期性地运行。我该如何在Linux中添加一个cron任务? -cron是Linux中默认的计划任务。使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的,比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。 +cron是Linux中默认的计划任务。使用cron,你可以安排一个计划(比如:命令或者shell脚本)周期性地运行或者在指定的分钟、小时、天、周、月等特定时间运行。cron在你安排不同的常规维护任务时是很有用的,比如周期性地备份、日志循环、检查文件系统、监测磁盘空间等等。 ### 从命令行中添加cron任务 ### @@ -22,7 +22,7 @@ cron是Linux中默认的计划任务。使用cron,你可以安排一个计划 每个cron任务的格式如下。 - + <分钟> <小时> <日> <月> <星期> <命令> 前5个元素定义了任务的计划,最后一个元素是命令或者脚本的完整路径。 @@ -30,13 +30,13 @@ cron是Linux中默认的计划任务。使用cron,你可以安排一个计划 下面是一些cron任务示例。 -- *** * * * * /home/dan/bin/script.sh**: 每分钟运行。 +- **\* * * * * /home/dan/bin/script.sh**: 每分钟运行。 - **0 * * * * /home/dan/bin/script.sh**: 每小时运行。 -- **0 0 * * * /home/dan/bin/script.sh**: 每12小时运行。 +- **0 0 * * * /home/dan/bin/script.sh**: 每天零点运行。 - **0 9,18 * * * /home/dan/bin/script.sh**: 在每天的9AM和6PM运行。 - **0 9-18 * * * /home/dan/bin/script.sh**: 在9AM到6PM的每个小时运行。 - **0 9-18 * * 1-5 /home/dan/bin/script.sh**: 周一到周五的9AM到6PM每小时运行。 -- ***/10 * * * * /home/dan/bin/script.sh**: 每10分钟运行。 +- **\*/10 * * * * /home/dan/bin/script.sh**: 每10分钟运行。 一旦完成上面的设置步骤后,按下Ctrl+X来保存并退出编辑器。此时,新增的计划任务应该已经激活了。 @@ -61,6 +61,6 @@ cron是Linux中默认的计划任务。使用cron,你可以安排一个计划 via: http://ask.xmodulo.com/add-cron-job-linux.html 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From b9a3c78bc580d3b2de80dc4a885e1504be8d4553 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Feb 2015 22:03:48 +0800 Subject: [PATCH 371/725] PUB:20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x @geekpi --- ...sing nmcli Tool in RedHat or CentOS 7.x.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) rename {translated/tech => published}/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md (73%) diff --git a/translated/tech/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md b/published/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md similarity index 73% rename from translated/tech/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md rename to published/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md index 10c19b2d92..62bb475206 100644 --- a/translated/tech/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md +++ b/published/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md @@ -10,7 +10,7 @@ nmcli的通常语法是: # nmcli [ OPTIONS ] OBJECT { COMMAND | help } -一件很酷的事情是你可以使用tab键来补全操作,这样你在何时忘记了语法你都可以用tab来看到可用的选项了。 +一件很酷的事情是你可以使用tab键来补全操作,这样你在何时忘记了语法你都可以按下tab来看到可用的选项了。 ![nmcli tab](http://blog.linoxide.com/wp-content/uploads/2014/12/nmcli-tab.jpg) @@ -46,33 +46,33 @@ nmcli通常用法的一些例子: # nmcli device connect eno16777736 -### 使用静态IP添加一个以太网连接 ### +### 添加一个使用静态IP的以太网连接 ### 要用静态IP添加一个以太网连接可以使用下面的命令: - # nmcli connection add type ethernet con-name NAME_OF_CONNECTION ifname interface-name ip4 IP_ADDRESS gw4 GW_ADDRESS + # nmcli connection add type ethernet con-name NAME_OF_CONNECTION ifname INTERFACE-NAME ip4 IP_ADDRESS gw4 GW_ADDRESS -将NAME_OF_CONNECTION替换成新的连接名,IP_ADDRESS替换成你要的IP地址,GW_ADDRESS替换成你使用的网关地址(如果你并不使用网关,你可以忽略这部分)。 +将NAME_OF_CONNECTION替换成新的连接名(LCTT 译注:这个名字以后可以用来对其操作,可以使用任何简单明了的名称),INTERFACE-NAME 替换成你的接口名,IP_ADDRESS替换成你要的IP地址,GW_ADDRESS替换成你使用的网关地址(如果你并不使用网关,你可以忽略这部分)。 - # nmcli connection add type ethernet con-name NEW ifname eno16777736 ip4 192.168.1.141 gw4 192.168.1.1 + # nmcli connection add type ethernet con-name NEW_STATIC ifname eno16777736 ip4 192.168.1.141 gw4 192.168.1.1 -=要设置这个连接的DNS服务器使用下面的命令: +要设置这个连接所使用的DNS服务器使用下面的命令: - # nmcli connection modify NEW ipv4.dns "8.8.8.8 8.8.4.4" + # nmcli connection modify NEW_STATIC ipv4.dns "8.8.8.8 8.8.4.4" 要启用新的以太网连接,使用下面的命令: - # nmcli connection up NEW ifname eno16777736 + # nmcli connection up NEW_STATIC ifname eno16777736 要查看新配置连接的详细信息,使用下面的命令: - # nmcli -p connection show NEW + # nmcli -p connection show NEW_STATIC ![nmcli add static](http://blog.linoxide.com/wp-content/uploads/2014/12/nmcli-add-static.jpg) ### 添加一个使用DHCP的连接 ### -如果你想要添加一个使用DHCP来配置接口IP地址、网关地址和dns服务器地址的新的连接,你要做的就是忽略命令中的ip/gw部分,NetworkManager会自动使用DHCP来获取配置细节。 +如果你想要添加一个使用DHCP来配置接口IP地址、网关地址和dns服务器地址的新的连接,你要做的就是忽略上述命令中的ip/gw部分,NetworkManager会自动使用DHCP来获取配置细节。 比如,要创建一个新的叫NEW_DHCP的DHCP连接,在设备eno16777736上你可以使用下面的命令: @@ -84,7 +84,7 @@ via: http://linoxide.com/linux-command/nmcli-tool-red-hat-centos-7/ 作者:[Adrian Dinu][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7055871c69fc31e8bbc3cb69a5eeb3c43b2e64ab Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Feb 2015 22:49:54 +0800 Subject: [PATCH 372/725] PUB:20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror @FSSlc --- ...l Repository in Ubuntu using APT-mirror.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename {translated/tech => published}/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md (65%) diff --git a/translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md b/published/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md similarity index 65% rename from translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md rename to published/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md index c49b52c461..dc9d72ef77 100644 --- a/translated/tech/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md +++ b/published/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md @@ -1,16 +1,16 @@ -在 Ubuntu中使用 APT-mirror 简单四步配置本地软件仓库 +使用 APT-mirror 四步配置 Ubuntu 本地软件仓库 ================================================================================ -今天,我们将向你展示如何在你的 Ubuntu 个人电脑 或 Ubuntu 服务器 中,直接通过 Ubuntu 官方软件仓库来配置本地软件仓库。在你的电脑中创建一个本地软件仓库有着许多的好处。假如你有许多电脑需要安装软件,安全升级和修复,那么配置一个本地软件仓库是一个高效的方法。因为,所有需要安装的软件包都可以通过快速局域网连接从你的本地服务器中下载,这样可以节省你的网络带宽,降低互联网的年度开支 ... +今天,我们将向你展示如何在你的 Ubuntu 个人电脑或 Ubuntu 服务器中,直接通过 Ubuntu 官方软件仓库来配置本地软件仓库。在你的电脑中创建一个本地软件仓库有着许多的好处。假如你有许多电脑需要安装软件 、安全升级和修复补丁,那么配置一个本地软件仓库是一个做这些事情的高效方法。因为,所有需要安装的软件包都可以通过快速的局域网连接从你的本地服务器中下载,这样可以节省你的网络带宽,降低互联网接入的年度开支 ... -你可以使用多种工具在你的本地个人电脑或服务器中配置一个 Ubuntu 的本地软件仓库,但在本教程中,我们将为你介绍 APT-Mirror。这里,我们将把默认的镜像包镜像到 我们本地的服务器或个人电脑中,并且在本地或外置硬盘中,我们至少需要 **120 GB** 或更多的可用空间。 上面的任务可以通过配置一个 **HTTP** 或 **FTP** 服务器来 与本地系统客户端共享软件包。 +你可以使用多种工具在你的本地个人电脑或服务器中配置一个 Ubuntu 的本地软件仓库,但在本教程中,我们将为你介绍 APT-Mirror。这里,我们将把默认的镜像包镜像到我们本地的服务器或个人电脑中,并且在你的本地或外置硬盘中,我们至少需要 **120 GB** 或更多的可用空间才行。 我们可以通过配置一个 **HTTP** 或 **FTP** 服务器来与本地系统客户端共享这个软件仓库。 我们需要安装 Apache 网络服务器和 APT-Mirror 来使得我们的工作得以开始。下面是配置一个可工作的本地软件仓库的步骤: ### 1. 安装需要的软件包 ### -首先,我们需要从 Ubuntu 的公共软件包仓库中取得所有的软件包,然后在我们本地的 Ubuntu 服务器硬盘中保存它们。 +我们需要从 Ubuntu 的公共软件包仓库中取得所有的软件包,然后在我们本地的 Ubuntu 服务器硬盘中保存它们。 -首先我们安装一个网络服务器来承载我们的本地软件仓库。这里我们将安装 Apache 网络服务器,但你可以安装任何你中意的网络服务器,对于 http 协议,网络服务器是必须的。假如你需要配置 ftp 协议 及 rsync 协议,你还可以再分别额外安装 FTP 服务器,如 proftpd, vsftpd 等等 和 Rsync 。 +首先我们安装一个Web 服务器来承载我们的本地软件仓库。这里我们将安装 Apache Web 服务器,但你可以安装任何你中意的 Web 服务器。对于 http 协议,Web 服务器是必须的。假如你需要配置 ftp 协议 及 rsync 协议,你还可以再分别额外安装 FTP 服务器,如 proftpd, vsftpd 等等 和 Rsync 。 $ sudo apt-get install apache2 @@ -70,21 +70,21 @@ ![mirror-list-config](http://blog.linoxide.com/wp-content/uploads/2014/12/mirror-list-config.png) -**注: 你可以将上面的官方镜像服务器网址更改为离你最近的服务器的网址,而这可以访问 [Ubuntu Mirror Server][1]来得到。假如你并不着急并可以等待镜像的完成,你可以沿用默认的官方镜像服务器网址。** +**注: 你可以将上面的官方镜像服务器网址更改为离你最近的服务器的网址,可以通过访问 [Ubuntu Mirror Server][1]来找到这些服务器地址。假如你并不太在意镜像完成的时间,你可以沿用默认的官方镜像服务器网址。** -这里,我们将要镜像 最新和最大的 Ubuntu LTS 发行版 --- 即 Ubuntu 14.04 LTS (Trusty Tahr) --- 的软件包仓库,所以在上面的配置中发行版本号为 trusty 。假如我们需要镜像 Saucy 或其他的 Ubuntu 发行版本,请修改上面的 trusy 为相应的代号。 +这里,我们将要镜像最新和最大的 Ubuntu LTS 发行版 --- 即 Ubuntu 14.04 LTS (Trusty Tahr) --- 的软件包仓库,所以在上面的配置中发行版本号为 trusty 。假如我们需要镜像 Saucy 或其他的 Ubuntu 发行版本,请修改上面的 trusy 为相应的代号。 -现在,我们必须运行 apt-mirror 来下载或镜像 官方仓库中的所有软件包。 +现在,我们必须运行 apt-mirror 来下载或镜像官方仓库中的所有软件包。 sudo apt-mirror -从 Ubuntu 服务器中下载所有的软件包所花费的时间取决于 你和镜像服务器之间的网络连接速率和性能。我已经中断了下载,因为我已经下载好了 ... +从 Ubuntu 服务器中下载所有的软件包所花费的时间取决于你和镜像服务器之间的网络连接速率和性能。这里我中断了下载,因为我已经下载好了 ... ![downloading-packages](http://blog.linoxide.com/wp-content/uploads/2014/12/downloading-index.png) ### 3.配置网络服务器 ### -为了使得其他的电脑能够取得这个软件仓库,你需要一个网络服务器。你也可以通过 ftp 来完成这件事,但我选择使用一个网络服务器因为在上面的步骤 1 中我提及到使用网络服务器。因此,我们现在要对 Apache 服务器进行配置: +为了使得其他的电脑能够访问这个软件仓库,你需要一个Web服务器。你也可以通过 ftp 来完成这件事,但我选择使用一个Web服务器因为在上面的步骤 1 中我提及到使用Web服务器。因此,我们现在要对 Apache 服务器进行配置: 我们将为我们本地的软件仓库目录 建立一个到 Apache 托管目录 --- 即 `/var/www/ubuntu` --- 的符号链接。 @@ -105,7 +105,7 @@ deb http://192.168.0.100/ubuntu/ trusty main restricted universe -**注: 这里的 192.168.0.100 是我们的服务器电脑的 局域网 IP 地址,你需要替换为你的服务器电脑的局域网 IP 地址** +**注: 这里的 192.168.0.100 是我们的服务器电脑的局域网 IP 地址,你需要替换为你的服务器电脑的局域网 IP 地址** $ sudo apt-get update @@ -117,7 +117,7 @@ via: http://linoxide.com/ubuntu-how-to/setup-local-repository-ubuntu/ 作者:[Arun Pyasi][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c51591e9a20e3bcbc3fd51fb03f9a3156771aa03 Mon Sep 17 00:00:00 2001 From: coloka Date: Mon, 23 Feb 2015 08:31:19 +0800 Subject: [PATCH 373/725] =?UTF-8?q?=E3=80=90=E7=BF=BB=E8=AF=91=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E3=80=9120150121=20How=20to=20apply=20image=20effects?= =?UTF-8?q?=20to=20pictures=20on=20Raspberry=20Pi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...age effects to pictures on Raspberry Pi.md | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md b/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md index 6f97f3454e..f767522855 100644 --- a/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md +++ b/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md @@ -1,13 +1,12 @@ -Translating by coloka -How to apply image effects to pictures on Raspberry Pi +如何在树莓派上使用图片特效 ================================================================================ -Like a common pocket camera which has a built-in function to add various effects on captured photos, [Raspberry Pi camera board][1] ("raspi cam") can actually do the same. With the help of raspistill camera control options, we can add the image effects function like we have in a pocket camera. +现在使用[树莓派摄像头模组][1]("raspi cam"),也可以像使用卡片相机那样,给拍摄的照片增加各种各样的图片特效。 raspistill命令行工具,为您的树莓派提供了丰富的图片特效选项,来美化处理你的图片。 -There are [three comman-line applications][2] which can be utilized for [taking videos or pictures][3] with raspi cam, and one of them is the raspistill application. The raspistill tool offers various camera control options such as sharpness, contrast, brightness, saturation, ISO, exposure, automatic white balance (AWB), image effects. +你可以用[这3个命令行工具][2]来[抓取raspicam拍摄的照片或者视频][3],在这文章中将重点介绍其中的raspstill工具。raspstill工具提供了丰富的控制选项来处理图片,比如说:锐度(sharpness)、对比度(contrast)、亮度(brightness)、饱和度(saturation)、ISO、自动白平衡(AWB)、以及图片特效(image effect)等。 -In this article I will show how to apply exposure, AWB, and other image effects with raspistill while capturing pictures using raspi cam. To automate the process, I wrote a simple Python script which takes pictures and automatically applies a series of image effects to the pictures. The raspi cam documentation describes available types of the exposure, AWB, and image effects. In total, the raspi cam offers 16 types of image effects, 12 types of exposure, and 10 types of AWB values. +在这篇文章中,将介绍如何使用raspstill工具以及raspicam摄像头模组来控制照片的曝光、AWB以及其他的图片效果。我写了一个简单的python脚本来自动拍摄照片并在这些照片上自动应用各种图片特效。raspicam的帮助文档中介绍了该摄像头模组所支持的曝光模式、AWB和图片特效。总的来说,raspicam一共支持16种图片特效、12种曝光模式以及10种AWB选项。 -The simple Python script looks like the following. +Python脚本很简单,如下所示 。 #!/usb/bin/python import os @@ -30,32 +29,34 @@ The simple Python script looks like the following. The Python script operates as follows. First, create three array/list variable for the exposure, AWB and image effects. In the example, we use 2 types of exposure, 3 types of AWB, and 13 types of image effects values. Then make nested loops for applying the value of the three variables that we have. Inside the nested loop, execute the raspistill application. We specify (1) the output filename; (2) exposure value; (3) AWB value; (4) image effect value; (5) the time to take a photo, which is set to 1 second; and (6) the size of the photo, which is set to 640x480px. This Python script will create 78 different versions of a captured photo with a combination of 2 types of exposure, 3 types of AWB, and 13 types of image effects. -To execute the Python script, simply type: +这个脚本完成了以下几个工作。首先,脚本中定义了3个列表,分别用于枚举曝光模式、AWB模式以及图片特效。在这个实例中,我们将使用到2种曝光模式、3种AWB模式以及13种图片特效。脚本会遍历上述3种选项的各种组合,并使用这些参数组合来运行raspistill工具。传入的参数共6个,分别为:(1)输出文件名;(2)曝光模式;(3)AWB模式;(4)图片特效模式;(5)拍照时间,设为1秒;(6)图片尺寸,设为640x480。脚本会自动拍摄78张照片,每张照片会应用不同的特效参数。 + +执行这个脚本也很简单,只需键入下面的命令行: $ python name_of_this_script.py -Here is the first round of the sample result. +下面是抓取到一些样张。 ![](https://farm8.staticflickr.com/7483/16134215939_c93291158a_c.jpg) -### Bonus ### +### 小福利 ### -For those who are more interested, there is another way to access and control the raspi cam besides raspistill. [Picamera][4] a pure Python interface which provides APIs for accessing and controlling raspi cam, so that one can build a complex program for utilizing raspi cam according to their needs. If you are skilled at Python, picamera is a good feature-complete interface for implementing your raspi cam project. The picamera interface is included by default in the recent image of Raspbian. If your [Raspberry Pi][5] operating system is not new or not Raspbian, you can install it on your system as follows. +除了使用raspistill命令行工具来操控raspicam摄像模组以外,还有其他的方法可以用哦。[Picamera][4]是一个python库,它提供了操控raspicam摄像模组的的API接口,这样就可以便捷地构建更加复杂的应用程序。如果你精通python,那么picamera一定是你项目的好伙伴。picamera已经被默认集成到Raspbian最新版本的的镜像中。当然,如果你用的不是最新的Raspbian或者是使用其他的操作系统版本,你可以通过下面的方法来进行手动安装。 -First, install pip on your system by following [this guideline][6]. +首先,先在你的系统上安装pip,详见[指导][6]。 -Then, install picamera as follows. +然后,就可以按下面的方法安装picamera。 $ sudo pip install picamera -Refer to the [official documentation][7] on how to use picamera. +picamera的使用说明可以查阅[官方文档][7]。 -------------------------------------------------------------------------------- via: http://xmodulo.com/apply-image-effects-pictures-raspberrypi.html 作者:[Kristophorus Hadiono][a] -译者:[译者ID](https://github.com/译者ID) +译者:[coloka](https://github.com/coloka) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a160ee09c0f6db64360b0d26dd59afa24a39b5a4 Mon Sep 17 00:00:00 2001 From: coloka Date: Mon, 23 Feb 2015 08:36:00 +0800 Subject: [PATCH 374/725] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=EF=BC=8Csource=20->=20translated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0121 How to apply image effects to pictures on Raspberry Pi.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md (100%) diff --git a/sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md b/translated/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md similarity index 100% rename from sources/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md rename to translated/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md From 1a033c8cd8091ea6209ce14dfb8e0e53b6515e82 Mon Sep 17 00:00:00 2001 From: coloka Date: Mon, 23 Feb 2015 08:51:22 +0800 Subject: [PATCH 375/725] [translating]20150112 What are useful command-line network monitors on Linux.md --- ...112 What are useful command-line network monitors on Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20150112 What are useful command-line network monitors on Linux.md b/sources/tech/20150112 What are useful command-line network monitors on Linux.md index f17e45cbf4..eeda3f0542 100644 --- a/sources/tech/20150112 What are useful command-line network monitors on Linux.md +++ b/sources/tech/20150112 What are useful command-line network monitors on Linux.md @@ -1,3 +1,4 @@ +translating by coloka What are useful command-line network monitors on Linux ================================================================================ Network monitoring is a critical IT function for businesses of all sizes. The goal of network monitoring can vary. For example, the monitoring activity can be part of long-term network provisioning, security protection, performance troubleshooting, network usage accounting, and so on. Depending on its goal, network monitoring is done in many different ways, such as performing packet-level sniffing, collecting flow-level statistics, actively injecting probes into the network, parsing server logs, etc. From 9f404afc3085dde68a996557416027b886d6d068 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 23 Feb 2015 23:59:31 +0800 Subject: [PATCH 376/725] Translating by ZTinoZ --- .../share/20150114 What is a good IDE for C or C++ on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 2cf3d3ab37..42cf58e837 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -18,7 +18,7 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm9.staticflickr.com/8573/16088461968_c6a6c9e49a_c.jpg) -With a lot less features but a lot more flexibility, [Geany][6] is at the opposite of Eclipse. But what it lacks (like a debugger for example), Geany makes it up with nice little features: a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. +用With a lot less features but a lot more flexibility, [Geany][6] is at the opposite of Eclipse. But what it lacks (like a debugger for example), Geany makes it up with nice little features: a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. ### 4. MonoDevelop ### From 61918b428281ded98914991cbfcfba45c80aef4d Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 24 Feb 2015 01:06:09 +0800 Subject: [PATCH 377/725] Translating by ZTinoZ --- .../share/20150114 What is a good IDE for C or C++ on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 42cf58e837..0434deb27c 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -18,7 +18,7 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm9.staticflickr.com/8573/16088461968_c6a6c9e49a_c.jpg) -用With a lot less features but a lot more flexibility, [Geany][6] is at the opposite of Eclipse. But what it lacks (like a debugger for example), Geany makes it up with nice little features: a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. +牺牲了很多特色功能但是增加了很多灵活性,[Geany][6] is at the opposite of Eclipse. But what it lacks (like a debugger for example), Geany makes it up with nice little features: a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. ### 4. MonoDevelop ### From 91abf8ba733b044a0636c5fbeb973f1c417e7315 Mon Sep 17 00:00:00 2001 From: martin qi Date: Tue, 24 Feb 2015 15:04:08 +0800 Subject: [PATCH 378/725] Update and rename translated/tech to translated/tech/20150215 How to share files between computers over network with btsync.md --- ...ween computers over network with btsync.md | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 translated/tech/20150215 How to share files between computers over network with btsync.md diff --git a/translated/tech/20150215 How to share files between computers over network with btsync.md b/translated/tech/20150215 How to share files between computers over network with btsync.md new file mode 100644 index 0000000000..7155f789bf --- /dev/null +++ b/translated/tech/20150215 How to share files between computers over network with btsync.md @@ -0,0 +1,137 @@ +如何使用btsync通过网络实现电脑间文件共享 +================================================================================ +如果你是使用各式设备在网上工作的这类人,我相信你肯定需要一个在不同设备间同步文件及目录的方法,至少是非常渴望有这种功能。 + +BitTorrent Sync简称btsync,是一个基于BitTorrent(著名P2P文件分享协议)的免费跨平台同步工具。与传统BitTorrent客户端不同的是btsync用于传输加密和访问授权的是不同操作系统及设备中自动生成的键。 + +更具体点,当你想要通过btsync共享一些文件或文件夹,相应的读/写键(所谓的秘密编码)已经创建。这些键将会通过不同的途径例如HTTPS链接,电子邮件,二维码等被分享。一旦两台设备通过一个键配对成功,链接内容将会直接在其间同步。如果没有事先设置,传输将不会有文件大小和速度的限制。你可以在btsync中创建账号,以此来创建和管理通过网络分享的键和文件。 + +BitTorrent Sync可以在许多的操作系统上运行,包括Linux,MacOS X,Windows,在 [Android][1]和[iOS][2]上也可以使用。在这里,我们将教你在Linux环境(一台家用服务器)与Windows环境(一台笔记本电脑)之间如何使用BitTorrent Sync来同步文件。 + +### Linux下安装btsync ### + +BitTorrent Sync可以在[项目主页][3]直接下载。由于Windows版本的BitTorrent Syn安装起来十分简单,所以我们假设笔记本上已经安装了。我们把焦点放到Linux服务器上的安装和配置。 + +在下载页面中选择你的系统架构,右键相应链接,选择复制连接地址(或者简单的依靠浏览器判断),将链接粘贴到在终端中用wget下载,如下: + +**64位Linux:** + + # wget http://download.getsyncapp.com/endpoint/btsync/os/linux-x64/track/stable + +**32位Linux:** + + # wget http://download.getsyncapp.com/endpoint/btsync/os/linux-i386/track/stable + +![](https://farm9.staticflickr.com/8635/15895277773_8acf317e3c_c.jpg) + +下载完成后,把包中内容解压到你专门创建的目录中,为了完成这些: + + # cd /usr/local/bin + # mkdir btsync + # tar xzf stable -C btsync + +![](https://farm8.staticflickr.com/7306/16329173869_7dc8b64a39_b.jpg) + +现在你可以选择将/usr/local/bin/btsync添加到环境变量PATH中去。 + + export PATH=$PATH:/usr/local/bin/btsync + +或者在在该文件夹中运行btsync的二进制文件。我们推荐使用第一种方式,虽需要少量的输入但更容易记忆。 + +### 配置Btsync ### + +Btsync带有一个内置的网络服务器被用作其管理接口。想要使用这个接口你需要创建一个配置文件。你可以使用以下命令来创建: + + # btsync --dump-sample-config > btsync.config + +然后使用你最常用的编辑器对btsync.config文件的(webui部分)作以下修改 + + "listen" : "0.0.0.0:8888", + "login" : "yourusername", + "password" : "yourpassword" + +你可以选择任何用户名和密码。 + +![](https://farm9.staticflickr.com/8599/15895277793_da63841433_b.jpg) + +![](Feel free to check the README file in /usr/local/bin/btsync directory if you want to tweak the configuration further, but this will do for now.) + +### 第一次运行btsync ### + +作为一个系统的最高执行者我们需要依赖日志文件!所以在我们启动btsync之前,我们将先为btsync创建一个日志文件。 + + # touch /var/log/btsync.log + +最后,让我们开启btsync: + + # btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log + +![](https://farm8.staticflickr.com/7288/16327720298_ccf2cbedea_c.jpg) + +现在在你的浏览器中输入正在运行btsync监听的服务器IP地址和端口(我这是192.168.0.15:8888),同意隐私政策,条款和最终用户许可协议: + +![](https://farm9.staticflickr.com/8597/16327720318_d52551fc44_b.jpg) + +这样页面就会转到你安装的btsync主页: + +![](https://farm8.staticflickr.com/7412/16329544687_9a174527d8_c.jpg) + +点击添加文件夹并在你的文件系统中选择一个你想要分享的目录,在我们的例子中,我们使用的是/btsync: + +![](https://farm8.staticflickr.com/7407/16515452485_e25ded559f_b.jpg) + +现在这样就够了。在运行接下来的步骤之前,请先在Windows主机(或你想使用的其他Linux设备)上安装BitTorrent Sync。 + +### Btsync分享文件 ### + +下方的视频将会展示如何在安装Windows8的电脑[192.168.0.106]上分享现有的文件夹。在添加好想要同步的文件夹后,你会得到它的键,通过“Enter a key or link”菜单(上面的图已经展示过了)添加到你安装到的Linux机器上,并开始同步: + +注释:youtube视频 + + +现在用别的设备试试吧;找一个想要分享的文件夹或是一些文件,并通过Linux服务器的网络接口将键导入到你安装的“核心”btsync中。 + +### 使用常规用户开机自动运行btsync ### + +你们可能注意到了,视频中在同步文件时是使用'root'组的用户创建/btsync目录的。那是因为我们使用超级用户手动启动BitTorrent Sync的原因。在通常情况下,你会希望它开机自动使用无权限用户(www_data或是专门为此创建的账户,例如btsync)启动。 + +所以,我们创建了一个叫做btsync的用户,并在/etc/rc.local文件(exit 0行前)添加如下字段: + + sudo -u btsync /usr/local/bin/btsync/btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log + +最后,创建pid文件: + + # touch /usr/local/bin/btsync/.sync//sync.pid + +并递归更改/usr/local/bin/btsync的所属用户: + + # chown -R btsync:root /usr/local/bin/btsync + +现在重启试试,看看btsync是否正在由预期中的用户运行: +Now reboot and verify that btsync is running as the intended user: + +![](https://farm9.staticflickr.com/8647/16327988660_644f6d4505_c.jpg) + +基于你选择的发行版不同,你可能找到不同的方式来开机自启动btsync。在本教程中,我选择rc.local的方式是因为它在不同发行版中都可使用。 + +### 尾注 ### + +如你所见,BitTorrent Sync对你几乎就像一个无服务器的Dropbox。我说“几乎”的原因是:当你在局域网内同步数据时,同步在两个设备之间直接进行。然而如果你想要跨网段同步数据,并且你的设备可能要穿过防火墙的限制来配对,那就只能通过一个提供BitTorrent的第三方中继服务器来完成同步传输。虽然声称传输经过 [AES加密][4],你还是可能遇到不想放生的状况。为了你的隐私着想,务必在你共享的每个文件夹中关掉中继/跟踪选项。 + +希望这些对你有用!分享愉快! + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/share-files-between-computers-over-network.html + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:https://play.google.com/store/apps/details?id=com.bittorrent.sync +[2]:https://itunes.apple.com/us/app/bittorrent-sync/id665156116 +[3]:http://www.getsync.com/ +[4]:http://www.getsync.com/tech-specs From 0ed13ca5b50fbf5836b62679220400763c97a418 Mon Sep 17 00:00:00 2001 From: martin qi Date: Tue, 24 Feb 2015 15:07:19 +0800 Subject: [PATCH 379/725] Delete 20150215 How to share files between computers over network with btsync.md --- ...ween computers over network with btsync.md | 138 ------------------ 1 file changed, 138 deletions(-) delete mode 100644 sources/tech/20150215 How to share files between computers over network with btsync.md diff --git a/sources/tech/20150215 How to share files between computers over network with btsync.md b/sources/tech/20150215 How to share files between computers over network with btsync.md deleted file mode 100644 index e892f2bb55..0000000000 --- a/sources/tech/20150215 How to share files between computers over network with btsync.md +++ /dev/null @@ -1,138 +0,0 @@ -translating by martin. - -How to share files between computers over network with btsync -================================================================================ -If you are the type of person who uses several devices to work online, I'm sure you must be using, or at least wishing to use, a method for syncing files and directories among those devices. - -BitTorrent Sync, also known as btsync for short, is a cross-platform sync tool (freeware) which is powered by BitTorrent, the famous protocol for peer-to-peer (P2P) file sharing. Unlike classic BitTorrent clients, however, btsync encrypts traffic and grants access to shared files based on auto-generated keys across different operating system and device types. - -More specifically, when you add files or folder to btsync as shareable, corresponding read/write keys (so-called secret codes) are created. These keys are then shared among different devices via HTTPS links, emails, QR codes, etc. Once two devices are paired via a key, the linked content can be synced directly between them. There is no file size limit, and transfer speeds are never throttled unless you explicitly say so. You will be able to create accounts inside btsync, under which you can create and manage keys and files to share via web interface. - -BitTorrent Sync is available on multiple operating systems including Linux, MacOS X, Windows, as well as [Android][1] and [iOS][2]. In this tutorial, I will show you how to use BitTorrent Sync to sync files between a Linux box (a home server), and a Windows machine (a work laptop). - -### Installing Btsync on Linux ### - -BitTorrent Sync is available for download from the [project's website][3]. I assume that the Windows version of BiTorrent Sync is installed on a Windows laptop, which can be done very easily. I will focus on installing and configuring it on the Linux server. - -In the download page, choose your architecture, right click on the corresponding link, choose Copy link location (or similar, depending on your browser), and paste the link to wget in your terminal, as follows: - -**For 64-bit Linux:** - - # wget http://download.getsyncapp.com/endpoint/btsync/os/linux-x64/track/stable - -**For 32-bit Linux:** - - # wget http://download.getsyncapp.com/endpoint/btsync/os/linux-i386/track/stable - -![](https://farm9.staticflickr.com/8635/15895277773_8acf317e3c_c.jpg) - -Once the download has completed, extract the contents of the tarball into a directory specially created for that purpose: - - # cd /usr/local/bin - # mkdir btsync - # tar xzf stable -C btsync - -![](https://farm8.staticflickr.com/7306/16329173869_7dc8b64a39_b.jpg) - -You can now either add /usr/local/bin/btsync to your PATH environment variable. - - export PATH=$PATH:/usr/local/bin/btsync - -or run the btsync binary right from that folder. We'll go with the first option as it requires less typing and is easier to remember. - -### Configuring Btsync ### - -Btsync comes with a built-in web server which is used as the management interface for BitTorrent Sync. To be able to access the web interface, you need to create a configuration file. You can do that with the following command: - - # btsync --dump-sample-config > btsync.config - -Then edit the btsync.config file (webui section) with your preferred text editor, as follows: - - "listen" : "0.0.0.0:8888", - "login" : "yourusername", - "password" : "yourpassword" - -You can choose any username and password. - -![](https://farm9.staticflickr.com/8599/15895277793_da63841433_b.jpg) - -![](Feel free to check the README file in /usr/local/bin/btsync directory if you want to tweak the configuration further, but this will do for now.) - -### Running Btsync for the First Time ### - -As system administrators we believe in logs! So before we launch btsync, we will create a log file for btsync. - - # touch /var/log/btsync.log - -Finally it's time to start btsync: - - # btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log - -![](https://farm8.staticflickr.com/7288/16327720298_ccf2cbedea_c.jpg) - -Now point your web browser to the IP address of the Linux server and the port where btsync is listening on (192.168.0.15:8888 in my case), and agree to the privacy policies, terms, and EULA: - -![](https://farm9.staticflickr.com/8597/16327720318_d52551fc44_b.jpg) - -and you will be taken to the home page of your btsync installation: - -![](https://farm8.staticflickr.com/7412/16329544687_9a174527d8_c.jpg) - -Click on Add a folder, and choose a directory in your file system that you want to share. In our example, we will use /btsync: - -![](https://farm8.staticflickr.com/7407/16515452485_e25ded559f_b.jpg) - -That's enough by now. Please install BitTorrent Sync on your Windows machine (or another Linux box, if you want) before proceeding. - -### Sharing Files with Btsync ### - -The following screencast shows how to sync an existing folder in a Windows 8 machine [192.168.0.106]. After adding the desired folder, get its key, and add it in your Linux installation via the "Enter a key or link" menu (as shown in the previous image), and the sync will start: - -注释:youtube视频 - - -Now repeat the process for other computers or devices; selecting a folder or files to share, and importing the corresponding key(s) in your "central" btsync installation via the web interface on your Linux server. - -### Auto-start Btsync as a Normal User ### - -You will notice that the synced files in the screencast were created in the /btsync directory belonging to user and group 'root'. That is because we launched BitTorrent Sync manually as the superuser. However, under normal circumstances, you will want to have BitTorrent Sync start on boot and running as a non-privileged user (www-data or other special account created for that purpose, btsync user for example). - -To do so, create a user called btsync, and add the following stanza to the /etc/rc.local file (before the exit 0 line): - - sudo -u btsync /usr/local/bin/btsync/btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log - -Finally, create the pid file: - - # touch /usr/local/bin/btsync/.sync//sync.pid - -and change the ownership of /usr/local/bin/btsync recursively: - - # chown -R btsync:root /usr/local/bin/btsync - -Now reboot and verify that btsync is running as the intended user: - -![](https://farm9.staticflickr.com/8647/16327988660_644f6d4505_c.jpg) - -Based on your chosen distribution, you may find other ways to enable btsync to start on boot. In this tutorial I chose the rc.local approach since it's distribution-agnostic. - -### Final Remarks ### - -As you can see, BitTorrent Sync is almost like server-less Dropbox for you. I said "almost" because of this: When you sync between devices on the same local network, sync happens directly between two devices. However, if you try to sync across different networks, and the devices to be paired are behind restrictive firewalls, there is a chance that the sync traffic goes through a third-party relay server operated by BitTorrent. While they claim that the traffic is [AES-encrypted][4], you may still not want this to happen. For your privacy, be sure to turn off relay/tracker server options in every folder that you are sharing. - -Hope it helps! Happy syncing! - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/share-files-between-computers-over-network.html - -作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/gabriel -[1]:https://play.google.com/store/apps/details?id=com.bittorrent.sync -[2]:https://itunes.apple.com/us/app/bittorrent-sync/id665156116 -[3]:http://www.getsync.com/ -[4]:http://www.getsync.com/tech-specs From 9253cce7079a609ed7366a41501b3bdb65d6200b Mon Sep 17 00:00:00 2001 From: martin qi Date: Tue, 24 Feb 2015 15:09:02 +0800 Subject: [PATCH 380/725] translated --- ...to share files between computers over network with btsync.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/translated/tech/20150215 How to share files between computers over network with btsync.md b/translated/tech/20150215 How to share files between computers over network with btsync.md index 7155f789bf..c6cd7051c4 100644 --- a/translated/tech/20150215 How to share files between computers over network with btsync.md +++ b/translated/tech/20150215 How to share files between computers over network with btsync.md @@ -54,8 +54,6 @@ Btsync带有一个内置的网络服务器被用作其管理接口。想要使 ![](https://farm9.staticflickr.com/8599/15895277793_da63841433_b.jpg) -![](Feel free to check the README file in /usr/local/bin/btsync directory if you want to tweak the configuration further, but this will do for now.) - ### 第一次运行btsync ### 作为一个系统的最高执行者我们需要依赖日志文件!所以在我们启动btsync之前,我们将先为btsync创建一个日志文件。 From 6c741a8f1ff7a1420723d2025e830b0bb6b79649 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Feb 2015 21:47:07 +0800 Subject: [PATCH 381/725] PUB:20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty) @geekpi --- ...o Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md (84%) diff --git a/translated/tech/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md b/published/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md similarity index 84% rename from translated/tech/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md rename to published/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md index 95dca20588..ccbee5e704 100644 --- a/translated/tech/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md +++ b/published/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md @@ -2,7 +2,7 @@ ================================================================================ 今天我们将会在Ubuntu Server 14.04 LTS (Trusty)上安装一个博客平台Ghost。 -Ghost是一款设计优美的发布平台,很容易使用且对任何人都免费。它是免费的开源软件(FOSS),它的源码在Github上。截至2014年1月,它的界面很简单还有分析面板。编辑使用的是分屏显示。 +Ghost是一款设计优美的发布平台,很容易使用且对任何人都免费。它是免费的开源软件(FOSS),它的源码在Github上。截至2015年1月(LCTT 译注:原文为2014,应为2015),它的界面很简单还有分析面板。编辑使用的是很便利的分屏显示。 因此有了这篇步骤明确的在Ubuntu Server上安装Ghost的教程: @@ -52,12 +52,12 @@ Ghost是一款设计优美的发布平台,很容易使用且对任何人都免 sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost sudo chown -R ghost:ghost /var/www/ghost/ -现在启动Ghost,你需要以“ghsot”用户登录。 +现在启动Ghost,你需要以“ghost”用户登录。 su - ghost cd /var/www/ghost/ -现在,你已经以“ghsot”用户登录,并可启动Ghost: +现在,你已经以“ghost”用户登录,并可启动Ghost: npm start --production @@ -67,7 +67,7 @@ via: http://linoxide.com/ubuntu-how-to/install-ghost-ubuntu-server-14-04/ 作者:[Arun Pyasi][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 246f615ecfb12220daf150f4e9875a7fabcc8e07 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Feb 2015 22:05:33 +0800 Subject: [PATCH 382/725] PUB:20150105 Ubuntu apt-get and apt-cache commands with practical examples @geekpi --- ...-cache commands with practical examples.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename {translated/tech => published}/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md (90%) diff --git a/translated/tech/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md b/published/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md similarity index 90% rename from translated/tech/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md rename to published/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md index 7574a065f8..0b581084a5 100644 --- a/translated/tech/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md +++ b/published/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md @@ -1,6 +1,6 @@ -实例展示Ubuntu中apt-get和apt-cache命令的使用 +apt-get 和 apt-cache 命令实例展示 ================================================================================ -apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具。 apt-get的GUI版本是Synaptic包管理器,本篇中我们会讨论apt-get和apt-cache命令的不同。 +apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具。 apt-get的GUI版本是Synaptic包管理器。本篇中我们会展示apt-get和apt-cache命令的15个不同例子。 ### 示例:1 列出所有可用包 ### @@ -16,7 +16,7 @@ apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具 ### 示例:2 用关键字搜索包 ### -这个命令在你不确定包名时很有用,只要在apt-cache(这里原文是apt-get,应为笔误)后面输入与包相关的关键字即可/ +这个命令在你不确定包名时很有用,只要在apt-cache(LCTT 译注:这里原文是apt-get,应为笔误)后面输入与包相关的关键字即可。 linuxtechi@localhost:~$ apt-cache search "web server" apache2 - Apache HTTP Server @@ -37,7 +37,7 @@ apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具 pnp4nagios-bin: /etc/pnp4nagios/nagios.cfg pnp4nagios-bin: /usr/share/doc/pnp4nagios/examples/nagios.cfg -### 示例:3 显示特定包的基本信息 ### +### 示例:3 显示特定包的基本信息 ### linuxtechi@localhost:~$ apt-cache show postfix Package: postfix @@ -92,7 +92,7 @@ apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具 ### 示例:6 使用 “apt-get update” 更新仓库 ### -使用命令“apt-get update”, 我们可以重新从源仓库中同步文件索引。包的索引从“/etc/apt/sources.list”中检索 +使用命令“apt-get update”, 我们可以重新从源仓库中同步文件索引。包的索引从“/etc/apt/sources.list”中检索。 linuxtechi@localhost:~$ sudo apt-get update Ign http://extras.ubuntu.com utopic InRelease @@ -106,7 +106,7 @@ apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具 Ign http://in.archive.ubuntu.com utopic-backports InRelease ................................................................ -### 示例:7 使用apt-get安装包 ### +### 示例:7 使用apt-get安装包 ### linuxtechi@localhost:~$ sudo apt-get install icinga @@ -140,15 +140,15 @@ apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具 Get:1 http://in.archive.ubuntu.com/ubuntu/ utopic/universe icinga amd64 1.11.6-1build1 [1,474 B] Fetched 1,474 B in 1s (1,363 B/s) -上面的目录会从你当前的目录下载icinga包。 +上面的目录会把icinga包下载到你的当前工作目录。 ### 示例:12 清理本地包占用的磁盘空间 ### linuxtechi@localhost:~$ sudo apt-get clean -上面的命令会清零apt-get在下载包时占用的磁盘空间。 +上面的命令会清空apt-get所下载的包占用的磁盘空间。 -我们也可以使用“**autoclean**”选项来代替“**clean**“,两者之间主要的区别是autoclean清理不再使用且没用的下载。 +我们也可以使用“**autoclean**”选项来代替“**clean**”,两者之间主要的区别是autoclean清理不再使用且没用的下载。 linuxtechi@localhost:~$ sudo apt-get autoclean Reading package lists... Done @@ -167,9 +167,9 @@ apt-get和apt-cache是**Ubuntu Linux**中的命令行下的**包管理**工具 Get:1 Changelog for apache2 (http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.4.10-1ubuntu1/changelog) [195 kB] Fetched 195 kB in 3s (60.9 kB/s) -上面的命令会下载apache2的更新日志,并在你屏幕上显示。 +上面的命令会下载apache2的更新日志,并在你屏幕上分页显示。 -### 示例15 使用 “check” 选项显示损坏的依赖 ### +### 示例:15 使用 “check” 选项显示损坏的依赖关系 ### linuxtechi@localhost:~$ sudo apt-get check Reading package lists... Done @@ -182,7 +182,7 @@ via: http://www.linuxtechi.com/ubuntu-apt-get-apt-cache-commands-examples/ 作者:[Pradeep Kumar][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a328d57091f085ac37685abe9b67cd8f3638e117 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Feb 2015 22:38:29 +0800 Subject: [PATCH 383/725] PUB:20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7 @geekpi --- ...ling Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md (97%) diff --git a/translated/tech/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md b/published/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md similarity index 97% rename from translated/tech/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md rename to published/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md index 901ce4380f..0777cc4d0d 100644 --- a/translated/tech/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md +++ b/published/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md @@ -65,7 +65,7 @@ vi /etc/sysconfig/iptables -加入红色显示的行: +加入如下行“-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT”: # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. @@ -151,7 +151,7 @@ via: http://www.unixmen.com/installing-telnet-centosrhelscientific-linux-6-7/ 作者:[SK][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d05288ffb48b4221320c58ac65dea202e0cc9577 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Feb 2015 22:48:10 +0800 Subject: [PATCH 384/725] PUB:20150119 How To Disable IPv6 In CentOS 7 @geekpi --- .../20150119 How To Disable IPv6 In CentOS 7.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) rename {translated/tech => published}/20150119 How To Disable IPv6 In CentOS 7.md (88%) diff --git a/translated/tech/20150119 How To Disable IPv6 In CentOS 7.md b/published/20150119 How To Disable IPv6 In CentOS 7.md similarity index 88% rename from translated/tech/20150119 How To Disable IPv6 In CentOS 7.md rename to published/20150119 How To Disable IPv6 In CentOS 7.md index 080799f17c..a148053251 100644 --- a/translated/tech/20150119 How To Disable IPv6 In CentOS 7.md +++ b/published/20150119 How To Disable IPv6 In CentOS 7.md @@ -1,6 +1,6 @@ 如何在CentOS 7中禁止IPv6 ================================================================================ -最近,我的一位朋友问我该如何禁止IPv6。在搜索了一番之后,我找到了下面的方案。下面就是我在CentOS 7迷你版中禁止IPv6的方法。 +最近,我的一位朋友问我该如何禁止IPv6。在搜索了一番之后,我找到了下面的方案。下面就是在我的CentOS 7 迷你服务器禁止IPv6的方法。 你可以用两个方法做到这个。 @@ -41,7 +41,6 @@ ### 我在禁止IPv6后遇到问题怎么办 ### -You may get problems after disabling IPv6. 你可能在禁止IPv6后遇到一些问题 #### 问题1: #### @@ -60,9 +59,7 @@ vi /etc/ssh/sshd_config AddressFamily inet -或者, - -在这行的前面去掉注释**(#)**: +或者,在这行的前面去掉注释**(#)**: #ListenAddress 0.0.0.0 @@ -89,7 +86,7 @@ via: http://www.unixmen.com/disable-ipv6-centos-7/ 作者:[SK][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d0bbcb1237342da8fe5da14b6c064dfa6a266fd9 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Feb 2015 23:07:29 +0800 Subject: [PATCH 385/725] PUB:20150114 How to Configure Chroot Environment in Ubuntu 14.04 @bazz2 --- ...4 How to Configure Chroot Environment in Ubuntu 14.04.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {translated/tech => published}/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md (93%) diff --git a/translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md b/published/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md similarity index 93% rename from translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md rename to published/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md index 789cb8a7fe..250b223b2a 100644 --- a/translated/tech/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md +++ b/published/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md @@ -2,7 +2,7 @@ ================================================================================ 你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境。 -在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目,这些步骤都在 **Ubuntu 14.04** 虚拟专用服务器(VPS)上执行。 +在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目,以下这些步骤都在 **Ubuntu 14.04** 虚拟专用服务器(VPS)上执行。 学会快速搭建一个简单的 chroot 环境是一项非常实用的技能,绝大多数系统管理员都能从中受益。 @@ -22,7 +22,7 @@ 举个例子,你可以在 chroot 环境中编译、安装、测试软件,而不去动真实的系统。你也可以**在64位环境下使用 chroot 创建一个32位环境,然后运行一个32位的程序**(LCTT泽注:如果你的真实环境是32位的,那就不能 chroot 一个64位的环境了)。 -但是 为了安全考虑,chroot 环境为非特权用户设立了非常严格的限制,而不是提供完整的安全策略。如果你需要的是有完善的安全策略的隔离方案,可以考虑下 LXC、Docker、vservers等等。 +但是为了安全考虑,chroot 环境为非特权用户设立了非常严格的限制,而不是提供完整的安全策略。如果你需要的是有完善的安全策略的隔离方案,可以考虑下 LXC、Docker、vservers等等。 ### Debootstrap 和 Schroot ### @@ -138,7 +138,7 @@ via: http://linoxide.com/ubuntu-how-to/configure-chroot-environment-ubuntu-14-04 作者:[Arun Pyasi][a] 译者:[bazz2](https://github.com/bazz2) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 55d4582e200a0727161bfcbfc0b0035a0987a266 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 25 Feb 2015 10:55:40 +0800 Subject: [PATCH 386/725] PUB:20141203 Undelete Files on Linux Systems @FSSlc --- ...0141203 Undelete Files on Linux Systems.md | 127 ++++++++++++++++++ ...0141203 Undelete Files on Linux Systems.md | 118 ---------------- 2 files changed, 127 insertions(+), 118 deletions(-) create mode 100644 published/20141203 Undelete Files on Linux Systems.md delete mode 100644 translated/tech/20141203 Undelete Files on Linux Systems.md diff --git a/published/20141203 Undelete Files on Linux Systems.md b/published/20141203 Undelete Files on Linux Systems.md new file mode 100644 index 0000000000..59367ed918 --- /dev/null +++ b/published/20141203 Undelete Files on Linux Systems.md @@ -0,0 +1,127 @@ +怎样在 Linux 系统中恢复已删除文件 +================================================================================ + +当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件。不过,幸运的是文件是可以通过一些方法恢复的。当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间。 + +这里将解释它是如何工作的。在一个文件系统中,有一个叫做 `文件分配表` 的东西,这个表跟踪文件在存储单元(如硬盘, MicroSD 卡,闪存驱动器等等)中的位置。当一个文件被删除,文件系统将会在`文件分配表`中执行以下两个任务之一:这个文件在`文件分配表`上的条目被标记为 “自由空间” 或删除`文件分配表`里这个文件的条目,且将相应的空间被标记为自由空间 。现在,如果有一个新的文件需要被放置在一个存储单元上,操作系统将会把这个文件放置到标记为空位的地方。在新文件被写入到这个空位后,被删除的文件就彻底消失了。当需要恢复一个已经删除的文件时,用户绝对不能再对任何文件进行操作,因为假如该文件对应的“空位”被占用,这个文件就永远也不能恢复了。 + +### 恢复软件是如何工作的? ### + +大多数的文件系统(在删除文件时)只是标记空间为空白。在这些文件系统下,恢复软件查看`文件分配表`这个文件,然后复制被删除的文件到另外的存储单元中。假如该文件被复制到其它需要恢复的被删除的存储单元中,那么用户将有可能会失去那个所需的删除文件。 + +文件系统很少会擦除`文件分配表`中的条目。假如文件系统真的这样做了, 这便是恢复软件在恢复文件了。恢复软件在存储单元中扫描文件头,所有文件都拥有一个特殊的编码字符串,它们位于文件的最前面,也被叫做 `魔法数字`。例如,一个编译的 JAVA 类文件的魔法数字在十六进制中是“CAFEBABE”。所以,假如要恢复该类型的文件,恢复软件会查找 “CAFEBABE” 然后复制文件到另一个存储单元。一些恢复软件可以查找某种特殊的文件类型。若用户想恢复一个 PDF 文件,则恢复软件将会查找十六进制的魔法数字 “25504446”,这恰恰是 ASCII 编码中的 “%PDF”。恢复软件将会查找所有的魔法数字,然后用户可以选择恢复哪个已删除的文件。 + +假如一个文件的部分被覆写了,则整个文件就会被损坏。通常这个文件可以被恢复,但是其中的内容可能已经没有什么用处。例如,恢复一个已损坏的 JPEG 文件将会是无意义的,因为图片查看器不能从这个损坏的文件产生一幅图片。因此,即使用户拥有了这个文件,该文件也将毫无用处。 + +### 设备的位置:### + +在我们继续之前,下面的一些信息将会对指引恢复软件找到正确的存储单元起到一定的帮助。所有的设备均挂载在 `/dev/` 目录下。操作系统赋予每个设备的名称(并不是管理员给予每个分区或设备的名称)遵循一定的命名规律。 + +第一个 SATA 硬盘的第二个分区的名称将会是 sda2。名称的第一个字母暗示了存储类型,在这里指的是 SATA,但字母 “s” 也可能指的是 SCSI、 FireWire(火线端口)或 USB。第二个字母 “d” 指的是 disk(硬盘)。第三个字母指的是设备序数,即字母 “a” 指的是第一个 SATA 而 “b” 指的是第二个。最后的数字代表分区。没有分区数字的设备名代表该设置的所有分区。对于上面的例子,对应的名称为 sda 。作为命名的第一个字母还可能是 “h” ,这对应 PATA 硬盘(IDE)。 + +以下为命名规律的一些例子。假如一个用户有一个 SATA 硬盘(sda),这个设备有 4 个分区- sda1、 sda2、 sda3 和 sda4 。该用户删除了第三个分区,但直到格式化第四个分区之前,第四个分区名 sda4 都将保留不变。然后该用户插入了一个带有一个分区 - 即sdb1- 的 usb 存储卡(sdb),又增加了一个带有一个分区 -hda1- 的 IDE 硬盘 ,接着该用户又增加了一个 SCSI 硬盘 - sdc1 。接着用户移除了 USB 存储卡(sdb)。现在,SCSI 硬盘的名称仍然为 sdc,但如果这个 SCSI 被移除接着再被插入,则它的名称将变为 sdb。虽然还有其他的存储设备存在, 那个 IDE 硬盘的名称仍会有一个 “a”, 因为它是第一个 IDE 硬盘,IDE 设备的命名与 SCSI、 SATA、 FireWire 和 USB 设备要分开计数。 + +### 使用 TestDisk 进行恢复:### + +每个恢复软件有其不同的功能,特征及支持的不同文件系统。下面是一些关于 使用 TestDisk 在各种文件系统中恢复文件的指南。 + +####FAT16、 FAT32、 exFAT (FAT64)、 NTFS 以及 ext2/3/4:#### + +TestDisk 是一个运行在 Linux、 *BSD、 SunOS、 Mac OS X、 DOS 和 Windows 等操作系统下的开源的自由软件。 TestDisk 可以从下面的链接中找到 :[http://www.cgsecurity.org/wiki/TestDisk][1]。TestDisk 也可以通过键入 `sudo apt-get install testdisk` 来安装。TestDisk 有着许多的功能,但这篇文章将只关注恢复文件这个功能。 + +使用 root 权限从终端中打开 TestDisk 可以通过键入 `sudo testdisk` 命令。 + +现在, TestDisk 命令行应用将会被执行。终端的显示将会改变。TestDisk 询问用户它是否可以保留日志,这完全由用户决定。假如一个用户正从系统存储中恢复文件,则不必保留日志。可选择的选项有“生成”、 “追加” 和 “无日志”。假如用户想保留日志,则日志将会保留在该用户的主目录。 + +![](http://www.linux.org/attachments/screen1-jpg.342/?.jpg) + +在接着的屏幕中,存储设备以 `/dev/*`的方式被罗列出来。对于我的系统,系统的存储单元为 `/dev/sda`,这意味着我的存储单元为 一个 SATA硬盘(sd)且它是第一个硬盘(a)。每个存储单元的容量以 Gigabyte(千兆字节)为单位显示的。使用上下键来选择一个存储设备然后点击进入。 + +![](http://www.linux.org/attachments/screen2-jpg.343/?.jpg) + +下一屏显示出一个列有分区表(也叫做分区映射表)的清单。正如文件有`文件配置表`,分区有着分区表。分区是存储设备上的分段。例如在几乎所有的 Linux 系统中,至少存在两种分区类型 - EXT3/4 和 Swap 。每一个分区表将会在下面被简要地描述。TestDisk 并不支持所有类型的分区表,所以这并不是完整的列表。 + +![](http://www.linux.org/attachments/screen3-jpg.344/?.jpg) + +- **Intel** - 这类分区表在 Windows 系统和许多的 Linux 系统中非常普遍,它也常常称作 MBR 分区表。 +- **EFI GPT** - 这种类型的分区表通常用在 Linux 系统中。对于 Linux 系统,这种分区表是最为推荐的, 因为逻辑分区或扩展分区的概念并不适用于 GPT (GUID Partition Table) 分区表。 这意味着,如果每个分区中有一个 Linux 系统,一个 Linux 用户可以从多种类型的 Linux 系统中进行多重启动。当然使用 GPT 分区表还有其他的优势,但那些已超出了本文的讨论范围。 +- **Humax** - Humax 分区映射表适用于韩国公司 Humax 生产的设备。 +- **Mac** - Apple 分区映射表 (APM) 适用于 Apple 的设备。 +- **None** - 某些设备并没有分区表。例如,许多 Subor 游戏控制台不使用分区映射表。如果一个用户试图以其它分区表类型从这类设备中恢复文件,用户就会困扰 TestDisk 为何找卟到任何的文件系统或者文件。 +- **Sun** - Sun 分区表适用于 Sun 系统。 +- **Xbox** -Xbox 适用于使用 Xbox 分区映射表的存储设备。 + +假如用户选择了 “Xbox” ,尽管他的系统使用了 GPT 分区表, 那么 TestDisk 将不能找到任何分区或文件系统。假如 TestDisk 按照用户的选择执行,则它可能猜测错误。(下面的图片显示的是当分区表类型错误时的输出) + +![](http://www.linux.org/attachments/xbox-jpg.350/?.jpg) + +当用户为他们的设备选择了正确的选项,则在下一屏中,选择 “高级” 选项。 + +![](http://www.linux.org/attachments/screen4-jpg.345/?.jpg) + +现在,用户将看到一个列有用户存储设备中所有的文件系统或分区的列表。假如用户选择了错误的分区映射表,则在这一步中用户就将会知道他们做出了错误的选择。假如没有错误,通过移动文字光标来高亮选择含有被删除文件的分区。使用 左右键来高亮位于终端底部的 “列表”。接着,按下回车确认。 + +![](http://www.linux.org/attachments/screen5-jpg.346/?.jpg) + +新的一屏便会呈现出列有文件和目录的列表。那些白色的文件名就是未被删除的文件,而红色的文件名是那些已被删除的文件。最右边的一列是文件的名称,从右到左方向的接着一列是文件的创建日期,再往左的一列是文件的大小(以 byte/ 比特为单位),最左边带有“-”,“d” ,“r”, “w” 和"x"的一列则代表的是文件的权限情况。“d” 表示该文件为一个目录,其他的权限术语与本文关系不大。在列表的最顶端以“.”代表的一项表示当前目录,第二行以".."代表的一项表示当前目录的上级目录,所以用户可以通过选择目录所在行到达该目录。 + +![](http://www.linux.org/attachments/screen6-jpg.347/?.jpg) + +举个例子,我想进入"Xaiml\_Dataset" 目录,该目录基本上由被删除的文件组成。通过按键盘上的 "c"键,我将恢复文件 "computers.xaiml",接着我被询问选择一个目标目录,当然,我应该放置该文件到另一个分区中。现在,当我在我的家目录时,按下了“c”键。(选择目标目录时)哪个目录被高亮并没有什么影响,当前目录就是目标目录,在屏幕的上方,将会显示“复制完成”的消息。在我的家目录中便会有一个名为"Xaiml_Dataset"的目录,里面里有一个 Xaiml 文件。 假如我在更多的已删除文件上按“c” 键,则这些文件将会被放置到新的文件夹中而无需再向我询问目标目录。 + +![](http://www.linux.org/attachments/screen7-jpg.348/?.jpg) + +![](http://www.linux.org/attachments/screen8-jpg.349/?.jpg) + +当这些步骤完成后,重复按“q”键直到看到正常的终端模样。目录"Xaiml_Dataset" 只能被 root 用户访问。为了解决这个问题,使用 root 权限改变该目录及其子目录的权限。做完这些后,文件便被恢复了且用户可以访问它们。 + +### 特别的 ReiserFS:### + +为了从 ReiserFS 文件系统中恢复一个文件,首先需将分区中的所有文件做一个备份。因为如果发生某些错误, 这个方法可能会引起文件丢失。接着执行下面的命令,其中 `DEVICE`指的是那些以 sda2 形式命名的设备。一些文件将被放入 lost+found 目录而其他则会保存到原先被删除的位置。 + + reiserfsck --rebuild-tree --scan-whole-partition /dev/DEVICE + +### 恢复被某个程序打开的删除文件: ### + +假设用户意外地删除了一个文件,且该文件被某个程序打开。虽然在硬盘中该文件被删除了,但这个程序正使用着位于 RAM 中的该文件的副本。幸好,我们有两种简单的解决方法来恢复该文件。 + +假如这个软件有保存功能,如文本编辑器,则用户可以重新保存该文件,这样,文本编辑器可以将该文件写入硬盘中。 + +假设在音乐播放器中有一个 MP3 文件,而该音乐播放器并不能保存该 MP3 文件,则这种情形下需要比先前花更多的时间来恢复文件。不幸的是,这种方法并不能保证在所有的系统和应用中有效。首先,键入下面的命令。 + + lsof -c smplayer | grep mp3 + +上面的命令会列出所有由 smplayer 使用的文件,这个列表由 `grep` 命令通过管道搜索 mp3 。命令的输入类似于下面: + + smplayer 10037 collier mp3 169r 8,1 676376 1704294 /usr/bin/smplayer + +现在,键入下面的命令来直接从 RAM(在 Linux 系统中,`/proc/`映射到 RAM)中恢复文件,并复制该文件到选定的文件夹中。其中 `cp` 指的是复制命令,输出中的数字 10037 来自于进程数,输出中的数字 169 指的是文件描述符,"~/Music/"为目标目录,最后的 "music.mp3" 为用户想恢复的文件的名称。 + + cp /proc/10037/fd/169 ~/Music/music.mp3 + +### 真正的删除: ### + +为确保一个文件不能被恢复,可以使用一个命令来 “擦除” 硬盘。擦除硬盘实际上是向硬盘中写入无意义的数据。例如,许多擦除程序向硬盘中写入零,随机字母或随机数据。不会有空间被占用或丢失,擦除程序只是对空位进行重写覆盖。假如存储单元被文件占满而没有空余空间,则所有先前被删除的文件将会消失而不能恢复。 + +擦除硬盘的目的是确保隐私数据不被他人看见。举个例子,一个公司可能预订了一些新的电脑,总经理决定将旧的电脑卖掉,然而,新的电脑拥有者可能会看到公司的一些机密或诸如信用卡号码,地址等顾客信息。幸好,公司的电脑技术人员可以在卖掉这些旧电脑之前,擦除这些硬盘。 + +为了安装擦除程序 secure-delete,键入 `sudo apt-get install secure-delete`,这个命令将会安装一个包含 4 个程序的程序集,用以确保被删除的文件不能被恢复。 + +- srm - 永久删除一个文件。使用方法: `srm -f ./secret_file.txt` +- sfill - 擦除空白空间。使用方法: `sfill -f /mount/point/of/partition` +- sswap - 擦除 swap 空间。使用方法: `sswap -f /dev/SWAP_DEVICE` + +假如电脑实际去清除那些删除的文件,那么就需要花费更长的时间去执行删除任务。将某些空间标记为空位是快速且容易的,但使得文件永远消失需要花费一定的时间。例如,擦除一个存储单元,可能需要花费几个小时的时间(根据磁盘容量大小)。总之,现在的系统工作的就挺好,因为即便用户清空了垃圾箱,他们仍然有另一次机会来改变他们当初的想法(或错误)。 + +-------------------------------------------------------------------------------- + +via: http://www.linux.org/threads/undelete-files-on-linux-systems.4316/ + +作者:[DevynCJohnson][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linux.org/members/devyncjohnson.4843/ +[1]:http://www.cgsecurity.org/wiki/TestDisk diff --git a/translated/tech/20141203 Undelete Files on Linux Systems.md b/translated/tech/20141203 Undelete Files on Linux Systems.md deleted file mode 100644 index c5c6d9409d..0000000000 --- a/translated/tech/20141203 Undelete Files on Linux Systems.md +++ /dev/null @@ -1,118 +0,0 @@ -怎样在 Linux 系统中恢复已删除文件 -================================================================================ -大多数情况下,一个电脑用户可能意外地删除了一个仍然需要的文件,但没有一个简便的方法来重新找回或重建这个文件。幸好,文件可以被恢复。当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间。这里将解释它是如何工作的。在一个文件系统中,有一个叫做 `文件分配表` 的文件,这个表跟踪文件在存储单元(硬盘, MicroSD 卡,闪存驱动器 等等)中的位置。当一个文件被删除,文件系统将会在`文件分配表`中执行以下 两个任务中的一个:这个文件在`文件分配表`上的条目被标记为 “空白空间” 或 这个文件在`文件分配表`的条目被擦除,且相应的空间被标记为 空白空间 。现在,如果一个文件需要被放置在一个存储单元上,操作系统将会把这个文件放置到标记为 空白 的空间中。在新文件被写入到这个空白空间后,被删除的文件就彻底消失了。当需要恢复一个已经删除的文件时,用户绝对不能再对任何文件进行操作,因为假如 该文件对应的 空白空间 被占用,这个文件就永远也不能恢复了。 - -### 恢复软件是如何工作的? ### - -大多数的文件系统只是标记空间为空白,在这些文件系统下,恢复软件查看`文件分配表`这个文件,然后复制被删除的文件到另外的存储单元中。假如该文件被复制到原来所处的存储单元中,那么用户将有可能会失去那个所需的删除文件。 - -文件系统很少会擦除`文件配置表`中的条目。假如文件系统真的这样做了, 这便是恢复软件在恢复文件了。恢复软件在存储单元中扫描文件头,所有文件都拥有一个特殊的编码字符串,它们位于文件的最前面,也被叫做 `魔法数字`。例如,一个编译的 JAVA 类文件的魔法数字在十六进制中是“CAFEBABE”。所以,假如要恢复该类型的文件,恢复软件会查找 “CAFEBABE” 然后复制文件到另一个存储单元。一些恢复软件可以查找某种特殊的文件类型。若用户想恢复一个 PDF 文件,则恢复软件将会查找十六进制的魔法数字 “25504446”,这恰恰是 ASCII 编码中的 “%PDF”。其他的恢复软件将查找所有的魔法数字。然后,用户可以选择恢复哪个已删除的文件。 - -假如一个文件的部分被重写了,则整个文件就会被损坏。通常这个文件可以被恢复,但是其中的内容可能已经没有什么用处。例如,恢复一个已损坏的 JPEG 文件将会是无意义的,因为 图片查看器不能从这个损坏的文件产生一幅图片。因此,即使用户拥有了这个文件,该文件也将毫无用处。 - -### 设备的位置: ### - -在我们继续之前,下面的一些信息将会对 指引恢复软件找到正确的存储单元 起到一定的帮助。所有的设备均挂载在 `/dev/` 目录下。操作系统赋予每个设备的名称(并不是管理员给予每个分区或设备的名称) 遵循一定的命名规律。第一个 SATA 硬盘的第二个分区的名称将会是 sda2。名称的第一个字母暗示了存储类型,在这里指的是 SATA,但字母 “s” 也可能指的是 SCSI, FireWire(火线端口), 或 USB。第二个字母 “d” 指的是 disk(硬盘)。第三个字母指的是设备序数,即字母 “a” 指的是第一个 SATA 而 “b” 指的是第二个。最后的数字代表分区。一个带有所有分区的设备的命名将只有字母而没有数字。对于上面的例子,对应的名称为 sda 。作为命名的第一个字母还可能是 “h” ,这对应 PATA 硬盘(IDE)。以下为命名规律的一些例子。假如一个用户有一个 SATA 硬盘(sda),这个设备有 4 个分区- sda1, sda2, sda3, 和 sda4 。该用户删除了第三个分区,但直到格式化第四个分区之前,将第四个分区保留。然后该用户插入了一个带有一个分区 - 即sdb1- 的 usb 存储卡(sdb),又增加了一个 带有一个分区 -hda1- 的 IDE 硬盘 ,接着该用户又增加了一个 SCSI 硬盘 - sdc1 。接着用户移除了 USB 存储卡(sdb)。现在,SCSI 硬盘的名称仍然为 sdc,但如果这个 SCSI 被移除接着再被插入,则它的名称将变为 sdb。即使其他的存储设备仍然存在, 那个 IDE 硬盘的名称仍会有一个 “a”, 因为它是第一个 IDE 硬盘,IDE 设备的命名与 SCSI, SATA, FireWire, 和 USB 设备要分开计数。 - -### 恢复: ### - -每个恢复软件有其不同的功能,特征及支持的不同文件系统。下面是一些关于 使用 TestDisk 在一系列的文件系统中恢复文件的指南。 - -**FAT16, FAT32, exFAT (FAT64), NTFS, 以及 ext2/3/4:** - -TestDisk 是一个运行在 Linux, *BSD, SunOS, Mac OS X, DOS, 和 Windows 等操作系统下的开源,免费软件。 TestDisk 可以从下面的链接中找到 :[http://www.cgsecurity.org/wiki/TestDisk][1]。TestDisk 也可以通过键入 `sudo apt-get install testdisk` 来安装。TestDisk 有着许多的功能,但这篇文章将只关注 恢复文件 这个功能。 - -使用 root 权限从终端中打开 TestDisk 可以通过键入 `sudo testdisk` 命令。 - -现在, TestDisk 命令行应用将会被执行。终端的外观将会改变。TestDisk 询问用户 它是否可以保留日志,这完全由用户决定。假如一个用户正从系统存储中恢复文件,则 TestDisk 不会保留日志。可选择的选项有 "生成", "追加", 和 "无 log"。假如用户想保留日志,则日志将会保留在该用户的主目录。 - -![](http://www.linux.org/attachments/screen1-jpg.342/) - -在接着的屏幕中,存储设备以 `/dev/*`的方式被罗列出来。对于我的系统,系统的存储单元为 `/dev/sda`,这意味着我的存储单元为 一个 SATA硬盘(sd) 且它是第一个硬盘(a)。每个存储单元的容量以 Gigabyte(千兆字节)为单位显示的。使用上下键来选择一个存储设备然后点击进入。 - -![](http://www.linux.org/attachments/screen2-jpg.343/) - -下一屏显示出一个列有分区表(也叫做 分区映射表)的清单。正如文件有`文件配置表`,分区有着分区表。分区是存储设备上的划分部分。例如在几乎所有的 Linux 系统中,至少存在两种分区类型 - EXT3/4 和 Swap 。每一个分区表将会在下面被简要地描述。TestDisk 并不支持所有类型的分区表,所以下面的列表不是完整的。 - -![](http://www.linux.org/attachments/screen3-jpg.344/) - -- **Intel** - 这类分区表在 Windows 系统和许多的 Linux 系统中非常普遍,它也以 MBR 的名称为人们熟知。 -- **EFI GPT** - 这种类型的分区表通常用在 Linux 系统中。对于 Linux系统,这种分区表是最为推荐的, 因为逻辑分区或扩展分区的概念并不适用于 GPT (GUID Partition Table) 分区表。 这意味着,如果每个分区中有一个 Linux 系统,一个 Linux 用户可以从多种类型的 Linux 系统中进行多重启动。当然使用 GPT 分区表还有其他的优势,但那些已超出了本文的讨论范围。 -- **Humax** - Humax 分区映射表适用于韩国公司 Humax 生产的设备。 -- **Mac** - Apple 分区映射表 (APM) 适用于 Apple 的设备。 -- **None** - 某些设备并没有分区表。例如,许多 Subor 游戏控制台不使用分区映射表。如果一个用户试图从这类设备中恢复文件, 并且认为分区表不是其他的类型,则实际上 TestDisk 并不能找到任何的文件系统或者文件,这将给用户带来困扰。 -- **Sun** - Sun 分区表适用于 Sun 系统。 -- **Xbox** -Xbox 适用于使用 Xbox 分区映射表的自家存储设备。 - -假如用户选择了 “Xbox” ,尽管他的系统使用了 GPT 分区表, 那么 TestDisk 将不能找到任何分区或文件系统。假如 TestDisk 按照用户的选择执行,则它将不正确地进行猜测。(下面的图片显示的是当分区表类型错误时的输出) - -![](http://www.linux.org/attachments/xbox-jpg.350/) - -一旦用户为他们的设备选择了正确的选项,则在下一屏中,选择 “高级” 选项。 - -![](http://www.linux.org/attachments/screen4-jpg.345/) - -现在,用户将看到一个列有 在用户的存储设备中所有的文件系统或分区 的列表。假如用户选择了错误的分区映射表,则在这一步中用户就将会知道他们做出了错误的选择。假如没有错误,通过放置文字类型的光标来高亮含有被删除文件的分区。使用 左右键 来高亮位于终端底部的 “列表”。接着,点击确认。 - -![](http://www.linux.org/attachments/screen5-jpg.346/) - -新的一屏便会呈现出列有文件和目录的列表。那些发白的文件就是还没有被删除的文件,而红色的文件就是那些已经被删除了的文件。最右边的一列是文件的名称,从右到左方向的接着一列是文件的创建日期,再往左的一列是文件的大小(以 byte(比特) 为单位),最左边带有虚线, “d” ,“r”, “w” 和"x"的一列则代表的是文件的权限情况。“d” 表示该文件为一个目录,其他的权限术语与本文关系不大。在列表的最顶端以“.”代表的一项表示当前目录,第二行以".."代表的一项表示当前目录的上级目录,通过选择这一行,用户可以到达上级目录。举个例子,我想进入"Xaiml_Dataset" 目录,该目录基本上由被删除的文件组成。通过按键盘上的 "c"键,我将恢复文件 "computers.xaiml",接着我被询问选择一个目标目录,当然,我将放置该文件到另一个分区中。现在,我在我的家目录中,并按下了“c”键。哪个目录被高亮并没有什么影响。当前目录就是目标目录,在屏幕的上方,将会显示“复制完成”的消息。在我的家目录中便会有一个名为"Xaiml_Dataset"的目录,里面里有名为 Xaiml 的文件。 假如我在更多的 已删除文件上按“c” 键,则这些文件将会被放置到新的文件夹中而无需再向我询问目标目录。 - -![](http://www.linux.org/attachments/screen6-jpg.347/) - -![](http://www.linux.org/attachments/screen7-jpg.348/) - -![](http://www.linux.org/attachments/screen8-jpg.349/) - -当这些步骤完成后,重复按“q”键直到看到正常的终端模样。目录"Xaiml_Dataset" 只能被 root 用户访问。为了修复这个问题,使用 root 权限改变该目录及其子目录的权限。做完这些后,文件便被恢复了且用户可以访问它们。 - -### ReiserFS: ### - -为了从 ReiserFS 文件系统中恢复一个文件,首先需将分区中的所有文件做一个备份。因为如果发生某些错误, 这个方法可能会引起文件丢失。接着执行下面的命令,其中 `DEVICE`指的是那些以 sda2 形式命名的设备。一些文件将被放入 lost+found 目录而其他则会保存到原先被删除的位置。 - - reiserfsck --rebuild-tree --scan-whole-partition /dev/DEVICE - -### 恢复被某个程序打开的删除文件: ### - -假设用户意外地删除了一个文件,且该文件被某个程序打开。虽然在硬盘中该文件被删除了,但这个程序正使用着位于 RAM 中的该文件的副本。幸好,我们有两种简单的解决方法来恢复该文件。 - -假如这个软件有自动保存功能,如文本编辑器,则用户可以重新保存该文件,这样,文本编辑器可以将该文件写入硬盘中。 - -假设在音乐播放器中有一个 MP3 文件,而该音乐播放器并不能保存该 MP3 文件,则这种情形下需要比先前花更多的时间来恢复文件。不幸的是,这种方法并不能保证在所有的系统和应用中有效。首先,键入下面的命令。 - - lsof -c smplayer | grep mp3 - -上面的命令会列出所有由 smplayer 使用的文件,这个列表由 `grep` 命令通过管道搜索 mp3 。命令的输入类似于下面: - - smplayer 10037 collier mp3 169r 8,1 676376 1704294 /usr/bin/smplayer - -现在,键入下面的命令来直接从 RAM(在 Linux 系统中,`/proc/`代表 RAM) 中恢复文件,并复制该文件到选定的文件夹中。其中 `cp` 指的是复制命令,输出中的数字 10037 来自于进程数,输出中的数字 169 指的是文件描述符,"~/Music/"为目标目录,最后的 "music.mp3" 为用户想恢复的文件的名称。 - - cp /proc/10037/fd/169 ~/Music/music.mp3 - -### 真正的删除: ### - -为确保一个文件不能被恢复,可以使用一个命令来 “擦除” 硬盘。擦除硬盘意味着向硬盘中写入无意义的数据。例如,许多擦除程序向硬盘中写入零,随机字母或随机数据,没有空间将会被占用或丢失,擦除程序只是对空白空间进行重写覆盖。假如存储单元被文件占满而没有空余空间,则所有先前被删除的文件将会消失。 - -擦除硬盘的目的是确保隐私数据不被他人看见。举个例子,一个公司可能预订了一些新的电脑,总经理决定将旧的电脑卖掉,然而,新的电脑拥有者可能会看到公司的一些机密或诸如信用卡号码,地址等顾客信息。幸好,公司的电脑技术人员可以在卖掉这些旧电脑之前,擦除这些硬盘。 - -为了安装擦除程序 secure-delete,键入 `sudo apt-get install secure-delete`,这个命令将会安装一个包含 4 个程序的程序集,用以确保被删除的文件不能被恢复。 - -- srm - 永久删除一个文件。使用方法: `srm -f ./secret_file.txt` -- sfill - 擦除空白空间。使用方法: `sfill -f /mount/point/of/partition` -- sswap - 擦除 swap 空间。使用方法: `sswap -f /dev/SWAP_DEVICE` - -假如电脑真的要去删除打算删除的文件,那么需要花费更长的时间去执行删除任务。将某些空间标记为空白空间是快速且容易的,但使得文件永远消失需要花费一定的时间。例如,擦除一个存储单元,可能需要花费几个小时的时间(根据磁盘容量大小)。总之,当前的系统工作良好,因为即便用户清空了垃圾箱,他们仍然有另一次机会来改变他们当初的想法。 - --------------------------------------------------------------------------------- - -via: http://www.linux.org/threads/undelete-files-on-linux-systems.4316/ - -作者:[DevynCJohnson][a] -译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.linux.org/members/devyncjohnson.4843/ -[1]:http://www.cgsecurity.org/wiki/TestDisk From 020bf9a346a8d2049948f54a99362f5ce2b8b9ea Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 25 Feb 2015 13:05:41 +0800 Subject: [PATCH 387/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50128 Meet Vivaldi--A New Web Browser Built for Power Users.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md (100%) diff --git a/translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/published/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md similarity index 100% rename from translated/share/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md rename to published/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md From 70f8dc0a24c74bea1c2eb95fca9172a7127fd0d2 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 25 Feb 2015 14:17:06 +0800 Subject: [PATCH 388/725] =?UTF-8?q?20150225-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...kup of LUKS-encrypted disk or partition.md | 80 ++++++ ...ring and filtering in Quagga BGP router.md | 258 ++++++++++++++++++ 2 files changed, 338 insertions(+) create mode 100644 sources/tech/20150225 How to make remote incremental backup of LUKS-encrypted disk or partition.md create mode 100644 sources/tech/20150225 How to set up IPv6 BGP peering and filtering in Quagga BGP router.md diff --git a/sources/tech/20150225 How to make remote incremental backup of LUKS-encrypted disk or partition.md b/sources/tech/20150225 How to make remote incremental backup of LUKS-encrypted disk or partition.md new file mode 100644 index 0000000000..64e872c4b7 --- /dev/null +++ b/sources/tech/20150225 How to make remote incremental backup of LUKS-encrypted disk or partition.md @@ -0,0 +1,80 @@ +How to make remote incremental backup of LUKS-encrypted disk/partition +================================================================================ +Some of us have our hard drives at home or on a [VPS][1] encrypted by [Linux Unified Key Setup (LUKS)][2] for security reasons, and these drives can quickly grow to tens or hundreds of GBs in size. So while we enjoy the security of our LUKS device, we may start to think about a possible remote backup solution. For secure off-site backup, we will need something that operates at the block level of the encrypted LUKS device, and not at the un-encrypted file system level. So in the end we find ourselves in a situation where we will need to transfer the entire LUKS device (let's say 200GB for example) each time we want to make a backup. Clearly not feasible. How can we deal with this problem? + +### A Solution: Bdsync ### + +This is when a brilliant open-source tool called [Bdsync][3] (thanks to Rolf Fokkens) comes to our rescue. As the name implies, Bdsync can synchronize "block devices" over network. For fast synchronization, Bdsync generates and compares MD5 checksums of blocks in the local/remote block devices, and sync only the differences. What rsync can do at the file system level, Bdsync can do it at the block device level. Naturally, it works with encrypted LUKS devices as well. Pretty neat! + +Using Bdsync, the first-time backup will copy the entire LUKS block device to a remote host, so it will take a lot of time to finish. However, after that initial backup, if we make some new files on the LUKS device, the second backup will be finished quickly because we will need to copy only that blocks which have been changed. Classic incremental backup at play! + +### Install Bdsync on Linux ### + +Bdsync is not included in the standard repositories of [Linux][4] distributions. Thus you need to build it from the source. Use the following distro-specific instructions to install Bdsync and its man page on your system. + +#### Debian, Ubuntu or Linux Mint #### + + $ sudo apt-get install git gcc libssl-dev + $ git clone https://github.com/TargetHolding/bdsync.git + $ cd bdsync + $ make + $ sudo cp bdsync /usr/local/sbin + $ sudo mkdir -p /usr/local/man/man1 + $ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz' + +#### Fedora or CentOS/RHEL #### + + $ sudo yum install git gcc openssl-devel + $ git clone https://github.com/TargetHolding/bdsync.git + $ cd bdsync + $ make + $ sudo cp bdsync /usr/local/sbin + $ sudo mkdir -p /usr/local/man/man1 + $ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz' + +### Perform Off-site Incremental Backup of LUKS-Encrypted Device ### + +I assume that you have already provisioned a LUKS-encrypted block device as a backup source (e.g., /dev/LOCDEV). I also assume that you have a remote host where the source device will be backed up (e.g., as /dev/REMDEV). + +You need to access the root account on both systems, and set up [password-less SSH access][5] from the local host to a remote host. Finally, you need to install Bdsync on both hosts. + +To initiate a remote backup process on the local host, we execute the following command as the root: + + # bdsync "ssh root@remote_host bdsync --server" /dev/LOCDEV /dev/REMDEV | gzip > /some_local_path/DEV.bdsync.gz + +Some explanations are needed here. Bdsync client will open an SSH connection to the remote host as the root, and execute Bdsync client with --server option. As clarified, /dev/LOCDEV is our source LUKS block device on the local host, and /dev/REMDEV is the target block device on the remote host. They could be /dev/sda (for an entire disk) or /dev/sda2 (for a single partition). The output of the local Bdsync client is then piped to gzip, which creates DEV.bdsync.gz (so-called binary patch file) in the local host. + +The first time you run the above command, it will take very long time, depending on your Internet/LAN speed and the size of /dev/LOCDEV. Remember that you must have two block devices (/dev/LOCDEV and /dev/REMDEV) with the same size. + +The next step is to copy the generated patch file from the local host to the remote host. Using scp is one possibility: + + # scp /some_local_path/DEV.bdsync.gz root@remote_host:/remote_path + +The final step is to execute the following command on the remote host, which will apply the patch file to /dev/REMDEV: + + # gzip -d < /remote_path/DEV.bdsync.gz | bdsync --patch=/dev/DSTDEV + +I recommend doing some tests with small partitions (without any important data) before deploying Bdsync with real data. After you fully understand how the entire setup works, you can start backing up real data. + +### Conclusion ### + +In conclusion, we showed how to use Bdsync to perform incremental backups for LUKS devices. Like rsync, only a fraction of data, not the entire LUKS device, is needed to be pushed to an off-site backup site at each backup, which saves bandwidth and backup time. Rest assured that all the data transfer is secured by SSH or SCP, on top of the fact that the device itself is encrypted by LUKS. It is also possible to improve this setup by using a dedicated user (instead of the root) who can run bdsync. We can also use bdsync for ANY block device, such as LVM volumes or RAID disks, and can easily set up Bdsync to back up local disks on to USB drives as well. As you can see, its possibility is limitless! + +Feel free to share your thought. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/remote-incremental-backup-luks-encrypted-disk-partition.html + +作者:[Iulian Murgulet][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/iulian +[1]:http://xmodulo.com/go/digitalocean +[2]:http://xmodulo.com/how-to-create-encrypted-disk-partition-on-linux.html +[3]:http://bdsync.rolf-fokkens.nl/ +[4]:http://xmodulo.com/recommend/linuxbook +[5]:http://xmodulo.com/how-to-enable-ssh-login-without.html \ No newline at end of file diff --git a/sources/tech/20150225 How to set up IPv6 BGP peering and filtering in Quagga BGP router.md b/sources/tech/20150225 How to set up IPv6 BGP peering and filtering in Quagga BGP router.md new file mode 100644 index 0000000000..cae05670ba --- /dev/null +++ b/sources/tech/20150225 How to set up IPv6 BGP peering and filtering in Quagga BGP router.md @@ -0,0 +1,258 @@ +How to set up IPv6 BGP peering and filtering in Quagga BGP router +================================================================================ +In the previous tutorials, we demonstrated how we can set up a [full-fledged BGP router][1] and configure [prefix filtering][2] with Quagga. In this tutorial, we are going to show you how we can set up IPv6 BGP peering and advertise IPv6 prefixes through BGP. We will also demonstrate how we can filter IPv6 prefixes advertised or received by using prefix-list and route-map features. + +### Topology ### + +For this tutorial, we will be considering the following topology. + +![](https://farm9.staticflickr.com/8599/15944659374_1c65852df2_c.jpg) + +Service providers A and B want to establish an IPv6 BGP peering between them. Their IPv6 and AS information is as follows. + +- Peering IP block: 2001:DB8:3::/64 +- Service provider A: AS 100, 2001:DB8:1::/48 +- Service provider B: AS 200, 2001:DB8:2::/48 + +### Installing Quagga on CentOS/RHEL ### + +If Quagga has not already been installed, we can install it using yum. + + # yum install quagga + +On CentOS/RHEL 7, the default SELinux policy, which prevents /usr/sbin/zebra from writing to its configuration directory, can interfere with the setup procedure we are going to describe. Thus we want to disable this policy as follows. Skip this step if you are using CentOS/RHEL 6. + + # setsebool -P zebra_write_config 1 + +### Creating Configuration Files ### + +After installation, we start the configuration process by creating the zebra/bgpd configuration files. + + # cp /usr/share/doc/quagga-XXXXX/zebra.conf.sample /etc/quagga/zebra.conf + # cp /usr/share/doc/quagga-XXXXX/bgpd.conf.sample /etc/quagga/bgpd.conf + +Next, enable auto-start of these services. + +**On CentOS/RHEL 6:** + + # service zebra start; service bgpd start + # chkconfig zebra on; chkconfig bgpd on + +**On CentOS/RHEL 7:** + + # systemctl start zebra; systemctl start bgpd + # systemctl enable zebra; systmectl enable bgpd + +Quagga provides a built-in shell called vtysh, whose interface is similar to those of major router vendors such as Cisco or Juniper. Launch vtysh command shell: + + # vtysh + +The prompt will be changed to: + + router-a# + +or + + router-b# + +In the rest of the tutorials, these prompts indicate that you are inside vtysh shell of either router. + +### Specifying Log File for Zebra ### + +Let's configure the log file for Zebra, which will be helpful for debugging. + +First, enter the global configuration mode by typing: + + router-a# configure terminal + +The prompt will be changed to: + + router-a(config)# + +Now specify log file location. Then exit the configuration mode: + + router-a(config)# log file /var/log/quagga/quagga.log + router-a(config)# exit + +Save configuration permanently by: + + router-a# write + +### Configuring Interface IP Addresses ### + +Let's now configure the IP addresses for Quagga's physical interfaces. + +First, we check the available interfaces from inside vtysh. + + router-a# show interfaces + +---------- + + Interface eth0 is up, line protocol detection is disabled + ## OUTPUT TRUNCATED ### + Interface eth1 is up, line protocol detection is disabled + ## OUTPUT TRUNCATED ## + +Now we assign necessary IPv6 addresses. + + router-a# conf terminal + router-a(config)# interface eth0 + router-a(config-if)# ipv6 address 2001:db8:3::1/64 + router-a(config-if)# interface eth1 + router-a(config-if)# ipv6 address 2001:db8:1::1/64 + +We use the same method to assign IPv6 addresses to router-B. I am summarizing the configuration below. + + router-b# show running-config + +---------- + + interface eth0 + ipv6 address 2001:db8:3::2/64 + + interface eth1 + ipv6 address 2001:db8:2::1/64 + +Since the eth0 interface of both routers are in the same subnet, i.e., 2001:DB8:3::/64, you should be able to ping from one router to another. Make sure that you can ping successfully before moving on to the next step. + + router-a# ping ipv6 2001:db8:3::2 + +---------- + + PING 2001:db8:3::2(2001:db8:3::2) 56 data bytes + 64 bytes from 2001:db8:3::2: icmp_seq=1 ttl=64 time=3.20 ms + 64 bytes from 2001:db8:3::2: icmp_seq=2 ttl=64 time=1.05 ms + +### Phase 1: IPv6 BGP Peering ### + +In this section, we will configure IPv6 BGP between the two routers. We start by specifying BGP neighbors in router-A. + + router-a# conf t + router-a(config)# router bgp 100 + router-a(config-router)# no auto-summary + router-a(config-router)# no synchronization + router-a(config-router)# neighbor 2001:DB8:3::2 remote-as 200 + +Next, we define the address family for IPv6. Within the address family section, we will define the network to be advertised, and activate the neighbors as well. + + router-a(config-router)# address-family ipv6 + router-a(config-router-af)# network 2001:DB8:1::/48 + router-a(config-router-af)# neighbor 2001:DB8:3::2 activate + +We will go through the same configuration for router-B. I'm providing the summary of the configuration. + + router-b# conf t + router-b(config)# router bgp 200 + router-b(config-router)# no auto-summary + router-b(config-router)# no synchronization + router-b(config-router)# neighbor 2001:DB8:3::1 remote-as 100 + router-b(config-router)# address-family ipv6 + router-b(config-router-af)# network 2001:DB8:2::/48 + router-b(config-router-af)# neighbor 2001:DB8:3::1 activate + +If all goes well, an IPv6 BGP session should be up between the two routers. If not already done, please make sure that necessary ports (TCP 179) are [open in your firewall][3]. + +We can check IPv6 BGP session information using the following commands. + +**For BGP summary:** + + router-a# show bgp ipv6 unicast summary + +**For BGP advertised routes:** + + router-a# show bgp ipv6 neighbors advertised-routes + +**For BGP received routes:** + + router-a# show bgp ipv6 neighbors routes + +![](https://farm8.staticflickr.com/7317/16379555088_6e29cb6884_b.jpg) + +### Phase 2: Filtering IPv6 Prefixes ### + +As we can see from the above output, the routers are advertising their full /48 IPv6 prefix. For demonstration purposes, we will consider the following requirements. + +- Router-B will advertise one /64 prefix, one /56 prefix, as well as one full /48 prefix. +- Router-A will accept any IPv6 prefix owned by service provider B, which has a netmask length between /56 and /64. + +We are going to filter the prefix as required, using prefix-list and route-map in router-A. + +![](https://farm8.staticflickr.com/7367/16381297417_6549218289_c.jpg) + +#### Modifying prefix advertisement for Router-B #### + +Currently, router-B is advertising only one /48 prefix. We will modify router-B's BGP configuration so that it advertises additional /56 and /64 prefixes as well. + + router-b# conf t + router-b(config)# router bgp 200 + router-b(config-router)# address-family ipv6 + router-b(config-router-af)# network 2001:DB8:2::/56 + router-b(config-router-af)# network 2001:DB8:2::/64 + +We will verify that all prefixes are received at router-A. + +![](https://farm9.staticflickr.com/8598/16379761980_7c083ae977_b.jpg) + +Great! As we are receiving all prefixes in router-A, we will move forward and create prefix-list and route-map entries to filter these prefixes. + +#### Creating Prefix-List #### + +As described in the [previous tutorial][4], prefix-list is a mechanism that is used to match an IP address prefix with a subnet length. Once a matched prefix is found, we can apply filtering or other actions to the matched prefix. To meet our requirements, we will go ahead and create a necessary prefix-list entry in router-A. + + router-a# conf t + router-a(config)# ipv6 prefix-list FILTER-IPV6-PRFX permit 2001:DB8:2::/56 le 64 + +The above commands will create a prefix-list entry named 'FILTER-IPV6-PRFX' which will match any prefix in the 2001:DB8:2:: pool with a netmask between 56 and 64. + +#### Creating and Applying Route-Map #### + +Now that the prefix-list entry is created, we will create a corresponding route-map rule which uses the prefix-list entry. + + router-a# conf t + router-a(config)# route-map FILTER-IPV6-RMAP permit 10 + router-a(config-route-map)# match ipv6 address prefix-list FILTER-IPV6-PRFX + +The above commands will create a route-map rule named 'FILTER-IPV6-RMAP'. This rule will permit IPv6 addresses matched by the prefix-list 'FILTER-IPV6-PRFX' that we have created earlier. + +Remember that a route-map rule is only effective when it is applied to a neighbor or an interface in a certain direction. We will apply the route-map in the BGP neighbor configuration. As the filter is meant for inbound prefixes, we apply the route-map in the inbound direction. + + router-a# conf t + router-a(config)# router bgp 100 + router-a(config-router)# address-family ipv6 + router-a(config-router-af)# neighbor 2001:DB8:3::2 route-map FILTER-IPV6-RMAP in + +Now when we check the routes received at router-A, we should see only two prefixes that are allowed. + +![](https://farm8.staticflickr.com/7337/16379762020_ec2dc39b31_c.jpg) + +**Note**: You may need to reset the BGP session for the route-map to take effect. + +All IPv6 BGP sessions can be restarted using the following command: + + router-a# clear bgp ipv6 * + +I am summarizing the configuration of both routers so you get a clear picture at a glance. + +![](https://farm9.staticflickr.com/8672/16567240165_eee4398dc8_c.jpg) + +### Summary ### + +To sum up, this tutorial focused on how to set up BGP peering and filtering using IPv6. We showed how to advertise IPv6 prefixes to a neighboring BGP router, and how to filter the prefixes advertised or received are advertised. Note that the process described in this tutorial may affect production networks of a service provider, so please use caution. + +Hope this helps. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/ipv6-bgp-peering-filtering-quagga-bgp-router.html + +作者:[Sarmed Rahman][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/sarmed +[1]:http://xmodulo.com/centos-bgp-router-quagga.html +[2]:http://xmodulo.com/filter-bgp-routes-quagga-bgp-router.html +[3]:http://ask.xmodulo.com/open-port-firewall-centos-rhel.html +[4]:http://xmodulo.com/filter-bgp-routes-quagga-bgp-router.html \ No newline at end of file From 70106e5d2b9ea58da29e2ac60a39869e91974fdc Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 25 Feb 2015 14:35:46 +0800 Subject: [PATCH 389/725] =?UTF-8?q?20150225-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ilia-Romagna Is Switching To OpenOffice.md | 40 ++++ ...pired GTK And Icon Theme Paper in Linux.md | 67 +++++++ ... to create or extract archives in Linux.md | 187 ++++++++++++++++++ 3 files changed, 294 insertions(+) create mode 100644 sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md create mode 100644 sources/share/20150225 Install Google's Material Design Inspired GTK And Icon Theme Paper in Linux.md create mode 100644 sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md diff --git a/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md new file mode 100644 index 0000000000..59df5a0b2d --- /dev/null +++ b/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md @@ -0,0 +1,40 @@ +Italian Region Emilia-Romagna Is Switching To OpenOffice +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Turin_Open_Source.jpg) + +Italy seems to be winning the race to Open Source adoption, it seems. We have learned about how various Italian cities like [Udine][1], [Turin][2], [Todi and Turni][3] opted for [open source alternatives of Microsoft office][4] in the past. Now the news comes that [Emilia-Romagna][5] region in northern Italy is about to complete its switch to [Apache OpenOffice][6] next month. + +### Switching to OpenOffice ### + +The migration to OpenOffice will be complete by next month and will cover 4200 workstations, across 10 departments and 5 agencies. In addition, Open Document Format (ODF) will be the default document format. The initiative to switch to OpenOffice was approved in late 2013 and was originally planned to be completed by end of 2014. The move to OpenOffice from proprietary office product is believed to [save around 2 million euro][8] in licensing fee. + +To ease this migration and improve interoperability, several custom tools and plugins are also being developed by the team in charge of the migration. + +Head of the project, Giovanni Grazia is enthusiastic about the migration but he is prepared for the brickbats as well. + +> “Changing office suite is hard work, and we use the occasion to advocate for free and open source software. Some of the region’s civil servants are keen to switch, and some are very annoyed, as they have been using the proprietary alternative for 20 years. To deal with any issues during the transition, a team of five support staffers is backed up by three IT specialists. Department by department, one at a time, we’re completing the switch. Step by step, change is coming.” + +#### Best wishes #### + +I wish good luck to Grazia and hope that other administrative regions in Italy will follow the suit. I also hope that neighboring countries like [France will also speed up the open source adoption process][8]. + + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/udine-open-source/ +[2]:http://itsfoss.com/italian-city-turin-open-source/ +[3]:http://itsfoss.com/italian-cities-switch-libreoffice/ +[4]:http://itsfoss.com/best-free-open-source-alternatives-microsoft-office/ +[5]:http://en.wikipedia.org/wiki/Emilia-Romagna +[6]:https://www.openoffice.org/ +[7]:http://www.slwoods.co.uk/?p=2886 +[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ \ No newline at end of file diff --git a/sources/share/20150225 Install Google's Material Design Inspired GTK And Icon Theme Paper in Linux.md b/sources/share/20150225 Install Google's Material Design Inspired GTK And Icon Theme Paper in Linux.md new file mode 100644 index 0000000000..33aa731843 --- /dev/null +++ b/sources/share/20150225 Install Google's Material Design Inspired GTK And Icon Theme Paper in Linux.md @@ -0,0 +1,67 @@ +Install Google’s Material Design Inspired GTK And Icon Theme Paper in Linux +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Paper_theme_Material_Design.jpg) + +[Paper][1] is a new upcoming GTK and icon theme inspired by Google’s [Material design][2] guidelines. It is developed by Sam Hewitt, the man behind [Moka Project][3]. Moka has always been in the list of [best themes for Ubuntu][4] and looking at Paper, I can say that once it is developed completely, it will surely be listed as one of the [best GTK themes][5]. + +Yes, you heard it right. The theme is still under development. Therefore I suggest that if you want to install Paper theme in Ubuntu or any other Linux distributions, do it only for experimentation purpose. You may see some broken icons here and there but the over all experience is nice. + +### Install Paper theme in Ubuntu based distributions via PPA ### + +Sam has a dedicated PPA for Ubuntu based distributions. I recommend that you use this PPA instead of downloading the theme because you’ll be getting the updates on the themes regularly. This PPA is available for Ubuntu 15.04, Ubuntu 14.10, Ubuntu 14.04, Elementary OS Freya, Elementary OS Luna, Linux Mint 17, Linux Mint 16 and other Linux distributions based on Ubuntu. + +Open a terminal and use the following commands: + + sudo add-apt-repository ppa:snwh/pulp + sudo apt-get update + sudo apt-get install paper-gtk-theme paper-icon-theme + +### Download Paper GTK and icon theme ### + +If you do not want to use the PPA, you can download the themes and icons manually. As I said previously, you won’t get the updates automatically this way. + +- [Download Paper icon themes][6] +- [Download Paper GTK themes][7] + +#### Using Paper themes and icons #### + +I hope that you know how to change or install themes in your respective Linux distributions. If you are not unaware of it, below are few tutorials that could help you to install new themes: + +- [How to change themes in Ubuntu Unity][8] +- [How to change themes in GNOME Shell][9] +- [How to change themes in Linux Mint][10] +- [How to change theme in Elementary OS Freya][11] + +#### Here is what Paper theme looks like #### + +Since I am using [Elementary OS Freya][12] these days, here are some of the screenshots of how Paper theme and icons look like in Elementary OS Freya. I have used a wallpaper with Material design look so that it blends well with the icon and themes. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Material_Design_Paper_Theme_Elementary_OS_Freya_1.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Material_Design_Paper_Theme_Elementary_OS_Freya.jpeg) + +How do you find this Material design inspired theme? If you did use it, do share the screenshot of your desktop with rest of us here. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/install-paper-theme-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://snwh.org/paper/ +[2]:http://www.google.fr/design/spec/material-design/introduction.html +[3]:http://mokaproject.com/moka-icon-theme/ +[4]:http://itsfoss.com/best-icon-themes-ubuntu-1404/ +[5]:http://itsfoss.com/gnome-shell-themes-ubuntu-1404/ +[6]:https://github.com/snwh/paper-icon-theme +[7]:https://github.com/snwh/paper-gtk-theme +[8]:http://itsfoss.com/how-to-install-themes-in-ubuntu-13-10/ +[9]:http://itsfoss.com/install-switch-themes-gnome-shell/ +[10]:http://itsfoss.com/install-icon-linux-mint/ +[11]:http://itsfoss.com/install-themes-icons-elementary-os-freya/ +[12]:http://itsfoss.com/tag/elementary-os-freya/ \ No newline at end of file diff --git a/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md b/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md new file mode 100644 index 0000000000..0a39b7f476 --- /dev/null +++ b/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md @@ -0,0 +1,187 @@ +10 quick tar command examples to create/extract archives in Linux +================================================================================ +### Tar command on Linux ### + +The tar (tape archive) command is a frequently used command on linux that allows you to store files into an archive. + +The commonly seen file extensions are .tar.gz and .tar.bz2 which is a tar archive further compressed using gzip or bzip algorithms respectively. + +In this tutorial we shall take a look at simple examples of using the tar command to do daily jobs of creating and extracting archives on linux desktops or servers. + +### Using the tar command ### + +The tar command is available by default on most linux systems and you do not need to install it separately. + +> With tar there are 2 compression formats, gzip and bzip. The "z" option specifies gzip and "j" option specifies bzip. It is also possible to create uncompressed archives. + +#### 1. Extract a tar.gz archive #### + +Well, the more common use is to extract tar archives. The following command shall extract the files out a tar.gz archive + + $ tar -xvzf tarfile.tar.gz + +Here is a quick explanation of the parameters used - + +> x - Extract files +> +> v - verbose, print the file names as they are extracted one by one +> +> z - The file is a "gzipped" file +> +> f - Use the following tar archive for the operation + +Those are some of the important options to memorise + +**Extract tar.bz2/bzip archives** + +Files with extension bz2 are compressed with the bzip algorithm and tar command can deal with them as well. Use the j option instead of the z option. + + $ tar -xvjf archivefile.tar.bz2 + +#### 2. Extract files to a specific directory or path #### + +To extract out the files to a specific directory, specify the path using the "-C" option. Note that its a capital C. + + $ tar -xvzf abc.tar.gz -C /opt/folder/ + +However first make sure that the destination directory exists, since tar is not going to create the directory for you and will fail if it does not exist. + +#### 3. Extract a single file #### + +To extract a single file out of an archive just add the file name after the command like this + + $ tar -xz -f abc.tar.gz "./new/abc.txt" + +More than once file can be specified in the above command like this + + $ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt" + +#### 4. Extract multiple files using wildcards #### + +Wildcards can be used to extract out a bunch of files matching the given wildcards. For example all files with ".txt" extension. + + $ tar -xv -f abc.tar.gz --wildcards "*.txt" + +#### 5. List and search contents of the tar archive #### + +If you want to just list out the contents of the tar archive and not extract them, use the "-t" option. The following command prints the contents of a gzipped tar archive, + + $ tar -tz -f abc.tar.gz + ./new/ + ./new/cde.txt + ./new/subdir/ + ./new/subdir/in.txt + ./new/abc.txt + ... + +Pipe the output to grep to search a file or less command to browse the list. Using the "v" verbose option shall print additional details about each file. + +For tar.bz2/bzip files use the "j" option + +Use the above command in combination with the grep command to search the archive. Simple! + + $ tar -tvz -f abc.tar.gz | grep abc.txt + -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt + +#### 6. Create a tar/tar.gz archive #### + +Now that we have learnt how to extract existing tar archives, its time to start creating new ones. The tar command can be told to put selected files in an archive or an entire directory. Here are some examples. + +The following command creates a tar archive using a directory, adding all files in it and sub directories as well. + + $ tar -cvf abc.tar ./new/ + ./new/ + ./new/cde.txt + ./new/abc.txt + +The above example does not create a compressed archive. Just a plain archive, that puts multiple files together without any real compression. + +In order to compress, use the "z" or "j" option for gzip or bzip respectively. + + $ tar -cvzf abc.tar.gz ./new/ + +> The extension of the file name does not really matter. "tar.gz" and tgz are common extensions for files compressed with gzip. ".tar.bz2" and ".tbz" are commonly used extensions for bzip compressed files. + +#### 7. Ask confirmation before adding files #### + +A useful option is "w" which makes tar ask for confirmation for every file before adding it to the archive. This can be sometimes useful. + +Only those files would be added which are given a yes answer. If you do not enter anything, the default answer would be a "No". + + # Add specific files + + $ tar -czw -f abc.tar.gz ./new/* + add ‘./new/abc.txt’?y + add ‘./new/cde.txt’?y + add ‘./new/newfile.txt’?n + add ‘./new/subdir’?y + add ‘./new/subdir/in.txt’?n + + # Now list the files added + $ tar -t -f abc.tar.gz + ./new/abc.txt + ./new/cde.txt + ./new/subdir/ + +#### 8. Add files to existing archives #### + +The r option can be used to add files to existing archives, without having to create new ones. Here is a quick example + + $ tar -rv -f abc.tar abc.txt + +> Files cannot be added to compressed archives (gz or bzip). Files can only be added to plain tar archives. + +#### 9. Add files to compressed archives (tar.gz/tar.bz2) #### + +Its already mentioned that its not possible to add files to compressed archives. However it can still be done with a simple trick. Use the gunzip command to uncompress the archive, add file to archive and compress it again. + + $ gunzip archive.tar.gz + $ tar -rf archive.tar ./path/to/file + $ gzip archive.tar + +For bzip files use the bzip2 and bunzip2 commands respectively. + +#### 10. Backup with tar #### + +A real scenario is to backup directories at regular intervals. The tar command can be scheduled to take such backups via cron. Here is an example - + + $ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/ + +Run the above command via cron and it would keep creating backup files with names like - +'archive-20150218.tar.gz'. + +Ofcourse make sure that the disk space is not overflown with larger and larger archives. + +#### 11. Verify archive files while creation #### + +The "W" option can be used to verify the files after creating archives. Here is a quick example. + + $ tar -cvW -f abc.tar ./new/ + ./new/ + ./new/cde.txt + ./new/subdir/ + ./new/subdir/in.txt + ./new/newfile.txt + ./new/abc.txt + Verify ./new/ + Verify ./new/cde.txt + Verify ./new/subdir/ + Verify ./new/subdir/in.txt + Verify ./new/newfile.txt + Verify ./new/abc.txt + +Note that the verification cannot be done on compressed archives. It works only with uncompressed tar archives. + +Thats all for now. For more check out the man page for tar command, with "man tar". + +-------------------------------------------------------------------------------- + +via: http://www.binarytides.com/linux-tar-command/ + +作者:[Silver Moon][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117145272367995638274/posts \ No newline at end of file From 7e43bae6ac52bb2c1ff79a4d34a367db1c089b56 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 25 Feb 2015 15:23:29 +0800 Subject: [PATCH 390/725] =?UTF-8?q?20150225-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...g kernel code get hired really quickly'.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md diff --git a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md new file mode 100644 index 0000000000..6d7e64f616 --- /dev/null +++ b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md @@ -0,0 +1,31 @@ +Torvalds: 'People who start writing kernel code get hired really quickly' +================================================================================ +Now more than ever, the development of the Linux kernel is a matter for the professionals, as unpaid volunteer contributions to the project reached their lowest recorded levels in the latest "Who Writes Linux" report, which was released today. + +According to the report, which is compiled by the Linux Foundation, just 11.8 percent of kernel development last year was done by unpaid volunteers -- a 19 percent downturn from the 2012 figure of 14.6 percent. The foundation says that the downward trend in volunteer contributions has been present for years. + +![](http://images.techhive.com/images/article/2015/02/screen-shot-2015-02-17-at-5.25.43-pm-100568680-medium.idge.png) + +Even so, unpaid contributors were still the single biggest source of commits in the latest Who Writes Linux, at 11,968 total changes -- good for 12.4 percent of the whole. However, corporate contributors collectively account for much, much more. The Linux Foundation said that more than 80 percent of all work on the kernel is done by paid professional developers. + +According to Linus Torvalds, the shift towards paid developers hasn't changed much about kernel development on its own. + +"I think one reason it hasn't changed things all that much is that it's not so much 'unpaid volunteers are going away' as 'people who start writing kernel code get hired really quickly,'" he told Network World. + +Torvalds said that, while Linux development has changed for plenty of other reasons -- and that, naturally, new contributors pop up all the time -- many of the original developers, with decades of experience, have simply been snapped up by companies with an interest in Linux. + +"We may have started as volunteers, but we're happily employed doing Linux these days," he said. + +Torvalds' own role in development has become increasingly hands-off, according to the report -- he has personally signed off on 329 patches since version 3.10 of kernel was released, or 0.4 percent. Increasingly, subsystem maintainers do their own reviews and merges of code. + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2885339/application-development/torvalds-people-who-start-writing-kernel-code-get-hired-really-quickly.html + +作者:[Jon Gold][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Jon-Gold/ \ No newline at end of file From 77ff06ab90be38b311def439b6aca8c120e67437 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 25 Feb 2015 15:57:22 +0800 Subject: [PATCH 391/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... not be opened correctly' on Google Chrome.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md index 0a10253031..faf724786c 100644 --- a/translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md +++ b/translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md @@ -1,8 +1,8 @@ -Linux有问必答--如果修复Google Chrome 的 ‘Your profile could not be opened correctly’错误 +Linux有问必答——如何修复Google Chrome 的“Your profile could not be opened correctly”错误 ================================================================================ > **提问**:当我在linux打开Google Chrome 浏览器时,我已经几次收到弹出窗口,提示我的档案文件没有被正确打开(Your profile could not be opened correctly.)。每次我打开Chrome都要弹出来,我应该如何修复这个问题? -当你在你的Chrome上看见"Your profile could not be opened correctly"错误信息时,那是因为你的Chrome档案数据已经损坏。这个问题经常发生在手动升级Google Chrome时候。 +当你在你的Chrome上看见"Your profile could not be opened correctly"错误信息时,从某种程度上讲,那是因为你的Chrome配置文件数据已经损坏。这个问题经常发生在手动升级Google Chrome的时候。 ![](https://farm8.staticflickr.com/7428/16238502737_27bdda6685_o.png) @@ -10,7 +10,7 @@ Linux有问必答--如果修复Google Chrome 的 ‘Your profile could not be op ### 方法一 ### -关掉所有Chrome窗口和子窗口。 +关掉所有Chrome窗口和标签页。 进入~/.config/google-chrome/Default,移除或者重命名"Web Data"文件。 @@ -21,9 +21,9 @@ Linux有问必答--如果修复Google Chrome 的 ‘Your profile could not be op ### 方法二 ### -关掉所有Chrome窗口和子窗口。 +关掉所有Chrome窗口和标签页。 -进入~/.config/google-chrome/"Profile 1", 并重命名"History"文件。 +进入~/.config/google-chrome/"Profile 1",并重命名"History"文件。 $ cd ~/.config/google-chrome/"Profile 1" $ mv History History.bak @@ -32,9 +32,9 @@ Linux有问必答--如果修复Google Chrome 的 ‘Your profile could not be op ### 方法三 ### -如果依然没有解决,你可以试试移除所有默认档案文件夹(~/.config/google-chrome/Default)。注意:如果这样做,你将会遗失所有之前打开的Google子窗口,导入的书签,浏览记录和登录数据等。 +如果依然没有解决,你可以试试移除所有默认配置文件夹(~/.config/google-chrome/Default)。注意:如果这样做,你将会遗失所有之前打开的Google标签、导入的书签,浏览记录和登录数据等。 -在移除之前,先关掉所有Chrome窗口和子窗口 +在移除之前,先关掉所有Chrome窗口和标签页 $ rm -rf ~/.config/google-chrome/Default @@ -45,6 +45,6 @@ Linux有问必答--如果修复Google Chrome 的 ‘Your profile could not be op via: http://ask.xmodulo.com/your-profile-could-not-be-opened-correctly-google-chrome.html 译者:[VicYu/Vic020](http://vicyu.net) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d27fb2ce44e1dc30ec4ce87b0dd7efa191bb319b Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 25 Feb 2015 16:08:41 +0800 Subject: [PATCH 392/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...our profile could not be opened correctly' on Google Chrome.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md (100%) diff --git a/translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/published/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md similarity index 100% rename from translated/tech/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md rename to published/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md From e8c24536a2f69179afa5ddf1c675ad218a4f9481 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 25 Feb 2015 16:31:26 +0800 Subject: [PATCH 393/725] =?UTF-8?q?20150225-4=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...h Answers--How to disable IPv6 on Linux.md | 148 ++++++++++++++++++ ....h--No such file or directory' on Linux.md | 97 ++++++++++++ ...to install a USB webcam in Raspberry Pi.md | 63 ++++++++ ... full kernel source on Debian or Ubuntu.md | 58 +++++++ 4 files changed, 366 insertions(+) create mode 100644 sources/tech/20150225 Linux FAQs with Answers--How to disable IPv6 on Linux.md create mode 100644 sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md create mode 100644 sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md create mode 100644 sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to disable IPv6 on Linux.md b/sources/tech/20150225 Linux FAQs with Answers--How to disable IPv6 on Linux.md new file mode 100644 index 0000000000..c6f0cde895 --- /dev/null +++ b/sources/tech/20150225 Linux FAQs with Answers--How to disable IPv6 on Linux.md @@ -0,0 +1,148 @@ +Linux FAQs with Answers--How to disable IPv6 on Linux +================================================================================ +> **Question**: I notice that one of my applications is trying to establish a connection over IPv6. But since our local network is not able to route IPv6 traffic, the IPv6 connection times out, and the application falls back to IPv4, which causes unnecessary delay. As I don't have any need for IPv6 at the moment, I would like to disable IPv6 on my Linux box. What is a proper way to turn off IPv6 on Linux? + +IPv6 has been introduced as a replacement of IPv4, the traditional 32-bit address space used in the Internet, to solve the imminent exhaustion of available IPv4 address space. However, since IPv4 has been used by every host or device connected to the Internet, it is practically impossible to switch every one of them to IPv6 overnight. Numerous IPv4 to IPv6 transition mechanisms (e.g., dual IP stack, tunneling, proxying) have been proposed to facilitate the adoption of IPv6, and many applications are being rewritten, as we speak, to add support for IPv6. One thing for sure is that IPv4 and IPv6 will inevitably coexist for the forseeable future. + +Ideally the [ongoing IPv6 transition process][1] should not be visible to end users, but the mixed IPv4/IPv6 environment might sometimes cause you to encounter various hiccups originating from unintended interaction between IPv4 and IPv6. For example, you may experience timeouts from applications such as apt-get or ssh trying to unsuccessfully connecting via IPv6, DNS server accidentally dropping AAAA DNS records for IPv6, or your IPv6-capable device not compatible with your ISP's legacy IPv4 network, etc. + +Of course this doesn't mean that you should blindly disable IPv6 on you Linux box. With all the benefits promised by IPv6, we as a society want to fully embrace it eventually, but as part of troubleshooting process for end-user experienced hiccups, you may try turning off IPv6 to see if indeed IPv6 is a culprit. + +Here are a few techniques allowing you to disable IPv6 partially (e.g., for a certain network interface) or completely on Linux. These tips should be applicable to all major Linux distributions including Ubuntu, Debian, Linux Mint, CentOS, Fedora, RHEL, and Arch Linux. + +### Check if IPv6 is Enabled on Linux ### + +All modern Linux distributions have IPv6 automatically enabled by default. To see IPv6 is activated on your Linux, use ifconfig or ip commands. If you see "inet6" in the output of these commands, this means your Linux has IPv6 enabled. + + $ ifconfig + +![](https://farm8.staticflickr.com/7282/16415082398_5fb0920506_b.jpg) + + $ ip addr + +![](https://farm8.staticflickr.com/7290/16415082248_c4e075548b_c.jpg) + +### Disable IPv6 Temporarily ### + +If you want to turn off IPv6 temporarily on your Linux system, you can use /proc file system. By "temporarily", we mean that the change we make to disable IPv6 will not be preserved across reboots. IPv6 will be enabled back again after you reboot your Linux box. + +To disable IPv6 for a particular network interface, use the following command. + + $ sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf//disable_ipv6' + +For example, to disable IPv6 for eth0 interface: + + $ sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6' + +![](https://farm8.staticflickr.com/7288/15982511863_0c1feafe7f_b.jpg) + +To enable IPv6 back on eth0 interface: + + $ sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6' + +If you want to disable IPv6 system-wide for all interfaces including loopback interface, use this command: + + $ sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6' + +### Disable IPv6 Permanently across Reboots ### + +The above method does not permanently disable IPv6 across reboots. IPv6 will be activated again once you reboot your system. If you want to turn off IPv6 for good, there are several ways you can do it. + +#### Method One #### + +The first method is to apply the above /proc changes persistently in /etc/sysctl.conf file. + +That is, open /etc/sysctl.conf with a text editor, and add the following lines. + + # to disable IPv6 on all interfaces system wide + net.ipv6.conf.all.disable_ipv6 = 1 + + # to disable IPv6 on a specific interface (e.g., eth0, lo) + net.ipv6.conf.lo.disable_ipv6 = 1 + net.ipv6.conf.eth0.disable_ipv6 = 1 + +To activate these changes in /etc/sysctl.conf, run: + + $ sudo sysctl -p /etc/sysctl.conf + +or simply reboot. + +#### Method Two #### + +An alternative way to disable IPv6 permanently is to pass a necessary kernel parameter via GRUB/GRUB2 during boot time. + +Open /etc/default/grub with a text editor, and add "ipv6.disable=1" to GRUB_CMDLINE_LINUX variable. + + $ sudo vi /etc/default/grub + +---------- + + GRUB_CMDLINE_LINUX="xxxxx ipv6.disable=1" + +In the above, "xxxxx" denotes any existing kernel parameter(s). Add "ipv6.disable=1" after them. + +![](https://farm8.staticflickr.com/7286/15982512103_ec5d940e58_b.jpg) + +Finally, don't forget to apply the modified GRUB/GRUB2 settings by running: + +On Debian, Ubuntu or Linux Mint: + + $ sudo update-grub + +On Fedora, CentOS/RHEL: + + $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg + +Now IPv6 will be completely disabled once you reboot your Linux system. + +### Other Optional Steps after Disabling IPv6 ### + +Here are a few optional steps you can consider after disabling IPv6. This is because while you disable IPv6 in the kernel, other programs may still try to use IPv6. In most cases, such application behaviors will not break things, but you want to disable IPv6 for them for efficiency or safety reason. + +#### /etc/hosts #### + +Depending on your setup, /etc/hosts may contain one or more IPv6 hosts and their addresses. Open /etc/hosts with a text editor, and comment out all lines which contain IPv6 hosts. + + $ sudo vi /etc/hosts + +---------- + + # comment these IPv6 hosts + # ::1 ip6-localhost ip6-loopback + # fe00::0 ip6-localnet + # ff00::0 ip6-mcastprefix + # ff02::1 ip6-allnodes + # ff02::2 ip6-allrouters + +#### Network Manager #### + +If you are using NetworkManager to manage your network settings, you can disable IPv6 on NetworkManager as follows. Open the wired connection on NetworkManager, click on "IPv6 Settings" tab, and choose "Ignore" in "Method" field. Save the change and exit. + +![](https://farm8.staticflickr.com/7293/16394993017_21917f027b_o.png) + +#### SSH server #### + +By default, OpenSSH server (sshd) tries to bind on both IPv4 and IPv6 addresses. + +To force sshd to bind only on IPv4 address, open /etc/ssh/sshd_config with a text editor, and add the following line. inet is for IPv4 only, and inet6 is for IPv6 only. + + $ sudo vi /etc/ssh/sshd_config + +---------- + + AddressFamily inet + +and restart sshd server. + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/disable-ipv6-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://www.google.com/intl/en/ipv6/statistics.html \ No newline at end of file diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md b/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md new file mode 100644 index 0000000000..8a2ae9cdcc --- /dev/null +++ b/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md @@ -0,0 +1,97 @@ +Linux FAQs with Answers--How to fix “fatal error: lame/lame.h: No such file or directory” on Linux +================================================================================ +> **Question**: I am trying to compile video encoder software on Linux, but the compilation fails with a message saying "fatal error: lame/lame.h: No such file or directory." How can I fix this error? + +The following compilation error suggests that your Linux system does not have LAME library and its development files installed. + + fatal error: lame/lame.h: No such file or directory + +[LAME][1] (short for "LAME Ain't an MP3 Encoder") is a popular MP3 encoding codec licensed with LGPL. Many video encoding/ripping tools use or support LAME. Among them are [FFmpeg][2], VLC, [Audacity][3], K3b, RipperX, and many more. + +To fix the compilation error, you need to install LAME library and its development files, as shown in the following. + +### Install LAME Library and its Development Files on Debian, Ubuntu or Linux Mint ### + +Debian and its derivative systems offer LAME library in their base repositories, so it is easy to install LAME with apt-get. + + $ sudo apt-get install libmp3lame-dev + +### Install LAME Library and its Development Files on Fedora, CentOS/RHEL ### + +On Red Hat based distributions, the LAME encoder library is available via the RPM Fusion's free repository. Thus you first need to set up [RPM Fusion (free) repository][4] before proceeding. + +Once RPM Fusion is set up, install LAME development files as follows. + + $ sudo yum --enablerepo=rpmfusion-free-updates install lame-devel + +As of February, 2015, RPM Fusion repository is not yet available for CentOS/RHEL 7. So this method will not be applicable on CentOS/RHEL 7. In that case, you can install LAME library by building it from the source (which is described below). + +### Compile LAME Library from the Source on Debian, Ubuntu or Linux Mint ### + +If you want to install customized LAME library with different compilation options, you need to build it yourself. Here is how you can compile and install LAME library (along with its header files) on your Debian-based system. + + $ sudo apt-get install gcc git + $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz + $ tar -xzf lame-3.99.5.tar.gz + $ cd lame-3.99.5 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +Note that when you run configure in the above steps, you can enable or disable various options based on your needs. Run the following command to see all available compilation options. + + $ ./configure --help + +The shared/static LAME libraries are installed in /usr/local/lib by default. To make the shared library accessible to other applications, complete this last step: + +Open /etc/ld.so.conf with your favorite text editor, and append the following line. + + /usr/local/lib + +and then run the command below. This will add shared libraries in /usr/local/lib to the dynamic loader cache, thereby making shared LAME library accessible to other applications. + + $ sudo ldconfig + +### Compile LAME Library from the Source on Fedora or CentOS/RHEL ### + +If your distribution (e.g., CentOS 7) does not offer a pre-built LAME library package, or you want to customize LAME library in any way, you need to build it from the source yourself. Here is how to compile and install LAME library and its development files on a Red Hat based system. + + $ sudo yum install gcc git + $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz + $ tar -xzf lame-3.99.5.tar.gz + $ cd lame-3.99.5 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +Before running make, feel free to customize compilation options by running configure with appropriate options. You can check available options with: + + $ ./configure --help + +Finally, you need to complete the last step because the shared LAME library installed in /usr/local/lib may not be visible to other applications. + +Append the following line in /etc/ld.so.conf: + + /usr/local/lib + +and then run the command below. This will add shared libraries (including LAME) in /usr/local/lib to the dynamic loader cache, making them visible to other applications. + + $ sudo ldconfig + +![](https://farm8.staticflickr.com/7340/16534478445_abc97cb65a_c.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/fatal-error-lame-no-such-file-or-directory.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://lame.sourceforge.net/ +[2]:http://ask.xmodulo.com/compile-ffmpeg-ubuntu-debian.html +[3]:http://xmodulo.com/how-to-cut-split-or-edit-mp3-file-on-linux.html +[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html \ No newline at end of file diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md b/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md new file mode 100644 index 0000000000..443c9c0ad8 --- /dev/null +++ b/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md @@ -0,0 +1,63 @@ +Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi +================================================================================ +> **Question**: Can I use a standard USB-based webcam on Raspberry Pi? How can I check if my USB webcam is compatible with Raspberry Pi, and how can I install it on Raspberry Pi? + +If you want to take pictures or record videos using Raspberry Pi board, you can install [Raspberry Pi camera board][1]. If you do not want to shell out money just for the camera board module, there is yet another way, which is to utilize a commonly found [USB web camera][2]. You may already have one for your PC. + +In this tutorial, we show how to set up a USB web camera on Raspberry Pi board. We assume that you are using Raspbian operation system. + +Before we start, it is better to check if your USB web camera is [one of those][3] which are known to be compatible with Raspberry Pi. If your USB webcam is not found in the compatibility list, don't be discouraged, as there is still a chance that your USB web camera may be detected by Raspberry Pi. + +### Check if a USB Webcam is Compatible with Raspberry Pi ### + +To check whether your USB web camera is detected on Raspberry Pi or not, plug it into the USB port of your Raspberry Pi, and type lsusb command in the terminal. + + $ lsusb + +If the output of the command does not list your webcam, there is a possibility that this is because your Raspberry Pi doesn't supply enough power needed for your USB web camera. In this case, you can try using a separate power line for the USB web camera, such as [USB power hub][4], and then repeat the lsusb command. If the USB webcam is still not recognized, we can only suggest you buy another USB web camera which is supported by Raspberry Pi. + +![](https://farm8.staticflickr.com/7408/16576646025_898f17f36e_o.png) + +In the above screenshot, the USB web camera is detected as "1e4e:0102", but it doesn't show the maker or the name of the web camera. When we try it with Fedora 20 in a laptop, it is successfully detected as "1e4e:0102 Cubeternet GL-UPC822 UVC WebCam." + +Another way to check if your USB web camera is supported by Raspberry Pi is by checking the /dev directory. If there is /dev/video0, this implies that your USB webcam is recognized by Raspberry Pi. + +### Take a Picture with USB Webcam ### + +After your USB webcam is successfully hooked up with Raspberry Pi, the next thing to do is to take some pictures to verify its functionality. + +For this, you can install fswebcam, which is a small webcam application. You can install fswebcam directly from the Raspbian repository as follows. + + $ sudo apt-get install fswebcam + +Once fswebcam is installed, run the following command in a terminal to capture a picture from the USB webcam: + + $ fswebcam --no-banner -r 640x480 image.jpg + +This command will capture a picture with 640x480 resolution, and save it as image.jpg. It will not put any banner in the bottom part of the picture. + +![](https://farm8.staticflickr.com/7417/16576645965_302046d230_o.png) + +Here is the result from the fswebcam command with 640x480 resolution. + +![](https://farm8.staticflickr.com/7345/16575497512_8d77f1b34c_o.jpg) + +The next example picture is captured without defining the resolution. The picture color is blueish, and the default resolution is only 358x288. + +![](https://farm8.staticflickr.com/7390/15954067124_760fbcdd9c_o.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/install-usb-webcam-raspberry-pi.html + +作者:[Kristophorus Hadiono][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/kristophorus +[1]:http://xmodulo.com/install-raspberry-pi-camera-board.html +[2]:http://xmodulo.com/go/usb_webcam +[3]:http://elinux.org/RPi_USB_Webcams +[4]:http://xmodulo.com/go/usb_powerhub \ No newline at end of file diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md new file mode 100644 index 0000000000..fdab7af325 --- /dev/null +++ b/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md @@ -0,0 +1,58 @@ +Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu +================================================================================ +> **Question**: I need to download and install a full kernel source tree to compile a custom kernel for my Debian or Ubuntu system. What is a proper way to download full kernel source on Debian or Ubuntu? + +Before installing full kernel source on your Linux system, ask yourself whether you really need the full kernel source. If you are trying to compile a kernel module or a custom driver for your kernel, you do not need the full kernel source. You only need to install [matching kernel header files][1], and that's it. + +You need the full kernel source tree only if you want to build a custom kernel after modifying the kernel code in any way and/or tweaking default kernel options. + +Here is how to **download and install full kernel source tree from Debian or Ubuntu repositories**. While you can download the official kernel source code from [https://www.kernel.org/pub/linux/kernel/][2], using distro's repositories allows you to download a kernel source with the maintainer's patches applied to it. + +### Install Full Kernel Source on Debian ### + +Before downloading kernel source, install dpkg-dev, which contains a suite of development tools needed to build Debian source packages. Among other things, dpkg-dev contains dpgk-source tool which can extract a Debian source package and automatically apply patches. + + $ sudo apt-get install dpkg-dev + +Next, run the following command to download full kernel source. + + $ apt-get source linux-image-$(uname -r) + +Along with the full kernel source (linux_X.X.XX.orig.tar.xz), any available kernel patches (linux_X.X.X+XXX.debian.tar.xz) and source control file (linux_XXXX.dsc) will also be downloaded and stored in the current directory. The .dsc file instructs how the patches are applied to the kernel sources. + +Upon the completion of download, the above command will automatically invoke dpkg-source tool, which will unpack the downloaded kernel source in the current directory, and apply downloaded patches according to .dsc file. + +The final full kernel source tree will be available in the current directory as "linux-X.X.XX". + +![](https://farm9.staticflickr.com/8676/16341110300_b4f059eeb0_b.jpg) + +### Install Full Kernel Source on Ubuntu ### + +If you want to install full kernel source, the Debian way described above should work on Ubuntu as well. + +There is another way to download full kernel source on Ubuntu. You can actually check out the kernel source tree maintained by Canonical for different Ubuntu releases. + +$ sudo apt-get install git +$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release --codename | cut -f2).git + +For example, if you are using Ubuntu 14.04, the above command will check out code from "ubuntu-trusty" Git repository. + +![](https://farm9.staticflickr.com/8642/16526856391_de636ff9b8_c.jpg) + +Once you check out the Git repository, use the following command to install necessary development packages to meet the build dependencies for the kernel source tree. + + $ sudo apt-get build-dep linux-image-$(uname -r) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://ask.xmodulo.com/install-kernel-headers-linux.html +[2]:https://www.kernel.org/pub/linux/kernel/ \ No newline at end of file From 60fe04463754f2bbfc9c768244f891fb089a663b Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 25 Feb 2015 17:41:18 +0800 Subject: [PATCH 394/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... And Persistent Xubuntu Linux USB Drive.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md b/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md index 8025e91aa1..df7266a7a1 100644 --- a/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md +++ b/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md @@ -1,4 +1,4 @@ -3种创建轻量、持久化的Xubuntu Linux USB系统盘的方法 +3种方法来创建轻量、持久化的Xubuntu Linux USB系统盘 ================================================================================ ### 使用Universal USB Install创建持久化USB Xubuntu系统盘 ### @@ -9,13 +9,13 @@ > 译者注:持久化Linux USB系统盘(Persistent Linux USB drive),安装在优盘的Linux系统,允许用户保存数据到优盘而不是仅仅将这些修改留在内存中。这些数据可以在重启后恢复并且重新使用,甚至是在其他的机器上面启动也没有关系。一般情况下,持久化系统盘会安装一个压缩过的Linux操作系统。 -为什么你需要做这些事情呢,这里有5个很好的理由: +为什么要这样做呢,这里有5个很好的理由: -1. 你想要在你的电脑上安装一个轻量的并且功能完善的Linux版本。 +1. 你想要在你的电脑上安装一个轻量并且功能完善的Linux版本。 2. 你的电脑没有硬盘,那么一个Linux USB系统盘就可以让这台电脑摆脱被扔到垃圾堆的命运。 3. 你想体验一下Linux,但是你却不想花太多的时间去准备。 4. 你想创建一个USB系统恢复盘,并且在优盘上安装一些特定的应用程序。 -5. 你想要一个可以装在屁股口袋或者可以挂在钥匙圈上面的可定制的Linux版本。 +5. 你想要一个可定制的Linux版本,能装在后兜或者挂在钥匙圈上。 现在,我们有了充足的理由,那么开始做一些准备工作吧。 @@ -51,7 +51,7 @@ 14.04版是一个长期维护的版本,维护周期会持续3年。14.10是最新版本,但是只提供9个月的维护。 -你选择了下载站点以后,会提示你选择32位版本或者64位版本。如果你的电脑是32位,就选32位版本,同样,如果你的电脑是64位选64位版本就行了。 +你选择了下载站点以后,会提示你选择32位版本或者64位版本。如果你的电脑是32位,就选32位版本,同样,如果你的电脑是64位,那就选64位版本。 [点击这里,有一个教程来教你辨别你的电脑是32位还是64位][5]。 @@ -105,7 +105,7 @@ Universal USB Installer主界面出现以后,从下拉列表中选择你想要 Startup Disk Creator使用起来很简单。 -界面被划分成两个部分。在上面部分指定下载的系统盘路径,在下面指定安装的优盘。 +界面被划分成两个部分。上部分指定下载的系统盘路径,下部分指定安装的优盘。 首先,点击“Other”按钮,第二步,选择你所下载的Xubuntu ISO文件。 @@ -119,7 +119,7 @@ Startup Disk Creator使用起来很简单。 你创建的过程中,你可能需要输入几次你的系统密码,USB系统盘创建完成以后,你就可以使用它启动到Xubuntu了。 -### 使用UNetbootin创建持久化Xubuntu系统盘 ### +### 使用UNetbootin创建持久化的Xubuntu系统盘 ### ![](http://f.tqn.com/y/linux/1/S/I/J/1/unetbootin1.png) @@ -127,7 +127,7 @@ Startup Disk Creator使用起来很简单。 个人来说,在Windows系统上面我喜欢用Universal USB Installer,但Linux的话,UNetbootin更合适一些。 -> 注:UNetbootin并不是100%完美的,它并不支持所有的Linux发行版。 +> 注:UNetbootin并不是100%完美的,不是所有的Linux发行版都支持。 Windows平台可以点击[这里][8]下载UNetbootin。 @@ -141,11 +141,11 @@ Linux平台可以使用package manager安装UNetbootin。 > sudo unetbootin -UNetbootin的界面分为两个部分。你可以在上面的部分选择一个Linux发行版,然后下载它,如果已经下载了某个发行版,可以在下半部分选择已经下载的系统盘。 +UNetbootin的界面分为两个部分。你可以在上半部分选择一个Linux发行版,然后下载它,如果已经下载了某个发行版,可以在下半部分选择已经下载的系统盘。 点击“Diskimage”单选框,然后点击三个点的按钮。找到已经下载的Xubuntu ISO文件。路径会显示到按钮旁边的文本框里面。 -修改“Space used to preserve files across reboots”的值,来指定你想要用来存储“持久化”数据的空间大小。 +设置“Space used to preserve files across reboots”的值,来指定你想要用来存储“持久化”数据的空间大小。 类型选择USB drive,然后选择优盘的盘符。 @@ -159,7 +159,7 @@ via : http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xu 作者:[Gary Newell][a] 译者:[zhouj-sh](https://github.com/Zhouj-sh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -171,4 +171,4 @@ via : http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xu [5]:http://pcsupport.about.com/od/fixtheproblem/f/32-bit-64-bit-windows.htm [6]:http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ [7]:http://linux.about.com/od/howtos/fl/Learn-Ubuntu-The-Unity-Dash.htm -[8]:http://linux.about.com/od/howtos/ss/How-To-Create-A-UEFI-Bootable-Ubuntu-USB-Drive-Using-Windows.htm \ No newline at end of file +[8]:http://linux.about.com/od/howtos/ss/How-To-Create-A-UEFI-Bootable-Ubuntu-USB-Drive-Using-Windows.htm From 3438c76734e75297dda40151723eb4c7f78d7c2c Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 26 Feb 2015 03:49:20 +0800 Subject: [PATCH 395/725] Update 20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md --- ...--How to install full kernel source on Debian or Ubuntu.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md index fdab7af325..65b3a08c48 100644 --- a/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md +++ b/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md @@ -1,3 +1,5 @@ +translating by martin. + Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu ================================================================================ > **Question**: I need to download and install a full kernel source tree to compile a custom kernel for my Debian or Ubuntu system. What is a proper way to download full kernel source on Debian or Ubuntu? @@ -55,4 +57,4 @@ via: http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html [a]:http://ask.xmodulo.com/author/nanni [1]:http://ask.xmodulo.com/install-kernel-headers-linux.html -[2]:https://www.kernel.org/pub/linux/kernel/ \ No newline at end of file +[2]:https://www.kernel.org/pub/linux/kernel/ From cd55dcb403f32cc6bb90d5fb09f865d2f042c257 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 26 Feb 2015 10:10:39 +0800 Subject: [PATCH 396/725] PUB:20140821 What is a good EPUB reader on Linux @shipsw --- ...140821 What is a good EPUB reader on Linux.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) rename {translated/share => published}/20140821 What is a good EPUB reader on Linux.md (65%) diff --git a/translated/share/20140821 What is a good EPUB reader on Linux.md b/published/20140821 What is a good EPUB reader on Linux.md similarity index 65% rename from translated/share/20140821 What is a good EPUB reader on Linux.md rename to published/20140821 What is a good EPUB reader on Linux.md index 2b919ee6bb..7c3c4ea287 100644 --- a/translated/share/20140821 What is a good EPUB reader on Linux.md +++ b/published/20140821 What is a good EPUB reader on Linux.md @@ -1,25 +1,25 @@ Linux版EPUB阅读器 ================================================================================ -如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了。专注阅读16世纪的书是非常困难的了,没人希望后台蹦出Facebook聊天窗口。但是如果你非要在电脑上打开电子书的话,那么你需要一个电子书阅读软件。大多数编辑支持使用EPUB格式来存放电子书(电子出版物)。幸运的书,linux上从不缺乏此类软件。以下书一些Linux上比较好的EPUB阅读软件。 +如果说用平板电脑看书尚属主流的话,那么在电脑上读书就非常少见了。专注阅读16世纪的书是非常困难的了,没人希望后台蹦出QQ聊天窗口。但是如果你非要在电脑上打开电子书的话,那么你需要一个电子书阅读软件。大多数出版物支持使用EPUB格式的电子书(电子出版物)。幸运的是,linux上从不缺乏EPUB阅读器类的软件。以下是一些Linux上不错的EPUB阅读软件。 ### 1. Calibre ### ![](https://farm6.staticflickr.com/5577/14975176155_0989766bb3_z.jpg) -先从列表中最有名的软件开始: [Calibre][1]。Calibre 不仅仅是个阅读器,他还是个电子图书馆。软件支持几乎所有的格式,集成了阅读器,管理器,一个可以从互联网下载书籍封面的元数据编辑器,一个EPUB编辑器,新闻阅读器和一个用来下载电子书的搜索引擎。可喜的是,界面丝毫不逊色专业的阅读软件。唯一的缺点书如果你只想要一个EPUB阅读器的话,这个软件还是太大了。 +先从列表中最有名的软件开始: [Calibre][1]。Calibre 不仅仅是个阅读器,它还是个电子图书馆。软件支持几乎所有的格式,集成了阅读器、管理器、一个可以从互联网下载书籍封面的元数据编辑器、一个EPUB编辑器、新闻阅读器和一个用来下载电子书的搜索引擎。可喜的是,界面丝毫不逊色专业的阅读软件。唯一的缺点是如果你只想要一个EPUB阅读器的话,这个软件还是太大了。 ### 2. FBReader ### ![](https://farm4.staticflickr.com/3900/14975176165_f2e4afd2fa_o.jpg) -[FBReader][2] 也是一个图书馆管理软件,但是比Calibre小。界面简洁分为两个部分:左边书文件管理、元数据编辑、和下载新书等功能;右边书阅读区。如果你喜欢简洁,这个软件挺不错。我个人非常喜欢这类直观标记书籍和分类的做法。 +[FBReader][2] 也是一个图书馆管理软件,但是比Calibre小。界面简洁分为两个部分:左边是文件管理、元数据编辑和下载新书等功能;右边是阅读区。如果你喜欢简洁,这个软件挺不错。我个人非常喜欢这类直观标记书籍和分类的做法。 ### 3. Cool Reader ### ![](https://farm6.staticflickr.com/5594/14975176195_ac46952150.jpg) -对于那些只想想看EPUB书内容的用户,我推荐 [Cool Reader][5]。遵循Linux应用程序的规则,Cool Reader 做了优化,每次只打开一个EPUB文件,可以使用简单的快捷键进行阅读和导航。由于程序书基于Qt开发的,所以他也遵循Qt的规则,需要大量的设置项。 +对于那些只想想看EPUB书内容的用户,我推荐 [Cool Reader][5]。遵循Linux应用程序的文化,Cool Reader 做了优化,每次只打开一个EPUB文件,可以使用简单的快捷键进行阅读和导航。由于程序书基于Qt开发的,所以他也遵循Qt的风格,需要大量的设置项。 ### 4. Okular ### @@ -31,19 +31,19 @@ Linux版EPUB阅读器 ![](https://farm4.staticflickr.com/3835/14788504789_e7c742fa20_z.jpg) -[pPub][4]是个老项目,Github上可以找到这个项目,他最后的更新已经是在两年前了。尽管如此,这个软件还是值得使用的,pPub是用Python编写的,基于GTK3和WebKit,是个简单轻量的软件。界面可能需要一些更新,不够简洁,但是内部却非常好。软件支持JavaScript。所以,谁来捡起这个项目呢? +[pPub][4]是个老项目,Github上可以找到这个项目,它最后的更新已经是在两年前了。尽管如此,这个软件还是值得使用的,pPub是用Python编写的,基于GTK3和WebKit,是个简单轻量的软件。界面可能需要一些更新,不够简洁,但是内部却非常好。软件支持JavaScript。所以,谁来捡起这个项目呢? ### 6. epub ### ![](https://farm4.staticflickr.com/3871/14788844378_16fb51a1b9_z.jpg) -如果你只是想快速简单的查看EPUB文件的内容,不关心任何图形化界面功能的话,最好使用命令行模式打开EPUB。[epub][6] 是一个用Python编写的阅读器,可以在终端环境读取EPUB文件的内容。软件可以在章节、页面见切换,没有其他的功能。这是最简洁的EPUB阅读器了。 +如果你只是想快速简单的查看EPUB文件的内容,不关心任何图形化界面功能的话,最好使用命令行模式打开EPUB。[epub][6] 是一个用Python编写的阅读器,可以在终端环境读取EPUB文件的内容。软件可以在章节、页面间切换,没有其他的功能。这是最简洁的EPUB阅读器了。 ### 7. Sigil ### ![](https://farm4.staticflickr.com/3921/14788640417_7940627871_z.jpg) -最后介绍的这个实际上不是个EPUB阅读器,应该是个独立的编辑器。[Sigil][7] 可以提取EPUB文件的内容并转换成其他格式:xhtml文本,图像,格式,还有其他的内容,比如音频等。界面比基本的阅读器复杂,但是功能还是比较丰富的。我很喜欢他的标签体系,如果你对网页比较熟悉的话,这个软件书很好使用的。 +最后介绍的这个实际上不是个EPUB阅读器,应该是个独立的编辑器。[Sigil][7] 可以提取EPUB文件的内容并将其分离成其他格式:xhtml文本、图像、css,及其他的内容比如音频等。界面比基本的阅读器复杂,但是功能还是比较丰富的。我很喜它的标签体系,如果你对网页比较熟悉的话,这个软件是很好使用的。 总结,有很多的开源的EPUB阅读器,有一些只有最基本的功能, 另外一些功能却太多了。一般来说,我建议你选择一个最合适的使用。如果你有更好的EPUB阅读器,请在评论里告诉我们! @@ -53,7 +53,7 @@ via: http://xmodulo.com/2014/08/good-epub-reader-linux.html 作者:[Adrien Brochard][a] 译者:[shipsw](https://github.com/shipsw) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 96d2a1f51ce516d0d2789398a1ba4de0305facfc Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 26 Feb 2015 10:22:32 +0800 Subject: [PATCH 397/725] translating --- ...or--lame or lame.h--No such file or directory' on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md b/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md index 8a2ae9cdcc..0ee6b607c8 100644 --- a/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md +++ b/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md @@ -1,3 +1,5 @@ +Translating----geekpi + Linux FAQs with Answers--How to fix “fatal error: lame/lame.h: No such file or directory” on Linux ================================================================================ > **Question**: I am trying to compile video encoder software on Linux, but the compilation fails with a message saying "fatal error: lame/lame.h: No such file or directory." How can I fix this error? @@ -94,4 +96,4 @@ via: http://ask.xmodulo.com/fatal-error-lame-no-such-file-or-directory.html [1]:http://lame.sourceforge.net/ [2]:http://ask.xmodulo.com/compile-ffmpeg-ubuntu-debian.html [3]:http://xmodulo.com/how-to-cut-split-or-edit-mp3-file-on-linux.html -[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html \ No newline at end of file +[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html From 73d713daa9214e4665973c813b2010f8b299e64c Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 26 Feb 2015 10:32:51 +0800 Subject: [PATCH 398/725] PUB:20150209 Non-Linux FOSS--Homebrew @geekpi --- .../20150209 Non-Linux FOSS--Homebrew.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename {translated/share => published}/20150209 Non-Linux FOSS--Homebrew.md (71%) diff --git a/translated/share/20150209 Non-Linux FOSS--Homebrew.md b/published/20150209 Non-Linux FOSS--Homebrew.md similarity index 71% rename from translated/share/20150209 Non-Linux FOSS--Homebrew.md rename to published/20150209 Non-Linux FOSS--Homebrew.md index a6f30ec50e..d132d55555 100644 --- a/translated/share/20150209 Non-Linux FOSS--Homebrew.md +++ b/published/20150209 Non-Linux FOSS--Homebrew.md @@ -1,14 +1,14 @@ -非Linux的免费开源软件:Homebrew +非Linux的自由开源软件:Homebrew ================================================================================ -我日常工作中使用的是OS X。我能容忍它很大程序上是因为它的终端。如果我不能在黑色背景绿色文字的终端下工作,我想我会疯了。不幸的是,OS Xmei没有我需要的全部命令行工具。Homebrew的到来拯救了这。 +我日常工作中使用的是OS X。我能容忍它很大程序上是因为它的终端。如果我不能在黑色背景绿色文字的终端下工作,我想我会疯了。不幸的是,OS X 没有我需要的全部命令行工具。Homebrew的到来拯救了我。 ![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11811fossf1.png) -Homebrew扮演了OS X中缺乏的包管理器的角色。命令的使用很像apt-get,它能够安装无数的应用。一个最好的例子是wget。我很惊讶OS X中没有包含wget,但是homebrew中有,这是最简单的一套了 +Homebrew扮演了OS X中所缺乏的包管理器的角色。命令的使用很像apt-get,它能够安装无数的应用。一个最好的例子是wget。我很惊讶OS X中没有包含wget,但是homebrew中有,很简单就安装上了。 最棒的是homebrew在/usr/local文件夹下安装软件。你不必担心homebrew会破坏你的系统,因为它不会访问/usr/local之外的其他文件。OSX系统更新不会覆盖你的程序,并且/usr/local/bin已经在PATH中,使用homebrew安装的程序可以直接工作。 -homebrew使用ruby管理它的包和功能,但是使用它不需要任何编程知识。并且安装过程只需要在命令行中复制粘贴就好了。如果你使用的是OS X,但是你希望像在Linux中那样方便地安装熬,就试一试homrbrew吧:[http://brew.sh][1]。 +homebrew使用ruby管理它的包和功能,但是使用它不需要任何编程知识。并且安装过程只需要在命令行中复制粘贴就好了。如果你使用的是OS X,但是你希望像在Linux中那样方便地安装,就试一试homrbrew吧:[http://brew.sh][1]。 -------------------------------------------------------------------------------- @@ -16,7 +16,7 @@ via: http://www.linuxjournal.com/content/non-linux-foss-homebrew 作者:[Shawn Powers][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 94a00e2594b7e49bd232f13ec8ec7a3ef7b81330 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 26 Feb 2015 10:53:05 +0800 Subject: [PATCH 399/725] translated --- ....h--No such file or directory' on Linux.md | 99 ------------------- ....h--No such file or directory' on Linux.md | 98 ++++++++++++++++++ 2 files changed, 98 insertions(+), 99 deletions(-) delete mode 100644 sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md create mode 100644 translated/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md b/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md deleted file mode 100644 index 0ee6b607c8..0000000000 --- a/sources/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md +++ /dev/null @@ -1,99 +0,0 @@ -Translating----geekpi - -Linux FAQs with Answers--How to fix “fatal error: lame/lame.h: No such file or directory” on Linux -================================================================================ -> **Question**: I am trying to compile video encoder software on Linux, but the compilation fails with a message saying "fatal error: lame/lame.h: No such file or directory." How can I fix this error? - -The following compilation error suggests that your Linux system does not have LAME library and its development files installed. - - fatal error: lame/lame.h: No such file or directory - -[LAME][1] (short for "LAME Ain't an MP3 Encoder") is a popular MP3 encoding codec licensed with LGPL. Many video encoding/ripping tools use or support LAME. Among them are [FFmpeg][2], VLC, [Audacity][3], K3b, RipperX, and many more. - -To fix the compilation error, you need to install LAME library and its development files, as shown in the following. - -### Install LAME Library and its Development Files on Debian, Ubuntu or Linux Mint ### - -Debian and its derivative systems offer LAME library in their base repositories, so it is easy to install LAME with apt-get. - - $ sudo apt-get install libmp3lame-dev - -### Install LAME Library and its Development Files on Fedora, CentOS/RHEL ### - -On Red Hat based distributions, the LAME encoder library is available via the RPM Fusion's free repository. Thus you first need to set up [RPM Fusion (free) repository][4] before proceeding. - -Once RPM Fusion is set up, install LAME development files as follows. - - $ sudo yum --enablerepo=rpmfusion-free-updates install lame-devel - -As of February, 2015, RPM Fusion repository is not yet available for CentOS/RHEL 7. So this method will not be applicable on CentOS/RHEL 7. In that case, you can install LAME library by building it from the source (which is described below). - -### Compile LAME Library from the Source on Debian, Ubuntu or Linux Mint ### - -If you want to install customized LAME library with different compilation options, you need to build it yourself. Here is how you can compile and install LAME library (along with its header files) on your Debian-based system. - - $ sudo apt-get install gcc git - $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz - $ tar -xzf lame-3.99.5.tar.gz - $ cd lame-3.99.5 - $ ./configure --enable-static --enable-shared - $ make - $ sudo make install - -Note that when you run configure in the above steps, you can enable or disable various options based on your needs. Run the following command to see all available compilation options. - - $ ./configure --help - -The shared/static LAME libraries are installed in /usr/local/lib by default. To make the shared library accessible to other applications, complete this last step: - -Open /etc/ld.so.conf with your favorite text editor, and append the following line. - - /usr/local/lib - -and then run the command below. This will add shared libraries in /usr/local/lib to the dynamic loader cache, thereby making shared LAME library accessible to other applications. - - $ sudo ldconfig - -### Compile LAME Library from the Source on Fedora or CentOS/RHEL ### - -If your distribution (e.g., CentOS 7) does not offer a pre-built LAME library package, or you want to customize LAME library in any way, you need to build it from the source yourself. Here is how to compile and install LAME library and its development files on a Red Hat based system. - - $ sudo yum install gcc git - $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz - $ tar -xzf lame-3.99.5.tar.gz - $ cd lame-3.99.5 - $ ./configure --enable-static --enable-shared - $ make - $ sudo make install - -Before running make, feel free to customize compilation options by running configure with appropriate options. You can check available options with: - - $ ./configure --help - -Finally, you need to complete the last step because the shared LAME library installed in /usr/local/lib may not be visible to other applications. - -Append the following line in /etc/ld.so.conf: - - /usr/local/lib - -and then run the command below. This will add shared libraries (including LAME) in /usr/local/lib to the dynamic loader cache, making them visible to other applications. - - $ sudo ldconfig - -![](https://farm8.staticflickr.com/7340/16534478445_abc97cb65a_c.jpg) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/fatal-error-lame-no-such-file-or-directory.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://ask.xmodulo.com/author/nanni -[1]:http://lame.sourceforge.net/ -[2]:http://ask.xmodulo.com/compile-ffmpeg-ubuntu-debian.html -[3]:http://xmodulo.com/how-to-cut-split-or-edit-mp3-file-on-linux.html -[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html diff --git a/translated/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md b/translated/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md new file mode 100644 index 0000000000..685e637072 --- /dev/null +++ b/translated/tech/20150225 Linux FAQs with Answers--How to fix 'fatal error--lame or lame.h--No such file or directory' on Linux.md @@ -0,0 +1,98 @@ +Linux 有问必答:如何在Linux中修复“fatal error: lame/lame.h: No such file or directory” +================================================================================ +> **提问**: 我尝试着在Linux中编译视频编码器,但是编译提示出错:“fatal error: lame/lame.h: No such file or directory”, 我该如何修复这个错误? + +下面的编译错误说明你的系统没有安装LAME库和它的开发文件。 + + fatal error: lame/lame.h: No such file or directory + +[LAME][1]("LAME Ain't an MP3 Encoder")是一个流行的LPGL授权的MP3编码器。许多视频编码工具使用或者支持LAME。这其中有[FFmpeg][2]、 VLC、 [Audacity][3]、 K3b、 RipperX等。 + +要修复这个编译错误,你需要安装LAME库和开发文件,按照下面的来。 + +### 在Debian、Ubuntu或者Linux Mint上安装LAME库和安装文件 ### + +Debian和它的衍生版在基础库中已经提供了LAME库,因此可以用apt-get直接安装。 + + $ sudo apt-get install libmp3lame-dev + +### 在Fedora、CentOS/RHEL上安装LAME库和安装文件 ### + +在基于RED HAT的版本中,LAME在RPM Fusion的免费仓库中就有,那么你需要先设置[RPM Fusion (免费)仓库][4]。 + +RPM Fusion设置完成后,如下安装LAME开发文件。 + + $ sudo yum --enablerepo=rpmfusion-free-updates install lame-devel + +在2015年1月,RPM Fusion仓库已经不可以在CentOS/RHEL 7中可用了。因此,这个方法不能用在CentOS/RHEL 7 中。这时你就要从源码安装LAME库了(下面会描述)。 + +### 在Debian、Ubuntu或者Linux Mint中从源码编译LAME库 ### + +如果你希望用不同的编译选项安装自定义的LAME库,你需要自己编译。下面是怎样在基于Debian的系统中编译和安装LAME库(和它的头文件)。 + + $ sudo apt-get install gcc git + $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz + $ tar -xzf lame-3.99.5.tar.gz + $ cd lame-3.99.5 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +注意当你运行上面的配置步骤时,你可以根据你的需求启用会禁止不同的选项。运行下面的命令查看不同的编译选项。 + + $ ./configure --help + +共享/静态LAME默认安装在 /usr/local/lib。要让共享库可以被其他程序使用,完成最后一步: + +用编辑器打开 /etc/ld.so.conf,加入下面这行。 + + /usr/local/lib + +接着运行下面的命令,这会将/usr/local/lib中的共享库添加到动态加载缓存中,因此LAME库就可以被其他程序调用了。 + + $ sudo ldconfig + +### 在Fedora或者CentOS/RHEL中从源码编译LAME库 ### + +如果你的发行版(比如 CentOS 7)没有提供预编译的LAME库,或者你想要自定义LAME库,你需要从源码自己编译。下面是在基于Red Hat的系统中编译安装LAME库的方法。 + + + $ sudo yum install gcc git + $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz + $ tar -xzf lame-3.99.5.tar.gz + $ cd lame-3.99.5 + $ ./configure --enable-static --enable-shared + $ make + $ sudo make install + +运行make之前,你可以在configure中带上合适的选项自定义编译选项。你可以用下面的命令检查可用的选项: + + $ ./configure --help + +最后你需要完成最后一步,因为安装在/usr/local/lib的LAME共享库可能在其他程序中不可用。 + +在/etc/ld.so.conf中添加下面这行: + + /usr/local/lib + +接着运行下面的命令。这会添加 /usr/local/lib中的共享库(包括LAME)到动态加载缓存中,让其他程序可以访问到。 + + $ sudo ldconfig + +![](https://farm8.staticflickr.com/7340/16534478445_abc97cb65a_c.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/fatal-error-lame-no-such-file-or-directory.html + +作者:[Dan Nanni][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://lame.sourceforge.net/ +[2]:http://ask.xmodulo.com/compile-ffmpeg-ubuntu-debian.html +[3]:http://xmodulo.com/how-to-cut-split-or-edit-mp3-file-on-linux.html +[4]:http://xmodulo.com/how-to-install-rpm-fusion-on-fedora.html From ceb65922fa430335b090705fa1013365267f6abd Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 26 Feb 2015 14:10:47 +0800 Subject: [PATCH 400/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Create A Lightweight And Persistent Xubuntu Linux USB Drive.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md (100%) diff --git a/translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md b/published/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md similarity index 100% rename from translated/share/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md rename to published/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md From a42150d4d06c5081151b80581e6665e40e197e81 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Thu, 26 Feb 2015 15:50:01 +0800 Subject: [PATCH 401/725] Translating by ZTinoZ --- .../share/20150114 What is a good IDE for C or C++ on Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 0434deb27c..475e75542d 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -18,7 +18,7 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm9.staticflickr.com/8573/16088461968_c6a6c9e49a_c.jpg) -牺牲了很多特色功能但是增加了很多灵活性,[Geany][6] is at the opposite of Eclipse. But what it lacks (like a debugger for example), Geany makes it up with nice little features: a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. +牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、模板a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. ### 4. MonoDevelop ### From 42db52ade961c8f9ad60e9bc2886919d46ef4cb5 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Fri, 27 Feb 2015 19:26:37 +0800 Subject: [PATCH 402/725] =?UTF-8?q?20150227-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../share/20150227 Chess in a Few Bytes.md | 114 +++++ ...Bunch of Best Known Linux Network Tools.md | 444 ++++++++++++++++++ ...oid Apps on Ubuntu using ARChon Runtime.md | 114 +++++ ...diting is supported GRUB Error In Linux.md | 86 ++++ ...pdate cannot be used to add new CD-ROMs.md | 72 +++ ...eight Budgie v8 Desktop in Ubuntu 14.04.md | 98 ++++ 6 files changed, 928 insertions(+) create mode 100644 sources/share/20150227 Chess in a Few Bytes.md create mode 100644 sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md create mode 100644 sources/tech/20150227 Enjoy Android Apps on Ubuntu using ARChon Runtime.md create mode 100644 sources/tech/20150227 Fix Minimal BASH like line editing is supported GRUB Error In Linux.md create mode 100644 sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md create mode 100644 sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md diff --git a/sources/share/20150227 Chess in a Few Bytes.md b/sources/share/20150227 Chess in a Few Bytes.md new file mode 100644 index 0000000000..26ef9d523d --- /dev/null +++ b/sources/share/20150227 Chess in a Few Bytes.md @@ -0,0 +1,114 @@ +Chess in a Few Bytes +================================================================================ +I am showing my age by mentioning that my introduction to computing was a ZX81, a home computer produced by a UK developer (Sinclair Research) which had a whopping 1KB of RAM. The 1KB is not a typographical error, the home computer really shipped with a mere 1KB of onboard memory. But this memory limitation did not prevent enthusiasts producing a huge variety of software. In fact the machine sparked a generation of programming wizards who were forced to get to grips with its workings. The machine was upgradable with a 16KB RAM pack which offered so many more coding possibilities. But the unexpanded 1KB machine still inspired programmers to release remarkable software. + +![1K ZX Chess ](http://www.linuxlinks.com/portal/content2/reviews/Games2/1KZXChess.jpg) + +My favourite ZX81 games were Flight Simulation, 3D Monster Maze, Galaxians, and above all 1K ZX Chess. Only the latter was written for the unexpanded ZX81. In fact, David Horne's 1K ZX Chess was coded in a mere 672 bytes of RAM. However, the game managed to implement most chess rules, and offer a computer opponent. While some important rules were omitted (castling, pawn promotion, and en passant capture), it was still amazing to be able to play against artificial intelligence. The game took up a fair chunk of my misspent youth. + +1K ZX Chess remained the smallest implementation of chess on any computer for 33 years until the record was broken by BootChess this year, and subsequently by Toledo AtomChess. These three games do not implement all of the chess rules, so for completeness I have included my favourite small implementation of chess that implements a complete set of chess rules. + +Linux has a good range of extremely strong chess engines such as Stockfish, Critter, Togo II, Crafty, GNU Chess, and Komodo. The chess engines featured in this article offer no match to a good chess engine, but they show how much can be achieved with a minuscule codebase. + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/ToledoAtomchess.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Toledo.png) + +You may have seen a considerable amount of press coverage about BootChess, a chess program written in 487 bytes of code, smashing the record of the then smallest chess program, 1K ZX Chess. Óscar Toledo Gutiérrez took up the mantle and decided to code an even more compact chess game. Toledo Atomchess is a mere 481 bytes of x86 assembly code which fits in a boot sector. The engine plays a reasonable game of chess given the limitations of its incredibly small codebase. + +Features include: + +- Basic chess movements +- ASCII text representation of chess board +- Moves are entered in algebraic form +- Search depth of 3-ply + +Obviously, to fit the chess of game into 481 bytes, the author had to make some sacrifices. These limitations include: + +- No promotion of pawns +- No castling +- No en passant +- No move validation + +The author has also written chess programs in C, JavaScript and Java; each are very small implementations of chess. + +- Website: [nanochess.org/chess6.html][1] +- Developer: Óscar Toledo Gutiérrez +- License: Free for non-commercial use +- Version Number: - + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/BootChess.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-BootChess.png) + +BootChess is an extremely small computer implementation of chess. The game is crammed into a mere 487 bytes and runs on Windows, Mac OS X and Linux operating systems. The board and pieces of BootChess are represented by text alone, with P representing pawns, Q used for the queens and full stops entered for empty squares. + +Features include: + +- Graphic text representation of chess board and use input +- Bootsector sized (512 bytes) with a playable chess game +- x86 bios hardware only bootstrap (no software dependencies) +- All main legal moves including double square pawn start +- Pawn promotion to queen (contrary to 1k ZX Chess) +- CPU artificial intelligence called taxiMax > minMax half-ply +- Hard-coded Spanish white pieces opening + +Again, there are some important limitations. Omissions include: + +- Under-promotion +- En passant pawn capture +- No castling +- 3-repetition rule +- 50 move draw rule +- No opening or closing books +- One or more minMax/negaMax full plies for artificial intelligence + +- Website: [www.pouet.net/prod.php?which=64962][2] +- Developer: Olivier "Baudsurfer/RSi" Poudade +- License: WTFPL v2 +- Version Number: .02 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/Micro-Max.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Micro-Max.png) + +Micro-Max is a 133-line chess source which is written in C + +The author has implemented a (hash) transposition table, the engine checks the legality of the input moves, and full FIDE rules except for for under-promotions. + +Features include: + +- Recursive negamax search +- Quiescence search with recaptures +- Recapture extensions +- Iterative deepening +- Best-move-first 'sorting' +- Hash table storing score and best move +- Full FIDE rules (except under promotion) and move-legality checking + +There is also a stripped-down 1433-character version, but allowing you to play under-promotions for full FIDE-rule compliance. + +- Website: [home.hccnet.nl/h.g.muller/max-src2.html][3] +- Developer: Harm Geert Muller +- License: The MIT License +- Version Number: 3.2 + +-------------------------------------------------------------------------------- + +via: http://www.linuxlinks.com/article/20150222033906262/ChessBytes.html + +作者:Frazer Kline +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://nanochess.org/chess6.html +[2]:http://www.pouet.net/prod.php?which=64962 +[3]:http://home.hccnet.nl/h.g.muller/max-src2.html \ No newline at end of file diff --git a/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md b/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md new file mode 100644 index 0000000000..207abb0530 --- /dev/null +++ b/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md @@ -0,0 +1,444 @@ +Bringing a Bunch of Best Known Linux Network Tools +================================================================================ +It is very useful to use command line tools to monitor the network on your system and there are a tons of them out there available for the linux user such as nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed and speedometer. + +Since there are many linux gurus and developers out there it is obvious that other network monitoring tools exist but I am not going to cover all of them in this tutorial. + +Each one of the above tools has its own specifics but at the end all they do is monitor network traffic and there is not really only one way to do the job. For example nethogs can be used to show bandwidth per process in case you want to know the application which is consuming your entire network resources, iftop can be used to show bandwidth per socket connection and tools like nload help to get information about the overall bandwidth. + +### 1) nethogs ### + +nethogs is a free tool that is very handy when it comes to find out which PID is causing the trouble with your network traffic as it groups bandwidth by process instead of breaking the traffic down per protocol or per subnet, like most tools do. It is feature rich, supports both IPv4 and IPv6 and in my opinion is the best utility when you want to identify programs that are consuming all your bandwidth on your linux machine. + +A linux user can use **nethogs** to show TCP download and upload-speed per process, monitor a specific device by using the command **nethogs eth0** where eth0 is the name of the device you want to get information from and also get information on the speed at which the data is currently being transferred. + +To me nethogs is very easy to use, maybe because I like it so much that I use it all the time to monitor network bandwidth on my Ubuntu 12.04 LTS machine. + +For example to sniff in promiscious the option -p is used like shown in the following command. + + nethogs -p wlan0 + +If you like to learn more about nethogs and explore it in a very deep way than don't hesitate to read our full tutorial on this network bandwidth monitoring tool. + +### 2) nload ### + +nload is a console application which can be used to monitor network traffic and bandwidth usage in real time and it also visualizes the traffic by providing two easy to understand graphs. This cool network monitoring tool can also be used to switch between devices while monitoring and this can be done by pressing the left and right arrow keys. + +![network monitoring tools in linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) + +As you can see from the above screenshot graphs provided by the nload tool are very easy to understand, provide useful information and also display additional info like total amount of transferred data and min/max network usage. + +And what is even cooler is the fact that you can run the tool nload with the help of the following command which seems to be very short and easy to remember. + + nload + +I am very sure that our detailed tutorial on how to use nload will help new linux users and even experienced ones that are looking for more information on it. + +### 3) slurm ### + +slurm is another network load monitoring tool for linux which shows results in a nice ascii grap and it also supports many keys for interaction such as c to switch to classic mode, s to switch to split graph mode, **r** to redraw the screen, **L** to enable TX/RX led, **m** to switch between classic split and large view, and **q** to quit slurm. + +![linux network load monitoring tools](http://blog.linoxide.com/wp-content/uploads/2013/12/slurm2.png) + +There are also some other keys available in the network load monitoring tool slurm and you can easily study them in the manual page by using the following command. + + man slurm + +slurm is available in the official repos of Ubuntu and Debian so users of these distros can easy download it by using the apt-get install command like shown below. + + sudo apt-get install slurm + +We have covered slurm usage on a tutorial so please visit it and do not forget to share the knowledge with other linux friends. + +### 4) iftop ### + +iftop is a very useful tool when you want to display bandwidth usage on an interface by host. According to the manual page **iftop** listens to network traffic on a named interface, or on the first +interface it can find which looks like an external interface if none is specified, and displays a table of current bandwidth usage by pairs of hosts. + +Ubuntu and Debian users can easily install iftop on their machines by using the following command on a terminal. + + sudo apt-get install iftop + +Use the following command to install iftop on your machine using yum + + yum -y install iftop + +### 5) collectl ### + +collectl can be used to collect data that describes the current system status and it supports the following modes: + +- Record Mode +- Playback Mode + +**Record Mode** allows to take data from a live system and either display it on a terminal or writte to one or more files or a socket. + +**Playback Mode** + +According to the manual pages in this mode data is read from one or more data files that were generated in Record Mode. + +Ubuntu and Debian users can use their default package manager to install collectl on their machines. The following command will do the job for them. + + sudo apt-get install collectl + +Use the following command because these distros have collectl in their official repos too. + + yum install collectl + +### 6) Netstat ### + +Netstat is a command line tool for **monitoring incoming** and **outgoing network packets statistics** as well as interface statistics. It displays network connections for the Transmission Control Protocol (both incoming and outgoing),routing tables, and a number of network interface (network interface controller or software-defined network interface) and network protocol statistics. + +Ubuntu and Debian users can use the default package manager to install netstat on their box. Netstat software includes inside the package net-tools. And can be installed by running the below commands in a shell or terminal: + + sudo apt-get install net-tools + +CentOS, Fedora, RHEL users can use the default package manager to install netstat on their box. Netstat software includes inside the package net-tools. And can be installed by running the below commands in a shell or terminal: + + yum install net-tools + +Simply, run the following to monitor the network packet statistic with Netstat: + + netstat + +![Netstat](http://blog.linoxide.com/wp-content/uploads/2015/02/netstat.png) + +For more information or manual about netstat, we can simply type man netstat in a shell or terminal: + + man netstat + +![man netstat](http://blog.linoxide.com/wp-content/uploads/2015/02/man-netstat.png) + +### 7) Netload ### + +The netload command just displays a small report on the current traffic load, and the total number of bytes transferred since the program start. No more features are there. Its part of the netdiag. + +We can install Netload using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][1] . + + # yum install netdiag + +Netload is available in the default repository as a part of netdiag so, we can easily install **netdiag** using **apt** manager using the command below. + + $ sudo install netdiag + +To run netload, we must make sure to choose a working network interface name like eth0, eh1, wlan0, mon0, etc. And run the following command accordingly in a shell or a terminal. + + $ netload wlan2 + +Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. + +### 8) Nagios ### + +Nagios is a leading open source powerful monitoring system that enables network/system administrators to identify and resolve server related problems before they affect major business processes. With the Nagios system, administrators can able to monitor remote Linux, Windows, Switches, Routers and Printers on a single window. It shows critical warnings and indicates if something went wrong in your network/server which indirectly helps you to begin remediation processes before they occur. + +Nagios has a web interface in which there is a graphical monitor of activities. One can login to the web interface by browsing to the url http://localhost/nagios/ or http://localhost/nagios3/ . Please replace localhost with your IP-address if on remote machine. Then enter the username and pass then, we'll get to see the information like shown below. + +![Nagios3 on Chromium](http://blog.linoxide.com/wp-content/uploads/2015/02/nagios3-ubuntu.png) + +### 9) EtherApe ### + +EtherApe is a graphical network monitor for Unix modeled after etherman. Featuring link layer, IP and TCP modes and support interfaces Ethernet, FDDI, Token Ring, ISDN, PPP, SLIP and WLAN devices, plus several encapsulation formats. Hosts and links change in size with traffic and color coded protocols display. It can filter traffic to be shown, and can read packets from a file as well as live from the network. + +It is easy to install etherape in CentOS, Fedora, RHEL distributions of Linux cause they are available default on their official repository. We can use yum manager to install it with the command shown below: + + yum install etherape + +We can install EtherApe on Ubuntu, Debian and their derivatives using **apt** manager with the below command. + + sudo apt-get install etherape + +After EtherApe is installed on the system, we'll need to run etherape in root permission as: + + sudo etherape + +Then, the **GUI** of **etherape** will be executed. Then, up in the menu we can select the **Mode** (IP, Link Layer, TCP) and **Interface** under **Capture**. After everything are set, we'll need to click **Start** button. Then, we'll gonna see something like this. + +![EtherApe](http://blog.linoxide.com/wp-content/uploads/2015/02/etherape.png) + +### 10) tcpflow ### + +tcpflow is a command line utility that captures data transmitted as part of TCP connections (flows), and stores the data in a way that is convenient for protocol analysis or debugging. It reconstructs the actual data streams and stores each flow in a separate file for later analysis. It understands TCP sequence numbers and will correctly reconstruct data streams regardless of retransmissions or out-of-order delivery . + +Installing tcpflow in Ubuntu, Debian system is easy via **apt** manager as it is available by default in the official repository. + + $ sudo apt-get install tcpflow + +We can install tcpflow in Fedora, CentOS, RHEL and their derivatives from repository using **yum** manager as shown below. + + # yum install tcpflow + +If it is not available in the repository or can't be installed via yum manager, we need to install manually from **http://pkgs.repoforge.org/tcpflow/** as shown below. + +If you are running 64 bit PC: + + # yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.x86_64.rpm + +If you are running 32 bit PC: + + # yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.i686.rpm + +We can use tcpflow to capture all/some tcp traffic and put it in an easy to read file. The below command does what we want but we'll need to run that command in an empty directory as it creates files of the format x.x.x.x.y-a.a.a.a.z and after done, just press Control-C that command to stop it. + + $ sudo tcpflow -i eth0 port 8000 + +Note: Please replace eth0 with the interface of the card you are trying to capture. + +### 11) IPTraf ### + +[IPTraf][2] is a console-based network statistics utility for Linux. It gathers a variety of figures such as TCP connection packet and byte counts, interface statistics and activity indicators, TCP/UDP traffic breakdowns, and LAN station packet and byte counts. + +IPTraf is available in the default repository so, we can easily install IPTraf using **apt** manager using the command below. + + $ sudo apt-get install iptraf + +IPTraf is available in the default repository so, we can easily install IPTraf using yum manager using the command below. + + # yum install iptraf + +We need to run TPTraf in administration permission with a valid network interface name. Here, we have wlan2 so, we'll be using wlan2 as interface name. + + $ sudo iptraf + +![IPTraf](http://blog.linoxide.com/wp-content/uploads/2015/02/iptraf.png) + +To start the general interface statistics, enter: + + # iptraf -g + +To see the detailed statistics facility on an interface called eth0 + + # iptraf -d wlan2 + +To see the TCP and UDP monitor on an interface called eth0 + + # iptraf -z wlan2 + +To displays the packet size counts on an interface called eth0 + + # iptraf -z wlan2 + +Note: Please replace wlan2 with your interface name. You can check your interface by running command ip link show . + +### 12) Speedometer ### + +Speedometer is a small and simple tool that just draws out good looking graphs of incoming and outgoing traffic through a given interface. + +Speedometer is available in the default repository so, we can easily install Speedometer using yum manager using the command below. + + # yum install speedometer + +Speedometer is available in the default repository so, we can easily install Speedometer using apt manager using the command below. + + $ sudo apt-get install speedometer + +Speedometer can simply be run by executing the following command in a shell or a terminal. + + $ speedometer -r wlan2 -t wlan2 + +![Speedometer](http://blog.linoxide.com/wp-content/uploads/2015/02/Speedometer.png) + +Note: Please replace wlan2 with the network interface name you would like to use. + +### 13) Netwatch ### + +Netwatch is part of the netdiag collection of tools, and it too displays the connections between local host and other remote hosts, and the speed at which data is transferring on each connection. + +We can install Netwatch using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][3] . + + # yum install netwatch + +Netwatch is available in the default repository as a part of netdiag so, we can easily install **netdiag** using **apt** manager using the command below. + + $ sudo install netdiag + +To run netwatch, we'll need to execute the following command in a terminal or shell. + + $ sudo netwatch -e wlan2 -nt + +![Netwatch](http://blog.linoxide.com/wp-content/uploads/2015/02/netwatch.png) + +Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. + +### 14) Trafshow ### + +Trafshow reports the current active connections like netwatch and pktstat, trafshow, their protocol and the data transfer speed on each connection. It can filter out connections using pcap type filters. + +We can install Netwatch using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][4] . + +# yum install trafshow + +Trafshow is available in the default repository so, we can easily install it using **apt** manager using the command below. + + $ sudo install trafshow + +To monitor using trafshow, we'll need to run the following command in a shell or terminal. + + $ sudo trafshow -i wlan2 + +![Trafshow](http://blog.linoxide.com/wp-content/uploads/2015/02/trafshow-all.png) + +To monitor specifically tcp connections add tcp as shown below. + + $ sudo trafshow -i wlan2 tcp + +![Trafshow tcp](http://blog.linoxide.com/wp-content/uploads/2015/02/trafshow-tcp.png) + +Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. + +### 15) Vnstat ### + +Vnstat is bit different from most of the other tools. It actually runs a background service/daemon and keeps recording the size of data transfer all the time. Next it can be used to generate a report of the history of network usage. + +We'll need to turn on EPEL Repository then run **yum** manager to install vnstat. + + # yum install vnstat + +Vnstat is available in the default repository. So, we can run **apt** manager to install it using the following command. + + $ sudo apt-get install vnstat + +Running vnstat without any options would simply show the total amount of data transfer that took place since the date the daemon is running. + + $ vnstat + +![vnstat](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat.png) + +To monitor the bandwidth usage in realtime, use the '-l' option (live mode). It would then show the total bandwidth used by incoming and outgoing data, but in a very precise manner without any internal details about host connections or processes. + + $ vnstat -l + +![Vnstat live mode](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat-live.png) + +After done, press Ctrl-C to stop which will result the following type of output + +![Vnstat Live Result](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat-live-result.png) + +### 16) tcptrack ### + +[tcptrack][5] displays the status of TCP connections that it sees on a given network interface. tcptrack monitors their state and displays information such as state, source/destination addresses and bandwidth usage in a sorted, updated list very much like the **top** command. + +As tcptrack is in the repository , we can simply install tcptrack in Debian, Ubuntu from their repository using apt manager. To do so, we'll need to execute the following command in a shell or terminal: + + $ sudo apt-get install tcptrack + +We can install it using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][6] . To do so, we'll need to run the following commands. + + # wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm + + # rpm -Uvh rpmforge-release*rpm + + # yum install tcptrack + +Note: Here, we have downloaded current latest version of rpmforge-release ie 0.5.3-1 . You can always get the latest version from rpmforge repository and do replace with that you downloaded in the above command. + +**tcptrack** needs to be run in root permission or superuser. We'll need to execute tcptrack with the network interface name we wanna monitor the TCP connections of. Here, we've wlan2 so will be using that as: + + sudo tcptrack -i wlan2 + +![tcptrack](http://blog.linoxide.com/wp-content/uploads/2015/02/tcptrack.png) + +If you wanna monitor of specific ports then: + + # tcptrack -i wlan2 port 80 + +![tcptrack port 80](http://blog.linoxide.com/wp-content/uploads/2015/02/tcptrack-port-80.png) + +Please replace 80 with the port number you wanna monitor .Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. + +### 17) CBM ### + +The CBM or Color Bandwidth Meter displays current traffic of all network device. This program is so simple that is should be self-explanatory. Source code and newer versions of CBM are available at [http://www.isotton.com/utils/cbm/][7] . + +As CBM is in the repository , we can simply install CBM in Debian, Ubuntu from their repository using **apt** manager. To do so, we'll need to execute the following command in a shell or terminal: + + $ sudo apt-get install cbm + +We simply need to run cbm in a shell or terminal as shown below: + + $ cbm + +![Color Bandwidth Meter](http://blog.linoxide.com/wp-content/uploads/2015/02/cbm.png) + +### 18) bmon ### + +[Bmon][8] or Bandwidth Monitoring is a tool that intended for debugging and monitor bandwidth in real-time access. This tool is capable to retrieving statistics from various input modules. It provides various output methods including a curses based interface,lightweight HTML output but also formatable ASCII output. + +bmon is available in the repository, so we can install it in Debian, Ubuntu from their repository using apt manager. To do so, we'll need to run the following command in a shell or terminal. + + $ sudo apt-get install bmon + +We can run bmon and monitor our bandwidth status using the command below. + + $ bmon + +![bmon](http://blog.linoxide.com/wp-content/uploads/2015/02/bmon.png) + +### 19) tcpdump ### + +[TCPDump][9] is a tool for network monitoring and data acquisition. It can save lots of time and can be used for debugging network or server related problems. It prints out a description of the contents of packets on a network interface that match the boolean expression. + +tcpdump is available in the default repository of Debian, Ubuntu so, we can simply use apt manager to install it under sudo privilege . To do so, we'll need to run the following command in a shell or terminal. + + $ sudo apt -get install tcpdump + +tcpdump is also available in the repository of Fedora, CentOS, RHEL so, we can install it via yum manager as: + + # yum install tcpdump + +tcpdump needs to be run in root permission or superuser. We'll need to execute tcpdump with the network interface name we wanna monitor the TCP connections of. Here, we've wlan2 so will be using it as: + + $ sudo tcpdump -i wlan2 + +![tcpdump](http://blog.linoxide.com/wp-content/uploads/2015/02/tcpdump.png) + +If you want to monitor to a specific port only, then can run the command as follows. Here is the example for port 80 (webserver). + + $ sudo tcpdump -i wlan2 'port 80' + +![tcpdump port](http://blog.linoxide.com/wp-content/uploads/2015/02/tcpdump-port.png) + +### 20) ntopng ### + +[ntopng][20] is the next generation version of the original ntop. It is a network probe that shows network usage in a way similar to what top does for processes. ntopng is based on libpcap and it has been written in a portable way in order to virtually run on every Unix platform, MacOSX and on Win32 as well. + +To install ntopng in Debian, Ubuntu system, we'll first need to install the required **dependencies packages to compile ntopng**. You can install them all by running the below command in a shell or a terminal. + + $ sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev build-essential checkinstall + +Now, we'll need to manually compile ntopng for our system as: + + $ sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download + $ sudo tar zxfv ntopng-1.1_6932.tgz + $ sudo cd ntopng-1.1_6932 + $ sudo ./configure + $ sudo make + $ sudo make install + +Now, you should have your ntopng installed in your Debian or Ubuntu system. + +We have already covered tutorial on ntopng usages. It is available in both command line and web interface. We can go ahead to get knowledge on it. + +### Conclusion ### + +In this first part we covered some network load monitoring tools for linux that are very helpful to a sysadmin and even a novice user. Each one of the tools covered in this article has its own specifics, different options but at the end they all help you to monitor your network traffic. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/monitoring-2/network-monitoring-tools-linux/ + +作者:[Bobbin Zachariah][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/bobbin/ +[1]:http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html +[2]:http://iptraf.seul.org/ +[3]:http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html +[4]:http://pkgs.org/centos-6/epel-x86_64/trafshow-5.2.3-6.el6.x86_64.rpm.html +[5]:http://linux.die.net/man/1/tcptrack +[6]:http://pkgs.org/centos-6/repoforge-x86_64/tcptrack-1.4.0-1.el6.rf.x86_64.rpm.html +[7]:http://www.isotton.com/utils/cbm/ +[8]:https://github.com/tgraf/bmon/ +[9]:http://www.tcpdump.org/ +[10]:http://www.ntop.org/ \ No newline at end of file diff --git a/sources/tech/20150227 Enjoy Android Apps on Ubuntu using ARChon Runtime.md b/sources/tech/20150227 Enjoy Android Apps on Ubuntu using ARChon Runtime.md new file mode 100644 index 0000000000..f85b2cf725 --- /dev/null +++ b/sources/tech/20150227 Enjoy Android Apps on Ubuntu using ARChon Runtime.md @@ -0,0 +1,114 @@ +Enjoy Android Apps on Ubuntu using ARChon Runtime +================================================================================ +Before, we gave try to many android app emulating tools like Genymotion, Virtualbox, Android SDK, etc to try to run android apps on it. But, with this new Chrome Android Runtime, we are able to run Android Apps on our Chrome Browser. So, here are the steps we'll need to follow to install Android Apps on Ubuntu using ARChon Runtime. + +Google had [announced the first set of Android apps is ready to run natively on Chrome OS][1], a feature made possible using a new ‘**Android Runtime**’ extension. Now, a developer named Vlad Filippov has figured out a way to bring Android Apps to Chrome on the desktop. His chromeos-apk script and ARChon Android Runtime extension work hand-in-hand to bring Android apps to Chrome browser on the Windows, Mac and Linux desktop. + +Performance of this apps through the runtime is not pretty good. Similarly, as its both an unofficial repackaging of the official runtime and running outside of Google's Chrome OS, system integration like webcam, speakers, etc. may be patchy or non-existent. + +### Installing Chrome ### + +First of all, we'll need Chrome installed in our machine, Chrome version 37 or higher is required. We can download them from the [download page of Chrome Browser][2]. + +If you wanna install a Dev Channel version you'll need to follow below procedure. + +We'll need to add repository source list for Google Chrome which can be done my using the following command. + + $ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + $ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' + +![Adding google source list](http://blog.linoxide.com/wp-content/uploads/2015/02/adding-google-source-list.png) + +After adding the repository source list, we'll need to update the local repository index by the command below. + + $ sudo apt-get update + +Now, we'll gonna install google chrome unstable which is dev version. + + $ sudo apt-get install google-chrome-unstable + +![Installing Google chrome unstable](http://blog.linoxide.com/wp-content/uploads/2015/02/installing-google-chrome-unstable.png) + +### Installing Archon Runtime ### + +Next we'll need to download the custom-made ergo officially not endorsed by Google or Chromium Android Runtime created by Vlad Filippov. This differs from the official version in a number of ways, the chief being it can be used on desktop versions of the browser. Here below is the runtime we need to download, please select anyone of the following according to your bit of Ubuntu installed. + +For **32-bit** Ubuntu Distributions: + +- [Download Archron for 32-bit Ubuntu][3] + +For **64-bit** Ubuntu Distributions: + +- [Download Archron for 64-bit Ubuntu][4] + +Once the runtime has fully downloaded you will need to extract the contents from the .zip files and move the resulting directory to Home. Here is the gist commands for this steps to download and extract the contents. + + $ wget https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_32.zip + +![Downloading ARChon](http://blog.linoxide.com/wp-content/uploads/2015/02/download-archon.png) + + $ unzip ARChon-v1.1-x86_32.zip ~/ + +Now to install the runtime, we'll gonna Open our latest Google Chrome and goto the url **chrome://extensions/** then, we'll need to check ‘**Enable developer mode**’. Finally, we'll gonna click on the ‘**load unpacked extension**’ button and select the folder which was placed into **~/Home**. + +### Installing ChromeOS-APK ### + +To convert APKs manually is something you really don’t need to do any more if you use one of the apps mentioned above — you will need to install the ‘[chromeos-apk][5]’ command line JavaScript utility. This is available to install through the Node Packaged Modules (npm) manager. To install nmp and chromeos-apk, we'll need to run the following command in a shell or terminal. + + $ sudo apt-get install npm nodejs nodejs-legacy + +**If you are running 64 bit OS**, you should grab the following library, to do so run the below commands in a shell or terminal. + + $ sudo apt-get install lib32stdc++6 + +Now run the command to install the the latest chromeos-apk is: + + $ npm install -g chromeos-apk@latest + +![chromeos apk installation](http://blog.linoxide.com/wp-content/uploads/2015/02/chomeos-apk-installation.png) + +Depending on your system configuration you may need to need to run this latter command as sudo. + +Now, we'll gonna for Google to find an APK of an app to give it a try, bearing in mind **not all Android apps will work**, and those that do may be unstable or lack features. Most of the messenger out of the box are not working. + +### Converting APK ### + +Place your **Android APK in ~/Home**, then return to **Terminal** to convert it using the following command: + + $ chromeos-apk myapp.apk --archon + +If you want the app in fullscreen mode then run the following instead: + + $ chromeos-apk myapp.apk --archon --tablet + +Note: Please replace myapp.apk to the Android APK app filename you want to convert. + +For our ease, we can also use [Twerk][6] for the conversion process if we want to skip this step. + +### Running Android Apk ### + +Finally, we'll need to open our chrome browser and then goto chrome://extensions page and enable developer mode then tap the ‘load unpacked extension’ button and select the folder the script above created. + +Now, we can Open the Chrome App Launcher to run it. + +### Conclusion ### + +Hurray! We have successfully installed Android Apk App in our favorite desktop browser ie Chrome Browser. This article is all about the popular Chrome Android Runtime called Archon created by Vlad Filippov. This runtime allows us to run converted Apk files in our Chrome browser. It has not yet supported messaging apps like Whatsapp, etc. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy Archon :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/android-apps-ubuntu-archon-runtime/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://chrome.blogspot.com/2014/09/first-set-of-android-apps-coming-to.html +[2]:https://www.google.com/chrome/browser +[3]:https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_32.zip +[4]:https://github.com/vladikoff/chromeos-apk/releases/download/v3.0.0/ARChon-v1.1-x86_64.zip +[5]:https://github.com/vladikoff/chromeos-apk/blob/master/README.md +[6]:https://chrome.google.com/webstore/detail/twerk/jhdnjmjhmfihbfjdgmnappnoaehnhiaf \ No newline at end of file diff --git a/sources/tech/20150227 Fix Minimal BASH like line editing is supported GRUB Error In Linux.md b/sources/tech/20150227 Fix Minimal BASH like line editing is supported GRUB Error In Linux.md new file mode 100644 index 0000000000..88b742d4f9 --- /dev/null +++ b/sources/tech/20150227 Fix Minimal BASH like line editing is supported GRUB Error In Linux.md @@ -0,0 +1,86 @@ +Fix Minimal BASH like line editing is supported GRUB Error In Linux +================================================================================ +The other day when I [installed Elementary OS in dual boot with Windows][1], I encountered a Grub error at the reboot time. I was presented with command line with error message: + +**Minimal BASH like line editing is supported. For the first word, TAB lists possible command completions. anywhere else TAB lists possible device or file completions.** + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Boot_Repair_Ubuntu_Linux_1.jpeg) + +Indeed this is not an error specific to Elementary OS. It is a common [Grub][2] error that could occur with any Linux OS be it Ubuntu, Fedora, Linux Mint etc. + +In this post we shall see **how to fix this “minimal BASH like line editing is supported” Grub error in Ubuntu** based Linux systems. + +> You can read this tutorial to fix similar and more frequent issue, [error: no such partition grub rescue in Linux][3]. + +### Prerequisites ### + +To fix this issue, you would need the followings: + +- A live USB or disk of the same OS and same version +- A working internet connection in the live session + +Once you make sure that you have the prerequisites, let’s see how to fix the black screen of death for Linux (if I can call it that ;)). + +### How to fix this “minimal BASH like line editing is supported” Grub error in Ubuntu based Linux ### + +I know that you might point out that this Grub error is not exclusive to Ubuntu or Ubuntu based Linux distributions, then why am I putting emphasis on the world Ubuntu? The reason is, here we will take an easy way out and use a tool called **Boot Repair** to fix our problem. I am not sure if this tool is available for other distributions like Fedora. Without wasting anymore time, let’s see how to solve minimal BASH like line editing is supported Grub error. + +### Step 1: Boot in lives session ### + +Plug in the live USB and boot in to the live session. + +### Step 2: Install Boot Repair ### + +Once you are in the lives session, open the terminal and use the following commands to install Boot Repair: + + sudo add-apt-repository ppa:yannubuntu/boot-repair + sudo apt-get update + sudo apt-get install boot-repair + +Note: Follow this tutorial to [fix failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs error][4], if you encounter it while running the above command. + +### Step 3: Repair boot with Boot Repair ### + +Once you installed Boot Repair, run it from the command line using the following command: + + boot-repair & + +Actually things are pretty straight forward from here. You just need to follow the instructions provided by Boot Repair tool. First, click on **Recommended repair** option in the Boot Repair. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Boot_Repair_Ubuntu.png) + +It will take couple of minutes for Boot Repair to analyze the problem with boot and Grub. Afterwards, it will provide you some commands to use in the command line. Copy the commands one by one in terminal. For me it showed me a screen like this: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Boot_Repair_Ubuntu_1.png) + +It will do some processes after you enter these commands: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Boot_Repair_Ubuntu_2.png) + +Once the process finishes, it will provide you a URL which consists of the logs of the boot repair. If your boot issue is not fixed even now, you can go to the forum or mail to the dev team and provide them the URL as a reference. Cool, isn’t it? + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Boot_Repair_Final_Ubuntu.png) + +After the boot repair finishes successfully, shutdown your computer, remove the USB and boot again. For me it booted successfully but added two additional lines in the Grub screen. Something which was not of importance to me as I was happy to see the system booting normally again. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Boot_Repair_Ubuntu_Linux_2.jpeg) + +### Did it work for you? ### + +So this is how I fixed **minimal BASH like line editing is supported Grub error in Elementary OS Freya**. How about you? Did it work for you? Feel free to ask a question or drop a suggestion in the comment box below. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/fix-minimal-bash-line-editing-supported-grub-error-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/guide-install-elementary-os-luna/ +[2]:http://www.gnu.org/software/grub/ +[3]:http://itsfoss.com/solve-error-partition-grub-rescue-ubuntu-linux/ +[4]:http://itsfoss.com/fix-failed-fetch-cdrom-aptget-update-add-cdroms/ \ No newline at end of file diff --git a/sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md b/sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md new file mode 100644 index 0000000000..2815330506 --- /dev/null +++ b/sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md @@ -0,0 +1,72 @@ +How To Fix: Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/12/elementary_OS_Freya.jpg) + +These days I am experimenting with Elementary OS Freya and during this, I encountered a very common updater error: **Failed to fetch cdrom Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs**. The complete error looked like this after running the apt-get update command: + +> W: Failed to fetch cdrom://elementary OS 0.3 _Freya_ – Daily amd64 (20150208)/dists/trusty/main/binary-amd64/Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs +> +> W: Failed to fetch cdrom://elementary OS 0.3 _Freya_ – Daily amd64 (20150208)/dists/trusty/restricted/binary-amd64/Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs +> +> E: Some index files failed to download. They have been ignored, or old ones used instead. + +In this post, we shall see how to fix this error. + +### Fix Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs error ### + +The reason for this error is that cdrom has been included as one of the the sources here. And to fix this issue, we need to remove this from the list of software sources. + +In Ubuntu, look for Software & Updates: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Software_Update_Ubuntu.jpeg) + +In the first tab Ubuntu Software, look for the cdrom, if it’s checked, uncheck it. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/CDROM_Error_Update_Software_Sources.jpeg) + +Close the Software Sources and run the update again. It should work fine now. + +### Further troubleshoot: ### + +The method described above should have fixed this **apt-get update cannot be used to add new CD-ROMs** error. But this was not the case for me because the option of cdrom was already grayed out as I was using live session. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/CDROM_Update_Error.png) + +Now to fix our error, we shall take the command line route. Open a terminal and use the following line to see what is included in sources list: + + cat /etc/apt/sources.list + +The output for me was as following: + + deb cdrom:[elementary OS 0.3 _Freya_ – Daily amd64 (20150208)]/ trusty main restricted + deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse + deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse + deb http://security.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse + deb-src http://security.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse + deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse + deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse + +Look at the first line in the above list. It includes cdrom. We need to comment out this line by adding # in front of it to make it look like this: + + #deb cdrom:[elementary OS 0.3 _Freya_ – Daily amd64 (20150208)]/ trusty main restricted + +To do that use the command below: + + sudo gedit /etc/apt/sources.list + +Once you have edited the sources.list, run the apt-get update once again. The error apt-get update cannot be used to add new CD-ROMs should have been fixed. If you are facing any other update issue, do look at this article which is a collection of most [common Ubuntu update error fixes][1]. + +I hope you found this tutorial helpful. If you have any questions or suggestions, feel free to drop a comment. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/fix-failed-fetch-cdrom-aptget-update-add-cdroms/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/fix-update-errors-ubuntu-1404/ \ No newline at end of file diff --git a/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md b/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md new file mode 100644 index 0000000000..417e333e31 --- /dev/null +++ b/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md @@ -0,0 +1,98 @@ +How to Install Lightweight Budgie ( v8) Desktop in Ubuntu 14.04 +================================================================================ +Budgie is the flagship desktop of the Evolve OS Linux Distribution, and is an Evolve OS project. Designed with the modern user in mind, it focuses on simplicity and elegance. A huge advantage for the Budgie desktop is that it is not a fork of another project, but rather one written from scratch with integration in mind. + +The [Budgie Desktop][1] tightly integrates with the GNOME stack, employing underlying technologies to offer an alternative desktop experience. In the spirit of open source, the project is compatible with and available for other Linux distributions. + +Also note that Budgie can now emulate the look and feel of the GNOME 2 desktop, optionally, via a setting in the panel preferences. + +### Features in the 0.8 release ### + +- IconTasklist: Add pinning support +- IconTasklist: Use .desktop files for quicklists +- IconTasklist: Use .desktop files for icon resolution +- IconTasklist: Support “attention” hint (blue blink) +- Panel: Support dark theme (used by default) +- Add Menubar applet +- Panel: Initial autohide support (manual, not automatic) +- Panel: Support shadow onall screen edges +- Panel: Dynamic support for gnome panel theming +- RunDialog: Complete visual refresh (bootiful) +- BudgieMenu: Add compact mode, use by default +- BudgieMenu: Sort items by usage +- BudgieMenu: Remove old power option +- Editor: Add all menu options to UI +- Support from GNOME 3.10 up to 3.16 (unreleased, git) +- wm: Kill workspace animation (resolve after v8) +- wm: Better animations for changing of wallpapers + +### Important information ### + +- Budgie [released version 0.8][2] so it is still in development and a beta. +- No nnative network management; can be fixed by using Ubuntu's applet. +- Budgie is intended for the Evolve OS so even with this PPA it might be buggy. +- GNOME themes work better than the native Ubuntu themes. +- Ubuntu’s overlay scrollbars are not working. +- If you want to read more visit the Evolve OS website. + +### Installation ### + +Now, we'll install our Lightweight Budgie Desktop in our Ubuntu 14.04 LTS "Trusty" distribution of Linux Operating System. First of all, we'll need to add ppa repository to our Ubuntu PC. To do so, we'll need to execute the below command in a shell or terminal. + + $ sudo add-apt-repository ppa:evolve-os/ppa + +![Add Budgie Desktop PPA Repo](http://blog.linoxide.com/wp-content/uploads/2015/01/budgie-desktop-ppa.png) + +Now, after we finish adding PPA to our Ubuntu Computer, we'll need to update the local repository index in it. It can be done by running the following command in the same terminal or shell after above is done. + + $ sudo apt-get update + +Then, finally, we'll install the one and only Budgie Desktop Environment in our Ubuntu machine running the latest version 14.04 LTS. + + $ sudo apt-get install budgie-desktop + +![Install Budgie Desktop](http://blog.linoxide.com/wp-content/uploads/2015/02/install-budgie-desktop.png) + +**Notes** + +It is in active development and features remain missing, including, but not limited to: no network management support, no volume control applet (keyboard keys will work fine), no notification system and no way to ‘pin’ apps to the task bar. + +As a workaround you can disable overlay scrollbars, set a different default theme and quit a session from the terminal using the following command: + + $ gnome-session-quit + +![Quitting Gnome Session](http://blog.linoxide.com/wp-content/uploads/2015/02/gnome-seesion-quit.png) + +### Log into the Budgie Session ### + +After installation is completed, we’ll be able to select ‘Budgie’ from the session selector of the Unity Greeter. For that, we'll need to logout the current user and get back to the login screen. Then, we'll be able to switch to Budgie Desktop Environment. + +![Select Desktop Session](http://blog.linoxide.com/wp-content/uploads/2015/02/session-select.png) + +### Budgie Desktop Environment ### + +![Budgie Desktop Environment](http://blog.linoxide.com/wp-content/uploads/2015/02/budgie-desktop.png) + +### Logging Out ### + +You can simply execute **budgie-session --logout** in a shell or terminal to logout it. + + $ budgie-sessioon --logout + +### Conclusion ### + +Hurray! We have successfully installed our Lightweight Budgie Desktop Environment in our Ubuntu 14.04 LTS "Trusty" box. As we know, Budgie Desktop is still underdevelopment which makes it a lot of stuffs missing. Though it’s based on Gnome’s GTK3, it’s not a fork. The desktop is written completely from scratch, and the design is elegant and well thought out. If you have any questions, comments, feedback please do write on the comment box below and let us know what stuffs needs to be added or improved. Thank You! Enjoy Budgie Desktop 0.8 :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/install-lightweight-budgie-v8-desktop-ubuntu/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://evolve-os.com/budgie/ +[2]:https://evolve-os.com/2014/11/16/courageous-budgie-v8-released/ \ No newline at end of file From 26f6231a537a10f3d59245ee6f0dead374ed2a21 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 27 Feb 2015 22:42:15 +0800 Subject: [PATCH 403/725] PUB:20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya @geekpi --- ...le Chrome Icons From Dock In Elementary OS Freya.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename {translated/tech => published}/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md (75%) diff --git a/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/published/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md similarity index 75% rename from translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md rename to published/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md index 19bb495231..fb593dbf68 100644 --- a/translated/tech/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md +++ b/published/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md @@ -1,12 +1,12 @@ -如何避免在ELemetary OS Freya中出现两个Google Chrome 图标[快速提示] +如何避免在ELemetary OS Freya中出现两个Google Chrome 图标 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Two_Google_Chrome_ElementaryOS_Freya.jpeg) 这篇文章会教你**如何避免在ELemetary OS Freya中出现两个Google Chrome 图标**。 -Chrome才是我在所有系统中使用的主浏览器。而[Modori][2]默认在dock中,你不得不每次在使用Chrome时在Slingshot中搜索Google Chrome。为了节省时间,我假设你选择的是“保持在dock”中。 +Chrome才是我在所有系统中使用的主浏览器。[Modori][2] 是默认放在dock中的浏览器,所以你每次使用Chrome时都需要在Slingshot中搜索Google Chrome,而为了节省时间,我通常会将它“保持在dock”中。 -这里的问题是当你点击dock中的Chrome图标时,它会创建另外一个Google Chrome的实例。这就在dock中留下两个Chrome图标,这个或许可以被忽略但是很显然这是设计上的一个干扰。如果你有相同的感受,让我们看下如何移除这第二个Google Chrome图标。 +这里的问题是当你点击dock中的Chrome图标时,它会创建另外一个Google Chrome的实例。这就在dock中留下两个Chrome图标,这或许你可以不在意,但是很显然处女座不能忍!如果你有相同的感受,让我们看下如何移除这第二个Google Chrome图标。 ### 在Elementary OS Freya的dock中删除第二个Google Chrome 图标 ### @@ -37,7 +37,7 @@ Chrome才是我在所有系统中使用的主浏览器。而[Modori][2]默认在 #### 第四步: #### -进入Slingshot并且再次打开Google Chrome。再次选择“keep in dock”。关闭并重启来验证它是否在dock中打开了另外一个新的Chrome实例。这里不需要重启系统。 +进入Slingshot并且再次打开Google Chrome。再次选择“keep in dock”。关闭并重新打开它来验证它是否在dock中打开了另外一个新的Chrome图标。这里不需要重启系统。 我希望这篇提示能够帮助你删除Elementary OS Freya中多出的Chrome图标。有任何问题或建议让我在评论区中知道。 @@ -47,7 +47,7 @@ via: http://itsfoss.com/rid-google-chrome-icons-dock-elementary-os-freya/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 75c422423dd901c00755e34b44be6945bb203fd9 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 27 Feb 2015 22:47:58 +0800 Subject: [PATCH 404/725] PUB:20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl @mr-ping --- ...s with Answers--How to set a custom HTTP header in curl.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md (94%) diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md b/published/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md similarity index 94% rename from translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md rename to published/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md index 7c382558eb..145ef9168e 100644 --- a/translated/tech/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md +++ b/published/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md @@ -6,7 +6,7 @@ curl是一个强大的命令行工具,它可以通过网络将信息传递给 ![](https://farm8.staticflickr.com/7568/16225032086_fb8f1c508a_b.jpg) -在一些个例中,或许你想要在一个HTTP请求中覆盖掉默认的HTTP头或者添加一个新的自定义头部字段。例如,你或许想要重写“HOST”字段来测试一个[负载均衡][1],或者通过重写"User-Agent"字符串来欺骗特定浏览器以解决其访问限制的问题。 +在一些个例中,或许你想要在一个HTTP请求中覆盖掉默认的HTTP头或者添加一个新的自定义头部字段。例如,你或许想要重写“HOST”字段来测试一个[负载均衡][1],或者通过重写"User-Agent"字符串来假冒特定浏览器以解决一些访问限制的问题。 为了解决所有这些问题,curl提供了一个简单的方法来完全控制传出HTTP请求的HTTP头。你需要的这个参数是“-H” 或者 “--header”。 @@ -36,7 +36,7 @@ wget是另外一个类似于curl,可以用来获取URL的命令行工具。并 via: http://ask.xmodulo.com/custom-http-header-curl.html 译者:[Ping](http://mr-ping.com) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From e96b68530f2912197995cfd3c04b57e8faa17657 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 27 Feb 2015 22:57:02 +0800 Subject: [PATCH 405/725] PUB:20150119 Quick Tip--How To Restart Cinnamon After Crash @geekpi --- ...0119 Quick Tip--How To Restart Cinnamon After Crash.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20150119 Quick Tip--How To Restart Cinnamon After Crash.md (83%) diff --git a/translated/tech/20150119 Quick Tip--How To Restart Cinnamon After Crash.md b/published/20150119 Quick Tip--How To Restart Cinnamon After Crash.md similarity index 83% rename from translated/tech/20150119 Quick Tip--How To Restart Cinnamon After Crash.md rename to published/20150119 Quick Tip--How To Restart Cinnamon After Crash.md index eee9d41d0c..e5b6cbae5a 100644 --- a/translated/tech/20150119 Quick Tip--How To Restart Cinnamon After Crash.md +++ b/published/20150119 Quick Tip--How To Restart Cinnamon After Crash.md @@ -1,6 +1,6 @@ 如何在崩溃后重启Cinnamon ================================================================================ -Cinnamon是一个提供了高级创新特性和传统用户体验的Linux桌面环境。桌面布局和Gnome 2相似。底层的技术与Gnome Shell相似。它的重点是让用户有宾至如归的感觉并提供一个简单和舒适的桌面体验。 +Cinnamon是一个提供了高级创新特性和传统用户体验的Linux桌面环境。桌面布局和Gnome 2相似。底层的技术与Gnome Shell相似。它的重点是让用户以熟悉的方式得到简单和舒适的桌面体验。 本篇中我们会展示一个快速的方法来重启Cinnamon而不用在崩溃后登出或者重启。 @@ -18,15 +18,15 @@ Cinnamon应该会重新在面板和菜单中显示图标和文本了。 ![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/linux_mint_cinnamon_menu.png) -享受吧! +试试吧! -------------------------------------------------------------------------------- via: http://www.unixmen.com/quick-tip-restart-cinnamon-crash/ 作者:[Enock Seth Nyamador][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d9157955cf9831dd7962ee1c6ed90e942f501cb7 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Sat, 28 Feb 2015 11:43:36 +0800 Subject: [PATCH 406/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Step Guide To Installing Xubuntu Linux.md | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md b/translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md index 3fc83ba9ef..ed6c31e46e 100644 --- a/translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md +++ b/translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md @@ -5,17 +5,17 @@ ![Xubuntu](http://f.tqn.com/y/linux/1/S/J/J/1/fulldesktop.png) -这个教程会一步一步的教你如何安装Xubuntu Linux。 +这个教程会一步步教你如何安装Xubuntu Linux。 为什么你会想要安装Xubuntu呢?这里有三个原因: 1. 你有一台安装Windows XP的计算机,但是微软已经不再对Windows XP提供支持 -2. 你的[电脑运行很慢][1],并且你想要一个轻量级并且跟得上时代潮流的操作系统 -3. 你想要增加一些DIY经验 +2. 你的[电脑运行很慢][1],你想要一个轻量级并且跟得上时代潮流的操作系统 +3. 你想要自定义你的电脑使用体验 -首先,你需要[下载Xubuntu,并且创建一个启动优盘][2]。 +首先,你需要[下载Xubuntu,并且创建一个可启动的USB驱动器][2]。 -完成以后,用优盘启动到Xubuntu,然后点击安装Xubuntu图标。 +完成以后,用优盘启动到当前版本的Xubuntu,然后点击安装Xubuntu图标。 ### 选择你的安装语言 ### @@ -29,9 +29,9 @@ ![选择无线网络](http://f.tqn.com/y/linux/1/S/L/J/1/xubuntuinstall2.png) -第二步,需要你来选择你的网络链接。这个步骤不是必须的。 +第二步,需要你来选择你的网络链接。这个步骤不是必须的,你在这个阶段可能会选择不设置网络链接是有原因的。 -如果你[网络状况十分糟糕][3],直接跳过是一个明智的选择,因为安装程序会在安装过程中从网络上下载一些更新包。那么可想而知,你的安装过程就会花费很长的时间。 +如果你的[网络状况十分糟糕][3],不选无线网络是一个明智的选择,因为安装程序会在安装过程中从网络上下载一些更新包。那么可想而知,你的安装过程就会花费很长的时间。 当然,如果你的[网速很快][4],选择一个无线网,然后输入密码就行了。 @@ -51,17 +51,19 @@ 安装过程中,如果电池电量耗完的话,你才必须要链接到到电源。 +请注意,如果你连网了,这里有一个关闭安装过程中下载更新包的复选框。 + 这里还有一个复选框,提示你是否安装用于[播放MP3][5]或者[Flash视频][6]的第三方软件,当然,这些内容也可以在安装完成以后进行。 ### 选择安装类型 ### ![选择安装类型](http://f.tqn.com/y/linux/1/S/N/J/1/xubuntuinstall4.png) -接下来的步骤是选择安装类型。显示那些选项,取决于之前电脑上安装了什么系统。 +接下来的步骤是选择安装类型。显示哪些选项,取决于之前电脑上安装了什么系统。 -在我的示例中,我已经安装了[Ubuntu MATE][7],所以,我的选项是重装Ubuntu、删除并且重装、Xubuntu和Ubuntu双系统、以及其他。 +在我的示例中,我已经安装了[Ubuntu MATE][7],所以,我的选项是重装Ubuntu、删除并且重装、安装Xubuntu和Ubuntu双系统,或者其它。 -如果你的计算机上安装了Windows,那么你得到的选项就是,安装双系统、使用Xubuntu替换Windows以及其他。 +如果你的计算机上安装了Windows,那么你得到的选项就是,安装双系统,使用Xubuntu替换Windows或者其他。 这个教程只是用来说明如何在计算机上安装Xubuntu,而不是怎么安装双系统,那将是一个完全不同的教程。 @@ -73,11 +75,11 @@ ![清除磁盘并且安装Xubuntu](http://f.tqn.com/y/linux/1/S/O/J/1/xubuntuinstall5.png) -选择你要在那个磁盘上安装的Xubuntu。 +选择你要安装Xubuntu的磁盘。 点击“Install Now”。 -这时候会弹出一个警告窗口,会提示你,选择的磁盘驱动器会被完全清除,然后会显示一个新创建的分区列表。 +这时候会弹出一个警告窗口,会提示你选择的磁盘驱动器会被完全清除,然后会显示一个新创建的分区列表。 > 备注:这是你改变主意的最后一个机会,如果你点击继续,磁盘就会被完全清除,然后开始安装Xubuntu。 @@ -103,7 +105,7 @@ 如果你需要确认键盘布局是否正确,可以在“Type here to test your keyboard”输入字符。你需要特别注意fn键和一些符号,例如英镑和美元符号。 -如果在安装过程中没有设对也没关系,安装完成以后在Xubuntu系统设置中也可以进行调整。 +如果在安装过程中没有设置正确也没关系,安装完成以后在Xubuntu系统设置中也可以进行调整。 ### 新增用户 ### @@ -115,9 +117,9 @@ 为用户选择一个用户名并且[创建一个密码][8]。为了保证你的密码输入正确,你需要输入两遍。 -如果你想要系统自动登入,而不是在每次启动的时候输入密码,选择“Log in automatically”。尽管对于我来说,我肯定不会选择这个选项。 +如果你想要系统自动登入,而不是在每次启动的时候输入密码,选择“Log in automatically”。对于我来说,我肯定不会选择这个选项。 -更好的选项是“Require my password to log in”,并且如果你想要更高的安全等级,勾选“Encrypt my home fodler”选项。 +更好的选项是“Require my password to log in”,并且如果你想要更高的安全等级,勾选“Encrypt my home folder”选项。 点击“Continue”然后继续。 @@ -125,9 +127,9 @@ ![等待安装完成](http://f.tqn.com/y/linux/1/S/S/J/1/xubuntuinstall10.png) -这个步骤中,将会会拷贝文件到你的电脑,并且安装Xubuntu。 +这个步骤中,将会拷贝文件到你的电脑,并且安装Xubuntu。 -在这个过程中,你会看到一个简短的幻灯片。在这个时候你可以去[泡一杯咖啡][9]或者放松一下什么的。 +在这个过程中,你会看到一个简短的幻灯片。在这个时候你可以去[泡一杯咖啡][9]或者放松一下。 安装完成以后,会弹出提示告诉你是否重新启动,并且开始体验一下新安装的Xubuntu系统。 @@ -139,7 +141,7 @@ via : http://linux.about.com/od/howtos/ss/A-Step-By-Step-Guide-To-Installing-Xu 作者:[Gary Newell][a] 译者:[zhouj-sh](https://github.com/zhouj-sh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -152,4 +154,4 @@ via : http://linux.about.com/od/howtos/ss/A-Step-By-Step-Guide-To-Installing-Xu [6]:http://animation.about.com/od/2danimationtutorials/ss/2d_fla_lesson1.htm [7]:http://www.everydaylinuxuser.com/2014/11/ubuntu-mate-vs-lubuntu-on-old-netbook.html [8]:http://netsecurity.about.com/cs/generalsecurity/a/aa112103b.htm -[9]:http://coffeetea.about.com/od/preparationandrecipes/ \ No newline at end of file +[9]:http://coffeetea.about.com/od/preparationandrecipes/ From c6eb6a54567f51abd85099467f6f09165e9d47eb Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Sat, 28 Feb 2015 15:02:04 +0800 Subject: [PATCH 407/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150116 A Step By Step Guide To Installing Xubuntu Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150116 A Step By Step Guide To Installing Xubuntu Linux.md (100%) diff --git a/translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md b/published/20150116 A Step By Step Guide To Installing Xubuntu Linux.md similarity index 100% rename from translated/share/20150116 A Step By Step Guide To Installing Xubuntu Linux.md rename to published/20150116 A Step By Step Guide To Installing Xubuntu Linux.md From 0586b77be812fd40d261f22baf2842b04c97e52c Mon Sep 17 00:00:00 2001 From: johnhoow Date: Sat, 28 Feb 2015 16:24:05 +0800 Subject: [PATCH 408/725] johnhoow translating --- ...to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md b/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md index 417e333e31..60155b9f68 100644 --- a/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md +++ b/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md @@ -1,3 +1,4 @@ +johnhoow translating... How to Install Lightweight Budgie ( v8) Desktop in Ubuntu 14.04 ================================================================================ Budgie is the flagship desktop of the Evolve OS Linux Distribution, and is an Evolve OS project. Designed with the modern user in mind, it focuses on simplicity and elegance. A huge advantage for the Budgie desktop is that it is not a fork of another project, but rather one written from scratch with integration in mind. @@ -95,4 +96,4 @@ via: http://linoxide.com/ubuntu-how-to/install-lightweight-budgie-v8-desktop-ubu [a]:http://linoxide.com/author/arunp/ [1]:https://evolve-os.com/budgie/ -[2]:https://evolve-os.com/2014/11/16/courageous-budgie-v8-released/ \ No newline at end of file +[2]:https://evolve-os.com/2014/11/16/courageous-budgie-v8-released/ From da65b6b5583cf23f7c231e420fcbe70f9967ec17 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Sat, 28 Feb 2015 17:58:58 +0800 Subject: [PATCH 409/725] Transalting by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 475e75542d..8a6eaaff6d 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -18,13 +18,13 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm9.staticflickr.com/8573/16088461968_c6a6c9e49a_c.jpg) -牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、模板a space for note taking, creation from template, code outline, customizable shortcuts, and plugins management. Geany is still closer to an extensive text editor than an IDE here. However I keep it in the list for its lightness and its well designed interface. +牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、基于模板创作、代码大纲、自定义快捷键和插件管理。相比于现在的IDE,Geany仍然是一款作用广泛的文本编辑器,然而,因为它的功能亮点和它的界面设计,所以我把它放在这份列表里。 ### 4. MonoDevelop ### ![](https://farm8.staticflickr.com/7515/16275175052_61487480ce_c.jpg) -Another monster to add to the list, [MonoDevelop][7] has a very unique feel derived from its look and interface. I personally love its project management and its integrated version control system. The plugin system is also pretty amazing. But for some reason, all the options and the support for all kind of programming languages make it feel a bit overwhelming to me. It remains a great tool that I used many times in the past, but just not my number one when dealing with "simplistic" C. +这又是这份列表里的一个“巨人级”工具,[MonoDevelop][7]那无与伦比的体验来源于它的外表和界面。我个人非常喜爱它的项目管理和它的一体化版本控制系统。The plugin system is also pretty amazing. But for some reason, all the options and the support for all kind of programming languages make it feel a bit overwhelming to me. It remains a great tool that I used many times in the past, but just not my number one when dealing with "simplistic" C. ### 5. Anjuta ### From 11da060bd09336dd961021ee7e60eee225afde95 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 28 Feb 2015 20:31:36 +0800 Subject: [PATCH 410/725] PUB:20141229 How to Create Btrfs Filesystem in Linux and its Features @GOLinux --- ...o Create Btrfs Filesystem in Linux and its Features.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20141229 How to Create Btrfs Filesystem in Linux and its Features.md (91%) diff --git a/translated/tech/20141229 How to Create Btrfs Filesystem in Linux and its Features.md b/published/20141229 How to Create Btrfs Filesystem in Linux and its Features.md similarity index 91% rename from translated/tech/20141229 How to Create Btrfs Filesystem in Linux and its Features.md rename to published/20141229 How to Create Btrfs Filesystem in Linux and its Features.md index 8ab85e81dc..9439ace204 100644 --- a/translated/tech/20141229 How to Create Btrfs Filesystem in Linux and its Features.md +++ b/published/20141229 How to Create Btrfs Filesystem in Linux and its Features.md @@ -28,7 +28,7 @@ Btrfs文件系统在Linux中的创建及其特性 ### 转换到Btrfs ### -**警告:在尝试转换文件系统前,请务必备份数据。虽然此操作很稳定,也很安全,但它仍然可能导致数据丢失,而防止此情况发生的唯一途径就是进行数据备份。** +**警告:在尝试转换文件系统前,请务必备份数据!虽然此操作很稳定,也很安全,但它仍然可能导致数据丢失,而防止此情况发生的唯一途径就是进行数据备份。** 将现存的ext4文件系统转换到btrfs是相当简单而易懂的。你首先需要使用fsck来检查你现存分区上是否存在错误,然后使用btrfs-convert命令进行转换。如果你想要对/dev/sda3分区进行转换,你可以进行以下操作: @@ -41,7 +41,7 @@ Btrfs文件系统在Linux中的创建及其特性 ### 转换根分区 ### -如果你想要对你系统上的根分区进行转换,你首先需要使用Live CD启动。对于Ubuntu,你可以使用Ubuntu安装CD来完成此操作,在启动后第一个屏幕选择“尝试Ubuntu”。对于其它系统,你同样可以使用Live CD镜像,操作类似。 +如果你想要对你系统上的根分区进行转换,你首先需要使用Live CD启动。对于Ubuntu,你可以使用Ubuntu安装盘来完成此操作,在启动后第一个屏幕选择“尝试Ubuntu”。对于其它系统,你同样可以使用Live CD镜像,操作类似。 在启动后,打开终端,使用下面的命令来转换文件系统。 @@ -57,7 +57,7 @@ Btrfs文件系统在Linux中的创建及其特性 ![btrfs-root-convert](http://blog.linoxide.com/wp-content/uploads/2014/11/btrfs-root-convert.jpg) -现在来编辑fstab,并根据blkid输出的结果来修改当前/文件系统的UUID,并将它的文件系统类型修改为btrfs,修改后的行如下: +现在来编辑fstab,并根据blkid输出的结果来修改当前“/”文件系统的UUID,并将它的文件系统类型修改为btrfs,修改后的行如下: UUID=8e7e80aa-337e-4179-966d-d60128bd3714 / btrfs defaults 0 1 @@ -74,7 +74,7 @@ via: http://linoxide.com/file-system/create-btrfs-features/ 作者:[Adrian Dinu][a] 译者:[GOLinux](https://github.com/GOLinux) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 0d52296a88ba8bbf15cf662ca99d6c4521fefc39 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 28 Feb 2015 20:55:19 +0800 Subject: [PATCH 411/725] PUB:20141114 How To Use Emoji Anywhere With Twitter's Open Source Library @FSSlc --- ...here With Twitter's Open Source Library.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) rename {translated/tech => published}/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md (63%) diff --git a/translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md b/published/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md similarity index 63% rename from translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md rename to published/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md index 6f1e2b5b56..ab8046d43e 100644 --- a/translated/tech/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md +++ b/published/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md @@ -1,36 +1,36 @@ - 怎样通过 Twitter 的开源库来随处使用 Emoji 表情符号 +怎样通过 Twitter 的开源库来随处使用 Emoji 表情符号 ================================================================================ > 通过 GitHub 将它们嵌入到网页和其他项目中。 ![](http://a3.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2OTIyNTI3MjcxNTU1.png) -Emoji, 来自日本的小巧符号,通过图像表达感情,已经征服了手机文字信息的世界。 +Emoji, 来自日本的小巧符号,通过图像表达感情,已经征服了移动互联网的信息世界。 现在,你可以在虚拟世界中随处使用它们了。 Twitter 最近[开源了][1]他们的 emoji 符号库,使得你可以在你自己的网站,应用,和项目中使用它们。 -但这需要一点体力活。 Unicode 已经识别甚至标准化了 emoji 字母表, 然而 emoji 仍然[不能完全与所有的网络浏览器相兼容][2],这意味着大多数情况下,它们将呈现为 “豆腐块”或 空白盒子。当 Twitter 想使得 emoji 可用时,社交网络联合一家名为[Icon Factory][3]的公司共同渲染浏览器以模仿 文本信息符号的效果。结果,Twiter 说道 人们对他们的 emoji 库有很大的需求。 +但这需要一点体力活。 Unicode 已经识别甚至标准化了 emoji 字母表, 然而 emoji 仍然[不能完全与所有的网络浏览器相兼容][2],这意味着大多数情况下,它们将呈现为 “豆腐块”或“空白盒子”。当 Twitter 想使得 emoji 到处可用时,这家社交网络联合了一家名为[Icon Factory][3]的公司来渲染浏览器以模仿文本信息符号的效果。Twiter 认为人们对他们的 emoji 库有很大的需求。 现在, 你可以从 [GitHub][4] 上克隆 Twitter 的整个库,从而在你的开发项目中使用它们。 下面将为你介绍如何达到上面的目的以及如何使得 emoji 更容易被使用。 ### 为 Emoji 得到 Unicode 支持 ### -Unicode 是国际编码标准,它为任意的符号,字母或人们想在网络上使用的数字配置了一串符号。换句话说,它是 你如何在计算机上阅读文本 与 计算机如何读取文本 之间的缺失环节。例如,对于你正看到的位于这些句子中的`空白`,计算机读取为 “&mbsp”。 +Unicode 是国际编码标准,它为任意的符号、字母或人们想在网络上使用的数字配置了一串编码。换句话说,它是你如何在计算机上阅读文本与计算机如何读取文本之间的缺失环节。例如,对于你正看到的位于这些句子中的`空格`(LCTT 译注:英文分词中间的空格),计算机读取为 “ ”。 -Unicode 甚至拥有其自己的 [原始 emoji][5],它们可以 在没有你的任何努力的情况下在浏览器中被阅读。例如,当你看到了 一个 ❤ 符号,你的计算机正在解码字符串 “2665” 。 +Unicode 甚至拥有其自己的[原始 emoji][5],它们可以在没有你的任何努力的情况下在浏览器中被阅读。例如,当你看到了 一个 ❤ 符号,你的计算机正在解码字符串 “2665” 。 要在大多数情况下使用 Twitter 的 emoji 库,你只需在你的 HTML 网页中的 ``块中添加如下脚本: -这样就使得你的项目可以访问 包含有已经在 Twitter 中可使用的数以百计的 Emoji 符号的 JavaScript 库。然而,创建一个仅仅包含这个脚本的文档并不能使得在你的网站中呈现出 emoji 符号,实际上,你仍需要嵌入一些 emoji 符号! +这样就使得你的项目可以访问包含有已经在 Twitter 中可使用的数以百计的 Emoji 符号的 JavaScript 库。然而,创建一个仅仅包含这个脚本的文档并不能使得在你的网站中呈现出 emoji 符号,实际上,你仍需要嵌入这些 emoji 符号! -在 ``块中,粘贴一些可以在 Twitter 的[preview.html 文件源代码][6] 中找到的 emoji 字符串。我使用了 🎹 和 🏁,当然我并不知道在浏览器窗口中它们的样子。是的,你必须粘贴并猜测它们。你已经看出了问题,我们将在 第二小节中予以解决。 +在 ``块中,粘贴一些可以在 Twitter 的[preview.html 文件源代码][6] 中找到的 emoji 字符串。我使用了 🎹 和 🏁,当然我并不知道在浏览器窗口中它们的样子。是的,你必须粘贴并猜测它们。你已经看出了问题,我们将在第二小节中予以解决。 无论如何,通过一些尝试,你可以将一个如下图的原始 HTML 文件--- ![](http://a4.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODQyNTMzNTQ1OTk0.png) ----转变成如下图的网页: +---显示为如下图的网页: ![](http://a1.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODExNjYzNDU1NTA2.png) @@ -52,11 +52,11 @@ Unicode 甚至拥有其自己的 [原始 emoji][5],它们可以 在没有你 - 一旦你将上面的代码添加了进去,你便可以删除先前添加的 Twitter 的脚本链接。 +一旦你将上面的代码添加了进去,你便可以删除先前添加的 Twitter 的脚本链接。 - 现在,找到 `body` 块部分的代码,然后添加一些 emoji 符号。我使用了 ``, ``, `` 和 ``。 +现在,找到 `body` 块部分的代码,然后添加一些 emoji 符号。我使用了 ``, ``, `` 和 ``。 - 最终,你将得到如下的代码: +最终,你将得到如下的代码: ![](http://a2.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODcyMDYxNDU2MzU0.png) @@ -64,9 +64,9 @@ Unicode 甚至拥有其自己的 [原始 emoji][5],它们可以 在没有你 ![](http://a1.files.readwrite.com/image/upload/c_fit,w_620/MTI1OTA2ODExOTMxODkwOTYy.png) -当当!这样你不仅得到了一个可以在浏览器中支持 emoji 符号的基本网页,而且还知道了如何简单地实现它。你可以随意的在[我的 GitHub][9] 中查看这个教程,并且可以克隆这些实际的文件而不只是看看这些截图。 +Duang!这样你不仅得到了一个可以在浏览器中支持 emoji 符号的基本网页,而且还知道了如何简单地实现它。你可以随意的在[我的 GitHub][9] 中查看这个教程,并且可以克隆这些实际的文件而不只是看看这些截图。 -来自于[得到 Emoji][10]的引导图像; Lauren Orsini 截图。 +题图来自于[得到 Emoji][10]; Lauren Orsini 截图。 -------------------------------------------------------------------------------- @@ -74,7 +74,7 @@ via: http://readwrite.com/2014/11/12/how-to-use-emoji-in-the-browser-window 作者:[Lauren Orsini][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7edb0d612567915d22a949e106ea02fc61c878da Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 28 Feb 2015 21:35:12 +0800 Subject: [PATCH 412/725] Update and rename translated/tech to translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md --- ... full kernel source on Debian or Ubuntu.md | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md diff --git a/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md new file mode 100644 index 0000000000..1296b0f975 --- /dev/null +++ b/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md @@ -0,0 +1,58 @@ +Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 +================================================================================ +> **问题**:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核。那么在Debian或Ubuntu上有什么可行的方法来下载完整的内核源码呢? + +在给你的Linux安装完整内核源码之前,先问问自己是否真的需要这样做。如果你仅仅是尝试去编译一个内核模块或是为内核定制驱动,你并不需要完整的内核源码树。你只需要安装[一些与内核对应的头文件][1],这样就足够了。 + +只有在你需要生成一个定制的内核,而且内核源码中的一些内核默认设置要被你调整了的情况下,你才需要完整的内核源码树。 + +这里将会解答如何**在Debian或Ubuntu的库中下载并安装完整树结构的内核源码**。虽然你可以在这个网站[https://www.kernel.org/pub/linux/kernel/][2]下载官方的内核源码,但是发行版软件仓库可以允许你下载包含补丁的内核源码。 + +### 在Debian上安装完整的内核源码 ### + +在下载内核源码之前,先安装dpkg-dev,其中包含你在Debian上生成源代码时需要的开发工具套件。不仅如此,dpkg-dev中还包含在用来解压Debian源码包并自动打补丁的工具dpgk-source。 + + $ sudo apt-get install dpkg-dev + +然后,运行以下命令下载完整的内核源码。 + + $ apt-get source linux-image-$(uname -r) + +伴随着完整内核源码(linux_X.X.XX.orig.tar.xz)的还有一些可用的内核补丁(linux_X.X.X+XXX.debian.tar.xz)和源码控制文件(linux_XXXX.dsc),这些都将被下载并存储到当前目录。在.dsc文件中会指出如何给内核源码打补丁。 + +当下载完成,以上的命令将会自动调用工具dpkg-source将下载的内核源码解压到当前的目录中,与此同时更具.dsc文件来下补丁。 + +最终完整的内核源码树将会以"linux-X.X.XX"的形式呈现在当前目录中。 + +![](https://farm9.staticflickr.com/8676/16341110300_b4f059eeb0_b.jpg) + +### 在Ubuntu上安装完整内核源码 ### + +如果你想安装完整内核源码的话,以上在Debian上的那一套做法在Ubuntu上仍然奏效。 + +在Ubuntu上还有另一套方法安装完整内核源码。事实上,你可以查一下由Canonical为Ubuntu不同发行版维护的内核源码树。 + + $ sudo apt-get install git + $ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release --codename | cut -f2).git + +举个例子,如果你使用的是Ubuntu14.04,以上的命令将会查看Git的"ubuntu-trusty"仓库中的代码。 + +![](https://farm9.staticflickr.com/8642/16526856391_de636ff9b8_c.jpg) + +一旦在你对Git仓库的查询结束后,使用以下的命令来安装用来访问生成内核源码树所需依赖的重要开发包。 + + $ sudo apt-get build-dep linux-image-$(uname -r) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://ask.xmodulo.com/install-kernel-headers-linux.html +[2]:https://www.kernel.org/pub/linux/kernel/ From d9246bbbdea839879993958ec5a8c55600cd026e Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 28 Feb 2015 21:39:32 +0800 Subject: [PATCH 413/725] Delete 20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md --- ... full kernel source on Debian or Ubuntu.md | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md deleted file mode 100644 index 65b3a08c48..0000000000 --- a/sources/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md +++ /dev/null @@ -1,60 +0,0 @@ -translating by martin. - -Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu -================================================================================ -> **Question**: I need to download and install a full kernel source tree to compile a custom kernel for my Debian or Ubuntu system. What is a proper way to download full kernel source on Debian or Ubuntu? - -Before installing full kernel source on your Linux system, ask yourself whether you really need the full kernel source. If you are trying to compile a kernel module or a custom driver for your kernel, you do not need the full kernel source. You only need to install [matching kernel header files][1], and that's it. - -You need the full kernel source tree only if you want to build a custom kernel after modifying the kernel code in any way and/or tweaking default kernel options. - -Here is how to **download and install full kernel source tree from Debian or Ubuntu repositories**. While you can download the official kernel source code from [https://www.kernel.org/pub/linux/kernel/][2], using distro's repositories allows you to download a kernel source with the maintainer's patches applied to it. - -### Install Full Kernel Source on Debian ### - -Before downloading kernel source, install dpkg-dev, which contains a suite of development tools needed to build Debian source packages. Among other things, dpkg-dev contains dpgk-source tool which can extract a Debian source package and automatically apply patches. - - $ sudo apt-get install dpkg-dev - -Next, run the following command to download full kernel source. - - $ apt-get source linux-image-$(uname -r) - -Along with the full kernel source (linux_X.X.XX.orig.tar.xz), any available kernel patches (linux_X.X.X+XXX.debian.tar.xz) and source control file (linux_XXXX.dsc) will also be downloaded and stored in the current directory. The .dsc file instructs how the patches are applied to the kernel sources. - -Upon the completion of download, the above command will automatically invoke dpkg-source tool, which will unpack the downloaded kernel source in the current directory, and apply downloaded patches according to .dsc file. - -The final full kernel source tree will be available in the current directory as "linux-X.X.XX". - -![](https://farm9.staticflickr.com/8676/16341110300_b4f059eeb0_b.jpg) - -### Install Full Kernel Source on Ubuntu ### - -If you want to install full kernel source, the Debian way described above should work on Ubuntu as well. - -There is another way to download full kernel source on Ubuntu. You can actually check out the kernel source tree maintained by Canonical for different Ubuntu releases. - -$ sudo apt-get install git -$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release --codename | cut -f2).git - -For example, if you are using Ubuntu 14.04, the above command will check out code from "ubuntu-trusty" Git repository. - -![](https://farm9.staticflickr.com/8642/16526856391_de636ff9b8_c.jpg) - -Once you check out the Git repository, use the following command to install necessary development packages to meet the build dependencies for the kernel source tree. - - $ sudo apt-get build-dep linux-image-$(uname -r) - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://ask.xmodulo.com/author/nanni -[1]:http://ask.xmodulo.com/install-kernel-headers-linux.html -[2]:https://www.kernel.org/pub/linux/kernel/ From 184a516a7716a23f2d3455315cfdf094e5340b9e Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 28 Feb 2015 21:41:56 +0800 Subject: [PATCH 414/725] PUB:20141120 How to install Xen hypervisor on unused old hardware @liaoishere --- ...l Xen hypervisor on unused old hardware.md | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) rename {translated/tech => published}/20141120 How to install Xen hypervisor on unused old hardware.md (82%) diff --git a/translated/tech/20141120 How to install Xen hypervisor on unused old hardware.md b/published/20141120 How to install Xen hypervisor on unused old hardware.md similarity index 82% rename from translated/tech/20141120 How to install Xen hypervisor on unused old hardware.md rename to published/20141120 How to install Xen hypervisor on unused old hardware.md index 87a28c57fc..f26d753e00 100644 --- a/translated/tech/20141120 How to install Xen hypervisor on unused old hardware.md +++ b/published/20141120 How to install Xen hypervisor on unused old hardware.md @@ -1,11 +1,11 @@ - 怎样在废旧的硬件上安装 Xen 虚拟机监视器 ================================================================================ -Xen 是一个直接运行在硬件上的虚拟机监视器,这意味着你必须准备一个裸机来安装和运行 Xen。KVM 和 Xen 有一些不同 —— 你可以把它安装在任何已经正在运行 Linux 的机器上。本教程描述了如何在废旧的硬件上安装和配置 Xen 虚拟机监视器。 +Xen 是一个直接运行在硬件上的虚拟机监视器,这意味着你必须准备一个裸机来安装和运行 Xen。而 KVM 则和 Xen 有一些不同 —— 你可以把它添加到任何已经正在运行 Linux 的机器上。本教程描述了如何在废旧的硬件上安装和配置 Xen 虚拟机监视器。 整个安装过程使用 Debian Jessie(Debian 的测试发行版)作为宿主机操作系统(也称作 [Dom0][1])。Jessie 并不是唯一的选择 —— Xen 的支持是内建在 Linux 内核中的,[许多 Linux 发行版][2] 都包含支持 Xen 的内核。 ### 找点废旧的硬件 ### + 首先,找一个可以格式化的合适的工作站,比如一台旧的笔记本或者台式机。旧的硬件可能不适合玩游戏,但是足够安装一个宿主机和一些客户机了。一个满足下面这些要求的 PC 机就可以了。 - 一个双核 CPU(64 位) @@ -14,7 +14,7 @@ Xen 是一个直接运行在硬件上的虚拟机监视器,这意味着你必 - 能够从 CD,DVD 或者 USB 引导启动 - 一块网卡 -注意 CPU 必须是 64 位的,因为 Debian 已经不再支持 32 位的 Xen 安装包。如果你没有空余的硬件,你可以花点钱投资一台旧机器。2010 年值 $1000 的旗舰级笔记本现在只需要 $100。从 eBay 买台二手笔记本并升级下内存也可以满足需求。 +注意 **CPU 必须是 64 位的,因为 Debian 已经不再支持 32 位的 Xen 安装包**。如果你没有空余的硬件,你可以花点钱买一台旧机器。2010 年值 $1000 的旗舰级笔记本现在只需要 $100。从 eBay 买台二手笔记本并升级下内存也可以满足需求。 ### 刻录一个引导 CD/USB ### @@ -41,19 +41,19 @@ Xen 是一个直接运行在硬件上的虚拟机监视器,这意味着你必 这里的设置使用了四个分区。自动安装时通常会创建一个包含逻辑分区的扩展分区。像下面这样给硬盘分四个区。 - sda1 挂载至 /boot,200MB -- sda2 /, 20GB, Ubuntu 占用 4GB -- sda3 swap, 6GB (4GB x 1.5 = 6) +- sda2 做为 /, 20GB, Ubuntu 占用 4GB +- sda3 做为 swap, 6GB (4GB x 1.5 = 6) - sda4 保留用作 LVM, 不挂载,大小为剩余的硬盘大小 ### 安装基本的系统 ### -这里尽可能的让系统的安装更简单快速一些。一个基本的工作用系统可以稍后再添加。Debian 的 APT(Advanced Package Tool)使得添加软件非常的简单。在一个工作站上安装 Deibian 可能会有一些很浪费时间的问题。可能显卡驱动与内核不监控或者可能老旧的 CD-ROM 驱动器只能间歇性的工作。 +这里尽可能的让系统的安装更简单快速一些。一个基本的工作用系统可以稍后再添加。Debian 的 APT(Advanced Package Tool)使得添加软件非常的简单。在机器上安装 Debian 可能会有一些很浪费时间的问题。可能显卡驱动与内核不监控或者可能老旧的 CD-ROM 驱动器只能间歇性的工作。 当选择安装软件时,选择安装一个 SSH 服务器,不要安装桌面环境如 Gnome。 ![](https://farm9.staticflickr.com/8541/15176520633_5d31beda9c_z.jpg) -安装一个图形桌面需要安装成百上千的包 —— 这些额外的工作可以稍后再进行。如果你遇到问题了,等到图形桌面的安装会浪费很多事件。同时,没有桌面组件,系统的启动可以更快一些 —— 只需要几十秒而不是几分钟。整个安装过程会需要重启几次,因此这样做可以节省不少时间。 +安装一个图形桌面需要安装成百上千的包 —— 这些额外的工作可以稍后再进行。如果你遇到问题了,等待图形桌面的安装会浪费很多时间。同时,没有桌面组件,系统的启动可以更快一些 —— 只需要几十秒而不是几分钟。整个安装过程会需要重启几次,因此这样做可以节省不少时间。 一个 SSH 服务器可以让你从另一台电脑来配置这台工作站。这可以避免一些旧硬件的问题 —— 可能旧机器的键盘少了几个键,LCD 屏幕有坏点或者触摸板没有反应等等。 @@ -79,9 +79,9 @@ Xen 是一个直接运行在硬件上的虚拟机监视器,这意味着你必 检查 LVM 状态。 - # pvs (to view information about physical volumes) - # vgs (to view information about volume groups) - # lvs (to view information about logical volumes) + # pvs (查看物理卷的信息) + # vgs (查看卷组的信息) + # lvs (查看逻辑卷的信息) ### 添加一个 Linux 网桥 ### @@ -92,7 +92,6 @@ Xen 是一个直接运行在硬件上的虚拟机监视器,这意味着你必 # apt-get install bridge-utils 查看在哪块网卡配置桥接。 -See what interfaces are configured. # ip addr @@ -156,13 +155,13 @@ See what interfaces are configured. ![](https://farm8.staticflickr.com/7535/15794086091_bf1bce6b4b_z.jpg) -第一个选项会在 5 秒钟内自动启动(在 /etc/default/grub 的 GRUB_TIMEOUT 这行设置),因此这点时间还来不及喝咖啡的。 +第一个选项会在 5 秒钟内自动启动(在 /etc/default/grub 的 GRUB_TIMEOUT 这行设置),因此这点时间可来不及喝咖啡。 按下方向键选择 "Debian GNU/Linux, with Xen hypervisor" 这个选项,然后按回车。这时屏幕会出现很多行信息,接着是正常的登录界面。 ### 检查 Xen 工作是否正常 ### -Xen 虚拟机监视器嗲有一个管理 Xen 的命令行工序叫做 xl,可以用来创建和管理 Xen 虚拟机。使用 xl 命令来检查 Xen 是否成功安装了。 +Xen 虚拟机监视器带有一个管理 Xen 的命令行程序叫做 xl,可以用来创建和管理 Xen 虚拟机。使用 xl 命令来检查 Xen 是否成功安装了。 以 root 用户登录,执行: @@ -206,9 +205,11 @@ Xen 虚拟机监视器嗲有一个管理 Xen 的命令行工序叫做 xl,可 ### 最后 ### -如果你使用这台主机作为你的工作站,可以安装一个图形桌面。Debian 包好几种[桌面环境][6]。如果你想要一个包含所有东西的图形桌面,那么安装 Gnome 吧。如果图形效果并不是你的菜,试试 Awesome 吧。 +如果你使用这台主机作为你的工作站,可以安装一个图形桌面。Debian 包括好几种[桌面环境][6]。如果你想要一个包含所有东西的图形桌面,那么安装 Gnome 吧。如果它的图形效果并不是你的菜,试试 Awesome 吧。 -注意 Debian 的默认 Gnome 环境有大量的额外应用程序包括办公套件 LibreOffice,Iceweasel 浏览器和 Rhythmbox 音乐播放器。安装命令 "apt-get install gnome" 会安装 1,000 多个包并需要将近 2GB 的硬盘空间。运行这个重量级的桌面环境需要占用 1GB 的内存。 +注意 Debian 的默认 Gnome 环境有大量的额外应用程序包括办公套件 LibreOffice,Iceweasel 浏览器和 Rhythmbox 音乐播放器。安装命令 "apt-get install gnome" 会安装 1,000 多个包并需要将近 2GB 的硬盘空间。运行这个重量级的桌面环境需要占用 1GB 的内存。 + +(LCTT 译注:本文没有涉及如何安装 guest 虚拟机,请关注后继文章) -------------------------------------------------------------------------------- @@ -216,7 +217,7 @@ via: http://xmodulo.com/install-xen-hypervisor.html 作者:[Nick Hardiman][a] 译者:[Liao](https://github.com/liaoishere) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a606951d16fa23112efc8526df089a0041dd8f0c Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 28 Feb 2015 21:42:39 +0800 Subject: [PATCH 415/725] translated From ed8f63cb1e20ba4a83770945200db2ef9e4ce78d Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 28 Feb 2015 22:32:33 +0800 Subject: [PATCH 416/725] PUB:20150119 Cutegram--A Better Telegram Client For GNU or Linux @geekpi --- ...Better Telegram Client For GNU or Linux.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) rename {translated/tech => published}/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md (54%) diff --git a/translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md b/published/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md similarity index 54% rename from translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md rename to published/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md index 4f0a57ff52..57511dd73c 100644 --- a/translated/tech/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md +++ b/published/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md @@ -1,12 +1,12 @@ -Cutegram: 一个GNU/Linux下更好的Telegram客户端 +Cutegram: 一个GNU/Linux下不错的Telegram客户端 ================================================================================ -不需要再介绍**Telegram**了,对吧。Telegram是一款流行的免费即时通信工具,帮助在全球与你的朋友聊天。不像Whatsapp,Telegram是永久免费、没有广告、没有订阅费用。并且Telegram客户端也是开源的。Telegram在许多不同的平台中都有,包括Linux、Android、iOS、Windows Phone和Mac OS X。使用telegram发送的消失是高度加密且会自我毁灭。它很安全,并且没有对你媒体和聊天的大小作限制。 +不需要再介绍**Telegram**了,对吧。Telegram是一款流行的免费即时通信工具,帮助你在全球与朋友聊天。不像Whatsapp,Telegram是永久免费、没有广告、没有订阅费用的。并且Telegram客户端也是开源的。Telegram在许多不同的平台中都有,包括Linux、Android、iOS、Windows Phone和Mac OS X。使用telegram发送的消息是高度加密且会自我销毁。它很安全,并且没有对你的多媒体和聊天的大小作限制。 -在[先前的教程][1]中我们已经提到你可以在Ubuntu/Debian中安装Telegram。然而,一个新的Telegram客户端叫**Cutegram**出现了,可以使你的聊天体验更加有趣和简单。 +在[先前的教程][1]中我们已经提到你可以在Ubuntu/Debian中安装Telegram。然而,有一个新的Telegram客户端叫**Cutegram**出现了,可以使你的聊天体验更加有趣和简单。 ### Cutegram是什么? ### -Cutegram是一款GNU/Linux中专注于用户友好、与LInux桌面环境兼容和易于使用的开源telegram客户端。Cutegram使用Qt5、QML、libqtelegram、libappindication、AsemanQtTools技术和Faenzatu图标和Twitter emojies图片集。它在GPLv3许可证下免费发布。 +Cutegram是一款专注于用户友好、与Linux桌面环境兼容和易于使用的开源 telegram 的 GNU/Linux客户端。Cutegram使用Qt5、QML、libqtelegram、libappindication、AsemanQtTools技术和Faenzatu图标和Twitter emojie图片集。它在GPLv3许可证下免费发布。 ### 安装 Cutegram ### @@ -31,7 +31,7 @@ Cutegram是一款GNU/Linux中专注于用户友好、与LInux桌面环境兼容 设置执行权限: - chmod + cutegram-1.0.2-linux*.run + chmod a+x cutegram-1.0.2-linux*.run 如下进行安装。 @@ -41,22 +41,21 @@ Cutegram是一款GNU/Linux中专注于用户友好、与LInux桌面环境兼容 在菜单或者Unity dash中启动Cutegram。在登录界面,选择你的国家并输入电话号码,最好点击**Login** -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_005.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/Cutegram_005.png) -A code will be sent to your mobile number. Enter the code and click **Sign in**. -一个验证码将会发送到你手机上。输入验证码病点击**** +一个验证码将会发送到你手机上。输入验证码并点击**Sign in** -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_002.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/Cutegram_002.png) 你会看到 -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_003.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/Cutegram_003.png) 开始聊天吧! -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Cutegram_004.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/Cutegram_004.png) -接着,你可以设置头像,开始新的聊天/群聊,或者使用左边面板的按钮开始秘密聊天。 +接着,你可以设置头像,开始新的聊天/群聊,或者使用左边面板的按钮开始秘密聊天。 玩得开心!干杯!! @@ -68,7 +67,7 @@ via: http://www.unixmen.com/cutegram-better-telegram-client-gnulinux/ 作者:[SK][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 502429180bd3526a47a98a26881407bfe4283998 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sun, 1 Mar 2015 00:58:28 +0800 Subject: [PATCH 417/725] Translated 20141127 11 Usefull Utilities To Supercharge Your Ubuntu Experience.md --- ...s To Supercharge Your Ubuntu Experience.md | 156 ------------------ ...s To Supercharge Your Ubuntu Experience.md | 155 +++++++++++++++++ 2 files changed, 155 insertions(+), 156 deletions(-) delete mode 100644 sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md create mode 100644 translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md diff --git a/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md b/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md deleted file mode 100644 index 928778fc4b..0000000000 --- a/sources/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md +++ /dev/null @@ -1,156 +0,0 @@ -Translating by FSSlc - -11 Useful Utilities To Supercharge Your Ubuntu Experience -================================================================================ -**Whether you’re a relative novice or a seasoned pro, we all want to get the most from our operating system. Ubuntu, like most modern OSes, has more to offer than what is presented at first blush.** - -From tweaking and refining the look, behaviour and performance of the Unity desktop to performing system maintenance, there are a huge array of useful utilities and apps that can help **tune Ubuntu to meet your needs in no time**. - -Caveat time: Ubuntu has always shipped with ‘sane defaults’ — options that just work — out of the box. These defaults are well suited for the majority of people. They’re tested, accepted and recommended. - -But one size doesn’t fit all. For the tinkerers and experimenters among us the default experience is a starting point from which to tailor. - -So, without any more waffle, here is a set of 11 nifty utilities to help you supercharge your Ubuntu experience. - -### Unity Tweak Tool ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/unity-tweak-tool.jpg) - -I’ll kick off this list with the big one: **Unity Tweak** Tool. The kitchen sink of customisation, Unity Tweak Tool offers a comprehensive set of system tweaks tuned for Ubuntu and the Unity desktop. - -It’s stuffed full of switches, toggles and control, letting you configure everything from the way Unity looks to the way it behaves. Use it to **quickly and easily change the GTK theme and icon set**, set up hot corners, adjust launcher size, add or remove workspaces, and — notably — enable Unity’s elusive ‘minimise on click’ feature. - -Free and readily available from the Software Center, Unity Tweak Tool is one well worth keeping in your back pocket. - -### Unity Privacy Indicator ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/indicator-privacy-in-ubuntu.jpg) - -Privacy. A big, big issue and rightly so. But the topic is often shaded rather than binary; you may be happy to let some data or habits, say apps you frequently open, be logged locally, but not be ok with the searches you make in the Dash being ferried to a third-party server (however anonymous that data may be). - -[Privacy Indicator][1] is a useful tool to help you stay abreast of what files, folders and services are being accessed, logged and recce’d on the Ubuntu desktop. - -With a quick click on the ‘eye’ icon added to the desktop panel you can: - -- Toggle Online Search Results, Zeitgeist, HUD Logging & GeoIP -- Quick access to clean Zeitgeist, F2, Recent Files, etc. -- Options to show/hide desktop icons and name in the panel - -The latter two options may seem a little misplaced in this app but have less obvious privacy implications for those who take screenshots or screen share. - -- [Download Indicator Privacy (.deb)][2] - -### Unity Folders ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/unity-folders.jpg) - -**Android, iOS, OS X, Chrome OS, and GNOME Shell have app folders, and so can Unity with a nifty third-party app. ** - -“Unity Folders” allows you to organise apps on the Unity Launcher into handy folders — think ‘games’, ‘office’, ‘social‘, etc. You get quick access to your favourite apps without needing to open the Dash, which may suit your workflow. - -Each ‘folder’ is, actually, an application that opens up and positions itself near the origin point. But the overall effect is one that looks like an OS X style stack or an Android folder popover. - -Folder icons can be customised or auto-generated based on the applications tucked up inside. Existing folders can be edited, rearranged, rename and re-other stuff, too. - -- Create as many folders as you like -- Choose custom or auto-generated folder icon -- 3 folder layouts to choose from -- Set custom icons for apps added to folders -- Edit existing folders - -- Unity Folders Website - -### Caffeine ### - -A staple for many of us, and not just in our drinks, Caffeine offers a fast, silent way to stop your screensaver or lock-screen kicking in. The degree of usefulness will depend on your circumstances (read: quirks of your system), and though it’s not quite as user friendly as it once was, it’s still worth [checking out][3]. - -### System Monitor Indicator ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/multiload-indicator-in-ubuntu.jpg) - -If you’re a stat hound who likes to keep tabs on apps, processes and hardware status, Linux makes it easy. From Conky Configs to Terminal Commands — there’s no shortage of ways to monitor your CPU usage, network traffic or GPU temperature. - -But by far my favourite is System **Monitor Indicator** – also known as indicator-multiload — available from the Ubuntu Software Center. It has a host of configuration options, too. - -- [Click to Install ‘System Load Indicator’ on Ubuntu][4] - -### Power Saving Tools for Linux Laptops ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2012/08/front.jpg) - -**TLP** - -Linux distributions don’t have the best reputation when it comes to power efficiency on portable devices. - -If your own Linux laptop can barely get you from the sofa to the kitchen before needing a recharge, there are some tools you can try. - -TLP is one of the most popular automated background tool promising to prolong battery life of laptops running Linux. It does this by adjusting the settings and behaviour of system processes and hardware, such as enabling Wi-Fi power saving mode, runtime power management of PCI bus devices, and processor frequency scaling. - -It’s available to [install on Ubuntu 14.04 LTS and later using the dedicated TLP PPA][5] and comes with a ‘catch-all’ config to get you started. The more advanced users among you can dive in and manually adjust the settings to suit your own hardware, something that a [thorough guide on the TLP wiki][6] makes easy. - -**Laptop Mode Tools** - -If TLP sounds a little too complex — and there’s no shame if it does — there’s a simpler alternative: **Laptop Mode Tools**. This package is available to install from the Ubuntu Software Center and keeps the tweaks made to a set of sane defaults (Wi-Fi, Bluetooth, etc.). - -Laptop Mode Tools cannot be installed at the same time as TLP. - -- [Laptop Mode Tools in Ubuntu Software Center][7] - -### Intel Graphics Installer ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2013/04/intelgraphicsdriverinstaller.png) - -The Intel Graphics Installer tool is a must-have for those running Intel graphics hardware who want the best performance they can get. It makes finding and installing the latest Intel GPU drivers a painless, fuss-free affair — no PPAs or Terminal kung foo needed. - -- [Download Intel Graphics Installer for Linux 0.7][8] - -### Hardware Stats ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/Screen-Shot-2014-02-10-at-21.05.37.png) - -If you plan on upgrading your PC or replacing a worn-out part you’ll need to get some specific hardware details, such as RAM type, CPU socket set or what PCI slots are available. - -**I-Nex** makes unearthing this, and host of other detailed system stats, easy. Use it to find your motherboard model number, RAM stepping, S.M.A.R.T. status and…well, pretty much anything else you can think of! - -- [Learn More About I-Nex on Launchpad][9] - -### Disk Space Visualizer ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/disk-usage-visualizer-for-ubuntu.jpg) - -In this age of 1TB hard drives we might not need to be as prudent with disk space as we once were. But for those of using a smallish SSD, running multiple partitions or working in a virtual machine with a fixed-size virtual disk, there’ll be times when freeing up a bit of extra space is required. - -GNOME Disks, installed in Ubuntu by default, makes finding the biggest space-gobbling culprits easy. Ideal for locating hidden logs, caches, and media files. - -### BleachBit (Cruft Cleaner) ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/bleachbit.jpg) - -Windows users will be familiar with applications like CCleaner, which scan for and clean out junk files, empty folders, bloated caches, and obsolete packages. For a a similarly quick and effortless click n’ clean solution on Ubuntu try **BleachBit**. - -It is a powerful tool, so do pay attention to what you’re cleaning. Don’t aimlessly check every box; not everything that it can clean needs to be. Play it smart; when in doubt, leave it out. - -- [Install BleachBit from Ubuntu Software Center][10] - -Got a favourite system utility of your own? Let others know about it in the comments. --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2014/11/useful-tools-for-ubuntu-do-you-use-them - -作者:[Joey-Elijah Sneddon][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:http://www.florian-diesch.de/software/indicator-privacy/index.html -[2]:http://www.florian-diesch.de/software/indicator-privacy/dist/indicator-privacy_0.04-1_all.deb -[3]:http://www.omgubuntu.co.uk/2014/05/stop-ubuntu-sleeping-caffeine -[4]:apt://indicator-mulitload -[5]:https://launchpad.net/~linrunner/+archive/ubuntu/tlp/+packages -[6]:http://linrunner.de/en/tlp/docs/tlp-configuration.html -[7]:https://apps.ubuntu.com/cat/applications/laptop-mode-tools/ -[8]:https://01.org/linuxgraphics/downloads/2014/intelr-graphics-installer-linux-1.0.7 -[9]:https://launchpad.net/i-nex -[10]:https://apps.ubuntu.com/cat/applications/bleachbit/ diff --git a/translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md b/translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md new file mode 100644 index 0000000000..5b60043bcd --- /dev/null +++ b/translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md @@ -0,0 +1,155 @@ +11 个 增强你的 Ubuntu 使用体验的实用工具 +================================================================================ +**无论你是一个相对的新手还是经验丰富的专家,我们都想从我们的操作系统中得到更多的东西。正如大多数现代的操作系统,相比于乍一看呈现出的内容,Ubuntu 有更多东西可以向我们提供。** + +从调整和优化 Unity 桌面的外观、行为、性能 到 执行系统维护,有着大量的实用工具和应用可以帮助你 **调整 Ubuntu 来无时不刻地满足你的需求**。 + +注意时刻: Ubuntu 一直都配备了‘合理的默认设置---即工作良好的选项---’,以达到开箱即用,这些默认设置适合大多数人,并且它们都是经过了测试,采用及推荐等过程的。 + +但一个尺寸并不适合所有。对于我们当中的能工巧匠和实验主义者来说,默认设置只是他们定制系统的起点。 + +所以,无需更多的唠叨, 这里有 11 个极好的实用工具来帮助你增强你的 Ubuntu 使用体验。 + +### Unity Tweak Tool ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/unity-tweak-tool.jpg) + +我将以这个列表中最重要的一个工具: **Unity Tweak Tool** 来开始这次的介绍。定制的厨房水槽(注:不知该如何翻译,感觉意思是:水槽之于厨房的重要性相当于该软件之于定制 Ubuntu 的重要性), Unity Tweak Tool 提供了一系列针对 Ubuntu 和 Unity 桌面的系统综合调整功能。 + +它被各种开关,切换和控制塞得满满的,使得你可以任意设置从 Unity 桌面的外观到 Unity 的行为之类的任何东西。你可以使用它 **快速简便地改变 GTK 主题和图标集**、设置热区、调整启动器图标尺寸、增加或移除工作区,以及 ---特别地---开启 Unity 桌面中被巧妙隐藏的“通过点击最小化”的特点。 + +免费并可直接从 Ubuntu 软件中心里找到, Unity Tweak Tool 是非常值得保留在你的口袋里的工具之一。 + +### Unity Privacy Indicator ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/indicator-privacy-in-ubuntu.jpg) + +隐私是一个非常,非常重要的事,事实也恰恰如此。但这个话题总是被隐藏在二进制之下(注:感觉这里翻译有误,不太确定)。让一些数据或习惯,比如说你经常打开的应用,在本地被记录下来,这或许会让你感到高兴,但对于 你在 Dash 中的搜索数据被发送带第三方服务机构(尽管这些数据或许是匿名的)这类事情,你就高兴不起来了。 + +[Privacy Indicator][1] 是一个帮助你时刻跟踪 Ubuntu桌面系统中哪些文件、目录和服务正被获取、记录及搜索的实用工具。 + +通过快速的点击被添加到桌面面板上的‘眼睛’图标,你可以: + +- 开启或关闭在线搜索结果,Zeitgeist(注:根据图片看,Zeitgeist 指的是 record activity), HUD 记录 和 GeoIP 服务 +- 快速的启用 清理 Zeitgeist,F2(注:根据图片看,F2 指的是 通过 Alt-F2 执行的命令),当前文件等等的记录数据 +- 展示或隐藏桌面图标以及它们在桌面面板上的名称 + +上面的最后两个选项在这个应用中似乎有点被放错了位置,但对于那些要分享截图或截屏的人来说,将会泄露更少的隐私。 + +- [从这里下载 Indicator Privacy (.deb)][2] + +### Unity Folders ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/unity-folders.jpg) + +**Android, iOS, OS X, Chrome OS, 和 GNOME Shell 都有应用橱窗, 借助一个极好的第三方应用,Unity 也可以实现类似功能。** + +“Unity Folders” 允许你组织位于 Unity 启动器中的应用到实用的橱窗中,--- 如 游戏,办公,社交等。不必打开 Dash,你就可以快速启动你喜爱的应用,这非常适合你的工作流。 + +每一个 ‘橱窗’其实一个打开 ,但总体效果看上去就像是一个 OS X 的风格栈 或 Android 的切换框(注:这里的翻译我拿不准)。 + +橱窗的图标可以自定义或根据橱窗内的应用来自动生成。已经存在的橱窗可以被编辑,重新组织,重命名以及如下的更多选择: + +- 根据你的喜好创建任意多的橱窗 +- 选择自定义或自动生成橱窗图标 +- 可选择 3 种橱窗样式 +- 为添加到橱窗中的应用设定自定义图标 +- 编辑现有橱窗 + +[Unity Folders 的网址](http://unity-folders.exceptionfound.com/) +(注:根据原文来看,这里应该有链接,转换为 md 文档时没有加上链接) + +### 咖啡因 ### + +对于我们中的许多人来说,咖啡因是主食,它并不只存在于饮料之中。咖啡因提供了一个快速,温和的方式来阻止你的屏保或锁屏起作用。有用的程度将取决于你的环境(即你系统的怪癖) (注:这一句我没有完全理解原文的意思),并且尽管它不像以前那样对用户友好,它仍然值得你[尝试一下][3]。 + +### 系统状态指示器 (System Monitor Indicator) ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/multiload-indicator-in-ubuntu.jpg) + +假如你是一个状态迷,即一个喜欢密切关注程序,进程和硬件的状态的人, Linux 很容易满足你的需求。从 Conky 的配置到终端命令,并不缺少监视你的 CPU 使用情况、网络流量或 GPU 温度的方法。 + +但至今为止,我最喜爱的应用是 系统**监视指示器**,---也被叫做多负载指示器---它可从 Ubuntu 软件中心获得。它也有着大量的配置选项。 + +- [点击这个链接,在 Ubuntu 中 下载 ‘System Load Indicator’][4] + +### 针对 Linux 笔记本电脑的省电工具 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2012/08/front.jpg) + +**TLP** + +当提到便携式设备上的电池使用效率时,Linux 发行版本并没有最好的声誉。 + +如果你自己的 Linux 笔记本可以勉强在再次充电之前,让你从沙发到厨房,那么这里有几个你可以试试的工具。 + +TLP 是最受欢迎的确保延长 Linux 笔记本的电池寿命的自动化后台工具之一,它是通过调整系统进程和硬件的设置及行为来达到此目的的,例如 启动 Wi-Fi 省电模式, PCI 总线设备的实时电量管理和处理器的频率缩放调整。 + +在 Ubuntu 14.04 LTS 以及后续发行版本中可以使用 TLP 专用的 PPA 来安装它。且它只带了‘包罗万象’的设置来使你踏上配置它的旅程。 在我们之中的高级用户可以潜心研究并根据你自己的硬件来调整设置,一个 [关于 TLP 的完整指导 wiki][6] 使得设置更加容易。 + +**Laptop Mode Tools** + +假如 TLP 听起来有一点复杂 --这也并没有什么可羞耻的--这里有一个更简单的替代品: **Laptop Mode Tools**。 这个软件包可从 Ubuntu 软件中心直接安装,且本身设置好了一系列合理的默认设置(Wi-Fi,蓝牙等等)。 + +Laptop Mode Tools 不能和 TLP 同时被安装在电脑中。 + +- [Ubuntu 软件中心里的 Laptop Mode Tools ][7] + +### Intel 显卡驱动安装工具 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2013/04/intelgraphicsdriverinstaller.png) + +对于那些运行 Intel 显卡硬件,并想使得这些硬件发挥出最佳性能的人来说,Intel 显卡安装工具是必须拥有的。 它使得 查找并安装最新的 Intel GPU 驱动变得不再是一件痛苦和大费周折的事 ---因为这无需 PPA 或任何的终端使用知识。 + +- [下载针对 Linux平台的 Intel 图形安装器 0.7 版本][8] + +### Hardware Stats ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/Screen-Shot-2014-02-10-at-21.05.37.png) + +假如你计划 升级你的 PC 或替换一个坏掉的零部件,你需要知道一些特定的硬件信息,例如 RAM 类型,CPU插座类型 或 查看那个PCI 槽是可用的等信息。 + +**I-Nex**可以使得 发掘出以上的信息以及其他的系统具体状态变得更加容易。使用它来查找你的主板型号、S.M.A.R.T.(注:为 Self-Monitoring, Analysis and Reporting Technology 的缩写,经常写为 SMART ) 状态,以及你想得出的很多东西! + +- [可从 Launchpad 了解到更多关于 I-Nex 的信息][9] + +### 磁盘空间可视化程序(Disk Space Visualizer) ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/disk-usage-visualizer-for-ubuntu.jpg) + +在这个硬盘以 1TB 计数的时代,我们或许不必同以前一样对硬盘空间的使用三思而后行。但对于那些使用小容量的 SSD,运行多个分区或在一个拥有固定虚拟磁盘大小的虚拟机上工作,总有感觉 释放一些额外空间是必要的 这种想法的时候。 + +GNOME Disks,在 Ubuntu 中被默认安装,使得查找占用最大磁盘空间的罪魁祸首变得容易。对于定位隐藏的日志、缓存和视频文件,它是非常完美的工具。 + +### BleachBit (Cruft Cleaner) ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/bleachbit.jpg) + +Windows 用户可能对像 CCleaner 之类的应用很熟悉,它可以扫描并清理垃圾文件、空白文件夹、臃肿的缓存以及陈旧的软件包。在 Ubuntu 上,一个相似的快速且毫不费力的一键式清理方法可以试试 **BleachBit** 。 + +它是一个强大的工具,所以一定要注意你正在清理什么。不要漫无目的地确认每个选项框;不是所有的东西它都可以清理。所以请合理地使用它,当你对某个选项有疑问时,就跳过它。 + +- [Install BleachBit from Ubuntu Software Center][10] + +你已经有了自己最喜欢的系统实用工具了吗?可以在下面的评论中让其他人知晓它。 +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2014/11/useful-tools-for-ubuntu-do-you-use-them + +作者:[Joey-Elijah Sneddon][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:http://www.florian-diesch.de/software/indicator-privacy/index.html +[2]:http://www.florian-diesch.de/software/indicator-privacy/dist/indicator-privacy_0.04-1_all.deb +[3]:http://www.omgubuntu.co.uk/2014/05/stop-ubuntu-sleeping-caffeine +[4]:apt://indicator-mulitload +[5]:https://launchpad.net/~linrunner/+archive/ubuntu/tlp/+packages +[6]:http://linrunner.de/en/tlp/docs/tlp-configuration.html +[7]:https://apps.ubuntu.com/cat/applications/laptop-mode-tools/ +[8]:https://01.org/linuxgraphics/downloads/2014/intelr-graphics-installer-linux-1.0.7 +[9]:https://launchpad.net/i-nex +[10]:https://apps.ubuntu.com/cat/applications/bleachbit/ From ae052da79bea48274ad1fbe4737ac4b4a6650318 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sun, 1 Mar 2015 01:04:16 +0800 Subject: [PATCH 418/725] Update 20150104 How to set up a cross-platform backup server on Linux with BackupPC.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译。 --- ...p a cross-platform backup server on Linux with BackupPC.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md index 48df08fa3b..41336f53f6 100644 --- a/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md +++ b/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md @@ -1,3 +1,5 @@ +FSSlc translating + How to set up a cross-platform backup server on Linux with BackupPC ================================================================================ Just in case you haven't been able to tell from my earlier posts on [backupninja][1] and [backup-manager][2], I am a big backup fan. When it comes to backup, I'd rather have too much than not enough, because if the need arises, you will be grateful that you took the time and effort to generate extra copies of your important data. @@ -131,4 +133,4 @@ via: http://xmodulo.com/backuppc-cross-platform-backup-server-linux.html [4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html [5]:http://ask.xmodulo.com/enable-nux-dextop-repository-centos-rhel.html [6]:http://xmodulo.com/recommend/linuxguide -[7]:http://xmodulo.com/how-to-enable-ssh-login-without.html \ No newline at end of file +[7]:http://xmodulo.com/how-to-enable-ssh-login-without.html From 26f1f6cba931d73c1d4944da5e14540516920107 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 28 Feb 2015 15:27:17 -0300 Subject: [PATCH 419/725] repair the reposit and translate --- ...e a syslog server with rsyslog on Linux.md | 166 ++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md diff --git a/translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md b/translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md new file mode 100644 index 0000000000..21d6e8993b --- /dev/null +++ b/translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md @@ -0,0 +1,166 @@ +如何在linux上通过rsyslog来配置一个syslog服务器 +======================================================================== +syslog服务器表示一个用来监控一个网络中的端点--所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)--的中央日志。 通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查看和获取重要的日志消息。 + +**rsyslog** 被作为标准的syslog守护进程预装在了大多数的Linux发行版中。在客户端/服务器架构的配置下,**rsyslog**同时扮演了两种角色:1.作为一个syslog服务器,**rsyslog**可以收集来自其他设施的日志信息;2.作为一个syslog客户端,**rsyslog**可以将其内部的日志信息传输到远程的syslog服务器。 + + +在此,我们演示了在linux上如何通过**rsyslog**来配置一个中心化syslog服务器。 在进入详解之前,先温习一下syslog标准。 + +### syslog标准基础### + +当通过syslog机制来收集日志时,有3个必须要考虑到的重要事情: + +- **设施层级**: 监听何种类型的进程 +- **严重性 (优先) 级别**: 收集何种类型的日志消息 +- **目标**: 发送或记录日志消息到何处 + +现在我们更加深入地了解一下配置是如何定义的。 + + +设施层级定义了一种用来对内部系统进程进行分类的方法,linux中的一些常见的设施包括: + +- **auth**: 身份验证相关的消息(登录时) +- **cron**: 进程或应用调度相关的消息 +- **daemon**: 守护进程相关的消息(内部服务器) +- **kernel**: 内核相关的消息 +- **mail**: 内部邮件服务器相关的消息 +- **syslog**: syslog 守护进程本身相关的消息 +- **lpr**: 打印服务相关的消息 +- **local0 - local7**: 用户自定义的消息 (local7 通常被Cisco 和 Windows 服务器 使用) + +严重性(优先)级别是通过标准的缩写和赋予的数字来进行定义和标准化的,其中的数字7具有最高的级别,这些级别包含了: + +- emerg: Emergency(紧急)- 0 +- alert: Alerts (报警)- 1 +- crit: Critical (关键)- 2 +- err: Errors (错误)- 3 +- warn: Warnings (警告)- 4 +- notice: Notification (通知)- 5 +- info: Information (消息)- 6 +- debug: Debugging (调试)- 7 + +最后,目标语句迫使一个syslog客户端来执行以下3个任务中的一个:1.保存日志消息到一个本地文件;2. 通过TCP/UDP将消息路由到远程的syslog服务器中 +;3.将其发送到一个标准输出中,例如控制台。 + +在rsyslog, syslog配置是基于以下模式进行结构化的。 + + [facility-level].[severity-level] [destination] + +### Configure Rsyslog on Linux ### +### 在Linux中配置Rsyslog### + +在我们理解syslog之后,现在是时候来通过rsyslog来将一个Linux服务器配置为一个中心syslog服务器了,另外我们也将看到如何将基于Windows的系统配置为一个syslog客户端来发送内部日志到该syslog服务器中。 + +### 第1步: 初始化系统需求 ### + +为了将linux主机设置为一个中央日志服务器, 我们需要创建一个隔离的/var 分区,并分配足够大的磁盘空间或者创建一个特殊的LVM卷组。这样就会使得syslog服务器能够承担在日积月累收集日志所带来的潜在增长。 + + +### 第2步: 让rsyslog 后台进程生效 ### + +rsyslog守护进程来自于当前的linux发布版本的预装模块,但是默认并没有启动。为了能够让rsyslog守护进程能够接受外部的消息,需要编辑其配置文件/etc/rsyslog.conf. + +如果已经准备好打开文件进行编辑,查找到下面的两行所在的位置,通过删除其行首的#字符来取消其注释。 + + $ModLoad imudp + $UDPServerRun 514 + +这会使得rsysolog守护进程能够在UDP端口514上接受日志消息了---UDP是一种比TCP速度快,但是并不具有TCP一样的数据流程的可靠性。所以如果你需要使用可靠的传送机制,就可以通过取消以下行的注释。 + + $ModLoad imtcp + $InputTCPServerRun 514 + +需要注意的是,TCP和UDP可以被同时生效来监听TCP/UDP 连接。 + +### 第3步:创建日志接受模板### + +接下来的这步,需要我们来为远程消息创建模板,并告知rsyslog守护进程如何记录从其他客户端机器所接受到的消息。 + + +使用文本编辑器来打开 /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE块前追加以下的模板。 + + $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * + *.* ?RemoteLogs + & ~ + +在此对该模板进行简单解释,$template RemoteLogs(“RemoteLogs” 字符串可以为任何其他的指令名称)指令强制rsyslog后台进程将日志消息写道/var/log下的分开的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。其中第二行暗示了我们将RemoteLogs模板应用到所有接受到的日志上。 + + +符号"& ~"表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果该重定向规则没有使用,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。 + + +如果你想要的话,也可以使用下面的模式对特定的设备或严重性级别使用新的模板直接来记录日志消息。 + + + [facility-level].[severity-level] ?RemoteLogs + +例如: + +将所有内部的所有优先级别的用户验证消息指定为RemoteLogs模板: + + authpriv.* ?RemoteLogs + +将所有系统进程中除开mail,用户验证和cron消息之外的进程产生的消息级别的日志指定为RemoteLogs模板: + + + *.info,mail.none,authpriv.none,cron.none ?RemoteLogs + +如果我们想要将所有从远程客户端接受到的消息写入到一个以它们的IP地址命名的单个文件中,可以使用以下的模板。在此我们为该模板赋予了“IPTemplate”名称。 + + $template IpTemplate,"/var/log/%FROMHOST-IP%.log" + *.* ?IpTemplate + & ~ + +在我们生效rsyslog守护进程以及编辑其配置文件之后,需要重启该守护进程。 + +在 Debian,Ubuntu 或 CentOS/RHEL 6中: + + $ sudo service rsyslog restart + +在 Fedora 或 CentOS/RHEL 7中: + + $ sudo systemctl restart rsyslog + +我们可以通过netstat命令来验证rsyslog守护进程是否正常工作。 + + $ sudo netstat -tulpn | grep rsyslog + +在UDP监听端口下工作的rsyslog守护进程会有类似下面的输出。 + + udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd + udp6 0 0 :::514 :::* 551/rsyslogd + +如果rsyslog守护进程被设置在TCP连接端口,那么应该有类似下面所示的输出。 + + tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd + tcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd + +### 发送Windows日志到一个远程的rsyslog服务器### + +为了将一个Windows客户端的日志消息转发到我们的rsyslog服务器,需要一个Windows syslog 代理。当然,有许多的syslog代理可以在windows上运行,在此我们可以使用一个自由软件程序 [Datagram SyslogAgent][1]. + + + +在下载安装该syslog代理后,需要将其配置为作为服务运行。指定使用何种协议来发送数据,以及远程rsyslog服务器的IP地址和端口,最后指定应该传输的事件日志类型,如下所示。 + +![](https://farm8.staticflickr.com/7509/15305930594_27b7f4440a_o.jpg) + +在我们完成所有的这些配置之后,我们就可以启动该服务并且在中央rsyslog服务器中使用命令行工具tailf来查看日志文件了。 + +### 总结### + +通过创建一个可以收集本地和远程主机的中央rsyslog服务器,我们可以更好地了解在这些系统内部究竟发生着什么,而且可以更加容易地调试他们的问题,是否在他们之间有任何缓慢或崩溃存在。 + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/configure-syslog-server-linux.html + +作者:[Caezsar M][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/caezsar +[1]:http://www.syslogserver.com/download.html From 8164797ef82dbb74ef7ae14cce954d944663588e Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 28 Feb 2015 15:27:40 -0300 Subject: [PATCH 420/725] repair the reposit and translate --- ...e a syslog server with rsyslog on Linux.md | 154 ------------------ 1 file changed, 154 deletions(-) delete mode 100644 sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md diff --git a/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md b/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md deleted file mode 100644 index 276e5a05fa..0000000000 --- a/sources/tech/20141205 How to configure a syslog server with rsyslog on Linux.md +++ /dev/null @@ -1,154 +0,0 @@ -How to configure a syslog server with rsyslog on Linux -================================================================================ -A syslog server represents a central log monitoring point on a network, to which all kinds of devices including Linux or Windows servers, routers, switches or any other hosts can send their logs over network. By setting up a syslog server, you can filter and consolidate logs from different hosts and devices into a single location, so that you can view and archive important log messages more easily. - -On most Linux distributions, **rsyslog** is the standard syslog daemon that comes pre-installed. Configured in a client/server architecture, **rsyslog** can play both roles; as a syslog server **rsyslog** can gather logs from other devices, and as a syslog client, **rsyslog** can transmit its internal logs to a remote syslog server. - -In this tutorial, we cover how to configure a centralized syslog server using **rsyslog** on Linux. Before we go into the details, it is instructive to go over syslog standard first. - -### Basic of Syslog Standard ### - -When logs are collected with syslog mechanism, three important things must be taken into consideration: - -- **Facility level**: what type of processes to monitor -- **Severity (priority) level**: what type of log messages to collect -- **Destination**: where to send or record log messages - -Let's take a look at how the configuration is defined in more detail. - -The facility levels define a way to categorize internal system processes. Some of the common standard facilities in Linux are: - -- **auth**: messages related to authentication (login) -- **cron**: messages related to scheduled processes or applications -- **daemon**: messages related to daemons (internal servers) -- **kernel**: messages related to the kernel -- **mail**: messages related to internal mail servers -- **syslog**: messages related to the syslog daemon itself -- **lpr**: messages related to print servers -- **local0 - local7**: messages defined by user (local7 is usually used by Cisco and Windows servers) - -The severity (priority) levels are standardized, and defined by using standard abbreviation and an assigned number with number 7 being the highest level of all. These levels are: - -- emerg: Emergency - 0 -- alert: Alerts - 1 -- crit: Critical - 2 -- err: Errors - 3 -- warn: Warnings - 4 -- notice: Notification - 5 -- info: Information - 6 -- debug: Debugging - 7 - -Finally, the destination statement enforces a syslog client to perform one of three following tasks: (1) save log messages on a local file, (2) route them to a remote syslog server over TCP/UDP, or (3) send them to stdout such as a console. - -In rsyslog, syslog configuration is structured based on the following schema. - - [facility-level].[severity-level] [destination] - -### Configure Rsyslog on Linux ### - -Now that we understand syslog, it's time to configure a Linux server as a central syslog server using rsyslog. We will also see how to configure a Windows based system as a syslog client to send internal logs to the syslog server. - -#### Step One: Initial System Requirements #### - -To set up a Linux host as a central log server, we need to create a separate /var partition, and allocate a large enough disk size or create a LVM special volume group. That way, the syslog server will be able to sustain the exponential growth of collected logs over time. - -#### Step Two: Enable Rsyslog Daemon #### - -rsyslog daemon comes pre-installed on modern Linux distributions, but is not enabled by default. To enable rsyslog daemon to receive external messages, edit its configuration file located in /etc/rsyslog.conf. - -Once the file is opened for editing, search and uncomment the below two lines by removing the # sign from the beginning of lines. - - $ModLoad imudp - $UDPServerRun 514 - -This will enable rsyslog daemon to receive log messages on UDP port 514. UDP is way faster than TCP, but does not provide reliability on data flow the same way as TCP does. If you need to reliable delivery, you can enable TCP by uncommenting the following lines. - - $ModLoad imtcp - $InputTCPServerRun 514 - -Note that both TCP and UDP can be set on the server simultaneously to listen on TCP/UDP connections. - -#### Step Three: Create a Template for Log Receipt #### - -In the next step we need to create a template for remote messages, and tell rsyslog daemon how to record messages received from other client machines. - -Open /etc/rsyslog.conf with a text editor, and append the following template before the GLOBAL DIRECTIVES block: - - $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * - *.* ?RemoteLogs - & ~ - -This template needs a little explanation. The $template RemoteLogs directive ("RemoteLogs" string can be changed to any other descriptive name) forces rsyslog daemon to write log messages to separate local log files in /var/log/, where log file names are defined based on the hostname of the remote sending machine as well as the remote application that generated the logs. The second line ("*.* ?RemoteLogs") implies that we apply RemoteLogs template to all received logs. - -The "& ~" sign represents a redirect rule, and is used to tell rsyslog daemon to stop processing log messages further, and not write them locally. If this redirection is not used, all the remote messages would be also written on local log files besides the log files described above, which means they would practically be written twice. Another consequence of using this rule is that the syslog server's own log messages would only be written to dedicated files named after machine's hostname. - -If you want, you can direct log messages with a specific facility or severity level to this new template using the following schema. - - [facility-level].[severity-level] ?RemoteLogs - -For example: - -Direct all internal authentication messages of all priority levels to RemoteLogs template: - - authpriv.* ?RemoteLogs - -Direct informational messages generated by all system processes, except mail, authentication and cron messages to RemoteLogs template: - - *.info,mail.none,authpriv.none,cron.none ?RemoteLogs - -If we want all received messages from remote clients written to a single file named after their IP address, you can use the following template. We assign a new name "IpTemplate" to this template. - - $template IpTemplate,"/var/log/%FROMHOST-IP%.log" - *.* ?IpTemplate - & ~ - -After we have enabled rsyslog daemon and edited its configuration file, we need to restart the daemon. - -On Debian, Ubuntu or CentOS/RHEL 6: - - $ sudo service rsyslog restart - -On Fedora or CentOS/RHEL 7: - - $ sudo systemctl restart rsyslog - -We can verify that rsyslog daemon is functional by using netstat command. - - $ sudo netstat -tulpn | grep rsyslog - -The output should look like the following in case rsyslog daemon listens on UDP port. - - udp 0 0 0.0.0.0:514 0.0.0.0:* 551/rsyslogd - udp6 0 0 :::514 :::* 551/rsyslogd - -If rsyslog daemon is set up to listen on TCP connections, the output should look like this. - - tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1891/rsyslogd - tcp6 0 0 :::514 :::* LISTEN 1891/rsyslogd - -#### Send Windows Logs to a Remote Rsyslog Server #### - -To forward a Windows based client's log messages to our rsyslog server, we need a Windows syslog agent. While there are a multitude of syslog agents that can run on Windows, we can use [Datagram SyslogAgent][1], which is a freeware program. - -After downloading and installing the syslog agent, we need to configure it to run as a service. Specify the protocol though which it will send data, the IP address and port of a remote rsyslog server, and what type of event logs should be transmitted as follows. - -![](https://farm8.staticflickr.com/7509/15305930594_27b7f4440a_o.jpg) - -After we have set up all the configurations, we can start the service and watch the log files on the central rsyslog server using tailf command line utility. - -### Conclusion ### - -By creating a central rsyslog server that can collect log files of local or remote hosts, we can get a better idea on what is going on internally in their systems, and can debug their problems more easily should any of them become unresponsive or crash. - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/configure-syslog-server-linux.html - -作者:[Caezsar M][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/caezsar -[1]:http://www.syslogserver.com/download.html \ No newline at end of file From 1455f404d0544fc8f07b7f9580ac181b760276f6 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 1 Mar 2015 13:24:39 +0800 Subject: [PATCH 421/725] translating --- ...th Answers--How to install a USB webcam in Raspberry Pi.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md b/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md index 443c9c0ad8..1085abddc4 100644 --- a/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md +++ b/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md @@ -1,3 +1,5 @@ +Translating----geekpi + Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi ================================================================================ > **Question**: Can I use a standard USB-based webcam on Raspberry Pi? How can I check if my USB webcam is compatible with Raspberry Pi, and how can I install it on Raspberry Pi? @@ -60,4 +62,4 @@ via: http://ask.xmodulo.com/install-usb-webcam-raspberry-pi.html [1]:http://xmodulo.com/install-raspberry-pi-camera-board.html [2]:http://xmodulo.com/go/usb_webcam [3]:http://elinux.org/RPi_USB_Webcams -[4]:http://xmodulo.com/go/usb_powerhub \ No newline at end of file +[4]:http://xmodulo.com/go/usb_powerhub From f57d993216e478d424c82e2b911da7bb7db8c13f Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 1 Mar 2015 13:56:29 +0800 Subject: [PATCH 422/725] translated --- ...to install a USB webcam in Raspberry Pi.md | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md b/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md index 1085abddc4..805a0aaca4 100644 --- a/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md +++ b/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md @@ -1,50 +1,48 @@ -Translating----geekpi - -Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi +Linux有问必答 -- 如何在树莓派上安装USB网络摄像头 ================================================================================ -> **Question**: Can I use a standard USB-based webcam on Raspberry Pi? How can I check if my USB webcam is compatible with Raspberry Pi, and how can I install it on Raspberry Pi? +> **Question**: 我可以在树莓派上使用标准的USB网络摄像头么?我该如何检查USB网络摄像头与树莓派是否兼容?另外我该如何在树莓派上安装它? -If you want to take pictures or record videos using Raspberry Pi board, you can install [Raspberry Pi camera board][1]. If you do not want to shell out money just for the camera board module, there is yet another way, which is to utilize a commonly found [USB web camera][2]. You may already have one for your PC. +如果你想在树莓上拍照或者录影,你可以安装[树莓派的摄像头板][1]。如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的[USB 摄像头][2]。你可能已经在PC上安装了。 -In this tutorial, we show how to set up a USB web camera on Raspberry Pi board. We assume that you are using Raspbian operation system. +本教程中,我会展示如何在树莓派上设置摄像头。我们假设你使用的系统是Raspbian。 -Before we start, it is better to check if your USB web camera is [one of those][3] which are known to be compatible with Raspberry Pi. If your USB webcam is not found in the compatibility list, don't be discouraged, as there is still a chance that your USB web camera may be detected by Raspberry Pi. +在此之前,你最好检查一下你的摄像头是否在[这些][3]已知与树莓派兼容的摄像头之中。如果你的摄像头不在这个兼容列表中,不要丧气,仍然有可能你的摄像头被树莓派检测到。 -### Check if a USB Webcam is Compatible with Raspberry Pi ### +### 检查USB摄像头是否雨树莓派兼容 ### -To check whether your USB web camera is detected on Raspberry Pi or not, plug it into the USB port of your Raspberry Pi, and type lsusb command in the terminal. +要检查你的摄像头是否可以被树莓派检测到,将它插入到树莓派的USB口中,然后输入下面的命令。 $ lsusb -If the output of the command does not list your webcam, there is a possibility that this is because your Raspberry Pi doesn't supply enough power needed for your USB web camera. In this case, you can try using a separate power line for the USB web camera, such as [USB power hub][4], and then repeat the lsusb command. If the USB webcam is still not recognized, we can only suggest you buy another USB web camera which is supported by Raspberry Pi. +如果输出中没有你的摄像头,那么有可能你的树莓派的电源无法供应足够的电力给你的摄像头。这时你可以给你的摄像头用独立的电源线,比如[有源USB hub][4],并重新输入lsusb命令。如果摄像头还是不能被识别,我们只有建议你购买其他树莓派支持的摄像头了。 ![](https://farm8.staticflickr.com/7408/16576646025_898f17f36e_o.png) -In the above screenshot, the USB web camera is detected as "1e4e:0102", but it doesn't show the maker or the name of the web camera. When we try it with Fedora 20 in a laptop, it is successfully detected as "1e4e:0102 Cubeternet GL-UPC822 UVC WebCam." +在上面的截屏中,USB摄像头被识别为“1e4e:0102”,但是没有显示摄像头的制造商。当你在笔记本的Fedora 20中使用它时,它可以成功的检测到“1e4e:0102 Cubeternet GL-UPC822 UVC WebCam”。 -Another way to check if your USB web camera is supported by Raspberry Pi is by checking the /dev directory. If there is /dev/video0, this implies that your USB webcam is recognized by Raspberry Pi. +另外一个可以检查摄像头是否被树莓派支持的方法是检查/dev目录。如果有/dev/video0,那么这暗示树莓派支持你的摄像头。 -### Take a Picture with USB Webcam ### +### 用USB Webcam拍照片 ### -After your USB webcam is successfully hooked up with Raspberry Pi, the next thing to do is to take some pictures to verify its functionality. +当USB摄像头成功挂载到树莓派上之后,下一步就是拍一些照片来验证它的功能了。 -For this, you can install fswebcam, which is a small webcam application. You can install fswebcam directly from the Raspbian repository as follows. +要想拍摄照片,你要安装fswebcam,这是一款小型摄像头程序。你可以直接通过Raspbian的仓库来安装fswebcam。 $ sudo apt-get install fswebcam -Once fswebcam is installed, run the following command in a terminal to capture a picture from the USB webcam: +fswebcam安装完成后,在终端中运行下面的命令来抓去一张来自摄像头的照片: $ fswebcam --no-banner -r 640x480 image.jpg -This command will capture a picture with 640x480 resolution, and save it as image.jpg. It will not put any banner in the bottom part of the picture. +这条命令可以抓取一张640x480分辨率的照片,并且用jpg格式保存。它不会在照片的地步留下任何标志. ![](https://farm8.staticflickr.com/7417/16576645965_302046d230_o.png) -Here is the result from the fswebcam command with 640x480 resolution. +这就是fswebcam下640x480分辨率的结果。 ![](https://farm8.staticflickr.com/7345/16575497512_8d77f1b34c_o.jpg) -The next example picture is captured without defining the resolution. The picture color is blueish, and the default resolution is only 358x288. +下面的例子是没有定义分辨率的照片。图片是偏蓝的,并且默认的分辨率是358x288。 ![](https://farm8.staticflickr.com/7390/15954067124_760fbcdd9c_o.jpg) @@ -53,7 +51,7 @@ The next example picture is captured without defining the resolution. The pictur via: http://ask.xmodulo.com/install-usb-webcam-raspberry-pi.html 作者:[Kristophorus Hadiono][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From bd32f16d55979cf86f3b7ca766480df1c1923520 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 1 Mar 2015 13:57:38 +0800 Subject: [PATCH 423/725] translated --- ...s with Answers--How to install a USB webcam in Raspberry Pi.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md (100%) diff --git a/sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md b/translated/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md similarity index 100% rename from sources/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md rename to translated/tech/20150225 Linux FAQs with Answers--How to install a USB webcam in Raspberry Pi.md From e933a22f4877e9a7471af56fdfe3608605014766 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sun, 1 Mar 2015 22:47:52 +0800 Subject: [PATCH 424/725] [Translated 20150104 How to set up a cross-platform backup server on Linux with BackupPC.md] --- ...rm backup server on Linux with BackupPC.md | 136 ------------------ ...rm backup server on Linux with BackupPC.md | 133 +++++++++++++++++ 2 files changed, 133 insertions(+), 136 deletions(-) delete mode 100644 sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md create mode 100644 translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md diff --git a/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md deleted file mode 100644 index 41336f53f6..0000000000 --- a/sources/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md +++ /dev/null @@ -1,136 +0,0 @@ -FSSlc translating - -How to set up a cross-platform backup server on Linux with BackupPC -================================================================================ -Just in case you haven't been able to tell from my earlier posts on [backupninja][1] and [backup-manager][2], I am a big backup fan. When it comes to backup, I'd rather have too much than not enough, because if the need arises, you will be grateful that you took the time and effort to generate extra copies of your important data. - -In this post, I will introduce you to [BackupPC][3], a cross-platform backup server software which can perform pull backup of Linux, Windows and MacOS client hosts over network. BackupPC adds a number of features that make managing backups an almost fun thing to do. - -### Features of BackupPC ### - -BackupPC comes with a robust web interface that allows you to collect and manage backups of other remote client hosts in a centralized fashion. Using the web interface, you can examine logs and configuration files, start/cancel/schedule backups of other remote hosts, and visualize current status of backup tasks. You can also browse through archived files and restore individual files or entire jobs from backup archives very easily. To restore individual single files, you can download them from any previous backup directly from the web interface. As if this weren't enough, no special client-side software is needed for client hosts. On Windows clients, the native SMB protocol is used, whereas on *nix clients, you will use `rsync` or tar over SSH, RSH or NFS. - -### Installing BackupPC ### - -On Debian, Ubuntu and their derivatives, run the following command. - - # aptitude install backuppc - -On Fedora, use `yum` command. Note the case sensitive package name. - -On CentOS/RHEL 6, first enable [EPEL repository][4]. On CentOS/RHEL 7, enable [Nux Dextop][5] repository instead. Then go ahead with `yum` command: - - # yum install BackupPC - -As usual, both package management systems will take care of dependency resolution automatically. In addition, as part of the installation process, you may be asked to configure, or reconfigure the web server that will be used for the graphical user interface. The following screenshot is from a Debian system: - -![](https://farm8.staticflickr.com/7573/16163781711_6218b620ef_c.jpg) - -Select your choice by pressing the space bar, and then move to Ok with the tab key and hit ENTER. - -You will then be presented with the following screen informing you that an administrative user account 'backuppc', along with its corresponding password (which can be changed later if desired), has been created to manage BackupPC. Note that both a HTTP user account and a regular Linux account of the same name 'backuppc' will be created with an identical password. The former is needed to access BackupPC's protected web interface, while the latter is needed to perform backup using rsync over SSH. - -![](https://farm8.staticflickr.com/7579/15979622809_25e734658d_c.jpg) - -You can change the default password for the HTTP user 'backuppc' with the following command: - - # htpasswd /path/to/hash/file backuppc - -As for a regular 'backuppc' [Linux][6] user account, use passwd command to change its default password. - - # passwd backuppc - -Note that the installation process creates the web and the program's configuration files automatically. - -### Launching BackupPC and Configuring Backups ### - -To start, open a browser window and point to http:///backuppc/. When prompted, enter the default HTTP user credentials that were supplied to you earlier. If the authentication succeeds, you will be taken to the main page of the web interface. - -![](https://farm9.staticflickr.com/8601/15543330314_f6fdaa235e_z.jpg) - -Most likely the first thing that you will want to do is add a new client host to back up. Go to "Edit Hosts" in the Task pane. We will add two client hosts: - -- Host #1: CentOS 7 [IP 192.168.0.17] -- Host #2: Windows 7 [IP 192.168.0.103] - -We will back up the CentOS host using rsync over SSH and the Windows host using SMB. Prior to performing the backup, we need to set up [key-based authentication][7] to our CentOS host and a shared folder in our Windows machine. - -Here are the instructions for setting up key-based authentication for a remote CentOS host. We create the 'backuppc' user's RSA key pair, and transfer its public key to the root account of the CentOS host. - - # usermod -s /bin/bash backuppc - # su - backuppc - # ssh-keygen -t rsa - # ssh-copy-id root@192.168.0.17 - -When prompted, type yes and enter root's password for 192.168.0.17. - -![](https://farm8.staticflickr.com/7496/16164929932_8fc817125d_b.jpg) - -You will need root access for a remote CentOS host to grant write access to all its file system in case of restoring a backup of files or directories owned by root. - -Once the CentOS and Windows hosts are ready, add them to BackupPC using the web interface: - -![](https://farm9.staticflickr.com/8586/15979622709_76c2dcf68c_z.jpg) - -The next step consists of modifying each host's backup settings: - -![](https://farm8.staticflickr.com/7461/16163781611_765c147f9f_z.jpg) - -The following image shows the configuration for the backup of the Windows machine: - -![](https://farm8.staticflickr.com/7480/16139884676_bddfafed75_z.jpg) - -And the following screenshot shows the settings for the backup of the CentOS box: - -![](https://farm8.staticflickr.com/7557/16139884666_34ff8fd858_z.jpg) - -### Starting a Backup ### - -To start each backup, go to each host's settings, and then click "Start Full Backup": - -![](https://farm8.staticflickr.com/7536/15978247428_458c023f4c.jpg) - -At any time, you can view the status of the process by clicking on the host's home as shown in the image above. If it fails for some reason, a link to a page with the error message(s) will appear in the host menu as well. When a backup completes successfully, a directory with the host's name or IP address is created under /var/lib/backuppc/pc in the server: - -![](https://farm8.staticflickr.com/7549/16165680115_196ee42a49_z.jpg) - -Feel free to browse those directories for the files from the command line, but there is an easier way to look for those files and restore them. - -### Restoring Backup ### - -To view the files that have been saved, go to "Browse backups" under each host's main menu. You can visualize the directories and files at a glance, and select those that you want to restore. Alternatively, you can click on files to open them with the default program, or right click and choose Save link as to download it to the machine where you're working at the time: - -![](https://farm8.staticflickr.com/7506/16165680105_bd5883e0da_c.jpg) - -If you want, you can download a zip or tar file containing the backup's contents: - -![](https://farm8.staticflickr.com/7507/15978247398_18e81667cd_z.jpg) - -or just restore the file(s): - -![](https://farm8.staticflickr.com/7545/15545911003_2aca8a36fc_z.jpg) - -### Conclusion ### - -There is a saying that goes, "the simpler, the better", and that is just what BackupPC has to offer. In BackupPC, you will not only find a backup tool but also a very versatile interface to manage your backups of several operating systems without needing any client-side application. I believe that's more than reason enough for you to give it at least a try. - -Feel free to leave your comments and questions, if you have any, using the form below. I am always happy to hear what readers have to say! - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/backuppc-cross-platform-backup-server-linux.html - -作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/gabriel -[1]:http://xmodulo.com/backup-debian-system-backupninja.html -[2]:http://xmodulo.com/linux-backup-manager.html -[3]:http://backuppc.sourceforge.net/ -[4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[5]:http://ask.xmodulo.com/enable-nux-dextop-repository-centos-rhel.html -[6]:http://xmodulo.com/recommend/linuxguide -[7]:http://xmodulo.com/how-to-enable-ssh-login-without.html diff --git a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md new file mode 100644 index 0000000000..64310419c3 --- /dev/null +++ b/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md @@ -0,0 +1,133 @@ +如何在 Linux 上使用 BackupPC 来设置一个跨平台的备份服务器 +================================================================================ +为了防止你不能分辨这篇教程和我先前关于[backupninja][1] 和 [backup-manager][2] 的帖子,=== 我是一个积极的备份迷。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你花费了时间和精力来为你的重要数据生成额外的拷贝。 + +在这篇帖子中,我将向你介绍[BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Window 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 + +### BackupPC 的特点 ### + +BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收集和管理其他远程客户端主机上的备份。通过使用它的 Web 界面,你可以检查日志和配置文件、为其他远程主机启动/取消/安排备份任务以及可视化备份任务的当前状态。你也可以非常容易地浏览归档的文件以及从备份的归档中恢复个人文件或整个作业。为了恢复单一的个人文件,你可以直接通过 Web 界面来下载任何先前备份的文件。若如这还不够,针对客户端主机,没有特别的客户端软件需要安装。在 Windows 客户端上, 本机 SMB 协议将被使用,而对于 *nix 客户端,你将使用 `rsync` 或 通过 SSH, RSH 或 NFS 来使用 `tar` 。 + +### 安装 BackupPC ### + +在 Debian,Ubuntu 和它们的衍生版本上,运行下面的命令: + + # aptitude install backuppc + +在 Fedra, 使用 `yum` 命令。请注意软件包名字对大小写敏感。 + +在 CentOS/RHEL 6 上,首先要启用 [EPEL 软件仓库][4]。在 CentOS/RHEL 7 上,请替代启用 [Nux Dextop][5] 。然后接着使用 `yum` 命令: + + # yum install BackupPC + +同往常一样,这两种包管理系统都会自动地对依赖问题进行解决。另外,作为安装过程中的一部分,你可能会被要求去配置或重新配置用于图形用户界面的 Web 服务器。下面的截图来自于 Debian 系统: + +![](https://farm8.staticflickr.com/7573/16163781711_6218b620ef_c.jpg) + +通过空格键来确定你的选择,然后使用 tab 键移动到 Ok 选项并敲回车键。 + +接着类似于下面的截屏将会呈现在你眼前,通知你一个用来管理 BackupPC 的名为 ‘backuppc’的管理员用户以及相应的密码(这个密码可以在以后被更改,如果你希望的话)已经被创建。这里需要注意的是:同样名为 ‘backuppc’的一个 HTTP 账户和一个常规的 Linux 账户将会被创建,它们使用同一个密码。需要前者的目的是来访问受保护的 BackupPC 的 Web 界面,而后者则是为了通过 SSH 来使用 `rsync` 来执行备份任务。 + +![](https://farm8.staticflickr.com/7579/15979622809_25e734658d_c.jpg) + +你可以使用下面的命令来更改 HTTP 账户 ‘backuppc’ 的默认密码: + + # htpasswd /path/to/hash/file backuppc + +至于常规的 ‘backuppc’ [Linux][6]账户,可以使用 `passwd`命令来更改它的默认密码: + + # passwd backuppc + +需要提及的是:安装过程中会自动创建 Web 和程序的配置文件。 + +### 启动 BackupPC 并设置备份 ### + +首先,打开一个浏览器窗口并指向 http:///backuppc/ 。当弹出提示框时,输入先前向你提供的默认 HTTP 用户凭据(注:即用户名 backuppc 和相应的默认密码)。假如认证成功,你就会被带入到 Web 界面的主页: + +![](https://farm9.staticflickr.com/8601/15543330314_f6fdaa235e_z.jpg) + +你想做的第一件事最有可能是新增一个客户端主机来备份。进入任务窗格中的 “编辑主机”选项。我们将添加两个客户端主机: + +- Host #1: CentOS 7 [IP 192.168.0.17] +- Host #2: Windows 7 [IP 192.168.0.103] + +我们将通过 SSH 使用 `rsync`来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 [基于密码认证][7](注:这里我不知如何翻译,根据链接,感觉是无需密码来连接主机)以及在我们的 Windows 主机中设置一个共享目录。 + +下面是关于如何设置为一个远程 CentOS 主机设置 key-based authentication 的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并向 CentOS 主机上的 root 账户传递它的公共密钥。 + + # usermod -s /bin/bash backuppc + # su - backuppc + # ssh-keygen -t rsa + # ssh-copy-id root@192.168.0.17 + +当弹出提示框时,键入 yes 并为 192.168.0.17 键入 root 用户的密码: + +![](https://farm8.staticflickr.com/7496/16164929932_8fc817125d_b.jpg) + +你需要一个远程的 CentOS 主机的 root 权限来在该主机中的文件系统中发放写权限,以防恢复的备份文件或目录的所有者为 root 账户。 + +一旦 CentOS 和 Windows 主机都准备完毕,使用 Web 界面将它们添加到 BackupPC: + +![](https://farm9.staticflickr.com/8586/15979622709_76c2dcf68c_z.jpg) + +下一步的内容由更改每个主机的备份设置组成: + +![](https://farm8.staticflickr.com/7461/16163781611_765c147f9f_z.jpg) + +接下来的图片展示了 Windows 主机的备份设置: + +![](https://farm8.staticflickr.com/7480/16139884676_bddfafed75_z.jpg) + +而接着的截图展示了 CentOS 盒子的备份设置: + +![](https://farm8.staticflickr.com/7557/16139884666_34ff8fd858_z.jpg) + +### 开始一个备份任务 ### + +为了开始每个备份,到每个主机的设定选项,然后点击“开始全备份”: + +![](https://farm8.staticflickr.com/7536/15978247428_458c023f4c.jpg) + +在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页。当一个备份任务被成功地完成,一个名为主机名或 IP 地址的目录将会在服务器的 /var/lib/backuppc/pc 目录下被创建。 + +![](https://farm8.staticflickr.com/7549/16165680115_196ee42a49_z.jpg) + +我们也可以随意地在命令行中浏览这个目录中的文件,但存在一个更加简单的方式来查找和恢复这些文件。 + +### 恢复备份 ### + +为了浏览已经保存过的文件。进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你正工作的机器上: + +![](https://farm8.staticflickr.com/7506/16165680105_bd5883e0da_c.jpg) + +如若你想,你可以下载一个包含所有你想备份的内容的 zip 或 tar 文件: + +![](https://farm8.staticflickr.com/7507/15978247398_18e81667cd_z.jpg) + +或只是恢复文件: + +![](https://farm8.staticflickr.com/7545/15545911003_2aca8a36fc_z.jpg) + +### 总结 ### + +有句俗话说,"越简单,越好",而这正是 BackupPC 所提供。在 BackupPC 中,你将不仅找到了一个备份工具,而且还找到了一个无需任何客户端应用来在几个不同的操作系统中管理你的备份的方法。我相信这就有足够的理由让你去尝试一下。 + +欢迎使用下面的评论框来留下你的评论和问题,假如你有的话。我总是乐于听取读者想说的话! +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/backuppc-cross-platform-backup-server-linux.html + +作者:[Gabriel Cánepa][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:http://xmodulo.com/backup-debian-system-backupninja.html +[2]:http://xmodulo.com/linux-backup-manager.html +[3]:http://backuppc.sourceforge.net/ +[4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[5]:http://ask.xmodulo.com/enable-nux-dextop-repository-centos-rhel.html +[6]:http://xmodulo.com/recommend/linuxguide +[7]:http://xmodulo.com/how-to-enable-ssh-login-without.html From 139ae0df2ad8b09c553742baa68d898c4d83df8f Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sun, 1 Mar 2015 23:06:07 +0800 Subject: [PATCH 425/725] =?UTF-8?q?=E5=AF=B9=E8=AF=91=E6=96=87=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=B8=80=E4=BA=9B=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rm backup server on Linux with BackupPC.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md index 64310419c3..9dd434a809 100644 --- a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md +++ b/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md @@ -2,7 +2,7 @@ ================================================================================ 为了防止你不能分辨这篇教程和我先前关于[backupninja][1] 和 [backup-manager][2] 的帖子,=== 我是一个积极的备份迷。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你花费了时间和精力来为你的重要数据生成额外的拷贝。 -在这篇帖子中,我将向你介绍[BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Window 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 +在这篇帖子中,我将向你介绍 [BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 ### BackupPC 的特点 ### @@ -14,9 +14,9 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 # aptitude install backuppc -在 Fedra, 使用 `yum` 命令。请注意软件包名字对大小写敏感。 +在 Fedora上, 使用 `yum` 命令。请注意软件包名字对大小写敏感。 -在 CentOS/RHEL 6 上,首先要启用 [EPEL 软件仓库][4]。在 CentOS/RHEL 7 上,请替代启用 [Nux Dextop][5] 。然后接着使用 `yum` 命令: +在 CentOS/RHEL 6 上,首先要启用 [EPEL 软件仓库][4]。在 CentOS/RHEL 7 上,请替代启用 [Nux Dextop][5] 软件仓库。然后接着使用 `yum` 命令: # yum install BackupPC @@ -46,14 +46,14 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm9.staticflickr.com/8601/15543330314_f6fdaa235e_z.jpg) -你想做的第一件事最有可能是新增一个客户端主机来备份。进入任务窗格中的 “编辑主机”选项。我们将添加两个客户端主机: +你想做的第一件事最有可能是通过新增一个客户端主机来备份。进入任务窗格中的 “编辑主机”选项。我们将添加两个客户端主机: - Host #1: CentOS 7 [IP 192.168.0.17] - Host #2: Windows 7 [IP 192.168.0.103] 我们将通过 SSH 使用 `rsync`来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 [基于密码认证][7](注:这里我不知如何翻译,根据链接,感觉是无需密码来连接主机)以及在我们的 Windows 主机中设置一个共享目录。 -下面是关于如何设置为一个远程 CentOS 主机设置 key-based authentication 的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并向 CentOS 主机上的 root 账户传递它的公共密钥。 +下面是关于如何为一个远程 CentOS 主机设置 key-based authentication 的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并向 CentOS 主机上的 root 账户传递它的公共密钥。 # usermod -s /bin/bash backuppc # su - backuppc @@ -64,7 +64,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm8.staticflickr.com/7496/16164929932_8fc817125d_b.jpg) -你需要一个远程的 CentOS 主机的 root 权限来在该主机中的文件系统中发放写权限,以防恢复的备份文件或目录的所有者为 root 账户。 +你需要一个远程的 CentOS 主机的 root 权限来在该主机中的文件系统中发放写权限,以防要恢复的备份文件或目录的所有者为 root 账户。 一旦 CentOS 和 Windows 主机都准备完毕,使用 Web 界面将它们添加到 BackupPC: @@ -78,17 +78,17 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm8.staticflickr.com/7480/16139884676_bddfafed75_z.jpg) -而接着的截图展示了 CentOS 盒子的备份设置: +而接着的截图展示了 CentOS 主机的备份设置: ![](https://farm8.staticflickr.com/7557/16139884666_34ff8fd858_z.jpg) ### 开始一个备份任务 ### -为了开始每个备份,到每个主机的设定选项,然后点击“开始全备份”: +为了开始备份,到每个主机的设定选项,然后点击“开始全备份”: ![](https://farm8.staticflickr.com/7536/15978247428_458c023f4c.jpg) -在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页。当一个备份任务被成功地完成,一个名为主机名或 IP 地址的目录将会在服务器的 /var/lib/backuppc/pc 目录下被创建。 +在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页的链接。当一个备份任务被成功地完成,一个被命名为主机名或 IP 地址的目录将会在服务器的 /var/lib/backuppc/pc 目录下被创建。 ![](https://farm8.staticflickr.com/7549/16165680115_196ee42a49_z.jpg) @@ -96,7 +96,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ### 恢复备份 ### -为了浏览已经保存过的文件。进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你正工作的机器上: +为了浏览已经保存过的文件。进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你正在工作的机器上: ![](https://farm8.staticflickr.com/7506/16165680105_bd5883e0da_c.jpg) @@ -110,7 +110,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ### 总结 ### -有句俗话说,"越简单,越好",而这正是 BackupPC 所提供。在 BackupPC 中,你将不仅找到了一个备份工具,而且还找到了一个无需任何客户端应用来在几个不同的操作系统中管理你的备份的方法。我相信这就有足够的理由让你去尝试一下。 +有句俗话说,"越简单,越好",而这正是 BackupPC 所提供的东西。在 BackupPC 中,你将不仅找到了一个备份工具,而且还找到了一个无需任何客户端应用来在几个不同的操作系统中管理你的备份的方法。我相信这就有足够的理由让你去尝试一下。 欢迎使用下面的评论框来留下你的评论和问题,假如你有的话。我总是乐于听取读者想说的话! -------------------------------------------------------------------------------- From 59e874292600260e6c08f6a538332330eb3b6499 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sun, 1 Mar 2015 23:23:50 +0800 Subject: [PATCH 426/725] Update 20150209 How to back up a Debian system using backupninja.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- ...150209 How to back up a Debian system using backupninja.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150209 How to back up a Debian system using backupninja.md b/sources/tech/20150209 How to back up a Debian system using backupninja.md index edfc6150f6..97e43f57bf 100644 --- a/sources/tech/20150209 How to back up a Debian system using backupninja.md +++ b/sources/tech/20150209 How to back up a Debian system using backupninja.md @@ -1,3 +1,5 @@ +FSSlc translating + How to back up a Debian system using backupninja ================================================================================ Prudence or experience by disaster can teach every [sysadmin][1] the importance of taking frequent system backups. You can do so by writing good old shell scripts, or using one (or more) of the many backup tools available for the job. Thus the more tools you become acquainted with, the better informed decisions you will make when implementing a backup solution. @@ -108,4 +110,4 @@ via: http://xmodulo.com/backup-debian-system-backupninja.html [a]:http://xmodulo.com/author/gabriel [1]:http://xmodulo.com/recommend/sysadminbook -[2]:https://labs.riseup.net/code/projects/backupninja \ No newline at end of file +[2]:https://labs.riseup.net/code/projects/backupninja From fe9ae45cec479a26fdc7ba12495eacfefa758213 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sun, 1 Mar 2015 19:02:36 -0300 Subject: [PATCH 427/725] translating --- ... command examples to create or extract archives in Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md b/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md index 0a39b7f476..adef9acbf2 100644 --- a/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md +++ b/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md @@ -1,3 +1,4 @@ +theo-l translating 10 quick tar command examples to create/extract archives in Linux ================================================================================ ### Tar command on Linux ### @@ -184,4 +185,4 @@ via: http://www.binarytides.com/linux-tar-command/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:https://plus.google.com/117145272367995638274/posts \ No newline at end of file +[a]:https://plus.google.com/117145272367995638274/posts From 304716f11ac7dff3ca831add332d15abd418ea98 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sun, 1 Mar 2015 21:36:27 -0300 Subject: [PATCH 428/725] translated --- ... to create or extract archives in Linux.md | 188 ----------------- ... to create or extract archives in Linux.md | 191 ++++++++++++++++++ 2 files changed, 191 insertions(+), 188 deletions(-) delete mode 100644 sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md create mode 100644 translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md diff --git a/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md b/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md deleted file mode 100644 index adef9acbf2..0000000000 --- a/sources/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md +++ /dev/null @@ -1,188 +0,0 @@ -theo-l translating -10 quick tar command examples to create/extract archives in Linux -================================================================================ -### Tar command on Linux ### - -The tar (tape archive) command is a frequently used command on linux that allows you to store files into an archive. - -The commonly seen file extensions are .tar.gz and .tar.bz2 which is a tar archive further compressed using gzip or bzip algorithms respectively. - -In this tutorial we shall take a look at simple examples of using the tar command to do daily jobs of creating and extracting archives on linux desktops or servers. - -### Using the tar command ### - -The tar command is available by default on most linux systems and you do not need to install it separately. - -> With tar there are 2 compression formats, gzip and bzip. The "z" option specifies gzip and "j" option specifies bzip. It is also possible to create uncompressed archives. - -#### 1. Extract a tar.gz archive #### - -Well, the more common use is to extract tar archives. The following command shall extract the files out a tar.gz archive - - $ tar -xvzf tarfile.tar.gz - -Here is a quick explanation of the parameters used - - -> x - Extract files -> -> v - verbose, print the file names as they are extracted one by one -> -> z - The file is a "gzipped" file -> -> f - Use the following tar archive for the operation - -Those are some of the important options to memorise - -**Extract tar.bz2/bzip archives** - -Files with extension bz2 are compressed with the bzip algorithm and tar command can deal with them as well. Use the j option instead of the z option. - - $ tar -xvjf archivefile.tar.bz2 - -#### 2. Extract files to a specific directory or path #### - -To extract out the files to a specific directory, specify the path using the "-C" option. Note that its a capital C. - - $ tar -xvzf abc.tar.gz -C /opt/folder/ - -However first make sure that the destination directory exists, since tar is not going to create the directory for you and will fail if it does not exist. - -#### 3. Extract a single file #### - -To extract a single file out of an archive just add the file name after the command like this - - $ tar -xz -f abc.tar.gz "./new/abc.txt" - -More than once file can be specified in the above command like this - - $ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt" - -#### 4. Extract multiple files using wildcards #### - -Wildcards can be used to extract out a bunch of files matching the given wildcards. For example all files with ".txt" extension. - - $ tar -xv -f abc.tar.gz --wildcards "*.txt" - -#### 5. List and search contents of the tar archive #### - -If you want to just list out the contents of the tar archive and not extract them, use the "-t" option. The following command prints the contents of a gzipped tar archive, - - $ tar -tz -f abc.tar.gz - ./new/ - ./new/cde.txt - ./new/subdir/ - ./new/subdir/in.txt - ./new/abc.txt - ... - -Pipe the output to grep to search a file or less command to browse the list. Using the "v" verbose option shall print additional details about each file. - -For tar.bz2/bzip files use the "j" option - -Use the above command in combination with the grep command to search the archive. Simple! - - $ tar -tvz -f abc.tar.gz | grep abc.txt - -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt - -#### 6. Create a tar/tar.gz archive #### - -Now that we have learnt how to extract existing tar archives, its time to start creating new ones. The tar command can be told to put selected files in an archive or an entire directory. Here are some examples. - -The following command creates a tar archive using a directory, adding all files in it and sub directories as well. - - $ tar -cvf abc.tar ./new/ - ./new/ - ./new/cde.txt - ./new/abc.txt - -The above example does not create a compressed archive. Just a plain archive, that puts multiple files together without any real compression. - -In order to compress, use the "z" or "j" option for gzip or bzip respectively. - - $ tar -cvzf abc.tar.gz ./new/ - -> The extension of the file name does not really matter. "tar.gz" and tgz are common extensions for files compressed with gzip. ".tar.bz2" and ".tbz" are commonly used extensions for bzip compressed files. - -#### 7. Ask confirmation before adding files #### - -A useful option is "w" which makes tar ask for confirmation for every file before adding it to the archive. This can be sometimes useful. - -Only those files would be added which are given a yes answer. If you do not enter anything, the default answer would be a "No". - - # Add specific files - - $ tar -czw -f abc.tar.gz ./new/* - add ‘./new/abc.txt’?y - add ‘./new/cde.txt’?y - add ‘./new/newfile.txt’?n - add ‘./new/subdir’?y - add ‘./new/subdir/in.txt’?n - - # Now list the files added - $ tar -t -f abc.tar.gz - ./new/abc.txt - ./new/cde.txt - ./new/subdir/ - -#### 8. Add files to existing archives #### - -The r option can be used to add files to existing archives, without having to create new ones. Here is a quick example - - $ tar -rv -f abc.tar abc.txt - -> Files cannot be added to compressed archives (gz or bzip). Files can only be added to plain tar archives. - -#### 9. Add files to compressed archives (tar.gz/tar.bz2) #### - -Its already mentioned that its not possible to add files to compressed archives. However it can still be done with a simple trick. Use the gunzip command to uncompress the archive, add file to archive and compress it again. - - $ gunzip archive.tar.gz - $ tar -rf archive.tar ./path/to/file - $ gzip archive.tar - -For bzip files use the bzip2 and bunzip2 commands respectively. - -#### 10. Backup with tar #### - -A real scenario is to backup directories at regular intervals. The tar command can be scheduled to take such backups via cron. Here is an example - - - $ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/ - -Run the above command via cron and it would keep creating backup files with names like - -'archive-20150218.tar.gz'. - -Ofcourse make sure that the disk space is not overflown with larger and larger archives. - -#### 11. Verify archive files while creation #### - -The "W" option can be used to verify the files after creating archives. Here is a quick example. - - $ tar -cvW -f abc.tar ./new/ - ./new/ - ./new/cde.txt - ./new/subdir/ - ./new/subdir/in.txt - ./new/newfile.txt - ./new/abc.txt - Verify ./new/ - Verify ./new/cde.txt - Verify ./new/subdir/ - Verify ./new/subdir/in.txt - Verify ./new/newfile.txt - Verify ./new/abc.txt - -Note that the verification cannot be done on compressed archives. It works only with uncompressed tar archives. - -Thats all for now. For more check out the man page for tar command, with "man tar". - --------------------------------------------------------------------------------- - -via: http://www.binarytides.com/linux-tar-command/ - -作者:[Silver Moon][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117145272367995638274/posts diff --git a/translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md b/translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md new file mode 100644 index 0000000000..75865f7713 --- /dev/null +++ b/translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md @@ -0,0 +1,191 @@ +linux中创建和解压文档的10个快速tar命令样例 +================================================================================ +### linux中的tar命令### + +tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令。 + +常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过gzip或bzip算法进一步压缩的磁带归档文件扩展。 + + +在该教程中我们会窥探一下在linux桌面或服务器版本中使用tar命令来处理一些日常创建和解压归档文件的工作样例。 +### 使用tar命令### + +tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件。 + +> tar命令具有两个压缩格式,gzip和bzip,该命令的“z”选项用来指定gzip,“j”选项用来指定bzip。同时也可哟用来创建非压缩归档文件。 + +#### 1.解压一个tar.gz归档 #### + +一般常见的用法是用来解压归档文件,下面的命令将会把文件从一个tar.gz归档文件中解压出来。 + + + $ tar -xvzf tarfile.tar.gz + +这里对这些参数做一个简单解释- + +> x - 解压文件 + +> v - 繁琐,在解压每个文件时打印出文件的名称。 + +> z - 该文件是一个使用 gzip压缩的文件。 + +> f - 使用接下来的tar归档来进行操作。 + +这些就是一些需要记住的重要选项。 + +**解压 tar.bz2/bzip 归档文件 ** + +具有bz2扩展名的文件是使用bzip算法进行压缩的,但是tar命令也可以对其进行处理,但是是通过使用“j”选项来替换“z”选项。 + + $ tar -xvjf archivefile.tar.bz2 + +#### 2.将文件解压到一个指定的目录或路径 #### + +为了将文件解压到一个指定的目录中,使用“-C”选项来指定路径,此处的“C”是大写“C”。 + + $ tar -xvzf abc.tar.gz -C /opt/folder/ + +然后,首先需要确认目标目录是否存在,毕竟tar命令并不会为你创建目录,所以如果目标目录不存在的情况下该命令会失败。 + +####3. 解压出单个文件 #### + +为了从一个归档文件中解压出单个文件,只需要将文件名按照以下方式将其放置在命令后面。 + + $ tar -xz -f abc.tar.gz "./new/abc.txt" + +在上述命令中,可以按照以下方式来指定多个文件。 + + $ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt" + +#### 4.使用通配符来解压多个文件 #### + +通配符可以用来解压于给定通配符匹配的一批文件,例如所有以".txt"作为扩展名的文件。 + + $ tar -xv -f abc.tar.gz --wildcards "*.txt" + +#### 5. 列出并检索tar归档文件中的内容 #### + +如果你仅仅想要列出而不是解压tar归档文件的中的内容,使用“-t”选项, 下面的命令用来打印一个使用gzip压缩过的tar归档文件中的内容。 + + $ tar -tz -f abc.tar.gz + ./new/ + ./new/cde.txt + ./new/subdir/ + ./new/subdir/in.txt + ./new/abc.txt + ... + +将输出通过管道定向到grep来搜索一个文件或者定向到less命令来浏览内容列表。 使用"v"繁琐选项将会打印出每个文件的额外详细信息。 + +对于 tar.bz2/bzip文件,需要使用"j"选项。 + +结合上述的命令和grep命令来检索归档文件,如下所示。简单吧! + + $ tar -tvz -f abc.tar.gz | grep abc.txt + -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt + +#### 6.创建一个tar/tar.gz归档文件 #### + +现在我们已经学过了如何解压一个tar归档文件,是时候开始创建一个新的tar归档文件了。tar命令可以用来将所选的文件或整个目录放入到一个归档文件中,以下是相应的样例。 + + +下面的命令使用一个目录来创建一个tar归档文件,它会将该目录中所有的文件和子目录都加入到归档文件中。 + + $ tar -cvf abc.tar ./new/ + ./new/ + ./new/cde.txt + ./new/abc.txt + +上述命令不会创建一个压缩的的归档文件,只是一个普通的归档文件,只是将多个文件放入到一个归档文件中并没有真正地压缩每个文件。 + +为了使用压缩,可以分别使用“z”或“j”选项进行gzip或bzip压缩算法。 + + $ tar -cvzf abc.tar.gz ./new/ + +> 文件的扩展名其实并不真正有什么影响。“tar.gz” 和tgz是gzip压缩算法压缩文件的常见扩展名。 “tar.bz2”和“tbz”是bzip压缩算法压缩文件的常见扩展名。 + + +#### 7. 在添加文件之前进行确认 #### + +一个有用的选项是“w”,该选项使得tar命令在添加每个文件到归档文件之前来让用户进行确认,有时候这会很有用。 + +使用该选项时,只有用户输入yes时的文件才会被加入到归档文件中,如果你输入任何东西,默认的回答是一个“No”。 + + # 添加指定文件 + + $ tar -czw -f abc.tar.gz ./new/* + add ‘./new/abc.txt’?y + add ‘./new/cde.txt’?y + add ‘./new/newfile.txt’?n + add ‘./new/subdir’?y + add ‘./new/subdir/in.txt’?n + + #现在列出所有被加入的文件 + + $ tar -t -f abc.tar.gz + ./new/abc.txt + ./new/cde.txt + ./new/subdir/ + +#### 8. 加入文件到存在的归档文件中 #### + +“r”选项可以被用来将文件加入到已存在的归档文件中,而不用创建一个新的归档文件,下面是一个简单的样例: + + $ tar -rv -f abc.tar abc.txt + +> 文件并不能加入到已压缩的归档文件中(gz 或 bzip)。文件只能被加入到普通的归档文件中。 + +#### 9. 将文件加入到压缩的归档文件中(tar.gz/tar.bz2) #### + +之前已经提到了不可能将文件加入到已压缩的归档文件中,然和依然可以通过简单的一些把戏来完成。使用gunzip命令来解压缩归档文件,然后将文件加入到归档文件中后重新进行压缩。 + + $ gunzip archive.tar.gz + $ tar -rf archive.tar ./path/to/file + $ gzip archive.tar + +对于bzip文件分别使用bzip2和bunzip2。 + +#### 10.通过tar来进行备份 #### + +一个真实的场景是在规则的间隔内来备份目录,tar命令可以通过cron调度来实现这样的一个备份,以下是一个样例 - + + $ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/ + +使用cron来运行上述的命令会保持创建类似以下名称的备份文件 - +'archive-20150218.tar.gz'. + +当然,需要确保日益增长的归档文件不会导致磁盘空间的溢出。 + +#### 11. 在创建归档文件是进行验证 #### + +"W"选项可以用来在创建归档文件之后进行验证,以下是一个简单例子。 + + $ tar -cvW -f abc.tar ./new/ + ./new/ + ./new/cde.txt + ./new/subdir/ + ./new/subdir/in.txt + ./new/newfile.txt + ./new/abc.txt + Verify ./new/ + Verify ./new/cde.txt + Verify ./new/subdir/ + Verify ./new/subdir/in.txt + Verify ./new/newfile.txt + Verify ./new/abc.txt + +需要注意的是验证动作不能呢该在压缩过的归档文件上进行,只能在非压缩的tar归档文件上执行。 + +现在就先到此为止,可以通过“man tar”命令来查看tar命令的的手册。 + +-------------------------------------------------------------------------------- + +via: http://www.binarytides.com/linux-tar-command/ + +作者:[Silver Moon][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117145272367995638274/posts From fc13be47c573e77a5aefc0ccf40a89e12484df3b Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 2 Mar 2015 14:27:33 +0800 Subject: [PATCH 429/725] =?UTF-8?q?=E5=BD=92=E6=A1=A3201502?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- published/{ => 201502}/20140819 Top 4 Linux download managers.md | 0 .../{ => 201502}/20140821 What is a good EPUB reader on Linux.md | 0 ...7 How to create a software RAID-1 array with mdadm on Linux.md | 0 ...w to Install and Setup My Weather Indicator in Ubuntu 14.10.md | 0 .../20141030 Test drive Linux with nothing but a flash drive.md | 0 ...7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md | 0 ...ow To Use Emoji Anywhere With Twitter's Open Source Library.md | 0 ...141120 How to install Xen hypervisor on unused old hardware.md | 0 .../{ => 201502}/20141203 Undelete Files on Linux Systems.md | 0 ...The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md | 0 .../20141205 What is a good free control panel for VPS.md | 0 ...ow to configure rsyslog client for remote logging on CentOS.md | 0 ...1211 How to use matplotlib for scientific plotting on Linux.md | 0 ...219 How to block unwanted IP addresses on Linux efficiently.md | 0 ...o schedule appointments and to-do tasks in a Linux terminal.md | 0 .../20141223 20 Linux Commands Interview Questions & Answers.md | 0 ...ltiple Linux Distribution Installations in RHEL or CentOS 7.md | 0 ... FAQs with Answers--How to install Kingsoft Office on Linux.md | 0 ...ux FAQs with Answers--How to rename multiple files on Linux.md | 0 ...1226 How to Download Music from Grooveshark with a Linux OS.md | 0 ... Steps to Setup Local Repository in Ubuntu using APT-mirror.md | 0 ...29 How to Create Btrfs Filesystem in Linux and its Features.md | 0 ...20150104 Auditd--Tool for Security Auditing on Linux Server.md | 0 .../{ => 201502}/20150104 How To Install Websvn In CentOS 7.md | 0 ...To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md | 0 .../20150105 How To Install Winusb In Ubuntu 14.04.md | 0 ...untu apt-get and apt-cache commands with practical examples.md | 0 .../20150106 How to deduplicate files on Linux with dupeGuru.md | 0 .../20150106 Managing Linux server configs with the SaltStack.md | 0 .../20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md | 0 .../20150112 Best GNOME Shell Themes For Ubuntu 14.04.md | 0 ...0150114 How to Configure Chroot Environment in Ubuntu 14.04.md | 0 ...14 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md | 0 ... to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md | 0 ...stalling Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md | 0 .../{ => 201502}/20150114 Why Mac users don't switch to Linux.md | 0 .../20150115 Configure Mate Desktop With Mate Tweak.md | 0 ...es To a Different Directory on a Linux or Unix-like Systems.md | 0 ...5 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md | 0 .../20150116 A Step By Step Guide To Installing Xubuntu Linux.md | 0 ...Create A Lightweight And Persistent Xubuntu Linux USB Drive.md | 0 ...0150119 Cutegram--A Better Telegram Client For GNU or Linux.md | 0 .../{ => 201502}/20150119 How To Disable IPv6 In CentOS 7.md | 0 .../20150119 Quick Tip--How To Restart Cinnamon After Crash.md | 0 published/{ => 201502}/20150121 If a 32-bit integer overflows.md | 0 ...h Answers--How to check disk space on Linux with df command.md | 0 ...122 Linux FAQs with Answers--How to add a cron job on Linux.md | 0 ...Linux FAQs with Answers--How to check memory usage on Linux.md | 0 ... FAQs with Answers--How to set a custom HTTP header in curl.md | 0 .../20150125 4 Best Modern Open Source Code Editors For Linux.md | 0 ...126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md | 0 ...i-Fi Direct Android Implementation Causes Denial of Service.md | 0 .../{ => 201502}/20150127 Install Jetty Web Server On CentOS 7.md | 0 ...50128 Meet Vivaldi--A New Web Browser Built for Power Users.md | 0 ...K 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md | 0 ...eate and show a presentation from the command line on Linux.md | 0 ...our profile could not be opened correctly' on Google Chrome.md | 0 ...inux FAQs with Answers--How to install Go language on Linux.md | 0 ...uxQuestions Survey Results Surface Top Open Source Projects.md | 0 published/{ => 201502}/20150209 CrunchBang Linux Is Dead.md | 0 published/{ => 201502}/20150209 Non-Linux FOSS--Homebrew.md | 0 ...Of Two Google Chrome Icons From Dock In Elementary OS Freya.md | 0 62 files changed, 0 insertions(+), 0 deletions(-) rename published/{ => 201502}/20140819 Top 4 Linux download managers.md (100%) rename published/{ => 201502}/20140821 What is a good EPUB reader on Linux.md (100%) rename published/{ => 201502}/20140917 How to create a software RAID-1 array with mdadm on Linux.md (100%) rename published/{ => 201502}/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md (100%) rename published/{ => 201502}/20141030 Test drive Linux with nothing but a flash drive.md (100%) rename published/{ => 201502}/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md (100%) rename published/{ => 201502}/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md (100%) rename published/{ => 201502}/20141120 How to install Xen hypervisor on unused old hardware.md (100%) rename published/{ => 201502}/20141203 Undelete Files on Linux Systems.md (100%) rename published/{ => 201502}/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md (100%) rename published/{ => 201502}/20141205 What is a good free control panel for VPS.md (100%) rename published/{ => 201502}/20141210 How to configure rsyslog client for remote logging on CentOS.md (100%) rename published/{ => 201502}/20141211 How to use matplotlib for scientific plotting on Linux.md (100%) rename published/{ => 201502}/20141219 How to block unwanted IP addresses on Linux efficiently.md (100%) rename published/{ => 201502}/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md (100%) rename published/{ => 201502}/20141223 20 Linux Commands Interview Questions & Answers.md (100%) rename published/{ => 201502}/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md (100%) rename published/{ => 201502}/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md (100%) rename published/{ => 201502}/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md (100%) rename published/{ => 201502}/20141226 How to Download Music from Grooveshark with a Linux OS.md (100%) rename published/{ => 201502}/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md (100%) rename published/{ => 201502}/20141229 How to Create Btrfs Filesystem in Linux and its Features.md (100%) rename published/{ => 201502}/20150104 Auditd--Tool for Security Auditing on Linux Server.md (100%) rename published/{ => 201502}/20150104 How To Install Websvn In CentOS 7.md (100%) rename published/{ => 201502}/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md (100%) rename published/{ => 201502}/20150105 How To Install Winusb In Ubuntu 14.04.md (100%) rename published/{ => 201502}/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md (100%) rename published/{ => 201502}/20150106 How to deduplicate files on Linux with dupeGuru.md (100%) rename published/{ => 201502}/20150106 Managing Linux server configs with the SaltStack.md (100%) rename published/{ => 201502}/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md (100%) rename published/{ => 201502}/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md (100%) rename published/{ => 201502}/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md (100%) rename published/{ => 201502}/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md (100%) rename published/{ => 201502}/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md (100%) rename published/{ => 201502}/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md (100%) rename published/{ => 201502}/20150114 Why Mac users don't switch to Linux.md (100%) rename published/{ => 201502}/20150115 Configure Mate Desktop With Mate Tweak.md (100%) rename published/{ => 201502}/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md (100%) rename published/{ => 201502}/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md (100%) rename published/{ => 201502}/20150116 A Step By Step Guide To Installing Xubuntu Linux.md (100%) rename published/{ => 201502}/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md (100%) rename published/{ => 201502}/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md (100%) rename published/{ => 201502}/20150119 How To Disable IPv6 In CentOS 7.md (100%) rename published/{ => 201502}/20150119 Quick Tip--How To Restart Cinnamon After Crash.md (100%) rename published/{ => 201502}/20150121 If a 32-bit integer overflows.md (100%) rename published/{ => 201502}/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md (100%) rename published/{ => 201502}/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md (100%) rename published/{ => 201502}/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md (100%) rename published/{ => 201502}/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md (100%) rename published/{ => 201502}/20150125 4 Best Modern Open Source Code Editors For Linux.md (100%) rename published/{ => 201502}/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md (100%) rename published/{ => 201502}/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md (100%) rename published/{ => 201502}/20150127 Install Jetty Web Server On CentOS 7.md (100%) rename published/{ => 201502}/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md (100%) rename published/{ => 201502}/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md (100%) rename published/{ => 201502}/20150202 How to create and show a presentation from the command line on Linux.md (100%) rename published/{ => 201502}/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md (100%) rename published/{ => 201502}/20150205 Linux FAQs with Answers--How to install Go language on Linux.md (100%) rename published/{ => 201502}/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md (100%) rename published/{ => 201502}/20150209 CrunchBang Linux Is Dead.md (100%) rename published/{ => 201502}/20150209 Non-Linux FOSS--Homebrew.md (100%) rename published/{ => 201502}/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md (100%) diff --git a/published/20140819 Top 4 Linux download managers.md b/published/201502/20140819 Top 4 Linux download managers.md similarity index 100% rename from published/20140819 Top 4 Linux download managers.md rename to published/201502/20140819 Top 4 Linux download managers.md diff --git a/published/20140821 What is a good EPUB reader on Linux.md b/published/201502/20140821 What is a good EPUB reader on Linux.md similarity index 100% rename from published/20140821 What is a good EPUB reader on Linux.md rename to published/201502/20140821 What is a good EPUB reader on Linux.md diff --git a/published/20140917 How to create a software RAID-1 array with mdadm on Linux.md b/published/201502/20140917 How to create a software RAID-1 array with mdadm on Linux.md similarity index 100% rename from published/20140917 How to create a software RAID-1 array with mdadm on Linux.md rename to published/201502/20140917 How to create a software RAID-1 array with mdadm on Linux.md diff --git a/published/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md b/published/201502/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md similarity index 100% rename from published/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md rename to published/201502/20141029 How to Install and Setup My Weather Indicator in Ubuntu 14.10.md diff --git a/published/20141030 Test drive Linux with nothing but a flash drive.md b/published/201502/20141030 Test drive Linux with nothing but a flash drive.md similarity index 100% rename from published/20141030 Test drive Linux with nothing but a flash drive.md rename to published/201502/20141030 Test drive Linux with nothing but a flash drive.md diff --git a/published/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md b/published/201502/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md similarity index 100% rename from published/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md rename to published/201502/20141108 Adding Ubuntu 14.10, Ubuntu 14.04 and Debian 7 to PXE Network Boot Environment Setup on RHEL or CentOS 7.md diff --git a/published/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md b/published/201502/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md similarity index 100% rename from published/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md rename to published/201502/20141114 How To Use Emoji Anywhere With Twitter's Open Source Library.md diff --git a/published/20141120 How to install Xen hypervisor on unused old hardware.md b/published/201502/20141120 How to install Xen hypervisor on unused old hardware.md similarity index 100% rename from published/20141120 How to install Xen hypervisor on unused old hardware.md rename to published/201502/20141120 How to install Xen hypervisor on unused old hardware.md diff --git a/published/20141203 Undelete Files on Linux Systems.md b/published/201502/20141203 Undelete Files on Linux Systems.md similarity index 100% rename from published/20141203 Undelete Files on Linux Systems.md rename to published/201502/20141203 Undelete Files on Linux Systems.md diff --git a/published/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md b/published/201502/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md similarity index 100% rename from published/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md rename to published/201502/20141204 The Easy Way to Keep Track of Multiple Time Zones in Ubuntu.md diff --git a/published/20141205 What is a good free control panel for VPS.md b/published/201502/20141205 What is a good free control panel for VPS.md similarity index 100% rename from published/20141205 What is a good free control panel for VPS.md rename to published/201502/20141205 What is a good free control panel for VPS.md diff --git a/published/20141210 How to configure rsyslog client for remote logging on CentOS.md b/published/201502/20141210 How to configure rsyslog client for remote logging on CentOS.md similarity index 100% rename from published/20141210 How to configure rsyslog client for remote logging on CentOS.md rename to published/201502/20141210 How to configure rsyslog client for remote logging on CentOS.md diff --git a/published/20141211 How to use matplotlib for scientific plotting on Linux.md b/published/201502/20141211 How to use matplotlib for scientific plotting on Linux.md similarity index 100% rename from published/20141211 How to use matplotlib for scientific plotting on Linux.md rename to published/201502/20141211 How to use matplotlib for scientific plotting on Linux.md diff --git a/published/20141219 How to block unwanted IP addresses on Linux efficiently.md b/published/201502/20141219 How to block unwanted IP addresses on Linux efficiently.md similarity index 100% rename from published/20141219 How to block unwanted IP addresses on Linux efficiently.md rename to published/201502/20141219 How to block unwanted IP addresses on Linux efficiently.md diff --git a/published/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md b/published/201502/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md similarity index 100% rename from published/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md rename to published/201502/20141219 How to schedule appointments and to-do tasks in a Linux terminal.md diff --git a/published/20141223 20 Linux Commands Interview Questions & Answers.md b/published/201502/20141223 20 Linux Commands Interview Questions & Answers.md similarity index 100% rename from published/20141223 20 Linux Commands Interview Questions & Answers.md rename to published/201502/20141223 20 Linux Commands Interview Questions & Answers.md diff --git a/published/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md b/published/201502/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md similarity index 100% rename from published/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md rename to published/201502/20141223 Setting up a 'PXE Network Boot Server' for Multiple Linux Distribution Installations in RHEL or CentOS 7.md diff --git a/published/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md b/published/201502/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md similarity index 100% rename from published/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md rename to published/201502/20141224 Linux FAQs with Answers--How to install Kingsoft Office on Linux.md diff --git a/published/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md b/published/201502/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md similarity index 100% rename from published/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md rename to published/201502/20141224 Linux FAQs with Answers--How to rename multiple files on Linux.md diff --git a/published/20141226 How to Download Music from Grooveshark with a Linux OS.md b/published/201502/20141226 How to Download Music from Grooveshark with a Linux OS.md similarity index 100% rename from published/20141226 How to Download Music from Grooveshark with a Linux OS.md rename to published/201502/20141226 How to Download Music from Grooveshark with a Linux OS.md diff --git a/published/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md b/published/201502/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md similarity index 100% rename from published/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md rename to published/201502/20141229 4 Steps to Setup Local Repository in Ubuntu using APT-mirror.md diff --git a/published/20141229 How to Create Btrfs Filesystem in Linux and its Features.md b/published/201502/20141229 How to Create Btrfs Filesystem in Linux and its Features.md similarity index 100% rename from published/20141229 How to Create Btrfs Filesystem in Linux and its Features.md rename to published/201502/20141229 How to Create Btrfs Filesystem in Linux and its Features.md diff --git a/published/20150104 Auditd--Tool for Security Auditing on Linux Server.md b/published/201502/20150104 Auditd--Tool for Security Auditing on Linux Server.md similarity index 100% rename from published/20150104 Auditd--Tool for Security Auditing on Linux Server.md rename to published/201502/20150104 Auditd--Tool for Security Auditing on Linux Server.md diff --git a/published/20150104 How To Install Websvn In CentOS 7.md b/published/201502/20150104 How To Install Websvn In CentOS 7.md similarity index 100% rename from published/20150104 How To Install Websvn In CentOS 7.md rename to published/201502/20150104 How To Install Websvn In CentOS 7.md diff --git a/published/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md b/published/201502/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md similarity index 100% rename from published/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md rename to published/201502/20150105 How To Install Kodi 14 (XBMC) In Ubuntu 14.04 and Linux Mint 17.md diff --git a/published/20150105 How To Install Winusb In Ubuntu 14.04.md b/published/201502/20150105 How To Install Winusb In Ubuntu 14.04.md similarity index 100% rename from published/20150105 How To Install Winusb In Ubuntu 14.04.md rename to published/201502/20150105 How To Install Winusb In Ubuntu 14.04.md diff --git a/published/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md b/published/201502/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md similarity index 100% rename from published/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md rename to published/201502/20150105 Ubuntu apt-get and apt-cache commands with practical examples.md diff --git a/published/20150106 How to deduplicate files on Linux with dupeGuru.md b/published/201502/20150106 How to deduplicate files on Linux with dupeGuru.md similarity index 100% rename from published/20150106 How to deduplicate files on Linux with dupeGuru.md rename to published/201502/20150106 How to deduplicate files on Linux with dupeGuru.md diff --git a/published/20150106 Managing Linux server configs with the SaltStack.md b/published/201502/20150106 Managing Linux server configs with the SaltStack.md similarity index 100% rename from published/20150106 Managing Linux server configs with the SaltStack.md rename to published/201502/20150106 Managing Linux server configs with the SaltStack.md diff --git a/published/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md b/published/201502/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md similarity index 100% rename from published/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md rename to published/201502/20150108 How to Install SSL on Apache 2.4 in Ubuntu 14.0.4.md diff --git a/published/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md b/published/201502/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md similarity index 100% rename from published/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md rename to published/201502/20150112 Best GNOME Shell Themes For Ubuntu 14.04.md diff --git a/published/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md b/published/201502/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md similarity index 100% rename from published/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md rename to published/201502/20150114 How to Configure Chroot Environment in Ubuntu 14.04.md diff --git a/published/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md b/published/201502/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md similarity index 100% rename from published/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md rename to published/201502/20150114 How to Install Ghost on Ubuntu Server 14.04 LTS (Trusty).md diff --git a/published/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md b/published/201502/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md similarity index 100% rename from published/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md rename to published/201502/20150114 How to Manage Network using nmcli Tool in RedHat or CentOS 7.x.md diff --git a/published/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md b/published/201502/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md similarity index 100% rename from published/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md rename to published/201502/20150114 Installing Telnet In CentOS or RHEL or Scientific Linux 6 & 7.md diff --git a/published/20150114 Why Mac users don't switch to Linux.md b/published/201502/20150114 Why Mac users don't switch to Linux.md similarity index 100% rename from published/20150114 Why Mac users don't switch to Linux.md rename to published/201502/20150114 Why Mac users don't switch to Linux.md diff --git a/published/20150115 Configure Mate Desktop With Mate Tweak.md b/published/201502/20150115 Configure Mate Desktop With Mate Tweak.md similarity index 100% rename from published/20150115 Configure Mate Desktop With Mate Tweak.md rename to published/201502/20150115 Configure Mate Desktop With Mate Tweak.md diff --git a/published/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md b/published/201502/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md similarity index 100% rename from published/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md rename to published/201502/20150115 How To Extract a Tar Files To a Different Directory on a Linux or Unix-like Systems.md diff --git a/published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md b/published/201502/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md similarity index 100% rename from published/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md rename to published/201502/20150115 Tips for Apache Migration From 2.2 to 2.4 on Ubuntu 14.04.md diff --git a/published/20150116 A Step By Step Guide To Installing Xubuntu Linux.md b/published/201502/20150116 A Step By Step Guide To Installing Xubuntu Linux.md similarity index 100% rename from published/20150116 A Step By Step Guide To Installing Xubuntu Linux.md rename to published/201502/20150116 A Step By Step Guide To Installing Xubuntu Linux.md diff --git a/published/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md b/published/201502/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md similarity index 100% rename from published/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md rename to published/201502/20150119 3 Ways To Create A Lightweight And Persistent Xubuntu Linux USB Drive.md diff --git a/published/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md b/published/201502/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md similarity index 100% rename from published/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md rename to published/201502/20150119 Cutegram--A Better Telegram Client For GNU or Linux.md diff --git a/published/20150119 How To Disable IPv6 In CentOS 7.md b/published/201502/20150119 How To Disable IPv6 In CentOS 7.md similarity index 100% rename from published/20150119 How To Disable IPv6 In CentOS 7.md rename to published/201502/20150119 How To Disable IPv6 In CentOS 7.md diff --git a/published/20150119 Quick Tip--How To Restart Cinnamon After Crash.md b/published/201502/20150119 Quick Tip--How To Restart Cinnamon After Crash.md similarity index 100% rename from published/20150119 Quick Tip--How To Restart Cinnamon After Crash.md rename to published/201502/20150119 Quick Tip--How To Restart Cinnamon After Crash.md diff --git a/published/20150121 If a 32-bit integer overflows.md b/published/201502/20150121 If a 32-bit integer overflows.md similarity index 100% rename from published/20150121 If a 32-bit integer overflows.md rename to published/201502/20150121 If a 32-bit integer overflows.md diff --git a/published/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md b/published/201502/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md similarity index 100% rename from published/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md rename to published/201502/20150121 Linux FAQs with Answers--How to check disk space on Linux with df command.md diff --git a/published/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md b/published/201502/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md similarity index 100% rename from published/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md rename to published/201502/20150122 Linux FAQs with Answers--How to add a cron job on Linux.md diff --git a/published/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md b/published/201502/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md similarity index 100% rename from published/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md rename to published/201502/20150122 Linux FAQs with Answers--How to check memory usage on Linux.md diff --git a/published/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md b/published/201502/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md similarity index 100% rename from published/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md rename to published/201502/20150122 Linux FAQs with Answers--How to set a custom HTTP header in curl.md diff --git a/published/20150125 4 Best Modern Open Source Code Editors For Linux.md b/published/201502/20150125 4 Best Modern Open Source Code Editors For Linux.md similarity index 100% rename from published/20150125 4 Best Modern Open Source Code Editors For Linux.md rename to published/201502/20150125 4 Best Modern Open Source Code Editors For Linux.md diff --git a/published/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md b/published/201502/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md similarity index 100% rename from published/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md rename to published/201502/20150126 Ubuntu 15.04 to Integrate Linux Kernel 3.19 Branch Soon.md diff --git a/published/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md b/published/201502/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md similarity index 100% rename from published/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md rename to published/201502/20150127 Bug in Wi-Fi Direct Android Implementation Causes Denial of Service.md diff --git a/published/20150127 Install Jetty Web Server On CentOS 7.md b/published/201502/20150127 Install Jetty Web Server On CentOS 7.md similarity index 100% rename from published/20150127 Install Jetty Web Server On CentOS 7.md rename to published/201502/20150127 Install Jetty Web Server On CentOS 7.md diff --git a/published/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md b/published/201502/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md similarity index 100% rename from published/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md rename to published/201502/20150128 Meet Vivaldi--A New Web Browser Built for Power Users.md diff --git a/published/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md b/published/201502/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md similarity index 100% rename from published/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md rename to published/201502/20150130 OpenJDK 7 Vulnerabilities Closed in Ubuntu 14.04 and Ubuntu 14.10.md diff --git a/published/20150202 How to create and show a presentation from the command line on Linux.md b/published/201502/20150202 How to create and show a presentation from the command line on Linux.md similarity index 100% rename from published/20150202 How to create and show a presentation from the command line on Linux.md rename to published/201502/20150202 How to create and show a presentation from the command line on Linux.md diff --git a/published/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md b/published/201502/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md similarity index 100% rename from published/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md rename to published/201502/20150203 Linux FAQs with Answers--How to fix 'Your profile could not be opened correctly' on Google Chrome.md diff --git a/published/20150205 Linux FAQs with Answers--How to install Go language on Linux.md b/published/201502/20150205 Linux FAQs with Answers--How to install Go language on Linux.md similarity index 100% rename from published/20150205 Linux FAQs with Answers--How to install Go language on Linux.md rename to published/201502/20150205 Linux FAQs with Answers--How to install Go language on Linux.md diff --git a/published/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md b/published/201502/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md similarity index 100% rename from published/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md rename to published/201502/20150205 LinuxQuestions Survey Results Surface Top Open Source Projects.md diff --git a/published/20150209 CrunchBang Linux Is Dead.md b/published/201502/20150209 CrunchBang Linux Is Dead.md similarity index 100% rename from published/20150209 CrunchBang Linux Is Dead.md rename to published/201502/20150209 CrunchBang Linux Is Dead.md diff --git a/published/20150209 Non-Linux FOSS--Homebrew.md b/published/201502/20150209 Non-Linux FOSS--Homebrew.md similarity index 100% rename from published/20150209 Non-Linux FOSS--Homebrew.md rename to published/201502/20150209 Non-Linux FOSS--Homebrew.md diff --git a/published/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md b/published/201502/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md similarity index 100% rename from published/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md rename to published/201502/20150215 Get Rid Of Two Google Chrome Icons From Dock In Elementary OS Freya.md From ba7260c9d7143f44f5d5f9f297358a73af6623ec Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 2 Mar 2015 14:28:18 +0800 Subject: [PATCH 430/725] PUB:20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I @geekpi --- ...get on RHEL or CentOS or Fedora Part -I.md | 69 ++++++++++--------- 1 file changed, 35 insertions(+), 34 deletions(-) rename {translated/tech => published}/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md (67%) diff --git a/translated/tech/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md b/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md similarity index 67% rename from translated/tech/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md rename to published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md index 8455aeb5cb..c425f2fe43 100644 --- a/translated/tech/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md +++ b/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md @@ -1,46 +1,47 @@ -在RHEL/CentOS/Fedora上使用iSCSI Target创建集中式安全存储 - 第一部分 +使用iSCSI Target创建集中式安全存储(一) ================================================================================ -**iSCSI** 是一种就块级别协议,用于通过TCP/IP网络共享**原始存储设备**,可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种远程iSCSI服务器或者taget上的远程硬盘。 +**iSCSI** 是一种块级别的协议,用于通过TCP/IP网络共享**原始存储设备**,可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种由远程iSCSI服务器(target)提供的远程硬盘。 ![Install iSCSI Target in Linux](http://www.tecmint.com/wp-content/uploads/2014/07/Install-iSCSI-Target-in-Linux.jpg) -在Linux中安装iSCSI Target -我们不需要在客户端为了稳定的连接和性能而占用很大的资源。iSCSI服务器称为Target,它共享存储。iSCSI客户端称为Initiator,它访问Target服务器行的存储。市场中有用于大型存储服务如SAN的iSCSI适配器。 +*在Linux中安装iSCSI Target* + +我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI服务器称为“Target(目标器)”,它提供服务器上的存储共享。iSCSI客户端称为“Initiator(发起程序)”,它访问Target服务器共享的存储。市场中有卖的用于大型存储服务如SAN的iSCSI适配器。 **我们为什么要在大型存储领域中使用iSCSI适配器** -以太网适配器(NIC)被设计用于在系统、服务器和存储设备如NAS间传输分组数据,它不适合在Internet中传输块级别数据。 +以太网适配器(NIC)被设计用于在系统、服务器和存储设备如NAS间传输分组数据,它不适合在Internet中传输块级数据。 ### iSCSI Target的功能 ### - 可以在一台机器上运行几个iSCSI target -- 一台机器的多个iSCSI target可以在iSCSI中访问 -- 一个target就是一块存储,并且可以通过网络被初始化器(客户端)访问 +- 一台机器可以提供多个iSCSI target用于iSCSI SAN访问 +- 一个target就是一块存储,并且可以通过网络被发起程序(客户端)访问 - 把这些存储汇聚在一起让它们在网络中可以访问的是iSCSI LUN(逻辑单元号) -- iSCSI支持在同一个会话中含有多个连接 -- iSCSI初始化器在网络中发现目标接着用LUN验证并登录,这样就可以本地访问远程存储。 -- 我们了一在本地挂载的LUN上安装任何操作系统,就像我们安装我们本地的操作系统一样。 +- iSCSI支持在同一个会话中使用多个连接 +- iSCSI发起程序在网络中发现目标接着用LUN验证并登录,这样就可以本地访问远程存储。 +- 我们可以在本地挂载的LUN上安装任何操作系统,就像我们安装我们本地的操作系统一样。 ### 为什么需要iSCSI? ### 在虚拟化中,我们需要存储拥有高度的冗余性、稳定性,iSCSI以低成本的方式提供了这些特性。与使用光纤通道的SAN比起来,我们可以使用已经存在的设备比如NIC、以太网交换机等建造一个低成本的SAN。 -现在我开始使用iSCSI Target安装并配置安全存储。本篇中,我们遵循下面的步骤 +现在我开始使用iSCSI Target安装并配置安全存储。本篇中,我们遵循下面的步骤: -- 我们需要隔离一个系统来设置iSCSI Target服务器和初始化器(客户端)。 -- 可以在大型存储环境中添加多个硬盘,但是我们除了基本的安装盘之外只使用一个额外的驱动器。 -- 现在我们只使用2块硬盘,一个用于基本的服务器安装,另外一个用于存储(LUN),这个我们会在这个系列的第二篇描述。 +- 我们需要隔离一个系统来设置iSCSI Target服务器和发起程序(客户端)。 +- 在大型存储环境中可以添加多个硬盘,但是这里我们除了基本的安装盘之外只使用了一个额外的驱动器。 +- 这里我们只使用了2块硬盘,一个用于基本的服务器安装,另外一个用于存储(LUN),这个我们会在这个系列的第二篇描述。 #### 主服务器设置 #### -- 操作系统 – CentOS release 6.5 (最终版) +- 操作系统 – CentOS 6.5 (Final) - iSCSI Target IP – 192.168.0.200 - 使用的端口 : TCP 860, 3260 - 配置文件 : /etc/tgt/targets.conf ## 安装 iSCSI Target ## -打开终端并使用yum命令来搜索我们需要在iscsi target上安装的包名。 +打开终端并使用yum命令来搜索需要在iscsi target上安装的包名。 # yum search iscsi @@ -52,21 +53,21 @@ lsscsi.x86_64 : List SCSI devices (or hosts) and associated information scsi-target-utils.x86_64 : The SCSI target daemon and utility programs -We got the search result as above, choose the **Target** package and install to play around. -你会的到上面的那些结果,选择**Target**包来安装 +你会的到上面的那些结果,选择**Target**包来安装。 # yum install scsi-target-utils -y ![Install iSCSI Utils](http://www.tecmint.com/wp-content/uploads/2014/07/Install-iSCSI-in-Linux.jpg) -安装iSCSI工具 -列出安装的包来了解默认的配置、服务和man页面的位置 +*安装iSCSI工具* + +列出安装的包里面的内容来了解默认的配置、服务和man页面的位置。 # rpm -ql scsi-target-utils.x86_64 ![List All iSCSI Files](http://www.tecmint.com/wp-content/uploads/2014/07/List-All-ISCSI-Files.jpg) -列出所有的iSCSI文件 +*列出所有的iSCSI包里面的文件* 让我们启动iSCSI服务,并检查服务运行的状态,iSCSI的服务名是**tgtd**。 @@ -75,7 +76,7 @@ We got the search result as above, choose the **Target** package and install to ![Start iSCSI Service](http://www.tecmint.com/wp-content/uploads/2014/07/Start-iSCSI-Service.jpg) -启动iSCSI服务 +*启动iSCSI服务* 现在我们需要配置开机自动启动。 @@ -87,27 +88,27 @@ We got the search result as above, choose the **Target** package and install to ![Enable iSCSI on Startup](http://www.tecmint.com/wp-content/uploads/2014/07/Enable-iSCSI-on-Startup.jpg) -开机启动iSCSI +*开机启动iSCSI* 现在使用**tgtadm**来列出在我们的服务器上已经配置了哪些target和LUN。 # tgtadm --mode target --op show -**tgtd**已经安装并在运行了,但是上面的命令没有**输出**因为我们还没有在Target服务器上定义LUN。要查看手册,运行‘**man**‘命令。 +**tgtd**已经安装并在运行了,但是上面的命令没有**输出**因为我们还没有在Target服务器上定义LUN。要查看手册,可以运行‘**man**‘命令。 # man tgtadm ![iSCSI Man Pages](http://www.tecmint.com/wp-content/uploads/2014/07/iSCSI-Man-Pages.jpg) -iSCSI Man 页面 +*iSCSI Man 页面* -最终我们需要为iSCSI添加iptable规则,如果你的target服务器上存在iptable的话。首先使用netstat命令找出iscsi target的端口号,target总是监听TCP端口3260。 +如果你的target服务器上有iptable的话,那么我们需要为iSCSI添加iptable规则。首先使用netstat命令找出iscsi target的端口号,target总是监听TCP端口3260。 # netstat -tulnp | grep tgtd ![Find iSCSI Port](http://www.tecmint.com/wp-content/uploads/2014/07/Find-iSCSI-Port.jpg) -找出iSCSI端口 +*找出iSCSI端口* 下面加入如下规则让iptable允许广播iSCSI target发现包。 @@ -116,24 +117,24 @@ iSCSI Man 页面 ![Open iSCSI Ports](http://www.tecmint.com/wp-content/uploads/2014/07/Open-iSCSI-Ports.jpg) -打开iSCSI端口 +*打开iSCSI端口* ![Add iSCSI Ports to Iptables](http://www.tecmint.com/wp-content/uploads/2014/07/Add-iSCSI-Ports-to-Iptables.jpg) -添加iSCSI端口到iptable中 +*添加iSCSI端口到iptable中* -**注意**: 规则可能根据你的 **默认链策略**而不同。接着保存iptable并重启。 +**注意**: 规则可能根据你的 **默认链策略**而不同。接着保存iptable并重启该服务。 # iptables-save # /etc/init.d/iptables restart ![Restart iptables](http://www.tecmint.com/wp-content/uploads/2014/07/Restart-iptables.jpg) -重启iptable +*重启iptable* -现在我们已经部署了一个target服务器来共享LUN给通过TCP/IP认证的初始化器。这也适用于从小到大规模的生产环境。 +现在我们已经部署了一个target服务器来共享LUN给通过TCP/IP认证的发起程序。这也适用于从小到大规模的生产环境。 -在我的下篇文章中,我会展示如何[在Target服务器中使用LVM创建LUN][1],并且如何在客户端中共享LUN,在此之前请继续关注TecMint获取更多的更新,并且不要忘记留下有价值的评论。 +在我的下篇文章中,我会展示如何[在Target服务器中使用LVM创建LUN][1],并且如何在客户端中共享LUN,不要忘记留下有价值的评论。 -------------------------------------------------------------------------------- @@ -141,7 +142,7 @@ via: http://www.tecmint.com/create-centralized-secure-storage-using-iscsi-target 作者:[Babin Lonston][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From ff12d39dd38bff82021bb1e58b670078363e211b Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 2 Mar 2015 15:09:16 +0800 Subject: [PATCH 431/725] PUB:20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II @geekpi --- ...get on RHEL or CentOS or Fedora Part -I.md | 26 +++--- ...r' on RHEL or CentOS or Fedora -Part II.md | 93 ++++++++++--------- 2 files changed, 60 insertions(+), 59 deletions(-) rename {translated/tech => published}/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md (65%) diff --git a/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md b/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md index c425f2fe43..34352ed08c 100644 --- a/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md +++ b/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md @@ -6,7 +6,7 @@ *在Linux中安装iSCSI Target* -我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI服务器称为“Target(目标器)”,它提供服务器上的存储共享。iSCSI客户端称为“Initiator(发起程序)”,它访问Target服务器共享的存储。市场中有卖的用于大型存储服务如SAN的iSCSI适配器。 +我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI服务器称为“Target(目标器)”,它提供服务器上的存储共享。iSCSI客户端称为“Initiator(发起程序)”,它访问目标器共享的存储。市场中有卖的用于大型存储服务如SAN的iSCSI适配器。 **我们为什么要在大型存储领域中使用iSCSI适配器** @@ -14,9 +14,9 @@ ### iSCSI Target的功能 ### -- 可以在一台机器上运行几个iSCSI target -- 一台机器可以提供多个iSCSI target用于iSCSI SAN访问 -- 一个target就是一块存储,并且可以通过网络被发起程序(客户端)访问 +- 可以在一台机器上运行几个iSCSI 目标器 +- 一台机器可以提供多个iSCSI 目标器用于iSCSI SAN访问 +- 一个目标器就是一块存储,并且可以通过网络被发起程序(客户端)访问 - 把这些存储汇聚在一起让它们在网络中可以访问的是iSCSI LUN(逻辑单元号) - iSCSI支持在同一个会话中使用多个连接 - iSCSI发起程序在网络中发现目标接着用LUN验证并登录,这样就可以本地访问远程存储。 @@ -26,7 +26,7 @@ 在虚拟化中,我们需要存储拥有高度的冗余性、稳定性,iSCSI以低成本的方式提供了这些特性。与使用光纤通道的SAN比起来,我们可以使用已经存在的设备比如NIC、以太网交换机等建造一个低成本的SAN。 -现在我开始使用iSCSI Target安装并配置安全存储。本篇中,我们遵循下面的步骤: +现在我开始使用iSCSI 目标器安装并配置安全存储。本篇中,我们遵循下面的步骤: - 我们需要隔离一个系统来设置iSCSI Target服务器和发起程序(客户端)。 - 在大型存储环境中可以添加多个硬盘,但是这里我们除了基本的安装盘之外只使用了一个额外的驱动器。 @@ -35,13 +35,13 @@ #### 主服务器设置 #### - 操作系统 – CentOS 6.5 (Final) -- iSCSI Target IP – 192.168.0.200 +- iSCSI 目标器 IP – 192.168.0.200 - 使用的端口 : TCP 860, 3260 - 配置文件 : /etc/tgt/targets.conf -## 安装 iSCSI Target ## +### 安装 iSCSI Target ### -打开终端并使用yum命令来搜索需要在iscsi target上安装的包名。 +打开终端并使用yum命令来搜索需要在iscsi 目标器上安装的包名。 # yum search iscsi @@ -90,11 +90,11 @@ *开机启动iSCSI* -现在使用**tgtadm**来列出在我们的服务器上已经配置了哪些target和LUN。 +现在使用**tgtadm**来列出在我们的服务器上已经配置了哪些目标器和LUN。 # tgtadm --mode target --op show -**tgtd**已经安装并在运行了,但是上面的命令没有**输出**因为我们还没有在Target服务器上定义LUN。要查看手册,可以运行‘**man**‘命令。 +**tgtd**已经安装并在运行了,但是上面的命令没有**输出**因为我们还没有在目标器上定义LUN。要查看手册,可以运行‘**man**‘命令。 # man tgtadm @@ -110,7 +110,7 @@ *找出iSCSI端口* -下面加入如下规则让iptable允许广播iSCSI target发现包。 +下面加入如下规则让iptable允许广播iSCSI 目标器发现包。 # iptables -A INPUT -i eth0 -p tcp --dport 860 -m state --state NEW,ESTABLISHED -j ACCEPT # iptables -A INPUT -i eth0 -p tcp --dport 3260 -m state --state NEW,ESTABLISHED -j ACCEPT @@ -132,9 +132,9 @@ *重启iptable* -现在我们已经部署了一个target服务器来共享LUN给通过TCP/IP认证的发起程序。这也适用于从小到大规模的生产环境。 +现在我们已经部署了一个目标器来共享LUN给通过TCP/IP认证的发起程序。这也适用于从小到大规模的生产环境。 -在我的下篇文章中,我会展示如何[在Target服务器中使用LVM创建LUN][1],并且如何在客户端中共享LUN,不要忘记留下有价值的评论。 +在我的下篇文章中,我会展示如何[在目标器中使用LVM创建LUN][1],并且如何在客户端中共享LUN,不要忘记留下有价值的评论。 -------------------------------------------------------------------------------- diff --git a/translated/tech/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md b/published/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md similarity index 65% rename from translated/tech/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md rename to published/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md index bac7aba27f..3c8f09a168 100644 --- a/translated/tech/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md +++ b/published/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md @@ -1,47 +1,47 @@ -如何在RHEL/CentOS/Fedora中使用LVM创建和设置LUN- 第二部分 +在 iSCSI Target 服务器中使用LVM创建和设置LUN(二) ================================================================================ -LUN是逻辑单元号,它与iSCSI存储服务器共享。物理iSCSI target服务器共享它的驱动器来初始化TCP/IP网络。驱动器的集合称作LUN来幸存一个大型存储也就是SAN(Storage Area Network)。在真实环境中LUN在LVM中定义,因此它可以按需扩展。 +LUN是逻辑单元号,它与iSCSI存储服务器共享。iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序(initiator)。这些来自一个大型存储(SAN:Storage Area Network)的驱动器集合称作LUN。在真实环境中LUN是在LVM中定义的,因为它可以按需扩展。 ![Create LUNS using LVM in Target Server](http://www.tecmint.com/wp-content/uploads/2014/07/Create-LUNS-inLVM.png) -Create LUNS using LVM in Target Server + +*在目标器中使用 LVM 创建 LUN* ### 为什么使用LUN? ### -LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块物理驱动器组成。我们可以使用LUN作为系统物理驱动器来安装操作系统,LUN在集群、虚拟服务器、SAN中使用。在虚拟服务器中使用LUN的目的是作为系统存储。LUN的性能和可靠性根据在创建目标存储服务器时所使用的驱动器决定。 +LUN用于存储,SAN存储大多数由LUN的集群来组成存储池,LUN由目标器的几块物理驱动器组成。我们可以使用LUN作为系统物理驱动器来安装操作系统,LUN可以用在集群、虚拟服务器、SAN中。在虚拟服务器中使用LUN的主要用途是作为操作系统的存储。LUN的性能和可靠性根据在创建目标存储服务器时所使用的驱动器决定。 -### 需求 ### +### 前置阅读 ### -要了解创建iSCSI target服务器点击下面的链接。 +要了解创建iSCSI 目标器,点击下面的链接。 -- [使用iSCSI target创建爱你集中话安全存储][1] +- [使用iSCSI Target创建集中式安全存储(一)][1] #### 主服务器设置 #### -系统信息和网络设置部分与已经写的iSCSI Target服务相同 - 我们在相同的服务器上定义LUN。 +系统信息和网络设置部分与前文的iSCSI 目标器相同 - 我们在相同的服务器上定义LUN。 - -- 操作系统 – CentOS release 6.5 (最终版) -- iSCSI Target IP – 192.168.0.200 +- 操作系统 – CentOS 6.5 (Final) +- iSCSI 目标器 IP – 192.168.0.200 - 使用的端口 : TCP 860, 3260 - 配置文件 : /etc/tgt/targets.conf -## 在iSCSI Target Server使用LVM创建LUN ## +### 在iSCSI 目标器使用LVM创建LUN ### 首先,用**fdisk -l**命令找出驱动器的列表,这会列出系统中所有分区的列表。 # fdisk -l -上面的命令只会给出基本系统的驱动器信息。为了个到存储设备的信息,使用下面的命令来的到存储设备的列表。 +上面的命令只会给出基本系统的驱动器信息。为了得到存储设备的信息,使用下面的命令来得到存储设备的列表。 # fdisk -l /dev/vda && fdisk -l /dev/sda ![List Storage Drives](http://www.tecmint.com/wp-content/uploads/2014/07/1.jpg) -列出存储设备 +*列出存储设备* **注意**:这里**vda**是虚拟机硬盘,因为我使用的是虚拟机来用于演示,**/dev/sda** 是额外加入的存储。 -### 第一步: 创建用于LUN的LVM ### +### 第一步: 创建用于LUN的LVM驱动器 ### 我们使用**/dev/sda**驱动器来创建LVM。 @@ -49,14 +49,14 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 ![List LVM Drive](http://www.tecmint.com/wp-content/uploads/2014/07/2.jpg) -列出LVM驱动器 +*列出LVM驱动器* -现在让我们如下使用fdisk命令列出驱动器分区。 +现在让我们使用如下fdisk命令列出驱动器分区。 # fdisk -cu /dev/sda -- The option ‘**-c**‘ 关闭DOS兼容模式。 -- The option ‘**-u**‘ 用于列出分区表,给出扇区而不是柱面的大小。 +- 选项 ‘**-c**’ 关闭DOS兼容模式。 +- 选项 ‘**-u**’ 用于列出分区表时给出扇区而不是柱面的大小。 使用**n**创建新的分区。 @@ -109,7 +109,7 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 ![Create LVM Partition](http://www.tecmint.com/wp-content/uploads/2014/07/3.jpg) -创建LVM分区 +*创建LVM分区* 系统重启后,使用fdisk命令列出分区表。 @@ -117,7 +117,7 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 ![Verify LVM Partition](http://www.tecmint.com/wp-content/uploads/2014/07/4.jpg) -验证LVM分区 +*验证LVM分区* ### 第二步: 为LUN创建逻辑卷 ### @@ -125,7 +125,7 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 # pvcreate /dev/sda1 -用iSCSI的名字创建卷组来区分组。 +用iSCSI的名字创建卷组来区分这个卷组。 # vgcreate vg_iscsi /dev/sda1 @@ -148,17 +148,17 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 ![Creating LVM Logical Volumes](http://www.tecmint.com/wp-content/uploads/2014/07/5.jpg) -创建LVM逻辑卷 +*创建LVM逻辑卷* ![Verify LVM Logical Volumes](http://www.tecmint.com/wp-content/uploads/2014/07/6.jpg) -验证LVM逻辑卷 +*验证LVM逻辑卷* -### 第三步: 在Target Server中定义LUN ### +### 第三步: 在目标器中定义LUN ### -我们已经创建了逻辑卷并准备使用LUN,现在我们在target配置中定义LUN,如果这样那么它只能用在客户机中(启动器)。 +我们已经创建了逻辑卷并准备使用LUN,现在我们在目标器配置中定义LUN,只有这样做它才能用在客户机中(发起程序)。 -用你选择的编辑器打开位于‘/etc/tgt/targets.conf’的target配置文件。 +用你选择的编辑器打开位于‘/etc/tgt/targets.conf’的目标器配置文件。 # vim /etc/tgt/targets.conf @@ -179,20 +179,22 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 ![Configure LUNs in Target Server](http://www.tecmint.com/wp-content/uploads/2014/07/7.jpg) -在target中配置LUN +*在target中配置LUN* -- iSCSI 限定名 (iqn.2014-07.com.tecmint:tgt1). -- 随你怎么使用 -- 确定使用目标, 这台服务器中的第一个目标 -- 4. LVM共享特定的LUN。 +上图的解释: -接下来使用下面命令重载**tgd**服务配置。 +1. iSCSI 采取限定名 (iqn.2014-07.com.tecmint:tgt1). +2. 名称随便你 +3. 用于确定目标名, 这是这台服务器中的第一个目标 +4. LVM共享特定的LUN。 + +接下来使用下面的命令重载**tgd**服务配置。 # /etc/init.d/tgtd reload ![Reload Configuration](http://www.tecmint.com/wp-content/uploads/2014/07/8.jpg) -重载配置 +*重载配置* 接下来使用下面的命令验证可用的LUN。 @@ -200,23 +202,22 @@ LUN用于存储,SAN存储大多数有LUN的集群来组成池,LUN由几块 ![List Available LUNs](http://www.tecmint.com/wp-content/uploads/2014/07/9.jpg) -列出可用LUN +*列出可用LUN* ![LUNs Information](http://www.tecmint.com/wp-content/uploads/2014/07/10.jpg) -LUN信息 +*LUN信息* -The above command will give long list of available LUNs with following information. 上面的命令会列出可用LUN的下面这些信息 -- iSCSI 限定名 -- iSCSI 准备使用 -- 默认LUN 0被控制器保留 -- LUN 1是我们定义的target服务器 -- 这里我为每个LUN都定义了4GB -- 在线: 是的,这就是可以使用的LUN +1. iSCSI 限定名 +2. iSCSI 已经准备好 +3. 默认LUN 0被控制器所保留 +4. LUN 1是我们定义的目标器 +5. 这里我为每个LUN都定义了4GB +6. 在线: 是的,这就是可以使用的LUN -现在我们已经使用LVM为target服务器定义了LUN,这可扩展并且支持很多特性,如快照。我们将会在第三部分了解如何用target服务器授权,并且本地挂载远程存储。 +现在我们已经使用LVM为目标器定义了LUN,这可扩展并且支持很多特性,如快照。我们将会在第三部分了解如何用目标器授权,并且本地挂载远程存储。 -------------------------------------------------------------------------------- @@ -224,9 +225,9 @@ via: http://www.tecmint.com/create-luns-using-lvm-in-iscsi-target/ 作者:[Babin Lonston][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.tecmint.com/author/babinlonston/ -[1]:http://www.tecmint.com/create-centralized-secure-storage-using-iscsi-targetin-linux/ \ No newline at end of file +[1]:http://linux.cn/article-4971-1.html \ No newline at end of file From 15d74bcf653856a432cf0a9aa83d0bfbdf1cfa94 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 2 Mar 2015 15:46:48 +0800 Subject: [PATCH 432/725] PUB:20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III @geekpi --- ...p on RHEL or CentOS or Fedora -Part III.md | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) rename {translated/tech => published}/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md (68%) diff --git a/translated/tech/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md b/published/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md similarity index 68% rename from translated/tech/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md rename to published/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md index f4754a6bb8..482733a3a2 100644 --- a/translated/tech/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md +++ b/published/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md @@ -1,33 +1,33 @@ -中心化存储(iSCSI)- “初始器客户端” 在RHEL/CentOS/Fedora上的设置 - 第三部分 -================================================================================ -**iSCSI** 初始化器是一种用于与iSCSI target服务器认证并访问服务器上共享的的LUN的客户端。我们可以在本地挂载的硬盘上部署任何操作系统,只需要安装一个包来与target服务器验证。 +设置iSCSI的发起程序(客户端)(三) +============================ + +**iSCSI** 发起程序是一种用于同 iSCSI 目标器认证并访问服务器上共享的LUN的客户端。我们可以在本地挂载的硬盘上部署任何操作系统,只需要安装一个包来与目标器验证。 ![Client Initiator Setup](http://www.tecmint.com/wp-content/uploads/2014/07/Client-Initiator-Setup.jpg) -初始器客户端设置 +*初始器客户端设置* -#### 功能 #### +### 功能 ### - 可以处理本地挂载磁盘上的任意文件系统 -- 在使用fdisk命令后不需要重启系统 +- 在使用fdisk命令分区后不需要重启系统 -#### 要求 #### +### 前置阅读 ### -- [使用iSCSI Target创建集中化安全存储- 第一部分][1] -- [在Target服务器中使用LVM创建LUN - 第二部分][2] +- [使用iSCSI Target创建集中式安全存储(一)][1] +- [在 iSCSI Target 服务器中使用LVM创建和设置LUN(二)][2] #### 我的客户端设置 #### -- 操作系统 – CentOS release 6.5 (最终版) -- iSCSI Target IP – 192.168.0.50 +- 操作系统 – CentOS 6.5 (Final) +- iSCSI 目标器 IP – 192.168.0.50 - 使用的端口 : TCP 3260 -**Warning**: Never stop the service while LUNs Mounted in Client machines (Initiator). -**Warning**:永远不要在使用LUN的时候在客户端中(初始化器)停止服务。 +**警告**:永远不要在LUN还挂载在客户端(发起程序)时停止服务。 ### 客户端设置 ### -**1.** 在客户端,我们需要安装包‘**iSCSI-initiator-utils**‘,用下面的命令搜索包。 +**1.** 在客户端,我们需要安装包‘**iSCSI-initiator-utils**’,用下面的命令搜索包。 # yum search iscsi @@ -37,29 +37,29 @@ iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs iscsi-initiator-utils-devel.x86_64 : Development files for iscsi-initiator-utils -**2.** 一旦定位了包,就用下面的yum命令安装初始化包。 +**2.** 找到了包,就用下面的yum命令安装初始化包。 # yum install iscsi-initiator-utils.x86_64 -**3.** 安装完毕后,我们需要发现**Target 服务器**上的共享。客户端的命令有点难记,因此我们使用man来的到需要运行的命令列表 +**3.** 安装完毕后,我们需要发现**目标器**上的共享。客户端的命令有点难记,因此我们使用man找到需要运行的命令列表。 # man iscsiadm ![man iscsiadm](http://www.tecmint.com/wp-content/uploads/2014/07/man-iscsiadm.jpg) -man iscsiadm +*man iscsiadm* -**4.** 按下**SHIFT+G** 进入man页的底部并且稍微向上滚动来的到登录的示例命令。下面的发现命令中,需要用我们的**服务器IP地址**来替换。 +**4.** 按下**SHIFT+G** 进入man页的底部并且稍微向上滚动找到示例的登录命令。下面的发现命令中,需要用我们的**服务器IP地址**来替换。 # iscsiadm --mode discoverydb --type sendtargets --portal 192.168.0.200 --discover -**5.** 这里我们从下面的命令中得到了iSCSIi限定名(iqn)。 +**5.** 这里我们从下面的命令输出中找到了iSCSI的限定名(iqn)。 192.168.0.200:3260,1 iqn.2014-07.com.tecmint:tgt1 ![Discover Target](http://www.tecmint.com/wp-content/uploads/2014/07/Discover-Target.jpg) -发现服务器 +*发现服务器* **6.** 要登录就用下面的命令来连接一台LUN到我们本地系统中,这会与服务器验证并允许我们登录LUN。 @@ -67,7 +67,7 @@ man iscsiadm ![Login To Target Server](http://www.tecmint.com/wp-content/uploads/2014/07/Login-To-Target-Server.jpg) -登录到服务器 +*登录到服务器* **注意**:登出使用登录命令并在命令的最后使用logout来替换。 @@ -75,15 +75,15 @@ man iscsiadm ![Logout from Target Server](http://www.tecmint.com/wp-content/uploads/2014/07/Logout-from-Target-Server.jpg) -等出服务器 +*登出服务器* -**7.** 登录服务器后,使用下面的命令列出节点的记录。 +**7.** 登录服务器后,使用下面的命令列出节点的记录行。 # iscsiadm --mode node ![List Node](http://www.tecmint.com/wp-content/uploads/2014/07/List-Node.jpg) -列出节点 +*列出节点* **8.** 显示特定节点的所有数据 @@ -109,7 +109,7 @@ man iscsiadm iface.linklocal_autocfg = .... -**9.** 接着列出使用的磁盘,fdisk会列出所有的认证过的磁盘。 +**9.** 接着列出使用的磁盘,fdisk会列出所有的登录认证过的磁盘。 # fdisk -l /dev/sda @@ -123,7 +123,7 @@ man iscsiadm ![Create New Partition](http://www.tecmint.com/wp-content/uploads/2014/07/Create-New-Partition.jpg) -创建新分区 +*创建新分区* **注意**:在使用fdisk创建新分区之后,我们无需重启,就像使用我们本地的文件系统一样就行。因为这个将远程共享存储挂载到本地了。 @@ -133,7 +133,7 @@ man iscsiadm ![Format New Partition](http://www.tecmint.com/wp-content/uploads/2014/07/Format-New-Partition.jpg) -格式化新分区 +*格式化新分区* **12.** 创建一个目录来挂载新创建的分区 @@ -143,20 +143,20 @@ man iscsiadm ![Mount New Partition](http://www.tecmint.com/wp-content/uploads/2014/07/Mount-New-Partition.jpg) -挂载新分区 +*挂载新分区* **13.** 列出挂载点 # df -Th -- **-T** – Prints files system types. -- **-h** – Prints in human readable format eg : Megabyte or Gigabyte. +- **-T** – 输出文件系统类型 +- **-h** – 以易读的方式显示大小 ![List New Partition](http://www.tecmint.com/wp-content/uploads/2014/07/List-New-Partition.jpg) -列出新分区 +*列出新分区* -**14.** 如果需要永久挂在使用fdtab文件 +**14.** 如果需要永久挂载,使用fdtab文件 # vim /etc/fstab @@ -168,18 +168,18 @@ man iscsiadm ![Auto Mount Partition](http://www.tecmint.com/wp-content/uploads/2014/07/Auto-Mount-Partition.jpg) -自动挂载分区 +*自动挂载分区* **16.** 最后检查我们fstab文件是否有错误。 # mount -av - **-a** – 所有挂载点 -- **-v** – 繁琐模式 +- **-v** – 冗余模式 ![Verify fstab Entries](http://www.tecmint.com/wp-content/uploads/2014/07/Verify-fstab-Entries.jpg) -验证fstab文件 +*验证fstab文件* 我们已经成功完成了我们的客户端配置。现在让我们像本地磁盘一样使用它吧。 @@ -189,10 +189,10 @@ via: http://www.tecmint.com/iscsi-initiator-client-setup/ 作者:[Babin Lonston][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.tecmint.com/author/babinlonston/ -[1]:http://www.tecmint.com/create-centralized-secure-storage-using-iscsi-targetin-linux/ -[2]:http://www.tecmint.com/create-luns-using-lvm-in-iscsi-target/ +[1]:http://linux.cn/article-4971-1.html +[2]:http://linux.cn/article-4972-1.html From 4ed37060b0afcd9f4af251e661da0f303d543124 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Mon, 2 Mar 2015 16:18:56 +0800 Subject: [PATCH 433/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Run Linux Applications From The Terminal In Background Mode.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150115 How To Run Linux Applications From The Terminal In Background Mode.md (100%) diff --git a/translated/share/20150115 How To Run Linux Applications From The Terminal In Background Mode.md b/published/20150115 How To Run Linux Applications From The Terminal In Background Mode.md similarity index 100% rename from translated/share/20150115 How To Run Linux Applications From The Terminal In Background Mode.md rename to published/20150115 How To Run Linux Applications From The Terminal In Background Mode.md From 71ccaba7157eeb522de5319d254f777ef46c7952 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 2 Mar 2015 16:47:26 +0800 Subject: [PATCH 434/725] =?UTF-8?q?20150302-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ications in a Linux System with Trickle.md | 296 ++++++++++++++++++ ...onment using Commandline Tools in Linux.md | 152 +++++++++ ... Passwordless SSH Logon to Ubuntu 14.04.md | 85 +++++ 3 files changed, 533 insertions(+) create mode 100644 sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md create mode 100644 sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md create mode 100644 sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md diff --git a/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md b/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md new file mode 100644 index 0000000000..18607f7f96 --- /dev/null +++ b/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md @@ -0,0 +1,296 @@ +How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle +================================================================================ +Have you ever encountered situations where one application dominated you all network bandwidth? If you have ever been in a situation where one application ate all your traffic, then you will value the role of the trickle bandwidth shaper application. Either you are a system admin or just a Linux user, you need to learn how to control the upload and download speeds for applications to make sure that your network bandwidth is not burned by a single application. + +![Install Trickle Bandwidth Limit in Linux](http://www.tecmint.com/wp-content/uploads/2013/11/Bandwidth-limit-trickle.png) +Install Trickle Bandwidth Limit in Linux + +### What is Trickle? ### + +Trickle is a network bandwidth shaper tool that allows us to manage the upload and download speeds of applications in order to prevent any single one of them to hog all (or most) of the available bandwidth. In few words, trickle lets you control the network traffic rate on a per-application basis, as opposed to per-user control, which is the classic example of bandwidth shaping in a client-server environment, and is probably the setup we are more familiar with. + +### How Trickle Works? ### + +In addition, trickle can help us to define priorities on a per-application basis, so that when overall limits have been set for the entire system, priority apps will still get more bandwidth automatically. To accomplish this task, trickle sets traffic limits to the way in which data is sent to, and received from, sockets using TCP connections. We must note that, other than the data transfer rates, trickle does not modify in any way the behavior of the process it is shaping at any given moment. + +### What Can’t Trickle do? ### + +The only limitation, so to speak, is that trickle will not work with statically linked applications or binaries with the SUID or SGID bits set since it uses dynamic linking and loading to place itself between the shaped process and its associated network socket. Trickle then acts as a proxy between these two software components. + +Since trickle does not require superuser privileges in order to run, users can set their own traffic limits. Since this may not be desirable, we will explore how to set overall limits that system users cannot exceed. In other words, users will still be able to manage their traffic rates, but always within the boundaries set by the system administrator. + +In this article we will explain how to limit the network bandwidth used by applications in a Linux server with trickle. To generate the necessary traffic, we will use ncftpput and ncftpget (both tools are available by installing ncftp) on the client (CentOS 7 server – dev1: 192.168.0.17), and vsftpd on the server (Debian Wheezy 7.5 – dev2: 192.168.0.15) for demonstration purposes. The same instructions also works on RedHat, Fedora and Ubuntu based systems. + +#### Prerequisites #### + +1. For RHEL/CentOS 7/6, [enable the EPEL repository][1]. Extra Packages for Enterprise Linux (EPEL) is a repository of high-quality free and open-source software maintained by the Fedora project and is 100% compatible with its spinoffs, such as Red Hat Enterprise Linux and CentOS. Both trickle and ncftp are made available from this repository. + +2. Install ncftp as follows: + + # yum update && sudo yum install ncftp [On RedHat based systems] + # aptitude update && aptitude install ncftp [On Debian based systems] + +3. Set up a FTP server in a separate server. Please note that although FTP is inherently insecure, it is still widely used in cases when security in uploading or downloading files is not needed. We are using it in this article to illustrate the bounties of trickle and because it shows the transfer rates in stdout on the client, and we will leave the discussion of whether it should or should not be used for another date and time :). + + # yum update && yum install vsftpd [On RedHat based systems] + # aptitude update && aptitude install vsftpd [On Debian based systems] + +Now, edit the /etc/vsftpd/vsftpd.conf file on the FTP server as follows: + + anonymous_enable=NO + local_enable=YES + chroot_local_user=YES + allow_writeable_chroot=YES + +After that, make sure to start vsftpd for your current session and to enable it for automatic start on future boots: + + # systemctl start vsftpd [For systemd-based systems] + # systemctl enable vsftpd + # service vsftpd start [For init-based systems] + # chkconfig vsftpd on + +4. If you chose to set up the FTP server in a CentOS/RHEL 7 droplet with SSH keys for remote access, you will need a password-protected user account with the appropriate directory and file permissions for uploading and downloading the desired content OUTSIDE root’s home directory. + +You can then browse to your home directory by entering the following URL in your browser. A login window will pop up prompting you for a valid user account and password on the FTP server. + + ftp://192.168.0.15 + +If the authentication succeeds, you will see the contents of your home directory. Later in this tutorial you will be able to refresh that page to display the files that have been uploaded during previous steps. + +![FTP Directory Tree](http://www.tecmint.com/wp-content/uploads/2013/11/FTP-Directory-Tree.png) +FTP Directory Tree + +### How to Install Trickle in Linux ### + +1. Install trickle via yum or aptitude. + +To ensure a successful installation, it is considered good practice to make sure the currently installed packages are up-to-date (using yum update) before installing the tool itself. + + # yum -y update && yum install trickle [On RedHat based systems] + # aptitude -y update && aptitude install trickle [On Debian based systems] + +2. Verify whether trickle will work with the desired binary. + +As we explained earlier, trickle will only work with binaries using dynamic, or shared, libraries. To verify whether we can use this tool with a certain application, we can use the well-known ldd utility, where ldd stands for list dynamic dependencies. Specifically, we will look for the presence of glibc (the GNU C library) in the list of dynamic dependencies of any given program because it is precisely that library which defines the system calls involved in communication through sockets. + +Run the following command against a given binary to see if trickle can be used to shape its bandwidth: + + # ldd $(which [binary]) | grep libc.so + +For example, + + # ldd $(which ncftp) | grep libc.so + +whose output is: + + # libc.so.6 => /lib64/libc.so.6 (0x00007efff2e6c000) + +The string between brackets in the output may change from system to system and even between subsequent runs of the same command, since it represents the load address of the library in physical memory. + +If the above command does not return any results, it means that the binary it was run against does not use libc and thus trickle cannot be used as bandwidth shaper in that case. + +### Learn How to Use Trickle ### + +The most basic usage of trickle is in standalone mode. Using this approach, trickle is used to explicitly define the download and upload speeds of a given application. As we explained earlier, for the sake of brevity, we will use the same application for download and upload tests. + +#### Running Trickle in Standalone Mode #### + +We will compare the download and upload speeds with and without using trickle. The -d option indicates the download speed in KB/s, while the -u flag tells trickle to limit the upload speed by the same unit. In addition, we will use the -s flag, which specifies that trickle should run in standalone mode. + +The basic syntax to run trickle in standalone mode is as follows: + + # trickle -s -d [download rate in KB/s] -u [upload rate in KB/s] + +In order to perform the following examples on your own, make sure to have trickle and ncftp installed on the client machine (192.168.0.17 in my case). + +**Example 1: Uploading a 2.8 MB PDF file with and without trickle.** + +We are using the freely-distributable Linux Fundamentals PDF file (available from [here][2]) for the following tests. + +You can initially download this file to your current working directory with the following command: + + # wget http://linux-training.be/files/books/LinuxFun.pdf + +The syntax to upload a file to our FTP server without trickle is as follows: + + # ncftpput -u username -p password 192.168.0.15 /remote_directory local-filename + +Where /remote_directory is the path of the upload directory relative to username’s home, and local-filename is a file in your current working directory. + +Specifically, without trickle we get a peak upload speed of 52.02 MB/s (please note that this is not the real average upload speed, but an instant starting peak), and the file gets uploaded almost instantly: + + # ncftpput -u username -p password 192.168.0.15 /testdir LinuxFun.pdf + +Output: + + LinuxFun.pdf: 2.79 MB 52.02 MB/s + +With trickle, we will limit the upload transfer rate at 5 KB/s. Before uploading the file for the second time, we need to delete it from the destination directory; otherwise, ncftp will inform us that the file at the destination directory is the same that we are trying to upload, and will not perform the transfer: + + # rm /absolute/path/to/destination/directory/LinuxFun.pdf + +Then: + + # trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf + +Output: + + LinuxFun.pdf: 2.79 MB 4.94 kB/s + +In the example above, we can see that the average upload speed dropped to ~5 KB/s. + +**Example 2: Downloading the same 2.8 MB PDF file with and without trickle** + +First, remember to delete the PDF from the original source directory: + + # rm /absolute/path/to/source/directory/LinuxFun.pdf + +Please note that the following cases will download the remote file to the current directory in the client machine. This fact is indicated by the period (‘.‘) that appears after the IP address of the FTP server. + +Without trickle: + + # ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf + +Output: + + LinuxFun.pdf: 2.79 MB 260.53 MB/s + +With trickle, limiting the download speed at 20 KB/s: + + # trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf + +Output: + + LinuxFun.pdf: 2.79 MB 17.76 kB/s + +### Running Trickle in Supervised [unmanaged] Mode ### + +Trickle can also run in unmanaged mode, following a series of parameters defined in /etc/trickled.conf. This file defines how trickled (the daemon) behaves and manages trickle. + +In addition, if we want to set global settings to be used, overall, by all applications, we will need to use the trickled command. This command runs the daemon and allows us to define download and upload limits that will be shared by all the applications run through trickle without us needing to specify limits each time. + +For example, running: + + # trickled -d 50 -u 10 + +Will cause that the download and upload speeds of any application run through trickle be limited to 30 KB/s and 10 KB/s, respectively. + +Please note that you can check at any time whether trickled is running and with what arguments: + + # ps -ef | grep trickled | grep -v grep + +Output: + + root 16475 1 0 Dec24 ? 00:00:04 trickled -d 50 -u 10 + +**Example 3: Uploading a 19 MB mp4 file to our FTP server using with and without trickle.** + +In this example we will use the freely-distributable “He is the gift” video, available for download from [this link][3]. + +We will initially download this file to your current working directory with the following command: + + # wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 + +First off, we will start the trickled daemon with the command listed above: + + # trickled -d 30 -u 10 + +Without trickle: + + # ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 + +Output: + + 2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 36.31 MB/s + +With trickle: + + # trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 + +Output: + + 2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 9.51 kB/s + +As we can see in the output above, the upload transfer rate dropped to ~10 KB/s. + +**Example 4: Downloading the same video with and without trickle** + +As in Example 2, we will be downloading the file to the current working directory. + +Without trickle: + + # ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 + +Output: + + 2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 108.34 MB/s + +With trickle: + + # trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 + +Output: + + 2014-00-1460-he-is-the-gift-360p-eng.mp4: 18.53 MB 29.28 kB/s + +Which is in accordance with the download limit set earlier (30 KB/s). + +**Note:** That once the daemon has been started, there is no need to set individual limits for each application that uses trickle. + +As we mentioned earlier, one can further customize trickle’s bandwidth shaping through trickled.conf. A typical section in this file consists of the following: + + [service] + Priority = + Time-Smoothing = + Length-Smoothing = + +Where, + +- [service] indicates the name of the application whose bandwidth usage we intend to shape. +- Priority allows us to specify a service to have a higher priority relative to another, thus not allowing a single application to hog all the bandwidth which the daemon is managing. The lower the number, the more bandwidth that is assigned to [service]. +- Time-Smoothing [in seconds]: defines with what time intervals trickled will try to let the application transfer and / or receive data. Smaller values (something between the range of 0.1 – 1s) are ideal for interactive applications and will result in a more continuous (smooth) session while slightly larger values (1 – 10 s) are better for applications that need bulk transfer. If no value is specified, the default (5 s) is used. +- Length-Smoothing [in KB]: the idea is the same as in Time-Smoothing, but based on the length of an I/O operation. If no value is specified, the default (10 KB) is used. + +Changing the smoothing values will translate into the application specified by [service] using transfer rates within an interval instead of a fixed value. Unfortunately, there is no formula to calculate the lower and upper limits of this interval as it mainly depends of each specific case scenario. + +The following is a trickled.conf sample file in the CentOS 7 client (192.168.0.17): + + [ssh] + Priority = 1 + Time-Smoothing = 0.1 + Length-Smoothing = 2 + + [ftp] + Priority = 2 + Time-Smoothing = 1 + Length-Smoothing = 3 + +Using this setup, trickled will prioritize SSH connections over FTP transfers. Note that an interactive process, such as SSH, uses smaller time-smoothing values, whereas a service that performs bulk data transfers (FTP) uses a greater value. The smoothing values are responsible for the download and upload speeds in our previous example not matching the exact value specified by the trickled daemon but moving in an interval close to it. + +### Conclusion ### + +In this article we have explored how to limit the bandwidth used by applications using trickle on Fedora-based distributions and Debian / derivatives. Other possible use cases include, but are not limited to: + +- Limiting the download speed via a system utility such as [wget][4], or a torrent client, for example. +- Limiting the speed at which your system can be updated via `[yum][5]` (or `[aptitude][6]`, if you’re in a Debian-based system), the package management system. +- If your server happens to be behind a proxy or firewall (or is the proxy or firewall itself), you can use trickle to set limits on both the download and upload, or communication speed with the clients or the outside. + +Questions and comments are most welcome. Feel free to use the form below to send them our way. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/manage-and-limit-downloadupload-bandwidth-with-trickle-in-linux/ + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/gacanepa/ +[1]:http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/ +[2]:http://linux-training.be/files/books/LinuxFun.pdf +[3]:http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 +[4]:http://www.tecmint.com/10-wget-command-examples-in-linux/ +[5]:http://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/ +[6]:http://www.tecmint.com/dpkg-command-examples/ \ No newline at end of file diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md new file mode 100644 index 0000000000..dcd3fcf919 --- /dev/null +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -0,0 +1,152 @@ +How to Manage KVM Virtual Environment using Commandline Tools in Linux +================================================================================ +In this 4th part of our [KVM series][1], we are discussing KVM environment management using CLI. We use ‘virt-install’ CL tool to create and configure virtual machines, virsh CL tool to create and configure storage pools and qemu-img CL tool to create and manage disk images. + +![KVM Management in Linux](http://www.tecmint.com/wp-content/uploads/2015/02/KVM-Management-in-Linux.jpg) +KVM Management in Linux + +There is nothing new concepts in this article, we just do the previous tasks using command line tools. There is no new prerequisite, just the same procedure, we have discussed in previous parts. + +### Step 1: Configure Storage Pool ### + +Virsh CLI tool is a management user interface for managing virsh guest domains. The virsh program can be used either to run one command by giving the command and its arguments on the shell command line. + +In this section, we will use it to create storage pool for our KVM environment. For more information about the tool, use the following command. + + # man virsh + +**1. Using the command pool-define-as with virsh to define new storage pool, you need also to specify name, type and type’s arguments.** + +In our case, name will be Spool1, type will be dir. By default you could provide five arguments for the type: + +- source-host +- source-path +- source-dev +- source-name +- target + +For (Dir) type, we need the last argumet “target” to specify the path of storage pool, for the other arguments we could use “-” to unspecific them. + + # virsh pool-define-as Spool1 dir - - - - "/mnt/personal-data/SPool1/" + +![Create New Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Create-New-Storage-Pool.png) +Create New Storage Pool + +**2. To check the all storage pools you have in the environment, use the following command.** + + # virsh pool-list --all + +![List All Storage Pools](http://www.tecmint.com/wp-content/uploads/2015/02/List-All-Storage-Pools.png) +List All Storage Pools + +**3. Now it’s time to build the storage pool, which we have defined above with the following command.** + + # virsh pool-build Spool1 + +![Build Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Build-Storage-Pool.png) +Build Storage Pool + +**4. Using the virsh command pool-start to active/enable the storage pool we have just created/built above.** + + # virsh pool-start Spool1 + +![Active Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Active-Storage-Pool.png) +Active Storage Pool + +**5. Check the status of environment storage pools using the following command.** + + # virsh pool-list --all + +![Check Storage Pool Status](http://www.tecmint.com/wp-content/uploads/2015/02/Check-Storage-Pool-Status.png) +Check Storage Pool Status + +You will notice that the status of Spool1 converted to active. + +**6. Configure Spool1 to start by libvirtd service every time automaticlly.** + + # virsh pool-autostart Spool1 + +![Configure KVM Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Configure-Storage-Pool.png) +Configure KVM Storage Pool + +**7. Finally lets display information about our new storage pool.** + + # virsh pool-info Spool1 + +![Check KVM Storage Pool Information](http://www.tecmint.com/wp-content/uploads/2015/02/Check-Storage-Pool-Information.png) +Check KVM Storage Pool Information + +Congratulations, Spool1 is ready to be used lets try to create storage volumes using it. + +### Step 2: Configure Storage Volumes/Disk Images ### + +Now it is disk image’s turn, using qemu-img to create new disk image from Spool1. For more details about qemy-img, use the man page. + + # man qemu-img + +**8. We should specify the qemu-img command “create, check,….etc”, disk image format, the path of disk image you want to create and the size.** + + # qemu-img create -f raw /mnt/personal-data/SPool1/SVol1.img 10G + +![Create Storage Volume](http://www.tecmint.com/wp-content/uploads/2015/02/Create-Storage-Volumes.png) +Create Storage Volume + +**9. By using qemu-img command info, you could get information about your new disk image.** + +![Check Storage Volume Information](http://www.tecmint.com/wp-content/uploads/2015/02/Check-Storage-Volume-Information.png) +Check Storage Volume Information + +**Warning**: Never use qemu-img to modify images in use by a running virtual machine or any other process; this may destroy the image. + +Now its time to create virtual machines in the next step. + +### Step 3: Create Virtual Machines ### + +10. Now with the last and latest part, we will create virtual machines using virt-istall. The virt-install is a command line tool for creating new KVM virtual machines using the “libvirt” hypervisor management library. For more details about it, use: + + # man virt-install + +To create new KVM virtual machine, you need to use the following command with all the details like shown in the below. + +- Name: Virtual Machine’s name. +- Disk Location: Location of disk image. +- Graphics : How to connect to VM “Usually be SPICE”. +- vcpu : Number of virtual CPU’s. +- ram : Amount of allocated memory in megabytes. +- Location : Specify the installation source path. +- Network : Specify the virtual network “Usually be vibr00 bridge”. + + # virt-install --name=rhel7 --disk path=/mnt/personal-data/SPool1/SVol1.img --graphics spice --vcpu=1 --ram=1024 --location=/run/media/dos/9e6f605a-f502-4e98-826e-e6376caea288/rhel-server-7.0-x86_64-dvd.iso --network bridge=virbr0 + +![Create New Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Create-New-Virtual-Machines.png) +Create New Virtual Machine + +**11. You will find also a pop-up virt-vierwer window appears to communicate with virtual machine through it.** + +![Booting Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Booting-Virtual-Machine.jpeg) +Booting Virtual Machine + +![Installation of Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Installation-of-Virtual-Machine.jpeg) +Installation of Virtual Machine + +### Conclusion ### + +This is the latest part of our KVM tutorial, we haven’t covered everything of course. It a shot to scratch the KVM environment so its your turn to search and keep hands dirty using this nice resources. + +- [KVM Getting Started Guide][2] +- [KVM Virtualization Deployment and Administration Guide][3] + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/kvm-management-tools-to-manage-virtual-machines/ + +作者:[Mohammad Dosoukey][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/dos2009/ +[1]:http://www.tecmint.com/install-and-configure-kvm-in-linux/ +[2]:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Getting_Started_Guide/index.html +[3]:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/index.html \ No newline at end of file diff --git a/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md b/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md new file mode 100644 index 0000000000..478cc10009 --- /dev/null +++ b/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md @@ -0,0 +1,85 @@ +How to Setup Passwordless SSH Logon to Ubuntu 14.04 +================================================================================ +Hi all, today we'll gonna learn how we can setup Passwordless SSH Logon to Ubuntu 14.04 "Trusty". Only the workstations having the correct matching key pair (private and public) will be allowed to logon to the SSH server, without the key paring, access will not be allowed. + +Usually, we need to enter username and password combination to connect to an SSH console. If the combination is correct to that of the system's then, we get access to the server else we are denied from the access. But, there is something more secure than Password logon, we have passwordless SSH logon using the encrypted keys. + +If you want to enable this secured option, we can simply disable password-logon and only allow logon using an encryption key. When using encryption keys option, the client computer generates a private and public key pair. The client then must upload the public key to the SSH server authorized_key file. Before access is granted, the server and client computer validate the key pair. If the public key on the server matches the private key submitted via the client then access will be granted else will be denied. + +This is a very secure way authenticating to a SSH server and it’s a recommended method if you wish to implement secure logon with single user SSH logon. Here's a quick step-wise process on how to enable Passwordless SSH logon. + +### 1. Installing Openssh Server ### + +First off all, we'll need to update our local repository index. To do so, we'll first need to run apt-get update as shown below. + + $ sudo apt-get update + +![Updating Repo Index](http://blog.linoxide.com/wp-content/uploads/2015/02/updating-repo-list.png) + +Now, we can install openssh-server by running following command. + + $ sudo apt-get install openssh-server + +![Installing openssh server](http://blog.linoxide.com/wp-content/uploads/2015/02/installing-openssh-server.png) + +### 2. Enabling Openssh Server ### + +Now, we'll want to enable OpenSSH server after we successfully installed it on our Ubuntu 14.04 Operating System. The command to enable/start the server is given as follows. + + $ sudo service ssh start + +OR + + $ sudo /etc/init.d/ssh start + +### 3. Configuring Key Pair ### + +After we have installed our OpenSSH Server and enabled it. We'll now finally wanna go for generating our Public and Private Key Pair. To do that, run the following command in a terminal or console. + + $ ssh-keygen -t rsa + +After running the above command, we'll be prompted to complete a series of tasks. The first will be where to save the keys, press Enter to choose the default location which is in a hidden .ssh folder in the home directory. The next prompt will be to enter the Paraphrase. I personally leave this blank (just press enter) to continue. It will then create the key pair and we’re done. + +![Generating Key Pair](http://blog.linoxide.com/wp-content/uploads/2015/02/generating-key-pair.png) + +After generation of the key pair, we will need to **copy the client’s public key to the SSH server** or host inorder to create trusted relationship with it. We'll need to run the commands below to copy the client public key to the server. + + $ ssh-copy-id user@ip_address + +After the public key is copied to the server, we can now go and disable password logon via SSH. To do that, we'll need to open **/etc/ssh/ssh_config** via a text editor by run the commands below. + + $ sudo nano /etc/ssh/sshd_config + +Now, we'll need to uncomment the lines and set the values as shown below. + +![Configuring sshd Config](http://blog.linoxide.com/wp-content/uploads/2015/02/configuring-sshd_config.png) + +### 4. Restarting the SSH Server ### + +Finally, after we are done configuring SSH Server, we'll want to restart our SSH Server so that all the changes will take affect. To restart one can run the following command in a terminal or the console. + + $ sudo service ssh restart + +OR + + $ sudo /etc/init.d/ssh restart + +![Restarting ssh](http://blog.linoxide.com/wp-content/uploads/2015/02/restarting-ssh.png) + +Finally, we can now ssh in to the server without a password and only from the client having the same key pair not the password. + +### Conclusion ### + +Hurray! We have successfully enabled Passwordless SSH logon. It is a lot secure to enable Encrypted Key Pair SSH logon . This is a very secure way authenticating to a SSH server and it’s a recommended method if you wish to implement secure logon with single user SSH logon. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy Encrypted Secure SSH Login :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/setup-passwordless-ssh-logon-ubuntu-14-04/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ \ No newline at end of file From 110bd128f7b39ba8bf40fadd094362ada9e50ac0 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Mon, 2 Mar 2015 17:19:25 +0800 Subject: [PATCH 435/725] [Translated]20150209 How to back up a Debian system using backupninja.md --- ...ck up a Debian system using backupninja.md | 77 +++++++++---------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/sources/tech/20150209 How to back up a Debian system using backupninja.md b/sources/tech/20150209 How to back up a Debian system using backupninja.md index 97e43f57bf..b58baa3bdc 100644 --- a/sources/tech/20150209 How to back up a Debian system using backupninja.md +++ b/sources/tech/20150209 How to back up a Debian system using backupninja.md @@ -1,64 +1,62 @@ -FSSlc translating - -How to back up a Debian system using backupninja +如何使用 backupninja 来备份一个 Debian 系统 ================================================================================ -Prudence or experience by disaster can teach every [sysadmin][1] the importance of taking frequent system backups. You can do so by writing good old shell scripts, or using one (or more) of the many backup tools available for the job. Thus the more tools you become acquainted with, the better informed decisions you will make when implementing a backup solution. +面临灾难时的小心谨慎或体验可以教会每一个系统管理采取频繁的系统备份的重要性。你可以通过编写存在已久的管用的 shell 脚本,或使用一个(或多个) 适合这项工作的备份工具来完成备份任务。因此,当你要实施一个备份解决方案时,你了解的备份工具越多,你做出的决策就会越明智。 -In this article we will present [backupninja][2], a lightweight and easy-to-configure system backup tool. With the help of programs like **rdiff-backup**, **duplicity**, **mysqlhotcopy** and **mysqldump**, Backupninja offers common backup features such as remote, secure and incremental file system backups, encrypted backup, and MySQL/MariaDB database backup. You can selectively enable status email reports, and can back up general hardware and system information as well. One key strength of backupninja is a built-in console-based wizard (called **ninjahelper**) that allows you to easily create configuration files for various backup scenarios. +在这篇文章中,我们将为你介绍 [backupninja][2] ,一个轻量且易于配置的系统备份工具。在诸如 **rdiff-backup**, **duplicity**, **mysqlhotcopy** 和 **mysqldump** 等程序的帮助下, Backupninja 可以提供常用的备份功能,如执行远程的、安全的和增量式的文件系统备份,加密备份以及 MySQL/MariaDB 数据库备份。你可以选择性地开启使用 email 进行状态报告功能,也可以对一般的硬件和系统的信息进行备份。 backupninja 的一个关键功能是它拥有一个内建的基于控制台的向导程序(被称为 **ninjahelper**),而后者允许你为不同的备份情景轻松地创建配置文件。 -The downside, so to speak, is that backupninja requires other "helper" programs to be installed in order to take full advantage of all its features. While backupninja's RPM package is available for Red Hat-based distributions, backupninja's dependencies are optimized for Debian and its derivatives. Thus it is not recommended to try backupninja for Red Hat based systems. +如果非要说的话,backupninja 的缺点是:为了充分使用其所有的功能,它要求一些其他“助手”程序已经被安装在了计算机中。尽管 backupninja 有针对基于 Red Hat(红帽) 的发行版本的 RPM 安装包,但 backupninja 针对 Debian 和它的衍生发行版本的依赖进行了优化。所以不建议在基于 Red Hat 的系统上尝试 backupninja 。 -In this tutorial, we will cover the backupninja installation for Debian-based distributions. +在这篇教程中,我们将介绍如何在基于 Debian 的发行版本上安装 backupninja 。 -### Installing Backupninja ### - -Run the following command as root: +### 安装 Backupninja ### + +以 root 账户来运行下面的命令: # aptitude install backupninja -During installation, several files and directories will be created: +在安装的过程中,有几个文件和目录将被创建: -- **/usr/sbin/backupninja** is the main bash shell script. -- **/etc/cron.d/backupninja**, by default, instructs cron to run the main script once per hour. -- **/etc/logrotate.d/backupninja** rotates the logs created by the program. -- **/etc/backup.d/** is the directory where the configuration files for backup actions reside. -- **/etc/backupninja.conf** is the main configuration file that includes general options. It is well commented and explains each option in detail. -- **/usr/share/backupninja** is the directory where the scripts used by backupninja are located (aka "handlers"). These are the scripts which are in charge of doing the actual work. In this directory you will also find .helper files, which are used to configure and set up ninjahelper menus. -- **/usr/share/doc/backupninja/examples** contains templates for action configuration files (the kind of files that are created through ninjahelper). +- **/usr/sbin/backupninja** 是 bash shell 主脚本; +- **/etc/cron.d/backupninja**, 默认情况下,构建 cron 任务来每隔一个小时运行上面的主脚本; +- **/etc/logrotate.d/backupninja** 处理由 backupninja 程序产生的日志;(注:我不知道这里的 rotate 该如何翻译) +- **/etc/backup.d/** 是备份操作的配置文件驻留的目录; +- **/etc/backupninja.conf** 是包含一般选项的主配置文件。这个文件带有良好的注释且详细解释了每个选项的含义; +- **/usr/share/backupninja** 是那些被 backupninja 使用的脚本所处的目录。这些脚本文件负责执行实际的工作。在这个目录中,你还可以找到 `.helper` 文件,它们可以被用来配置和设定 ninjahelper 的菜单; +- **/usr/share/doc/backupninja/examples** 含有操作配置文件(即通过 ninjahelper 产生的文件)的模板。 -### Running Ninjahelper for the First Time ### +### 首次运行 Ninjahelper ### -When we try to launch ninjahelper, we can see that an internal dependency may be required. If prompted, enter "yes" and press the ENTER key to install dialog (a tool that displays user-friendly dialog boxes from shell scripts). +当我们尝试启动 ninjahelper 时,我们可以看到一个内部依赖可能会被需要。假如系统进行了提示,请输入 “yes” 并敲下回车键来安装 dialog(一个用于从 shell 脚本中显示友好对话框的工具)。 ![](https://farm8.staticflickr.com/7537/15700597667_6618fbc142_z.jpg) -When you press Enter after typing yes, backupninja will install dialog and present the following screen once it's done. +当你在键入 yes 后再敲回车键时,backupninja 将会安装 dialog,一旦安装完成,将呈现出下面的截屏: ![](https://farm8.staticflickr.com/7469/15884374871_29f1c9acf1_z.jpg) -#### Example 1: Back up Hardware and System Info #### +#### 案例 1: 备份硬件和系统信息 #### -After launching ninjahelper, we will create a new backup action: +在启动了 ninjahelper 之后,我们将创建一个新的备份操作: ![](https://farm9.staticflickr.com/8637/15885715132_eb3156678e_z.jpg) -If necessary helper programs are not installed, we will be presented with the following screens. Disregard this step if these packages have already been installed on your system. +如果必要的助手程序没有被安装,下面的截屏将会呈现在我们眼前。假如这些软件包已经在你的系统上安装了,请跳过这一步。 ![](https://farm8.staticflickr.com/7508/15700315139_4c6117ef32_z.jpg) -The next step consists of selecting the items that you want to be a part of this backup. The first four are selected by default, but you can deselect them by pressing the spacebar. +接下来的一步需要你选取相关条目来作为此次备份任务的一部分。前四个条目已经默认被选上了,但你可以通过按空格键来撤消选择。 ![](https://farm8.staticflickr.com/7507/15699051870_65abaf52e5_z.jpg) -Once you are done, press OK to continue. You will be able to choose whether you want to use the default configuration file for this backup action (/etc/backup.d/10.sys), or if you want to create a new one. In the latter case, a new file with the same contents as the default one will be created under the same directory but named 11.sys, and so on for future system backup actions. Note that you can edit the configuration file once it's created with your preferred text editor. +一旦你完成了上面的步骤,按 OK 选项来继续。接着你将能够选择 是愿意使用默认的配置文件(/etc/backup.d/10.sys)来完成这次备份操作,还是创建一个新的配置文件。若为后者,一个含有与默认配置文件内容相同的文件将会在相同的目录下被创建,但它被命名为 11.sys,后续的备份操作将会创建类似的文件(注:只不过命名的序号不同)。需要说明的是一旦这个新的配置文件被创建,你便可以使用你喜爱的文本编辑器来编辑该文件。 ![](https://farm9.staticflickr.com/8654/15885715072_1e6126e929_o.png) -#### Example 2: Incremental Rsync Pull Backup of a Remote Directory #### +#### 案例 2: 一个远程目录的增量式 Rsync 拉取备份 #### -As you most likely know, rsync is widely used to synchronize files and folders over a network. In the following example we will discuss an approach to take incremental pull backups of a remote directory with hardlinking to save historical data and store them in our local file server. This approach will help us save space and increase security on the server side. +正如你最有可能知道的那样, rsync 被广泛地用于通过网络同步文件或文件夹。在接下来的例子中,我们将讨论一个使用硬链接来为一个远程目录做增量式拉取备份的方法,它被用来保存历史数据以及在我们本地的文件服务器中恢复这些历史数据。这个方法将帮助我们节省空间并增强位于服务器端的安全性。 -**Step 1**: Write a custom script in the /etc/backup.d directory with the following contents and chmod it to 600. Note that this directory may contain, besides plain configuration files, scripts that you want to run when backupninja is executed, with the advantage of using variables present in the main configuration file. +**步骤 1**:编写一个位于 `/etc/backup.d`的带有如下内容的自定义脚本,并将它的权限设置为 600 。需要说明的是,除了一般的配置文件,这个目录可能还包含当 backupninja 被执行时你想运行的一些脚本文件,它们可以发挥出位于主配置文件中的变量的优势。 # REMOTE USER user=root @@ -74,36 +72,35 @@ As you most likely know, rsync is widely used to synchronize files and folders o # RSYNC rsync -av --delete --recursive --link-dest=$localdirold $user@$host:$remotedir $localdir -In the above configuration, the '--link-dest' option of rsync is use to hardlink unchanged files (in all attributes) from $localdir-old to the destination directory ($localdir). +在上面的配置中, rsync 的 ‘--link-dest’ 选项的作用是为位于 $localdir-old 目录中那些没有改变的文件(包含所有属性) 硬链接到目标目录 ($localdir)。 -**Step 2**: Before backupninja is run for the first time, the parent directory (/home/gacanepa in this case) is empty. The first time we execute: +**步骤 2**:在 backupninja 第一次运行之前,上层目录(这个例子中指的是 /home/gacanepa) 是空的。第一次我们执行下面的命令: # backupninja -n -the backup.0 directory is created, and later in the process its name is changed to backup.1. +backup.0 目录就被创建了,并在接下来的过程中,它的名称将会被更改为 backup.1。 -The second time we run backupninja, backup.0 is re-created and backup.1 is kept. +当我们第二次运行 backupninja 时, backup.0 将会被重新创建,而 backup.1 被保留。 ![](https://farm8.staticflickr.com/7581/15700597497_0e0cd89ab9.jpg) -**Step 3**: Verify that the contents of backup.1 are hard links to the files in backup.0 by comparing the respective inode numbers and directory sizes. +**步骤 3**: 确保 backup.1 里面的文件硬链接到 backup.0 里的文件,我们可以通过比较文件的 inode( i 节点) 数和目录的大小来达到此目的。 ![](https://farm9.staticflickr.com/8636/15700315029_e922ce771b.jpg) -### Conclusion ### +### 总结 ### -Backupninja is not only a classic backup tool, but also an easy-to-configure utility. You can write your own handlers to run backupninja as per the individual configuration files located in /etc/backup.d, and you can even write helpers for ninjahelper in order to include them in its main interface. +Backupninja 不仅是一个经典的备份工具,它也是一个易于配置的实用程序。你可以通过编写你自己的 handler(注:我不知道该如何翻译 handler 这个单词) 来运行 backupninja 并将它们作为位于 `/etc.backup.d` 的个人配置文件。甚至你还可以为 ninjahelper 编写助手程序,以达到将它们包括在 ninjahelper 的主界面上。 -For example, if you create a handler named xmodulo in /usr/share/backupninja, it will run by default every file with the .xmodulo extension in /etc/backup.d. If you decide you want to add your xmodulo handler to ninjahelper, you can write the corresponding helper as xmodulo.helper. In addition, if you want backupninja to run an arbitrary script, just add it to /etc/backup.d and you are good to go. - -Feel free to leave your comments, questions, or suggestions, using the form below. we will be more than glad to hear from you. +例如,假如你在 `/usr/share/backupninja`目录中创建了一个名为 modulo 的 handler,它将自动运行那些位于 `/etc/backup.d` 目录中以 .xmodulo 为后缀的每个文件。如果你决定添加你的 xmodulo handler 到 ninjahelper 中, 你可以编写相应的助手程序,即 xmodulo.helper 。另外,假如你想 让 backupninja 运行任意一个脚本,只需把它添加到 `/etc/backup.d` 目录中,这样你的目的便可以达到了。 +欢迎使用下面的评论框来留下你的评论、问题或建议。听到你的回应将会使我们很高兴。 -------------------------------------------------------------------------------- via: http://xmodulo.com/backup-debian-system-backupninja.html 作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) +译者:[FSSlc](https://github.com/FSSlc) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a084066cd833531045425b8ac80b76919df38b90 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Mon, 2 Mar 2015 17:21:36 +0800 Subject: [PATCH 436/725] =?UTF-8?q?=E5=B0=86=E7=BF=BB=E8=AF=91=E5=AE=8C?= =?UTF-8?q?=E7=9A=84=E6=96=87=E7=AB=A0=E7=A7=BB=E5=8A=A8=E5=88=B0=20transl?= =?UTF-8?q?ated=20=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150209 How to back up a Debian system using backupninja.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150209 How to back up a Debian system using backupninja.md (100%) diff --git a/sources/tech/20150209 How to back up a Debian system using backupninja.md b/translated/tech/20150209 How to back up a Debian system using backupninja.md similarity index 100% rename from sources/tech/20150209 How to back up a Debian system using backupninja.md rename to translated/tech/20150209 How to back up a Debian system using backupninja.md From 403c84a7ff65720e24526e758c054ecb77fc5d2b Mon Sep 17 00:00:00 2001 From: martin qi Date: Mon, 2 Mar 2015 19:34:32 +0800 Subject: [PATCH 437/725] translating --- ...302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md b/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md index 478cc10009..58c6351003 100644 --- a/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md +++ b/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md @@ -1,3 +1,5 @@ +translating by martin. + How to Setup Passwordless SSH Logon to Ubuntu 14.04 ================================================================================ Hi all, today we'll gonna learn how we can setup Passwordless SSH Logon to Ubuntu 14.04 "Trusty". Only the workstations having the correct matching key pair (private and public) will be allowed to logon to the SSH server, without the key paring, access will not be allowed. @@ -82,4 +84,4 @@ via: http://linoxide.com/ubuntu-how-to/setup-passwordless-ssh-logon-ubuntu-14-04 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://linoxide.com/author/arunp/ \ No newline at end of file +[a]:http://linoxide.com/author/arunp/ From 507f0091b2dc22735eabd39f9f6925631c7d569f Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Mon, 2 Mar 2015 22:34:55 +0800 Subject: [PATCH 438/725] Update 20150227 Bringing a Bunch of Best Known Linux Network Tools.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- ...0227 Bringing a Bunch of Best Known Linux Network Tools.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md b/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md index 207abb0530..b5f8f6273e 100644 --- a/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md +++ b/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md @@ -1,3 +1,5 @@ +FSSlc translating + Bringing a Bunch of Best Known Linux Network Tools ================================================================================ It is very useful to use command line tools to monitor the network on your system and there are a tons of them out there available for the linux user such as nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed and speedometer. @@ -441,4 +443,4 @@ via: http://linoxide.com/monitoring-2/network-monitoring-tools-linux/ [7]:http://www.isotton.com/utils/cbm/ [8]:https://github.com/tgraf/bmon/ [9]:http://www.tcpdump.org/ -[10]:http://www.ntop.org/ \ No newline at end of file +[10]:http://www.ntop.org/ From 3670e03bf68864a3153e5523924865d3dbb458f9 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 3 Mar 2015 13:40:39 +0800 Subject: [PATCH 439/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Default Instead of Ubuntu Software Center.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md index a8032e03ca..9e6499eb2b 100644 --- a/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md +++ b/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md @@ -1,12 +1,12 @@ -如何使 GDebi 代替 Ubuntu Software Center 作为默认的 deb 包安装器 +如何使 GDebi 默认代替 Ubuntu 软件中心 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Make_GDebi_Default.jpeg) -假如你使用 Ubuntu 或像 Elementary OS Freya 一样的基于 Ubuntu 的 Linux 发行版本,也许你使用 Ubuntu 软件中心 来安装 `.deb` 可执行文件。对于查找和安装应用, Ubuntu 软件中心 是一个很好的应用,但它会消耗很多资源且运行速度缓慢。这就是为什么我更偏爱使用 [App Grid,一个 Ubuntu 软件中心 的轻量替代品][1] 的原因。 +如果你使用 Ubuntu 或基于 Ubuntu 的 Linux 发行版本,比如Elementary OS Freya,也许你使用 Ubuntu 软件中心来安装 `.deb` 可执行文件。对于查找和安装应用,Ubuntu 软件中心是一个很好的应用,但它会消耗很多资源且运行速度缓慢。这就是为什么我更偏爱使用 [一个 Ubuntu 软件中心的轻量级替代品——App Grid][1] 的原因。 -现在,假如你只是尝试安装一个 `.deb` 文件, 我不会向你推荐 Ubuntu 软件中心 或 App Grid ,我的建议为 GDebi,一个安装 Debian 可执行文件的专用程序。它极其轻量,且专注于安装 `.deb` 文件。关于 GDebi 最有用的功能是它也可以为你展示出将要安装的程序的依赖。 +现在,假如你只是尝试安装一个 `.deb` 文件,我不会向你推荐 Ubuntu 软件中心或 App Grid ,我的建议为 GDebi,一个安装 Debian 可执行文件的专用程序。它极其轻量,且专注于安装 `.deb` 文件。GDebi 最有用的功能是它也可以为你展示出将要安装的程序的依赖。 -在这篇文章中,我们将见证 ** 如何安装 GDebi 和使用它代替 Ubuntu 软件中心 作为默认的安装器**。 +在这篇文章中,我们将看一看 **如何安装 GDebi 以及使用它代替 Ubuntu 软件中心作为默认的安装器**。 ### 在 Ubuntu 和其他 Linux 发行版本中安装 GDebi ### @@ -16,7 +16,7 @@ ### 使得 GDebi 成为默认的 `.deb`包安装器 ### -一旦你安装了 GDebi,就该是看看如何使它成为安装 `.deb` 文件的默认应用的时刻了。请读者注意在这篇教程中 我使用的是 Elementary OS Freya ,但下面的步骤对于所有基于 Ubuntu 的发行版本都是适用的。 +一旦你安装了 GDebi,就是时候来看看如何使它成为安装 `.deb` 文件的默认应用了。请读者注意在这篇教程中我使用的是 Elementary OS Freya ,但下面的步骤对于所有基于 Ubuntu 的发行版本都是适用的。可能截屏显示会有点不同。 首先下载一个 `.deb`文件。例如你已经下载了一个 Google Chrome 的 `.deb`包。进入下载目录并右击该 `.deb`文件。在这里,接着选择 **属性**选项。 @@ -26,9 +26,9 @@ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/GDebi_default_Ubuntu.jpeg) -这样下次你双击一个 `.deb` 文件,便会自动打开 GDebi 来安装这个`.deb` 文件。使用这样轻量的应用的确是一个[加速 Ubuntu][2] 或其他 Linux 系统的好方法。 +这样下次你双击一个 `.deb` 文件,便会自动打开 GDebi 来安装这个`.deb` 文件。使用这样轻量级的应用的确是一个[加速 Ubuntu][2] 或其他 Linux 系统的好方法。 -你有什么意见呢?对于安装应用,你仍然偏爱于 Ubuntu 软件中心 还是 GDebi 呢?抑或,假如你是一个守旧派,也许你更喜欢 [新立得软件包管理器(Synaptic Package Manager)][3]? 哪一个是你的最爱呢? +你怎么看呢?对于安装应用,你仍然偏爱 Ubuntu 软件中心还是 GDebi 呢?如果你是一个守旧派,也许你更喜欢 [新立得软件包管理器(Synaptic Package Manager)][3]?那么,哪一个是你的最爱? -------------------------------------------------------------------------------- @@ -36,7 +36,7 @@ via: http://itsfoss.com/gdebi-default-ubuntu-software-center/ 作者:[Abhishek][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 5c41ea0a2a13013dc5a047b15d3735d533345e4b Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 3 Mar 2015 13:55:41 +0800 Subject: [PATCH 440/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...How To Make GDebi Default Instead of Ubuntu Software Center.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md (100%) diff --git a/translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/published/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md similarity index 100% rename from translated/tech/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md rename to published/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md From 711098662457046a3ed63da6be55adabd575244b Mon Sep 17 00:00:00 2001 From: theo-l Date: Tue, 3 Mar 2015 10:48:11 -0300 Subject: [PATCH 441/725] theo-l translating --- ...0150121 How to Monitor Network Usage with nload in Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md index afbfa4eab6..511b15fd64 100644 --- a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md +++ b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md @@ -1,3 +1,4 @@ +theo-l translating How to Monitor Network Usage with nload in Linux ================================================================================ nload is a free linux utility that can help the linux user or sysadmin to monitor network traffic and bandwidth usage in real time by providing two simple graphs: one per incoming traffic and one for outgoing traffic. @@ -203,4 +204,4 @@ via: http://linoxide.com/monitoring-2/monitor-network-usage-nload/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/oltjano/ -[1]:http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz \ No newline at end of file +[1]:http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz From 0b918c89d137f30454c1ee65503129c340b6a564 Mon Sep 17 00:00:00 2001 From: theo-l Date: Tue, 3 Mar 2015 18:07:28 -0300 Subject: [PATCH 442/725] translating --- ...50121 How to Monitor Network Usage with nload in Linux.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md index 511b15fd64..1ab8f35e95 100644 --- a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md +++ b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md @@ -1,10 +1,15 @@ theo-l translating How to Monitor Network Usage with nload in Linux +在linux中如何通过nload来监控网络使用情况 ================================================================================ nload is a free linux utility that can help the linux user or sysadmin to monitor network traffic and bandwidth usage in real time by providing two simple graphs: one per incoming traffic and one for outgoing traffic. +nload 是一个免费的linux工具,通过提供两个简单的图形化界面来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个作为进入流量,一个作为流出流量. I really like to use **nload** to display information on my screen about the current download speed, the total incoming traffic, and the average download speed. The graphs reported by nload tool are very easy to interpret and what is the most important thing they are very helpful. + + + According to the manual pages it monitors all network devices by default, but you can easily specify the device you want to monitor and also switch between different network devices using the arrow keys. There are many options avaliable such as -t to determine refresh interval of the display in milliseconds (the default value of interval is 500), -m to show multiple devices at the same time(traffic graphs are not shown when this option is used), -u to set the type of unit used for the display of traffic numbers and many others that we are going to explore and practise in this tutorial. ### How to install nload on your linux machine ### From c5ab4078938c6a6e45e5446f33a1e286bd1b5161 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Wed, 4 Mar 2015 10:04:42 +0800 Subject: [PATCH 443/725] [translating] 20150211 25 Tips for Intermediate Git Users --- sources/tech/20150211 25 Tips for Intermediate Git Users.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150211 25 Tips for Intermediate Git Users.md b/sources/tech/20150211 25 Tips for Intermediate Git Users.md index a4dcb2b546..71ead3ad6a 100644 --- a/sources/tech/20150211 25 Tips for Intermediate Git Users.md +++ b/sources/tech/20150211 25 Tips for Intermediate Git Users.md @@ -1,3 +1,4 @@ +zpl1025 25 Tips for Intermediate Git Users ================================================================================ I’ve been using git for about 18 months now and thought I knew it pretty well. Then we had [Scott Chacon][1] from GitHub over to do some training at [LVS, a supplier/developer of betting/gaming software][2] (where contracted until 2013) and I learnt a ton in the first day. @@ -466,4 +467,4 @@ via: https://www.andyjeffries.co.uk/25-tips-for-intermediate-git-users/ [a]:https://www.andyjeffries.co.uk/author/andy-jeffries/ [1]:http://gitcasts.com/about -[2]:http://www.lvs.co.uk/ \ No newline at end of file +[2]:http://www.lvs.co.uk/ From ed9edea7e1da37542fd84c1d042317f31b9d180c Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 10:57:55 +0800 Subject: [PATCH 444/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md translating by JeffDing --- ...19 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 346937d2b9..3b732a2d7b 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -1,3 +1,4 @@ +translating by JeffDing Ubuntu 15.04 Finally Lets You Set Menus To ‘Always Show’ ================================================================================ **If you hate the way that Unity’s global menus fade out of view after you mouse away, Ubuntu 15.04 has a little extra to win you around.** @@ -38,4 +39,4 @@ via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option [a]:https://plus.google.com/117485690627814051450/?rel=author [1]:http://www.omgubuntu.co.uk/2014/02/locally-integrated-menus-ubuntu-14-04 -[2]:http://www.omgubuntu.co.uk/2014/03/minimize-click-launcher-option-ubuntu-14-04 \ No newline at end of file +[2]:http://www.omgubuntu.co.uk/2014/03/minimize-click-launcher-option-ubuntu-14-04 From c4ec73a213a3c50bc2fef8ad5d7341f2b170600a Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:18:56 +0800 Subject: [PATCH 445/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...u 15.04 Finally Lets You Set Menus ToAlways Show.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 3b732a2d7b..3d4928847d 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -1,15 +1,15 @@ translating by JeffDing -Ubuntu 15.04 Finally Lets You Set Menus To ‘Always Show’ +Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ ================================================================================ -**If you hate the way that Unity’s global menus fade out of view after you mouse away, Ubuntu 15.04 has a little extra to win you around.** +**如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野, Ubuntu 15.04 有一些额外附加去实现这点.** ![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/locally-integrated-menus-in-ubuntu.png) -The latest build of Unity for Ubuntu 15.04, currently sitting in the ‘proposed’ channel, offers an option to **make app menus visible in Ubuntu**. +最新的Ubuntu 15.04的Unity界面通过在提议通道提供了一个选项**使应用程序菜单在Ubuntu中可见**. -No fading, no timeout, no missing menus. +不时尚, 不过时, 没有丢失的菜单. -The drawback for now is that it can currently only be enabled through a dconf switch and not a regular user-facing option. +最大的缺点是现在它目前只能通过dconf开关,而不是常规的面向用户的选项设置。 I’d hope (if not expect) that an option to set the feature is added to the Ubuntu System Settings > Appearance section as development continues. From 19ac6760ab151d0e6eb1626a52ef8acb51efb51b Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:19:53 +0800 Subject: [PATCH 446/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 3d4928847d..a5f4abf599 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -9,7 +9,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 不时尚, 不过时, 没有丢失的菜单. -最大的缺点是现在它目前只能通过dconf开关,而不是常规的面向用户的选项设置。 +最大的缺点是现在它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 I’d hope (if not expect) that an option to set the feature is added to the Ubuntu System Settings > Appearance section as development continues. From d869e32523654ef1c97485ae5c9e1c0c3acf9c6c Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:24:07 +0800 Subject: [PATCH 447/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ... Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index a5f4abf599..21cf1516c5 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -11,9 +11,10 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 最大的缺点是现在它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 -I’d hope (if not expect) that an option to set the feature is added to the Ubuntu System Settings > Appearance section as development continues. +我希望(如果不是期望)能有一个选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 + +现在,如果你在Ubuntu15.04,并在“建议”的更新通道启用后,你会发现这个开关存在于在COM>规范>统一>“始终显示菜单”。 -Right now, if you’re on Ubuntu 15.04 and have the “Proposed” update channel enabled, you should find this switch waiting in **com > canonical > unity >** ‘always show menus’. ### Better Late Than Never? ### From 2f52b4874d1b189567d536b43d207e096caa22c6 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:33:50 +0800 Subject: [PATCH 448/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 21cf1516c5..0343fc68b5 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -11,7 +11,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 最大的缺点是现在它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 -我希望(如果不是期望)能有一个选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 +我希望(如果不是期望)能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 现在,如果你在Ubuntu15.04,并在“建议”的更新通道启用后,你会发现这个开关存在于在COM>规范>统一>“始终显示菜单”。 From 992ea54bf0db391df805f914db50393e8c37da1e Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:39:31 +0800 Subject: [PATCH 449/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 0343fc68b5..86d1e05a7f 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -13,7 +13,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 我希望(如果不是期望)能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 -现在,如果你在Ubuntu15.04,并在“建议”的更新通道启用后,你会发现这个开关存在于在COM>规范>统一>“始终显示菜单”。 +现在,如果你使用的是Ubuntu15.04,并启用“建议”的更新通道后,你会发现这个开关存在于在COM>规范>统一>“始终显示菜单”。 ### Better Late Than Never? ### From acaf293b7a6632e3ace1fb1534b1034b33cf9de4 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:41:41 +0800 Subject: [PATCH 450/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...9 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 86d1e05a7f..9c9ec25297 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -9,7 +9,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 不时尚, 不过时, 没有丢失的菜单. -最大的缺点是现在它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 +最大的缺点是它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 我希望(如果不是期望)能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 @@ -33,7 +33,7 @@ A year on from that we finally get an option to make application menus always sh via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option 作者:[Joey-Elijah Sneddon][a] -译者:[译者ID](https://github.com/译者ID) +译者:[译者ID](https://github.com/JeffDing) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 260e8617ef5fbb77e35f4ffa566fe04c2ef796d9 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:42:14 +0800 Subject: [PATCH 451/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...9 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 9c9ec25297..07d655abb3 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -16,7 +16,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 现在,如果你使用的是Ubuntu15.04,并启用“建议”的更新通道后,你会发现这个开关存在于在COM>规范>统一>“始终显示菜单”。 -### Better Late Than Never? ### +### 迟到总比没有要好? ### Developers plan to backport the option to Ubuntu 14.04 LTS in the next SRU (assuming nothing unexpected crops up during testing). @@ -33,7 +33,7 @@ A year on from that we finally get an option to make application menus always sh via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option 作者:[Joey-Elijah Sneddon][a] -译者:[译者ID](https://github.com/JeffDing) +译者:[JeffDing](https://github.com/JeffDing) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 171f59af7f60028ff84f022459b08285fb5f4e31 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 11:48:35 +0800 Subject: [PATCH 452/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 07d655abb3..e908406d79 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -18,7 +18,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ ### 迟到总比没有要好? ### -Developers plan to backport the option to Ubuntu 14.04 LTS in the next SRU (assuming nothing unexpected crops up during testing). +开发者计划在Ubuntu14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 Locally Integrated Menus (LIM) debuted in Ubuntu 14.04 LTS to much appreciation, being widely seen as the best compromise between those who liked the simplicity of the “hidden” approach and those who disliked the mouse and trackpad aerobics using it required. From 059987c2d50418fc72eb43f8d3ffd939c2916817 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 12:33:44 +0800 Subject: [PATCH 453/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...untu 15.04 Finally Lets You Set Menus ToAlways Show.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index e908406d79..a06cc01e17 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -20,13 +20,13 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 开发者计划在Ubuntu14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 -Locally Integrated Menus (LIM) debuted in Ubuntu 14.04 LTS to much appreciation, being widely seen as the best compromise between those who liked the simplicity of the “hidden” approach and those who disliked the mouse and trackpad aerobics using it required. +本地集成菜单(LIM)在Ubuntu 14.04 LTS 首次获得了欣赏,被广泛认为在那些喜欢隐藏方式的和那些不喜欢必须使用鼠标和触摸板的人之间的最佳的这种方法 -While locally integrated menus brought us half way to silencing the criticisms levelled at this aspect of Unity, the default “fade in/fade out” behaviour left an itch unscratched. +虽然本地集成菜单给我们带来了半路上沉默的批评在统一方面,默认的“淡入/淡出”行为给我们留下了令人发痒的伤痕 -The past few releases of Ubuntu has seen proactive addressing of concerns and issues experienced by its earlier UX decisions. After several years on the ‘to do’ list [we finally got Locally Integrated Menus last year][1], as well as an unsupported [option to minimise and restore apps to the Unity Launcher][2] by clicking on their icon. +在Ubuntu 过去的几个版本中已经能够看到积极的去解决早期UX的经历过的关切的问题。在经过几年“打算去做”的列表[我们去年终于得到了本地集成菜单][1],以及不支持的通过点击图标实现[减少和恢复Unity启动程序中不支持的应用程序的选项]。 -A year on from that we finally get an option to make application menus always show, no matter where our mouse is. Better late than never, right? +一年以来我们终于得到一个选项以使应用程序菜单始终显示,无论我们的鼠标在哪里。迟来总比没有好,对不对? -------------------------------------------------------------------------------- From b4d37d35228798b3c3aed16e626c71a153af388a Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 12:34:31 +0800 Subject: [PATCH 454/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index a06cc01e17..945159940f 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -20,7 +20,7 @@ Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ 开发者计划在Ubuntu14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 -本地集成菜单(LIM)在Ubuntu 14.04 LTS 首次获得了欣赏,被广泛认为在那些喜欢隐藏方式的和那些不喜欢必须使用鼠标和触摸板的人之间的最佳的这种方法 +本地集成菜单(LIM)在Ubuntu 14.04 LTS 首次获得了欣赏,被广泛认为在那些喜欢隐藏方式的和那些不喜欢必须使用鼠标和触摸板的人之间的最佳的折衷方法 虽然本地集成菜单给我们带来了半路上沉默的批评在统一方面,默认的“淡入/淡出”行为给我们留下了令人发痒的伤痕 From 6d400690c447e5e7ee2f787ee7fccd91817bc799 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 12:36:23 +0800 Subject: [PATCH 455/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 945159940f..0c16741515 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -1,5 +1,5 @@ translating by JeffDing -Ubuntu 15.04 最终你可以设置你的菜单 ‘始终可见’ +Ubuntu 15.04 最终实现你可以设置你的菜单 ‘始终可见’ ================================================================================ **如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野, Ubuntu 15.04 有一些额外附加去实现这点.** From a76f0c2e9802c424c672cbdf991c699608809403 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 12:37:02 +0800 Subject: [PATCH 456/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...0119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 1 - 1 file changed, 1 deletion(-) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 0c16741515..95678c9466 100644 --- a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -1,4 +1,3 @@ -translating by JeffDing Ubuntu 15.04 最终实现你可以设置你的菜单 ‘始终可见’ ================================================================================ **如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野, Ubuntu 15.04 有一些额外附加去实现这点.** From 15138b1fb2c903bd6822c342cf90f0021ef13c09 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 12:43:53 +0800 Subject: [PATCH 457/725] translate finish Signed-off-by: JeffDing --- ...50119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md (100%) diff --git a/sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md similarity index 100% rename from sources/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md rename to translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md From 3002bbf288a6081d04321d62f7ba97f9d65af5f0 Mon Sep 17 00:00:00 2001 From: JeffDing Date: Wed, 4 Mar 2015 12:46:46 +0800 Subject: [PATCH 458/725] Update 20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md --- ...119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md index 95678c9466..1247c8eb78 100644 --- a/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ b/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -12,7 +12,7 @@ Ubuntu 15.04 最终实现你可以设置你的菜单 ‘始终可见’ 我希望(如果不是期望)能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 -现在,如果你使用的是Ubuntu15.04,并启用“建议”的更新通道后,你会发现这个开关存在于在COM>规范>统一>“始终显示菜单”。 +现在,如果你使用的是Ubuntu15.04,并启用“建议”的更新通道后,你会发现这个开关存在于在COM>规范>Unity>“始终显示菜单”。 ### 迟到总比没有要好? ### From da22e2769a2ce6f8c5df7c412352a734a5ea4f92 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 4 Mar 2015 13:17:38 +0800 Subject: [PATCH 459/725] =?UTF-8?q?20150304-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nd Maximum Supported RAM By Your System.md | 696 ++++++++++++++++++ ...returned error exit status 1' In Ubuntu.md | 45 ++ ...Your Network And Servers With Observium.md | 174 +++++ 3 files changed, 915 insertions(+) create mode 100644 sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md create mode 100644 sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md create mode 100644 sources/tech/20150304 Monitoring Your Network And Servers With Observium.md diff --git a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md b/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md new file mode 100644 index 0000000000..2fed06677b --- /dev/null +++ b/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md @@ -0,0 +1,696 @@ +Linux Basics: How To Find Maximum Supported RAM By Your System +================================================================================ +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2015/02/RAM-790x527.jpg) + +Mostly, you will find maximum supported RAM by your system from the BIOS, Product catalog, or manuals. Here is the simple, yet useful trick, to find out maximum supported RAM using Dmidecode without opening the system chassis or referring the BIOS, product catalogs. + +### What is Dmidecode? ### + +As you may know, **Dmidecode** is a tool for dumping a computer’s DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system’s hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision. Using Dmidecode, you can retrieve this information without having to probe for the actual hardware. + +### Find out the maximum RAM supported by your system ### + +Make sure you have installed dmidecode on your system. I think it will be automatically installed while installing your OS, but I am not sure though. + +**On Deb based system:** + + sudo apt-get install dmidecode + +**On RPM based system:** + + sudo yum install dmidecode + +**On SUSE/openSUSE:** + + sudo zypper in dmidecode + +Well, we installed dmidecode. Let us find out the maximum RAM supported. To do that, enter the following command: + + sudo dmidecode -t 16 + +**Sample output:** + + # dmidecode 2.12 + SMBIOS 2.6 present. + + Handle 0x0014, DMI type 16, 15 bytes + Physical Memory Array + Location: System Board Or Motherboard + Use: System Memory + Error Correction Type: None + Maximum Capacity: 16 GB + Error Information Handle: Not Provided + Number Of Devices: 2 + +As you see in the above output, my system will support RAM upto 16GB, and it has two RAM slots. Pretty easy, isn’t it? + +Well, let us find out the currently installed RAM details. + + sudo dmidecode -t 17 + +**Sample output:** + + # dmidecode 2.12 + SMBIOS 2.6 present. + + Handle 0x0017, DMI type 17, 28 bytes + Memory Device + Array Handle: 0x0014 + Error Information Handle: 0x0000 + Total Width: Unknown + Data Width: Unknown + Size: No Module Installed + Form Factor: DIMM + Set: None + Locator: DIMM_B + Bank Locator: BANK 2 + Type: Unknown + Type Detail: None + Speed: Unknown + Manufacturer: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Part Number: Not Specified + Rank: Unknown + + Handle 0x0015, DMI type 17, 28 bytes + Memory Device + Array Handle: 0x0014 + Error Information Handle: 0x0000 + Total Width: 64 bits + Data Width: 64 bits + Size: 4096 MB + Form Factor: SODIMM + Set: None + Locator: DIMM_A + Bank Locator: BANK 0 + Type: DDR3 + Type Detail: Synchronous + Speed: 1067 MHz + Manufacturer: 014F + Serial Number: 00092AF2 + Asset Tag: 54114000 + Part Number: JM1066KSN-4G + Rank: Unknown + +As per the above output, I have installed one RAM in DIMM slot 1. The RAM size is **4GB**, and it’s type and speed is **DDR3** and **1067 MHz** respectively. + +Also, we can have the complete RAM details using the following commands. + + sudo dmidecode -t memory + sudo dmidecode -t memory | less + sudo dmidecode -t memory | more + +**Sample output:** + + # dmidecode 2.12 + SMBIOS 2.6 present. + + Handle 0x0014, DMI type 16, 15 bytes + Physical Memory Array + Location: System Board Or Motherboard + Use: System Memory + Error Correction Type: None + Maximum Capacity: 16 GB + Error Information Handle: Not Provided + Number Of Devices: 2 + + Handle 0x0017, DMI type 17, 28 bytes + Memory Device + Array Handle: 0x0014 + Error Information Handle: 0x0000 + Total Width: Unknown + Data Width: Unknown + Size: No Module Installed + Form Factor: DIMM + Set: None + Locator: DIMM_B + Bank Locator: BANK 2 + Type: Unknown + Type Detail: None + Speed: Unknown + Manufacturer: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Part Number: Not Specified + Rank: Unknown + + Handle 0x0015, DMI type 17, 28 bytes + Memory Device + Array Handle: 0x0014 + Error Information Handle: 0x0000 + Total Width: 64 bits + Data Width: 64 bits + Size: 4096 MB + Form Factor: SODIMM + Set: None + Locator: DIMM_A + Bank Locator: BANK 0 + Type: DDR3 + Type Detail: Synchronous + Speed: 1067 MHz + Manufacturer: 014F + Serial Number: 00092AF2 + Asset Tag: 54114000 + Part Number: JM1066KSN-4G + Rank: Unknown + +Curious to know the complete system details such as Motherboard, Memory, Bios etc? Well, enter the following command to get all details. + + sudo dmidecode + +**Sample output:** + + # dmidecode 2.12 + SMBIOS 2.6 present. + 48 structures occupying 2173 bytes. + Table at 0x000EB840. + + Handle 0xDA00, DMI type 218, 251 bytes + OEM-specific Type + Header and Data: + DA FB 00 DA B2 00 0D 5F 0F 37 40 7D 00 00 00 00 + 00 7E 00 01 00 00 00 DC 01 00 80 02 00 DD 01 00 + 80 03 00 75 01 01 80 01 00 76 01 02 80 01 00 2D + 01 03 80 01 00 2E 01 03 80 00 00 81 01 07 80 00 + 00 82 01 07 80 01 00 83 01 08 80 00 00 84 01 08 + 80 01 00 85 01 06 80 00 00 86 01 06 80 01 00 58 + 02 05 80 00 00 57 02 05 80 01 00 9C 00 02 00 01 + 00 9B 00 02 00 00 00 8A 01 03 00 01 00 89 01 03 + 00 00 00 7F 01 04 00 00 00 80 01 04 00 01 00 53 + 01 05 00 00 00 52 01 05 00 01 00 7B 01 06 00 00 + 00 7C 01 06 00 01 00 94 01 07 00 00 00 93 01 07 + 00 01 00 7D 00 08 00 00 00 2D 00 09 00 01 00 2E + 00 09 00 00 00 6E 00 0A 00 00 00 95 00 0B 00 01 + 00 96 00 0B 00 00 00 2F 02 0C 00 01 00 30 02 0C + 00 00 00 50 02 0D 00 00 00 51 02 0D 00 01 00 52 + 02 0D 00 02 00 FF FF 00 00 00 00 + + Handle 0xDA01, DMI type 218, 59 bytes + OEM-specific Type + Header and Data: + DA 3B 01 DA B2 00 0D 5F 0F 37 40 53 02 0D 00 03 + 00 54 02 0D 00 04 00 56 02 0D 00 05 00 4B 01 0E + 00 01 00 4A 01 0E 00 00 00 EA 00 0F 00 01 00 EB + 00 0F 00 00 00 FF FF 00 00 00 00 + + Handle 0x0004, DMI type 4, 42 bytes + Processor Information + Socket Designation: CPU 1 + Type: Central Processor + Family: Core i3 + Manufacturer: Intel + ID: A7 06 03 01 FF FB AB BE + Signature: Type 0, Family 6, Model 42, Stepping 7 + Flags: + FPU (Floating-point unit on-chip) + VME (Virtual mode extension) + DE (Debugging extension) + PSE (Page size extension) + TSC (Time stamp counter) + MSR (Model specific registers) + PAE (Physical address extension) + MCE (Machine check exception) + CX8 (CMPXCHG8 instruction supported) + APIC (On-chip APIC hardware supported) + SEP (Fast system call) + MTRR (Memory type range registers) + PGE (Page global enable) + MCA (Machine check architecture) + CMOV (Conditional move instruction supported) + PAT (Page attribute table) + PSE-36 (36-bit page size extension) + CLFSH (CLFLUSH instruction supported) + DS (Debug store) + ACPI (ACPI supported) + MMX (MMX technology supported) + FXSR (FXSAVE and FXSTOR instructions supported) + SSE (Streaming SIMD extensions) + SSE2 (Streaming SIMD extensions 2) + SS (Self-snoop) + HTT (Multi-threading) + TM (Thermal monitor supported) + PBE (Pending break enabled) + Version: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz + Voltage: 1.1 V + External Clock: 100 MHz + Max Speed: 2300 MHz + Current Speed: 2300 MHz + Status: Populated, Enabled + Upgrade: Other + L1 Cache Handle: 0x0005 + L2 Cache Handle: 0x0006 + L3 Cache Handle: 0x0007 + Serial Number: To Be Filled By O.E.M. + Asset Tag: To Be Filled By O.E.M. + Part Number: To Be Filled By O.E.M. + Core Count: 2 + Core Enabled: 1 + Thread Count: 2 + Characteristics: + 64-bit capable + + Handle 0x0005, DMI type 7, 19 bytes + Cache Information + Socket Designation: L1-Cache + Configuration: Enabled, Not Socketed, Level 1 + Operational Mode: Write Back + Location: Internal + Installed Size: 64 kB + Maximum Size: 64 kB + Supported SRAM Types: + Other + Installed SRAM Type: Other + Speed: Unknown + Error Correction Type: None + System Type: Unified + Associativity: 8-way Set-associative + + Handle 0x0006, DMI type 7, 19 bytes + Cache Information + Socket Designation: L2-Cache + Configuration: Enabled, Not Socketed, Level 2 + Operational Mode: Varies With Memory Address + Location: Internal + Installed Size: 512 kB + Maximum Size: 512 kB + Supported SRAM Types: + Other + Installed SRAM Type: Other + Speed: Unknown + Error Correction Type: None + System Type: Unified + Associativity: 8-way Set-associative + + Handle 0x0007, DMI type 7, 19 bytes + Cache Information + Socket Designation: L3-Cache + Configuration: Enabled, Not Socketed, Level 3 + Operational Mode: Varies With Memory Address + Location: Internal + Installed Size: 3072 kB + Maximum Size: 3072 kB + Supported SRAM Types: + Other + Installed SRAM Type: Other + Speed: Unknown + Error Correction Type: None + System Type: Unified + Associativity: Other + + Handle 0x0008, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J1A1 + Internal Connector Type: None + External Reference Designator: PS2Mouse + External Connector Type: PS/2 + Port Type: Mouse Port + + Handle 0x0009, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J1A1 + Internal Connector Type: None + External Reference Designator: Keyboard + External Connector Type: PS/2 + Port Type: Keyboard Port + + Handle 0x000A, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J2A2B + Internal Connector Type: None + External Reference Designator: Video + External Connector Type: DB-15 female + Port Type: Video Port + + Handle 0x000B, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J3A1 + Internal Connector Type: None + External Reference Designator: USB1 + External Connector Type: Access Bus (USB) + Port Type: USB + + Handle 0x000C, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J3A1 + Internal Connector Type: None + External Reference Designator: USB2 + External Connector Type: Access Bus (USB) + Port Type: USB + + Handle 0x000D, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J3A1 + Internal Connector Type: None + External Reference Designator: USB3 + External Connector Type: Access Bus (USB) + Port Type: USB + + Handle 0x000E, DMI type 8, 9 bytes + Port Connector Information + Internal Reference Designator: J5A1 + Internal Connector Type: None + External Reference Designator: LAN + External Connector Type: RJ-45 + Port Type: Network Port + + Handle 0x000F, DMI type 9, 17 bytes + System Slot Information + Designation: J6B2 + Type: x16 PCI Express + Current Usage: In Use + Length: Long + ID: 0 + Characteristics: + 3.3 V is provided + Opening is shared + PME signal is supported + Bus Address: 0000:00:01.0 + + Handle 0x0010, DMI type 9, 17 bytes + System Slot Information + Designation: J6B1 + Type: x1 PCI Express + Current Usage: In Use + Length: Short + ID: 1 + Characteristics: + 3.3 V is provided + Opening is shared + PME signal is supported + Bus Address: 0000:00:1c.3 + + Handle 0x0012, DMI type 11, 5 bytes + OEM Strings + String 1: Dell System + String 2: 5[0003] + String 3: 13[P18F] + + Handle 0x0013, DMI type 12, 5 bytes + System Configuration Options + Option 1: To Be Filled By O.E.M. + + Handle 0x001C, DMI type 21, 7 bytes + Built-in Pointing Device + Type: Touch Pad + Interface: Bus Mouse + Buttons: 2 + + Handle 0x001D, DMI type 22, 26 bytes + Portable Battery + Location: Sys. Battery Bay + Manufacturer: Sanyo + Serial Number: 5390 + Name: DELL 4YRJH22 + Chemistry: Lithium Ion + Design Capacity: 45000 mWh + Design Voltage: 10800 mV + SBDS Version: 1.0 + Maximum Error: 2% + SBDS Manufacture Date: 2012-02-28 + OEM-specific Information: 0x00000001 + + Handle 0x001E, DMI type 32, 20 bytes + System Boot Information + Status: No errors detected + + Handle 0x0020, DMI type 27, 12 bytes + Cooling Device + Type: Fan + Status: OK + OEM-specific Information: 0x00000000 + + Handle 0x0021, DMI type 28, 20 bytes + Temperature Probe + Description: CPU Internal Temperature + Location: Processor + Status: OK + Maximum Value: 127.0 deg C + Minimum Value: 0.0 deg C + Resolution: 1.000 deg C + Tolerance: 0.5 deg C + Accuracy: Unknown + OEM-specific Information: 0x00000000 + + Handle 0xB000, DMI type 176, 5 bytes + OEM-specific Type + Header and Data: + B0 05 00 B0 00 + + Handle 0xB100, DMI type 177, 12 bytes + OEM-specific Type + Header and Data: + B1 0C 00 B1 1A 0E 00 00 00 00 00 00 + + Handle 0x0025, DMI type 209, 12 bytes + OEM-specific Type + Header and Data: + D1 0C 25 00 00 00 00 03 05 01 00 03 + + Handle 0x0026, DMI type 210, 12 bytes + OEM-specific Type + Header and Data: + D2 0C 26 00 00 00 00 03 05 20 01 03 + + Handle 0x0027, DMI type 211, 13 bytes + OEM-specific Type + Header and Data: + D3 0D 27 00 01 00 00 00 00 02 03 04 04 + Strings: + Front + + Handle 0x0028, DMI type 212, 57 bytes + OEM-specific Type + Header and Data: + D4 39 28 00 70 00 71 00 01 49 50 48 9C 00 49 FC + 01 9B 00 49 FC 00 7F 01 4A FB 04 80 01 4A FB 00 + 53 01 4A F7 08 52 01 4A F7 08 7B 01 4A EF 10 7C + 01 4A EF 10 FF FF 00 00 00 + + Handle 0x002A, DMI type 217, 8 bytes + OEM-specific Type + Header and Data: + D9 08 2A 00 01 02 00 00 + Strings: + + Handle 0x002B, DMI type 219, 11 bytes + OEM-specific Type + Header and Data: + DB 0B 2B 00 00 01 02 03 00 04 05 + Strings: + + Handle 0x002C, DMI type 220, 22 bytes + OEM-specific Type + Header and Data: + DC 16 2C 00 01 F0 00 00 02 F0 00 00 00 00 03 F0 + 04 F0 00 00 00 00 + + Handle 0x002D, DMI type 221, 19 bytes + OEM-specific Type + Header and Data: + DD 13 2D 00 00 00 00 00 00 03 00 00 00 00 00 00 + 00 00 00 + + Handle 0x002E, DMI type 222, 16 bytes + OEM-specific Type + Header and Data: + DE 10 2E 00 01 08 FF FF 00 00 00 00 00 00 00 00 + + Handle 0x0014, DMI type 16, 15 bytes + Physical Memory Array + Location: System Board Or Motherboard + Use: System Memory + Error Correction Type: None + Maximum Capacity: 16 GB + Error Information Handle: Not Provided + Number Of Devices: 2 + + Handle 0x0016, DMI type 20, 19 bytes + Memory Device Mapped Address + Starting Address: 0x00000000000 + Ending Address: 0x000FFFFFFFF + Range Size: 4 GB + Physical Device Handle: 0x0015 + Memory Array Mapped Address Handle: 0x0018 + Partition Row Position: 1 + Interleave Position: 1 + Interleaved Data Depth: 1 + + Handle 0x0017, DMI type 17, 28 bytes + Memory Device + Array Handle: 0x0014 + Error Information Handle: 0x0000 + Total Width: Unknown + Data Width: Unknown + Size: No Module Installed + Form Factor: DIMM + Set: None + Locator: DIMM_B + Bank Locator: BANK 2 + Type: Unknown + Type Detail: None + Speed: Unknown + Manufacturer: Not Specified + Serial Number: Not Specified + Asset Tag: Not Specified + Part Number: Not Specified + Rank: Unknown + + Handle 0x0018, DMI type 19, 15 bytes + Memory Array Mapped Address + Starting Address: 0x00000000000 + Ending Address: 0x000FFFFFFFF + Range Size: 4 GB + Physical Array Handle: 0x0014 + Partition Width: 2 + + Handle 0x002F, DMI type 13, 22 bytes + BIOS Language Information + Language Description Format: Abbreviated + Installable Languages: 1 + eng + Currently Installed Language: eng + + Handle 0x0030, DMI type 131, 64 bytes + OEM-specific Type + Header and Data: + 83 40 30 00 31 00 00 00 00 00 00 00 00 00 00 00 + F8 00 4B 1C FF FF FF FF 01 00 00 00 00 00 07 00 + AD 04 04 00 00 00 00 00 C8 00 FF FF 00 00 00 00 + 00 00 00 00 32 00 00 00 76 50 72 6F 00 00 00 00 + + Handle 0x0029, DMI type 216, 9 bytes + OEM-specific Type + Header and Data: + D8 09 29 00 01 02 01 00 00 + Strings: + INTEL + 0000 + + Handle 0x0000, DMI type 0, 24 bytes + BIOS Information + Vendor: Dell Inc. + Version: A05 + Release Date: 08/03/2012 + Address: 0xF0000 + Runtime Size: 64 kB + ROM Size: 2048 kB + Characteristics: + MCA is supported + PCI is supported + BIOS is upgradeable + BIOS shadowing is allowed + ESCD support is available + Boot from CD is supported + Selectable boot is supported + BIOS ROM is socketed + EDD is supported + 5.25"/1.2 MB floppy services are supported (int 13h) + 3.5"/720 kB floppy services are supported (int 13h) + 3.5"/2.88 MB floppy services are supported (int 13h) + Print screen service is supported (int 5h) + 8042 keyboard services are supported (int 9h) + Serial services are supported (int 14h) + Printer services are supported (int 17h) + CGA/mono video services are supported (int 10h) + ACPI is supported + USB legacy is supported + ATAPI Zip drive boot is supported + BIOS boot specification is supported + Targeted content distribution is supported + BIOS Revision: 0.5 + Firmware Revision: 0.5 + + Handle 0x0002, DMI type 2, 15 bytes + Base Board Information + Manufacturer: Dell Inc. + Product Name: 01HXXJ + Version: A05 + Serial Number: .JSQ7PA1.CN7117623M00J2. + Asset Tag: Not Specified + Features: + Board is a hosting board + Board is replaceable + Location In Chassis: To Be Filled By O.E.M. + Chassis Handle: 0x0003 + Type: Motherboard + Contained Object Handles: 0 + + Handle 0x0003, DMI type 3, 21 bytes + Chassis Information + Manufacturer: Dell Inc. + Type: Portable + Lock: Not Present + Version: Not Specified + Serial Number: JSR1 + Asset Tag: Not Specified + Boot-up State: Safe + Power Supply State: Safe + Thermal State: Safe + Security Status: None + OEM Information: 0x00000000 + Height: Unspecified + Number Of Power Cords: 1 + Contained Elements: 0 + + Handle 0x0001, DMI type 1, 27 bytes + System Information + Manufacturer: Dell Inc. + Product Name: Inspiron N5050 + Version: Not Specified + Serial Number: JSR1 + UUID: 4C4C4544-0053-5110-8029-CAC05241 + Wake-up Type: Power Switch + SKU Number: To be filled by O.E.M. + Family: + + Handle 0x0024, DMI type 208, 12 bytes + OEM-specific Type + Header and Data: + D0 0C 24 00 02 05 FE 00 04 05 01 02 + Strings: + 20120323 + 20120323 + + Handle 0x0011, DMI type 10, 6 bytes + On Board Device Information + Type: Video + Status: Enabled + Description: Mobile Intel SandyBridge HD Graphics + + Handle 0x0015, DMI type 17, 28 bytes + Memory Device + Array Handle: 0x0014 + Error Information Handle: 0x0000 + Total Width: 64 bits + Data Width: 64 bits + Size: 4096 MB + Form Factor: SODIMM + Set: None + Locator: DIMM_A + Bank Locator: BANK 0 + Type: DDR3 + Type Detail: Synchronous + Speed: 1067 MHz + Manufacturer: 014F + Serial Number: 0009F2 + Asset Tag: 54114000 + Part Number: JM1066-4G + Rank: Unknown + + Handle 0x0031, DMI type 127, 4 bytes + End Of Table + +That’s it. Happy weekend. Stay happy! + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/linux-basics-how-to-find-maximum-supported-ram-by-your-system/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/sk/ \ No newline at end of file diff --git a/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md b/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md new file mode 100644 index 0000000000..f3f262dfbc --- /dev/null +++ b/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md @@ -0,0 +1,45 @@ +Linux Basics: How To Fix “E: /var/cache/apt/archives/ subprocess new pre-removal script returned error exit status 1″ In Ubuntu +================================================================================ +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/04/ubuntu-790x558.png) + +Today, I got a problem while updating VirtualBox to the latest version. + +> E: /var/cache/apt/archives/ subprocess new pre-removal script returned error exit status 1 + +![](https://www.unixmen.com/wp-content/uploads/2015/03/Update-Manager_0011.png) + +### Solution: ### + +I googled a bit and found the solution. Here is what I did to solve the problem. + + sudo apt-get clean + sudo apt-get update && sudo apt-get upgrade + +This will almost fix the problem. + +If you still end up with the same error, then try the following commands: + + sudo dpkg --configure -a + sudo apt-get -f install + +Or, you can manually download the latest version from [Oracle VirtualBox][1] site and install it as shown below. + + sudo apt-get update + sudo dpkg -i virtualbox-4.3_4.3.24-98716~Ubuntu~raring_amd64.deb + sudo apt-get -f install + sudo apt-get autoclean && sudo apt-get autoremove + +Cheers! + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/linux-basics-how-to-fix-e-varcacheaptarchives-subprocess-new-pre-removal-script-returned-error-exit-status-1-in-ubuntu/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/sk/ +[1]:https://www.virtualbox.org/wiki/Downloads \ No newline at end of file diff --git a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md new file mode 100644 index 0000000000..4eae05d99d --- /dev/null +++ b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md @@ -0,0 +1,174 @@ +Monitoring Your Network And Servers With Observium +================================================================================ +### Introduction ### + +You have a problem while monitoring your servers, switches or physical machines. **Observium** fits your need. As a free monitoring system, it helps you to monitor your servers remotely. It is an auto-discovering SNMP based network monitoring platform written in PHP which includes support for a wide range of network hardware and operating systems including Cisco, Windows, Linux, HP, NetApp and many other. I will give you the steps to follow while setting up an **Observium** server on Ubuntu 12.04. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture1.png) + +Currently there are two different versions of **observium**. + +- The observium Community is a free tool and licensed under the QPL Open Source license. This version is the best solution for small deployments. It gets security updates each 6 months. +- While the second version, the Observium Professional is distributed under SVN based release mechanism. And it gets daily security updates. This tool is the best for Service Provider and enterprises deployments. + +For more information you can visit the offcial [website of Observium][1]. + +### System Requirements ### + +In order to install **Observium** , it’s necessary to have a server with a fresh installation. The development of **Observium** takes place on Ubuntu LTS and Debian systems, so it’s recommended to install **Observium** on Ubuntu or Debian because may be issues with other platforms. + +This article will guide you on how to install **Observium** on Ubuntu 12.04. For a small **Observium** installation is recommended to use 256MB for the memory and dual core for the process. + +### Installing Prerequisites ### + +Before installing **Observium** you need to make sure to install all dependencies. + +First step is to update your server + + sudo apt-get update + +Then you need to install all packages required to run Observium. + +Observuim need this list of software the run correctly: + +- LAMP server +- fping +- Net-SNMP 5.4+ +- RRDtool 1.3+ +- Graphviz + +Requirements for optional features: + +- Ipmitool – Only if you want to poll IPMI baseboard controllers on servers +- Libvirt-bin – Only if you want to monitor remote VM hosts using libvirt + + sudo apt-get install libapache2-mod-php5 php5-cli php5-mysql php5-gd php5-mcrypt php5-json php-pear snmp fping mysql-server mysql-client python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick libvirt ipmitool + +### Creation MySQL Database and User for Observium ### + +Now you need to log into MySQL and create database for **Observuim**: + + mysql -u root -p + +After successful authenticated, you need to create the database. + + CREATE DATABASE observium; + +The database Name is **Observium**. You will need this information later. + +Now, you should create the database administrator. + + CREATE USER observiumadmin@localhost IDENTIFIED BY 'observiumpassword'; + +Next, you need to give this user permissions to administer the database you created. + + GRANT ALL PRIVILEGES ON observium.* TO observiumadmin@localhost; + +You need to flush the privilege information to disk to activate the new MySQL user: + + FLUSH PRIVILEGES; + exit + +### Downloading and Installing Observium ### + +Now that our system is ready, we can start the installation of Observium. + +First step to do is, creating the directory Observium is going to operate out of: + + mkdir -p /opt/observium && cd /opt + +For the purpose of this tutorial, we’re going to be using the Community/Open Source Edition of Observium. Download and unpack it. + + wget http://www.observium.org/observium-community-latest.tar.gz + tar zxvf observium-community-latest.tar.gz + +Now go under Observium directory + + cd observium + +Copy the default configuration file ‘**config.php.default**‘ to ‘**config.php**‘ and fill out the database config options: + + cp config.php.default config.php + nano config.php + +---------- + + / Database config + $config['db_host'] = 'localhost'; + $config['db_user'] = 'observiumadmin'; + $config['db_pass'] = 'observiumpassword'; + $config['db_name'] = 'observium'; + +Let’s setup the default schema for the MySQL Database: + + php includes/update/update.php + +Now you need to create directory to store rrd file and change permission to let apache write into the file . + + mkdir rrd + chown apache:apache rrd + +To help you troubleshooting on case of problem, you need to create logs file. + + mkdir -p /var/log/observium + chown apache:apache /var/log/observium + +Now you have to create the virtual host configuration for Observium + + + DocumentRoot /opt/observium/html/ + ServerName observium.domain.com + CustomLog /var/log/observium/access_log combined + ErrorLog /var/log/observium/error_log + + AllowOverride All + Options FollowSymLinks MultiViews + + + +Next, you need to enable rewrite functionality for your Apache server. + +To enable `mod_rewrite` modules, type this command: + + sudo a2enmod rewrite + +This module will be enable the next after reboot of Apache service. + + sudo service apache2 restart + +### Configuring Observium ### + +Before log into the web interface, you need to create administrator account (level 10) to Observium + + # cd /opt/observium + # ./adduser.php admin adminpassword 10 + User admin added successfully. + +Next set a cron jobs for the discovery and the poller jobs, create a new file ‘**/etc/cron.d/observium**‘ and add the following contents. + + 33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1 + */5 * * * * root /opt/observium/discovery.php -h new >> /dev/null 2>&1 + */5 * * * * root /opt/observium/poller-wrapper.py 1 >> /dev/null 2>&1 + +Reload cron process to take new entries. + + # /etc/init.d/cron reload + +You’ve installed Observium Server! Log into Observium using your browser **http://** and be on your way. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture.png) + +Enjoy! + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/monitoring-network-servers-observium/ + +作者:[anismaj][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/anis/ +[1]:http://www.observium.org/ \ No newline at end of file From f34e78bfa033bcfe34eaa78cfc6dc9fa9bf25e48 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 4 Mar 2015 15:17:01 +0800 Subject: [PATCH 460/725] =?UTF-8?q?20150304-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4 ​No reboot patching comes to Linux 4.0.md | 58 ++++++ ...ough Free Disk Space On boot' In Ubuntu.md | 63 +++++++ ... How To Fix Windows Updates Stuck At 0%.md | 53 ++++++ ...ocal Network Between Ubuntu And Windows.md | 177 ++++++++++++++++++ 4 files changed, 351 insertions(+) create mode 100644 sources/talk/20150304 ​No reboot patching comes to Linux 4.0.md create mode 100644 sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md create mode 100644 sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md create mode 100644 sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md diff --git a/sources/talk/20150304 ​No reboot patching comes to Linux 4.0.md b/sources/talk/20150304 ​No reboot patching comes to Linux 4.0.md new file mode 100644 index 0000000000..6333fea9a7 --- /dev/null +++ b/sources/talk/20150304 ​No reboot patching comes to Linux 4.0.md @@ -0,0 +1,58 @@ +​No reboot patching comes to Linux 4.0 +================================================================================ +> **Summary**:With the new Linux 4.0 kernel, you'll need to reboot Linux less often than ever. + +With [Linux 4.0][1], you may never need to reboot your operating system again. + +![Using Linux means never having to reboot. -- SUSE ](http://zdnet4.cbsistatic.com/hub/i/r/2015/03/02/5e766833-454b-45b5-a8f7-a55d21e9d26a/resize/270x270/4d0774552c342a1507784ef802619b71/livepatching.jpg) +Using Linux means never having to reboot. -- SUSE + +One reason to love Linux on your servers or in your data-center is that you so seldom needed to reboot it. True, critical patches require a reboot, but you could go months without rebooting. Now, with the latest changes to the Linux kernel you may be able to go years between reboots. + +This is actually a feature that was available in Linux in 2009 thanks to a program called [Ksplice][2]. This program compares the original and patched kernels and then uses a customized kernel module to patch the new code into the running kernel. Each Ksplice-enabled kernel comes with a special set of flags for each function that will be patched. The [Ksplice process][3] then watches for a moment when the code for the function being patched isn't in use, and ta-da, the patch is made and your server runs on. + +[Oracle acquired Ksplice][4] in 2011, and kept it just for its own [Oracle Linux][5], a [Red Hat Enterprise Linux (RHEL)][6] clone, and as a RHEL subscription service. That left all the other enterprise and server Linux back where they started. + +Then [KernelCare released a service that could provide bootless patches][7] for most enterprise Linux distros. This program use proprietary software and is only available as a service with a monthly fee. That was a long way from satisfying many Linux system administrators. + +So, [Red Hat][8] and [SUSE][9] both started working on their own purely open-source means of giving Linux the ability to keep running even while critical patches were being installed. Red Hat's program was named [kpatch][10], while SUSE' is named [kGraft][11]. + +The two companies took different approaches. Kpatch issues a stop_machine() command. After that it looks at the stack of existing processes using [ftrace][12] and, if the patch can be made safely, it redirects the running code to the patched functions and then removes the now outdated code. + +Kgraft also uses ftrace, but it works on the thread level. When an old function is called it makes sure the thread reaches a point that it can switch to the new function. + +While the end result is the same, the operating system keeps running while patches are made, there are significant differences in performance. Kpatch takes from one to forty milliseconds, while kGraft might take several minutes but there's never even a millisecond of down time. + +At the Linux Plumbers Conference in October 2014, the two groups got together and started work on a way to [patch Linux without rebooting that combines the best of both programs][13]. Essentially, what they ended up doing was putting both kpatch and kGraft in the 4.0 Linux kernel. + +Jiri Kosina, a SUSE software engineer and Linux kernel developer, explained, that live-patching in the Linux kernel will "provides a basic infrastructure for function "live patching" (i.e. code redirection), including API [application programming interface] for kernel modules containing the actual patches, and API/ABI [application binary interface] for userspace to be able to operate on the patches. This is "relatively simple and minimalistic, as it's making use of existing kernel infrastructure (namely ftrace) as much as possible. It's also self-contained, in a sense that it doesn't hook itself in any other kernel subsystem (it doesn't even touch any other code)." + +The release candidate for Linux 4.0 is now out. Kosina stated that "It's now implemented for x86 only as a reference architecture, but support for powerpc, s390 and arm is already in the works." And, indeed, the source code for these architectures is already in the [Live Patching Git code][14]. + +Simply having the code in there is just the start. Your Linux distribution will have to support it with patches that can make use of it. With both Red Hat and SUSE behind it, live patching will soon be the default in all serious business Linux distributions. + +-------------------------------------------------------------------------------- + +via: http://www.zdnet.com/article/no-reboot-patching-comes-to-linux-4-0/#ftag=RSSbaffb68 + +作者:[Steven J. Vaughan-Nichols][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.zdnet.com/meet-the-team/us/sjvn/ +[1]:http://www.zdnet.com/article/linux-kernel-turns-over-release-odometer-to-4-0/ +[2]:http://www.computerworld.com/article/2466389/open-source-tools/never-reboot-again-with-linux-and-ksplice.html +[3]:http://www.ksplice.com/ +[4]:http://www.zdnet.com/article/oracle-acquires-zero-downtime-linux-upgrade-software/ +[5]:http://www.oracle.com/us/technologies/linux/overview/index.html +[6]:http://www.redhat.com/en/technologies/linux-platforms/enterprise-linux +[7]:http://www.zdnet.com/article/kernelcare-new-no-reboot-linux-patching-system/ +[8]:http://www.redhat.com/ +[9]:http://www.suse.com/ +[10]:http://rhelblog.redhat.com/2014/02/26/kpatch/ +[11]:http://www.zdnet.com/article/suse-gets-live-patching/ +[12]:http://elinux.org/Ftrace +[13]:http://linuxplumbersconf.org/2014/wp-content/uploads/2014/10/LPC2014_LivePatching.txt +[14]:https://kernel.googlesource.com/pub/scm/linux/kernel/git/jikos/livepatching/+/9ec0de0ee0c9f0ffe4f72da9158194121cc22807 \ No newline at end of file diff --git a/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md b/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md new file mode 100644 index 0000000000..3d20014215 --- /dev/null +++ b/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md @@ -0,0 +1,63 @@ +How To Fix “Not Enough Free Disk Space On /boot” In Ubuntu +================================================================================ +### Question: How To Fix “Not Enough Free Disk Space On /boot” In Ubuntu? ### + +Today, I got the following error, but a simple one, when try to update my Lubuntu 14.04 desktop. + +> “Not Enough Free Disk Space On /boot” + +![](https://www.unixmen.com/wp-content/uploads/2015/02/Software-Updater_002.png) + +This is because my /boot partition has caught up with unwanted old kernels, packages etc. + +### Answer: ### + +I heard about **Computer Janitor** feature which will remove unwanted old junk files in Ubuntu Tweak tool. Using the Computer Janitor, you can clean up your system like a freshly installed system. Janitor will remove; + +- Apps cache(Firefox/Chrome cache, Software center cache); +- Thumbnail cache; +- Apt cache; +- Old kernels; +- Package configs; +- And unneeded packages. + +If you haven’t install this tool, look at the following link. + +- **[How To Install And Use Ubuntu Tweak On Ubuntu][1]** + +To remove unwanted junk files, open Ubuntu Tweak, and click on the **Janitor** option. + +![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_006.png) + +Select the check the boxes to remove unwanted junk from your system, and click **Clean** button. + +![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_007.png) + +Janitor will now start to clean up your system + +![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_003.png) + +Cool! The system is clean now. + +![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_008.png) + +Again I re-launched the software updater. This time it went smoothly without any issues. + +![](https://www.unixmen.com/wp-content/uploads/2015/02/Software-Updater_009.png) + +That’s all. Enjoy. There are others ways also available to clean up the system. But, this seems very easy to follow. We can do system clean up in few mouse clicks. + +Cheers! + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/how-to-fix-not-enough-free-disk-space-on-boot-in-ubuntu/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/sk/ +[1]:http://www.unixmen.com/after-a-fresh-install-of-ubuntu-1010-maverick-meerkat-configuration-made-easy-with-ubuntu-tweak/ \ No newline at end of file diff --git a/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md b/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md new file mode 100644 index 0000000000..c74df29f1e --- /dev/null +++ b/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md @@ -0,0 +1,53 @@ +How To Fix Windows Updates Stuck At 0% +================================================================================ +How do you feel when you log in to Windows after a month, find there are updates to install, you select to install these updates and those **Windows updates stuck at zero percent**? + +Why am I talking about Windows updates on a blog dedicated to Linux and Open Source? Because I prefer to [dual boot Windows with Linux][1]. While I use Linux as my main desktop, once in a while I do log in to Windows. The most annoying thing after logging in Windows is the Windows updates. It has happened to me on several occasions that I found **Windows update not working**. I choose to install the updates and Windows updates get stuck at 0 KB and 0%, like this: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_Updates_stuck_at_zero.jpeg) + +In this tutorial, we shall see how to make Windows update work again. The tutorial should be applicable for Windows 7, Windows 8 and Windows 8.1. + +### Fix Windows updates stuck at zero percent ### + +Please mind that Windows updates can be stuck at any percent and the trick which we are going to use would require you to install those updates again. I hope you do not find that too inconvenient. If you are ready, let’s see how to fix this Windows update issue. + +#### Step 1: #### + +Press Windows+R. This will prompt run dialogue box. In here, type services.msc: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Updates_3.png) + +#### Step 2: #### + +Now it brings us to all the services installed in Windows. These services are listed in alphabetical order. Scroll down and look for **Windows Update Service**. Right click on it and stop it. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_Updates_stuck_1.jpeg) + +#### Step 3: #### + +Now go in **C:\Windows\SoftwareDistribution and delete all of its contents**. Actually, this is the folder where downloaded installation files were stored. But since Windows update suck, they somehow have problem with partially downloaded update files. + +#### Step 4: #### + +Go back to services again (as mentioned in Step 1) and this time start the Windows Update Service, by right clicking on it. Try to update Windows again. It should be working this time. + +So once you have got the updates working, perhaps you will find plenty of updates to install at next reboot. And that moment calls for a meme: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_update_suck.jpg) + +Jokes apart, I hope this tip helps you to get rid of Windows updates hanged at 0%. I wish that Linux like updates are also included in the list of [Windows 10 features copied from Linux][2]. I wish. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/fix-windows-updates-stuck-0/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/ +[2]:http://itsfoss.com/windows-10-inspired-linux/ \ No newline at end of file diff --git a/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md b/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md new file mode 100644 index 0000000000..d0f6d9f1df --- /dev/null +++ b/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md @@ -0,0 +1,177 @@ +Share Folders On Local Network Between Ubuntu And Windows +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_windows.jpeg) + +This is a complete tutorial to show you **how to share folders over local network in Ubuntu**. + +Do you have multiple devices in your home? Do you have to use Flash Drive or SD card to transfer data from Ubuntu to another computer? Do you find it annoying? We know you do. Because we don’t want you to waste your precious time while you can transfer your files, documents and other large stuff quickly and easily, over the local network. It’s one time setup and then with some clicks you will be able to **share files between Ubuntu and Windows** or any other Linux system. And don’t worry it’s easy and takes only little time. + +One more thing to add, while we performed this tutorial on Ubuntu, this tutorial should be valid for any other Linux OS. + +#### Share folder on local network in Ubuntu #### + +If you are using Ubuntu 14.04, 14.10 or 12.04, there are two ways you can share your local files over the local network to access it from Windows or other Linux computers. + +- Share it for everyone’s access on local network, without password +- Password protect the folders for restricted access + +We’ll see both methods in this post and will let you decide which one you would prefer to use. + +### 1. Share folders on local network without password ### + +#### Step 1: #### + +To share a folder on local network in Ubuntu, right click on the desired folder and select Local Network Share: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Share_Folder_Ubuntu.jpeg) + +**Possible troubleshoot**: If do not see the option of Local Network Share in right click menu, open a terminal and use the following command to install nautlius-share: + + sudo apt-get install nautilus-share + +You’ll need to restart Nautilus. Either log out and log in back or use the command below: + + nautilus -q + +#### Step 2: #### + +When you click on Local Network Share, you will see the option of sharing the folder. Just check the option of Share this folder: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_1.jpeg) + +Possible troubleshoot: If you are prompted about Sharing service not being installed, like in the screenshot below, just click on Install service and follow the instructions. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_2.jpeg) + +#### Step 3: #### + +When you check the option of Share this folder, you’ll see option of Create Share available for you. You can also allow other users to edit the files in the shared folder. Option for guest access can be checked as well. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_folder_Ubuntu_3.png) + +You’ll see that the folder icon have been changed to show that it has been shared. To stop sharing a folder, just uncheck the Share this folder option. + +Now this was the easy way out. This provides access to anyone on your local network to access these files. In normal condition, you should prefer this. I mean, devices on your home network should be generally know devices. But this could not be the case always. What if you want only certain people to access it? This is where Samba server comes in picture. We’ll see that in the second part of the tutorial. + +### 2. Share the folders on local network in Ubuntu with password protection ### + +To do this, we need to configure Samba server. Actually, we did use Samba in the previous part of this tutorial. We just did not emphasize on it. Before we go on seeing how to set up Samba server for local network sharing in Ubuntu, let’s first have a quick look on what actually is [Samba][1]. + +#### What is Samba? #### + +Samba is the software package that allows you to share files, documents and printers across a network, irrespective of whether you are using Linux, Windows and Mac. It’s available for all major platforms and can work tremendously nice in all of them. Quoting from Wikipedia: + +> Samba a free software re-implementation of the SMB/CIFS networking protocol, and was originally developed by Andrew Tridgell. As of version 3, Samba provides file and print services for various Windows Clients and can integrate with a Windows Server domain, either as a Primary Domain Controller (PDC) or as a domain member. It can also be part an Active Directory domain. + +#### Install Samba server on Ubuntu #### + +You can easily install Samba on you Ubuntu box. Before installing update your system so that you can install any available updates. + + sudo apt-get update && apt-get upgrade + +Now install Samba serer and few other required stuffs with the following command: + + sudo apt-get install samba samba-common system-config-samba python-glade2 gksu + +Once you’ve installed Samba server, it’s time to configure Samba from the graphical interface window to share files. + +#### Configure Samba server on Ubuntu #### + +Open Samba Configuration tool from the dash: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Setup-Samba.png) + +Go to **Preference->Server Settings**. Although the default settings are good and may be same you need. But you may need to make change to it in some cases. + +Now in Server Settings you’ve two tabs, ‘Basic’ and ‘Security’. Under Basic tab you’ve the following options that mean: + +- Workgroup – This is the name of the Workgroup of the computer you want to connect to. For example, if you want to connect to a Windows computer so you will enter the workgroup name of Windows computer, and in Windows you already have the same workgroup name as is set by default in Samba Server Settings. But if you have a different workgroup name on Windows then you will enter that workgroup name in this field. (In Windows 7 to get the workgroup name, right-click Computer icon and go to Properties, there you’ll see Windows Workgroup name.) +- Description – This is the name of your computer as seen by others. Don’t use spaces or non-internet friendly characters. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/samba-server-settings.png) + +setting up samba serverAllowing ‘Guests’ is not advisable so there is no reason to change security settings. Keep as it is. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Samba-Security-Settings-compressed.jpg) + +Samba Security security settingsIt is all done! You’ve setup Samba Server. We are not far from sharing our first folder on network. + +#### Create a system user for network file sharing #### + +We will now create a system user for sharing file on network. This is how simple it is. + +- Go to **System Settings**. +- Under Systems Settings Click **User Accounts**. +- Click **unlock** to Enable + (**plus**) icon. +- Click + (plus) icon to create a new system user. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/create-system-user1.jpg) + +Now as you can see the above image, you can enter ‘Full name’. As you enter ‘Full name’ Username will be taken as Full name automatically. Because we are creating this user to share files so we will assign Account Type to ‘**Standard**‘. + +Done above steps? Click add. You have created a system user. The user is not yet activated so we will activate it by setting up password for this account. Make sure Users accounts panel is unlocked. Click Account disabled and type a new password, then confirm password and click Change. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/activate-system-user.jpg) + +Yipee… Upto now we have installed and configured Samba and We have created a System user to share files on network from the account and we have activated our newly created account, too. Now We will move to Samba for the last step of configuring everything, then we will share a folder. + +#### Add new Samba user #### + +Open Samba and click Samba Users under Preference. Fill up the the simple dialogue. Here are couple of details about the fields: + +**Unix Username** – In this case I am selecting the user that I just created. + +**Windows Username** – You will enter this username when you are accessing from Windows Machine. + +**Samba Password** – You will enter this password when you are accessing from Windows Machine. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/samba-user-setting.jpg) + +Once you’ve done click OK. Now take a deep breath. You have successfully created a network with the help of Samba. Now restart the network or Samba services and ready to share files with other machines. + + sudo restart smbd && sudo restart nmbd + +#### Share folders or files over the network #### + +To share files with Samba it’s simple with graphical user interface. Click the Plus icon in Samba and you will get dialogue like this: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/share-files-and-folders.jpg) + +share files and folders over network with sambaComplete the fields. In ‘Directory‘ browse the folder you want to share. Here are the details about the fields you will see here: + +- **Share name** is the name of the folder that other would see. +- **Description** is simply about the content you are sharing on network. +- **Writable** You shared folders are ‘read only’ by default. You can set them to writable if you want others on network to change them. +- **Visible** As the name suggests when you click Visible, the shared folder will be visible to the people on network. + +Now you can set permissions for the folder you are sharing. To do this click ‘Access’ tab and check the users you want to share the folder with. When you select Allow access to everyone, the folder will be accessible to everyone on the network. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Screenshot-from-2015-02-28-202031.png) + +Finally click OK to complete the sharing. Now the folder is shared with the people you want. You have completed sharing file on network. Is there everything left? Yes! How to remove the folders from the network? + +#### Remove shared folders #### + +We will also need to remove some of the folders after sometime from network. It is very simple and here is how we can do that. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/remove-shared-folder-from-network.jpg) + +This is all done! We can also share files over network using terminal but that would not be as easy as this one. If you request for command line sharing then I will write a tutorial on how to share files over network with command line in Linux. + +So, how do you find this tutorial to share files on local network in Ubuntu? I hope with this tutorial you can **easily share files between Ubuntu and Windows**. If you have questions or suggestions, feel free to ask it in the comment box below. + +This tutorial was requested by Kalc. If you would like, you can [request your own tutorial][2]. We would be happy to help you out along with other readers facing the same issue. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/share-folders-local-network-ubuntu-windows/ + +作者:[Mohd Sohail][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/sohail/ +[1]:http://en.wikipedia.org/wiki/Samba_%28software%29 +[2]:http://itsfoss.com/request-tutorial/ \ No newline at end of file From eb1a540d5a70d9fbe6558ae7dd21c8cbc8ecf086 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 4 Mar 2015 17:12:04 +0800 Subject: [PATCH 461/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...plicate Files Instantly From Hard Drive.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md b/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md index 17da6a9508..1910310f2d 100644 --- a/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md +++ b/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md @@ -3,17 +3,17 @@ dupeGuru - 直接从硬盘中查找并移除重复文件 ### 简介 ### -对我们来说,磁盘被装满是一个较大的困扰。无论我们如何小心谨慎,我们总可能将相同的文件复制到多个不同的地方,或者在不知情的情况下,重复下载了同一个文件。因此,迟早你会看到“磁盘已满”的错误提示,若此时我们确实需要一些磁盘空间来存储重要数据,以上情形无疑是最糟糕的。假如你确信自己的系统中有重复文件,那么 **dupeGuru** 可能会帮助到你。 +对我们来说,磁盘被装满是棘手问题之一。无论我们如何小心谨慎,我们总可能将相同的文件复制到多个不同的地方,或者在不知情的情况下,重复下载了同一个文件。因此,迟早你会看到“磁盘已满”的错误提示,若此时我们确实需要一些磁盘空间来存储重要数据,以上情形无疑是最糟糕的。假如你确信自己的系统中有重复文件,那么 **dupeGuru** 可能会帮助到你。 dupeGuru 团队也开发了名为 **dupeGuru 音乐版** 的应用来移除重复的音乐文件,和名为 **dupeGuru 图片版** 的应用来移除重复的图片文件。 ### 1. dupeGuru (标准版) ### -对于那些不熟悉 [dupeGuru][1] 的人来说,它是一个免费,开源,跨平台的应用,其用途是在系统中查找和移除重复文件。它可以在 Linux, Windows, 和 Mac OS X 等平台下使用。通过使用一个快速的模糊匹配算法,它可以在几分钟内找到重复文件。同时,你还可以调整 dupeGuru 使它去精确查找特定文件类型的重复文件,以及从你想删除的文件中,消除特定的某些文件。它支持英语、 法语、 德语、 中文 (简体)、 捷克语、 意大利语、亚美尼亚语、 俄语、乌克兰语、巴西语和越南语。 +需要告诉那些不熟悉 [dupeGuru][1] 的人,它是一个免费、开源、跨平台的应用,其用途是在系统中查找和移除重复文件。它可以在 Linux, Windows, 和 Mac OS X 等平台下使用。通过使用一个快速的模糊匹配算法,它可以在几分钟内找到重复文件。同时,你还可以调整 dupeGuru 使它去精确查找特定文件类型的重复文件,以及从你想删除的文件中,清除某种文件。它支持英语、 法语、 德语、 中文 (简体)、 捷克语、 意大利语、亚美尼亚语、俄语、乌克兰语、巴西语和越南语。 #### 在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru #### -dupeGuru 开发者已经构建了一个 Ubuntu PPA (Personal Package Archives)来简化安装过程。为了安装 dupeGuru,依次在终端中键入以下命令: +dupeGuru 开发者已经构建了一个 Ubuntu PPA (Personal Package Archives)来简化安装过程。想要安装 dupeGuru,依次在终端中键入以下命令: ``` sudo apt-add-repository ppa:hsoft/ppa @@ -23,31 +23,31 @@ sudo apt-get install dupeguru-se ### 使用 ### -使用非常简单,可从 Unity 面板或菜单中启动 dupeGuru 。 +使用非常简单,可从 Unity 面板或菜单中启动 dupeGuru。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru_007.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/dupeGuru_007.png) 点击位于底部的 `+` 按钮来添加你想扫描的文件目录。点击 `扫描` 按钮开始查找重复文件。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru_008.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/dupeGuru_008.png) -一旦所选目录中含有重复文件,则它将在窗口中展示重复文件。正如你所看到的,在下面的截图中,我的下载目录中有一个重复文件。 +一旦所选目录中含有重复文件,那么它将在窗口中展示重复文件。正如你所看到的,在下面的截图中,我的下载目录中有一个重复文件。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Results_009.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/dupeGuru-Results_009.png) -现在,你可以决定下一步如何操作。你可以删除这个重复的文件,或者对它进行重命名,抑或是 复制/移动 这个文件到另一个位置。为此,选定该重复文件,或 在菜单栏中选定写有“**仅显示重复**”选项 ,如果你选择了“**仅显示重复**”选项,则只有重复文件在窗口中可见,这样你便可以轻易地选择并删除这些文件。点击“操作”下拉菜单,最后选择你将执行的操作。在这里,我只想删除重复文件,所以我选择了“移动标记文件到垃圾箱”这个选项。 +现在,你可以决定下一步如何操作。你可以删除这个重复的文件,或者对它进行重命名,抑或是 复制/移动 到另一个位置。为此,选定该重复文件,或在菜单栏中选定写有“**仅显示重复**”选项 ,如果你选择了“**仅显示重复**”选项,则只有重复文件在窗口中可见,这样你便可以轻松选择并删除这些文件。点击“操作”下拉菜单,最后选择你将执行的操作。在这里,我只想删除重复文件,所以我选择了“移动标记文件到垃圾箱”这个选项。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Menu_010.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/Menu_010.png) 接着,点击“继续”选项来移除重复文件。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/Deletion-Options_011.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/Deletion-Options_011.png) ### 2. dupeGuru 音乐版 ### -[dupeGuru 音乐版][2] 或 简称 dupeGuru ME ,它的功能与 dupeGuru 类似。它拥有 dupeGuru 的所有功能,但它包含更多的信息列 (如比特率,持续时间,标签等)和更多的扫描类型(如带有字段的文件名,标签以及音频内容)。同 dupeGuru 一样, dupeGuru ME 也运行在 Linux, Windows, 和 Mac OS X 中。 +[dupeGuru 音乐版][2] 或简称 dupeGuru ME,它的功能与 dupeGuru 类似。它拥有 dupeGuru 的所有功能,但它包含更多的信息列 (如比特率,持续时间,标签等)和更多的扫描类型(如带有字段的文件名,标签以及音频内容)。和 dupeGuru 一样,dupeGuru ME 也运行在 Linux、Windows 和 Mac OS X 中。 -它支持众多的格式,诸如 MP3, WMA, AAC (iTunes 格式), OGG, FLAC, 即失真率较少的 AAC 和 WMA 格式等。 +它支持众多的格式,诸如 MP3、WMA、AAC (iTunes 格式)、OGG、FLAC,以及失真率较少的 AAC 和 WMA 格式等。 #### 在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru ME #### @@ -59,19 +59,19 @@ sudo apt-get install dupeguru-me ### 使用 ### -你可以从 Unity 面板或菜单中启动它。dupeGuru ME 的使用方法,操作界面和外观与正常的 dupeGuru 类似。添加你想扫描的目录并选择你想执行的操作。重复的音乐文件就会被删除。 +你可以从 Unity 面板或菜单中启动它。dupeGuru ME 的使用方法、操作界面以及外观和正常的 dupeGuru 类似。添加你想扫描的目录并选择你想执行的操作。重复的音乐文件就会被删除。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Music-Edition-Results_012.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/dupeGuru-Music-Edition-Results_012.png) ### 3. dupeGuru 图片版 ### -[dupeGuru 图片版][3],或简称为 duepGuru PE,是一个在你的电脑中查找重复图片的工具。它与 dupeGuru 类似,但独具匹配重复图片的功能。dupeGuru PE 可运行在 Linux, Windows, 和 Mac OS X 中。 +[dupeGuru 图片版][3],或简称为 duepGuru PE,是一个在你的电脑中查找重复图片的工具。它和 dupeGuru 类似,但独具匹配重复图片的功能。dupeGuru PE 可运行在 Linux、Windows 和 Mac OS X 中。 -dupeGuru PE 支持 JPG, PNG, TIFF, GIF 和 BMP 等图片格式。所有的这些格式可以被同时比较。Mac OS X 版的 dupeGuru PE 还支持 PSD 和 RAW (CR2 和 NEF) 格式。 +dupeGuru PE 支持 JPG、PNG、TIFF、GIF 和 BMP 等图片格式。所有的这些格式可以被同时比较。Mac OS X 版的 dupeGuru PE 还支持 PSD 和 RAW (CR2 和 NEF) 格式。 #### 在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru PE #### -由于我们已经添加了 PPA, 我们也不必为 dupeGuru PE 添加 PPA。只需运行如下命令来安装它。 +由于我们已经添加了 PPA,我们也不必为 dupeGuru PE 再次添加。只需运行如下命令来安装它。 ``` sudo apt-get install dupeguru-pe @@ -79,13 +79,13 @@ sudo apt-get install dupeguru-pe #### 使用 #### -就使用方法,操作界面和外观而言,它与 dupeGuru ,dupeGuru ME 类似。我就纳闷为什么开发者为不同的类别开发了不同的版本。我想如果开发一个结合以上三个版本功能的应用,或许会更好。 +就使用方法,操作界面和外观而言,它与 dupeGuru,dupeGuru ME 类似。我就纳闷为什么开发者为不同的类别开发了不同的版本。我想如果开发一个结合以上三个版本功能的应用,或许会更好。 -启动它,添加你想扫描的目录,并选择你想执行的操作。就这样,你的重复文件将消失。 +启动它,添加你想扫描的目录,并选择你想执行的操作。就这样,你的重复文件将被清除。 -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/11/dupeGuru-Picture-Edition-Results_014.png) +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/11/dupeGuru-Picture-Edition-Results_014.png) -如若因为任何的安全问题而不能移除某些重复文件,请记下这些文件的位置,通过终端或文件管理器来手动删除它们。 +如果因为任何的安全问题而不能移除某些重复文件,请记下这些文件的位置,通过终端或文件管理器来手动删除它们。 欢呼吧! @@ -95,7 +95,7 @@ via: http://www.unixmen.com/dupeguru-find-remove-duplicate-files-instantly-hard- 作者:[SK][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 168bc15093f9152c6236b33ed2766afad634eb6c Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 4 Mar 2015 17:38:39 +0800 Subject: [PATCH 462/725] Translating by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 8a6eaaff6d..fd49a1d6f3 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -24,13 +24,13 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7515/16275175052_61487480ce_c.jpg) -这又是这份列表里的一个“巨人级”工具,[MonoDevelop][7]那无与伦比的体验来源于它的外表和界面。我个人非常喜爱它的项目管理和它的一体化版本控制系统。The plugin system is also pretty amazing. But for some reason, all the options and the support for all kind of programming languages make it feel a bit overwhelming to me. It remains a great tool that I used many times in the past, but just not my number one when dealing with "simplistic" C. +这又是这份列表里的一个“巨人级”工具,[MonoDevelop][7]那无与伦比的体验来源于它的外表和界面。我个人非常喜爱它的项目管理体系和它的一体化版本控制系统。插件系统同样漂亮地让人震惊。但是由于一些原因,所有的设置和对所有编程语言的支持对于我来说让我感觉有点“资源过剩”了。它仍然是我在过去经常使用的伟大工具,但不是我在单单处理C语言时的第一选择。 ### 5. Anjuta ### ![](https://farm8.staticflickr.com/7514/16088462018_7ee6e5b433_c.jpg) -With a very strong "GNOME feeling" attached to it, [Anjuta][8]'s appearance is a hit or miss. I tend to see it as an advanced version of Geany with a debugger included, but the interface is actually a lot more elaborate. I do enjoy the tab system to switch between the project, folders, and code outline view. I would have liked maybe a bit more shortcuts to move around in a file. However, it is a good tool, and offers outstanding compilation and build options, which can support the most specific needs. +它身上有着强烈的“GNOME感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷键来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 ### 6. Komodo Edit ### @@ -56,7 +56,7 @@ For all KDE fans out there, [KDevelop][11] might be the answer to your prayers. Finally, last for not least, [CodeLite][12] shows that you can take a traditional formula and still get something with its own feeling attached to it. If the interface really reminded me of Code::Blocks and Anjuta at first, I was just blown away by the extensive plugin library. Whether you want to diff a file, insert a copyright block, define an abbreviation, or push your work on Git, there is a plugin for you. If I had to nitpick, I would say that it lacks a few navigation shortcuts for my taste, but that's really it. -最后,我希望that this list had you discover new IDEs for coding in your favorite language. While Code::Blocks remains my favorite, it has some serious challengers. Also we are far from covering all the ways to code in C/C++ using an IDE on Linux. So if you have another one to propose, let us know in the comments. Also if you would like me to cover IDEs for a different language next, also let us know in the comment section. +最后,我希望这份清单that this list had you discover new IDEs for coding in your favorite language. While Code::Blocks remains my favorite, it has some serious challengers. Also we are far from covering all the ways to code in C/C++ using an IDE on Linux. So if you have another one to propose, let us know in the comments. Also if you would like me to cover IDEs for a different language next, also let us know in the comment section. -------------------------------------------------------------------------------- From bdaf278a205944216a1f50b0d4f5c37fd72fd074 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Wed, 4 Mar 2015 20:53:52 +0800 Subject: [PATCH 463/725] Update 20150126 CD Audio Grabbers--Graphical Based.md --- sources/share/20150126 CD Audio Grabbers--Graphical Based.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/share/20150126 CD Audio Grabbers--Graphical Based.md b/sources/share/20150126 CD Audio Grabbers--Graphical Based.md index 5dcfa26cca..8865d5d810 100644 --- a/sources/share/20150126 CD Audio Grabbers--Graphical Based.md +++ b/sources/share/20150126 CD Audio Grabbers--Graphical Based.md @@ -1,3 +1,4 @@ +Translating By H-mudcup CD Audio Grabbers - Graphical Based ================================================================================ CD audio grabbers are designed to extract ("rip") the raw digital audio (in a format commonly called CDDA) from a compact disc to a file or other output. This type of software enables a user to encode the digital audio into a variety of formats, and download and upload disc info from freedb, an internet compact disc database. @@ -125,4 +126,4 @@ via: http://www.linuxlinks.com/article/20150125043738417/AudioGrabbersGraphical. [1]:http://www.freac.org/ [2]:http://kde.maniatek.com/audex/ [3]:http://burtonini.com/blog/computers/sound-juicer -[4]:http://sourceforge.net/projects/ripperx/ \ No newline at end of file +[4]:http://sourceforge.net/projects/ripperx/ From 9d9b6b6943ae251e8380a7e734214ae0097ebf21 Mon Sep 17 00:00:00 2001 From: theo-l Date: Wed, 4 Mar 2015 22:54:57 -0300 Subject: [PATCH 464/725] translating --- ...nitor Network Usage with nload in Linux.md | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md index 1ab8f35e95..62f401e72f 100644 --- a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md +++ b/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md @@ -6,111 +6,138 @@ nload is a free linux utility that can help the linux user or sysadmin to monito nload 是一个免费的linux工具,通过提供两个简单的图形化界面来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个作为进入流量,一个作为流出流量. I really like to use **nload** to display information on my screen about the current download speed, the total incoming traffic, and the average download speed. The graphs reported by nload tool are very easy to interpret and what is the most important thing they are very helpful. - +我是真的很喜欢用**nload**来在屏幕上显示当前的下载速度,总的流入量和平均下载速度等信息。nload工具的报告图非常容易理解,最重要的是这些信息真的非常有用。 According to the manual pages it monitors all network devices by default, but you can easily specify the device you want to monitor and also switch between different network devices using the arrow keys. There are many options avaliable such as -t to determine refresh interval of the display in milliseconds (the default value of interval is 500), -m to show multiple devices at the same time(traffic graphs are not shown when this option is used), -u to set the type of unit used for the display of traffic numbers and many others that we are going to explore and practise in this tutorial. +在使用手册上说到,在默认情况下会监控所有网络设备。但是你可以轻松地指定你想要监控的设备,而且可以可以通过方向键头在不同的网络设备之间进行转换。另外还有很多的选项可用,例如 ‘-r’选项确定以毫秒来刷新显示时间间隔(默认时间间隔值是500毫秒),‘-m’选项用来实时显示多个设备(流量图在使用该选项时不会显示), ‘-u’选项用来设置显示流量数字的单元类型,另外还有许多其他的选项将会在该教程中探索和练习。 ### How to install nload on your linux machine ### +### 如何将 nload安装到你的linux机器上 ### **Ubuntu** and **Fedora** users can easily install nload from the default repositories. +**Ubuntu** 和 **Fedora** 用户可以从默认的软件仓库中容易地安装。 Install nload on Ubuntu by using the following command. +在Ubuntu上使用以下命令进行安装。 sudo apt-get install nload Install nload on Fedora by using the following command. +在Fedora上使用以下命令进行安装。 sudo yum install nload What about **CentOS** users? Just type the following command on your machine and you will get nload installed. +**CentOS**用户该怎么办呢? 只需要在你的机器上输入以下命令,通用能够达到相同的结果--殊途同归。 sudo yum install nload The following command will help you to install nload on OpenBSD systems. +以下的命令会帮助你在OpenBSD系统中安装nload. sudo pkg_add -i nload A very effective way to install software on linux machine is to compile by source as you can download and install the latest version which usually means better performance, cool features and less bugs. +linux机器上的另外一个非常有效的安装软件的方式就是编译源代码,通过下载并安装最新的版本意味着能够获得更好地性能,更酷的特性以及越少的bug数。 ### How to install nload from source ### +### 如何通过源代码安装nload ### The first thing you need to do before installing nload from source you need to download it and to do this I like to use the wget uility which is available by default on many linux machines. This free utility helps linux users to download files from the web in a non-interactive way and has support for the following protocols. +在从源代码安装nload之前,你需要首先下载源代码。 我通常使用wget工具来进行下载--该工具在许多linux机器上默认可用。该免费工具帮助用户以非交互式的方式从网络上下载文件,并支持以下协议: - HTTP - HTTPS - FTP Change directory to **/tmp** by using the following command. +通过以下命令来进入到**/tmp**目录中。 cd /tmp Now type the following command in your terminal to download the latest version of nload on your linux machine. +然后在你的终端中输入以下命令就可以将最新版本的nload下载到你的linux机器上了。 wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz If you don't like to use the linux wget utility you can easily download it from the [official][1] source by just a mouse click. +如果你不喜欢使用wget工具,也可以通过简单的一个鼠标点击轻松地从[官网][1]上下载源代码。 The download will finish in no time as it is a small software. The next step is to untar the file you downloaded with the help of the **tar** utility. +由于该软件非常轻巧,其下载过程几乎在瞬间就会完成。接下来的步骤就是通过**tar**工具来将下载的源代码包进行解压。 The tar archiving utility can be used to store and extract files from a tape or disk archive. There are many options available in this tool but we need the followings to perform our operation: +tar归档工具可以用来从磁带或硬盘文档中存储或解压文件,该工具具有许多可用的选项,但是我们只需要下面的几个选项来执行我们的操作。 1. **-x** to extract files from an archive +1. **-x** 从文档中解压文件 1. **-v** to run in verbose mode +1. **-v** 使用繁琐模式运行--用来输入详细信息 1. **-f** to specify the files +1. **-f** 用来指定文件 For example: +例如: tar xvf example.tar Now that you learned how to use the tar utility I am very sure you know how to untar .tar archives from the commandline. +现在你学会了如何使用tar工具,我可以非常肯定你会知道如何从命令行中解压.tar文档。 tar xvf nload-0.7.4.tar.gz Then use the cd command to change directory to nload*. +之后使用cd命令来进入到nload*目录中 cd nload* It looks like this on my system. +在我的系统上看起来是这样的 oltjano@baby:/tmp/nload-0.7.4$ -Now run the command - - ./configure - -to to configure the package for your system. +Now run the command to to configure the package for your system. +然后运行下面这个命令来为你的系统配置包 ./configure Alot of stuff is going to be displayed on your screen. The following screenshot demonstrates how it is going to look like. +此时会有一大波僵尸会在你的屏幕上显示出来,下面的一个屏幕截图描述了它的样子。 ![configuring packages for nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload1.png) Then compile the nload with the following command. +在上述命令完成之后,通过下面的命令来编译nload。 make ![compiling nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload2.png) And finally install nload on your linux machine with the following command. +好了,终于....,下载通过以下命令可以将nload安装在你的机器上了。 sudo make install ![installing nload from source](http://blog.linoxide.com/wp-content/uploads/2015/01/nload3.png) Now that the installation of nload is finished it is time for you to learn how to use it. +安装好nload之后就是时间来让你学习如何使用它了。 ### How to use nload ### +###如何使用nload### I like to explore so type the following command on your terminal. +我喜欢探索,所以在你的终端输入以下命令. nload What do you see? +看到了什么? I get the following. +我得到了下面的结果。 ![running nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.png) @@ -203,7 +230,7 @@ And if you run the command nload without any option it will monitor all auto-det via: http://linoxide.com/monitoring-2/monitor-network-usage-nload/ 作者:[Oltjano Terpollari][a] -译者:[译者ID](https://github.com/译者ID) +译者:[theo-l](https://github.com/theo-l) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 497071cb7b4c5ceb6c8ba01753f0a790c0f3f2a5 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 5 Mar 2015 10:53:26 +0800 Subject: [PATCH 465/725] translating --- ...w To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md b/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md index 3d20014215..52a0cf1951 100644 --- a/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md +++ b/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md @@ -1,3 +1,5 @@ +Translating----geekpi + How To Fix “Not Enough Free Disk Space On /boot” In Ubuntu ================================================================================ ### Question: How To Fix “Not Enough Free Disk Space On /boot” In Ubuntu? ### @@ -60,4 +62,4 @@ via: https://www.unixmen.com/how-to-fix-not-enough-free-disk-space-on-boot-in-ub 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://www.unixmen.com/author/sk/ -[1]:http://www.unixmen.com/after-a-fresh-install-of-ubuntu-1010-maverick-meerkat-configuration-made-easy-with-ubuntu-tweak/ \ No newline at end of file +[1]:http://www.unixmen.com/after-a-fresh-install-of-ubuntu-1010-maverick-meerkat-configuration-made-easy-with-ubuntu-tweak/ From 76ea4c21db5ee0aded04073d313d7867e0c509cd Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Thu, 5 Mar 2015 11:01:59 +0800 Subject: [PATCH 466/725] Translating by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index fd49a1d6f3..7fbac29032 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -30,13 +30,13 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7514/16088462018_7ee6e5b433_c.jpg) -它身上有着强烈的“GNOME感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷键来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 +它身上有着强烈的“GNOME感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷方法来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 ### 6. Komodo Edit ### ![](https://farm8.staticflickr.com/7502/16088462028_81d1114c84_c.jpg) -I was not very familiar with [Komodo Edit][9], but after trying it a few days, it surprised me with many many good things. First, the tab-based navigation is always appreciable. Then the fancy looking code outline reminds me a lot of Sublime Text. Furthermore, the macro system and the file comparator make Komodo Edit very practical. Its plugin library makes it almost perfect. "Almost" because I do not find the shortcuts as nice as in other IDEs. Also, I would enjoy more specific C/C++ tools, and this is typically the flaw of general IDEs. Yet, very enjoyable software. +我不是非常熟悉[Komodo Edit][9],但是在试用了一段时间之后,我被它很多很多的优点给惊喜到了。首先,基于标签的导航功能很有很强的可预见性。其次它奇特的代码大纲让我想到了Sublime Text。此外,它的宏系统和文件比较器使得Komodo Edit非常实用。它的插件库让它几乎是完美的,说“几乎”是因为在其它IDE里我的确找不到能与之相媲美的快捷方法了。而且我们能享受到更多特别的C/C++工具,这往往是普通IDE的不足之处。然而,Komodo Edit就能做到。 ### 7. NetBeans ### @@ -56,7 +56,7 @@ For all KDE fans out there, [KDevelop][11] might be the answer to your prayers. Finally, last for not least, [CodeLite][12] shows that you can take a traditional formula and still get something with its own feeling attached to it. If the interface really reminded me of Code::Blocks and Anjuta at first, I was just blown away by the extensive plugin library. Whether you want to diff a file, insert a copyright block, define an abbreviation, or push your work on Git, there is a plugin for you. If I had to nitpick, I would say that it lacks a few navigation shortcuts for my taste, but that's really it. -最后,我希望这份清单that this list had you discover new IDEs for coding in your favorite language. While Code::Blocks remains my favorite, it has some serious challengers. Also we are far from covering all the ways to code in C/C++ using an IDE on Linux. So if you have another one to propose, let us know in the comments. Also if you would like me to cover IDEs for a different language next, also let us know in the comment section. +最后,我希望这份清单能让你给自己最喜欢的语言探索到更多新的IDE。虽然Code::Blocks仍然是我的最爱,不过它有一些很强大的对手。当然我们也可以远离Linux上的IDE用文本编辑器去编写C/C++代码。所以如果你有什么其它的建议想法,在评论中让我们获悉。或者如果你想要我再说说关于一些其它语言的IDE,也可以评论里提出。 -------------------------------------------------------------------------------- From 21883dee4ba4767636284f39d6a2ccca1faa0b83 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 5 Mar 2015 11:13:23 +0800 Subject: [PATCH 467/725] translated --- ...ough Free Disk Space On boot' In Ubuntu.md | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md b/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md index 52a0cf1951..41318dd5fc 100644 --- a/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md +++ b/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md @@ -1,62 +1,61 @@ -Translating----geekpi - -How To Fix “Not Enough Free Disk Space On /boot” In Ubuntu +如何在Ubuntu上修复“Not Enough Free Disk Space On /boot” ================================================================================ -### Question: How To Fix “Not Enough Free Disk Space On /boot” In Ubuntu? ### +### 提问:如何在Ubuntu上修复“Not Enough Free Disk Space On /boot”错误?### -Today, I got the following error, but a simple one, when try to update my Lubuntu 14.04 desktop. +今天,当我在升级Lubuntu 14.04的时候遇到了下面这个错误,但是很简单。 > “Not Enough Free Disk Space On /boot” ![](https://www.unixmen.com/wp-content/uploads/2015/02/Software-Updater_002.png) -This is because my /boot partition has caught up with unwanted old kernels, packages etc. +这是因为我的启动分区超出了不再要的旧内核与包等。 -### Answer: ### +### 回答: ### -I heard about **Computer Janitor** feature which will remove unwanted old junk files in Ubuntu Tweak tool. Using the Computer Janitor, you can clean up your system like a freshly installed system. Janitor will remove; +我听说**Computer Janitor**这个特性可以在Ubuntu Tweak中删除不想要的垃圾文件。使用Computer Janitor,你可以将你的系统清理成像新安装的那样。Janitor会删除: -- Apps cache(Firefox/Chrome cache, Software center cache); -- Thumbnail cache; -- Apt cache; -- Old kernels; -- Package configs; -- And unneeded packages. +- 程序缓存(Firefox/Chrome 缓存、软件中心缓存); +- 略缩图缓存; +- apt缓存; +- 旧内核; +- 包的配置; +- 不再需要的包。 If you haven’t install this tool, look at the following link. +如果你还没有安装这个工具,参考下面的链接 -- **[How To Install And Use Ubuntu Tweak On Ubuntu][1]** +- **[如何安装和使用Ubuntu Tweak][1]** -To remove unwanted junk files, open Ubuntu Tweak, and click on the **Janitor** option. +要删除不需要的垃圾文件,打开Ubuntu Tweak,点击 **Janitor** 选项。 ![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_006.png) -Select the check the boxes to remove unwanted junk from your system, and click **Clean** button. +选择你想要删除的文件的选框,并点击 **Clean** 按钮。 ![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_007.png) -Janitor will now start to clean up your system +Janitor现在就开始清理你的系统了。 ![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_003.png) -Cool! The system is clean now. +真酷!系统清理完成了。 ![](https://www.unixmen.com/wp-content/uploads/2015/02/Ubuntu-Tweak_008.png) -Again I re-launched the software updater. This time it went smoothly without any issues. +我重启启动了软件更新。这个没再遇到问题了。 ![](https://www.unixmen.com/wp-content/uploads/2015/02/Software-Updater_009.png) -That’s all. Enjoy. There are others ways also available to clean up the system. But, this seems very easy to follow. We can do system clean up in few mouse clicks. +就是这样。当然也有其他的方法可以清理系统。但是,这个方法很容易学。我们可以只点击几次鼠标就可以清理系统。 -Cheers! +干杯! -------------------------------------------------------------------------------- via: https://www.unixmen.com/how-to-fix-not-enough-free-disk-space-on-boot-in-ubuntu/ 作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From e697013cbecb0fbee15f94a81d787e3acf2b9b38 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 5 Mar 2015 11:13:48 +0800 Subject: [PATCH 468/725] translated --- ...4 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md (100%) diff --git a/sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md b/translated/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md similarity index 100% rename from sources/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md rename to translated/tech/20150304 How To Fix 'Not Enough Free Disk Space On boot' In Ubuntu.md From 176085ad11050024ae4e32bf31f2fd2ae1eb3f70 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 5 Mar 2015 11:41:25 +0800 Subject: [PATCH 469/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...--Find And Remove Duplicate Files Instantly From Hard Drive.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md (100%) diff --git a/translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md b/published/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md similarity index 100% rename from translated/tech/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md rename to published/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md From bac14ffb151ec129b822bb1aaf6da3e70b224d17 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 5 Mar 2015 16:24:33 +0800 Subject: [PATCH 470/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...w to install full kernel source on Debian or Ubuntu.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md index 1296b0f975..4887c60e6a 100644 --- a/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md +++ b/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md @@ -6,7 +6,7 @@ Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 只有在你需要生成一个定制的内核,而且内核源码中的一些内核默认设置要被你调整了的情况下,你才需要完整的内核源码树。 -这里将会解答如何**在Debian或Ubuntu的库中下载并安装完整树结构的内核源码**。虽然你可以在这个网站[https://www.kernel.org/pub/linux/kernel/][2]下载官方的内核源码,但是发行版软件仓库可以允许你下载包含补丁的内核源码。 +这里将会解答如何**在Debian或Ubuntu的库中下载并安装完整树结构的内核源码**。你可以在[https://www.kernel.org/pub/linux/kernel/][2]下载官方的内核源码,不过使用发行版软件仓库可以允许你下载包含补丁的内核源码。 ### 在Debian上安装完整的内核源码 ### @@ -20,7 +20,7 @@ Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 伴随着完整内核源码(linux_X.X.XX.orig.tar.xz)的还有一些可用的内核补丁(linux_X.X.X+XXX.debian.tar.xz)和源码控制文件(linux_XXXX.dsc),这些都将被下载并存储到当前目录。在.dsc文件中会指出如何给内核源码打补丁。 -当下载完成,以上的命令将会自动调用工具dpkg-source将下载的内核源码解压到当前的目录中,与此同时更具.dsc文件来下补丁。 +当下载完成,以上的命令将会自动调用工具dpkg-source将下载的内核源码解压到当前的目录中,与此同时根据.dsc文件来下补丁。 最终完整的内核源码树将会以"linux-X.X.XX"的形式呈现在当前目录中。 @@ -35,7 +35,7 @@ Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 $ sudo apt-get install git $ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release --codename | cut -f2).git -举个例子,如果你使用的是Ubuntu14.04,以上的命令将会查看Git的"ubuntu-trusty"仓库中的代码。 +举个例子,如果你使用的是Ubuntu 14.04,以上的命令将会查看Git的"ubuntu-trusty"仓库中的代码。 ![](https://farm9.staticflickr.com/8642/16526856391_de636ff9b8_c.jpg) @@ -49,7 +49,7 @@ via: http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html 作者:[Dan Nanni][a] 译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c62318312961d61490e3e67975113484328dc5ac Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 5 Mar 2015 17:08:56 +0800 Subject: [PATCH 471/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ovie Player Has a Stylish Interface Ubuntu Installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/share => published}/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md (91%) diff --git a/translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md b/published/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md similarity index 91% rename from translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md rename to published/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md index 9cb0a3765d..0decb425e1 100644 --- a/translated/share/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md +++ b/published/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md @@ -1,10 +1,10 @@ -Flow 'N Play视频播放器有着独具风格的界面[在Ubuntu上安装] +在Ubuntu上安装Flow 'N Play—界面独具风格的视频播放器 ================================================================================ **Flow ‘N Play**是个用Qt编写的新视频播放器。它有着漂亮又简洁的界面,只提供基本播放功能。 ![](http://www.tuxarena.com/wp-content/uploads/2014/11/flow_n_play.jpg) -[Flow ‘N Play][1]是个比较新的视频播放器,它有着漂亮的界面和简单的操作(今年三月份第一次发行)。其中一个功能就是能通过拖动鼠标滑动视频列表。播放器带有基本功能,一个搜索功能,支持彩色主题。 +[Flow ‘N Play][1]是个比较新的视频播放器,它有着漂亮的界面和简单的操作(2014年3月份第一次发行)。其中一个功能就是能通过拖动鼠标滑动视频列表。播放器带有基本功能,一个搜索功能,支持彩色主题。 打开一个新的视频——你还可以在同一个对话框下自定义一个封面: From 872eb1af723014d8986e34ae28bb140999ef09db Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 5 Mar 2015 20:11:42 +0800 Subject: [PATCH 472/725] Update and rename translated/tech to translated/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md --- ... Passwordless SSH Logon to Ubuntu 14.04.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 translated/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md diff --git a/translated/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md b/translated/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md new file mode 100644 index 0000000000..a3020446ee --- /dev/null +++ b/translated/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md @@ -0,0 +1,85 @@ +设置Ubuntu14.04无密码登录SSH +================================================================================ +大家好,今天我来向大家介绍如何在可信的Ubuntu12.04上设置无密码登录SSH功能。仅在工作站有正确的(公私)密钥以供匹配时SSH服务端才会允许你登录,反之访问将不会被允许。 + +正常情况下,我们需要连上SSH的控制台输入用户名和密码,两者结合使用。如果两者全部正确,我们就可以访问,反之访问被服务端拒绝。不过相比而言还有一种比用密码更安全的登录方式,我们用的不是密码在登录SSH我们用的是密钥。 + +如果你想使用这个安全的方式,我们只需简单的禁用密码登录并只允许密钥即可。使用这种方式时,客户端计算机上会产生公私一对密钥。接着客户端得把公钥上传到SSH服务端的密要验证文件中去。在访问被授予前,服务器及客户端电脑互验密钥对。如果服务器上的公钥与客服端提交的私钥匹配访问开始,否则访问被拒绝。 + +这是获取SSH服务器认证中非常安全的一种做法,如果你想为SSH用户登录实施安全的认证,这也是备受推崇的方式。这里快速的过一遍允许无密码登录SSH的配置过程。 + +### 1.安装Openssh服务端 ### + +首先,我们需要更新我们的本地库索引。所以如下所见,我们需要先输入“apt-get update” + + $ sudo apt-get update + +![Updating Repo Index](http://blog.linoxide.com/wp-content/uploads/2015/02/updating-repo-list.png) + +现在我们可以通过以下命令安装openssh-server: + + $ sudo apt-get install openssh-server + +![Installing openssh server](http://blog.linoxide.com/wp-content/uploads/2015/02/installing-openssh-server.png) + +### 2. 开启openssh服务 ### + +在OpenSSH已经成功安装在Ubuntu14.04操作系统上了之后,我们要启动OpenSSH的服务。以下命令让你启动/开启服务。 + + $ sudo service ssh start + +OR + + $ sudo /etc/init.d/ssh start + +### 3. 配置密钥对 ### + +在我们安装并启动了OpenSSH服务以后。现在终于到了要我们搞定公私钥对的时候了,在终端中运行以下命令: + + $ ssh-keygen -t rsa + +在运行完以上命令了以后,我们完成一系列的提示的任务。首先选择保存密钥路径,按回车将会选择默认路径即家目录的一个隐藏的.ssh文件夹。下一个提示是请输入提醒。我个人将此留白(回车过)。之后密钥对就会创建,大功告成。 + +![Generating Key Pair](http://blog.linoxide.com/wp-content/uploads/2015/02/generating-key-pair.png) + +在密钥对生成以后,我们需要将**客户端的上的公钥复制到SSH服务端**或者宿主来创建对客户端的信任关系。运行以下命令复制客户端的公钥到服务端。 + + $ ssh-copy-id user@ip_address + +在公钥上传之后,我们现在可以不用通过密码登陆SSH了。为此,我们需要通过以下命令用文本编辑器打开**etc/ssh/ssh_config**。 + + $ sudo nano /etc/ssh/sshd_config + +现在,我们需要按照下图所示去到几行注释并进行一些赋值。 + +![Configuring sshd Config](http://blog.linoxide.com/wp-content/uploads/2015/02/configuring-sshd_config.png) + +### 4. 重启SSH服务 ### + +最后,在我们配置完SSH服务端后,为了使改动生效我们需要重启SSH服务。在终端或控制台运行以下命令重启。 + + $ sudo service ssh restart + +OR + + $ sudo /etc/init.d/ssh restart + +![Restarting ssh](http://blog.linoxide.com/wp-content/uploads/2015/02/restarting-ssh.png) + +现在,我们可以试试不用密码仅用密钥配对的方式登录ssh服务端了。 + +### 总结 ### + +太好了!我们成功的配置了无密码登录SSH。这是获取SSH服务器认证中非常安全的一种做法,如果你想为SSH但用户登录实施安全的认证这也是备受推崇的方式。所以,如果你还有什么问题或建议,请在意见框中向我们反馈。很欣慰你能读完,祝你SSH登录愉快 :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/setup-passwordless-ssh-logon-ubuntu-14-04/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ From 881b049e7b5fbb8de332d6982dde275f3f10dc11 Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 5 Mar 2015 20:12:31 +0800 Subject: [PATCH 473/725] translated From 01b9a4e928172827adf8821d9eae770828e9ebcd Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 5 Mar 2015 20:14:10 +0800 Subject: [PATCH 474/725] Delete 20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md --- ... Passwordless SSH Logon to Ubuntu 14.04.md | 87 ------------------- 1 file changed, 87 deletions(-) delete mode 100644 sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md diff --git a/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md b/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md deleted file mode 100644 index 58c6351003..0000000000 --- a/sources/tech/20150302 How to Setup Passwordless SSH Logon to Ubuntu 14.04.md +++ /dev/null @@ -1,87 +0,0 @@ -translating by martin. - -How to Setup Passwordless SSH Logon to Ubuntu 14.04 -================================================================================ -Hi all, today we'll gonna learn how we can setup Passwordless SSH Logon to Ubuntu 14.04 "Trusty". Only the workstations having the correct matching key pair (private and public) will be allowed to logon to the SSH server, without the key paring, access will not be allowed. - -Usually, we need to enter username and password combination to connect to an SSH console. If the combination is correct to that of the system's then, we get access to the server else we are denied from the access. But, there is something more secure than Password logon, we have passwordless SSH logon using the encrypted keys. - -If you want to enable this secured option, we can simply disable password-logon and only allow logon using an encryption key. When using encryption keys option, the client computer generates a private and public key pair. The client then must upload the public key to the SSH server authorized_key file. Before access is granted, the server and client computer validate the key pair. If the public key on the server matches the private key submitted via the client then access will be granted else will be denied. - -This is a very secure way authenticating to a SSH server and it’s a recommended method if you wish to implement secure logon with single user SSH logon. Here's a quick step-wise process on how to enable Passwordless SSH logon. - -### 1. Installing Openssh Server ### - -First off all, we'll need to update our local repository index. To do so, we'll first need to run apt-get update as shown below. - - $ sudo apt-get update - -![Updating Repo Index](http://blog.linoxide.com/wp-content/uploads/2015/02/updating-repo-list.png) - -Now, we can install openssh-server by running following command. - - $ sudo apt-get install openssh-server - -![Installing openssh server](http://blog.linoxide.com/wp-content/uploads/2015/02/installing-openssh-server.png) - -### 2. Enabling Openssh Server ### - -Now, we'll want to enable OpenSSH server after we successfully installed it on our Ubuntu 14.04 Operating System. The command to enable/start the server is given as follows. - - $ sudo service ssh start - -OR - - $ sudo /etc/init.d/ssh start - -### 3. Configuring Key Pair ### - -After we have installed our OpenSSH Server and enabled it. We'll now finally wanna go for generating our Public and Private Key Pair. To do that, run the following command in a terminal or console. - - $ ssh-keygen -t rsa - -After running the above command, we'll be prompted to complete a series of tasks. The first will be where to save the keys, press Enter to choose the default location which is in a hidden .ssh folder in the home directory. The next prompt will be to enter the Paraphrase. I personally leave this blank (just press enter) to continue. It will then create the key pair and we’re done. - -![Generating Key Pair](http://blog.linoxide.com/wp-content/uploads/2015/02/generating-key-pair.png) - -After generation of the key pair, we will need to **copy the client’s public key to the SSH server** or host inorder to create trusted relationship with it. We'll need to run the commands below to copy the client public key to the server. - - $ ssh-copy-id user@ip_address - -After the public key is copied to the server, we can now go and disable password logon via SSH. To do that, we'll need to open **/etc/ssh/ssh_config** via a text editor by run the commands below. - - $ sudo nano /etc/ssh/sshd_config - -Now, we'll need to uncomment the lines and set the values as shown below. - -![Configuring sshd Config](http://blog.linoxide.com/wp-content/uploads/2015/02/configuring-sshd_config.png) - -### 4. Restarting the SSH Server ### - -Finally, after we are done configuring SSH Server, we'll want to restart our SSH Server so that all the changes will take affect. To restart one can run the following command in a terminal or the console. - - $ sudo service ssh restart - -OR - - $ sudo /etc/init.d/ssh restart - -![Restarting ssh](http://blog.linoxide.com/wp-content/uploads/2015/02/restarting-ssh.png) - -Finally, we can now ssh in to the server without a password and only from the client having the same key pair not the password. - -### Conclusion ### - -Hurray! We have successfully enabled Passwordless SSH logon. It is a lot secure to enable Encrypted Key Pair SSH logon . This is a very secure way authenticating to a SSH server and it’s a recommended method if you wish to implement secure logon with single user SSH logon. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy Encrypted Secure SSH Login :-) - --------------------------------------------------------------------------------- - -via: http://linoxide.com/ubuntu-how-to/setup-passwordless-ssh-logon-ubuntu-14-04/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ From 1985cad11b8781e962455741d3ad55f6e3eeaef8 Mon Sep 17 00:00:00 2001 From: theo-l Date: Thu, 5 Mar 2015 15:50:52 -0300 Subject: [PATCH 475/725] translated --- ...nitor Network Usage with nload in Linux.md | 93 +++++-------------- 1 file changed, 25 insertions(+), 68 deletions(-) rename {sources => translated}/tech/20150121 How to Monitor Network Usage with nload in Linux.md (51%) diff --git a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md similarity index 51% rename from sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md rename to translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md index 62f401e72f..904a7c6861 100644 --- a/sources/tech/20150121 How to Monitor Network Usage with nload in Linux.md +++ b/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md @@ -1,74 +1,55 @@ -theo-l translating -How to Monitor Network Usage with nload in Linux 在linux中如何通过nload来监控网络使用情况 ================================================================================ -nload is a free linux utility that can help the linux user or sysadmin to monitor network traffic and bandwidth usage in real time by providing two simple graphs: one per incoming traffic and one for outgoing traffic. nload 是一个免费的linux工具,通过提供两个简单的图形化界面来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个作为进入流量,一个作为流出流量. -I really like to use **nload** to display information on my screen about the current download speed, the total incoming traffic, and the average download speed. The graphs reported by nload tool are very easy to interpret and what is the most important thing they are very helpful. 我是真的很喜欢用**nload**来在屏幕上显示当前的下载速度,总的流入量和平均下载速度等信息。nload工具的报告图非常容易理解,最重要的是这些信息真的非常有用。 -According to the manual pages it monitors all network devices by default, but you can easily specify the device you want to monitor and also switch between different network devices using the arrow keys. There are many options avaliable such as -t to determine refresh interval of the display in milliseconds (the default value of interval is 500), -m to show multiple devices at the same time(traffic graphs are not shown when this option is used), -u to set the type of unit used for the display of traffic numbers and many others that we are going to explore and practise in this tutorial. 在使用手册上说到,在默认情况下会监控所有网络设备。但是你可以轻松地指定你想要监控的设备,而且可以可以通过方向键头在不同的网络设备之间进行转换。另外还有很多的选项可用,例如 ‘-r’选项确定以毫秒来刷新显示时间间隔(默认时间间隔值是500毫秒),‘-m’选项用来实时显示多个设备(流量图在使用该选项时不会显示), ‘-u’选项用来设置显示流量数字的单元类型,另外还有许多其他的选项将会在该教程中探索和练习。 -### How to install nload on your linux machine ### ### 如何将 nload安装到你的linux机器上 ### -**Ubuntu** and **Fedora** users can easily install nload from the default repositories. **Ubuntu** 和 **Fedora** 用户可以从默认的软件仓库中容易地安装。 -Install nload on Ubuntu by using the following command. 在Ubuntu上使用以下命令进行安装。 sudo apt-get install nload -Install nload on Fedora by using the following command. 在Fedora上使用以下命令进行安装。 sudo yum install nload -What about **CentOS** users? Just type the following command on your machine and you will get nload installed. **CentOS**用户该怎么办呢? 只需要在你的机器上输入以下命令,通用能够达到相同的结果--殊途同归。 sudo yum install nload -The following command will help you to install nload on OpenBSD systems. 以下的命令会帮助你在OpenBSD系统中安装nload. sudo pkg_add -i nload -A very effective way to install software on linux machine is to compile by source as you can download and install the latest version which usually means better performance, cool features and less bugs. linux机器上的另外一个非常有效的安装软件的方式就是编译源代码,通过下载并安装最新的版本意味着能够获得更好地性能,更酷的特性以及越少的bug数。 -### How to install nload from source ### ### 如何通过源代码安装nload ### -The first thing you need to do before installing nload from source you need to download it and to do this I like to use the wget uility which is available by default on many linux machines. This free utility helps linux users to download files from the web in a non-interactive way and has support for the following protocols. 在从源代码安装nload之前,你需要首先下载源代码。 我通常使用wget工具来进行下载--该工具在许多linux机器上默认可用。该免费工具帮助用户以非交互式的方式从网络上下载文件,并支持以下协议: - HTTP - HTTPS - FTP -Change directory to **/tmp** by using the following command. 通过以下命令来进入到**/tmp**目录中。 cd /tmp -Now type the following command in your terminal to download the latest version of nload on your linux machine. 然后在你的终端中输入以下命令就可以将最新版本的nload下载到你的linux机器上了。 wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz -If you don't like to use the linux wget utility you can easily download it from the [official][1] source by just a mouse click. 如果你不喜欢使用wget工具,也可以通过简单的一个鼠标点击轻松地从[官网][1]上下载源代码。 -The download will finish in no time as it is a small software. The next step is to untar the file you downloaded with the help of the **tar** utility. 由于该软件非常轻巧,其下载过程几乎在瞬间就会完成。接下来的步骤就是通过**tar**工具来将下载的源代码包进行解压。 -The tar archiving utility can be used to store and extract files from a tape or disk archive. There are many options available in this tool but we need the followings to perform our operation: tar归档工具可以用来从磁带或硬盘文档中存储或解压文件,该工具具有许多可用的选项,但是我们只需要下面的几个选项来执行我们的操作。 1. **-x** to extract files from an archive @@ -78,152 +59,128 @@ tar归档工具可以用来从磁带或硬盘文档中存储或解压文件, 1. **-f** to specify the files 1. **-f** 用来指定文件 -For example: 例如: tar xvf example.tar -Now that you learned how to use the tar utility I am very sure you know how to untar .tar archives from the commandline. 现在你学会了如何使用tar工具,我可以非常肯定你会知道如何从命令行中解压.tar文档。 tar xvf nload-0.7.4.tar.gz -Then use the cd command to change directory to nload*. 之后使用cd命令来进入到nload*目录中 cd nload* -It looks like this on my system. 在我的系统上看起来是这样的 oltjano@baby:/tmp/nload-0.7.4$ -Now run the command to to configure the package for your system. 然后运行下面这个命令来为你的系统配置包 ./configure -Alot of stuff is going to be displayed on your screen. The following screenshot demonstrates how it is going to look like. 此时会有一大波僵尸会在你的屏幕上显示出来,下面的一个屏幕截图描述了它的样子。 ![configuring packages for nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload1.png) -Then compile the nload with the following command. 在上述命令完成之后,通过下面的命令来编译nload。 make ![compiling nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload2.png) -And finally install nload on your linux machine with the following command. 好了,终于....,下载通过以下命令可以将nload安装在你的机器上了。 sudo make install ![installing nload from source](http://blog.linoxide.com/wp-content/uploads/2015/01/nload3.png) -Now that the installation of nload is finished it is time for you to learn how to use it. 安装好nload之后就是时间来让你学习如何使用它了。 -### How to use nload ### ###如何使用nload### -I like to explore so type the following command on your terminal. 我喜欢探索,所以在你的终端输入以下命令. nload -What do you see? 看到了什么? -I get the following. 我得到了下面的结果。 ![running nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.png) -As you can see from the above screenshot I get information on: - -### Incoming Traffic ### - -#### Current download speed #### +如上述截图可以看到,我得到了以下信息: +### 流入量### +#### 当前下载速度#### ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.1.png) -#### Average download speed #### - +#### 平均下载速度#### ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.2.png) -#### Minimum download speed #### - +#### 最小下载速度#### ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.3.png) -#### Maximum download speed #### - +#### 最大下载速度#### ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.4.png) -#### Total incoming traffic in bytes by default #### - +#### 总的流入量按字节进行显示#### ![](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.5.png) -### Outgoing Traffic ### +### 流出量 ### -The same goes for outgoing traffic. - -#### Some useful options of nload #### - -Use the option +类似的同样适用于流出量 +#### 一些nload游泳的选项#### +使用选项 -u -to set set the type of unit used for the display of traffic numbers. - -The following command will help you to use the MBit/s unit. +用来设置显示流量单元的类型. +下面的命令会帮助你使用MBit/s显示单元 nload -u m -The following screenshot shows the result of the above command. - +下面的屏幕截图显示了上述命令的结果. ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload5.png) -Try the following command and see the results. +尝试以下命令然后看看有什么结果. nload -u g ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload6.png) -There is also the option **-U**. According to the manual pages it is same as the option -u but only for an amount of data. I tested this option and to be honest it very helpful when you want to check the total amount of traffic be it incoming or outgoing. +同时还有一个**-U**选项.根据手册描述,该选项基本上与-u选项类似,只是用在合计数据. 我测试了这个命令,老实说,当你需要检查总的流入与流出量时非常有用. nload -U G ![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload7.png) -As you can see from the above screenshot the command **nload -U G** helps to display the total amount of data (incoming or outgoing) in Gbyte. +从上面的截图中可以看到,**nload -U G** 使用Gbyte来显示数据总量. -Another useful option I like to use with nload is the option **-t**. This option is used to refresh interval of display in milliseconds which is 500 by default. - -I like to experiment a little by using the following command. +另外一个我喜欢使用的有用选项是 **-t**. 该选项用来设置刷新显示事件间隔为毫秒,默认值为500毫秒. +我会通过下面的命令做一些小的实验. nload -t 130 -So what the above command does is that it sets the display to refresh every 130 milliseconds. It is recommended to no specify refresh intervals shorter than about 100 milliseconds as nload will generate reports with mistakes during the calculations. +那么上述命令做了什么呢,它讲刷新显示时间间隔设置为130毫秒. 通常推荐不要讲该时间间隔值设置为小于100毫秒,因为nload在计算过程中可能会生成带错的报告. -Another option is **-a**. It is used when you want to set the length in seconds of the time window for average calculation which is 300 seconds by default. +另外的一个选项为 **-a**. 在你想要设置计算平均值的时间窗口秒数长度时使用,默认该值为300秒. -What if you want to monitor a specific network device? It is very easy to do that, just specify the device or the list of devices you want to monitor like shown below. +那么当你想要监控指定的网络设备该如何呢? 非常容易, 想下面这样简单地指定设备或者列出想要监控的设备列表. nload wlan0 ![nload monitoring wlan0 on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) -The following syntax can help to monitor specific multiple devices. +下面的语法可帮助你监控指定的多个设备. nload [options] device1 device2 devicen -For example use the following command to monitor eth0 and wlan0. +例如,使用下面的命令来监控eth0和eth1. nload wlan0 eth0 -And if you run the command nload without any option it will monitor all auto-detected devices, you can display graphs for each one of them by using the right and left arrow keys. +如果不带选项来运行nload,那么它会监控监控所有自动检测到的设备,你可以通过左右方向键来显示其中的任何一个设备的信息. -------------------------------------------------------------------------------- From 3c88756d2dea2245f8ff1ac271e91e3cf9aca463 Mon Sep 17 00:00:00 2001 From: theo-L Date: Thu, 5 Mar 2015 17:33:04 -0300 Subject: [PATCH 476/725] Update 20150121 How to Monitor Network Usage with nload in Linux.md --- ...20150121 How to Monitor Network Usage with nload in Linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md index 904a7c6861..9b70fa4d8e 100644 --- a/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md +++ b/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md @@ -130,7 +130,7 @@ tar归档工具可以用来从磁带或硬盘文档中存储或解压文件, ### 流出量 ### 类似的同样适用于流出量 -#### 一些nload游泳的选项#### +#### 一些nload有用的选项#### 使用选项 -u From 06534f5a2847c8ad0a711d39dbcaffee546b515e Mon Sep 17 00:00:00 2001 From: Ping Date: Fri, 6 Mar 2015 09:29:44 +0800 Subject: [PATCH 477/725] Ping Translating --- ...asics--How To Find Maximum Supported RAM By Your System.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md b/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md index 2fed06677b..5761359df6 100644 --- a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md +++ b/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md @@ -1,3 +1,5 @@ +Translating + Linux Basics: How To Find Maximum Supported RAM By Your System ================================================================================ ![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2015/02/RAM-790x527.jpg) @@ -693,4 +695,4 @@ via: https://www.unixmen.com/linux-basics-how-to-find-maximum-supported-ram-by-y 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:https://www.unixmen.com/author/sk/ \ No newline at end of file +[a]:https://www.unixmen.com/author/sk/ From f411c1458d9d547a5bb2916096a30dc78354a7b7 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Fri, 6 Mar 2015 11:52:50 +0800 Subject: [PATCH 478/725] Translating by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md index 7fbac29032..652f228367 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/sources/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -42,13 +42,13 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7569/16089881229_98beb0fce3_c.jpg) -Just like Eclipse, impossible to avoid this beast. With navigation via tabs, project management, code outline, change history tracking, and a plethora of tools, [NetBeans][10] might be the most complete IDE out there. I could list for half a page all of its amazing features. But that will tip you off too easily about its main disadvantage, it might be too big. As great as it is, I prefer plugin based software because I doubt that anyone will need both Git and Mercurial integration for the same project. Call me crazy. But if you have the patience to master all of its options, you will be pretty much become the master of IDEs everywhere. +就好像Eclipse一样,这又是一款不得不提的“巨人级”软件。拥有的功能包括通过标签进行导航、项目管理、代码大纲、更改历史追踪和大量工具,[NetBeans][10]可能是最完整的IDE了,我能用半页来列出它所有让人震惊的特色功能。但是这同时也很容易地向你透露了它的主要缺点,它太臃肿了。比起它的强大,我更喜欢基于插件的软件因为我觉得不太会有人为了一个同样的项目同时需要Git和Mercurial相结合来工作,我是不是很疯狂。但是如果你有耐心去掌握它所有的选项,那你差不多无论到哪里都是IDE大师了。 ### 8. KDevelop ### ![](https://farm8.staticflickr.com/7519/15653583824_e412f2ab1f_c.jpg) -For all KDE fans out there, [KDevelop][11] might be the answer to your prayers. With a lot of configuration options, KDevelop is yours if you manage to seize it. Call me superficial but I never really got past the interface. But it's too bad for me as the editor itself packs quite a punch with a lot of navigation options and customizable shortcuts. The debugger is also very advanced and will take a bit of practice to master. However, this patience will be rewarded with this very flexible IDE's full power. And it gets special credits for its amazing embedded documentation. +说到这,肯定照顾到所有的KDE粉丝,[KDevelop][11]会是你希望的答案。它拥有许多配置选项,如果你设法去征服KDevelop,那它就是你的。你们说我肤浅,但是我真的从来没有深入过它界面以外的层次了。But it's too bad for me as the editor itself packs quite a punch with a lot of navigation options and customizable shortcuts. 它的调试器也是相当高级,要去练习掌握。然而,这样的耐心是有回报的,就是能领会到这款灵活的IDE的全部能力。And it gets special credits for its amazing embedded documentation. ### 9. CodeLite ### From 164c71e43362307459dff2e6a2b359bde5f27cd8 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Fri, 6 Mar 2015 16:36:56 +0800 Subject: [PATCH 479/725] =?UTF-8?q?20150306-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...sed Install It In Ubuntu And Linux Mint.md | 49 +++++ ...lftp--A Simple Command line FTP Program.md | 174 ++++++++++++++++++ .../tech/20150306 Nmap--Not Just for Evil.md | 41 +++++ 3 files changed, 264 insertions(+) create mode 100644 sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md create mode 100644 sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md create mode 100644 sources/tech/20150306 Nmap--Not Just for Evil.md diff --git a/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md new file mode 100644 index 0000000000..8aef952736 --- /dev/null +++ b/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md @@ -0,0 +1,49 @@ +Pinta 1.6 Released! Install It In Ubuntu And Linux Mint +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Pinta_Ubuntu_Linux.jpeg) + +[Pinta][1] is a free and open source drawing application which is very popular among Linux users. It won’t be incorrect to term it as an **open source alternative to Microsoft Paint**. Pinta is available for all major platforms such as Linux, Windows and Mac OS X. + +While Gimp is popular as full featured image editing software, Pinta is more of a paint and drawing tool. I have used it extensively in my tutorials for drawing arrows and curves on the screenshots and I can say that it’s my favorite drawing app in Linux. + +### New features in Pinta 1.6 ### + +After over an year, Pinta has released version 1.6, fixing over 50 bugs and introducing some new features. New features are as following: + +- Line tool now supports drawing curves and arrows +- Shapes can be edited even after being drawn +- All shape tools now support drawing dashed lines +- All selection tools now support the Union, Exclude, Xor, and Intersection modes +- Add-in manager now consists of ‘add ins’ +- New options in command line usage + +New version also fixes the annoying bug where you [cannot open a file with Pinta in right click menu option][2]. You can read all the changes in the [release note][3]. + +### Install Pinta 1.6 in Ubuntu and Linux Mint ### + +Pinta 1.5 is available in Ubuntu 14.04, 14.10, Linux Mint 17, elementary OS. If you want to install the latest version 1.6, you can use the official PPA from Pinta team. Don’t worry if you have Pinta 1.5 installed already. Installing it again will upgrade the version. + +Open a terminal and use the following commands: + + sudo add-apt-repository ppa:pinta-maintainers/pinta-stable + sudo apt-get update + sudo apt-get install pinta + +To download the source code or to get the installation files for Windows and Mac OS X, check the [download page of Pinta][4]. In a related post, you can also check out [best photo applications for Linux][5]. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/pinta-1-6-ubuntu-linux-mint/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://pinta-project.com/ +[2]:http://itsfoss.com/add-application-list-open-applications-ubuntu-1310/ +[3]:http://pinta-project.com/releases/1-6 +[4]:http://pinta-project.com/releases +[5]:http://itsfoss.com/image-applications-ubuntu-linux/ \ No newline at end of file diff --git a/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md b/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md new file mode 100644 index 0000000000..b4fe88cd12 --- /dev/null +++ b/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md @@ -0,0 +1,174 @@ +How to Setup lftp - A Simple Command line FTP Program +================================================================================ +Hi everyone, this article is about Lftp and how we can install Lftp in our Linux Operating System. [Lftp][1] is a command line based File Transfer Software also known as FTP Client which was developed by Alexander Lukyanov and was distributed as GNU General Public License. Besides FTP, it also supports FTPS, HTTP, HTTPS, HFTP, FISH, and SFTP. The program also supports FXP, allowing for data transfers between two FTP servers bypassing the client machine. + +It has some awesome advanced features such as recursively mirroring entire directory trees and resuming downloads. Transfers can be scheduled for execution at a later time, bandwidth can be throttled, transfer queues can be created, and Unix shell-like job control is supported. The client can also be used interactively or automated with scripts. + +### Installing Lftp ### + +Before we try to run lftp, we have make sure that it is properly installed in our Linux Distribution. Here are some commands mentioned for installing lftp in the list common distribution of Linux. + +**On Ubuntu 14.04 LTS** + +In Ubuntu 14.04 LTS and its derivatives, we can install lftp using apt manager. So, to install it, we'll need to run the following commands in a shell or a terminal under sudo privilege. + + $ sudo apt-get install lftp + +![ubuntu install lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/ubuntu-install-lftp.png) + +**On CentOS/Fedora/RHEL** + +As lftp is also available in the repository of Fedora, CentOS and RHEL, we can use **yum** manager to install it. + + $ sudo yum install lftp + +![fedora lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/fedora-lftp.png) + +**On Arch Linux** + +It is also available in Arch Linux Package Repository so, we can simply use pacman to install it. + + $ sudo pacman -S lftp + +![archlinux install lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/archlinux-install-lftp.png) + +**On OpenSuse** + +Zypper, package management software for OpenSuse can be used to install lftp. Here is the command with which one can install it on their OpenSuse machine. + + $ sudo zypper install lftp + +![opensuse lftp install](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp_install.png) + +### Logging in ### + +To login to a ftp server or sftp server, we'll first need to know about the required credential for the login like username, password, ports. + +After that, we'll want to login using lftp client as basic usage. + + $ lftp ftp://linoxide@localhost + +![ftp login](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp-login.png) + +If we need to point a port to the login then, we'll need to add port as shown below. + + $ lftp ftp://linoxide@localhost:21 + +![ftp login with ports](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp-login-port.png) + +### Navigation ### + +We can use **ls** to list files and directories, **cd** to enter into a directory. + +![ls and cd](http://blog.linoxide.com/wp-content/uploads/2015/03/ls-cd-lftp.png) + +### Uploading and Download Files ### + +We can use **pget** for downloading files from the remote server. + + > pget linspeed.svg + +![pget lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/pget-lftp.png) + +We can use **put** for uploading files to the remote server. + + > put linoxide.tar + +![upload with put](http://blog.linoxide.com/wp-content/uploads/2015/03/put-upload.png) + +To resume partially downloaded files/directories, we will use the -c switch: + + > mirror -c Directory + + >pget -c linoxide.tar + + > put -c upload.tar + +### Using Mirror ### + +We can use mirror to download the whole directory pointed as the source. + + > mirror remote local + +![download with mirror](http://blog.linoxide.com/wp-content/uploads/2015/03/mirror.png) + +There is also reverse mirror (mirror -R) which uploads or updates a directory tree on server. + + > mirror -R local remote + +![upload or update with mirror reverse](http://blog.linoxide.com/wp-content/uploads/2015/03/mirror-reverse.png) + +To resume partially downloaded files/directories, we will use the -c switch: + + > mirror -c Directory + +### To Queue Items to Download ### + +We can use queue option with lftp so that we can download selected files in a queue one by one as there is an option in GUI based clients to select and download in a queue. Here's an example on it. + +To prevent queue from auto transferring while you add to it : + + > queue stop + +Now, we'll add them into queue. + + > queue mirror "directory" + + > queue pget "file.tar" + +After the queue has been added, we should run queue start command. + + > queue start + +To remove the entire queue run the following command. + + > queue -d + +### Segmented Downloading ### + +Here, in this example we are segmenting files into 3 segments, one can change it according to their own need. + +A pget command using segmentation is **pget -n 3 file.tar**, where 3 is the number of segments. + + > pget -n 3 file.tar + +A mirror command using segmentation is **mirror --use-pget-n=3 directory**, where 3 is the number of segments. + + > mirror --use-pget-n=3 linxoxide + +We can use jobs -v to see the speeds of the individual segments as well as the total speed. + +### To Stop, Resume or Kill a Transfer ### + +To cancel a transfer we can press Ctrl+c . And to resume a download we can use the -c (--continue) switch as shown below. + + > mirror -c directory + +And to kill an active transfer we should run **kill** and to kill and delete all we'll need to run **kill all** as shown below. + + > kill + + > kill all + +### Exiting ### + +To quit from lftp, we should run exit command in the terminal or inside lftp interface. + + > exit + +### Conclusion ### + +Hurray! We have successfully installed lftp and learned some basic major ways to use it. lftp is an awesome command line ftp client which supports a lot of additional functionality and cool features. It has a lot stuffs more than the other common ftp client. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy lftp :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/setup-lftp-command-line-ftp/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://lftp.yar.ru/ \ No newline at end of file diff --git a/sources/tech/20150306 Nmap--Not Just for Evil.md b/sources/tech/20150306 Nmap--Not Just for Evil.md new file mode 100644 index 0000000000..8b7428f762 --- /dev/null +++ b/sources/tech/20150306 Nmap--Not Just for Evil.md @@ -0,0 +1,41 @@ +Nmap—Not Just for Evil! +================================================================================ +If SSH is the Swiss Army knife of the system administration world, Nmap is a box of dynamite. It's really easy to misuse dynamite and blow your foot off, but it's also a very powerful tool that can do jobs that are impossible without it. + +When most people think of Nmap, they think of scanning servers, looking for open ports to attack. Through the years, however, that same ability is incredibly useful when you're in charge of the server or computer in question. Whether you're trying to figure out what kind of server is using a specific IP address in your network or trying to lock down a new NAS device, scanning networks is incredibly useful. + +Figure 1 shows a network scan of my QNAP NAS. The only thing I use the unit for is NFS and SMB file sharing, but as you can tell, it has a ton of ports wide open. Without Nmap, it would be difficult to figure out what the machine was running. + +![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11825nmapf1.jpg) + +### Figure 1. Network Scan ### + +Another incredibly useful way to use Nmap is to scan a network. You don't even have to have root access for that, and it's as simple as specifying the network block you want to scan. For example, typing: + + nmap 192.168.1.0/24 + +will scan the entire range of 254 possible IP addresses on my local network and let me know which are pingable, along with which ports are open. If you've just plugged in a new piece of hardware, but don't know what IP address it grabbed via DHCP, Nmap is priceless. For example, the above command revealed this on my network: + + Nmap scan report for TIVO-8480001903CCDDB.brainofshawn.com (192.168.1.220) + Host is up (0.0083s latency). + Not shown: 995 filtered ports + PORT STATE SERVICE + 80/tcp open http + 443/tcp open https + 2190/tcp open tivoconnect + 2191/tcp open tvbus + 9080/tcp closed glrpc + +This not only tells me the address of my new Tivo unit, but it also shows me what ports it has open. Thanks to its reliability, usability and borderline black hat abilities, Nmap gets this month's Editors' Choice award. It's not a new program, but if you're a Linux user, you should be using it! + +-------------------------------------------------------------------------------- + +via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil + +作者:[Shawn Powers][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxjournal.com/users/shawn-powers \ No newline at end of file From eec57673f9643a7c30c455f75537c814469641db Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Fri, 6 Mar 2015 16:56:43 +0800 Subject: [PATCH 480/725] Delete 20150126 CD Audio Grabbers--Graphical Based.md --- ...0126 CD Audio Grabbers--Graphical Based.md | 129 ------------------ 1 file changed, 129 deletions(-) delete mode 100644 sources/share/20150126 CD Audio Grabbers--Graphical Based.md diff --git a/sources/share/20150126 CD Audio Grabbers--Graphical Based.md b/sources/share/20150126 CD Audio Grabbers--Graphical Based.md deleted file mode 100644 index 8865d5d810..0000000000 --- a/sources/share/20150126 CD Audio Grabbers--Graphical Based.md +++ /dev/null @@ -1,129 +0,0 @@ -Translating By H-mudcup -CD Audio Grabbers - Graphical Based -================================================================================ -CD audio grabbers are designed to extract ("rip") the raw digital audio (in a format commonly called CDDA) from a compact disc to a file or other output. This type of software enables a user to encode the digital audio into a variety of formats, and download and upload disc info from freedb, an internet compact disc database. - -Is copying CDs legal? Under US copyright law, converting an original CD to digital files for personal use has been cited as qualifying as 'fair use'. However, US copyright law does not explicitly allow or forbid making copies of a personally-owned audio CD, and case law has not yet established what specific scenarios are permitted as fair use. The copyright position is much clearer in the UK. From 2014 it become legal for UK citizens to make copies of CDs, MP3s, DVD, Blu-rays and e-books. This only applies if the individual owns the physical media being ripped, and the copy is made only for their own private use. For other countries in the European Union, member nations can allow a private copy exception too. - -If you are not sure what the position is for the country you live in, please check your local copyright law to make sure that you are on the right side of the law before using the software featured in this two page article. - -To some extent, it may seem a bit of a chore to rip CDs. Streaming services like Spotify and Google Play Music offer access to a huge library of music in a convenient form, and without having to rip your CD collection. However, if you already have a large CD collection, it is still desirable to be able to convert your CDs to enjoy on mobile devices like smartphones, tablets, and portable MP3 players. - -This two page article highlights my favorite audio CD grabbers. I pick the best four graphical audio grabbers, and the best four console audio grabbers. All of the utilities are released under an open source license. - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/freac.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-freac.png) - -fre:ac is an open source audio converter and CD ripper that supports a wide range of popular formats and encoders. The utility currently converts between MP3, MP4/M4A, WMA, Ogg Vorbis, FLAC, AAC, WAV and Bonk formats. It comes with several different presents for the LAME encoder. - -#### Features include: #### - -- Easy to learn and use -- Converter for MP3, MP4/M4A, WMA, Ogg Vorbis, FLAC, AAC, WAV and Bonk formats -- Integrated CD ripper with CDDB/freedb title database support -- Multi-core optimized encoders to speed up conversions on modern PCs -- Full Unicode support for tags and file names -- Easy to learn and use, still offers expert options when you need them -- Joblists -- Can use Winamp 2 input plugins -- Multilingual user interface available in 41 languages - -- Website: [freac.org][1] -- Developer: Robert Kausch -- License: GNU GPL v2 -- Version Number: 20141005 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/Audex.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-Audex.png) - -Audex is an easy to use open source audio CD ripping application. Whilst it is in a fairly early stage of development, this KDE desktop tool is stable, slick and simple to use. - -The assistant is able to create profiles for LAME, OGG Vorbis (oggenc), FLAC, FAAC (AAC/MP4) and RIFF WAVE. Beyond the assistant you can define your own profile, which means, that Audex works together with commmand line encoders in general. - -#### Features include: #### - -- Extract with CDDA Paranoia -- Extract and encode run parallel -- Filename editing with local and remote CDDB/FreeDB database -- Submit new entries to CDDB/FreeDB database -- Metadata correction tools like capitalize etc -- Multi-profile extraction (with one commandline-encoder per profile) -- Fetch covers from the internet and store them in the database -- Create playlists, cover and template-based-info files in target directory -- Create extraction and encoding protocols -- Transfer files to a FTP-server -- Internationalization support - -- Website: [kde.maniatek.com/audex][2] -- Developer: Marco Nelles -- License: GNU GPL v3 -- Version Number: 0.79 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/SoundJuicer.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-SoundJuicer.png) - -Sound Juicer is a lean CD ripper using GTK+ and GStreamer. It extracts audio from CDs and converts it into audio files. Sound Juicer can also play audio tracks directly from the CD, offering a preview before ripping. - -It supports any audio codec supported by a GStreamer plugin, including MP3, Ogg Vorbis, FLAC, and uncompressed PCM formats. - -It is an established part of the GNOME desktop environment. - -#### Features include: #### - -- Automatic track tagging via CDDB -- Encoding to ogg / vorbis, FLAC and raw WAV -- Easy to configure encoding path -- Multiple genres -- Internationalization support - -- Website: [burtonini.com][3] -- Developer: Ross Burton -- License: GNU GPL v2 -- Version Number: 3.14 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/ripperX.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-ripperX.png) - -ripperX is an open source graphical interface for ripping CD audio tracks and encoding them to Ogg, MP2, MP3, or FLAC formats. It's goal is to be easy to use, requiring only a few mouse clicks to convert an entire album. It supports CDDB lookups for album and track information. - -It uses cdparanoia to convert (i.e. "rip") CD audio tracks to WAV files, and then calls the Vorbis/Ogg encoder oggenc to convert the WAV to an OGG file. It can also call flac to perform lossless compression on the WAV file, resulting in a FLAC file. - -#### Features include: #### - -- Very simple to use -- Rip audio CD tracks into WAV, MP3, OGG, or FLAC files -- Supports CDDB lookups -- Supports ID3v2 tags -- Pause the ripping process - -- Website: [sourceforge.net/projects/ripperx][4] -- Developer: Marc André Tanner -- License: MIT/X Consortium License -- Version Number: 2.8.0 - --------------------------------------------------------------------------------- - -via: http://www.linuxlinks.com/article/20150125043738417/AudioGrabbersGraphical.html - -作者:Frazer Kline -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://www.freac.org/ -[2]:http://kde.maniatek.com/audex/ -[3]:http://burtonini.com/blog/computers/sound-juicer -[4]:http://sourceforge.net/projects/ripperx/ From e8c77a87c7f500997fe01991a6678dffa12c5394 Mon Sep 17 00:00:00 2001 From: H-mudcup Date: Fri, 6 Mar 2015 16:57:32 +0800 Subject: [PATCH 481/725] Update and rename translated/share to translated/share/20150126 CD Audio Grabbers--Graphical Based.md --- ...0126 CD Audio Grabbers--Graphical Based.md | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 translated/share/20150126 CD Audio Grabbers--Graphical Based.md diff --git a/translated/share/20150126 CD Audio Grabbers--Graphical Based.md b/translated/share/20150126 CD Audio Grabbers--Graphical Based.md new file mode 100644 index 0000000000..45254072cb --- /dev/null +++ b/translated/share/20150126 CD Audio Grabbers--Graphical Based.md @@ -0,0 +1,129 @@ + +CD音频抓取器——基于图形界面 +================================================================================ +CD音频抓取器是为了从光盘中提取(“剖出”)原始数字音频(它在一个通常被称为CDDA的格式中)并把它保存成文件或以其他形式输出而设计的。这类软件使用户能把数字音频编码成各种格式,并能下载和上传在线CD目录服务——一个在线的光盘数据库——中的光盘信息。 + +复制CD合法吗?在美国版权法中,把一个原始CD转换成数字文件用于个人使用在被引用时等同于‘合理使用’。然而,美国版权法并没有明确的允许或禁止拷贝私人音频CD,而且判例法还没有确立出在具体的哪种情况下可以视为合理使用。在英国版权的位置更清晰一些。从2014年开始,英国公民制造CD,MP3,DVD,蓝光和电子书的行为成为合法行为。这仅适用于这个人拥有被采集的媒体的实体,并且复制品仅用于他们个人使用。对于欧盟的其他国家,成员国可以允许私人复制这种特例。 + +如果你不确定在你生活的国家里版权处于什么位置,在你使用这两页文章中所列举的软件前请查询本地的版权法以确定你处在合法的一边。 + +在某种程度上,提取CD音轨看起来有点多余。如Spotify和Google Play Music这类流服务提供了一个巨大的以通用格式存在的音乐的库,无需采集你的CD集。但是,如果你已将收藏了一个数量巨大的CD集。能把你的CD转换成可以在便携设备如智能手机、平板和便携式MP3播放器上播放的格式仍然是个诱人的选择。 + +这两页文章推荐了我最喜欢的音频CD抓取器。我挑了四个最好的图形界面的音频抓取器,四个最好的控制台音频抓取器。所有这些应用程序都是在开源许可下发行的。 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/freac.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-freac.png) + +fre:ac是个开源音频转换器和CD提取器,支持很多种流行格式和编码器。目前这个应用可以在MA3、MP4/M4A、WMA、Ogg Vorbis、FLAC、AAC、WAV和Bonk格式间转换。这来源于几种不同形式的LAME编码器。 + +#### 功能包括: #### + +- 易学易用 +- MP3、MP4/M4A、WMA、Ogg Vorbis、FLAC、AAC、WAV和Bonk格式转换器 +- 集成了CDDB/freedb标题数据库支持的CD提取器 +- 多核优化的编码器加速了现代PC上的转换速度 +- 对于标签和文件名称的全Unicode支持 +- 易学易用,当你需要时还提供专家级选项 +- 任务列表 +- 可以使用Winamp 2加入附件 +- 多语言用户界面可以使用41种语言 + +- 网址: [freac.org][1] +- 开发人员:Robert Kausch +- 许可证: GNU GPL v2 +- 版本号: 20141005 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/Audex.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-Audex.png) + +Audex是个简单易用的开源音频CD提取应用。虽然它还处于早期开发阶段,这个KDE桌面工具足够稳定、聪明和简单,可以使用。 + +助手可以给LAME、OGG Vorbis(oggenc)、FLAC、FAAC(AAC/MP4)和RIFF WAVE创建配置文件。除去这个助手,你可以定义你自己的配置文件,这意味着,Audex适用于大部分的命令行编码器。 + +#### 功能包括: #### + +- 可提取CDDA Paranoia +- 提取和编码同时进行 +- 文件名采用本地和远程CDDB/FreeDB数据库 +- 提供新的CDDB/FreeDB数据库入口 +- 类似capitalize的元数据纠正工具 +- 多配置文件提取(每个配置文件文件有一个命令行编码器) +- 从互联网上抓取封面并将他们存在数据库中 +- 在目标目录中创建播放列表、封面和基于模板的信息文件 +- 创建提取和编码协议 +- 将文件传送到FTP服务器 +- 支持国际化 + +- 网址: [kde.maniatek.com/audex][2] +- 开发人员: Marco Nelles +- 许可证: GNU GPL v3 +- 版本号: 0.79 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/SoundJuicer.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-SoundJuicer.png) + +Sound Juicer是个使用GTK+和GStreamer的轻量级CD提取器。它从CD中提取音频并把它转换成音频文件。Sound Juicer还可以直接播放CD中的音轨,在提取前提供预览。 + +由于GStreamer插件它支持任何音频编码,包括 MP3、Ogg Vorbis、FLAC和未压缩的PCM格式。 + +它是GNOME桌面环境已建成的一部分。 + +#### 功能包括: #### + +- 自动通过CDDB给音轨加标签 +- 可编码成ogg/vorbis、FLAC和原始WAV +- 编码路径的设置很简单 +- 多种流派 +- 国际化支持 + +- 网址:[burtonini.com][3] +- 开发人员: Ross Burton +- 许可证:GNU GPL v2 +- 版本号:3.14 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/ripperX.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-ripperX.png) + +ripperX是个开源的图形交互界面,用于提取CD音轨并把他们编码成Ogg、MP2、MP3或FLAC格式。它的目的是容易使用,只需要点几下鼠标就能转换整张专辑。它支持在CDDB寻找专辑和音轨信息。 + +他使用cdparanoia把CD音轨转换(也就是“提取”)成WAV文件,然后访问Vorbis/Ogg编码器oggenc把WAV文件转换成OGG文件。它还可以访问flac让WAV文件有无损压缩的表现,制成FLAC文件。 + +#### 功能包括: #### + +- 非常简单易用 +- 可以把CD音轨提取成WAV、MP3、OGG或FLAC文件 +- 支持CDDB查找 +- 支持ID3v2标签 +- 可暂停提取进程 + +- 网址:[sourceforge.net/projects/ripperx][4] +- 开发人员:Marc André Tanner +- 许可证:MIT/X Consortium License +- 版本号:2.8.0 + +-------------------------------------------------------------------------------- + +转自:http://www.linuxlinks.com/article/20150125043738417/AudioGrabbersGraphical.html + +作者:Frazer Kline +译者:[H-mudcup](https://github.com/H-mudcup) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.freac.org/ +[2]:http://kde.maniatek.com/audex/ +[3]:http://burtonini.com/blog/computers/sound-juicer +[4]:http://sourceforge.net/projects/ripperx/ From 53f22ab1f8b63b43e7778aa5cef94dd05c560f6d Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 6 Mar 2015 20:40:30 +0800 Subject: [PATCH 482/725] translating --- ...-removal script returned error exit status 1' In Ubuntu.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md b/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md index f3f262dfbc..65fe0186b2 100644 --- a/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md +++ b/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md @@ -1,3 +1,5 @@ +Translating---geekpi + Linux Basics: How To Fix “E: /var/cache/apt/archives/ subprocess new pre-removal script returned error exit status 1″ In Ubuntu ================================================================================ ![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/04/ubuntu-790x558.png) @@ -42,4 +44,4 @@ via: https://www.unixmen.com/linux-basics-how-to-fix-e-varcacheaptarchives-subpr 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://www.unixmen.com/author/sk/ -[1]:https://www.virtualbox.org/wiki/Downloads \ No newline at end of file +[1]:https://www.virtualbox.org/wiki/Downloads From 14182cba36a043c24505f130a0cdeeacc0e7ad31 Mon Sep 17 00:00:00 2001 From: geekpi Date: Fri, 6 Mar 2015 20:45:59 +0800 Subject: [PATCH 483/725] translated --- ...returned error exit status 1' In Ubuntu.md | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) rename {sources => translated}/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md (65%) diff --git a/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md b/translated/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md similarity index 65% rename from sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md rename to translated/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md index 65fe0186b2..b086684614 100644 --- a/sources/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md +++ b/translated/tech/20150304 Linux Basics--How To Fix 'E-- var cache apt archives subprocess new pre-removal script returned error exit status 1' In Ubuntu.md @@ -1,44 +1,42 @@ -Translating---geekpi - -Linux Basics: How To Fix “E: /var/cache/apt/archives/ subprocess new pre-removal script returned error exit status 1″ In Ubuntu +Linux 基础:如何修复Ubuntu上“E: /var/cache/apt/archives/ subprocess new pre-removal script returned error exit status 1 ”的错误 ================================================================================ ![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2014/04/ubuntu-790x558.png) -Today, I got a problem while updating VirtualBox to the latest version. +今天,我在更新VirtualBox新版本的时候遇到了一个问题。 > E: /var/cache/apt/archives/ subprocess new pre-removal script returned error exit status 1 ![](https://www.unixmen.com/wp-content/uploads/2015/03/Update-Manager_0011.png) -### Solution: ### +### 解决: ### -I googled a bit and found the solution. Here is what I did to solve the problem. +我google了以下并找到了方法。下面是我解决的方法。 sudo apt-get clean sudo apt-get update && sudo apt-get upgrade -This will almost fix the problem. +这样几乎可以修复这个问题了。 -If you still end up with the same error, then try the following commands: +如果你仍然有问题,那就试试下面的命令: sudo dpkg --configure -a sudo apt-get -f install -Or, you can manually download the latest version from [Oracle VirtualBox][1] site and install it as shown below. +或者你可以按照下面的方法从[Oracle VirtualBox][1]官网下载最新版本并安装。 sudo apt-get update sudo dpkg -i virtualbox-4.3_4.3.24-98716~Ubuntu~raring_amd64.deb sudo apt-get -f install sudo apt-get autoclean && sudo apt-get autoremove -Cheers! +干杯! -------------------------------------------------------------------------------- via: https://www.unixmen.com/linux-basics-how-to-fix-e-varcacheaptarchives-subprocess-new-pre-removal-script-returned-error-exit-status-1-in-ubuntu/ 作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From be055ec64477a227985d3e14ad744e1837358b1c Mon Sep 17 00:00:00 2001 From: martin qi Date: Fri, 6 Mar 2015 22:42:57 +0800 Subject: [PATCH 484/725] translating by martin qi --- sources/tech/20150306 Nmap--Not Just for Evil.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150306 Nmap--Not Just for Evil.md b/sources/tech/20150306 Nmap--Not Just for Evil.md index 8b7428f762..a386afca4c 100644 --- a/sources/tech/20150306 Nmap--Not Just for Evil.md +++ b/sources/tech/20150306 Nmap--Not Just for Evil.md @@ -1,3 +1,5 @@ +translating by martin. + Nmap—Not Just for Evil! ================================================================================ If SSH is the Swiss Army knife of the system administration world, Nmap is a box of dynamite. It's really easy to misuse dynamite and blow your foot off, but it's also a very powerful tool that can do jobs that are impossible without it. @@ -38,4 +40,4 @@ via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.linuxjournal.com/users/shawn-powers \ No newline at end of file +[a]:http://www.linuxjournal.com/users/shawn-powers From 9a4f50fa5b63d8a216fad302ddd25b767c412498 Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 12:46:20 -0300 Subject: [PATCH 485/725] translating --- ... use yum to download a RPM package without installing it.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md index f1663888c8..238266819f 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md +++ b/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md @@ -1,3 +1,4 @@ +theo-l translating Linux FAQs with Answers--How to use yum to download a RPM package without installing it ================================================================================ > **Question**: I want to download a RPM package from Red Hat's standard repositories. Can I use yum command to download a RPM package without installing it? @@ -53,4 +54,4 @@ via: http://ask.xmodulo.com/yum-download-rpm-package.html 译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 224eaea45760dedce74a3be296d851fbf99e70e9 Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 13:08:48 -0300 Subject: [PATCH 486/725] translated --- ...oad a RPM package without installing it.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) rename {sources => translated}/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md (61%) diff --git a/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md similarity index 61% rename from sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md rename to translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md index 238266819f..205d976529 100644 --- a/sources/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md +++ b/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md @@ -1,57 +1,72 @@ theo-l translating Linux FAQs with Answers--How to use yum to download a RPM package without installing it +Linux 常见问题解答--如何使用yum来下载RPM包而不进行安装. ================================================================================ > **Question**: I want to download a RPM package from Red Hat's standard repositories. Can I use yum command to download a RPM package without installing it? +> **问题**:我想从Red Hat's的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? yum is the default package manager for Red Hat based systems, such as CentOS, Fedora or RHEL. Using yum, you can install or update a RPM package while resolving its package dependencies automatically. What if you want to download a RPM package without installing it on the system? For example, you may want to archive some RPM packages for later use or to install them on another machine. +yum是基于Red Hat的系统(如CentOS,Fedora,RHEl)上的默认包管理器.使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系.但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上. Here is how to download a RPM package from yum repositories. +这里说明了如何从yum仓库上下载一个RPM包. ### Method One: Yum ### +### 方法一:yum### The yum command itself can be used to download a RPM package. The standard yum command offers '--downloadonly' option for this purpose. +yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了`--downloadonly(只下载)`的选项来达到这个目的. $ sudo yum install --downloadonly By default, a downloaded RPM package will be saved in: +默认情况下,一个下载的RPM包会保存在下面的目录中: /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages In the above, [repository] is the name of the repository (e.g., base, fedora, updates) from which the package is downloaded. +以上的[repository]表示下载包的来源仓库的名称(例如,base,fedora,updates) If you want to download a package to a specific directory (e.g., /tmp): +如果你想要讲一个包下载到一个指定的目录(如/tmp): $ sudo yum install --downloadonly --downloaddir=/tmp Note that if a package to download has any unmet dependencies, yum will download all dependent packages as well. None of them will be installed. +注意,如果下载的包包含了任意没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装. One important thing is that on CentOS/RHEL 6 or earlier, you will need to install a separate yum plugin (called yum-plugin-downloadonly) to be able to use '--downloadonly' command option: +另外一个重要的事情时,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用`--downloadonly`命令选项: $ sudo yum install yum-plugin-downloadonly Without this plugin, you will get the following error with yum: +如果没有该插件,你会在使用yum时得到以下错误: Command line error: no such option: --downloadonly ![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) ### Method Two: Yumdownloader ### - +### 方法二: Yumdownloader### Another method to download a RPM package is via a dedicated package downloader tool called yumdownloader. This tool is part of yum-utils package which contains a suite of helper tools for yum package manager. +另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader. 这个工具时yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集. $ sudo yum install yum-utils To download a RPM package: +下载一个RPM包: $ sudo yumdownloader The downloaded package will be saved in the current directory. You need to use root privilege because yumdownloader will update package index files during downloading. Unlike yum command above, none of the dependent package(s) will be downloaded. +下载的包会被保存在当前目录中.你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件.与yum命令不同的是,任何依赖包不会被下载. -------------------------------------------------------------------------------- via: http://ask.xmodulo.com/yum-download-rpm-package.html -译者:[译者ID](https://github.com/译者ID) +译者:[theo-l](https://github.com/theo-l) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 53ca199a117bc343a71af9a756b22c5d303ddef8 Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 13:10:25 -0300 Subject: [PATCH 487/725] remove english --- ...nload a RPM package without installing it.md | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md index 205d976529..a9f1019c19 100644 --- a/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md +++ b/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md @@ -1,65 +1,48 @@ -theo-l translating -Linux FAQs with Answers--How to use yum to download a RPM package without installing it Linux 常见问题解答--如何使用yum来下载RPM包而不进行安装. ================================================================================ -> **Question**: I want to download a RPM package from Red Hat's standard repositories. Can I use yum command to download a RPM package without installing it? > **问题**:我想从Red Hat's的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? -yum is the default package manager for Red Hat based systems, such as CentOS, Fedora or RHEL. Using yum, you can install or update a RPM package while resolving its package dependencies automatically. What if you want to download a RPM package without installing it on the system? For example, you may want to archive some RPM packages for later use or to install them on another machine. yum是基于Red Hat的系统(如CentOS,Fedora,RHEl)上的默认包管理器.使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系.但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上. -Here is how to download a RPM package from yum repositories. 这里说明了如何从yum仓库上下载一个RPM包. -### Method One: Yum ### ### 方法一:yum### -The yum command itself can be used to download a RPM package. The standard yum command offers '--downloadonly' option for this purpose. yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了`--downloadonly(只下载)`的选项来达到这个目的. $ sudo yum install --downloadonly -By default, a downloaded RPM package will be saved in: 默认情况下,一个下载的RPM包会保存在下面的目录中: /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages -In the above, [repository] is the name of the repository (e.g., base, fedora, updates) from which the package is downloaded. 以上的[repository]表示下载包的来源仓库的名称(例如,base,fedora,updates) -If you want to download a package to a specific directory (e.g., /tmp): 如果你想要讲一个包下载到一个指定的目录(如/tmp): $ sudo yum install --downloadonly --downloaddir=/tmp -Note that if a package to download has any unmet dependencies, yum will download all dependent packages as well. None of them will be installed. 注意,如果下载的包包含了任意没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装. -One important thing is that on CentOS/RHEL 6 or earlier, you will need to install a separate yum plugin (called yum-plugin-downloadonly) to be able to use '--downloadonly' command option: 另外一个重要的事情时,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用`--downloadonly`命令选项: $ sudo yum install yum-plugin-downloadonly -Without this plugin, you will get the following error with yum: 如果没有该插件,你会在使用yum时得到以下错误: Command line error: no such option: --downloadonly ![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) -### Method Two: Yumdownloader ### ### 方法二: Yumdownloader### -Another method to download a RPM package is via a dedicated package downloader tool called yumdownloader. This tool is part of yum-utils package which contains a suite of helper tools for yum package manager. 另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader. 这个工具时yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集. $ sudo yum install yum-utils -To download a RPM package: 下载一个RPM包: $ sudo yumdownloader -The downloaded package will be saved in the current directory. You need to use root privilege because yumdownloader will update package index files during downloading. Unlike yum command above, none of the dependent package(s) will be downloaded. 下载的包会被保存在当前目录中.你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件.与yum命令不同的是,任何依赖包不会被下载. -------------------------------------------------------------------------------- From 3da9be0f119bf157ed030523271f559215db6365 Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 13:16:29 -0300 Subject: [PATCH 488/725] translating --- sources/tech/20150306 Nmap--Not Just for Evil.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150306 Nmap--Not Just for Evil.md b/sources/tech/20150306 Nmap--Not Just for Evil.md index 8b7428f762..3d142eea6c 100644 --- a/sources/tech/20150306 Nmap--Not Just for Evil.md +++ b/sources/tech/20150306 Nmap--Not Just for Evil.md @@ -1,3 +1,4 @@ +theo-l translating Nmap—Not Just for Evil! ================================================================================ If SSH is the Swiss Army knife of the system administration world, Nmap is a box of dynamite. It's really easy to misuse dynamite and blow your foot off, but it's also a very powerful tool that can do jobs that are impossible without it. @@ -38,4 +39,4 @@ via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.linuxjournal.com/users/shawn-powers \ No newline at end of file +[a]:http://www.linuxjournal.com/users/shawn-powers From 6f6fc0ce19038151680c8d551c08f12da6149f87 Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 14:59:00 -0300 Subject: [PATCH 489/725] translated --- .../tech/20150306 Nmap--Not Just for Evil.md | 42 ------------------- .../tech/20150306 Nmap--Not Just for Evil.md | 41 ++++++++++++++++++ 2 files changed, 41 insertions(+), 42 deletions(-) delete mode 100644 sources/tech/20150306 Nmap--Not Just for Evil.md create mode 100644 translated/tech/20150306 Nmap--Not Just for Evil.md diff --git a/sources/tech/20150306 Nmap--Not Just for Evil.md b/sources/tech/20150306 Nmap--Not Just for Evil.md deleted file mode 100644 index 3d142eea6c..0000000000 --- a/sources/tech/20150306 Nmap--Not Just for Evil.md +++ /dev/null @@ -1,42 +0,0 @@ -theo-l translating -Nmap—Not Just for Evil! -================================================================================ -If SSH is the Swiss Army knife of the system administration world, Nmap is a box of dynamite. It's really easy to misuse dynamite and blow your foot off, but it's also a very powerful tool that can do jobs that are impossible without it. - -When most people think of Nmap, they think of scanning servers, looking for open ports to attack. Through the years, however, that same ability is incredibly useful when you're in charge of the server or computer in question. Whether you're trying to figure out what kind of server is using a specific IP address in your network or trying to lock down a new NAS device, scanning networks is incredibly useful. - -Figure 1 shows a network scan of my QNAP NAS. The only thing I use the unit for is NFS and SMB file sharing, but as you can tell, it has a ton of ports wide open. Without Nmap, it would be difficult to figure out what the machine was running. - -![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11825nmapf1.jpg) - -### Figure 1. Network Scan ### - -Another incredibly useful way to use Nmap is to scan a network. You don't even have to have root access for that, and it's as simple as specifying the network block you want to scan. For example, typing: - - nmap 192.168.1.0/24 - -will scan the entire range of 254 possible IP addresses on my local network and let me know which are pingable, along with which ports are open. If you've just plugged in a new piece of hardware, but don't know what IP address it grabbed via DHCP, Nmap is priceless. For example, the above command revealed this on my network: - - Nmap scan report for TIVO-8480001903CCDDB.brainofshawn.com (192.168.1.220) - Host is up (0.0083s latency). - Not shown: 995 filtered ports - PORT STATE SERVICE - 80/tcp open http - 443/tcp open https - 2190/tcp open tivoconnect - 2191/tcp open tvbus - 9080/tcp closed glrpc - -This not only tells me the address of my new Tivo unit, but it also shows me what ports it has open. Thanks to its reliability, usability and borderline black hat abilities, Nmap gets this month's Editors' Choice award. It's not a new program, but if you're a Linux user, you should be using it! - --------------------------------------------------------------------------------- - -via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil - -作者:[Shawn Powers][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.linuxjournal.com/users/shawn-powers diff --git a/translated/tech/20150306 Nmap--Not Just for Evil.md b/translated/tech/20150306 Nmap--Not Just for Evil.md new file mode 100644 index 0000000000..ba923d178d --- /dev/null +++ b/translated/tech/20150306 Nmap--Not Just for Evil.md @@ -0,0 +1,41 @@ +Nmap--不只是邪恶. +================================================================================ +如果SSH是系统管理员世界的"瑞士军刀"的话,那么Nmap就是一盒炸药. 炸药很容易被误用然后将你的双脚崩掉,但是也是一个很有威力的工具,能够胜任一些看似无法完成的任务. + +大多数人想到Nmap时,他们想到的是扫描服务器,查找开放端口来实施工具. 然而,在过去的这些年中,同样的超能力在当你管理服务器或计算机遇到问题时变得难以置信的有用.无论是你试图找出在你的网络上有哪些类型的服务器使用了指定的IP地址,或者尝试锁定一个新的NAS设备,以及扫描网络等,都会非常有用. + +图1显示了我的QNAP NAS的网络扫描.我使用该单元的唯一目的是为了NFS和SMB文件共享,但是你可以看到,它包含了一大堆大开大敞的端口.如果没有Nmap,很难发现机器到底在运行着什么玩意儿. + +![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11825nmapf1.jpg) + +### 图1 网络扫描 ### + +另外一个无法想象的用处是用它来扫描一个网络.你甚至根本不需要root的访问权限,而且你也可以非常容易地来指定你想要扫描的网络块,例如,输入: + + nmap 192.168.1.0/24 + +上述命令会扫描我局部网络中全部的254个可用的IP地址,让我可以知道那个使可以Ping的,以及那些端口时开放的.如果你刚刚插入一片新的硬件,但是不知道它通过DHCP获取的IP地址,那么此时Nmap就是无价之宝. 例如,上述命令在我的网络中揭示了这个问题. + + Nmap scan report for TIVO-8480001903CCDDB.brainofshawn.com (192.168.1.220) + Host is up (0.0083s latency). + Not shown: 995 filtered ports + PORT STATE SERVICE + 80/tcp open http + 443/tcp open https + 2190/tcp open tivoconnect + 2191/tcp open tvbus + 9080/tcp closed glrpc + +它不仅显示了新的Tivo单元,而且还告诉我那些端口是开放的. 由于它的可靠性,可用性以及黑色边框帽子的能力,Nmap获得了本月的 <<编辑推荐>>奖. 这不是一个新的程序,但是如果你是一个linux用户的话,你应该玩玩它. + +-------------------------------------------------------------------------------- + +via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil + +作者:[Shawn Powers][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxjournal.com/users/shawn-powers From 107eb061425dd11835d8499b286fa6d21e26a821 Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 15:36:40 -0300 Subject: [PATCH 490/725] translating --- ...0304 Monitoring Your Network And Servers With Observium.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md index 4eae05d99d..232ea790a6 100644 --- a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md +++ b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md @@ -1,3 +1,5 @@ +theo-l Translating + Monitoring Your Network And Servers With Observium ================================================================================ ### Introduction ### @@ -171,4 +173,4 @@ via: https://www.unixmen.com/monitoring-network-servers-observium/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://www.unixmen.com/author/anis/ -[1]:http://www.observium.org/ \ No newline at end of file +[1]:http://www.observium.org/ From 28e0d097d5d5d70c9e951f74a73fcd7fb6e1b2ea Mon Sep 17 00:00:00 2001 From: theo-l Date: Fri, 6 Mar 2015 17:42:29 -0300 Subject: [PATCH 491/725] translating --- ...Monitoring Your Network And Servers With Observium.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md index 232ea790a6..8dfd79dc27 100644 --- a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md +++ b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md @@ -1,23 +1,32 @@ theo-l Translating Monitoring Your Network And Servers With Observium +使用Observium来监控你的网络和服务器 ================================================================================ ### Introduction ### +### 简介### You have a problem while monitoring your servers, switches or physical machines. **Observium** fits your need. As a free monitoring system, it helps you to monitor your servers remotely. It is an auto-discovering SNMP based network monitoring platform written in PHP which includes support for a wide range of network hardware and operating systems including Cisco, Windows, Linux, HP, NetApp and many other. I will give you the steps to follow while setting up an **Observium** server on Ubuntu 12.04. +在监控你的服务器,交换机或者物理机器时有过问题吗?, **Observium**可以满足你的需求.作为一个免费的监控系统,可以帮助你远程监控你的服务器.它是一个由PHP编写的基于自动发现SNMP的网络监控平台,支持非常广泛的网络硬件和操作系统,包括 Cisco,Windows,Linux,HP,NetApp等.在此我会通过在Ubuntu12.04上设置一个**Observium**服务器的同时提供相应的步骤. ![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture1.png) Currently there are two different versions of **observium**. +目前存在两种不同的**observium**版本. - The observium Community is a free tool and licensed under the QPL Open Source license. This version is the best solution for small deployments. It gets security updates each 6 months. +- Observium 社区版本是一个在QPL开源许可证下的免费工具,这个版本时对于较小部署的最好解决方案. 该版本每6个月得到一次安全性更新. - While the second version, the Observium Professional is distributed under SVN based release mechanism. And it gets daily security updates. This tool is the best for Service Provider and enterprises deployments. +- 第2个版本是Observium Professional, 该版本在基于SVN的发布机制下的发行版. 会得到每日安全性更新. 该工具适用于服务提供商和企业级部署. For more information you can visit the offcial [website of Observium][1]. +更多信息可以通过其官网获得[website of Observium][1]. ### System Requirements ### +### 系统需求### In order to install **Observium** , it’s necessary to have a server with a fresh installation. The development of **Observium** takes place on Ubuntu LTS and Debian systems, so it’s recommended to install **Observium** on Ubuntu or Debian because may be issues with other platforms. +为了安装 **Observium**, This article will guide you on how to install **Observium** on Ubuntu 12.04. For a small **Observium** installation is recommended to use 256MB for the memory and dual core for the process. From 360df62ba5a8bda104c7be18d48771b0da66fa89 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 7 Mar 2015 00:40:02 -0300 Subject: [PATCH 492/725] translated --- ...Your Network And Servers With Observium.md | 185 ------------------ ...Your Network And Servers With Observium.md | 172 ++++++++++++++++ 2 files changed, 172 insertions(+), 185 deletions(-) delete mode 100644 sources/tech/20150304 Monitoring Your Network And Servers With Observium.md create mode 100644 translated/tech/20150304 Monitoring Your Network And Servers With Observium.md diff --git a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md b/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md deleted file mode 100644 index 8dfd79dc27..0000000000 --- a/sources/tech/20150304 Monitoring Your Network And Servers With Observium.md +++ /dev/null @@ -1,185 +0,0 @@ -theo-l Translating - -Monitoring Your Network And Servers With Observium -使用Observium来监控你的网络和服务器 -================================================================================ -### Introduction ### -### 简介### - -You have a problem while monitoring your servers, switches or physical machines. **Observium** fits your need. As a free monitoring system, it helps you to monitor your servers remotely. It is an auto-discovering SNMP based network monitoring platform written in PHP which includes support for a wide range of network hardware and operating systems including Cisco, Windows, Linux, HP, NetApp and many other. I will give you the steps to follow while setting up an **Observium** server on Ubuntu 12.04. -在监控你的服务器,交换机或者物理机器时有过问题吗?, **Observium**可以满足你的需求.作为一个免费的监控系统,可以帮助你远程监控你的服务器.它是一个由PHP编写的基于自动发现SNMP的网络监控平台,支持非常广泛的网络硬件和操作系统,包括 Cisco,Windows,Linux,HP,NetApp等.在此我会通过在Ubuntu12.04上设置一个**Observium**服务器的同时提供相应的步骤. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture1.png) - -Currently there are two different versions of **observium**. -目前存在两种不同的**observium**版本. - -- The observium Community is a free tool and licensed under the QPL Open Source license. This version is the best solution for small deployments. It gets security updates each 6 months. -- Observium 社区版本是一个在QPL开源许可证下的免费工具,这个版本时对于较小部署的最好解决方案. 该版本每6个月得到一次安全性更新. -- While the second version, the Observium Professional is distributed under SVN based release mechanism. And it gets daily security updates. This tool is the best for Service Provider and enterprises deployments. -- 第2个版本是Observium Professional, 该版本在基于SVN的发布机制下的发行版. 会得到每日安全性更新. 该工具适用于服务提供商和企业级部署. - -For more information you can visit the offcial [website of Observium][1]. -更多信息可以通过其官网获得[website of Observium][1]. - -### System Requirements ### -### 系统需求### - -In order to install **Observium** , it’s necessary to have a server with a fresh installation. The development of **Observium** takes place on Ubuntu LTS and Debian systems, so it’s recommended to install **Observium** on Ubuntu or Debian because may be issues with other platforms. -为了安装 **Observium**, - -This article will guide you on how to install **Observium** on Ubuntu 12.04. For a small **Observium** installation is recommended to use 256MB for the memory and dual core for the process. - -### Installing Prerequisites ### - -Before installing **Observium** you need to make sure to install all dependencies. - -First step is to update your server - - sudo apt-get update - -Then you need to install all packages required to run Observium. - -Observuim need this list of software the run correctly: - -- LAMP server -- fping -- Net-SNMP 5.4+ -- RRDtool 1.3+ -- Graphviz - -Requirements for optional features: - -- Ipmitool – Only if you want to poll IPMI baseboard controllers on servers -- Libvirt-bin – Only if you want to monitor remote VM hosts using libvirt - - sudo apt-get install libapache2-mod-php5 php5-cli php5-mysql php5-gd php5-mcrypt php5-json php-pear snmp fping mysql-server mysql-client python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick libvirt ipmitool - -### Creation MySQL Database and User for Observium ### - -Now you need to log into MySQL and create database for **Observuim**: - - mysql -u root -p - -After successful authenticated, you need to create the database. - - CREATE DATABASE observium; - -The database Name is **Observium**. You will need this information later. - -Now, you should create the database administrator. - - CREATE USER observiumadmin@localhost IDENTIFIED BY 'observiumpassword'; - -Next, you need to give this user permissions to administer the database you created. - - GRANT ALL PRIVILEGES ON observium.* TO observiumadmin@localhost; - -You need to flush the privilege information to disk to activate the new MySQL user: - - FLUSH PRIVILEGES; - exit - -### Downloading and Installing Observium ### - -Now that our system is ready, we can start the installation of Observium. - -First step to do is, creating the directory Observium is going to operate out of: - - mkdir -p /opt/observium && cd /opt - -For the purpose of this tutorial, we’re going to be using the Community/Open Source Edition of Observium. Download and unpack it. - - wget http://www.observium.org/observium-community-latest.tar.gz - tar zxvf observium-community-latest.tar.gz - -Now go under Observium directory - - cd observium - -Copy the default configuration file ‘**config.php.default**‘ to ‘**config.php**‘ and fill out the database config options: - - cp config.php.default config.php - nano config.php - ----------- - - / Database config - $config['db_host'] = 'localhost'; - $config['db_user'] = 'observiumadmin'; - $config['db_pass'] = 'observiumpassword'; - $config['db_name'] = 'observium'; - -Let’s setup the default schema for the MySQL Database: - - php includes/update/update.php - -Now you need to create directory to store rrd file and change permission to let apache write into the file . - - mkdir rrd - chown apache:apache rrd - -To help you troubleshooting on case of problem, you need to create logs file. - - mkdir -p /var/log/observium - chown apache:apache /var/log/observium - -Now you have to create the virtual host configuration for Observium - - - DocumentRoot /opt/observium/html/ - ServerName observium.domain.com - CustomLog /var/log/observium/access_log combined - ErrorLog /var/log/observium/error_log - - AllowOverride All - Options FollowSymLinks MultiViews - - - -Next, you need to enable rewrite functionality for your Apache server. - -To enable `mod_rewrite` modules, type this command: - - sudo a2enmod rewrite - -This module will be enable the next after reboot of Apache service. - - sudo service apache2 restart - -### Configuring Observium ### - -Before log into the web interface, you need to create administrator account (level 10) to Observium - - # cd /opt/observium - # ./adduser.php admin adminpassword 10 - User admin added successfully. - -Next set a cron jobs for the discovery and the poller jobs, create a new file ‘**/etc/cron.d/observium**‘ and add the following contents. - - 33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1 - */5 * * * * root /opt/observium/discovery.php -h new >> /dev/null 2>&1 - */5 * * * * root /opt/observium/poller-wrapper.py 1 >> /dev/null 2>&1 - -Reload cron process to take new entries. - - # /etc/init.d/cron reload - -You’ve installed Observium Server! Log into Observium using your browser **http://** and be on your way. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture.png) - -Enjoy! - --------------------------------------------------------------------------------- - -via: https://www.unixmen.com/monitoring-network-servers-observium/ - -作者:[anismaj][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://www.unixmen.com/author/anis/ -[1]:http://www.observium.org/ diff --git a/translated/tech/20150304 Monitoring Your Network And Servers With Observium.md b/translated/tech/20150304 Monitoring Your Network And Servers With Observium.md new file mode 100644 index 0000000000..9c78793904 --- /dev/null +++ b/translated/tech/20150304 Monitoring Your Network And Servers With Observium.md @@ -0,0 +1,172 @@ + +使用Observium来监控你的网络和服务器 +================================================================================ +### 简介### + +在监控你的服务器,交换机或者物理机器时有过问题吗?, **Observium**可以满足你的需求.作为一个免费的监控系统,可以帮助你远程监控你的服务器.它是一个由PHP编写的基于自动发现SNMP的网络监控平台,支持非常广泛的网络硬件和操作系统,包括 Cisco,Windows,Linux,HP,NetApp等.在此我会通过在Ubuntu12.04上设置一个**Observium**服务器的同时提供相应的步骤. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture1.png) + +目前存在两种不同的**observium**版本. + +- Observium 社区版本是一个在QPL开源许可证下的免费工具,这个版本时对于较小部署的最好解决方案. 该版本每6个月得到一次安全性更新. +- 第2个版本是Observium Professional, 该版本在基于SVN的发布机制下的发行版. 会得到每日安全性更新. 该工具适用于服务提供商和企业级部署. + +更多信息可以通过其官网获得[website of Observium][1]. + +### 系统需求### + +为了安装 **Observium**, 需要具有一个最新安装的服务器。**Observium**是在Ubuntu LTS和Debian系统上进行开发的,所以推荐在Ubuntu或Debian上安装**Observium**,因为可能在别的平台上会有一些小问题。 + +该文章会知道你如何在Ubuntu12.04上进行安装**Observium**。对于小型的**Observium**安装,推荐的基础配置要有256MB内存和双核处理器。 + +### 安装需求 ### + +在安装**Observuim**之前,你需要确认安装所有的依赖关系包。 + +首先,使用下面的命令更新的服务器: + + sudo apt-get update + +然后你需要安装运行Observuim 所需的全部包。 + +Observium需要使用下面所列出的软件才能正确的运行: + +- LAMP server +- fping +- Net-SNMP 5.4+ +- RRDtool 1.3+ +- Graphviz + +对于可选特性的要求: + +- Ipmitool - 只有当你想要探寻IPMI(Intelligent Platform Management Interface智能平台管理接口)基板控制器。 +- Libvirt-bin - 只有当你想要使用libvirt进行远程VM主机监控时。 + + sudo apt-get install libapache2-mod-php5 php5-cli php5-mysql php5-gd php5-mcrypt php5-json php-pear snmp fping mysql-server mysql-client python-mysqldb rrdtool subversion whois mtr-tiny ipmitool graphviz imagemagick libvirt ipmitool + +### 为Observium创建MySQL 数据库和用户。 + +现在你需要登录到MySQL中并为**Observium**创建数据库: + mysql -u root -p + +在用户验证成功之后,你需要按照下面的命令创建该数据库。 + + CREATE DATABASE observium; + +数据库名为**Observium**,稍后你会需要这个信息。 + +现在你需要创建数据库管理员用户。 + + CREATE USER observiumadmin@localhost IDENTIFIED BY 'observiumpassword'; + +接下来,你需要给该管理员用户相应的权限来管理创建的数据库。 + + GRANT ALL PRIVILEGES ON observium.* TO observiumadmin@localhost; + +你需要将权限信息写回到磁盘中来激活新的MySQL用户: + + FLUSH PRIVILEGES; + exit + +### 下载并安装 Observium### + +现在我们的系统已经准备好了, 可以开始Observium的安装了。 + +第一步,创建Observium将要使用的文件目录: + mkdir -p /opt/observium && cd /opt + +为了达到本教程的目的,我们将会使用Observium的社区/开源版本。使用下面的命令下载并解压: + + wget http://www.observium.org/observium-community-latest.tar.gz + tar zxvf observium-community-latest.tar.gz + +现在进入到Observium目录。 + + cd observium + +将默认的配置文件'**config.php.default**'复制到'**config.php**',并将数据库配置选项填充到配置文件中: + + cp config.php.default config.php + nano config.php + +---------- + + / Database config + $config['db_host'] = 'localhost'; + $config['db_user'] = 'observiumadmin'; + $config['db_pass'] = 'observiumpassword'; + $config['db_name'] = 'observium'; + +现在为MySQL数据库设置默认的数据库模式: + php includes/update/update.php + +现在你需要创建一个文件目录来存储rrd文件,并修改其权限以便让apache能将写入到文件中。 + + mkdir rrd + chown apache:apache rrd + +为了在出现问题时进行问题修理,你需要创建日志文件。 + + mkdir -p /var/log/observium + chown apache:apache /var/log/observium + +现在你需要为Observium创建虚拟主机配置。 + + + DocumentRoot /opt/observium/html/ + ServerName observium.domain.com + CustomLog /var/log/observium/access_log combined + ErrorLog /var/log/observium/error_log + + AllowOverride All + Options FollowSymLinks MultiViews + + + +下一步你需要让你的Apache服务器的rewrite(重写)功能生效。 + +为了让'mod_rewrite'生效,输入以下命令: + + sudo a2enmod rewrite + +该模块在下一次Apache服务重启之后就会生效。 + + sudo service apache2 restart + +###配置Observium### + +在登入网络接口之前,你需要为Observium创建一个管理员账户(级别10)。 + + # cd /opt/observium + # ./adduser.php admin adminpassword 10 + User admin added successfully. + +下一步为发现和探寻工作设置一个cron任务,创建一个新的文件‘**/etc/cron.d/observium**’ 并在其中添加以下的内容。 + + 33 */6 * * * root /opt/observium/discovery.php -h all >> /dev/null 2>&1 + */5 * * * * root /opt/observium/discovery.php -h new >> /dev/null 2>&1 + */5 * * * * root /opt/observium/poller-wrapper.py 1 >> /dev/null 2>&1 + +重载cron进程来获取系的人物实体。 + + # /etc/init.d/cron reload + +好啦,你已经完成了Observium服务器的安装拉! 使用你的浏览器登录到**http://**,然后上路巴。 + +![](https://www.unixmen.com/wp-content/uploads/2015/03/Capture.png) + +尽情享受吧! + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/monitoring-network-servers-observium/ + +作者:[anismaj][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/anis/ +[1]:http://www.observium.org/ From 17b0738d0a54df8e75d30f0e5ec6ecd70618551d Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 7 Mar 2015 00:54:01 -0300 Subject: [PATCH 493/725] translating --- ...50203 9 Best IDEs and Code Editors for JavaScript Users.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md index 83f5f11293..09c2a688ac 100644 --- a/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md +++ b/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md @@ -1,3 +1,5 @@ +theo-l translating + 9 Best IDEs and Code Editors for JavaScript Users ================================================================================ Web designing and developing is one of the trending sectors in the recent times, where more and more peoples started to search for their career opportunities. But, Getting the right opportunity as a web developer or graphic designer is not just a piece of cake for everyone, It certainly requires a strong mind presence as well as right skills to find the find the right job. There are a lot of websites available today which can help you to get the right job description according to your knowledge. But still if you want to achieve something in this sector you must have some excellent skills like working with different platforms, IDEs and various other tools too. @@ -79,4 +81,4 @@ via: http://devzum.com/2015/01/31/9-best-ides-and-code-editors-for-javascript-us [6]:http://ace.c9.io/#nav=about [7]:https://github.com/scripted-editor/scripted [8]:https://netbeans.org/ -[9]:http://www.jetbrains.com/webstorm/ \ No newline at end of file +[9]:http://www.jetbrains.com/webstorm/ From 7299c160f4405478126dc52fd6499dc6639f3f7b Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 7 Mar 2015 14:33:22 +0800 Subject: [PATCH 494/725] translating --- .../tech/20150304 How To Fix Windows Updates Stuck At 0%.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md b/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md index c74df29f1e..d398b90e5b 100644 --- a/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md +++ b/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md @@ -1,3 +1,5 @@ +translating-----geekpi + How To Fix Windows Updates Stuck At 0% ================================================================================ How do you feel when you log in to Windows after a month, find there are updates to install, you select to install these updates and those **Windows updates stuck at zero percent**? @@ -50,4 +52,4 @@ via: http://itsfoss.com/fix-windows-updates-stuck-0/ [a]:http://itsfoss.com/author/abhishek/ [1]:http://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/ -[2]:http://itsfoss.com/windows-10-inspired-linux/ \ No newline at end of file +[2]:http://itsfoss.com/windows-10-inspired-linux/ From fd97ed14d03786d9e9dcd40798e2520c78f7611d Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 7 Mar 2015 15:04:55 +0800 Subject: [PATCH 495/725] translated --- ... How To Fix Windows Updates Stuck At 0%.md | 55 ------------------- ... How To Fix Windows Updates Stuck At 0%.md | 54 ++++++++++++++++++ 2 files changed, 54 insertions(+), 55 deletions(-) delete mode 100644 sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md create mode 100644 translated/tech/20150304 How To Fix Windows Updates Stuck At 0%.md diff --git a/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md b/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md deleted file mode 100644 index d398b90e5b..0000000000 --- a/sources/tech/20150304 How To Fix Windows Updates Stuck At 0%.md +++ /dev/null @@ -1,55 +0,0 @@ -translating-----geekpi - -How To Fix Windows Updates Stuck At 0% -================================================================================ -How do you feel when you log in to Windows after a month, find there are updates to install, you select to install these updates and those **Windows updates stuck at zero percent**? - -Why am I talking about Windows updates on a blog dedicated to Linux and Open Source? Because I prefer to [dual boot Windows with Linux][1]. While I use Linux as my main desktop, once in a while I do log in to Windows. The most annoying thing after logging in Windows is the Windows updates. It has happened to me on several occasions that I found **Windows update not working**. I choose to install the updates and Windows updates get stuck at 0 KB and 0%, like this: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_Updates_stuck_at_zero.jpeg) - -In this tutorial, we shall see how to make Windows update work again. The tutorial should be applicable for Windows 7, Windows 8 and Windows 8.1. - -### Fix Windows updates stuck at zero percent ### - -Please mind that Windows updates can be stuck at any percent and the trick which we are going to use would require you to install those updates again. I hope you do not find that too inconvenient. If you are ready, let’s see how to fix this Windows update issue. - -#### Step 1: #### - -Press Windows+R. This will prompt run dialogue box. In here, type services.msc: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Updates_3.png) - -#### Step 2: #### - -Now it brings us to all the services installed in Windows. These services are listed in alphabetical order. Scroll down and look for **Windows Update Service**. Right click on it and stop it. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_Updates_stuck_1.jpeg) - -#### Step 3: #### - -Now go in **C:\Windows\SoftwareDistribution and delete all of its contents**. Actually, this is the folder where downloaded installation files were stored. But since Windows update suck, they somehow have problem with partially downloaded update files. - -#### Step 4: #### - -Go back to services again (as mentioned in Step 1) and this time start the Windows Update Service, by right clicking on it. Try to update Windows again. It should be working this time. - -So once you have got the updates working, perhaps you will find plenty of updates to install at next reboot. And that moment calls for a meme: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_update_suck.jpg) - -Jokes apart, I hope this tip helps you to get rid of Windows updates hanged at 0%. I wish that Linux like updates are also included in the list of [Windows 10 features copied from Linux][2]. I wish. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/fix-windows-updates-stuck-0/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/ -[2]:http://itsfoss.com/windows-10-inspired-linux/ diff --git a/translated/tech/20150304 How To Fix Windows Updates Stuck At 0%.md b/translated/tech/20150304 How To Fix Windows Updates Stuck At 0%.md new file mode 100644 index 0000000000..ca09f61d1c --- /dev/null +++ b/translated/tech/20150304 How To Fix Windows Updates Stuck At 0%.md @@ -0,0 +1,54 @@ +如何修复Windows更新在0%卡住 +================================================================================ +当你在一个月后登录Windows,发现有一些更新需要安装, 你选择安装这些更新但是**Windows更新卡在0%**时你感觉怎么样? + +为什么我在Linux和开源专属的博客上谈论Windows更新呢?因为我喜欢[双启动Windows和Linux][1]。当我使用Linux作为我的主桌面时,过了一段时间我登录到Windows中。登录Windows后最烦人的事情是Windows更新。我偶尔遇到了几次**Windows更新不能工作**的情况。我选择安装更新而且Windows更新卡在了0%和0KB上,就像这样: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_Updates_stuck_at_zero.jpeg) + +本教程中,我们会让Windows更新再次可用。这个教程应该同样适用于Windows 7、Windows 8和Windows 8.1。 + +### 修复Windows更新卡在0% ### + +请注意Windows更新可能卡在任何地方,我们将会使用的这个技巧需要你重新安装这些更新。我希望你不要觉得太麻烦。如果你准备好了,就让我们开始修复这个Windows更新问题。 + +#### 步骤 1: #### + +按下Windows+R。这时会弹出运行窗口。在这里我们输入services.msc: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Updates_3.png) + +#### 步骤 2: #### + +这里会显示Windows上安装的所有服务。这些服务以字母排序。向下拉到**Windows Update Service**。右击并停止服务。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_Updates_stuck_1.jpeg) + +#### 步骤 3: #### + +现在进入**C:\Windows\SoftwareDistribution并删除这里所有的内容**。实际上,这个文件夹是下载和保存安装文件的地方。但是由于Windows更新卡住了,所以这里的某个安装文件存在一些问题。 + +#### 步骤 4: #### + +回到前面的服务(第一步中提到的)并右击重新启动Windows更新服务。再重新试一下Windows更新,这次应该可以用了。 + +当系统更新可以工作时,你或许会发现在下次启动时会有很多更新要安装。这时打个电话: + + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Windows_update_suck.jpg) + +玩笑之余,我希望这个贴士能够帮助你拜托Windows更新卡在0%的情况。我希望Linux中的更新也能够含在[Windows 10从Linux复制的特性][2]列表中。这只是我的希望。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/fix-windows-updates-stuck-0/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/install-ubuntu-1404-dual-boot-mode-windows-8-81-uefi/ +[2]:http://itsfoss.com/windows-10-inspired-linux/ From 7a194b3bbc15d5b8dae8651b6786ba290682a761 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 7 Mar 2015 13:18:00 -0300 Subject: [PATCH 496/725] translated --- ...s and Code Editors for JavaScript Users.md | 84 ------------------- ...s and Code Editors for JavaScript Users.md | 82 ++++++++++++++++++ 2 files changed, 82 insertions(+), 84 deletions(-) delete mode 100644 sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md create mode 100644 translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md diff --git a/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md deleted file mode 100644 index 09c2a688ac..0000000000 --- a/sources/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md +++ /dev/null @@ -1,84 +0,0 @@ -theo-l translating - -9 Best IDEs and Code Editors for JavaScript Users -================================================================================ -Web designing and developing is one of the trending sectors in the recent times, where more and more peoples started to search for their career opportunities. But, Getting the right opportunity as a web developer or graphic designer is not just a piece of cake for everyone, It certainly requires a strong mind presence as well as right skills to find the find the right job. There are a lot of websites available today which can help you to get the right job description according to your knowledge. But still if you want to achieve something in this sector you must have some excellent skills like working with different platforms, IDEs and various other tools too. - -Talking about the different platforms and IDEs used for various languages for different purposes, gone is the time when we learn just one IDE and get the optimum solutions for our web design projects easily. Today we are living in the modern lifestyle where competition is getting more and more tough on every single day. Same is the case with the IDEs, IDE is basically a powerful client application for creating and deploying applications. Today we are going to share some best javascript IDE for web designers and developers. - -Please visit this list of best code editors for javascript user and share your thought with us. - -### 1) [Spket][1] ### - -**Spket IDE** is powerful toolkit for JavaScript and XML development. The powerful editor for JavaScript, XUL/XBL and Yahoo! Widget development. The JavaScript editor provides features like code completion, syntax highlighting and content outline that helps developers productively create efficient JavaScript code. - -![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/spket-e1422674329554.png) - -### 2) [Ixedit][2] ### - -IxEdit is a JavaScript-based interaction design tool for the web. With IxEdit, designers can practice DOM-scripting without coding to change, add, move, or transform elements dynamically on your web pages. - -![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ixedit.png) - -### 3) [Komodo Edit][3] ### - -Komode is free and powerful code editor for Javascript and other programming languages. - -![](http://i2.wp.com/devzum.com/wp-content/uploads/2015/01/komodo-edit-e1422674596277.png) - -### 4) [EpicEditor][4] ### - -EpicEditor is an embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more. For developers, it offers a robust API, can be easily themed, and allows you to swap out the bundled Markdown parser with anything you throw at it. - -![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/epiceditor-e1422674732281.png) - -### 5) [codepress][5] ### - -CodePress is web-based source code editor with syntax highlighting written in JavaScript that colors text in real time while it’s being typed in the browser. - -![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/codepres-e1422674893706.png) - -### 6) [ACe][6] ### - -Ace is an embeddable code editor written in JavaScript. It matches the features and performance of native editors such as Sublime, Vim and TextMate. It can be easily embedded in any web page and JavaScript application. - -![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ace-e1422675089912.png) - -### 7) [scripted][7] ### - -Scripted is a fast and lightweight code editor with an initial focus on JavaScript editing. Scripted is a browser based editor and the editor itself is served from a locally running Node.js server instance. - -![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/scripted-e1422675188408.png) - -### 8) [Netbeans][8] ### - -This is another more impressive and useful code editors for javascript and other programming languages. - -![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/code_editing1-e1422675506226.png) - -### 9) [Webstorm][9] ### - -This is the smartest ID for javascript. WebStorm is a lightweight yet powerful IDE, perfectly equipped for complex client-side development and server-side development with Node.js. - -![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/webstorm.png) - --------------------------------------------------------------------------------- - -via: http://devzum.com/2015/01/31/9-best-ides-and-code-editors-for-javascript-users/ - -作者:[vikas][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://devzum.com/author/vikas/ -[1]:http://spket.com/ -[2]:http://www.ixedit.com/ -[3]:http://komodoide.com/komodo-edit/ -[4]:http://oscargodson.github.io/EpicEditor/ -[5]:http://codepress.sourceforge.net/ -[6]:http://ace.c9.io/#nav=about -[7]:https://github.com/scripted-editor/scripted -[8]:https://netbeans.org/ -[9]:http://www.jetbrains.com/webstorm/ diff --git a/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md new file mode 100644 index 0000000000..c0bd5881ed --- /dev/null +++ b/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md @@ -0,0 +1,82 @@ +9款最好的Javacript用户的IDE和代码编辑器。 +================================================================================ +网络应用设计和开发是最近一段时间的发展趋势,也有越来越多的人开始在此寻找他们的职业机会。但是,作为网络开发人员或图形设计人员来说,一个好的机会并不是每个人都能够轻易获得到的,它需要很好的思维展现,以及对于工作的熟练技巧。现在有许多可用的网站来根据你的知识帮助你找到正确的工作描述。但是如果你想要在这个领域有所成就,你仍然需要具有一些出色的手段,例如可以在不同的平台、IDE以及其他的工具上开展工作。 + +说到根据不同目的所使用的大量语言用到的不同平台以及IDE,只靠学习一个IDE来容易地获取项目设计的最佳方案的惯例已经属于过去时了。今天我们活在一个竞争日益激烈的现代生活节奏中,对于IDE们也是相同的处境,IDE是一个用来创建和部署应用的强大的客户端应用。今天我们打算为网络设计者和开发人员分享一些最好的Javacript IDE。 + +请访问作为javascript 用户最好的代码编辑器列表,并将你的想法与我们一起分享。 + +### 1) [Spket][1] ### + +**Spket IDE** 是JavaScript和XML开发的强大工具包。该编辑器可以用来进行开发 JavaScript,XUL/XBL 和Yahoo!小组件。 JavaScript编辑器提供了例如代码补全,语法高亮以及代码内容大纲等特性,可以帮助开发者提高创建高效JavaScript代码的生产率。 + + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/spket-e1422674329554.png) + +### 2) [Ixedit][2] ### + +IxEdit 基于Javascript交互的网络设计工具。通过IxEdit,设计者可以在不需要通过代码改变,添加,删除或变换页面元素的情况下,在网页上进行动态进行DOM脚本编写。 + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ixedit.png) + +### 3) [Komodo Edit][3] ### + +Komodo是一款免费而强大的编辑器,可以用来编辑JavaScript和其他的编程语言。 +![](http://i2.wp.com/devzum.com/wp-content/uploads/2015/01/komodo-edit-e1422674596277.png) + +### 4) [EpicEditor][4] ### + +EpicEditor是一个可嵌入的 JavaScript Markdown编辑器,具有分割全屏进行编辑,实时预览,自动草稿保存,离线支持等特性。对于开发人员,它提供了健壮的API,可以容易地设置主题,并允许你以任何其他的事物来替换绑定的Markdown解析器。 + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/epiceditor-e1422674732281.png) + +### 5) [codepress][5] ### + +CodePress是一个用JavaScript编写的基于网络的源代码编辑器,具有语法高亮,并且是在你将代码输入到浏览器后实时进行文本颜色渲染。 + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/codepres-e1422674893706.png) + +### 6) [ACe][6] ### + +Ace 是一个使用JavaScript编写的嵌入式代码编辑器,它能够匹配宿主编辑器的特性和性能,例如Sublime,Vim和Textate。它能够容易地嵌入到任何的网页和JavaScript应用中。 + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ace-e1422675089912.png) + +### 7) [scripted][7] ### + +Scripted是一个快速的轻量级代码编辑器,最初是为了JavaScript编写实现的。 Scripted是一个基于浏览器的编辑器,而编辑器本身有本地运行的Node.js服务器实例来提供服务支持。 + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/scripted-e1422675188408.png) + +### 8) [Netbeans][8] ### + +这是另外的一个更加震撼而且有用的编辑器,可以用来编写javascript和其他的编程语言。 + +![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/code_editing1-e1422675506226.png) + +### 9) [Webstorm][9] ### + +这是最智能的JavaScript IDE。 它是为使用Node.js进行复杂的客户端开发和服务器端开发而装备的一个轻巧而强大的完美IDE。 + +![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/webstorm.png) + +-------------------------------------------------------------------------------- + +via: http://devzum.com/2015/01/31/9-best-ides-and-code-editors-for-javascript-users/ + +作者:[vikas][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://devzum.com/author/vikas/ +[1]:http://spket.com/ +[2]:http://www.ixedit.com/ +[3]:http://komodoide.com/komodo-edit/ +[4]:http://oscargodson.github.io/EpicEditor/ +[5]:http://codepress.sourceforge.net/ +[6]:http://ace.c9.io/#nav=about +[7]:https://github.com/scripted-editor/scripted +[8]:https://netbeans.org/ +[9]:http://www.jetbrains.com/webstorm/ From 53314a2391c9319b45578813e7389e6ea828e010 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 7 Mar 2015 13:23:12 -0300 Subject: [PATCH 497/725] translating --- ...ious Case of the Disappearing Distros.md.swp | Bin 0 -> 20480 bytes ... Curious Case of the Disappearing Distros.md | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp diff --git a/sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp b/sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..e00551e00df308f45da241238c3a8dae473ae1a9 GIT binary patch literal 20480 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 DB@ Date: Sun, 8 Mar 2015 10:57:06 +0800 Subject: [PATCH 498/725] translating --- ...asics--How To Find Maximum Supported RAM By Your System.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md b/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md index 2fed06677b..d6ed396e35 100644 --- a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md +++ b/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md @@ -1,3 +1,5 @@ +Translating-------geekpi + Linux Basics: How To Find Maximum Supported RAM By Your System ================================================================================ ![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2015/02/RAM-790x527.jpg) @@ -693,4 +695,4 @@ via: https://www.unixmen.com/linux-basics-how-to-find-maximum-supported-ram-by-y 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:https://www.unixmen.com/author/sk/ \ No newline at end of file +[a]:https://www.unixmen.com/author/sk/ From ec8f770d8c2ae7a951d7fef271b53e4b03ab2bb4 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sun, 8 Mar 2015 11:10:54 +0800 Subject: [PATCH 499/725] translated by KayGuoWhu --- ...a float cannot represent all int values.md | 44 ------------------- ...a float cannot represent all int values.md | 43 ++++++++++++++++++ 2 files changed, 43 insertions(+), 44 deletions(-) delete mode 100644 sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md create mode 100644 translated/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md diff --git a/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md b/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md deleted file mode 100644 index b2e6372a0b..0000000000 --- a/sources/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md +++ /dev/null @@ -1,44 +0,0 @@ -translating by KayGuoWhu -Why does C++ promote an int to a float when a float cannot represent all int values? ---------- - -#Q: - -Say I have the following: - -```C -int i = 23; -float f = 3.14; -if (i == f) // do something -``` - -The i will be promoted to a float and the two float numbers will be compared, but can a float represent all int values? Why not promote both the int and the float to a double? - -#A: - -When `int` is promoted to `unsigned` in the integral promotions, negative values are also lost (which leads to such fun as `0u < -1` being true). - -Like most mechanisms in C (that are inherited in C++), the usual arithmetic conversions should be understood in terms of hardware operations. The makers of C were very familiar with the assembly language of the machines with which they worked, and they wrote C to make immediate sense to themselves and people like themselves when writing things that would until then have been written in assembly (such as the UNIX kernel). - -Now, processors, as a rule, do not have mixed-type instructions (add float to double, compare int to float, etc.) because it would be a huge waste of real estate on the wafer -- you'd have to implement as many times more opcodes as you want to support different types. That you only have instructions for "add int to int," "compare float to float", "multiply unsigned with unsigned" etc. makes the usual arithmetic conversions necessary in the first place -- they are a mapping of two types to the instruction family that makes most sense to use with them. - -From the point of view of someone who's used to writing low-level machine code, if you have mixed types, the assembler instructions you're most likely to consider in the general case are those that require the least conversions. This is particularly the case with floating points, where conversions are runtime-expensive, and particularly back in the early 1970s, when C was developed, computers were slow, and when floating point calculations were done in software. This shows in the usual arithmetic conversions -- only one operand is ever converted (with the single exception of `long/unsigned int`, where the `long` may be converted to `unsigned long`, which does not require anything to be done on most machines. Perhaps not on any where the exception applies). - -So, the usual arithmetic conversions are written to do what an assembly coder would do most of the time: you have two types that don't fit, convert one to the other so that it does. This is what you'd do in assembler code unless you had a specific reason to do otherwise, and to people who are used to writing assembler code and do have a specific reason to force a different conversion, explicitly requesting that conversion is natural. After all, you can simply write - -```C -if((double) i < (double) f) -``` - -It is interesting to note in this context, by the way, that `unsigned` is higher in the hierarchy than `int`, so that comparing `int` with `unsigned` will end in an unsigned comparison (hence the `0u < -1` bit from the beginning). I suspect this to be an indicator that people in olden times considered `unsigned` less as a restriction on `int` than as an extension of its value range: We don't need the sign right now, so let's use the extra bit for a larger value range. You'd use it if you had reason to expect that an `int` would overflow -- a much bigger worry in a world of 16-bit ints. - ----- -via:[stackoverflow](http://stackoverflow.com/questions/28010565/why-does-c-promote-an-int-to-a-float-when-a-float-cannot-represent-all-int-val/28011249#28011249) - -作者:[wintermute][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://stackoverflow.com/users/4301306/wintermute \ No newline at end of file diff --git a/translated/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md b/translated/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md new file mode 100644 index 0000000000..e9dd6e997c --- /dev/null +++ b/translated/talk/20150124 Why does C++ promote an int to a float when a float cannot represent all int values.md @@ -0,0 +1,43 @@ +既然float不能表示所有的int,那为什么在类型转换时C++将int转换成float? +--------- + +#问题: + +代码如下: + +```C +int i = 23; +float f = 3.14; +if (i == f) // 执行某段代码 +``` + +编译器会将i转换成float类型,然后比较这两个float的大小,但是float能够表示所有的int吗?为什么没有将int和float转换成double类型进行比较呢? + +#回答: + +在整型数的演变中,当`int`变成`unsigned`时,会丢掉负数部分(有趣的是,这样的话,`0u < -1`就是对的了)。 + +和C语言中的大部分机制(在C++中得到继承)一样,就硬件操作而言,常见的算术转换应该简明易懂。C语言的发明者精通他们所使用机器上的汇编语言,他们编写的C语言对他们和像他们一样编写程序的人有直接的意义,直到使用汇编语言编写(诸如UNIX内核)的程序时。 + +现如今,一般来说,处理器并不具有混合类型的指令系统(如float和double相加、比较int和float,诸如此类),因为如果这样做造成芯片晶圆的巨大浪费——如果你想支持更多不同的类型,你不得不实现更多的操作码。然而,在实际中,你只有实现"add int to int"、"compare float to float"和"multiply unsigned with unsigned"等功能的常见指令,这使得优先进行算术转换变得很有必要——它们是指令系统中两种类型的映射关系,它们中的大部分很有用处。 + +从习惯编写低级别机器代码的编程人员的角度来说,如果有了混合类型,那么在一般情况下最有可能使用的汇编指令就是那些只需要进行最少类型转换的指令。其中,有一种特殊情况就是浮点数的转换,特别是在20世纪70年代早期,当时C语言正在被开发,计算机运行速度很慢,而浮点数的计算是通过软件完成的,所以进行转换的成本很高。这拖慢了常用算术运算的转换开发——当时只有一种操作数实现了转换(这个例外就是long到unsigned int的转换,这种转换没有任何要求,在大部分机器上都可以进行。当然并不是全部,因为总有例外情况)。 + +所以,编写常用的算术转换是为了完成汇编程序员在大部分时间需要做的事情:即有两种不匹配的类型,将一种转换成另一种。这也就是汇编代码所做的事情,除非有特别原因需要进行其它类型转换。对于那些习惯编写汇编代码的人来说,除非是特殊需要,才会被迫去编写一种不同的类型转换。显然,这种情况下提出编写转换是很自然的事情。虽然,你可以简单地写成这样 + +```C +if((double) i < (double) f) +``` + +顺便提一下,在这个问题中有趣的是,`unsigned`的优先级高于`int`,所以把`int`和`unsigned`进行比较时,最终进行的是unsigned类型的比较(开头提到的`0u < -1`就是这个道理)。我猜测这可能是在早些时候(计算机发展初期),当时的人们认为`unsigned`比`int`在所表示的数值范围上受到的限制更小:现在还不需要符号位,所以可以使用额外的位来表示更大的数值范围。如果你觉得`int`可能会溢出,那么就使用unsigned好了——在使用16位表示的ints时这个担心会更明显。 + +---- +via:[stackoverflow](http://stackoverflow.com/questions/28010565/why-does-c-promote-an-int-to-a-float-when-a-float-cannot-represent-all-int-val/28011249#28011249) + +作者:[wintermute][a] +译者:[KayGuoWhu](https://github.com/KayGuoWhu) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://stackoverflow.com/users/4301306/wintermute \ No newline at end of file From 8ce034ad6471980109daadaab254be4d37844e67 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 8 Mar 2015 11:44:25 +0800 Subject: [PATCH 500/725] translated --- ...pdate cannot be used to add new CD-ROMs.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) rename {sources => translated}/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md (53%) diff --git a/sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md b/translated/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md similarity index 53% rename from sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md rename to translated/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md index c8621c895a..77c4c05d63 100644 --- a/sources/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md +++ b/translated/tech/20150227 How To Fix--Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs.md @@ -1,10 +1,8 @@ -Translating----geekpi - -How To Fix: Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs +如何修复:apt-get update无法添加新的CD-ROM ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/12/elementary_OS_Freya.jpg) -These days I am experimenting with Elementary OS Freya and during this, I encountered a very common updater error: **Failed to fetch cdrom Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs**. The complete error looked like this after running the apt-get update command: +这些天我正在体验Elementary OS Freya,在这期间,我遇到了一个非常常见的更新错误:**Failed to fetch cdrom Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs**。完整的错误在运行apt-get update后看上去像这样: > W: Failed to fetch cdrom://elementary OS 0.3 _Freya_ – Daily amd64 (20150208)/dists/trusty/main/binary-amd64/Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs > @@ -12,33 +10,33 @@ These days I am experimenting with Elementary OS Freya and during this, I encoun > > E: Some index files failed to download. They have been ignored, or old ones used instead. -In this post, we shall see how to fix this error. +本篇中,我们会了解如何修复这个错误。 -### Fix Failed to fetch cdrom apt-get update cannot be used to add new CD-ROMs error ### +### 修复apt-get update无法添加新的CD-ROM的错误 ### -The reason for this error is that cdrom has been included as one of the the sources here. And to fix this issue, we need to remove this from the list of software sources. +这个错误的原因是cdrom已经被包含在源之中。要修复这个问题,我们需要将它从软件源中移除。 -In Ubuntu, look for Software & Updates: +在Ubuntu中,找到“软件与更新”: ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Software_Update_Ubuntu.jpeg) -In the first tab Ubuntu Software, look for the cdrom, if it’s checked, uncheck it. +在Ubuntu Software的第一个标签中,找到cdrom,如果它是勾选的,那么取消勾选。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/CDROM_Error_Update_Software_Sources.jpeg) -Close the Software Sources and run the update again. It should work fine now. +关闭软件源并再次运行更新。现在应该可以用了。 -### Further troubleshoot: ### +### 进一步故障排除: ### -The method described above should have fixed this **apt-get update cannot be used to add new CD-ROMs** error. But this was not the case for me because the option of cdrom was already grayed out as I was using live session. +上面描述的方法已经修复了这个**apt-get update cannot be used to add new CD-ROMs**错误。但是这个方法对我无效,因为cdrom的选项这时是灰色的,因为我使用的live版本。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/CDROM_Update_Error.png) -Now to fix our error, we shall take the command line route. Open a terminal and use the following line to see what is included in sources list: +现在要修复我们的问题了,我们是要采用命令行路线。打开终端并查看软件源中包含了哪些源: cat /etc/apt/sources.list -The output for me was as following: +我的输出是下面这样: deb cdrom:[elementary OS 0.3 _Freya_ – Daily amd64 (20150208)]/ trusty main restricted deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse @@ -48,17 +46,17 @@ The output for me was as following: deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse -Look at the first line in the above list. It includes cdrom. We need to comment out this line by adding # in front of it to make it look like this: +在上面的第一行中。它包含了cdrom。我们需要用‘#’来注释掉这行: #deb cdrom:[elementary OS 0.3 _Freya_ – Daily amd64 (20150208)]/ trusty main restricted -To do that use the command below: +要用下面的命令来: sudo gedit /etc/apt/sources.list -Once you have edited the sources.list, run the apt-get update once again. The error apt-get update cannot be used to add new CD-ROMs should have been fixed. If you are facing any other update issue, do look at this article which is a collection of most [common Ubuntu update error fixes][1]. +在你编辑完软件源后,再次运行apt-get update。“apt-get update cannot be used to add new CD-ROMs”这个错误应该已经修复了。如果你还遇到其他的问题,看一下这篇收集了大部分[Ubuntu常见更新错误修复][1]的文章。 -I hope you found this tutorial helpful. If you have any questions or suggestions, feel free to drop a comment. +我希望这篇教程对你有用。如果你还有其他的问题和建议,请在下面留言。 -------------------------------------------------------------------------------- @@ -71,4 +69,4 @@ via: http://itsfoss.com/fix-failed-fetch-cdrom-aptget-update-add-cdroms/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/fix-update-errors-ubuntu-1404/ \ No newline at end of file +[1]:http://itsfoss.com/fix-update-errors-ubuntu-1404/ From 5d162ca9ef3a61a71c67f0da7e89b0e9b44a7a1c Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 8 Mar 2015 23:36:55 +0800 Subject: [PATCH 501/725] =?UTF-8?q?=E8=A1=A5=E5=85=85=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @theo-l --- ...us Case of the Disappearing Distros.md.swp | Bin 20480 -> 0 bytes .../tech/20150306 Nmap--Not Just for Evil.md | 43 ------------------ 2 files changed, 43 deletions(-) delete mode 100644 sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp delete mode 100644 sources/tech/20150306 Nmap--Not Just for Evil.md diff --git a/sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp b/sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp deleted file mode 100644 index e00551e00df308f45da241238c3a8dae473ae1a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 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 DB@ Date: Sun, 8 Mar 2015 23:37:50 +0800 Subject: [PATCH 502/725] Translated 20150227 Bringing a Bunch of Best Known Linux Network Tools.md --- ...Bunch of Best Known Linux Network Tools.md | 446 ------------------ ...Bunch of Best Known Linux Network Tools.md | 443 +++++++++++++++++ 2 files changed, 443 insertions(+), 446 deletions(-) delete mode 100644 sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md create mode 100644 translated/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md diff --git a/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md b/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md deleted file mode 100644 index b5f8f6273e..0000000000 --- a/sources/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md +++ /dev/null @@ -1,446 +0,0 @@ -FSSlc translating - -Bringing a Bunch of Best Known Linux Network Tools -================================================================================ -It is very useful to use command line tools to monitor the network on your system and there are a tons of them out there available for the linux user such as nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed and speedometer. - -Since there are many linux gurus and developers out there it is obvious that other network monitoring tools exist but I am not going to cover all of them in this tutorial. - -Each one of the above tools has its own specifics but at the end all they do is monitor network traffic and there is not really only one way to do the job. For example nethogs can be used to show bandwidth per process in case you want to know the application which is consuming your entire network resources, iftop can be used to show bandwidth per socket connection and tools like nload help to get information about the overall bandwidth. - -### 1) nethogs ### - -nethogs is a free tool that is very handy when it comes to find out which PID is causing the trouble with your network traffic as it groups bandwidth by process instead of breaking the traffic down per protocol or per subnet, like most tools do. It is feature rich, supports both IPv4 and IPv6 and in my opinion is the best utility when you want to identify programs that are consuming all your bandwidth on your linux machine. - -A linux user can use **nethogs** to show TCP download and upload-speed per process, monitor a specific device by using the command **nethogs eth0** where eth0 is the name of the device you want to get information from and also get information on the speed at which the data is currently being transferred. - -To me nethogs is very easy to use, maybe because I like it so much that I use it all the time to monitor network bandwidth on my Ubuntu 12.04 LTS machine. - -For example to sniff in promiscious the option -p is used like shown in the following command. - - nethogs -p wlan0 - -If you like to learn more about nethogs and explore it in a very deep way than don't hesitate to read our full tutorial on this network bandwidth monitoring tool. - -### 2) nload ### - -nload is a console application which can be used to monitor network traffic and bandwidth usage in real time and it also visualizes the traffic by providing two easy to understand graphs. This cool network monitoring tool can also be used to switch between devices while monitoring and this can be done by pressing the left and right arrow keys. - -![network monitoring tools in linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) - -As you can see from the above screenshot graphs provided by the nload tool are very easy to understand, provide useful information and also display additional info like total amount of transferred data and min/max network usage. - -And what is even cooler is the fact that you can run the tool nload with the help of the following command which seems to be very short and easy to remember. - - nload - -I am very sure that our detailed tutorial on how to use nload will help new linux users and even experienced ones that are looking for more information on it. - -### 3) slurm ### - -slurm is another network load monitoring tool for linux which shows results in a nice ascii grap and it also supports many keys for interaction such as c to switch to classic mode, s to switch to split graph mode, **r** to redraw the screen, **L** to enable TX/RX led, **m** to switch between classic split and large view, and **q** to quit slurm. - -![linux network load monitoring tools](http://blog.linoxide.com/wp-content/uploads/2013/12/slurm2.png) - -There are also some other keys available in the network load monitoring tool slurm and you can easily study them in the manual page by using the following command. - - man slurm - -slurm is available in the official repos of Ubuntu and Debian so users of these distros can easy download it by using the apt-get install command like shown below. - - sudo apt-get install slurm - -We have covered slurm usage on a tutorial so please visit it and do not forget to share the knowledge with other linux friends. - -### 4) iftop ### - -iftop is a very useful tool when you want to display bandwidth usage on an interface by host. According to the manual page **iftop** listens to network traffic on a named interface, or on the first -interface it can find which looks like an external interface if none is specified, and displays a table of current bandwidth usage by pairs of hosts. - -Ubuntu and Debian users can easily install iftop on their machines by using the following command on a terminal. - - sudo apt-get install iftop - -Use the following command to install iftop on your machine using yum - - yum -y install iftop - -### 5) collectl ### - -collectl can be used to collect data that describes the current system status and it supports the following modes: - -- Record Mode -- Playback Mode - -**Record Mode** allows to take data from a live system and either display it on a terminal or writte to one or more files or a socket. - -**Playback Mode** - -According to the manual pages in this mode data is read from one or more data files that were generated in Record Mode. - -Ubuntu and Debian users can use their default package manager to install collectl on their machines. The following command will do the job for them. - - sudo apt-get install collectl - -Use the following command because these distros have collectl in their official repos too. - - yum install collectl - -### 6) Netstat ### - -Netstat is a command line tool for **monitoring incoming** and **outgoing network packets statistics** as well as interface statistics. It displays network connections for the Transmission Control Protocol (both incoming and outgoing),routing tables, and a number of network interface (network interface controller or software-defined network interface) and network protocol statistics. - -Ubuntu and Debian users can use the default package manager to install netstat on their box. Netstat software includes inside the package net-tools. And can be installed by running the below commands in a shell or terminal: - - sudo apt-get install net-tools - -CentOS, Fedora, RHEL users can use the default package manager to install netstat on their box. Netstat software includes inside the package net-tools. And can be installed by running the below commands in a shell or terminal: - - yum install net-tools - -Simply, run the following to monitor the network packet statistic with Netstat: - - netstat - -![Netstat](http://blog.linoxide.com/wp-content/uploads/2015/02/netstat.png) - -For more information or manual about netstat, we can simply type man netstat in a shell or terminal: - - man netstat - -![man netstat](http://blog.linoxide.com/wp-content/uploads/2015/02/man-netstat.png) - -### 7) Netload ### - -The netload command just displays a small report on the current traffic load, and the total number of bytes transferred since the program start. No more features are there. Its part of the netdiag. - -We can install Netload using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][1] . - - # yum install netdiag - -Netload is available in the default repository as a part of netdiag so, we can easily install **netdiag** using **apt** manager using the command below. - - $ sudo install netdiag - -To run netload, we must make sure to choose a working network interface name like eth0, eh1, wlan0, mon0, etc. And run the following command accordingly in a shell or a terminal. - - $ netload wlan2 - -Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. - -### 8) Nagios ### - -Nagios is a leading open source powerful monitoring system that enables network/system administrators to identify and resolve server related problems before they affect major business processes. With the Nagios system, administrators can able to monitor remote Linux, Windows, Switches, Routers and Printers on a single window. It shows critical warnings and indicates if something went wrong in your network/server which indirectly helps you to begin remediation processes before they occur. - -Nagios has a web interface in which there is a graphical monitor of activities. One can login to the web interface by browsing to the url http://localhost/nagios/ or http://localhost/nagios3/ . Please replace localhost with your IP-address if on remote machine. Then enter the username and pass then, we'll get to see the information like shown below. - -![Nagios3 on Chromium](http://blog.linoxide.com/wp-content/uploads/2015/02/nagios3-ubuntu.png) - -### 9) EtherApe ### - -EtherApe is a graphical network monitor for Unix modeled after etherman. Featuring link layer, IP and TCP modes and support interfaces Ethernet, FDDI, Token Ring, ISDN, PPP, SLIP and WLAN devices, plus several encapsulation formats. Hosts and links change in size with traffic and color coded protocols display. It can filter traffic to be shown, and can read packets from a file as well as live from the network. - -It is easy to install etherape in CentOS, Fedora, RHEL distributions of Linux cause they are available default on their official repository. We can use yum manager to install it with the command shown below: - - yum install etherape - -We can install EtherApe on Ubuntu, Debian and their derivatives using **apt** manager with the below command. - - sudo apt-get install etherape - -After EtherApe is installed on the system, we'll need to run etherape in root permission as: - - sudo etherape - -Then, the **GUI** of **etherape** will be executed. Then, up in the menu we can select the **Mode** (IP, Link Layer, TCP) and **Interface** under **Capture**. After everything are set, we'll need to click **Start** button. Then, we'll gonna see something like this. - -![EtherApe](http://blog.linoxide.com/wp-content/uploads/2015/02/etherape.png) - -### 10) tcpflow ### - -tcpflow is a command line utility that captures data transmitted as part of TCP connections (flows), and stores the data in a way that is convenient for protocol analysis or debugging. It reconstructs the actual data streams and stores each flow in a separate file for later analysis. It understands TCP sequence numbers and will correctly reconstruct data streams regardless of retransmissions or out-of-order delivery . - -Installing tcpflow in Ubuntu, Debian system is easy via **apt** manager as it is available by default in the official repository. - - $ sudo apt-get install tcpflow - -We can install tcpflow in Fedora, CentOS, RHEL and their derivatives from repository using **yum** manager as shown below. - - # yum install tcpflow - -If it is not available in the repository or can't be installed via yum manager, we need to install manually from **http://pkgs.repoforge.org/tcpflow/** as shown below. - -If you are running 64 bit PC: - - # yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.x86_64.rpm - -If you are running 32 bit PC: - - # yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.i686.rpm - -We can use tcpflow to capture all/some tcp traffic and put it in an easy to read file. The below command does what we want but we'll need to run that command in an empty directory as it creates files of the format x.x.x.x.y-a.a.a.a.z and after done, just press Control-C that command to stop it. - - $ sudo tcpflow -i eth0 port 8000 - -Note: Please replace eth0 with the interface of the card you are trying to capture. - -### 11) IPTraf ### - -[IPTraf][2] is a console-based network statistics utility for Linux. It gathers a variety of figures such as TCP connection packet and byte counts, interface statistics and activity indicators, TCP/UDP traffic breakdowns, and LAN station packet and byte counts. - -IPTraf is available in the default repository so, we can easily install IPTraf using **apt** manager using the command below. - - $ sudo apt-get install iptraf - -IPTraf is available in the default repository so, we can easily install IPTraf using yum manager using the command below. - - # yum install iptraf - -We need to run TPTraf in administration permission with a valid network interface name. Here, we have wlan2 so, we'll be using wlan2 as interface name. - - $ sudo iptraf - -![IPTraf](http://blog.linoxide.com/wp-content/uploads/2015/02/iptraf.png) - -To start the general interface statistics, enter: - - # iptraf -g - -To see the detailed statistics facility on an interface called eth0 - - # iptraf -d wlan2 - -To see the TCP and UDP monitor on an interface called eth0 - - # iptraf -z wlan2 - -To displays the packet size counts on an interface called eth0 - - # iptraf -z wlan2 - -Note: Please replace wlan2 with your interface name. You can check your interface by running command ip link show . - -### 12) Speedometer ### - -Speedometer is a small and simple tool that just draws out good looking graphs of incoming and outgoing traffic through a given interface. - -Speedometer is available in the default repository so, we can easily install Speedometer using yum manager using the command below. - - # yum install speedometer - -Speedometer is available in the default repository so, we can easily install Speedometer using apt manager using the command below. - - $ sudo apt-get install speedometer - -Speedometer can simply be run by executing the following command in a shell or a terminal. - - $ speedometer -r wlan2 -t wlan2 - -![Speedometer](http://blog.linoxide.com/wp-content/uploads/2015/02/Speedometer.png) - -Note: Please replace wlan2 with the network interface name you would like to use. - -### 13) Netwatch ### - -Netwatch is part of the netdiag collection of tools, and it too displays the connections between local host and other remote hosts, and the speed at which data is transferring on each connection. - -We can install Netwatch using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][3] . - - # yum install netwatch - -Netwatch is available in the default repository as a part of netdiag so, we can easily install **netdiag** using **apt** manager using the command below. - - $ sudo install netdiag - -To run netwatch, we'll need to execute the following command in a terminal or shell. - - $ sudo netwatch -e wlan2 -nt - -![Netwatch](http://blog.linoxide.com/wp-content/uploads/2015/02/netwatch.png) - -Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. - -### 14) Trafshow ### - -Trafshow reports the current active connections like netwatch and pktstat, trafshow, their protocol and the data transfer speed on each connection. It can filter out connections using pcap type filters. - -We can install Netwatch using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][4] . - -# yum install trafshow - -Trafshow is available in the default repository so, we can easily install it using **apt** manager using the command below. - - $ sudo install trafshow - -To monitor using trafshow, we'll need to run the following command in a shell or terminal. - - $ sudo trafshow -i wlan2 - -![Trafshow](http://blog.linoxide.com/wp-content/uploads/2015/02/trafshow-all.png) - -To monitor specifically tcp connections add tcp as shown below. - - $ sudo trafshow -i wlan2 tcp - -![Trafshow tcp](http://blog.linoxide.com/wp-content/uploads/2015/02/trafshow-tcp.png) - -Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. - -### 15) Vnstat ### - -Vnstat is bit different from most of the other tools. It actually runs a background service/daemon and keeps recording the size of data transfer all the time. Next it can be used to generate a report of the history of network usage. - -We'll need to turn on EPEL Repository then run **yum** manager to install vnstat. - - # yum install vnstat - -Vnstat is available in the default repository. So, we can run **apt** manager to install it using the following command. - - $ sudo apt-get install vnstat - -Running vnstat without any options would simply show the total amount of data transfer that took place since the date the daemon is running. - - $ vnstat - -![vnstat](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat.png) - -To monitor the bandwidth usage in realtime, use the '-l' option (live mode). It would then show the total bandwidth used by incoming and outgoing data, but in a very precise manner without any internal details about host connections or processes. - - $ vnstat -l - -![Vnstat live mode](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat-live.png) - -After done, press Ctrl-C to stop which will result the following type of output - -![Vnstat Live Result](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat-live-result.png) - -### 16) tcptrack ### - -[tcptrack][5] displays the status of TCP connections that it sees on a given network interface. tcptrack monitors their state and displays information such as state, source/destination addresses and bandwidth usage in a sorted, updated list very much like the **top** command. - -As tcptrack is in the repository , we can simply install tcptrack in Debian, Ubuntu from their repository using apt manager. To do so, we'll need to execute the following command in a shell or terminal: - - $ sudo apt-get install tcptrack - -We can install it using yum in fedora as it is in the default repository. But if you're running CentOS or RHEL, we'll need to install [rpmforge repository][6] . To do so, we'll need to run the following commands. - - # wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm - - # rpm -Uvh rpmforge-release*rpm - - # yum install tcptrack - -Note: Here, we have downloaded current latest version of rpmforge-release ie 0.5.3-1 . You can always get the latest version from rpmforge repository and do replace with that you downloaded in the above command. - -**tcptrack** needs to be run in root permission or superuser. We'll need to execute tcptrack with the network interface name we wanna monitor the TCP connections of. Here, we've wlan2 so will be using that as: - - sudo tcptrack -i wlan2 - -![tcptrack](http://blog.linoxide.com/wp-content/uploads/2015/02/tcptrack.png) - -If you wanna monitor of specific ports then: - - # tcptrack -i wlan2 port 80 - -![tcptrack port 80](http://blog.linoxide.com/wp-content/uploads/2015/02/tcptrack-port-80.png) - -Please replace 80 with the port number you wanna monitor .Note: Please replace wlan2 with the network interface name you wanna use. If you wanna scan for your network interface name run ip link show in a terminal or shell. - -### 17) CBM ### - -The CBM or Color Bandwidth Meter displays current traffic of all network device. This program is so simple that is should be self-explanatory. Source code and newer versions of CBM are available at [http://www.isotton.com/utils/cbm/][7] . - -As CBM is in the repository , we can simply install CBM in Debian, Ubuntu from their repository using **apt** manager. To do so, we'll need to execute the following command in a shell or terminal: - - $ sudo apt-get install cbm - -We simply need to run cbm in a shell or terminal as shown below: - - $ cbm - -![Color Bandwidth Meter](http://blog.linoxide.com/wp-content/uploads/2015/02/cbm.png) - -### 18) bmon ### - -[Bmon][8] or Bandwidth Monitoring is a tool that intended for debugging and monitor bandwidth in real-time access. This tool is capable to retrieving statistics from various input modules. It provides various output methods including a curses based interface,lightweight HTML output but also formatable ASCII output. - -bmon is available in the repository, so we can install it in Debian, Ubuntu from their repository using apt manager. To do so, we'll need to run the following command in a shell or terminal. - - $ sudo apt-get install bmon - -We can run bmon and monitor our bandwidth status using the command below. - - $ bmon - -![bmon](http://blog.linoxide.com/wp-content/uploads/2015/02/bmon.png) - -### 19) tcpdump ### - -[TCPDump][9] is a tool for network monitoring and data acquisition. It can save lots of time and can be used for debugging network or server related problems. It prints out a description of the contents of packets on a network interface that match the boolean expression. - -tcpdump is available in the default repository of Debian, Ubuntu so, we can simply use apt manager to install it under sudo privilege . To do so, we'll need to run the following command in a shell or terminal. - - $ sudo apt -get install tcpdump - -tcpdump is also available in the repository of Fedora, CentOS, RHEL so, we can install it via yum manager as: - - # yum install tcpdump - -tcpdump needs to be run in root permission or superuser. We'll need to execute tcpdump with the network interface name we wanna monitor the TCP connections of. Here, we've wlan2 so will be using it as: - - $ sudo tcpdump -i wlan2 - -![tcpdump](http://blog.linoxide.com/wp-content/uploads/2015/02/tcpdump.png) - -If you want to monitor to a specific port only, then can run the command as follows. Here is the example for port 80 (webserver). - - $ sudo tcpdump -i wlan2 'port 80' - -![tcpdump port](http://blog.linoxide.com/wp-content/uploads/2015/02/tcpdump-port.png) - -### 20) ntopng ### - -[ntopng][20] is the next generation version of the original ntop. It is a network probe that shows network usage in a way similar to what top does for processes. ntopng is based on libpcap and it has been written in a portable way in order to virtually run on every Unix platform, MacOSX and on Win32 as well. - -To install ntopng in Debian, Ubuntu system, we'll first need to install the required **dependencies packages to compile ntopng**. You can install them all by running the below command in a shell or a terminal. - - $ sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev build-essential checkinstall - -Now, we'll need to manually compile ntopng for our system as: - - $ sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download - $ sudo tar zxfv ntopng-1.1_6932.tgz - $ sudo cd ntopng-1.1_6932 - $ sudo ./configure - $ sudo make - $ sudo make install - -Now, you should have your ntopng installed in your Debian or Ubuntu system. - -We have already covered tutorial on ntopng usages. It is available in both command line and web interface. We can go ahead to get knowledge on it. - -### Conclusion ### - -In this first part we covered some network load monitoring tools for linux that are very helpful to a sysadmin and even a novice user. Each one of the tools covered in this article has its own specifics, different options but at the end they all help you to monitor your network traffic. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/monitoring-2/network-monitoring-tools-linux/ - -作者:[Bobbin Zachariah][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/bobbin/ -[1]:http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html -[2]:http://iptraf.seul.org/ -[3]:http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html -[4]:http://pkgs.org/centos-6/epel-x86_64/trafshow-5.2.3-6.el6.x86_64.rpm.html -[5]:http://linux.die.net/man/1/tcptrack -[6]:http://pkgs.org/centos-6/repoforge-x86_64/tcptrack-1.4.0-1.el6.rf.x86_64.rpm.html -[7]:http://www.isotton.com/utils/cbm/ -[8]:https://github.com/tgraf/bmon/ -[9]:http://www.tcpdump.org/ -[10]:http://www.ntop.org/ diff --git a/translated/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md b/translated/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md new file mode 100644 index 0000000000..112147414a --- /dev/null +++ b/translated/tech/20150227 Bringing a Bunch of Best Known Linux Network Tools.md @@ -0,0 +1,443 @@ +领略一些最著名的 Linux 网络工具 +================================================================================ +在你的系统上使用命令行工具来监控你的网络是非常实用的,并且对于 Linux 用户来说,有着许许多多现成的工具可以使用,如 nethogs, ntopng, nload, iftop, iptraf, bmon, slurm, tcptrack, cbm, netwatch, collectl, trafshow, cacti, etherape, ipband, jnettop, netspeed 以及 speedometer。 + +鉴于世上有着许多的 Linux 专家和开发者,显然还存在其他的网络监控工具,但在这篇教程中,我不打算将它们所有包括在内。 + +上面列出的工具都有着自己的独特之处,但归根结底,它们都做着监控网络流量的工作,且并不是只有一种方法来完成这件事。例如 nethogs 可以被用来展示每个进程的带宽使用情况,以防你想知道究竟是哪个应用在消耗了你的整个网络资源; iftop 可以被用来展示每个套接字连接的带宽使用情况,而 像 nload 这类的工具可以帮助你得到有关整个带宽的信息。 + +### 1) nethogs ### + +nethogs 是一个免费的工具,当要查找哪个 PID (注:即 process identifier,进程 ID) 给你的网络流量带来了麻烦时,它是非常方便的。它按每个进程来组织带宽,而不是像大多数的工具那样按照每个协议或每个子网来划分流量。它功能丰富,同时支持 IPv4 和 IPv6,并且我认为,若你想在你的 Linux 主机上确定哪个程序正消耗着你的全部带宽,它是来做这件事的最佳的程序。 + +一个 Linux 用户可以使用 **nethogs** 来显示每个进程的 TCP 下载和上传速率,使用命令 **nethogs eth0** 来监控一个特定的设备,上面的 eth0 是那个你想获取信息的设备的名称,你还可以得到有关正在被传输的数据的传输速率的信息。 + +对我而言, nethogs 是非常容易使用的,或许是因为我非常喜欢它以至于我总是在我的 Ubuntu 12.04 LTS 机器中使用它来监控我的网络带宽。 + +例如要想使用混杂模式来嗅探,可以像下面展示的命令那样使用选项 -p: + + nethogs -p wlan0 + +假如你想更多地了解 nethogs 并深入探索它,那么请毫不犹豫地阅读我们做的关于这个网络带宽监控工具的整个教程。 + +### 2) nload ### + +nload 是一个控制台应用,可以被用来实时地监控网络流量和带宽使用情况,它还通过提供两个简单易懂的图表来对流量进行可视化。这个绝妙的网络监控工具还可以在监控过程中切换被监控的设备,而这可以通过按左右箭头来完成。 + +![network monitoring tools in linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) + +正如你在上面的截图中所看到的那样,由 nload 提供的图表是非常容易理解的。nload 提供了有用的信息,也展示了诸如被传输数据的总量和最小/最大网络速率等信息。 + +而更酷的是你可以在下面的命令的帮助下运行 nload 这个工具,这个命令是非常的短小且易记的: + + nload + +我很确信的是:我们关于如何使用 nload 的详细教程将帮助到新的 Linux 用户,甚至可以帮助那些正寻找关于 nload 信息的老手。 + +### 3) slurm ### + +slurm 是另一个 Linux 网络负载监控工具,它以一个不错的 ASCII 图来显示结果,它还支持许多键值用以交互,例如 **c** 用来切换到经典模式, **s** 切换到分图模式, **r** 用来重绘屏幕, **L** 用来启用 TX/RX(注:TX,发送流量;RX,接收流量) LED,**m** 用来在经典分图模式和大图模式之间进行切换, **q** 退出 slurm。 + +![linux network load monitoring tools](http://blog.linoxide.com/wp-content/uploads/2013/12/slurm2.png) + +在网络负载监控工具 slurm 中,还有许多其它的键值可用,你可以很容易地使用下面的命令在 man 手册中学习它们。 + + man slurm + +slurm 在 Ubuntu 和 Debian 的官方软件仓库中可以找到,所以使用这些发行版本的用户可以像下面展示的那样,使用 apt-get 安装命令来轻松地下载它: + + sudo apt-get install slurm + +我们已经在一个教程中对 slurm 的使用做了介绍,所以请访问相关网页( 注:应该指的是[这篇文章](http://linoxide.com/ubuntu-how-to/monitor-network-load-slurm-tool/) ),并不要忘记和其它使用 Linux 的朋友分享这些知识。 + +### 4) iftop ### + +当你想在一个接口上按照主机来展示带宽使用情况时,iftop 是一个非常有用的工具。根据 man 手册,**iftop** 在一个已命名的接口或在它可以找到的第一个接口(假如没有任何特殊情况,它就像一个外部的接口)上监听网络流量,并且展示出一个表格来显示当前一对主机间的带宽使用情况。 + +通过在虚拟终端中使用下面的命令,Ubuntu 和 Debian 用户可以在他们的机器中轻易地安装 iftop: + + sudo apt-get install iftop + +在你的机器上,可以使用下面的命令通过 yum 来安装 iftop: + + yum -y install iftop + +### 5) collectl ### + +collectl 可以被用来收集描述当前系统状态的数据,并且它支持如下两种模式: + +- 记录模式 +- 回放模式 + +**记录模式** 允许从一个正在运行的系统中读取数据,然后将这些数据要么显示在终端中,要么写入一个或多个文件或套接字中。 + +**回放模式** + +根据 man 手册,在这种模式下,数据从一个或多个由记录模式生成的数据文件中读取。 + +Ubuntu 和 Debian 用户可以在他们的机器上使用他们默认的包管理器来安装 colletcl。下面的命令将为他们做这个工作: + + sudo apt-get install collectl + +还可以使用下面的命令来安装 collectl, 因为对于这些发行版本(注:这里指的是用 yum 作为包管理器的发行版本),在它们官方的软件仓库中也含有 collectl: + + yum install collectl + +### 6) Netstat ### + +Netstat 是一个用来监控**传入和传出的网络数据包统计数据**和接口统计数据的命令行工具。它为传输控制协议 TCP (包括上传和下行),路由表,及一系列的网络接口(网络接口控制器或者软件定义的网络接口) 和网络协议统计数据展示网络连接情况。 + +Ubuntu 和 Debian 用户可以在他们的机器上使用默认的包管理器来安装 netstat。Netsta 软件被包括在 net-tools 软件包中,并可以在 shell 或虚拟终端中运行下面的命令来安装它: + + sudo apt-get install net-tools + +CentOS, Fedora, RHEL 用户可以在他们的机器上使用默认的包管理器来安装 netstat。Netstat 软件被包括在 net-tools 软件包中,并可以在 shell 或虚拟终端中运行下面的命令来安装它: + + yum install net-tools + +运行下面的命令使用 Netstat 来轻松地监控网络数据包统计数据: + + netstat + +![Netstat](http://blog.linoxide.com/wp-content/uploads/2015/02/netstat.png) + +更多的关于 netstat 的信息,我们可以简单地在 shell 或终端中键入 man netstat 来了解: + + man netstat + +![man netstat](http://blog.linoxide.com/wp-content/uploads/2015/02/man-netstat.png) + +### 7) Netload ### + +netload 命令只展示一个关于当前网络荷载和自从程序运行之后传输数据总的字节数目的简要报告,它没有更多的功能。它是 netdiag 软件的一部分。 + +我们可以在 fedora 中使用 yum 来安装 Netload,因为它在 fedora 的默认软件仓库中。但假如你运行的是 CentOS 或 RHEL,则我们需要安装 [rpmforge 软件仓库][1]。 + + # yum install netdiag + +Netload 在默认仓库中作为 netdiag 的一部分可以被找到,我们可以轻易地使用下面的命令来利用 **apt** 包管理器安装 **netdiag**: + + $ sudo apt-get install netdiag (注:这里原文为 sudo install netdiag,应该加上 apt-get) + +为了运行 netload,我们需要确保选择了一个正在工作的网络接口的名称,如 eth0, eh1, wlan0, mon0等,然后在 shell 或虚拟终端中运行下面的命令: + + $ netload wlan2 + +注意: 请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 `ip link show` 命令。 + +### 8) Nagios ### + +Nagios 是一个领先且功能强大的开源监控系统,它使得网络或系统管理员在服务器相关的问题影响到服务器的主要事务之前,鉴定并解决这些问题。 有了 Nagios 系统,管理员便可以在一个单一的窗口中监控远程的 Linux 、Windows 系统、交换机、路由器和打印机等。它显示出重要的警告并指示出在你的网络或服务器中是否出现某些故障,这间接地帮助你在问题发生之前,着手执行补救行动。 + +Nagios 有一个 web 界面,其中有一个图形化的活动监视器。通过浏览网页 http://localhost/nagios/ 或 http://localhost/nagios3/ 便可以登录到这个 web 界面。假如你在远程的机器上进行操作,请使用你的 IP 地址来替换 localhost,然后键入用户名和密码,我们便会看到如下图所展示的信息: + +![在 Chromium 浏览器中的 Nagios3](http://blog.linoxide.com/wp-content/uploads/2015/02/nagios3-ubuntu.png) + +### 9) EtherApe ### + +EtherApe 是一个针对 Unix 的图形化网络监控工具,它仿照了 etherman 软件。它具有链路层,IP 和 TCP 模式并支持 Ethernet, FDDI, Token Ring, ISDN, PPP, SLIP 及 WLAN 设备等接口,再加上支持一些封装的格式。主机和链接随着流量大小和被着色的协议名称展示而变化。它可以过滤要展示的流量,并可从一个文件或运行的网络中读取数据报。 + +在 CentOS、Fedora、RHEL 等 Linux 发行版本中安装 etherape 是一件容易的事,因为在它们的官方软件仓库中就可以找到 etherape。我们可以像下面展示的命令那样使用 yum 包管理器来安装它: + + yum install etherape + +我们可以使用下面的命令在 Ubuntu、Debian 及它们的衍生发行版本中使用 **apt** 包管理器来安装 EtherApe : + + sudo apt-get install etherape + +在 EtherApe 安装到你的系统之后,我们需要像下面那样以 root 权限来运行 etherape: + + sudo etherape + +然后, **etherape** 的 **图形用户界面** 便会被执行。接着,在菜单上面的 **捕捉** 选项下,我们可以选择 **模式**(IP,链路层,TCP) 和 **接口**。一切设定完毕后,我们需要点击 **开始** 按钮。接着我们便会看到类似下面截图的东西: + +![EtherApe](http://blog.linoxide.com/wp-content/uploads/2015/02/etherape.png) + +### 10) tcpflow ### + +tcpflow 是一个命令行工具,它可以捕捉作为 TCP 连接(流)的一部分的传输数据,并以一种方便协议分析或除错的方式来存储数据。它重建了实际的数据流并将每个流存储在不同的文件中,以备日后的分析。它理解 TCP 序列号并可以正确地重建数据流,不管是在重发或乱序发送状态下。 + +通过 **apt** 包管理器在 Ubuntu 、Debian 系统中安装 tcpflow 是很容易的,因为默认情况下在官方软件仓库中可以找到它。 + + $ sudo apt-get install tcpflow + +我们可以使用下面的命令通过 **yum** 包管理器在 Fedora 、CentOS 、RHEL 及它们的衍生发行版本中安装 tcpflow: + + # yum install tcpflow + +假如在软件仓库中没有找到它或不能通过 yum 包管理器来安装它,则我们需要像下面展示的那样从 **http://pkgs.repoforge.org/tcpflow/** 上手动安装它: + +假如你运行 64 位的 PC: + + # yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.x86_64.rpm + +假如你运行 32 位的 PC: + + # yum install --nogpgcheck http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.i686.rpm + +我们可以使用 tcpflow 来捕捉全部或部分 tcp 流量并以一种简单的方式把它们写到一个可读文件中。下面的命令执行着我们想要做的事情,但我们需要在一个空目录中运行下面的命令,因为它将创建诸如 x.x.x.x.y-a.a.a.a.z 格式的文件,做完这些之后,只需按 Ctrl-C 便可停止这个命令。 + + $ sudo tcpflow -i eth0 port 8000 + +注意:请将上面的 eth0 替换为你想捕捉的网卡接口名称。 + +### 11) IPTraf ### + +[IPTraf][2] 是一个针对 Linux 平台的基于控制台的网络统计应用。它生成一系列的图形,如 TCP 连接包和字节的数目、接口信息和活动指示器、 TCP/UDP 流量故障以及 LAN 状态包和字节的数目。 + +在默认的软件仓库中可以找到 IPTraf,所以我们可以使用下面的命令通过 **apt** 包管理器轻松地安装 IPTraf: + + $ sudo apt-get install iptraf + +在默认的软件仓库中可以找到 IPTraf,所以我们可以使用下面的命令通过 **yum** 包管理器轻松地安装 IPTraf: + + # yum install iptraf + +我们需要以管理员权限来运行 IPTraf(注:这里原文写错为 TPTraf),并带有一个可用的网络接口名。这里,我们的网络接口名为 wlan2,所以我们使用 wlan2 来作为接口的名称: + + $ sudo iptraf wlan2 (注:这里原文为 sudo iptraf,应该加上 wlan2) + +![IPTraf](http://blog.linoxide.com/wp-content/uploads/2015/02/iptraf.png) + +开始一般的网络接口统计,键入: + + # iptraf -g + +为了在一个名为 eth0 的接口设备上看详细的统计信息,使用: + + # iptraf -d wlan2 (注:这里的 wlan2 和 上面的 eth0 不一致,下面的几句也是这种情况,请相应地改正) + +为了看一个名为 eth0 的接口的 TCP 和 UDP 监控,使用: + + # iptraf -z wlan2 + +为了展示在一个名为 eth0 的接口上的包的大小和数目,使用: + + # iptraf -z wlan2 + +注意:请将上面的 wlan2 替换为你的接口名称。你可以通过运行`ip link show`命令来检查你的接口。 + +### 12) Speedometer ### + +Speedometer 是一个小巧且简单的工具,它只绘出一幅包含有通过某个给定端口的上行、下行流量的好看的图。 + +在默认的软件仓库中可以找到 Speedometer ,所以我们可以使用下面的命令通过 **yum** 包管理器轻松地安装 Speedometer: + + # yum install speedometer + +在默认的软件仓库中可以找到 Speedometer ,所以我们可以使用下面的命令通过 **apt** 包管理器轻松地安装 Speedometer: + + $ sudo apt-get install speedometer + +Speedometer 可以简单地通过在 shell 或虚拟终端中执行下面的命令来运行: + + $ speedometer -r wlan2 -t wlan2 + +![Speedometer](http://blog.linoxide.com/wp-content/uploads/2015/02/Speedometer.png) + +注:请将上面的 wlan2 替换为你想要使用的网络接口名称。 + +### 13) Netwatch ### + +Netwatch 是 netdiag 工具集里的一部分,并且它也显示出当前主机和其他远程主机的连接情况,以及在每个连接中数据传输的速率。 + +我们可以使用 yum 在 fedora 中安装 Netwatch,因为它在 fedora 的默认软件仓库中。但若你运行着 CentOS 或 RHEL , 我们需要安装 [rpmforge 软件仓库][3]。 + + # yum install netwatch + +Netwatch 作为 netdiag 的一部分可以在默认的软件仓库中找到,所以我们可以轻松地使用下面的命令来利用 **apt** 包管理器安装 **netdiag**: + + $ sudo apt-get install netdiag(注:这里应该加上 apt-get + +为了运行 netwatch, 我们需要在虚拟终端或 shell 中执行下面的命令: + + $ sudo netwatch -e wlan2 -nt + +![Netwatch](http://blog.linoxide.com/wp-content/uploads/2015/02/netwatch.png) + +注意: 请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 `ip link show` 命令。 + +### 14) Trafshow ### + +Trafshow 同 netwatch 和 pktstat(注:这里原文中多了一个 trafshow)一样,可以报告当前激活的连接里使用的协议和每个连接中数据传输的速率。它可以使用 pcap 类型的滤波器来筛选出特定的连接。 + +我们可以使用 yum 在 fedora 中安装 trafshow(注:这里原文为 Netwatch,应该为 trafshow),因为它在 fedora 的默认软件仓库中。但若你正运行着 CentOS 或 RHEL , 我们需要安装 [rpmforge 软件仓库][4]。 + + # yum install trafshow + +Trafshow 在默认仓库中可以找到,所以我们可以轻松地使用下面的命令来利用 **apt** 包管理器安装它: + + $ sudo apt-get install trafshow(注:原文少了 apt-get) + +为了使用 trafshow 来执行监控任务,我们需要在虚拟终端或 shell 中执行下面的命令: + + $ sudo trafshow -i wlan2 + +![Trafshow](http://blog.linoxide.com/wp-content/uploads/2015/02/trafshow-all.png) + +为了特别地监控 tcp 连接,如下面一样添加上 tcp 参数: + + $ sudo trafshow -i wlan2 tcp + +![Trafshow tcp](http://blog.linoxide.com/wp-content/uploads/2015/02/trafshow-tcp.png) + +注意: 请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 `ip link show` 命令。 + +### 15) Vnstat ### + +与大多数的其他工具相比,Vnstat 有一点不同。实际上它运行一个后台服务或守护进程,并时刻记录着传输数据的大小。另外,它可以被用来生成一个带有网络使用历史记录的报告。 + +我们需要开启 EPEL 软件仓库,然后运行 **yum** 包管理器来安装 vnstat。 + + # yum install vnstat + +Vnstat 在默认软件仓库中可以找到,所以我们可以使用下面的命令运行 **apt** 包管理器来安装它: + + $ sudo apt-get install vnstat + +不带有任何选项运行 vnstat 将简单地展示出从该守护进程运行后数据传输的总量。 + + $ vnstat + +![vnstat](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat.png) + +为了实时地监控带宽使用情况,使用 ‘-l’ 选项(实时模式)。然后它将以一种非常精确的方式来展示被上行和下行数据所使用的带宽总量,但不会显示任何有关主机连接或进程的内部细节。 + + $ vnstat -l + +![Vnstat 实时模式](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat-live.png) + +完成了上面的步骤后,按 Ctrl-C 来停止,这将会得到如下类型的输出: + +![Vnstat 实时结果](http://blog.linoxide.com/wp-content/uploads/2015/02/vnstat-live-result.png) + +### 16) tcptrack ### + +[tcptrack][5] 可以展示 TCP 连接的状态,它在一个给定的网络端口上进行监听。tcptrack 监控它们的状态并展示出一个经过排列且不断更新的有关来源/目标地址、带宽使用情况等信息的列表,这与 **top** 命令的输出非常类似 。 + +鉴于 tcptrack 在软件仓库中,我们可以轻松地在 Debian、Ubuntu 系统中从软件仓库使用 **apt** 包管理器来安装 tcptrack。为此,我们需要在 shell 或虚拟终端中执行下面的命令: + + $ sudo apt-get install tcptrack + +我们可以通过 yum 在 fedora 中安装它,因为它在 fedora 的默认软件仓库中。但若你运行着 CentOS 或 RHEL 系统,我们需要安装 [rpmforge 软件仓库][6]。为此,我们需要运行下面的命令: + + # wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm + + # rpm -Uvh rpmforge-release*rpm + + # yum install tcptrack + +注:这里我们下载了 rpmforge-release 的当前最新版本,即 0.5.3-1,你总是可以从 rpmforge 软件仓库中下载其最新版本,并请在上面的命令中替换为你下载的版本。 + +**tcptrack** 需要以 root 权限或超级用户身份来运行。执行 tcptrack 时,我们需要带上那个我们想监视的网络接口 TCP 连接状况的接口名称。这里我们的接口名称为 wlan2,所以如下面这样使用: + + sudo tcptrack -i wlan2 + +![tcptrack](http://blog.linoxide.com/wp-content/uploads/2015/02/tcptrack.png) + +假如你想监控特定的端口,则使用: + + # tcptrack -i wlan2 port 80 + +![tcptrack port 80](http://blog.linoxide.com/wp-content/uploads/2015/02/tcptrack-port-80.png) + +请替换上面的 80 为你想要监控的端口号。注意: 请将上面的 wlan2 替换为你想使用的网络接口名称,假如你想通过扫描了解你的网络接口名称,可以在一个虚拟终端或 shell 中运行 `ip link show` 命令。 + +### 17) CBM ### + +CBM 或 Color Bandwidth Meter 可以展示出当前所有网络设备的流量使用情况。这个程序是如此的简单,以至于应该可以从它的名称中看出其功能。CBM 的源代码和新版本可以在 [http://www.isotton.com/utils/cbm/][7] 上找到。 + +鉴于 CBM 已经包含在软件仓库中,我们可以简单地使用 **apt** 包管理器从 Debian、Ubuntu 的软件仓库中安装 CBM。为此,我们需要在一个 shell 窗口或虚拟终端中运行下面的命令: + + $ sudo apt-get install cbm + +我们只需使用下面展示的命令来在 shell 窗口或虚拟终端中运行 cbm: + + $ cbm + +![Color Bandwidth Meter](http://blog.linoxide.com/wp-content/uploads/2015/02/cbm.png) + +### 18) bmon ### + +[Bmon][8] 或 Bandwidth Monitoring ,是一个用于调试和实时监控带宽的工具。这个工具能够检索各种输入模块的统计数据。它提供了多种输出方式,包括一个基于 curses 库的界面,轻量级的HTML输出,以及 ASCII 输出格式。 + +bmon 可以在软件仓库中找到,所以我们可以通过使用 apt 包管理器来在 Debian、Ubuntu 中安装它。为此,我们需要在一个 shell 窗口或虚拟终端中运行下面的命令: + + $ sudo apt-get install bmon + +我们可以使用下面的命令来运行 bmon 以监视我们的网络状态: + + $ bmon + +![bmon](http://blog.linoxide.com/wp-content/uploads/2015/02/bmon.png) + +### 19) tcpdump ### + +[TCPDump][9] 是一个用于网络监控和数据获取的工具。它可以为我们节省很多的时间,并可用来调试网络或服务器 的相关问题。它打印出在某个网络接口上与布尔表达式匹配的数据包所包含的内容的一个描述。 + +tcpdump 可以在 Debian、Ubuntu 的默认软件仓库中找到,我们可以简单地以 sudo 权限使用 apt 包管理器来安装它。为此,我们需要在一个 shell 窗口或虚拟终端中运行下面的命令: + + $ sudo apt -get install tcpdump + +tcpdump 也可以在 Fedora、CentOS、RHEL 的软件仓库中找到。我们可以像下面一样通过 yum 包管理器来安装它: + + # yum install tcpdump + +tcpdump 需要以 root 权限或超级用户来运行,我们需要带上我们想要监控的 TCP 连接的网络接口名称来执行 tcpdump 。在这里,我们有 wlan2 这个网络接口,所以可以像下面这样使用: + + $ sudo tcpdump -i wlan2 + +![tcpdump](http://blog.linoxide.com/wp-content/uploads/2015/02/tcpdump.png) + + +假如你只想监视一个特定的端口,则可以运行下面的命令。下面是一个针对 80 端口(网络服务器)的例子: + + $ sudo tcpdump -i wlan2 'port 80' + +![tcpdump port](http://blog.linoxide.com/wp-content/uploads/2015/02/tcpdump-port.png) + +### 20) ntopng ### + +[ntopng][20] 是 ntop 的下一代版本。它是一个用于展示网络使用情况的网络探头,在一定程度上它与 top 针对进程所做的工作类似。ntopng 基于 libpcap 并且它以可移植的方式被重写,以达到可以在每一个 Unix 平台 、 MacOSX 以及 Win32 上运行的目的。 + +为了在 Debian,Ubuntu 系统上安装 ntopng,首先我们需要安装 **编译 ntopng 所需的依赖软件包**。你可以通过在一个 shell 窗口或一个虚拟终端中运行下面的命令来安装它们: + + $ sudo apt-get install libpcap-dev libglib2.0-dev libgeoip-dev redis-server wget libxml2-dev build-essential checkinstall + +现在,我们需要像下面一样针对我们的系统手动编译 ntopng : + + $ sudo wget http://sourceforge.net/projects/ntop/files/ntopng/ntopng-1.1_6932.tgz/download + $ sudo tar zxfv ntopng-1.1_6932.tgz + $ sudo cd ntopng-1.1_6932 + $ sudo ./configure + $ sudo make + $ sudo make install + +这样,在你的 Debian 或 Ubuntu 系统上应该已经安装上了你编译的 ntopng 。 + +我们已经有了有关 ntopng 的使用方法的[教程](linoxide.com/monitoring-2/ntopng-network-monitoring-tool/),它既可以在命令行也可以在 Web 界面中使用,我们可以前往这些教程来获得有关 ntopng 的知识。 + +### 结论 ### + +在第一部分中(注:我认为原文多了 first 这个单词,总之是前后文的内容有些不连贯),我们介绍了一些在 Linux 下的网络负载监控工具,这对于系统管理员甚至是新手来说,都是很有帮助的。在这篇文章中介绍的每一个工具都有其特点,不同的选项等,但最终它们都可以帮助你来监控你的网络流量。 +-------------------------------------------------------------------------------- + +via: http://linoxide.com/monitoring-2/network-monitoring-tools-linux/ + +作者:[Bobbin Zachariah][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/bobbin/ +[1]:http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html +[2]:http://iptraf.seul.org/ +[3]:http://pkgs.org/centos-7/repoforge-x86_64/netwatch-1.0c-1.el7.rf.x86_64.rpm.html +[4]:http://pkgs.org/centos-6/epel-x86_64/trafshow-5.2.3-6.el6.x86_64.rpm.html +[5]:http://linux.die.net/man/1/tcptrack +[6]:http://pkgs.org/centos-6/repoforge-x86_64/tcptrack-1.4.0-1.el6.rf.x86_64.rpm.html +[7]:http://www.isotton.com/utils/cbm/ +[8]:https://github.com/tgraf/bmon/ +[9]:http://www.tcpdump.org/ +[10]:http://www.ntop.org/ \ No newline at end of file From 5ac98448fc9de78e7c2be5ba377514f5fbbd2ecb Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sun, 8 Mar 2015 23:48:46 +0800 Subject: [PATCH 503/725] Update 20150205 How To Use Smartphones Like Weather Conky In Linux.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- ...0205 How To Use Smartphones Like Weather Conky In Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md b/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md index b5bbc69a3b..7607920dd3 100644 --- a/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md +++ b/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md @@ -1,3 +1,5 @@ +FSSlc translating + How To Use Smartphones Like Weather Conky In Linux ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Use_Weather_Conky_Linux.jpeg) @@ -81,4 +83,4 @@ via: http://itsfoss.com/weather-conky-linux/ [2]:http://www.computerhope.com/unix/curl.htm [3]:http://speedracker.deviantart.com/art/Flair-Weather-Conky-Made-for-Conky-Manager-510130311 [4]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ -[5]:https://weather.yahoo.com/ \ No newline at end of file +[5]:https://weather.yahoo.com/ From e32a98f0eeff768c1257eea055387ef2dfafe508 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sun, 8 Mar 2015 17:19:09 -0300 Subject: [PATCH 504/725] update --- ...us Case of the Disappearing Distros.md.swp | Bin 20480 -> 32768 bytes ...urious Case of the Disappearing Distros.md | 2 ++ 2 files changed, 2 insertions(+) diff --git a/sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp b/sources/talk/.20141224 The Curious Case of the Disappearing Distros.md.swp index e00551e00df308f45da241238c3a8dae473ae1a9..7f5c0d619bacbc005cbf30bc7d08477554d33e5e 100644 GIT binary patch delta 2376 zcmZvdZA?>V6vrvu^O|Ta8&9=LSia`122* zpMg2H9^TGZW$h&mVJX^1BUa*{kbCNh!=((_Wt%nm?5DyQwKR~p@2OB1j=%K*Z`PJ` z-1T)F=LgIzJ5Uhjs=#Hi<_-1TGrTu}YVZ&zd;ki71{_+$aqof+U_EfH<~S#~2rhtZ zkOihPIW7#YBeL(n`V8(QmyL&Jgl+@n;2c=MDV~7K;2ZXgv^@q9a1Z2y-N1#EI>9Ee z5&VwB{}%p}|8=c7=cwLLb5(8&5$`CqIwdhGMH?kiki;?KA0hoMNC*{0YIQuHwG*eE zc1B3UH1*oZ^k~A@$I@lJMI*y_tIT)Pt{{8mn3Q4x+83Z+fdt~%BSl+~Pb5={H)0QI zxI-MGG+Qf~#U5q87paF=+BQP05g1~H=?coTZrb2e1iKuL$*}=gk^OVT9!-^sgeDS# zlZsBocbm*i(l#56;Pae)9~+GomAZW9SdFB$M-pTF`<1%tYOSHX%E*6MrmLzpRx0M; z6tRYIFf|WkRv;rS#L-3OI*G+`_*Ah*!%RebmyR5tm)l3l4Lgkm@SsLRCx;NU6pKl5 z59#fv&4J`cbZ}Y?fm!EN`@FuI*Yaih3cf;nNyi(E;RVe?T2fpJ>iZRn&cwyk{Su;z zKveg@6xaYBz0PrefFjTVfq8%*!kU4YMBo4?!Drwhg!BOX490*J6aWqQ1%8;XAz;bi zzU1oQd=uCRTo9HMTm%;Yg|G;?3a+qc2ucERFbfKR26RDKo#0Kd4Lm^*kHdfQO&R7K zRT@jhn6t{`0%`T2Jc-Wngs&@EGoCNgRcH+)S*ntgMij`zpD_wrE%Q<~sYsy8k4ZKe4{weR)_8mKR@VQK!|Myic-nvbD za@{?9>JGs{qVA?NV}&wE)C22s`vB{Tn7|fYzUQ+8@WCIx_O)JDS=!>`;cQgg6fnrV^57Us??DD$qjnQ3nej)O1?5A1?D zyiRntCWHYJ9oA@2A2hr&6e3Lybq(8b=9WzPYqJ&;05POjV3nduc~V-H9|4|9~X6u~C4@m>SK?7cXt@RECCfaHbPR*7LOE zt}-g5gq;!-J6kO-jczuSLw!ongN{4`2@%JbdUQ!0(&HAW7h9$HAhm??8S|OEhoE8N zY$L8_c_5%FUlKcHk6o3t+r8UrRxQhY5MCQ?!9`{}xF0{PN#a4MpV%QhH;KAgGM7Wp zXvlC~v93(7HQ>%7)=t(~>~fQD_e)V5LSuQZ?@d}h NZ_m|*8*<-C`w!*eb$$Q< delta 124 zcmZo@U}{*vsE}k3=IN_ou4lpk1Of~UcU6Cfe3a#2aFS+VD9K38pLkJaqswY$MuyEF zn1y)wnHl~A)iD9F5fC$Ob`;ppKkca8wKnh7cUAxZY=#~o diff --git a/sources/talk/20141224 The Curious Case of the Disappearing Distros.md b/sources/talk/20141224 The Curious Case of the Disappearing Distros.md index 5494804e39..3fe7cd788c 100644 --- a/sources/talk/20141224 The Curious Case of the Disappearing Distros.md +++ b/sources/talk/20141224 The Curious Case of the Disappearing Distros.md @@ -1,10 +1,12 @@ theol-l translating The Curious Case of the Disappearing Distros +关于消失的发行版的古怪情形。 ================================================================================ ![](http://www.linuxinsider.com/ai/828896/linux-distros.jpg) "Linux is a big game now, with billions of dollars of profit, and it's the best thing since sliced bread, but corporations are taking control, and slowly but systematically, community distros are being killed," said Google+ blogger Alessandro Ebersol. "Linux is slowly becoming just like BSD, where companies use and abuse it and give very little in return." +"Linux现在成为了一个大型的游戏,同时具有巨额的利润,这是有史以来最好的事情。但是公司企业进行了控制,于是缓慢而系统的社区发行版就逐渐被干掉了,",Google+的一个博主 Alessandro Ebersol说到。"Linux开始变得像BSD--一些公司使用和滥用但是没有任何回报--一样缓慢。" Well the holidays are pretty much upon us at last here in the Linux blogosphere, and there's nowhere left to hide. The next two weeks or so promise little more than a blur of forced social occasions and too-large meals, punctuated only -- for the luckier ones among us -- by occasional respite down at the Broken Windows Lounge. From 773bbe00ae685d694eae3cf92778df88cc0d1498 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sun, 8 Mar 2015 17:36:20 -0300 Subject: [PATCH 505/725] theo-l translating --- ...ct SSH server from brute force attacks using fail2ban.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md index 6397e82c7e..4b79e03cf8 100644 --- a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md +++ b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md @@ -1,7 +1,11 @@ +theo-l translating + How to protect SSH server from brute force attacks using fail2ban +如何使用fail2ban来保护SSH服务器避免暴力破解攻击。 ================ One common attack on SSH service is brute force attacks where a remote attacker indefinitely attempts to log in with different passwords. Of course there are arguments against password authentication for SSH, and alternative authentication mechanisms such as [public key authentication][1] or [two-factor authentication][2] exist to obsolete such attacks. Putting aside pros and cons of different authentication methods, let's consider the situation where password authentication is required. How would you protect your SSH server against brute-force attacks? +对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来进行无限地登录尝试。当然SSH存在参数来防备密码验证以及可用的验证机制,例如[公钥验证][1]或者[双重验证][2], [fail2ban][3] is a well-known open-source intrusion prevention framework on Linux that monitors various system log files (e.g., /var/log/auth.log or /var/log/secure) and automatically triggers various defensive actions upon detecting any suspicious activities. In fact, fail2ban can be quite useful to defend against brute force password guessing attacks on an SSH server. @@ -167,4 +171,4 @@ via: http://linoxide.com/tools/linux-compress-decompress-tools/ [1]:http://xmodulo.com/how-to-force-ssh-login-via-public-key-authentication.html [2]:http://xmodulo.com/two-factor-authentication-ssh-login-linux.html [3]:http://www.fail2ban.org/ -[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html \ No newline at end of file +[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html From e4de316b84d9580e2a366d64ef009aeca51fff80 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 9 Mar 2015 10:58:15 +0800 Subject: [PATCH 506/725] Finish the translation by ZTinoZ --- .../20150114 What is a good IDE for C or C++ on Linux.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {sources => translated}/share/20150114 What is a good IDE for C or C++ on Linux.md (88%) diff --git a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md b/translated/share/20150114 What is a good IDE for C or C++ on Linux.md similarity index 88% rename from sources/share/20150114 What is a good IDE for C or C++ on Linux.md rename to translated/share/20150114 What is a good IDE for C or C++ on Linux.md index 652f228367..32d7371d18 100644 --- a/sources/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/translated/share/20150114 What is a good IDE for C or C++ on Linux.md @@ -48,13 +48,13 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7519/15653583824_e412f2ab1f_c.jpg) -说到这,肯定照顾到所有的KDE粉丝,[KDevelop][11]会是你希望的答案。它拥有许多配置选项,如果你设法去征服KDevelop,那它就是你的。你们说我肤浅,但是我真的从来没有深入过它界面以外的层次了。But it's too bad for me as the editor itself packs quite a punch with a lot of navigation options and customizable shortcuts. 它的调试器也是相当高级,要去练习掌握。然而,这样的耐心是有回报的,就是能领会到这款灵活的IDE的全部能力。And it gets special credits for its amazing embedded documentation. +说到这,肯定照顾到所有的KDE粉丝,[KDevelop][11]会是你希望的答案。它拥有许多配置选项,如果你设法去征服KDevelop,那它就是你的。你们说我肤浅,但是我真的从来没有深入过除它界面以外的层次了,对于我来说编辑器本身就携带着大量的导航选项和可定制的快捷键简直是一个再糟糕不过的事了。它的调试器也是相当高级,要去练习掌握。然而,这样的耐心是有回报的,就是能领会到这款灵活的IDE的全部能力,并且由于它令人吃惊的嵌入式文件编制,你会给予它一种特殊的信任。 ### 9. CodeLite ### ![](https://farm9.staticflickr.com/8594/16250066446_b5f654e63f_c.jpg) -Finally, last for not least, [CodeLite][12] shows that you can take a traditional formula and still get something with its own feeling attached to it. If the interface really reminded me of Code::Blocks and Anjuta at first, I was just blown away by the extensive plugin library. Whether you want to diff a file, insert a copyright block, define an abbreviation, or push your work on Git, there is a plugin for you. If I had to nitpick, I would say that it lacks a few navigation shortcuts for my taste, but that's really it. +留在最后的不代表是最差的,[CodeLite][12]展现给你一种传统的编程规则却仍然能让你从它身上那特有的感觉上有所收获,即使它的界面一开始的确让我想到了Code::Blocks和Anjuta,只是不包括大量的插件库。无论你想要比较文件、插入一条版权块、定义缩略语或者用Git来工作,总有一款插件适合你。如果我不得不挑点毛病,我想说它缺乏一些符合我口味的导航快捷键,但这是真的。 最后,我希望这份清单能让你给自己最喜欢的语言探索到更多新的IDE。虽然Code::Blocks仍然是我的最爱,不过它有一些很强大的对手。当然我们也可以远离Linux上的IDE用文本编辑器去编写C/C++代码。所以如果你有什么其它的建议想法,在评论中让我们获悉。或者如果你想要我再说说关于一些其它语言的IDE,也可以评论里提出。 From 6248ed5c834e3584255c2f709cb5ca5ed506347e Mon Sep 17 00:00:00 2001 From: Ping Date: Mon, 9 Mar 2015 11:24:03 +0800 Subject: [PATCH 507/725] Translated by Ping. --- ...nd Maximum Supported RAM By Your System.md | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) rename {sources => translated}/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md (91%) diff --git a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md b/translated/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md similarity index 91% rename from sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md rename to translated/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md index 5761359df6..52b978dbc8 100644 --- a/sources/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md +++ b/translated/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md @@ -1,36 +1,34 @@ -Translating - -Linux Basics: How To Find Maximum Supported RAM By Your System +Linux基础:如何找出你的系统所支持的最大内存 ================================================================================ ![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2015/02/RAM-790x527.jpg) -Mostly, you will find maximum supported RAM by your system from the BIOS, Product catalog, or manuals. Here is the simple, yet useful trick, to find out maximum supported RAM using Dmidecode without opening the system chassis or referring the BIOS, product catalogs. +大多数情况下你可以从BIOS、产品目录或者干脆手动找出你的系统所持的最大内存。这里,我们介绍一种简单有用的技巧——使用Dmidecode来找出系统支持的最大内存,这样你就无需打开机箱或者参照BIOS和产品目录了。 -### What is Dmidecode? ### +### 什么是 Dmidecode? ### -As you may know, **Dmidecode** is a tool for dumping a computer’s DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system’s hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision. Using Dmidecode, you can retrieve this information without having to probe for the actual hardware. +就像你可能知道的一样, **Dmidecode**是一个将计算机DMI(又名SMBIOS)表的内容转换为可读格式的工具。这个表包含了系统硬件组件的介绍以及其他一些如序列号和IOS版本等有用的信息。使用Dmidecode你能够获取此项信息,而无需去探测真实的硬件。 -### Find out the maximum RAM supported by your system ### +### 找出你的系统所支持的最大内存 ### -Make sure you have installed dmidecode on your system. I think it will be automatically installed while installing your OS, but I am not sure though. +请确定你已经在系统中安装了dmidecode,我觉得你的操作系统应该已经自动安装过了,不过并不非常确定。 -**On Deb based system:** +**在基于Deb的系统中安装** sudo apt-get install dmidecode -**On RPM based system:** +**在基于RPM的系统中安装** sudo yum install dmidecode -**On SUSE/openSUSE:** +**在SUSE/openSUSE中安装** sudo zypper in dmidecode -Well, we installed dmidecode. Let us find out the maximum RAM supported. To do that, enter the following command: +好了,我们已经安装了dmidecode,接下来让我们找出支持的最大内存。输入以下命令: sudo dmidecode -t 16 -**Sample output:** +**输出样本** # dmidecode 2.12 SMBIOS 2.6 present. @@ -44,13 +42,13 @@ Well, we installed dmidecode. Let us find out the maximum RAM supported. To do t Error Information Handle: Not Provided Number Of Devices: 2 -As you see in the above output, my system will support RAM upto 16GB, and it has two RAM slots. Pretty easy, isn’t it? +就像你看到的,我的系统支持最大内存到16G,并且有两个内存插槽,简单吧? -Well, let us find out the currently installed RAM details. +接下来,让我们找出现在已经安装的内存的详细信息。 sudo dmidecode -t 17 -**Sample output:** +**输出样本** # dmidecode 2.12 SMBIOS 2.6 present. @@ -95,15 +93,15 @@ Well, let us find out the currently installed RAM details. Part Number: JM1066KSN-4G Rank: Unknown -As per the above output, I have installed one RAM in DIMM slot 1. The RAM size is **4GB**, and it’s type and speed is **DDR3** and **1067 MHz** respectively. +就像上边输出的一样,我在插槽1里边安装了一个内存条。内存大小为**4G**,类型为**DDR3**,速度为**1067 MHz**。 -Also, we can have the complete RAM details using the following commands. +同样的,我们可以通过下边命令得到完整的内存信息。 sudo dmidecode -t memory sudo dmidecode -t memory | less sudo dmidecode -t memory | more -**Sample output:** +**输出样本** # dmidecode 2.12 SMBIOS 2.6 present. @@ -157,11 +155,11 @@ Also, we can have the complete RAM details using the following commands. Part Number: JM1066KSN-4G Rank: Unknown -Curious to know the complete system details such as Motherboard, Memory, Bios etc? Well, enter the following command to get all details. +如果你好奇想要知道整个系统的详细信息,例如主板、内存、BIOS等,那么可以输入以下命令来获取。 sudo dmidecode -**Sample output:** +**输出样本** # dmidecode 2.12 SMBIOS 2.6 present. @@ -683,16 +681,16 @@ Curious to know the complete system details such as Motherboard, Memory, Bios et Handle 0x0031, DMI type 127, 4 bytes End Of Table -That’s it. Happy weekend. Stay happy! +好了,就是这样。周末愉快! -------------------------------------------------------------------------------- via: https://www.unixmen.com/linux-basics-how-to-find-maximum-supported-ram-by-your-system/ -作者:[SK][a] -译者:[译者ID](https://github.com/译者ID) +作者:[SK][0] +译者:[mr-ping](https://github.com/mr-ping) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:https://www.unixmen.com/author/sk/ +[0]:https://www.unixmen.com/author/sk/ From bebd9215a83260fd500e87c6aa633fcec3c62283 Mon Sep 17 00:00:00 2001 From: theo-l Date: Wed, 11 Mar 2015 18:57:24 -0300 Subject: [PATCH 508/725] translating --- ...rotect SSH server from brute force attacks using fail2ban.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md index 4b79e03cf8..e80f3b75ec 100644 --- a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md +++ b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md @@ -5,7 +5,7 @@ How to protect SSH server from brute force attacks using fail2ban ================ One common attack on SSH service is brute force attacks where a remote attacker indefinitely attempts to log in with different passwords. Of course there are arguments against password authentication for SSH, and alternative authentication mechanisms such as [public key authentication][1] or [two-factor authentication][2] exist to obsolete such attacks. Putting aside pros and cons of different authentication methods, let's consider the situation where password authentication is required. How would you protect your SSH server against brute-force attacks? -对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来进行无限地登录尝试。当然SSH存在参数来防备密码验证以及可用的验证机制,例如[公钥验证][1]或者[双重验证][2], +对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来进行无限地登录尝试。当然SSH存在参数来防备密码验证以及可用的验证机制,例如[公钥验证][1]或者[双重验证][2],存在此类过时的攻击. 将不同的验证方法的优劣处先放在一边,先考虑一下强制密码验证的情形.你是如何保护你的SSH服务器免遭暴力破解攻击的呢? [fail2ban][3] is a well-known open-source intrusion prevention framework on Linux that monitors various system log files (e.g., /var/log/auth.log or /var/log/secure) and automatically triggers various defensive actions upon detecting any suspicious activities. In fact, fail2ban can be quite useful to defend against brute force password guessing attacks on an SSH server. From aa75bf6c1aeaf88889b2a9f1ee7399b7e73258f4 Mon Sep 17 00:00:00 2001 From: theo-l Date: Mon, 9 Mar 2015 02:20:18 -0300 Subject: [PATCH 509/725] translated --- ...from brute force attacks using fail2ban.md | 174 ------------------ ...from brute force attacks using fail2ban.md | 165 +++++++++++++++++ 2 files changed, 165 insertions(+), 174 deletions(-) delete mode 100644 sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md create mode 100644 translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md diff --git a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md deleted file mode 100644 index e80f3b75ec..0000000000 --- a/sources/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md +++ /dev/null @@ -1,174 +0,0 @@ -theo-l translating - -How to protect SSH server from brute force attacks using fail2ban -如何使用fail2ban来保护SSH服务器避免暴力破解攻击。 -================ - -One common attack on SSH service is brute force attacks where a remote attacker indefinitely attempts to log in with different passwords. Of course there are arguments against password authentication for SSH, and alternative authentication mechanisms such as [public key authentication][1] or [two-factor authentication][2] exist to obsolete such attacks. Putting aside pros and cons of different authentication methods, let's consider the situation where password authentication is required. How would you protect your SSH server against brute-force attacks? -对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来进行无限地登录尝试。当然SSH存在参数来防备密码验证以及可用的验证机制,例如[公钥验证][1]或者[双重验证][2],存在此类过时的攻击. 将不同的验证方法的优劣处先放在一边,先考虑一下强制密码验证的情形.你是如何保护你的SSH服务器免遭暴力破解攻击的呢? - -[fail2ban][3] is a well-known open-source intrusion prevention framework on Linux that monitors various system log files (e.g., /var/log/auth.log or /var/log/secure) and automatically triggers various defensive actions upon detecting any suspicious activities. In fact, fail2ban can be quite useful to defend against brute force password guessing attacks on an SSH server. - -In this guide, I will demonstrate **how to install and configure fail2ban to protect an SSH server against brute force attacks from a remote IP address**. - -### Install Fail2ban on Linux - -To install fail2ban on CentOS or RHEL, first [set up EPEL repository][4], and then run the following command. - - $ sudo yum install fail2ban - -To install fail2ban on Fedora, simply run: - - $ sudo yum install fail2ban - -To install fail2ban on Ubuntu, Debian or Linux Mint: - - $ sudo apt-get install fail2ban - -### Configure Fail2ban for SSH Server - -Now you are ready to configure fail2ban to harden your SSH server. You need to edit the configuration file at /etc/fail2ban/jail.conf. The configuration file contains "DEFAULT" section where you define default parameters for all monitored services, and service-specific sections where you define any service-specific jails (e.g., SSH, Apache, etc) to overwrite default parameters. - -In the service-specific jail sections (somewhere after [DEFAULT] section), you need to define [ssh-iptables] section, where you define SSH-specific jail configurations. Actual IP address banning is done by iptables. - -The following is an example of /etc/fail2ban/jail.conf which contains "ssh-iptables" jail configuration. Of course there could be other application-specific jails depending on your needs. - - $ sudo vi /etc/fail2ban/jail.local - -``` -[DEFAULT] -# a space delimited list of IP addresses, CIDR prefixes, or DNS hostnames -# to bypass fail2ban protection -ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24 - -# number of seconds during which a client host is blocked -bantime = 86400 - -# number of failures before a client host is blocked -maxretry = 5 - -# number of seconds within which "maxentry" failures result in banning -findtime = 600 - -mta = sendmail - -[ssh-iptables] -enabled = true -filter = sshd -action = iptables[name=SSH, port=ssh, protocol=tcp] -sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com] -# for Debian-based distros -logpath = /var/log/auth.log -# for Red Hat-based distros -logpath = /var/log/secure -# ssh-specific max-retry threshold -maxretry = 3 -``` - -According to the above configuration, fail2ban will automatically ban any remote IP address from which there have been at least 3 failed login attempts within the last 10 minutes. Once banned, the offending IP address will remain blocked for 24 hours. Such an event will be notified by sendemail to a recipient email address. - -Once the configuration file is ready, restart fail2ban service as follows. - -On Debian, Ubuntu or CentOS/RHEL 6: - - $ sudo service fail2ban restart - -On Fedora or CentOS/RHEL 7: - - $ sudo systemctl restart fail2ban - -To verify fail2ban is running successfully, run fail2ban-client command with "ping" argument. If fail2ban service is running okay, you should see "pong" as a response. - - $ sudo fail2ban-client ping - Server replied: pong - -### Test Protection against SSH Brute-Force Attacks with Fail2ban - -To test whether fail2ban works, try to SSH to the server using incorrect passwords to simulate a brute-force attack. In the mean time, monitor /var/log/fail2ban.log, which is logging any interesting events that are happening in fail2ban. - - $ sudo tail -f /var/log/fail2ban.log - -![](https://farm8.staticflickr.com/7550/15882084127_fccf9ca7b7_c.jpg) - -According to the log file above, fail2ban has banned an IP address 192.168.1.8, upon detecting multiple failed SSH login attempts from the IP address. - -### Check Fail2ban Status and Unban Blocked IP Addresses - -As fail2ban's "ssh-iptables" jail uses iptables to block offending IP addresses, you can easily verify the ban by checking current iptables rules as follows. - - $ sudo iptables --list -n - -``` -Chain INPUT (policy ACCEPT) -target prot opt source destination -fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 - -Chain FORWARD (policy ACCEPT) -target prot opt source destination - -Chain OUTPUT (policy ACCEPT) -target prot opt source destination - -Chain fail2ban-SSH (1 references) -target prot opt source destination -DROP all -- 192.168.1.8 0.0.0.0/0 -RETURN all -- 0.0.0.0/0 0.0.0.0/0 -``` - -If you want to unblock the IP address from fail2ban, you can also use iptables command: - - $ sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP - -While you can check and manage fail2ban's IP blocklist manually with iptables command like above, a proper way is in fact to use fail2ban-client command-line tool. This tool allows you to manage not only "ssh-iptables" jail, but also any other types of fail2ban jails in a unified command-line interface. - -To check fail2ban status (which will show a list of currently active jails): - - $ sudo fail2ban-client status - -To check the status of a particular jail (e.g., ssh-iptables): - - $ sudo fail2ban-client status ssh-iptables - -The above command will show a list of banned IP addresses. - -![](https://farm8.staticflickr.com/7497/16067847655_021d23e320_b.jpg) - -To unban a particular IP address: - - $ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8 - -![](https://farm8.staticflickr.com/7465/16065915571_b215a8b344_b.jpg) - -Note that if you stop fail2ban, all blocked IP addresses will be unblocked. When you restart fail2ban, it will find a list of offending IP addresses from /var/log/secure (or /var/log/auth.log), and re-ban those IP addresses if the elapsed time of the offenses are still within ban time. - -### Set Fail2ban to Auto-start on Boot - -Once you haved tested fail2ban successfully, the last step is to enable fail2ban to launch automatically upon powering on your server. On Debian-based distributions, fail2ban auto-start is enabled by default. On Red Hat-based distributions, enable auto-start as follows. - -On CentOS/RHEL 6: - - $ sudo chkconfig fail2ban on - -On Fedora or CentOS/RHEL 7: - - $ sudo systemctl enable fail2ban - -### Summary - -In this tutorial, I demonstrated how to install and configure fail2ban to protect an SSH server. While fail2ban can mitigate brute-force password guessing attacks, please note that it cannot protect SSH servers against sophisticated distributed brute-force campaigns, where an attacker bypasses fail2ban by using many thousands of bot-controlled IP addresses. - ------------ - -via: http://linoxide.com/tools/linux-compress-decompress-tools/ - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/nanni -[1]:http://xmodulo.com/how-to-force-ssh-login-via-public-key-authentication.html -[2]:http://xmodulo.com/two-factor-authentication-ssh-login-linux.html -[3]:http://www.fail2ban.org/ -[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html diff --git a/translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md new file mode 100644 index 0000000000..599fcfceeb --- /dev/null +++ b/translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md @@ -0,0 +1,165 @@ +如何使用fail2ban来保护SSH服务器避免暴力破解攻击。 +================ +对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来进行无限地登录尝试。当然SSH存在参数来防备密码验证以及可用的验证机制,例如[公钥验证][1]或者[双重验证][2],来解决这类攻击. 将不同的验证方法的优劣处先放在一边,先考虑一下强制密码验证的情形.你是如何保护你的SSH服务器免遭暴力破解攻击的呢? + +[fail2ban][3]是linux上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如/var/log/auth.log 或者 /var/log/secure)并根据检测到的任何可疑的行为自动触发不同的防御活动。实际上,fail2ban在防御对SSH服务器的暴力密码破解上非常有用。 + +在该指导教程中,我会演示**如何安装并配置fail2ban来保护SSH服务器避免来自远程IP地址的暴力攻击** + +###在linux上安装Fail2ban + +为了在CentOS 或 RHEL上安装fail2ban,首先[设置EPEL仓库][4],然后运行以下命令。 + + $ sudo yum install fail2ban + +在Fedora上安装fail2ban,简单地运行以下命令: + + $ sudo yum install fail2ban + +在ubuntu,Debian或 Linux Mint上安装fail2ban: + + $ sudo apt-get install fail2ban + +### 为SSH服务器配置Fail2ban + +现在你已经准备好了通过配置fail2ban来加强你的SSH服务器。你需要编辑其配置文件/etc/fail2ban/jail.conf。 在配置文件的“DEFAULT[默认]”区,你可以在此定义所有受监控的服务的默认参数,另外在特定的服务器,你可以定义任何特定服务键入来覆载默认的参数配置(例如SSH,Apache等)。 + +在特定服务监狱区(在[DEFAULT(默认)]区后面的地方),你需要定义[ssh-iptables]区,这里用来定义SSH相关的监狱配置。禁止真正的IP地址是通过iptables完成的。 + +下面是一个包含“ssh-iptables”监狱配置的/etc/fail2ban/jail.conf的文件样例。当然根据你的需要,你也可以指定其他的应用监狱。 + + $ sudo vi /etc/fail2ban/jail.local + +``` +[DEFAULT] +# a space delimited list of IP addresses, CIDR prefixes, or DNS hostnames +# to bypass fail2ban protection +ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24 + +# number of seconds during which a client host is blocked +bantime = 86400 + +# number of failures before a client host is blocked +maxretry = 5 + +# number of seconds within which "maxentry" failures result in banning +findtime = 600 + +mta = sendmail + +[ssh-iptables] +enabled = true +filter = sshd +action = iptables[name=SSH, port=ssh, protocol=tcp] +sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com] +# for Debian-based distros +logpath = /var/log/auth.log +# for Red Hat-based distros +logpath = /var/log/secure +# ssh-specific max-retry threshold +maxretry = 3 +``` + +根据上述配置,fail2ban会自动禁止在最近10分钟内有超过3次访问尝试失败的任意IP地址1。一旦被禁,这个IP地址将会保持在24小时内被持续阻塞。这个事件会通过sendemail发送到一个接收邮件地址进行通知。 + +一旦配置文件准备就位,按照以下方式重启fail2ban服务。 + +在 Debian, Ubuntu 或 CentOS/RHEL 6: + + $ sudo service fail2ban restart + +在 Fedora 或 CentOS/RHEL 7: + + $ sudo systemctl restart fail2ban + +为了验证fail2ban成功运行,使用参数'ping'来运行fail2ban-client 命令。 如果fail2ban服务正常运行,你可以看到“pong(膨)”作为响应。 + + $ sudo fail2ban-client ping + Server replied: pong + +### 测试fail2ban 保护SSH免遭暴力破解攻击 + +为了测试fail2ban是否能正常工作,尝试通过使用错误的密码来用SSH连接到服务器模拟一个暴力破解攻击。与此同时,监控/var/log/fail2ban.log--该文件记录在fail2ban中发生的任何敏感事件。 + + $ sudo tail -f /var/log/fail2ban.log + +![](https://farm8.staticflickr.com/7550/15882084127_fccf9ca7b7_c.jpg) + +根据上述的日志文件,Fail2ban通过检测IP地址的多次失败登录尝试,禁止了一个IP地址192.168.1.8。 + +###检查fail2ban状态并解禁被锁住的IP地址 +由于fail2ban的“ssh-iptables”监狱使用iptables来阻塞问题IP地址,你可以通过以下方式来检测当前iptables来验证禁止规则。 + + $ sudo iptables --list -n + +``` +Chain INPUT (policy ACCEPT) +target prot opt source destination +fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 + +Chain FORWARD (policy ACCEPT) +target prot opt source destination + +Chain OUTPUT (policy ACCEPT) +target prot opt source destination + +Chain fail2ban-SSH (1 references) +target prot opt source destination +DROP all -- 192.168.1.8 0.0.0.0/0 +RETURN all -- 0.0.0.0/0 0.0.0.0/0 +``` + +如果你想要从fail2ban中解锁某个IP地址,你可以使用iptables命令: + $ sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP + +当然你可以使用上述的iptables命令手动地检验和管理fail2ban的IP阻塞列表,但实际上有一个适当的方法就是使用fail2ban-client命令行工具。这个命令不仅允许你对"ssh-iptables"监狱进行管理,也可以通过一个标准的命令行接口对其他任何的fail2ban监狱类型。 + +为了检验fail2ban状态(会显示出当前活动的监狱列表): + + $ sudo fail2ban-client status + +为了检验一个特定监狱的状态(例如ssh-iptables): + + $ sudo fail2ban-client status ssh-iptables + +上面的命令会显示出被禁止IP地址列表。 + +![](https://farm8.staticflickr.com/7497/16067847655_021d23e320_b.jpg) + +为了解锁特定的IP地址: + + $ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8 + +![](https://farm8.staticflickr.com/7465/16065915571_b215a8b344_b.jpg) + +注意,如果你停止了Fail2ban,那么所有的IP地址都会被解锁。当你重启Fail2ban,它会从/etc/log/secure(或 /var/log/auth.log)中找到异常的IP地址列表,如果这些异常对象的流逝时间仍然在禁止时间内,那么Fail2ban会重新将这些IP地址禁止。 +### Set Fail2ban to Auto-start on Boot + +一旦你成功地测试了fail2ban之后,最后一个步骤就是在你的服务器上让其在开机时自动启动。在基于Debian的发行版中,fail2ban已经默认让自动启动生效。在基于Red-Hat的发行版中,按照下面的方式让自动启动生效。 + +在 CentOS/RHEL 6中: + + $ sudo chkconfig fail2ban on + +在 Fedora 或 CentOS/RHEL 7: + + $ sudo systemctl enable fail2ban + +### 总结 + +在该教程中,我演示了如何安装并配置fail2ban来保护一个SSH服务器。当然fail2ban可以缓解暴力密码攻击,但是请注意,这并不能保护SSH服务器避免来自复杂分布的暴力破解组织,这些攻击者通过使用成千上万个机器控制的IP地址来绕过fail2ban的防御机制。 +----------- + +via: http://linoxide.com/tools/linux-compress-decompress-tools/ + +作者:[Dan Nanni][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://xmodulo.com/how-to-force-ssh-login-via-public-key-authentication.html +[2]:http://xmodulo.com/two-factor-authentication-ssh-login-linux.html +[3]:http://www.fail2ban.org/ +[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html From 9bde39c07d4b8782171df6ea538182fc1d26c935 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 9 Mar 2015 16:28:48 +0800 Subject: [PATCH 510/725] =?UTF-8?q?20150309-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...roid Notifications to The GNOME Desktop.md | 38 +++++++ ...n source software in the business world.md | 85 ++++++++++++++++ ...Introduction To FreeBSD For Linux Users.md | 98 +++++++++++++++++++ ...t Tools To Connect To Your Linux Server.md | 81 +++++++++++++++ 4 files changed, 302 insertions(+) create mode 100644 sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md create mode 100644 sources/talk/20150309 10 best uses for open source software in the business world.md create mode 100644 sources/talk/20150309 Comparative Introduction To FreeBSD For Linux Users.md create mode 100644 sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md diff --git a/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md b/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md new file mode 100644 index 0000000000..0a67dab449 --- /dev/null +++ b/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md @@ -0,0 +1,38 @@ +New App Brings Android Notifications to The GNOME Desktop +================================================================================ +![Fancy seeing your Android alerts here? You can.](http://www.omgubuntu.co.uk/wp-content/uploads/2015/02/Screen-Shot-2015-02-24-at-17.47.48.png) +Fancy seeing your Android alerts here? You can. + +**You’ll shortly be able to view your Android notifications on the GNOME desktop thanks to a new application in development.** + +The new project is called ‘Nuntius’ and lets notifications received on an Android phone appear on the GNOME desktop. It’s with GNOME 3.16 and its (wonderfully) [redesigned notification system][1] that the app and its features will be used by more. + +The app, which developers are hoping will be ready in time for this month’s release of GNOME 3.16, will work over Bluetooth to ensure that nothing is passed to external servers or stored online. This does mean that your phone will need to be in a certain proximity to your GNOME desktop for the feature to work. + +It also isn’t yet possible to reply to a text message or act on a news alert. + +The development team do caution that **this is an early release** and those planning on diving in to use it should expect minimum functionality for now. + +The mobile app required to see Android notifications in GNOME’s new notification shade is already available [from the Google Play Store][2] and the GNOME application is already available in the Fedora repos. + +The developers have open-sourced both the Android app and the GNOME application receiver and hosted them (where else) on GitHub. + +A similar tool [has been available for KDE desktops][3] – ‘KDE Connect’ – for a year or two, while the ever-gaining Pushbullet offers similar features on Windows, Mac and Linux desktops for iOS and Android platforms using Google Chrome. + +- [Nuntius for Android & GNOME on GitHub][4] + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/03/new-app-brings-android-notifications-to-the-gnome-desktop + +作者:[Joey-Elijah Sneddon][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:http://www.omgubuntu.co.uk/2015/02/4-reason-why-gnome-3-16-might-be-the-best-version-yet-gallery +[2]:https://play.google.com/store/apps/details?id=org.holylobster.nuntius +[3]:http://www.omgubuntu.co.uk/2014/06/kde-connect-android-notifications-linux-desktop +[4]:https://github.com/holylobster \ No newline at end of file diff --git a/sources/talk/20150309 10 best uses for open source software in the business world.md b/sources/talk/20150309 10 best uses for open source software in the business world.md new file mode 100644 index 0000000000..b0c4475652 --- /dev/null +++ b/sources/talk/20150309 10 best uses for open source software in the business world.md @@ -0,0 +1,85 @@ +10 best uses for open source software in the business world +================================================================================ +> Open source offers some compelling benefits for businesses large and small -- but you might be surprised at some of the ways it's being used. + +![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) + +Certain inevitabilities occur in technology. For instance, open source software will make its way into your business. Ten years ago, this could easily have been called into question. Now? There's no way to avoid it -- and there's no reason to. With so many powerful (and necessary) pieces of technology, open source has become, in various cases, the savior of tech. But what areas of your business are best suited for open source? The answer to that question is, of course, will be different from one company to the next. But some applications can apply in almost every circumstance. + +Let's take a look at 10 possible best-case uses for open source software that can help make your business grow, bring you a level of flexibility and reliability you haven't experienced, or just save you a welcome percentage of your budget. + +### 1: Server software ### + +If you're still battling Microsoft's IIS platform, you need to experience Apache. The flagship open source web server software is one of the most widely used on the planet. It's free, incredibly reliable, easy to manage, and doesn't require the enormous overhead needed for IIS. But open source isn't limited to just web servers. If you need SMB sharing across your company, consider Samba. Samba 4 even integrates with Active Directory, so you don't have to worry about setting up separate user accounts on the Samba server. + +### 2: Development ### + +Developing with open source is a no-brainer. PHP, Rails, Perl -- there are as many languages to develop with as there are tools (from IDEs to bug tracking). There are a lot of options for developing for open source or with open source tools (as are there with proprietary development). The biggest difference between open source and proprietary is the access you have to the software code. Within the world of FOSS (free open source software) the code is readily available. For many developers, the Linux operating system has everything they need to develop, built right in (especially those who code without a full-blown IDE). If you do require GUI development tools, open source has you covered. + +### 3: Security ### + +The route to security is a challenging one, but there are many paths to success. You can opt for the "security in a box" solution and go with the likes of Cisco (a solid solution) or you can craft your security to perfectly fit your needs with the likes of iptables. Yes, the open source security route will take a bit more time to deploy (with a much higher learning curve), but the end results are generally incredible. This doesn't even address the idea that using open source on the desktop is, generally speaking, a more secure platform than most proprietary systems. Deploy Linux on the desktops and your security woes will drop dramatically. + +### 4: Desktops ### + +This area is where most of the pushback happens. However, you must take into consideration the fact that the daily workflow has undergone a major paradigm shift. Most of what we do now is done via a web browser. So why not deploy Linux on the desktop? Not only does it work with the majority of today's tasks, it will do so without suffering from viruses, malware, and updates that cripple a system. It's not perfect -- what platform is? But it's solid, and in the end, it can save you money. That's a win-win. + +### 5: Workflow ### + +Every business depends upon workflow. For some businesses, a smooth workflow depends upon tools. Open source has this arena covered. CRM, HRM, ERP, BI, BPM... you name it, open source handles just about every possible acronym you can think of -- and it does it very well. With the likes of [Pentaho][1], [Collabtive][2], and [SugarCRM][3], open source can keep up with closed source tools any day. + +### 6: Collaboration ### + +Without the ability to work together on projects, your staff wouldn't be able to get the job done. So the collaboration tools you choose are crucial. You'll find plenty of quality collaboration tools within the world of open source. [Cyn.in community edition][4], [Zimbra Open Source Edition][5], and [Kolab][6] are just three examples of the excellent collaboration tools that exist within the open source world. + +### 7: Big data ### + +When it comes to big data, open source can't be matched. Thanks to the likes of [SUSE][7], big data and open source now go hand in hand. Innovations like in-memory data and live kernel patching make open source an ideal solution for big data. It can be perfectly tuned to meet the massive demands big data places on the platform. Closed source software can't touch this level of flexibility. + +### 8: Cloud ### + +The major players in the cloud are open source. [Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- they all get it and know that open source is the best solution for cloud deployments. But if you don't want to go with the larger companies, there are always up and coming tools like [ownCloud][12], where you can either take advantage of its hosted cloud solutions or build your own. + +### 9: Multimedia ### + +If your company does podcasting or video for PR, open source has you covered. With tools like [Audacity][14] and [OpenShot][15], you can do just about anything with audio or video you need -- and do so on the cheap. In fact, you'll be hard-pressed to find a better podcasting tool than Audacity or an easier-to-use video editor than OpenShot. Both pieces of software do an outstanding job of creating professional-quality results without the steep learning curves or the high prices often associated with closed source tools + +### 10: E-commerce ### + +If your business sells products online, you'd be remiss not to give a tool like [PrestaShop][16] a try. PrestaShop is, hands down, one of the most powerful e-commerce solutions available -- regardless of license. With just about every feature you could possible want (and some you probably haven't even thought of), the open source platform excels at e-commerce on every level. + +### FOSS for business ### + +Open source is no longer hanging around the periphery of the business conversation. In many instances, FOSS leads and dominates that conversation. If you've been looking for areas to consider deploying open source solutions, look no further than these 10. + +### Your turn ### + +Have you added open source software to your business? If so, in what way? + +-------------------------------------------------------------------------------- + +via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ + +作者:[Jack Wallen][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.techrepublic.com/search/?a=jack+wallen +[1]:http://community.pentaho.com/ +[2]:http://collabtive.o-dyn.de/ +[3]:http://www.sugarcrm.com/ +[4]:http://cynapse.com/cyn-in/ +[5]:https://www.zimbra.com/open-source +[6]:http://kolab.org/ +[7]:http://www.suse.org/ +[8]:http://www.redhat.com/ +[9]:http://www.ubuntu.com/ +[10]:http://www.suse.com/ +[11]:http://aws.amazon.com/ec2/ +[12]:http://www.rackspace.com/cloud +[13]:https://owncloud.org/ +[14]:http://audacity.sourceforge.net/ +[15]:http://www.openshot.org/ +[16]:https://www.prestashop.com/ \ No newline at end of file diff --git a/sources/talk/20150309 Comparative Introduction To FreeBSD For Linux Users.md b/sources/talk/20150309 Comparative Introduction To FreeBSD For Linux Users.md new file mode 100644 index 0000000000..d29a75cb69 --- /dev/null +++ b/sources/talk/20150309 Comparative Introduction To FreeBSD For Linux Users.md @@ -0,0 +1,98 @@ +Comparative Introduction To FreeBSD For Linux Users +================================================================================ +![](https://1102047360.rsc.cdn77.org/wp-content/uploads/2015/03/FreeBSD-790x494.jpg) + +### Introduction ### + +BSD was originally derived from UNIX and currently, there are various number of Unix-like operating systems descended from the BSD. While, FreeBSD is the most widely used open source Berkeley Software Distribution (BSD distribution). As it is implicitly said it is a free and open source Unix-like-operating system and a public server platform. FreeBSD source code is generally released under a permissive BSD license. It is true that it has similarities with Linux but we cannot deny that they differs in other points. + +The remainder of this article is organized as follows: the description of FreeBSD will be treated in our first section. The similarities between FreeBSD and Linux will be briefly described in the second section. While their differences will be discussed in the third section. And a comparison of their features will be summarized in our last section. + +### FreeBSD description ### + +#### History #### + +- The first version of FreeBSD was released in 1993, while its first CD-ROM distributed was FreeBSD1.0 on December 1993. Then, FreeBSD 2.1.0 was released in 1995 which gained the satisfaction of all users. Actually, many IT companies use FreeBSD and are satisfied where we can list those companies: IBM, Nokia, NetApp and Juniper Networks. + +#### License #### + +- Concerning its license, FreeBSD is released under various source licenses. Its newest code called Kernel is released under the two-clause BSD license, offering the possibility to use and redistribute FreeBSD with absolute freedom. Other codes are released three- and four-clause BSD license and some others are released under GPL and CDDL. + +#### Users #### + +- One of the important feature of FreeBSD, we can mention the various categories of its users. In fact, it is possible to use FreeBSD as a mail server, web server, FTP server and as a router due to the significant set of server-related software accompanied with it. Furthermore, ARM, PowerPC and MIPS are supported by FreeBSD so it is possible to use x86 and s86-64. + +### FreeBSD and Linux similarities ### + +FreeBSD and Linux are two free and open source systems. Indeed, their users can easily check and modify the source code with an absolute freedom. To add, FreeBSD and Linux, both of them are derived from Unix.-like because they have a kernel, internals, and libraries programmed using algorithms derived from historic AT&T Unix. While FreeBSD’s roots are similar to Unix systems, Linux is released as a free Unix-like option. Various tools and applications can be found either in FreeBSD or in Linux in fact, they almost share the same functionality. + +Furthermore, FreeBSD can run big number of Linux applications. It has a Linux compatibility layer that can be installed. This Linux compatibility layer can be installed while compiling FreeBSD with AAC Compact Linux or downloading compiled FreeBSD systems with a Linux compatibility program such as: aac_linux.ko. Which is not the same case with Linux, Linux cannot run FreeBSD software. + +At the end, we can mention that both of them have the same goal but have also some differences which we will outline in the next section. + +### FreeBSD and Linux differences ### + +Currently, no criteria of choice between FreeBSD and Linux is clear for most users. Since, they share almost the same applications. Those two operating systems are as mentioned previously UNIX-like. + +In this section, we will list the most important differences of those two systems. + +#### License #### + +- The first difference point between those two compared systems consist on their license. To start by Linux license, it is released under the GPL license which offers the possibility to view, distribute and change the source code with an absolute freedom. The GPL license helps users to prevent the distribution of binary-only source. Which is the case with FreeBSD, which is licensed under BSD license. This kind of license is more restrictive and easily allows the distribution of binary-only source. The BSD license is more permissive that the GPL since no derivative work is required to maintain the licensing terms. Means any user can use, distribute and modify the code without need to have the previous version of code before changing made. They only need to have the original license of BSD. +- Depending on the needs of each user, a selection can be made between those two types of license. Starting by BSD license which is more preferred by many users due to its special features. In fact, this license gives the possibility to sell each software licensed under it and retain the source code. Passing now to the GPL license, which requires some care of each user has a software released under it. +- To be able to choose between those two software, it is required to understand the licensing of both of them to more understand the methodology used in their development, to distinguish between their features and know which one will fit user’s need. + +#### Control #### + +- Since FreeBSD and Linux are released under two different type of license, the Linux Torvalds control the Linux kernel which is not the same case with FreeBSD which is not controlled. Personally, I prefer to use FreeBSD instead of Linux since it is an absolute free software, no control permission exists. But it is not enough there is other differences between Linux and FreeBSD, help you to choose between both of them. As an advice don’t choose one of them, follow us and then give us your choice. + +#### Operating system #### + +- Linux concentrates only on the kernel system which is not the case with FreeBSD while the whole operating system is maintained. The kernel and a set of software, some of them are developed by the FreeBSD team, are maintained as one unit. Indeed, the FreeBSD developers have the possibility to manage the essential operating systems remotely and efficiently. +- With Linux, there is some difficulties while managing a system. Since, the different components maintained will be from different sources so the Linux developers need to assemble them into groups having the same functionality. +- FreeBSD and Linux both of them give the possibility to have a big set of optional software and distributions but they differ on the way they are managed. With FreeBSD, they are managed together while with Linux they will be maintained separately. + +#### Hardware support #### + +- Concerning the hardware support, Linux is better than FreeBSD. It doesn’t mean that FreeBSD hasn’t the capability to support hardware as Linux. They differ just on the manner. It depends on your need as usual. So if you are searching for the newest solution, the FreeBSD will fit your needs but if you are looking for greatest graphs, it is better to use Linux. + +#### FreeBSD origin Vs Linux origin #### + +- The origin of each system is also another point of distinction between both of them. As I said previously Linux is an alternative of the operating system Unix, written by Linus Trovalds and assisted by a special group of hackers across the Net. Linux has all the needed features in a modern Unix, such as virtual memory, shared libraries, demand loading, proper memory management and many others. It is released under the General Public License. +- FreeBSD also shared many important features of its Unix heritage. FreeBSD as a type of the Berkeley Software Distribution, the distribution of the Unix developed at the University of California. The most important reason under developing BSD is to replace the AT&T operating system by an open source alternative giving the user the ability to use BSD without carry about the obtaining of the AT&T license. +- The problem of licensing, is the most important worry of developers. They try to offer the maximum open source clone of Unix. Which influences the choice of users regarding the degree of open source of each system as FreeBSD gives more freedom than Linux regarding its use since it is released under BSD license. + +#### Supported Package #### + +- From the user’s perspective, another difference between our two compared systems, is their availability and support of the packaged software and source installed software. The Linux distributions provide just the pre-compiled binary packages which is not the same case with FreeBSD, which has the pre-built packages and the build system for the compilation and installation through their available open source. Due to its ports, FreeBSD gives you the possibility to choose between the default making of pre-compiled packages and your ability to customize your software while it is compiled. +- Those ports enable you to build all the software available with FreeBSD. Furthermore, there is an hierarchy of organization all of them due to the directories /usr/ports where you can find the location of the source files and some documentation about the way to use FreeBSD correctly. +- The ports as mentioned give the possibility produce the packages version of software. Instead of having just the pre-compiled packages using Linux, FreeBSD gives you the possibility to have the source-built and the pre-packages software. You can manage your system using the two installation methods. + +#### FreeBSD Vs Linux common Tools #### + +- A huge number of common tools are available while using FreeBSD and are fully own made by the FreeBSD team. In contrast, the Linux tools are from the GNU that is why there is some control during their usage. +- The fact that FreeBSD is released under BSD license is so beneficial and useful. Since, you have the ability to maintain the core operating system, control the development of these applications. Same of those tools are similar to BSD and Unix tools from where they were derived which is not the same case with GNU suite, which want to just make them less backwards compatible. + +#### The Standard Shell #### + +- The tcsh shell is used by default with FreeBSD. Which is an evaluated version fo csh. Since, the FreeBSD is released under the BSD license, it is not recommended to use the bash shell which is a GNU component. The only difference between bash and tcsh shell consists on the scripting feature which can’t be made by tcsh. Indeed, the sh shell is more recommended for the FreeBSD use since it is more reliable and prevents some issues of scripting can be occurred using the tcsh or csh shell. + +#### A More Stratified Filesystem #### + +- As it was mentioned previously, base operating system and optional components can be easily distinguished using the FreeBSD system. Which causes some specification of their organization. In Linux, /bin, /sbin, /usr/bin, or usr/sbin are the directories for executable systems. With FreeBSD it is not the case. There are some additional specifications concerning their organization. The base system are putted in one of the directories mentioned above while the ports and packages are placed in /usr/local/bin or /usr/local/sbin. This methodology helps to recognize and distinguish between an application considered as a base system or a port. + +### Conclusion ### + +FreeBSD and Linux those two free and open source systems, share various similarities but they also differ in several points. The list giving above isn’t given to say that one of them is better than the other. In fact, FreeBSD and Linux, each one of them has its features and specifications that make it a special regarding the other. And you what is your opinion? Have you already used one on them or both? If yes what is your feedback and if no after reading our description what do you think? Sound off and give us and the fellow readers your opinion. + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/comparative-introduction-freebsd-linux-users/ + +作者:[anismaj][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/anis/ \ No newline at end of file diff --git a/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md b/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md new file mode 100644 index 0000000000..550d373d65 --- /dev/null +++ b/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md @@ -0,0 +1,81 @@ +List Of Free Windows SSH Client Tools To Connect To Your Linux Server +================================================================================ +You have Windows as operating system and you need to connect to Linux server to transfer files from Linux to Windows and inversely. So you need to have Secure Shell known as SSH. In fact, SSH is a network protocol which enables you to connect to Linux and Unix servers over the network. It uses public key cryptography to authenticate the remote computer. You can use SSH by several ways, either by using it automatically or by using a password authentication to log in. + +This article provides a list of SSH clients let you to connect SSH to your Linux servers. + +let’s start. + +### PuTTY ### + +**PuTTY** is the most famous SSH and telnet client, developed originally by Simon Tatham for the Windows platform. PuTTY is open source software that is available with source code and is developed and supported by a group of volunteers. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/putty.png) + +Putty is very easy to install and to use.You don’t usually need to change most of the configuration options. To start the simplest kind of session, all you need to do is to enter a few basic parameters.You can download PuTTY [here][1] + +### Bitvise SSH Client ### + +**Bitvise SSH** Client is an SSH and SFTP client for Windows. It is developed and supported professionally by Bitvise. The SSH Client is robust, easy to install, easy to use. Bitvise SSH Client is a feature-rich graphical SSH/SFTP client for windows and allow you dynamic port forwarding through an integrated proxy with auto-reconnecting capability. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/bitvise.png) + +Bitvise SSH Client is **free for personal use**, as well as for individual commercial use inside organizations. You can [download Bitvise SSH Client here][2]. + +### MobaXterm ### + +**MobaXterm** is your **ultimate toolbox for remote computing**. In a single Windows application, it provides loads of functions that are tailored for programmers, webmasters, IT administrators and pretty much all users who need to handle their remote jobs in a more simple fashion. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/mobaxterm.png) + +MobaXterm provides all the important **remote network tools** (SSH, X11, RDP, VNC, FTP, MOSH, …) and **Unix commands** (bash, ls, cat, sed, grep, awk, rsync, …) to Windows desktop, in a **single portable exe file** which works out of the box. MobaXterm is **free for personal use**. You can download MobaXterm [from here][3]. + +### DameWare SSH ### + +I think that **DameWare SSH** is the best free ssh client. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/ssh.png) + +This free tool is a terminal emulator that lets you make multiple telnet and SSH connections from one easy-to-use console. + +- Manage multiple sessions from one console with a tabbed interface +- Save favorite sessions within the Windows file system +- Access multiple sets of saved credentials for easy log-in to different devices +- Connect to computers and devices using telnet, SSH1, and SSH2 protocols + +You can download **DameWare SSH** from [this link][4]. + +### SmarTTY ### + +SmarTTY is a free multi-tabbed SSH client that supports copying files and directories with SCP on-the-fly. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/smart.png) + +Most SSH servers support up to 10 sub-sessions per connection. SmarTTY makes the best of it: no annoying multiple windows, no need to relogin, just open a new tab and go! + +### Cygwin ### + +Cygwin is a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/cyq.png) + +**Cygwin** consists of a Unix system call emulation library, cygwin1.dll, together with a [vast set][5] of GNU and other free software applications organized into a large number of optional packages. Among these packages are high-quality compilers and other software development tools, an X11 server, a complete X11 development toolkit, GNU emacs, TeX and LaTeX, OpenSSH (client and server), and much more, including everything needed to compile and use PhysioToolkit software under MS-Windows. + +After reading our article, which is your favorite SSH client? You can leave a comment describing your favorite system and the reasons of your choice. And of course if there is another SSH client doesn’t appear in this article, you can help us to add it. + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/list-free-windows-ssh-client-tools-connect-linux-server/ + +作者:[anismaj][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/anis/ +[1]:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html +[2]:http://www.bitvise.com/download-area +[3]:http://mobaxterm.mobatek.net/download.html +[4]:http://www.dameware.com/downloads/registration.aspx?productType=ssh&AppID=17471&CampaignID=70150000000PcNM +[5]:http://cygwin.com/packages/ \ No newline at end of file From e299e3dbf4f55818f19eceafe4dc1fd087fd5938 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 9 Mar 2015 16:54:48 +0800 Subject: [PATCH 511/725] =?UTF-8?q?20150309-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ls' Command Interview Questions--Part 2.md | 167 +++++++++++ ...15 Basic 'ls' Command Examples in Linux.md | 262 ++++++++++++++++++ ...uestions on Linux 'ls ' Command--Part 1.md | 187 +++++++++++++ 3 files changed, 616 insertions(+) create mode 100644 sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md create mode 100644 sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md create mode 100644 sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md diff --git a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md b/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md new file mode 100644 index 0000000000..bd9a956d12 --- /dev/null +++ b/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md @@ -0,0 +1,167 @@ +10 Useful ‘ls’ Command Interview Questions – Part 2 +================================================================================ +Continuing the legacy of ls command here is the second interview article on Listing command. The first article of the series was highly appreciated by the Tecmint Community. If you’ve missed the first part of this series you may like to visit at: + +- [15 Interview Questions on “ls” Command – Part 1][1] + +This article is well presented in the manner that it gives deep insight of ls command with examples. We have taken extra care in the making of article so that it remains simple to understand yet serve the purpose to the fullest. + +![10 Interview Questions on ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/ls-Command-Interview-Questions.jpg) +10 Interview Questions on ls Command + +### 1. You are supposed to list the content of a directory in long list format, but not print the name of the author and group the file belongs. Also show the difference in output. ### + +a. ls command listing the name of the files in long listing format when used with switch (-l). + + # ls -l + +![List Files in- Long List Format](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-inLong-List-Format.gif) +List Files in- Long List Format + +b. ls command listing the name of the files in long listing format along with the name of the author file belongs, when used with switch (–author) along with switch (-l). + + # ls -l --author + +![List Files By Author](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-By-Author.gif) +List Files By Author + +c. ls command listing the name of the files without the name of its owner, when used with switch (-g). + + # ls -g + +![List Files Without Printing Owner Name](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Printing-Author.gif) +List Files Without Printing Owner Name + +d. ls command listing the name of files in long listing format without the name of group it belongs, when used with switch (-G) along with switch (-l). + + # ls -Gl + +![List Files Without Printing Group](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Printing-Group.gif) +List Files Without Printing Group + +### 2. Print the size of files and folders in the current directory, in human readable format. How will you do this? ### + +Well we need to use switch -h (human-readable) along with switch (-l) and/or (-s) with the command ls to get the desired output. + + # ls -hl + +![List Files in Human Readable Format](http://www.tecmint.com/wp-content/uploads/2015/03/List-Size-of-Files-with-ls.gif) +List Files in Human Readable Format + + # ls -hs + +![List File Sizes in Long List Format](http://www.tecmint.com/wp-content/uploads/2015/03/List-File-Sizes-in-Readable-Format.gif) +List File Sizes in Long List Format + +**Note**: The option -h uses the power of 1024 (standard in computation) and output the size of files and folders in the units of K, M and G. + +### 3. Well if switch (-h) output size in power of 1024, that is standard, What else power values are supported in ls command? ### + +There exist a switch -si which is similar to switch -h. The only difference is switch -si uses power of 1000 unlike switch -h which uses the power of 1024. + + # ls -si + +![Supported Power Values of ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/ls-supported-power-values.gif) +Supported Power Values of ls Command + +It can also be used with switch -l to output the size of folder in the power of 1000, in long listing format. + + # ls -si -l + +![List Files by Power Values](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-by-Power-Values.gif) +List Files by Power Values + +### 4. You are supposed to print the contents of a directory separated with comma. Is it possible? Can it be done in long listing format? ### + +Yup! Linux ls command can output the contents of a directory separated by comma when used with the switch (-m). Since this comma separated entries are filled horizontally, ls command can’t separate contents with comma when listing contents vertically. + + # ls -m + +![Print Contents of Directory by Comma](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Contents-of-Directory-by-Comma.gif) +Print Contents of Directory by Comma + +When used in long listing format, switch -m gets useless. + + # ls -ml + +![Listing Content Horizontally](http://www.tecmint.com/wp-content/uploads/2015/03/Listing-Content-Horizentally.gif) +Listing Content Horizontally + +### 5. If there any way to print the contents of a directory upside down? i.e., in reverse order. ### + +Yeah! The above situation can easily be achieved using the switch -r. The switch ‘-r‘ reverse the order of output. It can also be used with switch -l (long listing format). + + # ls -r + +![List Content in Reverse Order](http://www.tecmint.com/wp-content/uploads/2015/03/List-Content-in-Reverse-Order.gif) +List Content in Reverse Order + + # ls -rl + +![Long List Content in Reverse Order](http://www.tecmint.com/wp-content/uploads/2015/03/Long-List-Content-in-Reverse-Order.gif) +Long List Content in Reverse Order + +### 6. You are given a situation to print the sub-directories recursively. How will you achieve this situation? Mind it only sub directories and no files. ### + +Okay! That is pretty easy with the switch -R when used with command ls. It can further be grouped with other options like -l (long list) and -m (comma separated), etc. + + # ls -R + +![Print Sub Directories in Recursively](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Sub-Directories-in-Recursively.gif) +Print Sub Directories in Recursively + +### 7. How to sort the files based upon the size? ### + +The Linux command line option -S when used with ls gives the desired output. To sort the files based upon size in descending order with the largest file listed at first and smallest at last. + + # ls -S + +![Sort Files with ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/Sort-Files-in-Linux.gif) +Sort Files with ls Command + +To sort the files based upon size in descending order with the smallest file listed at first and largest at last. + + # ls -Sr + +![Sort Files in Descending Order](http://www.tecmint.com/wp-content/uploads/2015/03/Sort-Files-in-Descending-Order.gif) +Sort Files in Descending Order + +### 8. List the contents of a directory with no additional information appearing one file per line. ### + +The switch -1 comes to rescue here. ls command with switch -1 output the contents of the directory with one file per line and no additional information. + + # ls -1 + +![List Files Without Information](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Information.gif) +List Files Without Information + +### 9. You are given a situation in which you have to print the contents of a directory on standard output enclosed by double quotes. How will you do this? ### + +There exist an option -Q (quote-name) which output the content of ls enclosed in double quotes. + + # ls -Q + +![Print Files with Double Quotes](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Files-with-Double-Quotes.gif) +Print Files with Double Quotes + +### 10. You are working in a directory which contains lots of files and folders. You need to print the name of folders before directories. How will you get this? ### + + # ls --group-directories-first + +![Print Directories First](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Directories-First.gif) +Print Directories First + +That’s all for now. We will be coming up with the next part of this article series very soon. Till then stay tuned and connected to Tecmint. Do not forget to provide us with valuable feedback in the comment section below. Like and share us and help us get spread! + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/ls-interview-questions/ + +作者:[Ravi Saive][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/admin/ +[1]:http://www.tecmint.com/ls-command-interview-questions/ \ No newline at end of file diff --git a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md new file mode 100644 index 0000000000..3ff1e4df47 --- /dev/null +++ b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md @@ -0,0 +1,262 @@ +15 Basic ‘ls’ Command Examples in Linux +================================================================================ +ls command is one of the most frequently used command in Linux. I believe ls command is the first command you may use when you get into the command prompt of Linux Box. We use ls command daily basis and frequently even though we may not aware and never use all the option available. In this article, we’ll be discussing basic ls command where we have tried to cover as much parameters as possible. + +![Linux ls Command](http://www.tecmint.com/wp-content/uploads/2012/08/Linux-ls-Commands.png) +Linux ls Command + +### 1. List Files using ls with no option ### + +ls with no option list files and directories in bare format where we won’t be able to view details like file types, size, modified date and time, permission and links etc. + + # ls + + 0001.pcap Desktop Downloads index.html install.log.syslog Pictures Templates + anaconda-ks.cfg Documents fbcmd_update.php install.log Music Public Videos + +### 2 List Files With option –l ### + +Here, ls -l (-l is character not one) shows file or directory, size, modified date and time, file or folder name and owner of file and it’s permission. + + # ls -l + + total 176 + -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap + -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Desktop + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Documents + drwxr-xr-x. 4 root root 4096 Aug 16 02:55 Downloads + -rw-r--r--. 1 root root 21262 Aug 12 12:42 fbcmd_update.php + -rw-r--r--. 1 root root 46701 Jul 31 09:58 index.html + -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log + -rw-r--r--. 1 root root 11439 Jul 31 02:13 install.log.syslog + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Music + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Pictures + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Public + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Templates + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Videos + +### 3. View Hidden Files ### + +List all files including hidden file starting with ‘.‘. + + # ls -a + + . .bashrc Documents .gconfd install.log .nautilus .pulse-cookie + .. .cache Downloads .gnome2 install.log.syslog .netstat.swp .recently-used.xbel + 0001.pcap .config .elinks .gnome2_private .kde .opera .spice-vdagent + anaconda-ks.cfg .cshrc .esd_auth .gtk-bookmarks .libreoffice Pictures .tcshrc + .bash_history .dbus .fbcmd .gvfs .local .pki Templates + .bash_logout Desktop fbcmd_update.php .ICEauthority .mozilla Public Videos + .bash_profile .digrc .gconf index.html Music .pulse .wireshark + +### 4. List Files with Human Readable Format with option -lh ### + +With combination of -lh option, shows sizes in human readable format. + + # ls -lh + + total 176K + -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap + -rw-------. 1 root root 1.6K Jul 31 02:17 anaconda-ks.cfg + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Desktop + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Documents + drwxr-xr-x. 4 root root 4.0K Aug 16 02:55 Downloads + -rw-r--r--. 1 root root 21K Aug 12 12:42 fbcmd_update.php + -rw-r--r--. 1 root root 46K Jul 31 09:58 index.html + -rw-r--r--. 1 root root 48K Jul 31 02:17 install.log + -rw-r--r--. 1 root root 12K Jul 31 02:13 install.log.syslog + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Music + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Pictures + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Public + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Templates + drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Videos + +### 5. List Files and Directories with ‘/’ Character at the end ### + +Using -F option with ls command, will add the ‘/’ Character at the end each directory. + + # ls -F + + 0001.pcap Desktop/ Downloads/ index.html install.log.syslog Pictures/ Templates/ + anaconda-ks.cfg Documents/ fbcmd_update.php install.log Music/ Public/ Videos/ + +### 6. List Files in Reverse Order ### + +The following command with ls -r option display files and directories in reverse order. + + # ls -r + + Videos Public Music install.log fbcmd_update.php Documents anaconda-ks.cfg + Templates Pictures install.log.syslog index.html Downloads Desktop 0001.pcap + +### 7. Recursively list Sub-Directories ### + +ls -R option will list very long listing directory trees. See an example of output of the command. + + # ls -R + + total 1384 + -rw-------. 1 root root 33408 Aug 8 17:25 anaconda.log + -rw-------. 1 root root 30508 Aug 8 17:25 anaconda.program.log + + ./httpd: + total 132 + -rw-r--r-- 1 root root 0 Aug 19 03:14 access_log + -rw-r--r--. 1 root root 61916 Aug 10 17:55 access_log-20120812 + + ./lighttpd: + total 68 + -rw-r--r-- 1 lighttpd lighttpd 7858 Aug 21 15:26 access.log + -rw-r--r--. 1 lighttpd lighttpd 37531 Aug 17 18:21 access.log-20120819 + + ./nginx: + total 12 + -rw-r--r--. 1 root root 0 Aug 12 03:17 access.log + -rw-r--r--. 1 root root 390 Aug 12 03:17 access.log-20120812.gz + +### 8. Reverse Output Order ### + +With combination of -ltr will shows latest modification file or directory date as last. + + # ls -ltr + + total 176 + -rw-r--r--. 1 root root 11439 Jul 31 02:13 install.log.syslog + -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log + -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Desktop + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Videos + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Templates + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Public + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Pictures + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Music + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Documents + -rw-r--r--. 1 root root 46701 Jul 31 09:58 index.html + -rw-r--r--. 1 root root 21262 Aug 12 12:42 fbcmd_update.php + drwxr-xr-x. 4 root root 4096 Aug 16 02:55 Downloads + -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap + +### 9. Sort Files by File Size ### + +With combination of -lS displays file size in order, will display big in size first. + + # ls -lS + + total 176 + -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log + -rw-r--r--. 1 root root 46701 Jul 31 09:58 index.html + -rw-r--r--. 1 root root 21262 Aug 12 12:42 fbcmd_update.php + -rw-r--r--. 1 root root 11439 Jul 31 02:13 install.log.syslog + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Desktop + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Documents + drwxr-xr-x. 4 root root 4096 Aug 16 02:55 Downloads + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Music + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Pictures + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Public + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Templates + drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Videos + -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg + -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap + +### 10. Display Inode number of File or Directory ### + +We can see some number printed before file / directory name. With -i options list file / directory with inode number. + + # ls -i + + 20112 0001.pcap 23610 Documents 23793 index.html 23611 Music 23597 Templates + 23564 anaconda-ks.cfg 23595 Downloads 22 install.log 23612 Pictures 23613 Videos + 23594 Desktop 23585 fbcmd_update.php 35 install.log.syslog 23601 Public + +### 11. Shows version of ls command ### + +Check version of ls command. + + # ls --version + + ls (GNU coreutils) 8.4 + Copyright (C) 2010 Free Software Foundation, Inc. + License GPLv3+: GNU GPL version 3 or later . + This is free software: you are free to change and redistribute it. + There is NO WARRANTY, to the extent permitted by law. + Written by Richard M. Stallman and David MacKenzie. + +### 12. Show Help Page ### + +List help page of ls command with their option. + + # ls --help + + Usage: ls [OPTION]... [FILE]... + +### 13. List Directory Information ### + +With ls -l command list files under directory /tmp. Wherein with -ld parameters displays information of /tmp directory. + + # ls -l /tmp + total 408 + drwx------. 2 narad narad 4096 Aug 2 02:00 CRX_75DAF8CB7768 + -r--------. 1 root root 384683 Aug 4 12:28 htop-1.0.1.tar.gz + drwx------. 2 root root 4096 Aug 4 11:20 keyring-6Mfjnk + drwx------. 2 root root 4096 Aug 16 01:33 keyring-pioZJr + drwx------. 2 gdm gdm 4096 Aug 21 11:26 orbit-gdm + drwx------. 2 root root 4096 Aug 19 08:41 pulse-gl6o4ZdxQVrX + drwx------. 2 narad narad 4096 Aug 4 08:16 pulse-UDH76ExwUVoU + drwx------. 2 gdm gdm 4096 Aug 21 11:26 pulse-wJtcweUCtvhn + -rw-------. 1 root root 300 Aug 16 03:34 yum_save_tx-2012-08-16-03-34LJTAa1.yumtx + +---------- + + # ls -ld /tmp/ + + drwxrwxrwt. 13 root root 4096 Aug 21 12:48 /tmp/ + +### 14. Display UID and GID of Files ### + +To display UID and GID of files and directories. use option -n with ls command. + + # ls -n + + total 36 + drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Downloads + drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Music + drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Pictures + -rw-rw-r--. 1 500 500 12 Aug 21 13:06 tmp.txt + drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Videos + +### 15. ls command and it’s Aliases ### + +We have made alias for ls command, when we execute ls command it’ll take -l option by default and display long listing as mentioned earlier. + + # alias ls="ls -l" + +Note: We can see number of alias available in your system with below alias command and same can be unalias as shown below example. + + # alias + + alias cp='cp -i' + alias l.='ls -d .* --color=auto' + alias ll='ls -l --color=auto' + alias ls='ls --color=auto' + alias mv='mv -i' + alias rm='rm -i' + alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' + +To remove an alias previously defined, just use the unalias command. + + # unalias ls + +In our next article we’ll cover up more or advanced ls command with their examples. If we’ve missed anything in the list, please update us via comment section. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ + +作者:[Ravi Saive][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/admin/ \ No newline at end of file diff --git a/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md b/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md new file mode 100644 index 0000000000..29804f5874 --- /dev/null +++ b/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md @@ -0,0 +1,187 @@ +15 Interview Questions on Linux “ls” Command – Part 1 +================================================================================ +The listing command in UNIX and UNIX like operating System ‘ls‘ is one of the most basic and widely used utility in command-line. It is POSIX compliant utility available for GNU coreutils and BSD variants. The ‘ls’ command can be used with a variety of options to get desired results. This article aims at deep insight of file listing command in Linux with relevant examples. + +![15 ls Command Questions](http://www.tecmint.com/wp-content/uploads/2014/09/ls-Command-Questions.png) +15 ls Command Questions + +### 1. How will you List files from a directory? ### + +Ans: The Linux file listing command ‘ls‘ comes to rescue here. + + # ls + +![List Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-files.gif) +List Files + +Alternatively, we can use ‘echo‘ command to list files within a directory in association with wildcard (*). + + # echo * + +![List All Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-files.gif) +List All Files + +### 2. How will you list all the directories only using echo command? ### + + # echo */ + +![List All Directories](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-directories.gif) +List All Directories + +### 3. How will you list all the files within a directory including hidden files aka (.) dot files? ### + +Ans: We need to use option ‘-a‘ (list hidden files) with command ‘ls‘. + + # ls -a + +![List All Hidden Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-hidden-files.gif) +List All Hidden Files + +### 4. How do you list all the files within a directory including hidden files, but do not list implied ‘.’ and ‘..’? ### + +Ans: We need to use option ‘-A‘ (do not list implied . and ..) with command ‘ls‘. + + # ls -A + +![Do Not List Implied](http://www.tecmint.com/wp-content/uploads/2014/09/Do-not-list-Implied.gif) +Do Not List Implied + +### 5. How will you print the content of a directory in long format listing? ### + +Ans: We need to use option ‘l‘ (long format) with command ‘ls‘. + + # ls -l + +![List Files Long](http://www.tecmint.com/wp-content/uploads/2014/09/list-files-long.gif) +List Files Long + +In the above example, the output seems like. + + drwxr-xr-x 5 avi tecmint 4096 Sep 30 11:31 Binary + +Here, drwxr-xr-x is file permission for owner, group and world. Owner has Read(r), Write(w) and Execute(x) permission. The group to which this file belongs has Read(r) and Execute(x) permission but not Write(w) permission, same permission implies for the world that have access to this file. + +- The Initial ‘d‘ means its a Directory. +- Number ‘5‘ represents Symbolic Link. +- The File Binary belongs to user avi and group tecmint. +- Sep 30 11:31 represents the date and time it was last modified. + +### 6. You are supposed to print the content of directory in long format listing, showing hidden/dot files. How will you achieve this? ### + +Ans: We need to use option ‘-a‘ (list hidden files) and ‘-l‘ (long listing) together with command ‘ls‘. + + # ls -la + +![Print Content of Directory](http://www.tecmint.com/wp-content/uploads/2014/09/Print-Content-of-Directory.gif) +Print Content of Directory + +Alternatively We can use option ‘-A‘ and ‘-l‘ with ‘ls‘ command, if we do not want to list implied ‘.’ and ‘..’. + + # ls -lA + +### 7. How will you figure out the author of each file? ### + +Ans: We need to use option ‘–author‘ along with option ‘-l‘ to print the author name of each file. + + # ls --author -l + +![List Author Files](http://www.tecmint.com/wp-content/uploads/2014/09/List-Author-Files.gif) +List Author Files + +### 8. How will you print escape for non-graphic character? ### + +Ans: We just need to use option ‘-b‘ to print escape for non-graphic character. + + # ls -b + +![Print Escape Character](http://www.tecmint.com/wp-content/uploads/2014/09/Print-Escape-Character.gif) + +### 9. List the size of files and folders in desired scale format. How will you achieve this? ### + +Ans: Here option ‘–block-size=scale‘ along with option ‘-l‘ needs to be used. We need to remove ‘scale’ in the example with the desired scale viz M, K, etc. + + # ls --block-size=M -l + # ls --block-size=K -l + +![List File Scale Format](http://www.tecmint.com/wp-content/uploads/2014/09/List-File-Scale-Format.gif) +List File Scale Format + +### 10. List the files within a directory, but don’t show the backup files, i.e., those files that end with ~. ### + +Ans: Here option ‘-B‘ (do not list implied entries ending with ~) comes to rescue. + + # ls -B + +![List File Without Backup](http://www.tecmint.com/wp-content/uploads/2014/09/List-File-Without-Backup.gif) +List File Without Backup + +### 11. Sort all the files within a directory by name and show associated last modification information. ### + +Ans: We need to use option ‘-c‘ and option ‘-l‘ with command ls to fulfil the need as suggested above. + + # ls -cl + +![Sort Files](http://www.tecmint.com/wp-content/uploads/2014/09/Sort-Files.gif) +Sort Files + +### 12. Sort all the files within a directory by modification time and show associated information. ### + +Ans: We need to use three options together i.e., ‘-l‘, ‘-t‘ and ‘-c‘ with command ls to sort files by modification time, newest first. + + # ls -ltc + +![Sort Files by Modification](http://www.tecmint.com/wp-content/uploads/2014/09/Sort-Files-by-Modification.gif) +Sort Files by Modification + +### 13. How will you control the output of ‘ls’ command to be colorful or no-color? ### + +Ans: We need to use option ‘–color=parameter‘. The parameter to be used with color option are ‘auto’, ‘always’ and ‘never’ which are self explanatory. + + # ls --color=never + # ls --color=auto + # ls --color=always + +![ls Colorful Output](http://www.tecmint.com/wp-content/uploads/2014/09/ls-colorful-output.gif) +ls Colorful Output + +### 14. You are supposed to list directory entries themselves, not their contents. What will you do? ### + +Ans: Here the option ‘-d‘ comes handy. + + # ls -d + +![List Directory Entries](http://www.tecmint.com/wp-content/uploads/2014/09/List-Directory-Entries.gif) +List Directory Entries + +### 15. Create an alias for long format listing “ls -l” as “ll” and output the result to a file and not standard output. ### + +Ans: Here in the above scenario, we need to add alias to .bashrc file and then use redirect operator to write the output to file and not standard output. We will be using editor nano. + + # ls -a + # nano .bashrc + # ll >> ll.txt + # nano ll.txt + +![Create Alias for ls command](http://www.tecmint.com/wp-content/uploads/2014/09/Create-ls-Alias.gif) +Create Alias for ls command + +That’s all for now. Don’t forget to provide us with your valuable feedback in the comments below. I’ll be here again with another interesting article soon. Till then stay tuned and connected. + +### Real Also: ### + +- [10 ‘ls’ Command Interview Questions – Part 2][1] +- [15 Basic ‘ls’ Commands in Linux][2] + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/ls-command-interview-questions/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://www.tecmint.com/ls-interview-questions/ +[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ \ No newline at end of file From 100192033473efc90b4551bd304d14be8f9e6dcb Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Mon, 9 Mar 2015 17:38:02 +0800 Subject: [PATCH 512/725] Update 20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md --- ...rs--How to install full kernel source on Debian or Ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md index 4887c60e6a..3c0f4ec412 100644 --- a/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md +++ b/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md @@ -48,7 +48,7 @@ Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 via: http://ask.xmodulo.com/install-full-kernel-source-debian-ubuntu.html 作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) +译者:[martin qi](https://github.com/martin2011qi) 校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 6faf8cc67271217bbcd37277a9aa92afed7b825b Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Mon, 9 Mar 2015 17:43:21 +0800 Subject: [PATCH 513/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...wers--How to install full kernel source on Debian or Ubuntu.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md (100%) diff --git a/translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/published/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md similarity index 100% rename from translated/tech/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md rename to published/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md From 8cc4738be89c365843bdc04a13798e6bea14c66c Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 9 Mar 2015 21:45:16 +0800 Subject: [PATCH 514/725] PUB:20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error @ZTinoZ --- ...fix 'XXX is not in the sudoers file' error.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) rename {translated/tech => published}/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md (72%) diff --git a/translated/tech/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md b/published/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md similarity index 72% rename from translated/tech/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md rename to published/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md index 996f833bff..0cd74b4e3d 100644 --- a/translated/tech/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md +++ b/published/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md @@ -1,16 +1,16 @@ -Linux有问必答时间--怎样解决“XXX is not in the sudoers file”错误 +Linux有问必答时间:怎样解决“XXX is not in the sudoers file”错误 ================================================================================ -> **问题**:我想在我的Linux系统上使用sudo来运行一些特权命令,然而当我试图这么做时,我却得到了"[我的用户ID] is not in the sudoers file. This incident will be reported."的错误信息。我该怎么处理这种sudo错误呢? +> **问题**:我想在我的Linux系统上使用sudo来运行一些特权命令,然而当我试图这么做时,我却得到了"[我的用户名] is not in the sudoers file. This incident will be reported."的错误信息。我该怎么处理这种sudo错误呢? -sudo是一个允许特定的用户组用另一个用户(典型的代表是root)的特权来运行一个命令。sudo有详细的日志功能并且提供了细粒度控制来覆盖用户通过sudo敲入的命令。 +sudo是一个允许特定的用户组用另一个用户(典型的是root)的特权来运行一个命令。sudo有详细的日志功能,并且提供了对用户可通过sudo来运行哪些命令的细粒度控制。 ### Sudo vs. Su ### -su命令也提供了同样的特权升级功能,两者不同的是它们认证过程和特权变化的粒度。su允许你从你的登录会话切换到另一个用户的会话,然后你可以随心所欲地用该用户的特权来运行任何程序,但是你需要知道目标用户的密码才能切换这个用户。另一方面,sudo能在每个命令的基础上工作,允许你用root的特权来运行单个命令。用sudo你不必一定要知道root的密码,但是在提示输入sudo密码的时候要输入你的密码。 +su命令也提供了同样的特权提升功能,两者不同的是它们认证过程和特权变化的粒度。su允许你从你的登录会话切换到另一个用户的会话,然后你可以随心所欲地用该用户的特权来运行任何程序,但是你需要知道目标用户的密码才能切换这个用户。而另一方面,sudo能在单个命令的基础上工作,允许你用root的特权来运行单个命令。用sudo你不必一定要知道root的密码,但是在提示输入sudo密码的时候要输入你的密码。 ### 在Sudoers列表里添加用户 ### -作为一个新用户的你如果试图运行sudo命令,你会碰到以下错误。意思是你不在这个包含经过认证可以使用sudo特权的这么一个用户组的sudoers列表里。 +作为一个新用户的你如果试图运行sudo命令,你会碰到以下错误。意思是你不在这个包含经过认证就可以使用sudo特权的这么一个用户组的sudoers列表里。 [my-user-id] is not in the sudoers file. This incident will be reported. @@ -32,11 +32,11 @@ su命令也提供了同样的特权升级功能,两者不同的是它们认证 alice adm cdrom sudo dip plugdev fuse lpadmin netdev sambashare davfs2 libvirtd docker promiscuous -组员资格变动(和sudo访问)会在你登出登录后生效。 +组员资格变动(和sudo访问)会在你登出后重新登录后生效。 ### 方法二 ### -第二个能让你使用sudo的方法是直接把你自己添加到路径为 /etc/sudoers 这个配置文件中去。 +第二个能让你使用sudo的方法是直接把你自己添加到 /etc/sudoers 这个配置文件中去。 要修改 /etc/sudoers 文件,你可以使用一个名为visudo的特殊sudo编辑器命令。用root身份简单调用以下命令。 @@ -55,6 +55,6 @@ su命令也提供了同样的特权升级功能,两者不同的是它们认证 via: http://ask.xmodulo.com/fix-is-not-in-the-sudoers-file.html 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 334f9b1f12b8912b0275151934c13a1bc4adc82b Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 9 Mar 2015 22:23:20 +0800 Subject: [PATCH 515/725] PUB:20141204 Linux Namespaces @bazz2 --- .../20141204 Linux Namespaces.md | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) rename {translated/tech => published}/20141204 Linux Namespaces.md (79%) diff --git a/translated/tech/20141204 Linux Namespaces.md b/published/20141204 Linux Namespaces.md similarity index 79% rename from translated/tech/20141204 Linux Namespaces.md rename to published/20141204 Linux Namespaces.md index 522131a50b..c40854d780 100644 --- a/translated/tech/20141204 Linux Namespaces.md +++ b/published/20141204 Linux Namespaces.md @@ -1,32 +1,36 @@ -Linux 命名空间 +介绍 Linux 的命名空间 ================================================================================ ### 背景 ### -从2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。它们的出现,使用户创建的进程能够与系统分离得更加彻底,从而不需要考虑太多底层的虚拟化技术。 +从Linux 2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。它们的出现,使用户创建的进程能够与系统分离得更加彻底,从而不需要使用更多的底层虚拟化技术。 - **CLONE_NEWIPC**: 进程间通信(IPC)的命名空间,可以将 SystemV 的 IPC 和 POSIX 的消息队列独立出来。 -- **CLONE_NEWPID**: 进程 ID 的命名空间,进程 ID 独立,意思就是命名空间内的进程 ID 可能会与命名空间外的进程 ID 冲突,于是命名空间内的进程 ID 映射到命名空间外时会使用另外一个进程 ID。比如说,命名空间内 ID 为1的进程,在命名空间外就是指 init 进程。 +- **CLONE_NEWPID**: PID 命名空间。空间内的PID 是独立分配的,意思就是命名空间内的虚拟 PID 可能会与命名空间外的 PID 相冲突,于是命名空间内的 PID 映射到命名空间外时会使用另外一个 PID。比如说,命名空间内第一个 PID 为1,而在命名空间外就是该 PID 已被 init 进程所使用。 - **CLONE_NEWNET**: 网络命名空间,用于隔离网络资源(/proc/net、IP 地址、网卡、路由等)。后台进程可以运行在不同命名空间内的相同端口上,用户还可以虚拟出一块网卡。 - **CLONE_NEWNS**: 挂载命名空间,进程运行时可以将挂载点与系统分离,使用这个功能时,我们可以达到 chroot 的功能,而在安全性方面比 chroot 更高。 - **CLONE_NEWUTS**: UTS 命名空间,主要目的是独立出主机名和网络信息服务(NIS)。 - **CLONE_NEWUSER**: 用户命名空间,同进程 ID 一样,用户 ID 和组 ID 在命名空间内外是不一样的,并且在不同命名空间内可以存在相同的 ID。 +下面我们介绍一下进程命名空间和网络命名空间。 + +### 进程命名空间 + 本文用 C 语言介绍上述概念,因为演示进程命名空间的时候需要用到 C 语言。下面的测试过程在 Debian 6 和 Debian 7 上执行。首先,在栈内分配一页内存空间,并将指针指向内存页的末尾。这里我们使用 **alloca()** 函数来分配内存,不要用 malloc() 函数,它会把内存分配在堆上。 void *mem = alloca(sysconf(_SC_PAGESIZE)) + sysconf(_SC_PAGESIZE); -然后使用 **clone()** 函数创建子进程,传入栈空间的地址 "mem",以及指定命名空间的标记。同时我们还指定“callee”作为子进程运行的函数。 +然后使用 **clone()** 函数创建子进程,传入我们的子栈空间地址 "mem",并指定命名空间的标记。同时我们还指定“callee”作为子进程运行的函数。 mypid = clone(callee, mem, SIGCHLD | CLONE_NEWIPC | CLONE_NEWPID | CLONE_NEWNS | CLONE_FILES, NULL); -**clone** 之后我们要在父进程中等待子进程先退出,否则的话,父进程会继续运行下去,直到进程结束,留下子进程变成孤儿进程: +**clone** 之后我们要在父进程中等待子进程先退出,否则的话,父进程会继续运行下去,并马上进程结束,留下子进程变成孤儿进程: while (waitpid(mypid, &r, 0) < 0 && errno == EINTR) { continue; } -最后当子进程退出后,我们会回到 shell 界面。 +最后当子进程退出后,我们会回到 shell 界面,并返回子进程的退出码。 if (WIFEXITED(r)) { @@ -47,7 +51,7 @@ Linux 命名空间 return ret; } -程序挂载 **/proc** 文件系统,设置用户 ID 和组 ID,值都为“u”,然后运行 **/bin/bash** 程序,[LXC][1] 是操作系统级的虚拟化工具,使用 cgroups 和命名空间来完成资源的分离。现在我们把所有代码放在一起,变量“u”的值设为65534,在 Debian 系统中,这是“nobody”和“nogroup”: +程序挂载了 **/proc** 文件系统,设置用户 ID 和组 ID,值都为“u”,然后运行 **/bin/bash** 程序,[LXC][1] 是一个操作系统级的虚拟化工具,使用 cgroups 和命名空间来完成资源的分离。现在我们把所有代码放在一起,变量“u”的值设为65534,在 Debian 系统中,这是“nobody”和“nogroup”: #define _GNU_SOURCE #include @@ -101,12 +105,16 @@ Linux 命名空间 nobody 5 0.0 0.0 2784 1064 pts/1 R+ 21:21 0:00 ps auxw nobody@w:~/pen/tmp$ -注意上面的结果,UID 和 GID 被设置成 nobody 和 nogroup 了,特别是 ps 工具只输出两个进程,它们的 ID 分别是1和5(LCTT注:这就是上文介绍 CLONE_NEWPID 时提到的功能,在线程所在的命名空间内,进程 ID 可以为1,映射到命名空间外就是65534;而命名空间外的 ID 为1的进程一直是 init)。接下来轮到使用 ip netns 来设置网络的命名空间。第一步先确定当前系统没有命名空间: +注意上面的结果,UID 和 GID 被设置成 nobody 和 nogroup 了,特别是 ps 工具只输出两个进程,它们的 ID 分别是1和5(LCTT注:这就是上文介绍 CLONE_NEWPID 时提到的功能,在线程所在的命名空间内,进程 ID 可以为1,映射到命名空间外是另外一个 PID;而命名空间外的 ID 为1的进程一直是 init)。 + +### 网络命名空间 + +接下来轮到使用 ip netns 来设置网络的命名空间。第一步先确定当前系统没有命名空间: root@w:~# ip netns list Object "netns" is unknown, try "ip help". -这种情况下,你需要更新你的系统内核,以及 ip 工具。这里假设你的内核版高于2.6.24,ip 工具版本也差不多,高于2.6.24(LCTT注:ip 工具由 iproute 安装包提供,此安装包版本与内核版本相近)。更新好后,**ip netns list** 在没有命名空间存在的情况下不会输出任务信息。加个名为“ns1”的命名空间看看: +如果报了上述错误,你需要更新你的系统内核,以及 ip 工具程序。这里假设你的内核版高于2.6.24,ip 工具版本也差不多,高于2.6.24(LCTT注:ip 工具由 iproute 安装包提供,此安装包版本与内核版本相近)。更新好后,**ip netns list** 在没有命名空间存在的情况下不会输出任务信息。加个名为“ns1”的命名空间看看: root@w:~# ip netns add ns1 root@w:~# ip netns list @@ -120,7 +128,7 @@ Linux 命名空间 2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 1000 link/ether 00:0c:29:65:25:9e brd ff:ff:ff:ff:ff:ff -创建新的虚拟网卡,加到命名空间。虚拟网卡需要成对创建,互相关联——想想交叉电缆吧: +创建新的虚拟网卡,并加到命名空间。虚拟网卡需要成对创建,互相关联——就像交叉电缆一样: root@w:~# ip link add veth0 type veth peer name veth1 root@w:~# ip link list @@ -146,11 +154,11 @@ Linux 命名空间 这个时候 **ifconfig** -a 命令只能显示 veth0,不能显示 veth1,因为后者现在在 ns1 命名空间中。 -如果想删除 veth1,可以执行下面的命令: +如果想删除 veth0/veth1,可以执行下面的命令: ip netns exec ns1 ip link del veth1 -为 veth0 分配 IP 地址: +我们可以为 veth0 分配 IP 地址: ifconfig veth0 192.168.5.5/24 @@ -229,7 +237,7 @@ via: http://www.howtoforge.com/linux-namespaces 作者:[aziods][a] 译者:[bazz2](https://github.com/bazz2) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2576f70d8cba1e871f1cd233bff2c9559ef4a711 Mon Sep 17 00:00:00 2001 From: alim0x Date: Mon, 9 Mar 2015 23:29:47 +0800 Subject: [PATCH 516/725] translated - Debian TC New Member --- ...nted For Going Past The Systemd Fallout.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md diff --git a/translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md b/translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md new file mode 100644 index 0000000000..2fdccd07ba --- /dev/null +++ b/translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md @@ -0,0 +1,25 @@ +经过Systemd争执 新Debian TC成员已被任命 +================================================================================ + +去年随着Debian做出选择systemd作为init管理器的决定以及随后的[init系统投票][1],有三个人从Debian技术委员会退出:Colin Watson, [Ian Jackson][2], 以及[Russ Allbery][3]。这些空缺席位现已由现有的技术委员会成员任命。 + +新任命的技术委员会成员是Sam Hartman, Tollef Fog Heen,以及Didier Raboud。这些新成员加上Bdale Garbee, Don Armstrong, Andreas Barth, Steve Langasek,以及Keith Packard组成了现在的Debian技术委员会。由Debian章程确定的Debian技术委员会负责对Debian项目中的技术争端做出最后的决定,他们在去年所有的关于init系统的讨论中变得十分重要。 + +![](http://www.phoronix.net/image.php?id=debconf12_managua&image=debconf_12_conference_med) + +新技术委员会成员的委任公告可以从[debian-devel-announce列表][4]中获悉。 +-------------------------------------------------------------------------------- + +via: http://www.phoronix.com/scan.php?page=news_item&px=Debian-TC-Three-Appointments + +作者:[Michael Larabel][a] +译者:[alim0x](https://github.com/alim0x) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.michaellarabel.com/ +[1]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0MzY +[2]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0NDA +[3]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0MjM +[4]:https://lists.debian.org/debian-devel-announce/2015/03/msg00003.html From cba9d88e87a22be78d76e70c02eba3a7c403a750 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 10 Mar 2015 08:56:32 +0800 Subject: [PATCH 517/725] PUB:20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line @mr-ping --- ...gure a MySQL user from the command line.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) rename {translated/tech => published}/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md (81%) diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md b/published/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md similarity index 81% rename from translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md rename to published/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md index 9318d87821..0b393aa3b1 100644 --- a/translated/tech/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md +++ b/published/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md @@ -1,4 +1,4 @@ -Linux有问必答: 如何通过命令行创建和设置一个MySQL用户 +Linux有问必答:如何通过命令行创建和设置一个MySQL用户 ================================================================================ > **问题**:我想要在MySQL服务器上创建一个新的用户帐号,并且赋予他适当的权限和资源限制。如何通过命令行的方式来创建并且设置一个MySQL用户呢? @@ -21,7 +21,7 @@ Linux有问必答: 如何通过命令行创建和设置一个MySQL用户 mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; -一旦用户被创建后,包括加密的密码、权限和资源限制在内的所有帐号细节都会被存储在一个名为**user**的表中,这个表则存在与**mysql**这个特殊的数据库里。 +一旦用户被创建后,包括加密的密码、权限和资源限制在内的所有帐号细节都会被存储在一个名为**user**的表中,这个表则存在于**mysql**这个特殊的数据库里。 运行下列命令,验证帐号是否创建成功 @@ -33,14 +33,14 @@ Linux有问必答: 如何通过命令行创建和设置一个MySQL用户 - **ALL**: 所有可用的权限 - **CREATE**: 创建库、表和索引 -- **LOCK_TABLES**: 锁定表. -- **ALTER**: 修改表. -- **DELETE**: 删除表. -- **INSERT**: 插入表或列. -- **SELECT**: 选择表或列. -- **CREATE_VIEW**: 创建视图. -- **SHOW_DATABASES**: 展示数据库. -- **DROP**: 删除库、表和视图. +- **LOCK_TABLES**: 锁定表 +- **ALTER**: 修改表 +- **DELETE**: 删除表 +- **INSERT**: 插入表或列 +- **SELECT**: 检索表或列的数据 +- **CREATE_VIEW**: 创建视图 +- **SHOW_DATABASES**: 列出数据库 +- **DROP**: 删除库、表和视图 运行以下命令赋予"myuser"用户特定权限。 @@ -70,10 +70,10 @@ Linux有问必答: 如何通过命令行创建和设置一个MySQL用户 在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。可用的资源限制如下: -- **MAX_QUERIES_PER_HOUR**: 允许的每小时最大请求数量. -- **MAX_UPDATES_PER_HOUR**: 允许的每小时最大更新数量. -- **MAX_CONNECTIONS_PER_HOUR**: 允许的每小时最大连接(译者注:[其与 MySQL全局变量: max_user_connections 共同决定用户到数据库的同时连接数量](http://dev.mysql.com/doc/refman/5.0/en/user-resources.html))数量. -- **MAX_USER_CONNECTIONS**: 对服务器的同时连接量. +- **MAX\_QUERIES\_PER\_HOUR**: 允许的每小时最大请求数量 +- **MAX\_UPDATES\_PER\_HOUR**: 允许的每小时最大更新数量 +- **MAX\_CONNECTIONS\_PER\_HOUR**: 允许的每小时最大连接(译者注:[其与 MySQL全局变量: max\_user\_connections 共同决定用户到数据库的同时连接数量](http://dev.mysql.com/doc/refman/5.0/en/user-resources.html))数量 +- **MAX\_USER\_CONNECTIONS**: 对服务器的同时连接量 使用以下命令为"myuser"帐号增加一个资源限制: @@ -102,6 +102,6 @@ Linux有问必答: 如何通过命令行创建和设置一个MySQL用户 via: http://ask.xmodulo.com/create-configure-mysql-user-command-line.html 译者:[Ping](http://weibo.com/370321376) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 \ No newline at end of file From 6acc3e665e40b2d24ee0231fa24648520d884cd3 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 10 Mar 2015 09:07:22 +0800 Subject: [PATCH 518/725] PUB:New Debian TC Members Appointed For Going Past The Systemd Fallout @alim0x --- ...nted For Going Past The Systemd Fallout.md | 26 +++++++++++++++++++ ...nted For Going Past The Systemd Fallout.md | 25 ------------------ 2 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 published/New Debian TC Members Appointed For Going Past The Systemd Fallout.md delete mode 100644 translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md diff --git a/published/New Debian TC Members Appointed For Going Past The Systemd Fallout.md b/published/New Debian TC Members Appointed For Going Past The Systemd Fallout.md new file mode 100644 index 0000000000..d33e7d3b5d --- /dev/null +++ b/published/New Debian TC Members Appointed For Going Past The Systemd Fallout.md @@ -0,0 +1,26 @@ +经过 systemd 争执后,辞职的 Debian TC 席位已被增补 +================================================================================ + +去年随着Debian 以 systemd 作为 init 管理器的决议,以及随后的 [init 系统投票][1],有三个人从 Debian 技术委员会退出:Colin Watson, [Ian Jackson][2], 以及 [Russ Allbery][3]。现在,这些空缺席位现已由现有的技术委员会成员任命。 + +新任命的技术委员会成员是 Sam Hartman, Tollef Fog Heen 以及 Didier Raboud。这些新成员加上Bdale Garbee, Don Armstrong, Andreas Barth, Steve Langasek 以及 Keith Packard 组成了现在的Debian技术委员会。由Debian章程确定的 Debian 技术委员会(TC)负责对 Debian 项目中的技术争端做出最后的决定,他们在去年所有的关于 init 系统的讨论中变得十分重要。 + +![](http://www.phoronix.net/image.php?id=debconf12_managua&image=debconf_12_conference_med) + +新技术委员会成员的委任公告可以从 [debian-devel-announce列表][4] 中获悉。 + +-------------------------------------------------------------------------------- + +via: http://www.phoronix.com/scan.php?page=news_item&px=Debian-TC-Three-Appointments + +作者:[Michael Larabel][a] +译者:[alim0x](https://github.com/alim0x) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.michaellarabel.com/ +[1]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0MzY +[2]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0NDA +[3]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0MjM +[4]:https://lists.debian.org/debian-devel-announce/2015/03/msg00003.html diff --git a/translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md b/translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md deleted file mode 100644 index 2fdccd07ba..0000000000 --- a/translated/news/New Debian TC Members Appointed For Going Past The Systemd Fallout.md +++ /dev/null @@ -1,25 +0,0 @@ -经过Systemd争执 新Debian TC成员已被任命 -================================================================================ - -去年随着Debian做出选择systemd作为init管理器的决定以及随后的[init系统投票][1],有三个人从Debian技术委员会退出:Colin Watson, [Ian Jackson][2], 以及[Russ Allbery][3]。这些空缺席位现已由现有的技术委员会成员任命。 - -新任命的技术委员会成员是Sam Hartman, Tollef Fog Heen,以及Didier Raboud。这些新成员加上Bdale Garbee, Don Armstrong, Andreas Barth, Steve Langasek,以及Keith Packard组成了现在的Debian技术委员会。由Debian章程确定的Debian技术委员会负责对Debian项目中的技术争端做出最后的决定,他们在去年所有的关于init系统的讨论中变得十分重要。 - -![](http://www.phoronix.net/image.php?id=debconf12_managua&image=debconf_12_conference_med) - -新技术委员会成员的委任公告可以从[debian-devel-announce列表][4]中获悉。 --------------------------------------------------------------------------------- - -via: http://www.phoronix.com/scan.php?page=news_item&px=Debian-TC-Three-Appointments - -作者:[Michael Larabel][a] -译者:[alim0x](https://github.com/alim0x) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.michaellarabel.com/ -[1]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0MzY -[2]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0NDA -[3]:http://www.phoronix.com/scan.php?page=news_item&px=MTg0MjM -[4]:https://lists.debian.org/debian-devel-announce/2015/03/msg00003.html From 9d2294938b550b9771d16392b9b9a500fe482436 Mon Sep 17 00:00:00 2001 From: Love-xuan Date: Tue, 10 Mar 2015 10:27:36 +0800 Subject: [PATCH 519/725] Love-xuan translating --- sources/share/20140804 Group Test--Linux Text Editors.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/share/20140804 Group Test--Linux Text Editors.md b/sources/share/20140804 Group Test--Linux Text Editors.md index b1f2846a0e..02c1b2b586 100644 --- a/sources/share/20140804 Group Test--Linux Text Editors.md +++ b/sources/share/20140804 Group Test--Linux Text Editors.md @@ -1,3 +1,4 @@ +Love-xuan Translating Group Test: Linux Text Editors ================================================================================ > Mayank Sharma tests five supercharged text editors that can crunch more than just words. @@ -315,4 +316,4 @@ via: http://www.linuxvoice.com/text-editors/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.linuxvoice.com/author/ben_everard/ \ No newline at end of file +[a]:http://www.linuxvoice.com/author/ben_everard/ From 34e88d28b1b5179bcaa74475b086054fce068cea Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 10 Mar 2015 11:52:14 +0800 Subject: [PATCH 520/725] Translating by ZTinoZ --- .../tech/20150309 15 Basic 'ls' Command Examples in Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md index 3ff1e4df47..d51dce8f75 100644 --- a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md +++ b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md @@ -1,3 +1,4 @@ +Translating by ZTinoZ 15 Basic ‘ls’ Command Examples in Linux ================================================================================ ls command is one of the most frequently used command in Linux. I believe ls command is the first command you may use when you get into the command prompt of Linux Box. We use ls command daily basis and frequently even though we may not aware and never use all the option available. In this article, we’ll be discussing basic ls command where we have tried to cover as much parameters as possible. @@ -259,4 +260,4 @@ via: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.tecmint.com/author/admin/ \ No newline at end of file +[a]:http://www.tecmint.com/author/admin/ From e0d525c293a7d2e738c465f0d060401cfad71f95 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 10 Mar 2015 16:22:12 +0800 Subject: [PATCH 521/725] =?UTF-8?q?20150310-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Linux Based Mini PC You Can Buy In 2015.md | 139 ++++++++++++++++++ sources/talk/20150310 FAQ--BSD.md | 81 ++++++++++ ...il Alerts for SSH Login on Linux Server.md | 59 ++++++++ ...ter Suspend In Ubuntu 14.04 [Quick Tip].md | 28 ++++ 4 files changed, 307 insertions(+) create mode 100644 sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md create mode 100644 sources/talk/20150310 FAQ--BSD.md create mode 100644 sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md create mode 100644 sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md diff --git a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md new file mode 100644 index 0000000000..fcecf0d396 --- /dev/null +++ b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -0,0 +1,139 @@ +4 Linux Based Mini PC You Can Buy In 2015 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) + +Mini PCs, in my opinion, will takeover the traditional desktop computers in near future. Traditional desktop has a bulky CPU which takes a lot of space with its fan running like a blower. The mini PCs, on the other hand, are tiny and compact. With hardly 4″ or 5″ in size, they can be easily placed on a table. + +Moreover, these mini PCs are fanless which is an added virtue. Of course, you can buy fanless regular desktops but the space consumption is still an issue. Personally, I find the mini PC cute in looks. If you are not a gamer and thinking of buying a new desktop PC, I’ll highly recommend you to **buy a Linux based mini PC**. + +If you go by my recommendation and consider buying it, you might wonder what options do you have. Worry not. In this post we shall see four **Linux based Mini PC that you can buy in 2015**. + +### Linux based mini PCs ### + +Please do note that some of these gadgets might not be available to order just yet. Some of these have been just announced and will be released to public in near future. + +#### 1. Meerkat by System76 #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) + +[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: + +**Specification** + +- Intel 5th Generation processors, available options i3-5010U and i5-5250U +- up to 2 TB of storage (M.2 SATA SSD) +- 16 GB DDR3 RAM +- Graphics Intel HD 5500 and Intel HD 6000 for i3 and i5 respectively +- 4″ x 4″ in size +- WiFi +- 1 Gb NIC +- 2 USB 3.0 ports + +**Price** + +In the range of $500 (yet to be confirmed). + +**Availability** + +US release by the end of March 2015. + +#### 2. Mintbox Mini by Compulab #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) + +[Compulab][3] shrunk its flagship Linux Mint based PC devices, Mintbox into [Mintbox Mini][4]. The compact version is around 4″ in size. More details are as following: + +**Specifications** + +- AMD A4-6400T processor +- Radeon R3 graphics processor +- 4 GB RAM +- 64 GB SSD +- 2 USB 3.0 ports, 3 USB 2.0 ports +- 2 HDMI out ports +- 802.11 b/g/n Wifi +- Gigabit Ethernet +- MicroSD reader + +**Price** + +Staring around $300 + +**Availability** + +Second quarter of 2015 + +#### 3. Utilite2 by Compulab #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) + +It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. + +**Specifications** + +- Qualcomm Snapdragon 600 (APQ8064) quad-core CPU 1.7GHz +- 2GB RAM, eMMC with optional 32 GB mSATA storage +- Graphics with Qualcomm Adreno™ GPU +- 1080p video playback and capture +- Dual-antenna WiFi 802.11 and Bluetooth 4.0 +- Gigabit Ethernet, 4x USB2, USB OTG +- Cellular modem support + +**Price** + +$192 for regular model, $229 with SSD storage. Shipping charges extra. + +**Availability** + +Available to purchase now. It will take four weeks in shipping. + +#### Penguin Pocket Wee by Think Penguin #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) + +[Think Penguin][6] is a Open Source focused hardware manufacturer. In the mini PC category, it has [Penguin Pocket Wee][7] to offer. With 4.6″x 4.4″x 1.4″ in size, Penguin Pocket Wee provides a number of configuration to you. You can choose between the processors, storage, network adapters and what not. You can choose to buy it pre-installed with your favorite Linux distribution, default OS is Ubuntu. + +The general configuration is as following: + +- Intel Core i3 or i5 processor with support for up to 1080p HD video +- Expandable up to 16GB of DDR3 RAM +- Intel HD graphics +- Wireless N +- Up to 250GB of SSD +- 4 USB 3.0 +- Intel 10/100/1000 Gigabit Ethernet Controller + +**Price** + +Basic model starts at $499 and it can go up to $1000 based on the configuration you select. + +**Availability** + +Available to order now. There are offices in UK and USA so it should be shipping to North America and Europe. + +### What’s your pick? ### + +I have deliberately not included [Raspberry Pi 2][8] or other Linux microcomputer such as [Intel’s Compute Stick][9]. The reason is that I do not think that micro-computers fall in the same categories as mini PCs. + +What do you think? Are you tempted to replace your desktop with a mini PC? Is there another player which I missed in this list of **best Linux based mini PCs**? Do share your views. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:https://system76.com/ +[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ +[3]:http://www.compulab.co.il/ +[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ +[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview +[6]:https://www.thinkpenguin.com/ +[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop +[8]:http://itsfoss.com/raspberry-pi-2-specs/ +[9]:http://itsfoss.com/intels-compute-stick/ \ No newline at end of file diff --git a/sources/talk/20150310 FAQ--BSD.md b/sources/talk/20150310 FAQ--BSD.md new file mode 100644 index 0000000000..80f77ef656 --- /dev/null +++ b/sources/talk/20150310 FAQ--BSD.md @@ -0,0 +1,81 @@ +FAQ: BSD +================================================================================ +![](http://www.linuxvoice.com/wp-content/uploads/2015/02/faq1-large1.png) + +### Had history been slightly different, you’d be reading FreeBSD Voice today… ### + +#### So what’s the deal with this Birsa Seva Dal then? Isn’t it a political group in India? #### + +Very funny – you looked up the “BSD” disambiguation page on Wikipedia just to make that joke, didn’t you? Here we’re talking about the Berkeley Software Distribution, a family of operating systems that are much more widely used than you might think. + +#### Sorry, I couldn’t help myself. OK, so what’s the deal with these OSes? #### + +There are three main BSD operating systems in use today. They are based on Unix, they are open source, they tend to be used in server roles, but can also make good desktops and workstations as well. They run KDE, Firefox, LibreOffice, Apache, MySQL and pretty much any open source application you can name. They’re reliable, secure and support a lot of different hardware. + +#### Congratulations – you’ve just described GNU/Linux… #### + +True. Linux has all of the things I’ve just mentioned, and that’s why a lot of people never investigate BSD. In day-to-day usage, there isn’t a lot of difference between the BSD family and Linux, largely because they all have Unix underpinnings, and also because they share a lot of software. You could be logged into a remote machine, hacking some Python code in Vim, and checking your email in Mutt, and you wouldn’t know you were running BSD. Or you could be using an internet terminal in a cafe somewhere and not know it’s BSD. + +The biggest differences are in the development model and licence, and to understand this, we need to step back in time. The B in BSD refers to the University of California, Berkeley, which was a hotbed of open source Unix development back in the 1980s. As the 90s came, x86-based PCs were becoming popular and many people were interested in having a Unix-like OS on their home computers. A project called 386BSD was released in 1992 to provide just that. + +#### And where were all the Linux distributions at this time? #### + +Good question! You might know that one year before, Linus Torvalds had announced his kernel, which, when paired with the GNU project, formed a complete open source operating system. Linus had been following GNU’s own kernel (Hurd) and 386BSD, and said that had either of them been ready for daily use, he probably wouldn’t have created Linux. So the first few years of the 90s were tremendously lively for open source operating systems, and nobody was really sure which ones would succeed. + +Then it got messy for BSD. AT&T, the original developer of Unix, was trying to monetise its work on the operating system and claimed that BSD infringed its intellectual property rights. This culminated in a lawsuit in 1992 which severely held back BSD development. In the end, various chunks of the BSD source code had to be rewritten – while all this time, GNU/Linux was gaining features, stability and popularity. + +BSD was arguably in a more mature state than GNU/Linux in the early 1990s, and without these legal complications it could have become the standard on x86 PCs. We could all be using it today instead of Linux. + +#### But you said earlier that BSD is still widely used, so things improved after that? #### + +Yes. 386BSD development stagnated, but two teams of developers working over the internet created separate successor projects. FreeBSD became the most widely used flavour of BSD, and is now the closest to Linux as a desktop and server operating system, while NetBSD focused on portability (today it runs on over 50 platforms, all built from the same codebase). The third flavour, OpenBSD, forked off from NetBSD just a few years after NetBSD started due to a developer spat, and today it’s well known for its concentration on security. Over the years, OpenBSD has created many programs that have become standard on Linux, such as OpenSSH – and now we have LibreSSL too. + +#### So these three flavours of BSD are like Linux distributions? #### + +Yes and no. Each BSD has a separate codebase and separate development teams, although there is a lot of code-flow between them (especially for hardware drivers). But they are standalone operating systems with their own features, pros and cons. + +We mentioned that the development model of the BSDs is one feature that really distinguishes them from GNU/Linux. There’s nobody in charge of GNU/Linux as a whole: some teams are working on the GNU components, some are working on the kernel, some on boot scripts, some on manual pages, some on libraries, and so forth. The development model is often called “wild west”, with a lack of central authority, and distributions do all the hard work of fitting everything together. + +The BSDs, in contrast, are developed as complete projects from centralised source code trees. The kernel, the libraries, the system utilities and the manual pages are all stored and worked on in the same place. Many BSD fans argue that this gives the operating systems more coherency and stability, and from our years of dabbling with BSD we can attest that the manual pages are largely superb. + +![](http://www.linuxvoice.com/wp-content/uploads/2015/02/faq2-large1.png) + +#### Don’t the BSDs use anything from GNU/Linux? #### + +Yes, especially GCC. The GNU Compiler Collection has been the de-facto standard compiler on free Unix systems for decades, although FreeBSD has recently moved to LLVM/Clang. It’s important to note that the BSDs also use other open source projects that aren’t specifically GNU or Linux, such as the X Window System (XFree86 and X.org), Perl and so forth. And thanks to standards such as POSIX, most programs that run on Linux can be recompiled to run on the various BSD flavours. + +So, you could replace the L in a LAMP (Linux, Apache, MySQL and PHP) stack with FreeBSD, and get pretty much the same environment, with a different set of features (eg variations in filesystem and driver support). And there are some mega, super, huge users of FreeBSD, such as Netflix, which serve up ridiculous amounts of data every day. While FreeBSD makes a good desktop OS, its strengths really lie in the server room, with exceptional reliability and network performance. + +OpenBSD tends to be used in smaller web serving, file hosting, firewall and gateway roles where security is imperative. NetBSD is the least popular of the main BSD flavours – it can run on almost anything though, including old Amigas and Acorn boxes, and sometimes finds itself inside closed-source network devices. + +#### Hang on – how can someone close the source code? That ain’t kosher in Linux! #### + +Correct, and here we come to the other major difference with GNU/Linux. The licence for the BSD flavours (called, funnily enough, the BSD Licence) is very different to the GPL that we know. For starters, it’s much shorter. The BSD Licence essentially says: do what you want with this code, but give the original developers credit for writing it, and don’t try to sue them if it blows up your computer. + +So there’s nothing in the licence that forces the code to stay open, unlike with the GPL, which requires that users of the code also make their modifications freely available. This crucial difference has sparked countless flame wars over the years, with BSD fans saying that their licence is more free (because it’s less restrictive), while GNU/GPL fans say that their licence is actually more free (because it preserves freedom down the road). + +#### Blimey. Anyway, now that you’ve piqued my interest, where can I try out all these lovely BSD flavours? #### + +You can probably guess the websites – [www.openbsd.org][1], [www.freebsd.org][2] and [www.netbsd.org][3] – where you can download ISO images, boot them in VirtualBox, and play around. If you’ve been using Linux for a while, you won’t find any of them too difficult, although you’re expected to know your way around the command line. If you’re looking for something more newbie-friendly, PC-BSD + +([www.pcbsd.org][4]) is a customised version of FreeBSD focused on the desktop, with a fancy graphical installer and super-simple management of software. Have fun exploring! + + + + + +-------------------------------------------------------------------------------- + +via: http://www.linuxvoice.com/faq-bsd-2/ + +作者:[Mike Saunders][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxvoice.com/author/mike/ +[1]:http://www.openbsd.org/ +[2]:http://www.freebsd.org/ +[3]:http://www.netbsd.org/ +[4]:http://www.pcbsd.org/ \ No newline at end of file diff --git a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md b/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md new file mode 100644 index 0000000000..286c909768 --- /dev/null +++ b/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md @@ -0,0 +1,59 @@ +How To Get Email Alerts for SSH Login on Linux Server +================================================================================ +![](http://www.ehowstuff.com/wp-content/uploads/2015/03/fail2ban-security.jpg) + +Enable SSH server on a virtual private server (VPS) will expose the server to the internet and provide opportunities for hacking activities, especially when VPS still using root as a primary access. VPS should be configured with a email alert automatically to each successful login attempts via SSH server . VPS server owner shall be notified of any SSH server access log, such as who, when and which source IP address. This is an important security concern for server owners to protect the server from unknown login attempts. This is because if hackers use brute force to log into your VPS via ssh then it can be very dangerous. In this article, I will explain how to set up an email alert to all SSH login users on linux CentOS 6, CentOS 7, RHEL 6 and RHEL 7. + +1. Login to your server as root user : + +2. Configure at alert from source global definitions (/etc/bashrc). This will enabled for root and normal users : + + [root@vps ~]# vi /etc/bashrc + +Add the following at the bottom of the files. + + echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com + +3. Optionally you can enable alert for root only : + + [root@vps ~]# vi .bashrc + +Add the following at the bottom of /root/.bashrc : + + echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com + +Full Configuration file example : + + # .bashrc + + # User specific aliases and functions + + alias rm='rm -i' + alias cp='cp -i' + alias mv='mv -i' + + # Source global definitions + if [ -f /etc/bashrc ]; then + . /etc/bashrc + fi + echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com + +4. Optionally you can enable alert for specify normal user (e.g skytech ) : + + [root@vps ~]# vi /home/skytech/.bashrc + +Add the following at the bottom of /home/skytech/.bashrc : + + echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com + +-------------------------------------------------------------------------------- + +via: http://www.ehowstuff.com/how-to-get-email-alerts-for-ssh-login-on-linux-server/ + +作者:[skytech][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ehowstuff.com/author/mhstar/ \ No newline at end of file diff --git a/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md b/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md new file mode 100644 index 0000000000..cf356462da --- /dev/null +++ b/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md @@ -0,0 +1,28 @@ +[Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip] +================================================================================ +### Problem: ### + +When Ubuntu 14.04 or 14.10 comes back from sleep or suspend mode, the keyboard and mouse freeze. Nothing can be clicked or entered. The only way out is to force shutdown the system by pressing the power button. This is very inconvenient, rather very annoying. Because the default behavior in Ubuntu is that when you close the lid of the laptop, it goes in sleep mode. + +In this quick post, we shall see how to fix this issue of mouse freeze after suspend in Ubuntu 14.04 and 14.10. + +### Solution to mouse freezing after sleep in Ubuntu 14.04 ### + +The issue is actually coming from Kernel upgrade. I am not sure of the reason why, but a re-install of input device driver seems to be fixing this issue. + + sudo apt-get install --reinstall xserver-xorg-input-all + +This quick tip was based on a question asked by an It’s FOSS reader, Dev. Try this quick tip and see if it works for you as well. In a similar issue, you can [fix no Unity, launcher and dash after logging in to Ubuntu][1]. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/keyboard-mouse-freeze-suspend/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/how-to-fix-no-unity-no-launcher-no-dash-in-ubuntu-12-10-quick-tip/ \ No newline at end of file From d0bc9007593d1b4ad93f9ede737c21c96180aa57 Mon Sep 17 00:00:00 2001 From: Wi Date: Tue, 10 Mar 2015 21:43:54 +0800 Subject: [PATCH 522/725] Update 20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md Translating, , , --- ...Italian Region Emilia-Romagna Is Switching To OpenOffice.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md index 59df5a0b2d..91ac747dbe 100644 --- a/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md +++ b/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md @@ -1,3 +1,4 @@ +Translating by 355968851 Italian Region Emilia-Romagna Is Switching To OpenOffice ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Turin_Open_Source.jpg) @@ -37,4 +38,4 @@ via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/ [5]:http://en.wikipedia.org/wiki/Emilia-Romagna [6]:https://www.openoffice.org/ [7]:http://www.slwoods.co.uk/?p=2886 -[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ \ No newline at end of file +[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ From db7ad744da238d1accc2b70727055f516e2e460e Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 10 Mar 2015 22:01:16 +0800 Subject: [PATCH 523/725] PUB:20141205 How to configure a syslog server with rsyslog on Linux @theo-l --- ...e a syslog server with rsyslog on Linux.md | 60 ++++++++----------- 1 file changed, 26 insertions(+), 34 deletions(-) rename {translated/tech => published}/20141205 How to configure a syslog server with rsyslog on Linux.md (62%) diff --git a/translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md b/published/20141205 How to configure a syslog server with rsyslog on Linux.md similarity index 62% rename from translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md rename to published/20141205 How to configure a syslog server with rsyslog on Linux.md index 21d6e8993b..49dd3eb4d4 100644 --- a/translated/tech/20141205 How to configure a syslog server with rsyslog on Linux.md +++ b/published/20141205 How to configure a syslog server with rsyslog on Linux.md @@ -1,9 +1,8 @@ -如何在linux上通过rsyslog来配置一个syslog服务器 +在 Linux 上配置一个 syslog 服务器 ======================================================================== -syslog服务器表示一个用来监控一个网络中的端点--所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)--的中央日志。 通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查看和获取重要的日志消息。 - -**rsyslog** 被作为标准的syslog守护进程预装在了大多数的Linux发行版中。在客户端/服务器架构的配置下,**rsyslog**同时扮演了两种角色:1.作为一个syslog服务器,**rsyslog**可以收集来自其他设施的日志信息;2.作为一个syslog客户端,**rsyslog**可以将其内部的日志信息传输到远程的syslog服务器。 +syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它。 通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查看和获取重要的日志消息。 +**rsyslog** 作为标准的syslog守护进程,预装在了大多数的Linux发行版中。在客户端/服务器架构的配置下,**rsyslog**同时扮演了两种角色:1.作为一个syslog服务器,**rsyslog**可以收集来自其他设施的日志信息;2.作为一个syslog客户端,**rsyslog**可以将其内部的日志信息传输到远程的syslog服务器。 在此,我们演示了在linux上如何通过**rsyslog**来配置一个中心化syslog服务器。 在进入详解之前,先温习一下syslog标准。 @@ -12,12 +11,11 @@ syslog服务器表示一个用来监控一个网络中的端点--所有能够通 当通过syslog机制来收集日志时,有3个必须要考虑到的重要事情: - **设施层级**: 监听何种类型的进程 -- **严重性 (优先) 级别**: 收集何种类型的日志消息 +- **严重性 (优先) 级别**: 收集何种级别的日志消息 - **目标**: 发送或记录日志消息到何处 现在我们更加深入地了解一下配置是如何定义的。 - 设施层级定义了一种用来对内部系统进程进行分类的方法,linux中的一些常见的设施包括: - **auth**: 身份验证相关的消息(登录时) @@ -29,7 +27,7 @@ syslog服务器表示一个用来监控一个网络中的端点--所有能够通 - **lpr**: 打印服务相关的消息 - **local0 - local7**: 用户自定义的消息 (local7 通常被Cisco 和 Windows 服务器 使用) -严重性(优先)级别是通过标准的缩写和赋予的数字来进行定义和标准化的,其中的数字7具有最高的级别,这些级别包含了: +严重性(优先)级别有固定的标准缩写和指代的值,其中的数字7具有最高的级别,这些级别包含了: - emerg: Emergency(紧急)- 0 - alert: Alerts (报警)- 1 @@ -40,79 +38,75 @@ syslog服务器表示一个用来监控一个网络中的端点--所有能够通 - info: Information (消息)- 6 - debug: Debugging (调试)- 7 -最后,目标语句迫使一个syslog客户端来执行以下3个任务中的一个:1.保存日志消息到一个本地文件;2. 通过TCP/UDP将消息路由到远程的syslog服务器中 -;3.将其发送到一个标准输出中,例如控制台。 +最后,目标语句会让一个syslog客户端来执行以下三个任务之一: -在rsyslog, syslog配置是基于以下模式进行结构化的。 +1. 保存日志消息到一个本地文件; +2. 通过TCP/UDP将消息路由到远程的syslog服务器中; +3. 将其发送到一个标准输出中,例如控制台。 + +在 rsyslog里, syslog的配置是基于以下模式进行结构化的。 [facility-level].[severity-level] [destination] -### Configure Rsyslog on Linux ### ### 在Linux中配置Rsyslog### -在我们理解syslog之后,现在是时候来通过rsyslog来将一个Linux服务器配置为一个中心syslog服务器了,另外我们也将看到如何将基于Windows的系统配置为一个syslog客户端来发送内部日志到该syslog服务器中。 +在我们理解syslog之后,现在可以通过rsyslog来将一个Linux服务器配置为一个中心syslog服务器了,另外我们也将看到如何在一个Windows的系统上配置一个syslog客户端来发送内部日志到该syslog服务器中。 ### 第1步: 初始化系统需求 ### -为了将linux主机设置为一个中央日志服务器, 我们需要创建一个隔离的/var 分区,并分配足够大的磁盘空间或者创建一个特殊的LVM卷组。这样就会使得syslog服务器能够承担在日积月累收集日志所带来的潜在增长。 - +要将linux主机设置为一个中央日志服务器, 我们需要创建一个分离的 /var 分区,并分配足够大的磁盘空间或者创建一个特殊的LVM卷组。这样就会使得syslog服务器能够承担在日积月累收集日志所带来的潜在增长。 ### 第2步: 让rsyslog 后台进程生效 ### rsyslog守护进程来自于当前的linux发布版本的预装模块,但是默认并没有启动。为了能够让rsyslog守护进程能够接受外部的消息,需要编辑其配置文件/etc/rsyslog.conf. -如果已经准备好打开文件进行编辑,查找到下面的两行所在的位置,通过删除其行首的#字符来取消其注释。 +打开文件进行编辑,查找到下面的两行所在的位置,通过删除其行首的#字符来取消注释。 $ModLoad imudp $UDPServerRun 514 -这会使得rsysolog守护进程能够在UDP端口514上接受日志消息了---UDP是一种比TCP速度快,但是并不具有TCP一样的数据流程的可靠性。所以如果你需要使用可靠的传送机制,就可以通过取消以下行的注释。 +这会使得rsysolog守护进程能够在UDP端口514上接受日志消息了---UDP是一种比TCP速度快,但是并不具有TCP一样的数据流的可靠性。所以如果你需要使用可靠的传送机制,就可以通过取消以下行的注释。 $ModLoad imtcp $InputTCPServerRun 514 需要注意的是,TCP和UDP可以被同时生效来监听TCP/UDP 连接。 -### 第3步:创建日志接受模板### +### 第3步:创建日志接收模板### 接下来的这步,需要我们来为远程消息创建模板,并告知rsyslog守护进程如何记录从其他客户端机器所接受到的消息。 - 使用文本编辑器来打开 /etc/rsyslog.conf,然后在GLOBAL DIRECTIVE块前追加以下的模板。 $template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * *.* ?RemoteLogs & ~ -在此对该模板进行简单解释,$template RemoteLogs(“RemoteLogs” 字符串可以为任何其他的指令名称)指令强制rsyslog后台进程将日志消息写道/var/log下的分开的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。其中第二行暗示了我们将RemoteLogs模板应用到所有接受到的日志上。 - - -符号"& ~"表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果该重定向规则没有使用,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。 +在此对该模板进行简单解释,$template RemoteLogs(这里“RemoteLogs” 字符串可以为任何其他的描述性的名称)指令使rsyslog后台进程将日志消息写到/var/log下的单独的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。其中第二行暗示了我们将RemoteLogs模板应用到所有接收到的日志上。 +符号"& ~"表示了一个重定向规则,被用来告知rsyslog守护进程停止对日志消息的进一步处理,并且不要在本地写入。如果没有使用该重定向规则,那么所有的远程消息都会在写入上述描述的日志文件之外同时被写入到本地日志文件,这就意味着日志消息实际上被写了两次。使用该规则的另外一个结果就是syslog服务器本身的日志消息只会被以该机器主机名命名的专有文件中。 如果你想要的话,也可以使用下面的模式对特定的设备或严重性级别使用新的模板直接来记录日志消息。 - [facility-level].[severity-level] ?RemoteLogs 例如: -将所有内部的所有优先级别的用户验证消息指定为RemoteLogs模板: +将全部优先级别的所有内部用户验证消息指定为RemoteLogs模板: authpriv.* ?RemoteLogs -将所有系统进程中除开mail,用户验证和cron消息之外的进程产生的消息级别的日志指定为RemoteLogs模板: - +将所有系统进程中除开mail、用户验证和cron消息之外的进程产生的消息级别的日志指定为RemoteLogs模板: *.info,mail.none,authpriv.none,cron.none ?RemoteLogs -如果我们想要将所有从远程客户端接受到的消息写入到一个以它们的IP地址命名的单个文件中,可以使用以下的模板。在此我们为该模板赋予了“IPTemplate”名称。 +如果我们想要将所有从远程客户端接受到的消息写入到一个以它们的IP地址命名的单个文件中,可以使用以下的模板。在此我们为该模板赋予了“IpTemplate”名称。 $template IpTemplate,"/var/log/%FROMHOST-IP%.log" *.* ?IpTemplate & ~ -在我们生效rsyslog守护进程以及编辑其配置文件之后,需要重启该守护进程。 +在我们启用rsyslog守护进程并编辑好配置文件之后,需要重启该守护进程。 在 Debian,Ubuntu 或 CentOS/RHEL 6中: @@ -138,19 +132,17 @@ rsyslog守护进程来自于当前的linux发布版本的预装模块,但是 ### 发送Windows日志到一个远程的rsyslog服务器### -为了将一个Windows客户端的日志消息转发到我们的rsyslog服务器,需要一个Windows syslog 代理。当然,有许多的syslog代理可以在windows上运行,在此我们可以使用一个自由软件程序 [Datagram SyslogAgent][1]. - - +要将一个Windows客户端的日志消息转发到我们的rsyslog服务器,需要一个安装 Windows syslog 代理。当然,有许多的syslog代理可以在windows上运行,在此我们可以使用一个自由软件程序 [Datagram SyslogAgent][1]. 在下载安装该syslog代理后,需要将其配置为作为服务运行。指定使用何种协议来发送数据,以及远程rsyslog服务器的IP地址和端口,最后指定应该传输的事件日志类型,如下所示。 ![](https://farm8.staticflickr.com/7509/15305930594_27b7f4440a_o.jpg) -在我们完成所有的这些配置之后,我们就可以启动该服务并且在中央rsyslog服务器中使用命令行工具tailf来查看日志文件了。 +在我们完成所有的这些配置之后,我们就可以启动该服务并且在中央rsyslog服务器中使用命令行工具tail -f来查看日志文件了。 ### 总结### -通过创建一个可以收集本地和远程主机的中央rsyslog服务器,我们可以更好地了解在这些系统内部究竟发生着什么,而且可以更加容易地调试他们的问题,是否在他们之间有任何缓慢或崩溃存在。 +通过创建一个可以收集本地和远程主机的中央rsyslog服务器,我们可以更好地了解在这些系统内部究竟发生着什么,而且可以更加容易地调试它们的问题,是否在它们之间有任何延迟或崩溃存在。 -------------------------------------------------------------------------------- @@ -158,7 +150,7 @@ via: http://xmodulo.com/configure-syslog-server-linux.html 作者:[Caezsar M][a] 译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3728dec73d311a88900153588163f14faf4d451a Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 10 Mar 2015 22:40:01 +0800 Subject: [PATCH 524/725] Update 20141204 Intense Gameplay--Try these 13 Roguelike games.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译该篇。 --- ...20141204 Intense Gameplay--Try these 13 Roguelike games.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md b/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md index 14ce0991d0..199474e714 100644 --- a/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md +++ b/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md @@ -1,3 +1,5 @@ +FSSlc translating + Intense Gameplay? Try these 13 Roguelike games ================================================================================ Roguelike is a sub-genre of role-playing games. It literally means "a game like Rogue". Rogue is a dungeon crawling video game first released in 1980, standing out for being fiendishly addictive. Its goal was to retrieve the Amulet of Yendor, hidden deep in the 26th level, and ascend back to the top. @@ -401,4 +403,4 @@ via: http://www.linuxlinks.com/article/201412031524381/RoguelikeGames.html [11]:http://rephial.org/ [12]:http://sourceforge.net/apps/trac/unnethack/ [13]:http://www.roguetemple.com/z/hydra/ -[14]:https://sites.google.com/site/broguegame/ \ No newline at end of file +[14]:https://sites.google.com/site/broguegame/ From 0b7e8770c27b9b7d4fd314fb3347fb22c98f69c0 Mon Sep 17 00:00:00 2001 From: Wi Date: Tue, 10 Mar 2015 22:50:13 +0800 Subject: [PATCH 525/725] Delete 20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md --- ...ilia-Romagna Is Switching To OpenOffice.md | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md diff --git a/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md deleted file mode 100644 index 91ac747dbe..0000000000 --- a/sources/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md +++ /dev/null @@ -1,41 +0,0 @@ -Translating by 355968851 -Italian Region Emilia-Romagna Is Switching To OpenOffice -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Turin_Open_Source.jpg) - -Italy seems to be winning the race to Open Source adoption, it seems. We have learned about how various Italian cities like [Udine][1], [Turin][2], [Todi and Turni][3] opted for [open source alternatives of Microsoft office][4] in the past. Now the news comes that [Emilia-Romagna][5] region in northern Italy is about to complete its switch to [Apache OpenOffice][6] next month. - -### Switching to OpenOffice ### - -The migration to OpenOffice will be complete by next month and will cover 4200 workstations, across 10 departments and 5 agencies. In addition, Open Document Format (ODF) will be the default document format. The initiative to switch to OpenOffice was approved in late 2013 and was originally planned to be completed by end of 2014. The move to OpenOffice from proprietary office product is believed to [save around 2 million euro][8] in licensing fee. - -To ease this migration and improve interoperability, several custom tools and plugins are also being developed by the team in charge of the migration. - -Head of the project, Giovanni Grazia is enthusiastic about the migration but he is prepared for the brickbats as well. - -> “Changing office suite is hard work, and we use the occasion to advocate for free and open source software. Some of the region’s civil servants are keen to switch, and some are very annoyed, as they have been using the proprietary alternative for 20 years. To deal with any issues during the transition, a team of five support staffers is backed up by three IT specialists. Department by department, one at a time, we’re completing the switch. Step by step, change is coming.” - -#### Best wishes #### - -I wish good luck to Grazia and hope that other administrative regions in Italy will follow the suit. I also hope that neighboring countries like [France will also speed up the open source adoption process][8]. - - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/udine-open-source/ -[2]:http://itsfoss.com/italian-city-turin-open-source/ -[3]:http://itsfoss.com/italian-cities-switch-libreoffice/ -[4]:http://itsfoss.com/best-free-open-source-alternatives-microsoft-office/ -[5]:http://en.wikipedia.org/wiki/Emilia-Romagna -[6]:https://www.openoffice.org/ -[7]:http://www.slwoods.co.uk/?p=2886 -[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ From c57385523e181e1869b1f6e6ae08388b3c740bbf Mon Sep 17 00:00:00 2001 From: Wi Date: Tue, 10 Mar 2015 22:53:37 +0800 Subject: [PATCH 526/725] Create 20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md Translated by wi --- ...ilia-Romagna Is Switching To OpenOffice.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md diff --git a/translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md new file mode 100644 index 0000000000..0dfbfce001 --- /dev/null +++ b/translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md @@ -0,0 +1,38 @@ +意大利Emilia-Romagna区正在切换到OpenOffice +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Turin_Open_Source.jpg) + +在拥抱开源的道路上,意大利似乎走在了最前面.我们已经知道,很多意大利的城市如Udine,Turin,Todi和Turin过去已经选择了开源办公套件以取代微软的Office.现在,位于意大利北部的Emilia-Romagna区也将在下个月完成向Apache OpenOffice的过渡. + +### Switching to OpenOffice ### + +这次向OpenOffice的转变将会在下个月完成,而且将会覆盖4200个工作站,涉及到10个部门和5个代理部门. 而且,开源文档格式(ODF)也将成为默认的文档格式.向OpenOffice的过渡最初在2013年底被提出来,原本打算在2014年底完成.这次改用OpenOffice从专用办公产品认证费用来说,相信会节约大概2 000 000欧元. + +为了使这次搬家顺利,提高内部可操作性,许多定制工具和插件也正在被负责这次搬家的团队开发出来. + +本次项目的负责人,Giovanni Grazia对本次"搬家"充满激情,但同时他也会做好应对批评 +> "改用新的办公套件不是容易完成的工作,我们借这次机会来拥护免费和开源的软件.一些地区的公务员表示深深的支持,而令一些则感到厌烦, 因为他们已经使用专业产品二十年了.为了处理任何在转变中发生的问题,一个有五个支持人员的团队已经得到了三个IT专家的支持.一个部门接一个部门,逐渐地,我们将完成这次过渡.一步步的,改变正在发生." + +#### Best wishes #### + +我希望祝Grazia好运,其他的意大利辖区也会使用OpenOffice套件.也希望像法国这样的邻国也会加速拥抱开源的进程. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/udine-open-source/ +[2]:http://itsfoss.com/italian-city-turin-open-source/ +[3]:http://itsfoss.com/italian-cities-switch-libreoffice/ +[4]:http://itsfoss.com/best-free-open-source-alternatives-microsoft-office/ +[5]:http://en.wikipedia.org/wiki/Emilia-Romagna +[6]:https://www.openoffice.org/ +[7]:http://www.slwoods.co.uk/?p=2886 +[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ From 3fdbf2dce8428147cc06898c2d30c20b54fdd8dc Mon Sep 17 00:00:00 2001 From: martin qi Date: Tue, 10 Mar 2015 23:31:24 +0800 Subject: [PATCH 527/725] Update 20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md translating by martin. --- ... Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md b/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md index cf356462da..f0915baf40 100644 --- a/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md +++ b/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md @@ -1,3 +1,5 @@ +translating by martin. + [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip] ================================================================================ ### Problem: ### @@ -25,4 +27,4 @@ via: http://itsfoss.com/keyboard-mouse-freeze-suspend/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/how-to-fix-no-unity-no-launcher-no-dash-in-ubuntu-12-10-quick-tip/ \ No newline at end of file +[1]:http://itsfoss.com/how-to-fix-no-unity-no-launcher-no-dash-in-ubuntu-12-10-quick-tip/ From 58b2fa30ca680425bf09b2d94303c8e4019db04e Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 11 Mar 2015 00:44:29 +0800 Subject: [PATCH 528/725] PUB:20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @FSSlc 翻译的不错,部分语句我做了修改。 --- ...s To Supercharge Your Ubuntu Experience.md | 158 ++++++++++++++++++ ...s To Supercharge Your Ubuntu Experience.md | 155 ----------------- 2 files changed, 158 insertions(+), 155 deletions(-) create mode 100644 published/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md delete mode 100644 translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md diff --git a/published/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md b/published/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md new file mode 100644 index 0000000000..d18644094c --- /dev/null +++ b/published/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md @@ -0,0 +1,158 @@ +让你玩转 Ubuntu 桌面的十一件武器 +================================================================================ +**无论你是一个相对的新手还是经验丰富的专家,我们都想从我们的操作系统中得到更多的东西。正如大多数现代的操作系统,相比于乍一看呈现出的内容,Ubuntu 还有更多东西可以向我们提供。** + +从调整和优化 Unity 桌面的外观、行为、性能到执行系统维护,这里有大量的实用工具和应用可以帮助你**调整 Ubuntu ,随时满足你的需求**。 + +注意: Ubuntu 总是配备了‘合理的默认设置’(即工作良好的选项),以达到开箱即用,这些默认设置适合大多数人,并且它们都是经过了测试、采用及推荐等过程的。 + +但一个尺码并不适合所有人。对于我们当中的能工巧匠和实验主义者来说,默认设置只是他们定制系统的起点。 + +所以,无需更多的唠叨, 这里有 11 个极好的实用工具可以帮助你增强 Ubuntu 使用体验。 + +### Unity Tweak Tool ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/unity-tweak-tool.jpg) + +我将以这个列表中最重要的一个工具: **Unity Tweak Tool** 来开始这次的介绍。融汇了各种定制选项,Unity Tweak Tool 提供了一系列针对 Ubuntu 和 Unity 桌面的系统综合调整功能。 + +它被各种开关、切换和控制器塞得满满的,使得你可以任意设置从 Unity 桌面的外观到 Unity 的行为之类的任何东西。你可以使用它**快速简便地改变 GTK 主题和图标集**、设置热区、调整启动器图标尺寸、增加或移除工作区,以及 ---特别地---开启 Unity 桌面中被巧妙隐藏的“通过点击最小化”的功能。 + +它是免费的,可直接从 Ubuntu 软件中心里找到, Unity Tweak Tool 是非常值得保留在你的口袋里的工具之一。 + +### Unity 隐私指示器 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/indicator-privacy-in-ubuntu.jpg) + +隐私是一个非常、非常重要的事,事实也恰恰如此,但这个话题要比二进制还难以说明白。让一些数据或习惯,比如说你经常打开的应用,在本地被记录下来,这或许会让你感到高兴,但对于你在 Dash 中的搜索数据被发送到第三方服务机构(尽管这些数据或许是匿名的)这类事情,你就高兴不起来了。 + +[隐私指示器][1] 是一个帮助你时刻跟踪 Ubuntu桌面系统中有哪些文件、目录和服务正被获取、记录及搜索的实用工具。 + +通过快速的点击被添加到桌面面板上的‘眼睛’图标,你可以: + +- 开启或关闭在线搜索结果,使用 Zeitgeist 记录系统活动,存储 HUD 使用记录和启用 Ubuntu GeoIP 服务 +- 快速清理 Zeitgeist 日志、 ALT-F2 历史、最近访问文件等等的记录数据 +- 展示或隐藏桌面图标及面板上显示的用户名 + +上述的最后一条的功能似乎不应该出现在这个应用程序中,但对于那些要分享截图或截屏的人来说,这将会泄露更少的隐私。 + +- [从这里下载隐私指示器 (.deb)][2] + +### Unity 橱窗 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/unity-folders.jpg) + +**Android, iOS, OS X, Chrome OS, 和 GNOME Shell 都有应用橱窗, 借助一个极好的第三方应用,Unity 也可以实现类似功能。** + +“Unity 橱窗” 允许你将 Unity 启动器中的应用分组到实用的橱窗中,--- 如游戏,办公,社交等。不必打开 Dash,你就可以快速启动你喜爱的应用,这非常适合你的工作流。 + +每一个 ‘橱窗’其实上是一个打开在图标附近的应用窗口,但总体效果看上去就像是一个 OS X 风格的“堆栈”或 Android 的分组框。 + +橱窗的图标可以自定义或根据橱窗内的应用来自动生成。已有的橱窗可以修改和重新组织、重命名以及如下的更多选择: + +- 根据你的喜好创建任意多的橱窗 +- 选择自定义或自动生成橱窗图标 +- 可选择 3 种橱窗样式 +- 为添加到橱窗中的应用设定自定义图标 +- 编辑现有橱窗 + +[Unity 橱窗的网址](http://unity-folders.exceptionfound.com/) + +### 咖啡因(Caffeine) ### + +对于我们中的许多人来说,咖啡因是必需品,而不仅仅是饮料。而这里的“咖啡因”则提供了一个快速,温和的方式来避免屏保/锁屏占据屏幕。它的有用程度将取决于你的环境(即你系统的怪癖),并且尽管它不像以前那样好用,它仍然值得你[尝试一下][3]。 + +[下载咖啡因(Caffeine) ](https://launchpad.net/~caffeine-developers/+archive/ppa/+files/caffeine_2.7_all.deb) + +### 系统监控指示器 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/multiload-indicator-in-ubuntu.jpg) + +假如你是一个状态迷,即一个喜欢密切关注程序,进程和硬件的状态的人, Linux 很容易满足你的需求。从 Conky 的配置到终端命令,并不缺少监视你的 CPU 使用情况、网络流量或 GPU 温度的方法。 + +但至今为止,我最喜爱的应用是**系统监控指示器**(也被叫做多负载指示器),它可从 Ubuntu 软件中心获得。它也有着大量的配置选项。 + +- [点击这个链接,在 Ubuntu 中下载 ‘系统监控指示器’][4] + +### 针对 Linux 笔记本电脑的省电工具 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2012/08/front.jpg) + +#### TLP #### + +当提到便携式设备上的电池使用效率时,Linux 发行版的声誉并不算好。 + +如果你的 Linux 笔记本在重新充电前,电池只够让你从沙发走到厨房的话,那么这里有几个你可以试试的工具。 + +TLP 是最受欢迎的确保延长 Linux 笔记本的电池寿命的自动化后台工具之一,它是通过调整系统进程和硬件的设置及行为来达成省电的,例如 启动 Wi-Fi 省电模式, PCI 总线设备的实时电量管理和处理器的降频调整。 + +在 Ubuntu 14.04 LTS 以及后续发行版本中可以[使用 TLP 专用的 PPA 来安装它][11],通过它的‘一下搞定’的设置就能用起来。在我们之中的高级用户可以潜心研究并根据你自己的硬件来调整设置,一个[关于 TLP 的完整指导 wiki][6] 使得设置更加容易。 + +#### Laptop Mode Tools #### + +假如 TLP 听起来有一点复杂,这也并没有什么可羞耻的,这里有一个更简单的替代品: **Laptop Mode Tools**。 这个软件包可从 Ubuntu 软件中心直接安装,且本身设置好了一系列合理的默认设置(Wi-Fi,蓝牙等等)。 + +切记,Laptop Mode Tools 不能和 TLP 同时被安装在电脑中。 + +- [Ubuntu 软件中心里的 Laptop Mode Tools ][7] + +### Intel 显卡驱动安装工具 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2013/04/intelgraphicsdriverinstaller.png) + +对于那些运行 Intel 显卡硬件,并想使得这些硬件发挥出最佳性能的人来说,Intel 显卡安装工具是必须拥有的。 它使得查找并安装最新的 Intel GPU 驱动变得不再是一件痛苦和大费周折的事,因为这无需 PPA 或任何的终端使用知识。 + +- [下载针对 Linux平台的 Intel 显卡驱动安装器 0.7 版本][8] + +### 硬件信息 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/Screen-Shot-2014-02-10-at-21.05.37.png) + +假如你计划升级你的 PC 或想替换一个坏掉的零部件,你需要知道一些特定的硬件信息,例如 RAM 类型,CPU插座类型 或查看哪个 PCI 槽是可用的等信息。 + +**I-Nex**可以使得找出这些以及其他的系统具体配置变得更加容易。使用它来查找你的主板型号、S.M.A.R.T.(注:为 Self-Monitoring, Analysis and Reporting Technology 的缩写,经常写为 SMART ) 状态,以及你想的出的很多东西! + +- [可从 Launchpad 了解到更多关于 I-Nex 的信息][9] + +### 磁盘空间可视化程序 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/disk-usage-visualizer-for-ubuntu.jpg) + +在这个硬盘以 TB 计数的时代,我们或许不必同以前一样对硬盘空间的使用三思而后行。但对于那些使用小容量的 SSD,分成多个分区或在一个拥有固定大小的虚拟磁盘的虚拟机上工作的人来说,总有“应该释放一些额外空间是必要的”这种想法的时候。 + +GNOME Disks,在 Ubuntu 中被默认安装,使得查找占用最大磁盘空间的罪魁祸首变得容易。对于定位隐藏的日志、缓存和视频文件,它是非常完美的工具。 + +### BleachBit (Cruft Cleaner) ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/bleachbit.jpg) + +Windows 用户可能对像 CCleaner 之类的应用很熟悉,它可以扫描并清理垃圾文件、空白文件夹、臃肿的缓存以及陈旧的软件包。在 Ubuntu 上,一个相似的快速且毫不费力的一键式清理方法可以试试 **BleachBit** 。 + +它是一个强大的工具,所以一定要注意你正在清理什么。不要漫无目的地确认每个选项框;不是所有的东西它都可以清理。所以请合理地使用它,当你对某个选项有疑问时,就跳过它。 + +- [从 Ubuntu 软件中心里安装 BleachBit][10] + +你已经有了自己最喜欢的系统实用工具了吗?可以在下面的评论中让其他人知晓它。 + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2014/11/useful-tools-for-ubuntu-do-you-use-them + +作者:[Joey-Elijah Sneddon][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:http://www.florian-diesch.de/software/indicator-privacy/index.html +[2]:http://www.florian-diesch.de/software/indicator-privacy/dist/indicator-privacy_0.04-1_all.deb +[3]:http://www.omgubuntu.co.uk/2014/05/stop-ubuntu-sleeping-caffeine +[4]:apt://indicator-mulitload +[5]:https://launchpad.net/~linrunner/+archive/ubuntu/tlp/+packages +[6]:http://linrunner.de/en/tlp/docs/tlp-configuration.html +[7]:https://apps.ubuntu.com/cat/applications/laptop-mode-tools/ +[8]:https://01.org/linuxgraphics/downloads/2014/intelr-graphics-installer-linux-1.0.7 +[9]:https://launchpad.net/i-nex +[10]:https://apps.ubuntu.com/cat/applications/bleachbit/ +[11]:https://launchpad.net/~linrunner/+archive/ubuntu/tlp/+packages diff --git a/translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md b/translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md deleted file mode 100644 index 5b60043bcd..0000000000 --- a/translated/share/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md +++ /dev/null @@ -1,155 +0,0 @@ -11 个 增强你的 Ubuntu 使用体验的实用工具 -================================================================================ -**无论你是一个相对的新手还是经验丰富的专家,我们都想从我们的操作系统中得到更多的东西。正如大多数现代的操作系统,相比于乍一看呈现出的内容,Ubuntu 有更多东西可以向我们提供。** - -从调整和优化 Unity 桌面的外观、行为、性能 到 执行系统维护,有着大量的实用工具和应用可以帮助你 **调整 Ubuntu 来无时不刻地满足你的需求**。 - -注意时刻: Ubuntu 一直都配备了‘合理的默认设置---即工作良好的选项---’,以达到开箱即用,这些默认设置适合大多数人,并且它们都是经过了测试,采用及推荐等过程的。 - -但一个尺寸并不适合所有。对于我们当中的能工巧匠和实验主义者来说,默认设置只是他们定制系统的起点。 - -所以,无需更多的唠叨, 这里有 11 个极好的实用工具来帮助你增强你的 Ubuntu 使用体验。 - -### Unity Tweak Tool ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/unity-tweak-tool.jpg) - -我将以这个列表中最重要的一个工具: **Unity Tweak Tool** 来开始这次的介绍。定制的厨房水槽(注:不知该如何翻译,感觉意思是:水槽之于厨房的重要性相当于该软件之于定制 Ubuntu 的重要性), Unity Tweak Tool 提供了一系列针对 Ubuntu 和 Unity 桌面的系统综合调整功能。 - -它被各种开关,切换和控制塞得满满的,使得你可以任意设置从 Unity 桌面的外观到 Unity 的行为之类的任何东西。你可以使用它 **快速简便地改变 GTK 主题和图标集**、设置热区、调整启动器图标尺寸、增加或移除工作区,以及 ---特别地---开启 Unity 桌面中被巧妙隐藏的“通过点击最小化”的特点。 - -免费并可直接从 Ubuntu 软件中心里找到, Unity Tweak Tool 是非常值得保留在你的口袋里的工具之一。 - -### Unity Privacy Indicator ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/indicator-privacy-in-ubuntu.jpg) - -隐私是一个非常,非常重要的事,事实也恰恰如此。但这个话题总是被隐藏在二进制之下(注:感觉这里翻译有误,不太确定)。让一些数据或习惯,比如说你经常打开的应用,在本地被记录下来,这或许会让你感到高兴,但对于 你在 Dash 中的搜索数据被发送带第三方服务机构(尽管这些数据或许是匿名的)这类事情,你就高兴不起来了。 - -[Privacy Indicator][1] 是一个帮助你时刻跟踪 Ubuntu桌面系统中哪些文件、目录和服务正被获取、记录及搜索的实用工具。 - -通过快速的点击被添加到桌面面板上的‘眼睛’图标,你可以: - -- 开启或关闭在线搜索结果,Zeitgeist(注:根据图片看,Zeitgeist 指的是 record activity), HUD 记录 和 GeoIP 服务 -- 快速的启用 清理 Zeitgeist,F2(注:根据图片看,F2 指的是 通过 Alt-F2 执行的命令),当前文件等等的记录数据 -- 展示或隐藏桌面图标以及它们在桌面面板上的名称 - -上面的最后两个选项在这个应用中似乎有点被放错了位置,但对于那些要分享截图或截屏的人来说,将会泄露更少的隐私。 - -- [从这里下载 Indicator Privacy (.deb)][2] - -### Unity Folders ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/unity-folders.jpg) - -**Android, iOS, OS X, Chrome OS, 和 GNOME Shell 都有应用橱窗, 借助一个极好的第三方应用,Unity 也可以实现类似功能。** - -“Unity Folders” 允许你组织位于 Unity 启动器中的应用到实用的橱窗中,--- 如 游戏,办公,社交等。不必打开 Dash,你就可以快速启动你喜爱的应用,这非常适合你的工作流。 - -每一个 ‘橱窗’其实一个打开 ,但总体效果看上去就像是一个 OS X 的风格栈 或 Android 的切换框(注:这里的翻译我拿不准)。 - -橱窗的图标可以自定义或根据橱窗内的应用来自动生成。已经存在的橱窗可以被编辑,重新组织,重命名以及如下的更多选择: - -- 根据你的喜好创建任意多的橱窗 -- 选择自定义或自动生成橱窗图标 -- 可选择 3 种橱窗样式 -- 为添加到橱窗中的应用设定自定义图标 -- 编辑现有橱窗 - -[Unity Folders 的网址](http://unity-folders.exceptionfound.com/) -(注:根据原文来看,这里应该有链接,转换为 md 文档时没有加上链接) - -### 咖啡因 ### - -对于我们中的许多人来说,咖啡因是主食,它并不只存在于饮料之中。咖啡因提供了一个快速,温和的方式来阻止你的屏保或锁屏起作用。有用的程度将取决于你的环境(即你系统的怪癖) (注:这一句我没有完全理解原文的意思),并且尽管它不像以前那样对用户友好,它仍然值得你[尝试一下][3]。 - -### 系统状态指示器 (System Monitor Indicator) ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/multiload-indicator-in-ubuntu.jpg) - -假如你是一个状态迷,即一个喜欢密切关注程序,进程和硬件的状态的人, Linux 很容易满足你的需求。从 Conky 的配置到终端命令,并不缺少监视你的 CPU 使用情况、网络流量或 GPU 温度的方法。 - -但至今为止,我最喜爱的应用是 系统**监视指示器**,---也被叫做多负载指示器---它可从 Ubuntu 软件中心获得。它也有着大量的配置选项。 - -- [点击这个链接,在 Ubuntu 中 下载 ‘System Load Indicator’][4] - -### 针对 Linux 笔记本电脑的省电工具 ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2012/08/front.jpg) - -**TLP** - -当提到便携式设备上的电池使用效率时,Linux 发行版本并没有最好的声誉。 - -如果你自己的 Linux 笔记本可以勉强在再次充电之前,让你从沙发到厨房,那么这里有几个你可以试试的工具。 - -TLP 是最受欢迎的确保延长 Linux 笔记本的电池寿命的自动化后台工具之一,它是通过调整系统进程和硬件的设置及行为来达到此目的的,例如 启动 Wi-Fi 省电模式, PCI 总线设备的实时电量管理和处理器的频率缩放调整。 - -在 Ubuntu 14.04 LTS 以及后续发行版本中可以使用 TLP 专用的 PPA 来安装它。且它只带了‘包罗万象’的设置来使你踏上配置它的旅程。 在我们之中的高级用户可以潜心研究并根据你自己的硬件来调整设置,一个 [关于 TLP 的完整指导 wiki][6] 使得设置更加容易。 - -**Laptop Mode Tools** - -假如 TLP 听起来有一点复杂 --这也并没有什么可羞耻的--这里有一个更简单的替代品: **Laptop Mode Tools**。 这个软件包可从 Ubuntu 软件中心直接安装,且本身设置好了一系列合理的默认设置(Wi-Fi,蓝牙等等)。 - -Laptop Mode Tools 不能和 TLP 同时被安装在电脑中。 - -- [Ubuntu 软件中心里的 Laptop Mode Tools ][7] - -### Intel 显卡驱动安装工具 ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2013/04/intelgraphicsdriverinstaller.png) - -对于那些运行 Intel 显卡硬件,并想使得这些硬件发挥出最佳性能的人来说,Intel 显卡安装工具是必须拥有的。 它使得 查找并安装最新的 Intel GPU 驱动变得不再是一件痛苦和大费周折的事 ---因为这无需 PPA 或任何的终端使用知识。 - -- [下载针对 Linux平台的 Intel 图形安装器 0.7 版本][8] - -### Hardware Stats ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/Screen-Shot-2014-02-10-at-21.05.37.png) - -假如你计划 升级你的 PC 或替换一个坏掉的零部件,你需要知道一些特定的硬件信息,例如 RAM 类型,CPU插座类型 或 查看那个PCI 槽是可用的等信息。 - -**I-Nex**可以使得 发掘出以上的信息以及其他的系统具体状态变得更加容易。使用它来查找你的主板型号、S.M.A.R.T.(注:为 Self-Monitoring, Analysis and Reporting Technology 的缩写,经常写为 SMART ) 状态,以及你想得出的很多东西! - -- [可从 Launchpad 了解到更多关于 I-Nex 的信息][9] - -### 磁盘空间可视化程序(Disk Space Visualizer) ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/disk-usage-visualizer-for-ubuntu.jpg) - -在这个硬盘以 1TB 计数的时代,我们或许不必同以前一样对硬盘空间的使用三思而后行。但对于那些使用小容量的 SSD,运行多个分区或在一个拥有固定虚拟磁盘大小的虚拟机上工作,总有感觉 释放一些额外空间是必要的 这种想法的时候。 - -GNOME Disks,在 Ubuntu 中被默认安装,使得查找占用最大磁盘空间的罪魁祸首变得容易。对于定位隐藏的日志、缓存和视频文件,它是非常完美的工具。 - -### BleachBit (Cruft Cleaner) ### - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/bleachbit.jpg) - -Windows 用户可能对像 CCleaner 之类的应用很熟悉,它可以扫描并清理垃圾文件、空白文件夹、臃肿的缓存以及陈旧的软件包。在 Ubuntu 上,一个相似的快速且毫不费力的一键式清理方法可以试试 **BleachBit** 。 - -它是一个强大的工具,所以一定要注意你正在清理什么。不要漫无目的地确认每个选项框;不是所有的东西它都可以清理。所以请合理地使用它,当你对某个选项有疑问时,就跳过它。 - -- [Install BleachBit from Ubuntu Software Center][10] - -你已经有了自己最喜欢的系统实用工具了吗?可以在下面的评论中让其他人知晓它。 --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2014/11/useful-tools-for-ubuntu-do-you-use-them - -作者:[Joey-Elijah Sneddon][a] -译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:http://www.florian-diesch.de/software/indicator-privacy/index.html -[2]:http://www.florian-diesch.de/software/indicator-privacy/dist/indicator-privacy_0.04-1_all.deb -[3]:http://www.omgubuntu.co.uk/2014/05/stop-ubuntu-sleeping-caffeine -[4]:apt://indicator-mulitload -[5]:https://launchpad.net/~linrunner/+archive/ubuntu/tlp/+packages -[6]:http://linrunner.de/en/tlp/docs/tlp-configuration.html -[7]:https://apps.ubuntu.com/cat/applications/laptop-mode-tools/ -[8]:https://01.org/linuxgraphics/downloads/2014/intelr-graphics-installer-linux-1.0.7 -[9]:https://launchpad.net/i-nex -[10]:https://apps.ubuntu.com/cat/applications/bleachbit/ From 00d3f7a2cbae50748e25d935d042fc158c52b5d4 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 11 Mar 2015 12:25:34 +0800 Subject: [PATCH 529/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Es and Code Editors for JavaScript Users.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md index c0bd5881ed..870e5b6888 100644 --- a/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md +++ b/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md @@ -1,21 +1,21 @@ -9款最好的Javacript用户的IDE和代码编辑器。 +9款最好的 Javacript 用户的 IDE 和代码编辑器。 ================================================================================ -网络应用设计和开发是最近一段时间的发展趋势,也有越来越多的人开始在此寻找他们的职业机会。但是,作为网络开发人员或图形设计人员来说,一个好的机会并不是每个人都能够轻易获得到的,它需要很好的思维展现,以及对于工作的熟练技巧。现在有许多可用的网站来根据你的知识帮助你找到正确的工作描述。但是如果你想要在这个领域有所成就,你仍然需要具有一些出色的手段,例如可以在不同的平台、IDE以及其他的工具上开展工作。 +网络应用设计和开发是最近一段时间的发展趋势,也有越来越多的人开始在此寻找他们的职业机会。但是,作为网络开发人员或图形设计人员来说,一个好的机会并不是每个人都能够轻易获得到的,它需要很好的思维展现,以及对于工作的熟练技巧。现在有许多可用的网站来根据你的知识帮助你找到正确的职位描述。但是如果你想要在这个领域有所成就,你仍然需要具有一些出色的技能,例如可以在不同的平台、IDE以及其他的工具上开展工作。 -说到根据不同目的所使用的大量语言用到的不同平台以及IDE,只靠学习一个IDE来容易地获取项目设计的最佳方案的惯例已经属于过去时了。今天我们活在一个竞争日益激烈的现代生活节奏中,对于IDE们也是相同的处境,IDE是一个用来创建和部署应用的强大的客户端应用。今天我们打算为网络设计者和开发人员分享一些最好的Javacript IDE。 +说到根据不同目的和不同语言所用到的不同平台以及IDE,只靠学习一个IDE来轻松获取项目设计最佳方案的惯例已经属于过去时了。今天我们活在一个竞争日益激烈的现代生活节奏中,对于IDE们也是相同的处境,IDE是一个用来创建和部署应用的强大的客户端应用。今天我们打算为网络设计者和开发人员分享一些最好的Javacript IDE。 -请访问作为javascript 用户最好的代码编辑器列表,并将你的想法与我们一起分享。 +请访问这个 javascript 用户最好的代码编辑器列表,并将你的想法与我们一起分享。 ### 1) [Spket][1] ### -**Spket IDE** 是JavaScript和XML开发的强大工具包。该编辑器可以用来进行开发 JavaScript,XUL/XBL 和Yahoo!小组件。 JavaScript编辑器提供了例如代码补全,语法高亮以及代码内容大纲等特性,可以帮助开发者提高创建高效JavaScript代码的生产率。 +**Spket IDE** 是 JavaScript 和 XML 开发的强大工具包。这个功能强大的编辑器可以用来进行开发 JavaScript,XUL/XBL 和 Yahoo!小组件。JavaScript 编辑器提供了例如代码补全、语法高亮以及代码内容大纲等特性,可以帮助开发者提高创建高效 JavaScript 代码的生产率。 ![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/spket-e1422674329554.png) ### 2) [Ixedit][2] ### -IxEdit 基于Javascript交互的网络设计工具。通过IxEdit,设计者可以在不需要通过代码改变,添加,删除或变换页面元素的情况下,在网页上进行动态进行DOM脚本编写。 +IxEdit 是一个基于 Javascript 交互的网络设计工具。通过 IxEdit,设计者可以在不需要通过代码改变,添加,删除或变换页面元素的情况下,在网页上进行动态进行 DOM 脚本编写。 ![](http://i0.wp.com/devzum.com/wp-content/uploads/2015/01/ixedit.png) @@ -26,13 +26,13 @@ Komodo是一款免费而强大的编辑器,可以用来编辑JavaScript和其 ### 4) [EpicEditor][4] ### -EpicEditor是一个可嵌入的 JavaScript Markdown编辑器,具有分割全屏进行编辑,实时预览,自动草稿保存,离线支持等特性。对于开发人员,它提供了健壮的API,可以容易地设置主题,并允许你以任何其他的事物来替换绑定的Markdown解析器。 +EpicEditor是一个可嵌入的 JavaScript Markdown 编辑器,具有分割全屏进行编辑,实时预览,自动草稿保存,离线支持等特性。对于开发人员,它提供了健壮的API,可以容易地设置主题,并允许你以任何其他的事物来替换绑定的 Markdown 解析器。 ![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/epiceditor-e1422674732281.png) ### 5) [codepress][5] ### -CodePress是一个用JavaScript编写的基于网络的源代码编辑器,具有语法高亮,并且是在你将代码输入到浏览器后实时进行文本颜色渲染。 +CodePress是一个基于网络的源代码编辑器,它用 JavaScript 编写,具有语法高亮,并且是在你将代码输入到浏览器后实时进行文本颜色渲染。 ![](http://i1.wp.com/devzum.com/wp-content/uploads/2015/01/codepres-e1422674893706.png) @@ -66,7 +66,7 @@ via: http://devzum.com/2015/01/31/9-best-ides-and-code-editors-for-javascript-us 作者:[vikas][a] 译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3f4e375e25a117c2cf5c2f571714a25b6b772163 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Wed, 11 Mar 2015 18:10:09 +0800 Subject: [PATCH 530/725] [translated] 20150211 25 Tips for Intermediate Git Users.md --- ...0211 25 Tips for Intermediate Git Users.md | 470 ------------------ ...0211 25 Tips for Intermediate Git Users.md | 469 +++++++++++++++++ 2 files changed, 469 insertions(+), 470 deletions(-) delete mode 100644 sources/tech/20150211 25 Tips for Intermediate Git Users.md create mode 100644 translated/tech/20150211 25 Tips for Intermediate Git Users.md diff --git a/sources/tech/20150211 25 Tips for Intermediate Git Users.md b/sources/tech/20150211 25 Tips for Intermediate Git Users.md deleted file mode 100644 index 71ead3ad6a..0000000000 --- a/sources/tech/20150211 25 Tips for Intermediate Git Users.md +++ /dev/null @@ -1,470 +0,0 @@ -zpl1025 -25 Tips for Intermediate Git Users -================================================================================ -I’ve been using git for about 18 months now and thought I knew it pretty well. Then we had [Scott Chacon][1] from GitHub over to do some training at [LVS, a supplier/developer of betting/gaming software][2] (where contracted until 2013) and I learnt a ton in the first day. - -As someone who’s always felt fairly comfortable in Git, I thought sharing some of the nuggets I learnt with the community might help someone to find an answer without needing to do lots of research. - -### Basic Tips ### - -#### 1. First Steps After Install #### - -After installing Git, the first thing you should do is configure your name and email, as every commit will have these details: - - $ git config --global user.name "Some One" - $ git config --global user.email "someone@gmail.com" - -#### 2. Git is Pointer-Based #### - -Everything stored in git is in a file. When you create a commit it creates a file containing your commit message and associated data (name, email, date/time, previous commit, etc) and links it to a tree file. The tree file contains a list of objects or other trees. The object or blob is the actual content associated with the commit (a file, if you will, although the filename isn’t stored in the object, but in the tree). All of these files are stored with a filename of a SHA-1 hash of the object. - -From there branches and tags are simply files containing (basically) a SHA-1 hash which points to the commit. Using these references allows for a lot of flexibility and speed, as creating a new branch is as simple as creating a file with the name of the branch and the SHA-1 reference to the commit you’re branching from. Of course, you’d never do that as you’d use the Git command line tools (or a GUI), but it’s that simple. - -You may have heard references to the HEAD. This is simply a file containing the SHA-1 reference of the commit you’re currently pointing to. If you’re resolving a merge conflict and see HEAD, that’s nothing to do with a particular branch or necessarily a particular point on the branch but where you currently are. - -All the branch pointers are kept in .git/refs/heads, HEAD is in .git/HEAD and tags are in .git/refs/tags – feel free to have a look in there. - -#### 3. Two Parents – of course! #### - -When viewing a merge commit message in a log, you will see two parents (as opposed to the normal one for a work-based commit). The first parent is the branch you were on and the second is the one you merged in to it. - -#### 4. Merge Conflicts #### - -By now I’m sure you have had a merge conflict and had to resolve it. This is normally done by editing the file, removing the <<<<, ====, >>>> markers and the keeping the code you want to store. Sometimes it’s nice to see the code before either change, i.e. before you made the change in both branches that now conflicts. This is one command away: - - $ git diff --merge - diff --cc dummy.rb - index 5175dde,0c65895..4a00477 - --- a/dummy.rb - +++ b/dummy.rb - @@@ -1,5 -1,5 +1,5 @@@ - class MyFoo - def say - - puts "Bonjour" - - puts "Hello world" - ++ puts "Annyong Haseyo" - end - end - -If the file is binary, diffing files isn’t so easy… What you’ll normally want to do is to try each version of the binary file and decide which one to use (or manually copy portions over in the binary file’s editor). To pull a copy of the file from a particular branch (say you’re merging master and feature132): - - $ git checkout master flash/foo.fla # or... - $ git checkout feature132 flash/foo.fla - $ # Then... - $ git add flash/foo.fla - -Another way is to cat the file from git – you can do this to another filename then copy the correct file over (when you’ve decided which it is) to the normal filename: - - $ git show master:flash/foo.fla > master-foo.fla - $ git show feature132:flash/foo.fla > feature132-foo.fla - $ # Check out master-foo.fla and feature132-foo.fla - $ # Let's say we decide that feature132's is correct - $ rm flash/foo.fla - $ mv feature132-foo.fla flash/foo.fla - $ rm master-foo.fla - $ git add flash/foo.fla - -UPDATE: Thanks to Carl in the comments on the original blog post for the reminder, you can actually use “git checkout —ours flash/foo.fla” and “git checkout —theirs flash/foo.fla” to checkout a particular version without remembering which branches you merge in. Personally I prefer to be more explicit, but the option is there… - -Remember to add the file after resolving the merge conflict (as I do above). - -### Servers, Branching and Tagging ### - -#### 5. Remote Servers #### - -One of the most powerful features of Git is the ability to have more than one remote server (as well as the fact that you’re running a local repository always). You don’t always need write access either, you may have multiple servers you read from (to merge work in) and then write to another. To add a new remote server is simple: - - $ git remote add john git@github.com:johnsomeone/someproject.git - -If you want to see information about your remote servers you can do: - - # shows URLs of each remote server - $ git remote -v - - # gives more details about each - $ git remote show name - -You can always see the differences between a local branch and a remote branch: - - $ git diff master..john/master - -You can also see the changes on HEAD that aren’t on that remote branch: - - $ git log remote/branch.. - # Note: no final refspec after .. - -#### 6. Tagging #### - -In Git there are two types of tag – a lightweight tag and an annotated tag. Bearing in mind Tip 2 about Git being pointer based, the difference between the two is simple. A lightweight tag is simply a named pointer to a commit. You can always change it to point to another commit. An annotated tag is a name pointer to a tag object, with it’s own message and history. As it has it’s own message it can be GPG signed if required. - -Creating the two types of tag is easy (and one command line switch different) - - $ git tag to-be-tested - $ git tag -a v1.1.0 # Prompts for a tag message - -#### 7. Creating Branches #### - -Creating branches in git is very easy (and lightning quick due to it only needing to create a less than 100 byte file). The longhand way of creating a new branch and switching to it: - - $ git branch feature132 - $ git checkout feature132 - -Of course, if you know you’re going to want to switch to it straight away you can do it in one command: - - $ git checkout -b feature132 - -If you want to rename a local branch it’s as easy as (the long way to show what happens): - - $ git checkout -b twitter-experiment feature132 - $ git branch -d feature132 - -Update: Or you can (as Brian Palmer points out in the comments on the original blog post) just use the -m switch to “git branch” to do it in one step (as Mike points out, if you only specify one branch it renames your current branch): - - $ git branch -m twitter-experiment - $ git branch -m feature132 twitter-experiment - -#### 8. Merging Branches #### - -At some point in the future, you’re going to want to merge your changes back in. There are two ways to do this: - - $ git checkout master - $ git merge feature83 # Or... - $ git rebase feature83 - -The difference between merge and rebase is that merge tries to resolve the changes and create a new commit that blends them. Rebase tries to take your changes since you last diverged from the other branch and replay them from the HEAD of the other branch. However, don’t rebase after you’ve pushed a branch to a remote server – this can cause confusion/problems. - -If you aren’t sure which branches still have unique work on them – so you know which you need to merge and which ones can be removed, there are two switches to git branch that help: - - # Shows branches that are all merged in to your current branch - $ git branch --merged - - # Shows branches that are not merged in to your current branch - $ git branch --no-merged - -#### 9. Remote Branches #### - -If you have a local branch that you’d like to appear on a remote server, you can push it up with one command: - - $ git push origin twitter-experiment:refs/heads/twitter-experiment - # Where origin is our server name and twitter-experiment is the branch - -Update: Thanks to Erlend in the comments on the original blog post – this is actually the same as doing `git push origin twitter-experiment` but by using the full syntax you can see that you can actually use different names on both ends (so your local can be `add-ssl-support` while your remote name can be `issue-1723`). - -If you want to delete a branch from the server (note the colon before the branch name): - - $ git push origin :twitter-experiment - -If you want to show the state of all remote branches you can view them like this: - - $ git remote show origin - -This may list some branches that used to exist on the server but now don’t exist. If this is the case you can easily remove them from your local checkout using: - - $ git remote prune - -Finally, if you have a remote branch that you want to track locally, the longhand way is: - - $ git branch --track myfeature origin/myfeature - $ git checkout myfeature - -However, newer versions of Git automatically set up tracking if you use the -b flag to checkout: - - $ git checkout -b myfeature origin/myfeature - -### Storing Content in Stashes, Index and File System ### - -#### 10. Stashing #### - -In Git you can drop your current work state in to a temporary storage area stack and then re-apply it later. The simple case is as follows: - - $ git stash - # Do something... - $ git stash pop - -A lot of people recommend using `git stash apply` instead of pop, however if you do this you end up with a long list of stashes left hanging around. “pop” will only remove it from the stack if it applies cleanly. If you’ve used `git stash apply` you can remove the last item from the stack anyway using: - - $ git stash drop - -Git will automatically create a comment based on the current commit message. If you’d prefer to use a custom message (as it may have nothing to do with the previous commit): - - $ git stash save "My stash message" - -If you want to apply a particular stash from your list (not necessarily the last one) you can list them and apply it like this: - - $ git stash list - stash@{0}: On master: Changed to German - stash@{1}: On master: Language is now Italian - $ git stash apply stash@{1} - -#### 11. Adding Interactively #### - -In the subversion world you change files and then just commit everything that has changed. In Git you have a LOT more power to commit just certain files or even certain patches. To commit certain files or parts of files you need to go in to interactive mode. - - $ git add -i - staged unstaged path - - - *** Commands *** - 1: status 2: update 3: revert 4: add untracked - 5: patch 6: diff 7: quit 8: help - What now> - -This drops you in to a menu based interactive prompt. You can use the numbers of the commands or the highlighted letters (if you have colour highlighting turned on) to go in to that mode. Then it’s normally a matter of typing the numbers of the files you want to apply that action to (you can use formats like 1 or 1-4 or 2,4,7). - -If you want to go to patch mode (‘p’ or ‘5’ from interactive mode) you can also go straight in to that mode: - - $ git add -p - diff --git a/dummy.rb b/dummy.rb - index 4a00477..f856fb0 100644 - --- a/dummy.rb - +++ b/dummy.rb - @@ -1,5 +1,5 @@ - class MyFoo - def say - - puts "Annyong Haseyo" - + puts "Guten Tag" - end - end - Stage this hunk [y,n,q,a,d,/,e,?]? - -As you can see you then get a set of options at the bottom for choosing to add this changed part of the file, all changes from this file, etc. Using the ‘?’ command will explain the options. - -#### 12. Storing/Retrieving from the File System #### - -Some projects (the Git project itself for example) store additional files directly in the Git file system without them necessarily being a checked in file. - -Let’s start off by storing a random file in Git: - - $ echo "Foo" | git hash-object -w --stdin - 51fc03a9bb365fae74fd2bf66517b30bf48020cb - -At this point the object is in the database, but if you don’t set something up to point to that object it will be garbage collected. The easiest way is to tag it: - - $ git tag myfile 51fc03a9bb365fae74fd2bf66517b30bf48020cb - -Note that here we’ve used the tag myfile. When we need to retrieve the file we can do it with: - - $ git cat-file blob myfile - -This can be useful for utility files that developers may need (passwords, gpg keys, etc) but you don’t want to actually check out on to disk every time (particularly in production). - -### Logging and What Changed? ### - -#### 13. Viewing a Log #### - -You can’t use Git for long without using ‘git log’ to view your recent commits. However, there are some tips on how to use it better. For example, you can view a patch of what changed in each commit with: - - $ git log -p - -Or you can just view a summary of which files changed with: - - $ git log --stat - -There’s a nice alias you can set up which shows abbreviated commits and a nice graph of branches with the messages on a single line (like gitk, but on the command line): - - $ git config --global alias.lol "log --pretty=oneline --abbrev-commit --graph --decorate" - $ git lol - * 4d2409a (master) Oops, meant that to be in Korean - * 169b845 Hello world - -#### 14. Searching in the Log #### - -If you want to search for a particular author you can specify that: - - $ git log --author=Andy - -Update: Thanks to Johannes in the comments, I’ve cleared up some of the confusion here. - -Or if you have a search term that appears in the commit message: - - $ git log --grep="Something in the message" - -There’s also a more powerful command called the pickaxe command that look for the entry that removes or adds a particular piece of content (i.e. when it first appeared or was removed). This can tell you when a line was added (but not if a character on that line was later changed): - - $ git log -S "TODO: Check for admin status" - -What about if you changed a particular file, e.g. `lib/foo.rb` - - $ git log lib/foo.rb - -Let’s say you have a `feature/132` branch and a `feature/145` and you want to view the commits on those branches that aren’t on master (note the ^ meaning not): - - $ git log feature/132 feature/145 ^master - -You can also narrow it down to a date range using ActiveSupport style dates: - - $ git log --since=2.months.ago --until=1.day.ago - -By default it will use OR to combine the query, but you can easily change it to use AND (if you have more than one criteria) - - $ git log --since=2.months.ago --until=1.day.ago --author=andy -S "something" --all-match - -#### 15. Selecting Revisions to View/Change #### - -There are a number of items you can specify when referring to a revision, depending on what you know about it: - - $ git show 12a86bc38 # By revision - $ git show v1.0.1 # By tag - $ git show feature132 # By branch name - $ git show 12a86bc38^ # Parent of a commit - $ git show 12a86bc38~2 # Grandparent of a commit - $ git show feature132@{yesterday} # Time relative - $ git show feature132@{2.hours.ago} # Time relative - -Note that unlike the previous section, a caret on the end means the parent of that commit – a caret at the start means not on this branch. - -#### 16. Selecting a Range #### - -The easiest way is to use: - - $ git log origin/master..new - # [old]..[new] - everything you haven't pushed yet - -You can also omit the [new] and it will use your current HEAD. - -### Rewinding Time & Fixing Mistakes ### - -#### 17. Resetting changes #### - -You can easily unstage a change if you haven’t committed it using: - - $ git reset HEAD lib/foo.rb - -Often this is aliased to ‘unstage’ as it’s a bit non-obvious. - - $ git config --global alias.unstage "reset HEAD" - $ git unstage lib/foo.rb - -If you’ve committed the file already, you can do two things – if it’s the last commit you can just amend it: - - $ git commit --amend - -This undoes the last commit, puts your working copy back as it was with the changes staged and the commit message ready to edit/commit next time you commit. - -If you’ve committed more than once and just want to completely undo them, you can reset the branch back to a previous point in time. - - $ git checkout feature132 - $ git reset --hard HEAD~2 - -If you actually want to bring a branch to point to a completely different SHA1 (maybe you’re bringing the HEAD of a branch to another branch, or a further commit) you can do the following to do it the long way: - - $ git checkout FOO - $ git reset --hard SHA - -There’s actually a quicker way (as it doesn’t change your working copy back to the state of FOO first then forward to SHA): - - $ git update-ref refs/heads/FOO SHA - -#### 18. Committing to the Wrong Branch #### - -OK, let’s assume you committed to master but should have created a topic branch called experimental instead. To move those changes over, you can create a branch at your current point, rewind head and then checkout your new branch: - - $ git branch experimental # Creates a pointer to the current master state - $ git reset --hard master~3 # Moves the master branch pointer back to 3 revisions ago - $ git checkout experimental - -This can be more complex if you’ve made the changes on a branch of a branch of a branch etc. Then what you need to do is rebase the change on a branch on to somewhere else: - - $ git branch newtopic STARTPOINT - $ git rebase oldtopic --onto newtopic - -#### 19. Interactive Rebasing #### - -This is a cool feature I’ve seen demoed before but never actually understood, now it’s easy. Let’s say you’ve made 3 commits but you want to re-order them or edit them (or combine them): - - $ git rebase -i master~3 - -Then you get your editor pop open with some instructions. All you have to do is amend the instructions to pick/squash/edit (or remove them) commits and save/exit. Then after editing you can `git rebase —continue` to keep stepping through each of your instructions. - -If you choose to edit one, it will leave you in the state you were in at the time you committed that, so you need to use git commit —amend to edit it. - -**Note: DO NOT COMMIT DURING REBASE – only add then use —continue, —skip or —abort.** - -#### 20. Cleaning Up #### - -If you’ve committed some content to your branch (maybe you’ve imported an old repo from SVN) and you want to remove all occurrences of a file from the history: - - $ git filter-branch --tree-filter 'rm -f *.class' HEAD - -If you’ve already pushed to origin, but have committed the rubbish since then, you can also do this for your local system before pushing: - - $ git filter-branch --tree-filter 'rm -f *.class' origin/master..HEAD - -### Miscellaneous Tips ### - -#### 21. Previous References You’ve Viewed #### - -If you know you’ve previously viewed a SHA-1, but you’ve done some resetting/rewinding you can use the reflog commands to view the SHA-1s you’ve recently viewed: - - $ git reflog - $ git log -g # Same as above, but shows in 'log' format - -#### 22. Branch Naming #### - -A lovely little tip – don’t forget that branch names aren’t limited to a-z and 0-9. It can be quite nice to use / and . in names for fake namespacing or versionin, for example: - - $ # Generate a changelog of Release 132 - $ git shortlog release/132 ^release/131 - $ # Tag this as v1.0.1 - $ git tag v1.0.1 release/132 - -#### 23. Finding Who Dunnit #### - -Often it can be useful to find out who changed a line of code in a file. The simple command to do this is: - - $ git blame FILE - -Sometimes the change has come from a previous file (if you’ve combined two files, or you’ve moved a function) so you can use: - - $ # shows which file names the content came from - $ git blame -C FILE - -Sometimes it’s nice to track this down by clicking through changes and going further and further back. There’s a nice in-built gui for this: - - $ git gui blame FILE - -#### 24. Database Maintenance #### - -Git doesn’t generally require a lot of maintenance, it pretty much takes care of itself. However, you can view the statistics of your database using: - - $ git count-objects -v - -If this is high you can choose to garbage collect your clone. This won’t affect pushes or other people but it can make some of your commands run much faster and take less space: - - $ git gc - -It also might be worth running a consistency check every so often: - - $ git fsck --full - -You can also add a `—auto` parameter on the end (if you’re running it frequently/daily from crontab on your server) and it will only fsck if the stats show it’s necessary. - -When checking, getting “dangling” or “unreachable” is fine, this is often a result of rewinding heads or rebasing. Getting “missing” or “sha1 mismatch” is bad… Get professional help! - -#### 25. Recovering a Lost Branch #### - -If you delete a branch experimental with -D you can recreate it with: - - $ git branch experimental SHA1_OF_HASH - -You can often find the SHA1 hash using git reflog if you’ve accessed it recently. - -Another way is to use `git fsck —lost-found`. A dangling commit here is the lost HEAD (it will only be the HEAD of the deleted branch as the HEAD^ is referred to by HEAD so it’s not dangling) - -### Done! ### - -Wow, the longest blog post I’ve ever written, I hope someone finds it useful. If you did, or if you have any questions let me know in the comments… - --------------------------------------------------------------------------------- - -via: https://www.andyjeffries.co.uk/25-tips-for-intermediate-git-users/ - -作者:[Andy Jeffries][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://www.andyjeffries.co.uk/author/andy-jeffries/ -[1]:http://gitcasts.com/about -[2]:http://www.lvs.co.uk/ diff --git a/translated/tech/20150211 25 Tips for Intermediate Git Users.md b/translated/tech/20150211 25 Tips for Intermediate Git Users.md new file mode 100644 index 0000000000..a1c1dd8328 --- /dev/null +++ b/translated/tech/20150211 25 Tips for Intermediate Git Users.md @@ -0,0 +1,469 @@ +25个给git熟手的技巧 +================================================================================ +我已经使用git差不多18个月了,觉得自己对它应该已经非常了解。然后来自GitHub的[Scott Chacon][1]过来给LVS做培训,[LVS是一个赌博软件供应商和开发商][2](从2013年开始的合同),而我在第一天里就学到了很多。 + +作为一个对git感觉良好的人,我觉得分享从社区里掌握的一些有价值的信息,也许能帮某人解决问题而不用做太深入研究。 + +### 基本技巧 ### + +#### 1. 安装后的第一步 #### + +在安装好git后,你第一件该做的事是设置你的名字和电子邮箱,因为每次提交都要用到这些信息: + + $ git config --global user.name "Some One" + $ git config --global user.email "someone@gmail.com" + +#### 2. Git是基于指针的 #### + +保存在git里的一切都是文件。当你创建一个提交的时候,会建立一个包含你的提交信息和相关数据(名字,邮件地址,日期/时间,前一个提交,等等)的文件,并把它链接到一个文件树中。文件树中包含了对象或其他树的列表。对象或容器是和本次提交相关的实际内容(也是一个文件,你想了解的话,尽管文件名并没有包含在对象里,而是在树中)。所有这些文件都使用对象的SHA-1哈希值作为文件名。 + +用这种方式,分支和标签就是简单的文件(基本上是这样),包含指向实际提交的SHA-1哈希值。使用这些索引会带来优秀的灵活性和速度,比如创建一个新分支就只要简单地创建一个包含分支名字和所分出的那个提交的SHA-1索引的文件。当然,你不需要自己做这些,而只要使用Git命令行工具(或者GUI),但是实际上就是这么简单。 + +你也许听说过叫HEAD的索引。这只是简单的一个文件,包含了你当前指向的那个提交的SHA-1索引值。如果你正在解决一次合并冲突然后看到了HEAD,这并不是一个特别的分支或分值上一个必须的特殊点,只是标明你当前所在位置。 + +所有的分支指针都保存在.git/refs/heads里,HEAD在.git/HEAD里,而标签保存在.git/refs/tags里 - 自己可以放心地进去看看。 + +#### 3. 两个父节点 - 当然! #### + +在历史中查看一个合并提交的信息时,你将看到有两个父节点(相对于一般工作上的常规提交的情况)。第一个父节点是你所在的分支,第二个是你合并过来的分支。 + +#### 4. 合并冲突 #### + +目前我相信你碰到过合并冲突并且解决过。通常是编辑一下文件,去掉<<<<,====,>>>>标志,保留需要留下的代码。有时能够看到这两个修改之前的代码会很不错,比如,在这两个分支上有冲突的改动之前。下面是一种方式: + + $ git diff --merge + diff --cc dummy.rb + index 5175dde,0c65895..4a00477 + --- a/dummy.rb + +++ b/dummy.rb + @@@ -1,5 -1,5 +1,5 @@@ + class MyFoo + def say + - puts "Bonjour" + - puts "Hello world" + ++ puts "Annyong Haseyo" + end + end + +如果是二进制文件,比较差异就没那么简单了...通常你要做的就是测试这个二进制文件的两个版本来决定保留哪个(或者在二进制文件编辑器里手工复制冲突部分)。从一个特定分支获取文件拷贝(比如说你在合并master和feature123): + + $ git checkout master flash/foo.fla # 或者... + $ git checkout feature132 flash/foo.fla + $ # 然后... + $ git add flash/foo.fla + +另一种方式是通过git输出文件 - 你可以输出到另外的文件名,然后再重命名正确的文件(当你决定了要用哪个)为正常的文件名: + + $ git show master:flash/foo.fla > master-foo.fla + $ git show feature132:flash/foo.fla > feature132-foo.fla + $ # 检出master-foo.fla和feature132-foo.fla + $ # 假如说我们决定来自feature132的文件是正确的 + $ rm flash/foo.fla + $ mv feature132-foo.fla flash/foo.fla + $ rm master-foo.fla + $ git add flash/foo.fla + +更新:感谢Carl在原博客文章上评论里的提醒,你实际上可以用“git checkout —ours flash/foo.fla”和“git checkout —theirs flash/foo.fla”来检出特定版本的文件,而不用记住你在合并的分支名字。就我个人来说喜欢更精确一点,但这也是一种方式... + +记着在解决完冲突后要将文件加入提交(像我上面做的那样)。 + +### 服务器,分支和标签 ### + +#### 5. 远端服务器 #### + +git的一个超强大的功能就是可以有不止一个远端服务器(实际上你一直都在一个本地仓库上工作)。你并不是一定都要有写权限,你可以有多个可以读取的服务器(用来合并他们的工作)然后写入其他仓库。添加一个新的远端服务器很简单: + + $ git remote add john git@github.com:johnsomeone/someproject.git + +如果你想查看远端服务器的信息可以这样做: + + # 显示每个远端服务器的URL + $ git remote -v + + # 提供更多详细信息 + $ git remote show name + +你随时都可以查看本地分支和远端分支的差异: + + $ git diff master..john/master + +你也可以查看不在远端分支的HEAD的改动: + + $ git log remote/branch.. + # 注意:..后面没有结束的refspec + +#### 6. 标签 #### + +在git里有两种类型的标签 - 轻量级标签和带注释标签。记住技巧2里说过git是基于指针的,这两者之间的差异也很简单。轻量级标签只是一个简单的指向一次提交的带名字指针。你随时都可以将它指向另一个提交。带注释标签是一个指向标签对象的带名字指针,带有自己的信息和历史。因为有自己的信息,它可以根据需要用GPG签名。 + +建立这两种类型的标签都很简单(只有一个命令行开关的差异) + + $ git tag to-be-tested + $ git tag -a v1.1.0 # 会提示输入标签信息 + +#### 7. 建立分支 #### + +在git里建立分支非常简单(而且像闪电一样快,因为它只需要创建一个小于100字节的文件)。用普通方式建立新分支并切换过去: + + $ git branch feature132 + $ git checkout feature132 + +当然,如果你确定自己要新建分支并直接切换过去,可以用一个命令实现: + + $ git checkout -b feature132 + +如果你想重命名一个本地分支也很简单(可以显示发生了什么的较长的方式): + + $ git checkout -b twitter-experiment feature132 + $ git branch -d feature132 + +更新:你也可以(像Brian Palmer在原博客文章的评论里提出的)只用“git branch”的-m开关在一个命令里实现(像Mike提出的,如果你只有一个分支参数,就会重命名当前分支): + + $ git branch -m twitter-experiment + $ git branch -m feature132 twitter-experiment + +#### 8. 合并分支 #### + +在将来什么时候,你希望合并改动。有两种方式: + + $ git checkout master + $ git merge feature83 # 或者... + $ git rebase feature83 + +merge和rebase之间的差别是merge会尝试处理改动并建立一个新的混合了两者的提交。rebase会尝试把你从一个分支最后一次分离后的所有改动,一个个加到该分支的HEAD上。不过,在已经将分支推到远端服务器后不要再rebase了 - 这回引起冲突/问题。 + +如果你不确定在哪些分支上还有独有的工作 - 所以你也不知道哪些分支需要合并而哪些可以删除,git branch有两个开关可以帮你: + + # 显示已经全部合并到当前分支的分支 + $ git branch --merged + + # 显示没有合并到当前分支的分支 + $ git branch --no-merged + +#### 9. 远端分支 #### + +如果你在本地有一个分支希望推到远端服务器上,你可以用一行命令推送上去: + + $ git push origin twitter-experiment:refs/heads/twitter-experiment + # origin是我们服务器的名字,而twitter-experiment是分支名字 + +更新:感谢Erlend在原博客文章上的评论 - 这个实际上和`git push origin twitter-experiment`效果一样,不过使用完整的语法,你可以在两者之间使用不同的分知名(这样本地分支可以是`add-ssl-support`而远端是`issue-1723`)。 + +如果你想在远端服务器上删除一个分支(注意分支名前面的冒号): + + $ git push origin :twitter-experiment + +如果你想查看所有远端分支的状态可以这样做: + + $ git remote show origin + +这个命令可能会列出服务器上一些以前有过但现在已经不在了的分支。如果碰到这种情况你可以用下面的命令从你本地分支里清理掉: + + $ git remote prune + +最后,如果你想在本地跟踪一个远端分支,普通的方式是: + + $ git branch --track myfeature origin/myfeature + $ git checkout myfeature + +不过,新版的git在使用-b标记检出分支时会自动设定跟踪: + + $ git checkout -b myfeature origin/myfeature + +### 在储藏点,索引和文件系统中保存内容 ### + +#### 10. 储藏 #### + +在git里你可以把当前工作状态放进一个储藏堆栈中,然后可以再取出来。最简单的情形是下面这样: + + $ git stash + # 做点其他事情... + $ git stash pop + +许多人建议使用`git stash apply`来代替pop,不过如果这样做的话最后会遗留一个很长的储藏列表。而“pop”会在全部加载后自动从堆栈中移除。如果使用过`git stash apply`,你也可以使用下面的命令从堆栈上移除最后一项: + + $ git stash drop + +git会基于当前的提交信息自动创建评论。如果你更希望有自定义信息的话(因为它可能和前一个提交没有任何联系): + + $ git stash save "My stash message" + +如果你希望从列表中取出一个特定的储藏点(不一定非得是最后一个)可以先列出它们然后用下面的方式取出: + + $ git stash list + stash@{0}: On master: Changed to German + stash@{1}: On master: Language is now Italian + $ git stash apply stash@{1} + +#### 11. 交互式添加 #### + +在subversion的世界里你只能修改文件然后提交所有改动。而在git里你有强大得多的方式来提交部分文件或者甚至是部分补丁。提交部分文件或文件中的部分改动你需要进入交互式模式: + + $ git add -i + staged unstaged path + + + *** Commands *** + 1: status 2: update 3: revert 4: add untracked + 5: patch 6: diff 7: quit 8: help + What now> + +这会让你进入一个基于菜单的交互式提示。你可以使用命令中的数字或高亮的字母(如果你在终端里打开了高亮的话)来进入相应的模式。然后就只是输入你希望操作的文件的数字了(你可以使用这样的格式,1或者1-4或2,4,7)。 + +如果你想进入补丁模式(交互式模式下的‘p’或‘5’),你也可以直接进入: + + $ git add -p + diff --git a/dummy.rb b/dummy.rb + index 4a00477..f856fb0 100644 + --- a/dummy.rb + +++ b/dummy.rb + @@ -1,5 +1,5 @@ + class MyFoo + def say + - puts "Annyong Haseyo" + + puts "Guten Tag" + end + end + Stage this hunk [y,n,q,a,d,/,e,?]? + +你可以看到下方会有一些选项供选择用来添加该文件的这个改动,该文件的所有改动,等等。使用‘?’命令可以详细解释这些选项。 + +#### 12. 从文件系统里保存/取回改动 #### + +有些项目(比如git项目本身)在git文件系统中直接保存额外文件而并没有将它们加入到版本控制中。 + +让我们从在git中存储一个随机文件开始: + + $ echo "Foo" | git hash-object -w --stdin + 51fc03a9bb365fae74fd2bf66517b30bf48020cb + +这样这个目标文件就已经保存到数据库中了,但是如果你没有设定一个指向它的指针的话它会被当做垃圾回收。最简单的方式是设定一个标签: + + $ git tag myfile 51fc03a9bb365fae74fd2bf66517b30bf48020cb + +注意这里我们使用了标签myfile。当我们需要使用这个文件的时候可以这样做: + + $ git cat-file blob myfile + +这个对于一些工具文件很有用,开发者可能会用到(密码,GPG密钥,等等)但是又不希望每次都检出到硬盘(尤其是在实际工作中)。 + +### 日志以及有哪些改动? ### + +#### 13. 查看日志 #### + +如果不用‘git log’来查看最近的提交你git用不了多久。不过,有一些技巧来更好地应用。比如,你可以使用下面的命令来查看每次提交的具体改动: + + $ git log -p + +或者你可以仅仅查看有哪些文件改动: + + $ git log --stat + +有个很不错的别名你可以试试,会显示简短提交名和一个不错的分支图并在一行里显示提交信息(有点像gitk,但是是在命令行下): + + $ git config --global alias.lol "log --pretty=oneline --abbrev-commit --graph --decorate" + $ git lol + * 4d2409a (master) Oops, meant that to be in Korean + * 169b845 Hello world + +#### 14. 搜索日志 #### + +如果你想找特定作者可以这样做: + + $ git log --author=Andy + +更新:感谢Johannes的评论,我已经去掉了之前这里的一些有混淆的地方。 + +或者你想在提交信息里找一些相关字段: + + $ git log --grep="Something in the message" + +也有一个更强大的叫做pickaxe的命令用来查找删除或添加某个特定内容的提交(比如,该文件第一次出现或被删除)。这可以告诉你什么时候增加了一行(但这一行里的某个字符后面被改动过就不行了): + + $ git log -S "TODO: Check for admin status" + +假如你改动了一个特定的文件,比如`lib/foo.rb` + + $ git log lib/foo.rb + +比如说你有一个`feature/132`分支和`feature/145`分支,然后你想看看这两个分支上不在master分支里的提交(注意^符号是不在的意思): + + $ git log feature/132 feature/145 ^master + +你也可以使用ActiveSupport格式的日期来缩小到某个日期范围: + + $ git log --since=2.months.ago --until=1.day.ago + +默认情况下会用OR来组合查询,但你可以轻易地改为AND(如果你有超过一条的标准) + + $ git log --since=2.months.ago --until=1.day.ago --author=andy -S "something" --all-match + +#### 15. 查看/修改版本 #### + +有很多方式可以用来引用一个版本,看你记得哪个: + + $ git show 12a86bc38 # 根据版本 + $ git show v1.0.1 # 根据标签 + $ git show feature132 # 根据分支名 + $ git show 12a86bc38^ # 一次提交的父节点 + $ git show 12a86bc38~2 # 一次提交的祖父节点 + $ git show feature132@{yesterday} # 时间相关 + $ git show feature132@{2.hours.ago} # 时间相关 + +注意和之前部分有些不同,末尾的插入符号意思是该提交的父节点 - 开始位置的插入符号意思是不在这个分支。 + +#### 16. 选择范围 #### + +最简单的方式: + + $ git log origin/master..new + # [old]..[new] - 所有你还没有推送的提交 + +你也可以省略[new],将使用当前的HEAD。 + +### Rewinding Time & Fixing Mistakes ### + +#### 17. 重置改动 #### + +如果你还没有提交的话可以用下面的命令轻松地取消改动: + + $ git reset HEAD lib/foo.rb + +通常会使用‘unstage’的别名,因为看上去有些不直观。 + + $ git config --global alias.unstage "reset HEAD" + $ git unstage lib/foo.rb + +如果你已经提交了该文件,你可以做两件事 - 如果是最后一次提交你还可以改正: + + $ git commit --amend + +这会取消最后一次提交,把工作分支回退到提交前标记了所有改动的状态,而且提交信息也都准备好可以修改或直接提交。 + +如果你已经提交过多次而且希望全部回退,你可以将分支重置到合适的位置。 + + $ git checkout feature132 + $ git reset --hard HEAD~2 + +如果你实际上希望将分支指向一个完全不同的SHA1(也许你要将一个分支的HEAD替换到另一个分支,或者之后的某次提交)你可以使用下面的较长的方式: + + $ git checkout FOO + $ git reset --hard SHA + +实际上有一个快速的方式(不需要先把你的工作分支切换到FOO再前进到SHA): + + $ git update-ref refs/heads/FOO SHA + +#### 18. 提交到了错误的分支 #### + +好吧,假如说你已经提交到了master,但却应该创建一个叫experimental的主题分支更合适。要移动这些改动,你可以在当前位置创建分支,回退HEAD再检出新分支: + + $ git branch experimental # 创建一个指向当前master的位置的指针 + $ git reset --hard master~3 # 移动master分支的指针到3个版本之前 + $ git checkout experimental + +如果你的改动是在分支的分支的分支上会更复杂。那样你需要做的是将分支基础切换到其他地方: + + $ git branch newtopic STARTPOINT + $ git rebase oldtopic --onto newtopic + +#### 19. 交互式切换基础 #### + +这是一个我之前看过展示却没真正理解过的很赞的功能,现在很简单。假如说你提交了3次但是你希望更改顺序或编辑(或者合并): + + $ git rebase -i master~3 + +然后会启动你的编辑器并带有一些指令。你所要做的就是修改这些指令来选择/插入/编辑(或者删除)提交和保存/退出。然后在编辑完后你可以用`git rebase --continue`命令来让每一条指令生效。 + +如果你有修改,将会切换到你提交时所处的状态,之后你需要使用命令git commit --amend来编辑。 + +**注意:在rebase的时候千万不要提交 - 只能先添加然后使用参数--continue,--skip或--abort。** + +#### 20. 清理 #### + +如果你提交了一些内容到你的分支(也许你从SVN导入了一些旧仓库),然后你希望把某个文件从历史记录中全部删掉: + + $ git filter-branch --tree-filter 'rm -f *.class' HEAD + +如果你已经推送到origin了,但之后提交了一些垃圾改动,你也可以在推送前在本地系统里这样做: + + $ git filter-branch --tree-filter 'rm -f *.class' origin/master..HEAD + +### 其他技巧 ### + +#### 21. 你查看过的前一个引用 #### + +如果你知道自己之前查看过一个SHA-1,但是随后做了一些重置/回退的操作,你可以使用reflog命令来列出最近查看过的SHA-1记录: + + $ git reflog + $ git log -g # 和上面一样,但是使用'log'格式输出 + +#### 22. 分支命名 #### + +一个可爱的小技巧 - 别忘了分支名并不限于a-z和0-9。名字中可以用/和.将非常方便用来建立伪命名空间或版本,例如: + + $ # 生成版本132的改动历史 + $ git shortlog release/132 ^release/131 + $ # 贴上v1.0.1的标签 + $ git tag v1.0.1 release/132 + +#### 23. 找出谁是凶手 #### + +通常找出来谁改动了某个文件里的某行代码会很有用。实现这个功能的最简单命令是: + + $ git blame FILE + +有时候这些改动来自其他文件(如果你合并了两个文件,或者你移动了某个函数)所以你可以使用下面的命令: + + $ # 显示内容来自哪个文件 + $ git blame -C FILE + +有时候通过点击各个改动然后回到很早很早以前来跟踪改动会很不错。有一个很好的内建GUI命令来做这个: + + $ git gui blame FILE + +#### 24. 数据维护 #### + +通常git不需要经常维护,它把自己照顾的很好。不过,你可以通过下面的命令查看数据统计: + + $ git count-objects -v + +如果占用很多空间的话,你可以选择在你的本地仓库做垃圾回收。这不会影响推送或其他人,却会让一些命令运行更快而且减少空间占用: + + $ git gc + +经常运行完整性检查也很有意义: + + $ git fsck --full + +你也可以在末尾加上`--auto`参数(如果你在服务器上通过crontab经常/每天都运行这个命令的话),然后它只会在必要的时候才执行fsck动作。 + +在检查的时候,看到“dangling”或“unreachable”是正常的,通常这是由回退HEAD或切换基础的结果。而看到“missing”或“sha1 mismatch”就不对了...找专业人士帮忙吧! + +#### 25. 恢复遗失的分支 #### + +如果你使用-D参数删除了experimental分支,可以用下面的命令重新建立: + + $ git branch experimental SHA1_OF_HASH + +如果你访问过的话,你通常可以用git reflog来找到SHA1哈希值。 + +另一种方式是使用`git fsck —lost-found`。其中一个dangling的提交就是丢失的HEAD(它只是已删除分支的HEAD,而HEAD^被引用为当前的HEAD所以它并不处于dangling状态) + +### 搞定! ### + +哇,这是我写过的最长的一篇博客,我希望有人能觉得有用。如果你这么觉得,或者你有任何疑问请在评论里留言让我知道... + +-------------------------------------------------------------------------------- + +via: https://www.andyjeffries.co.uk/25-tips-for-intermediate-git-users/ + +作者:[Andy Jeffries][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.andyjeffries.co.uk/author/andy-jeffries/ +[1]:http://gitcasts.com/about +[2]:http://www.lvs.co.uk/ From cc5ebd07355fde7779a5f0c5d73db9c9f077d5aa Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Wed, 11 Mar 2015 18:14:57 +0800 Subject: [PATCH 531/725] [translating] Windows 10 versus Linux.md --- sources/talk/20150127 Windows 10 versus Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150127 Windows 10 versus Linux.md b/sources/talk/20150127 Windows 10 versus Linux.md index e2cdfc14c1..d79b45d93c 100644 --- a/sources/talk/20150127 Windows 10 versus Linux.md +++ b/sources/talk/20150127 Windows 10 versus Linux.md @@ -1,3 +1,4 @@ +zpl1025 Windows 10 versus Linux ================================================================================ ![](https://farm4.staticflickr.com/3852/14863156322_e4edbae70e_t.jpg) @@ -28,4 +29,4 @@ via: http://ostatic.com/blog/windows-10-versus-linux [3]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ [4]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ [5]:http://www.datamation.com/open-source/windows-vs-linux-the-2015-version-1.html -[6]:http://www.zdnet.com/article/microsoft-the-open-source-company/ \ No newline at end of file +[6]:http://www.zdnet.com/article/microsoft-the-open-source-company/ From ce61957232c98c448d9a3826f27b4b285e8540c7 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 11 Mar 2015 20:21:54 +0800 Subject: [PATCH 532/725] Upload20150311 translated --- ...ter Suspend In Ubuntu 14.04 [Quick Tip].md | 30 ------------------- ...ter Suspend In Ubuntu 14.04 [Quick Tip].md | 28 +++++++++++++++++ 2 files changed, 28 insertions(+), 30 deletions(-) delete mode 100644 sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md create mode 100644 translated/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md diff --git a/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md b/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md deleted file mode 100644 index f0915baf40..0000000000 --- a/sources/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md +++ /dev/null @@ -1,30 +0,0 @@ -translating by martin. - -[Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip] -================================================================================ -### Problem: ### - -When Ubuntu 14.04 or 14.10 comes back from sleep or suspend mode, the keyboard and mouse freeze. Nothing can be clicked or entered. The only way out is to force shutdown the system by pressing the power button. This is very inconvenient, rather very annoying. Because the default behavior in Ubuntu is that when you close the lid of the laptop, it goes in sleep mode. - -In this quick post, we shall see how to fix this issue of mouse freeze after suspend in Ubuntu 14.04 and 14.10. - -### Solution to mouse freezing after sleep in Ubuntu 14.04 ### - -The issue is actually coming from Kernel upgrade. I am not sure of the reason why, but a re-install of input device driver seems to be fixing this issue. - - sudo apt-get install --reinstall xserver-xorg-input-all - -This quick tip was based on a question asked by an It’s FOSS reader, Dev. Try this quick tip and see if it works for you as well. In a similar issue, you can [fix no Unity, launcher and dash after logging in to Ubuntu][1]. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/keyboard-mouse-freeze-suspend/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/how-to-fix-no-unity-no-launcher-no-dash-in-ubuntu-12-10-quick-tip/ diff --git a/translated/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md b/translated/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md new file mode 100644 index 0000000000..0e766f4f66 --- /dev/null +++ b/translated/tech/20150310 [Fixed] Keyboard And Mouse Freeze After Suspend In Ubuntu 14.04 [Quick Tip].md @@ -0,0 +1,28 @@ +[已解决] Ubuntu 14.04从待机中唤醒后鼠标键盘出现僵死情况 [快速小贴士] +================================================================================ +### 问题: ### + +当Ubuntu14.04或14.10从睡眠和待机状态恢复时,鼠标和键盘出现僵死,不能点击也不能输入。解决这种情况是唯一方法就是按关机键强关系统,这不仅非常不便且令人恼火。因为在Ubuntu的默认情况中合上笔记本等同于切换到睡眠模式。 + +在这篇短文中,我们将学会如何解决Ubuntu14.04和14.10中出现的鼠标僵死问题。 + +### Ubuntu14.04唤醒后鼠标僵死的解决办法 ### + +这个问题的是由内核升级导致的。为何导致这一情况不得而知,但是看起来好像仅需重装输入设备的驱动就能解决了。 + + sudo apt-get install --reinstall xserver-xorg-input-all + +这则贴士源自一个自由开源读者Dev的提问。快试试这篇贴士,看看是否对你也有效。在一个类似的问题中,你可以[修复Ubuntu登录后无Unity界面、侧边栏和Dash的问题][1] + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/keyboard-mouse-freeze-suspend/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/how-to-fix-no-unity-no-launcher-no-dash-in-ubuntu-12-10-quick-tip/ \ No newline at end of file From 7cf2062e91b15fb35061d393368a489aecf170de Mon Sep 17 00:00:00 2001 From: FSSlc Date: Thu, 12 Mar 2015 13:23:35 +0800 Subject: [PATCH 533/725] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AE=8C=E6=88=90?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E6=96=B0=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Smartphones Like Weather Conky In Linux.md | 86 --------------- ...Smartphones Like Weather Conky In Linux.md | 101 ++++++++++++++++++ 2 files changed, 101 insertions(+), 86 deletions(-) delete mode 100644 sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md create mode 100644 translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md diff --git a/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md b/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md deleted file mode 100644 index 7607920dd3..0000000000 --- a/sources/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md +++ /dev/null @@ -1,86 +0,0 @@ -FSSlc translating - -How To Use Smartphones Like Weather Conky In Linux -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Use_Weather_Conky_Linux.jpeg) - -Smartphones have those sleek weather widgets that blend in to the display. Thanks to Flair Weather Conky, you can get **smartphone like weather display on your Linux desktop**. We will be using a GUI tool [Conky Manager to easily manage Conky in Linux][1]. Let’s first see how to install Conky Manager in Ubuntu 14.10, 14.04, Linux Mint 17 and other Linux distributions. - -### Install Conky Manager ### - -Open a terminal and use the following commands: - - sudo add-apt-repository ppa:teejee2008/ppa - sudo apt-get update - sudo apt-get install conky-manager - -You can read this article on [how to use Conky Manager in Linux][1]. - -### Make sure curl is installed ### - -Do make sure that [curl][2] is installed. Use the following command: - - sudo apt-get install curl - -### Download Flair Weather Conky ### - -Get the Flair Weather Conky script from the link below: - -- [Download Flair Weather Conky Script][3] - -### Using Flair Weather Conky script in Conky Manager ### - -#### Step 1: #### - -Same as you install themes in Ubuntu 14.04, you should have a .conky directory in your Home folder. If you use command line, I don’t need to tell you how to find that. For beginners, go to your Home directory from File manager and press Ctrl+H to [show hidden files in Ubuntu][4]. Look for .conky folder here. If there is no such folder, make one. - -#### Step 2: #### - -In the .conky directory, extract the downloaded Flair Weather file. Do note that by default it is extracted to .conky directory itself. So go in this directory and get the Flair Weather folder out of it and paste it to actual .conky directory. - -#### Step 3: #### - -Flair Weather uses Yahoo and it doesn’t recognize your location automatically. You’ll need to manually edit it. Go to [Yahoo Weather][5] and get the location of id of your city by typing your city/pin code. You can get the location id from the URL. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Yahoo_Weather_Location_Code.jpeg) - -#### Step 4: #### - -Open Conky Manager. It should be able to read the newly installed Conky script. There are two variants, dark and light, available. You can choose whichever you prefer. You can should see the conky displayed on the desktop as soon as you select it. - -Default location in Flair Weather is set to Melbourne. You’ll have to manually edit the conky. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Using_Weather_Conky_Ubuntu.jpeg) - -#### Step 5: #### - -In the screenshot above, you can see the option to edit the selected conky. In the editor opened, look for location or WOEID. Change it with the location code you got in step 3. Now restart the Conky. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Edit_Conky.jpeg) - -In the same place, if you replace C by F, the unit of temperature will be changed to Fahrenheit from Celsius. Don’t forget to restart the Conky to see the changes made. - -#### Give it a try #### - -In this article we actually learned quite few things. We saw how we can use any Conky script easily, how to edit the scripts and how to use Conky Manager for various purposes. I hope you find it useful. - -A word of caution, Ubuntu 14.10 users might see overlapped time numerals. Please make the developer ware of any such issues. - -I have already shown you the screenshot of how the Flair Weather conky looked in my system. Time for you to try this and flaunt your desktop. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/weather-conky-linux/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/Abhishek/ -[1]:http://itsfoss.com/conky-gui-ubuntu-1304/ -[2]:http://www.computerhope.com/unix/curl.htm -[3]:http://speedracker.deviantart.com/art/Flair-Weather-Conky-Made-for-Conky-Manager-510130311 -[4]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ -[5]:https://weather.yahoo.com/ diff --git a/translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md b/translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md new file mode 100644 index 0000000000..962becea1b --- /dev/null +++ b/translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md @@ -0,0 +1,101 @@ +如何在 Linux 中使用类似智能手机外观的 Conky 天气插件 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Use_Weather_Conky_Linux.jpeg) + +智能手机都拥有一些平滑融入手机外观的天气小插件,幸亏有了 Flair Weather Conky,你便可以**在你的 Linux 桌面中拥有像智能手机一样的天气外观**。我们将使用一个 GUI 工具[Conky Manager 在 Linux 中轻松地管理 Conky][1]。那就先让我们看看如何在 Ubuntu 14.10,14.04、Linux Mint 17 及其他 Linux 发行版本中安装 Conky Manager 吧。 + +### 安装 Conky Manager ### + +打开一个终端并使用下面的命令: + + sudo add-apt-repository ppa:teejee2008/ppa + sudo apt-get update + sudo apt-get install conky-manager + +你可以阅读这篇关于[如何在 Linux 中使用 Conky Manager][1] 的文章。 + +### 确保 `curl` 已被安装 ### + +请确保 [curl][2] 已被安装。(如果没有安装它,)可以使用下面的命令来安装: + + sudo apt-get install curl + +### 下载 Flair Weather Conky ### + +从下面的链接下载 Flair Weather Conky 的脚本: + +- [下载 Flair Weather Conky 的脚本][3] + +### 在 Conky Manager 中使用 Flair Weather Conky 脚本 ### + +#### 步骤 1: #### + +同你在 Ubuntu 14.04 中安装主题一样,在你的家目录中应该有一个 `.conky` 目录。假如你使用命令行,则不需要让我来告诉你如何找到这个目录。对于新手,请用文件管理器切换到你的家目录下,并按 `Ctrl+H` 来 [在 Ubuntu 中显示隐藏文件][4]。在这里查找 `.conky` 文件夹,假如没有这个文件夹,则创建一个。 + +#### 步骤 2: #### + +在 `.conky` 目录中,解压下载到的 Flair Weather 文件。请注意在默认情况下它会自动解压到一个名为 `.conky` 目录。所以请进入这个目录,将 Flair Weather 文件夹从中取出,然后将它粘贴到真正的 `.conky` 目录下。 + +#### 步骤 3: #### + +Flair Weather 使用 Yahoo 的天气服务,但它不能自动地识别你的位置。你需要手动地编辑它。到[Yahoo 天气][5] 网页,然后通过键入你的城市/Pin 码来得到你所在城市的 位置 ID号。你可以从网页地址栏中取得位置 ID 号。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Yahoo_Weather_Location_Code.jpeg) + +#### 步骤 4: #### + +打开 Conky Manager,它应该能够读取新安装的 Conky 脚本。这里有两款样式可用,黑色主题或亮丽主题。你可以选择你偏爱的那一款。当你选择后,你就可以在桌面上看到 conky 的显示了。 + +在 Flair Weather 中,默认位置被设定为 Melbourne。你必须手动编辑 conky 文件。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Using_Weather_Conky_Ubuntu.jpeg) + +#### 步骤 5: #### + +在上面的截图中,你可以看到有一个编辑选定 conky 脚本的选项,在打开的编辑器中,查找 location 或 WOEID ,更换它为你在 `步骤 3` 中得到的位置 ID 号。然后重启 Conky。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Edit_Conky.jpeg) + +在上面查找的相同位置,假如你将 C 替换为 F,则温度的单位将从摄氏温标改为华氏温标 。不要忘了重启 Conky 来查看已经做出的修改。 + +#### 可能的故障排除 #### +(注:这一小节在 md 文件中没有,原文新添加的。) + +在 Ubuntu 14.04 和 Ubuntu 14.10 中,假如你发现 Conky 展示的时间有重叠现象,则请编辑 conky 脚本。查找下面的这些行: +``` +## cairo-compmgr +own_window_type override +own_window_argb_visual no +``` +然后将内容更换为下面的这些行: +``` +## cairo-compmgr +own_window_type dock +own_window_argb_visual no +``` +保存更改并重启 conky。这就应该解决了这个问题。感谢 Jesse(这个 Conky 脚本的开发者)给我们提供了这个解决方法和为其他相关问题给予的支持。 + +#### 尝试尝试 #### + +在这篇文章中,我们实际上学到了不少东西。我们见证了如何轻松地使用任何 Conky 脚本,如何编辑脚本以及如何使用 Conky Manager 来达到不同的目的。我希望这些对你有用。 + +需要留心的是,Ubuntu 14.10 用户可能会看到重叠的时间数字。请在开发者 Jesse 绝妙的[Google + 主页][6] 中报告任何相关的问题。(注:这句在 md 文件中的内容与原文有差异,我按照原文翻译,并加上了 链接) + +我已经向你展示了在我的系统上 Flair Weather conky 外观的截图。现在该你尝试它并炫耀你的桌面的时间了。 +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/weather-conky-linux/ + +作者:[Abhishek][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/Abhishek/ +[1]:http://itsfoss.com/conky-gui-ubuntu-1304/ +[2]:http://www.computerhope.com/unix/curl.htm +[3]:http://speedracker.deviantart.com/art/Flair-Weather-Conky-Made-for-Conky-Manager-510130311 +[4]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ +[5]:https://weather.yahoo.com/ +[6]:https://plus.google.com/communities/104794997718869399105 From 0f49de4ec1c715f71276b69c2d9b8d9ab24342e9 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 12 Mar 2015 15:08:39 +0800 Subject: [PATCH 534/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150203 9 Best IDEs and Code Editors for JavaScript Users.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/talk => published}/20150203 9 Best IDEs and Code Editors for JavaScript Users.md (100%) diff --git a/translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/published/20150203 9 Best IDEs and Code Editors for JavaScript Users.md similarity index 100% rename from translated/talk/20150203 9 Best IDEs and Code Editors for JavaScript Users.md rename to published/20150203 9 Best IDEs and Code Editors for JavaScript Users.md From e1e4f8be6fb224f318d004f4c8cf3204c1e58441 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 12 Mar 2015 15:37:58 +0800 Subject: [PATCH 535/725] PUB:20141219 Creating your First App on Linux with Python and Flask @geekpi --- ...irst App on Linux with Python and Flask.md | 65 +++++++++---------- 1 file changed, 31 insertions(+), 34 deletions(-) rename {translated/tech => published}/20141219 Creating your First App on Linux with Python and Flask.md (64%) diff --git a/translated/tech/20141219 Creating your First App on Linux with Python and Flask.md b/published/20141219 Creating your First App on Linux with Python and Flask.md similarity index 64% rename from translated/tech/20141219 Creating your First App on Linux with Python and Flask.md rename to published/20141219 Creating your First App on Linux with Python and Flask.md index fc90044195..94f3cd7873 100644 --- a/translated/tech/20141219 Creating your First App on Linux with Python and Flask.md +++ b/published/20141219 Creating your First App on Linux with Python and Flask.md @@ -2,29 +2,28 @@ ================================================================================ ![](http://techarena51.com/wp-content/uploads/2014/12/python-logo.png) -无论你在linux上娱乐还是工作,这对你而言都是一个很好的机会使用python来编程。回到大学我希望他们教我的是Python而不是Java,这学起来很有趣且在实际的应用如yum包管理器中很有用。 +无论你在linux上娱乐还是工作,这对你而言都是一个使用python来编程的很好的机会。回到大学我希望他们教我的是Python而不是Java,这学起来很有趣且在实际的应用如yum包管理器中很有用。 -本篇教程中我会带你使用python和一个称为flask的微型框架来构建一个简单的应用来显示诸如[每个进程的内存使用][1],CPU百分比之类有用的信息。 +本篇教程中我会带你使用python和一个称为flask的微型框架来构建一个简单的应用,来显示诸如[每个进程的内存使用][1],CPU百分比之类有用的信息。 -### 前提 ### +### 前置需求 ### -Python基础、列表、类、函数、模块。 -HTML/CSS (基础) +Python基础、列表、类、函数、模块。HTML/CSS (基础)。 -学习这篇教程你不必是一个python高级开发者,但是首先我建议你阅读https://wiki.python.org/moin/BeginnersGuide/NonProgrammers。 +学习这篇教程你不必是一个python高级开发者,但是首先我建议你阅读 https://wiki.python.org/moin/BeginnersGuide/NonProgrammers 。 -### I在Linux上安装Python 3 ### +### 在Linux上安装Python 3 ### 在大多数Linux发行版上Python是默认安装的。下面的你命令可以让你看到安装的版本。 [root@linux-vps ~]# python -V Python 2.7.5 -我们会使用3.x的版本来构建我们的app。根据[Python.org][2]所说,这版本上面所有的改进都不向后兼容Python 2。 +我们会使用3.x的版本来构建我们的app。根据[Python.org][2]所说,现在只对这个版本进行改进,而且不向后兼容Python 2。 -**注意**: 在开始之前,我强烈建议你在虚拟机中尝试这个教程,因为Python许多Linux发行版的核心组建,任何意外都可能会损坏你的系统。 +**注意**: 在开始之前,我强烈建议你在虚拟机中尝试这个教程,因为Python是许多Linux发行版的核心组件,任何意外都可能会损坏你的系统。 -这步是基于红帽的版本如CentOS(6和7),基于Debian的版本如UbuntuMint和Resbian可以跳过这步,Pythonn 3应该默认已经安装了。如果没有安装,请用apt-get而不是yum来安装下面相应的包。 +以下步骤是基于红帽的版本如CentOS(6和7),基于Debian的版本如UbuntuMint和Resbian可以跳过这步,Pythonn 3应该默认已经安装了。如果没有安装,请用apt-get而不是yum来安装下面相应的包。 [leo@linux-vps] yum groupinstall 'Development Tools' [leo@linux-vps] yum install -y zlib-dev openssl-devel sqlite-devel bzip2-devel @@ -33,7 +32,7 @@ HTML/CSS (基础) [leo@linux-vps] cd Python-3.4.2 [leo@linux-vps] ./configure [leo@linux-vps] make - # make altinstall is recommended as make install can overwrite the current python binary, + # 推荐使用 make altinstall 以覆盖当前的 python 库 [leo@linux-vps] make altinstall 成功安装后,你应该可以用下面的命令进入Python3.4的shell了。 @@ -48,21 +47,19 @@ HTML/CSS (基础) Python有它自己的包管理去,与yum和apt-get相似。你将需要它来下载、安装和卸载包。 - [leo@linux-vps] pip3.4 install "packagename" - + [leo@linux-vps] pip3.4 install "packagename" [leo@linux-vps] pip3.4 list - [leo@linux-vps] pip3.4 uninstall "packagename" ### Python虚拟环境 ### -在Python中虚拟环境是一个你项目依赖的目录。隔离项目的一个好主意是使用不同的依赖。这可以让你不用sudo命令就能安装包。 +在Python中虚拟环境是一个放置你的项目的依赖环境的目录。这是一个将带有不同的依赖环境的项目隔离的好办法。它可以让你不用sudo命令就能安装包。 [leo@linux-vps] mkdir python3.4-flask [leo@linux-vps] cd python3.4-flask [leo@linux-vps python3.4-flask] pyvenv-3.4 venv -要创建虚拟环境你需要使用“pyvenv-3.4”命令。这会在venv文件夹的内部创建一个名为lib的目录,这里会安装项目所依赖的包。这里同样会创建一个bin文件夹容纳该环境下的pip和python可执行文件。 +要创建虚拟环境你需要使用“pyvenv-3.4”命令。上述命令会在venv文件夹的内部创建一个名为lib的目录,这里会安装项目所依赖的包。这里同样会创建一个bin文件夹容纳该环境下的pip和python可执行文件。 ### 为我们的Linux系统信息项目激活虚拟环境 ### @@ -74,21 +71,21 @@ Python有它自己的包管理去,与yum和apt-get相似。你将需要它来 ### 使用pip安装flask ### -让我们继续安装第一个模块flask框架,它可以处理路由和渲染我们app的模板。 +让我们继续安装第一个模块flask框架,它可以处理访问路由和渲染显示我们app的模板。 [leo@linux-vps python3.4-flask]pip3.4 install flask ### 在flask中创建第一个应用 ### -第一步:创建你app的目录 +####第一步:创建你app的目录 - [leo@linux-vps python3.4-flask] mkdir app - [leo@linux-vps python3.4-flask]mkdir app/static - [leo@linux-vps python3.4-flask]mkdir app/templates + [leo@linux-vps python3.4-flask] mkdir app + [leo@linux-vps python3.4-flask] mkdir app/static + [leo@linux-vps python3.4-flask] mkdir app/templates -在python3.4-flask文件家中创建一个一个名为app的文件夹,它包含了两个子文件夹“static”和“templates”。我们的Python脚本会在app文件夹,像css/js这类文件会在static文件夹,template文件夹会包含我们的html模板。 +在python3.4-flask文件夹中创建一个名为app的文件夹,它包含了两个子文件夹“static”和“templates”。我们的Python脚本会放在app文件夹,像css/js这类文件会在static文件夹,template文件夹会包含我们的html模板。 -第二步:在app文件夹内部创建一个初始化文件。 +####第二步:在app文件夹内部创建一个初始化文件 [leo@linux-vps python3.4-flask] vim app/_init_.py from flask import Flask @@ -96,7 +93,7 @@ Python有它自己的包管理去,与yum和apt-get相似。你将需要它来 app = Flask(__name__) from app import index -这个文件创建一个Flask的新的实例并加载我们存储在index.py文件中的python程序,这个文件我们之后会创建。 +这个文件会创建一个Flask的新的实例,并加载我们存储在index.py文件中的python程序——这个文件我们之后会创建。 [leo@linux-vps python3.4-flask]vim app/index.py from app import app @@ -110,7 +107,7 @@ Python有它自己的包管理去,与yum和apt-get相似。你将需要它来 return -flask中的路由由路由装饰器处理。这用于给函数绑定URL。 +flask中的访问路由通过“路由装饰器”处理。它用于将一个 URL 绑定到函数。 @app.route('/') @app.route('/index') @@ -123,7 +120,7 @@ flask中的路由由路由装饰器处理。这用于给函数绑定URL。 subprocess.Popen(['ls', ‘-l’],stdout=subprocess.PIPE,stderr=subprocess.PIPE) -stdout和stderr会相应地存储命令的输出和错误。你可以使用Popen的communicate方法来访问输出了。 +stdout和stderr会相应地存储命令的输出和错误。你可以使用Popen的communicate方法来访问输出。 out,error = cmd.communicate() @@ -133,7 +130,7 @@ stdout和stderr会相应地存储命令的输出和错误。你可以使用Popen 关于subprocess模块更多的信息会在教程的最后给出。 -第三步:创建一个html模板来显示我们命令的输出。 +####第三步:创建一个html模板来显示我们命令的输出。 要做到这个我们使用flask中的Jinja2模板引擎来为我们渲染。 @@ -162,31 +159,31 @@ stdout和stderr会相应地存储命令的输出和错误。你可以使用Popen {% endfor %} -Jinja2模板引擎允许你使用“{{ … }}”分隔符来打印结果,{% … %}来做循环和赋值。我使用“decode()”方法来格式化。 +Jinja2模板引擎允许你使用“{{ … }}”分隔符来输出结果,{% … %}来做循环和赋值。我使用“decode()”方法来格式化。 -第四步:运行app +####第四步:运行app [leo@linux-vps python3.4-flask]vim run.py from app import app app.debug = True app.run(host='174.140.165.231', port=80) -上面的代码会在debug模式下运行app。如果你不写IP地址和端口,默认则是localhost:5000。 +上面的代码会在debug模式下运行app。如果你不指定 IP 地址和端口,默认则是localhost:5000。 [leo@linux-vps python3.4-flask] chmod +x run.py [leo@linux-vps python3.4-flask] python3.4 run.py ![](http://techarena51.com/wp-content/uploads/2014/12/install-python3-flask.png) -我已经加了更多的带来来显示CPU、I/O和平均负载。 +我已经加了更多的代码来显示CPU、I/O和平均负载。 ![](http://techarena51.com/wp-content/uploads/2014/12/install-python3-flask-on-linux.png) -你可以在[这里][3]浏览代码。 +你可以在[这里][3]浏览完整的代码。 这是一个对flask的简短教程,我建议你阅读下面的教程和文档来更深入地了解。 -http://flask.pocoo.org/docs/0.10/quickstart/# +http://flask.pocoo.org/docs/0.10/quickstart/ https://docs.python.org/3.4/library/subprocess.html#popen-constructor @@ -198,7 +195,7 @@ via: http://techarena51.com/index.php/how-to-install-python-3-and-flask-on-linux 作者:[Leo G][a] 译者:[geekpi](https://github.com/gekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c9a41a4fb067d900bfd2bbc782f62e10efb6688d Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 12 Mar 2015 15:49:19 +0800 Subject: [PATCH 536/725] PUB:20141106 Tomahawk Music Player Returns With New Look, Features @H-mudcup --- ... Player Returns With New Look, Features.md | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) rename {translated/share => published}/20141106 Tomahawk Music Player Returns With New Look, Features.md (65%) diff --git a/translated/share/20141106 Tomahawk Music Player Returns With New Look, Features.md b/published/20141106 Tomahawk Music Player Returns With New Look, Features.md similarity index 65% rename from translated/share/20141106 Tomahawk Music Player Returns With New Look, Features.md rename to published/20141106 Tomahawk Music Player Returns With New Look, Features.md index 0194b88257..6a8b7496cb 100644 --- a/translated/share/20141106 Tomahawk Music Player Returns With New Look, Features.md +++ b/published/20141106 Tomahawk Music Player Returns With New Look, Features.md @@ -1,5 +1,4 @@ - -Tomahawk音乐播放器带着新形象、新功能回来了 +新面孔、新功能的 Tomahawk 音乐播放器 ================================================================================ **在悄无声息得过了一年之后,Tomahawk——音乐播放器中的瑞士军刀——带着值得歌颂的全新发行版回归了。 ** @@ -9,35 +8,35 @@ Tomahawk音乐播放器带着新形象、新功能回来了 ### Tomahawk——两个世界的极品 ### -Tomahawk嫁给了一个带有我们的“即时”现代文化的传统应用结构。它可以浏览和播放本地的音乐和Spotify、Grooveshark以及SoundCloud这类的线上音乐。在最新的发行版中,它把Google Play Music和Beats Music列入了它的名册。 +Tomahawk 将一个传统的应用结构与我们的“即时”现代文化相结合。它可以浏览和播放本地的音乐和Spotify、Grooveshark以及SoundCloud这类的线上音乐。在最新的发行版中,它把Google Play Music和Beats Music列入了它的名册。 这可能听着很繁复或令人困惑,但实际上它表现得出奇的好。 -若你想要播放一首歌,而且不介意它是从哪里来的,你只需告诉Tomahawk音乐的标题和作者,它就会自动从可获取的源里找出高品质版本的音乐——你不需要做任何事。 +若你想要播放一首歌,而且不介意它是从哪里来的,你只需告诉Tomahawk这个音乐的标题和作者,它就会自动从可获取的源里找出高品质版本的音乐——你不需要做任何事。 ![](http://i.imgur.com/nk5oixy.jpg) -这个应用还弄了一些附加的功能,比如EchoNest剖析,Last.fm建议,还有对Jabber的支持,这样你就能‘播放’朋友的音乐。它还有一个内置的信息服务,以便于你能和其他人快速的分享播放列表和音乐。 +这个应用还弄了一些附加的功能,比如EchoNest剖析,Last.fm建议,还有对Jabber的支持,这样你就能“播放”朋友的音乐。它还有一个内置的信息服务,以便于你能和其他人快速的分享播放列表和音乐。 ->“这种从根本上就与众不同的听音乐的方式,开启了前所未有的音乐的消费和分享体验”,项目的网站上这样写道。而且即便它如此独特,这也没有错。 +>“这种从根本上就与众不同的听音乐的方式,开启了前所未有的音乐的消费和分享体验”,该项目的网站上这样写道。而且即便它如此独特,这也没有错。 ![Tomahawk supports the Sound Menu](http://www.omgubuntu.co.uk/wp-content/uploads/2014/11/tomahawk-controllers.jpg) -支持声音菜单 +*支持声音菜单* ### Tomahawk0.8发行版的亮点 ### - 新的交互界面 - 对Beats Music的支持 - 对Google Play Music的支持(保存的和播放全部链接) -- 对拖拽iTunes,Spotify这类网站的链接的支持 +- 支持拖拽iTunes,Spotify这类网站的链接 - 正在播放的提示 - Android应用(测试版) - 收件箱的改进 ### 在Ubuntu上安装Tomahawk0.8 ### -作为一个流媒体音乐的大用户,我会在接下来的几天里体验一下这个应用软件,然后提供一个关于他的改变的更全面的赏析。与此同时,你也可以尝尝鲜。 +作为一个流媒体音乐的粉丝,我会在接下来的几天里体验一下这个应用软件,然后提供一个关于他的改变的更全面的赏析。与此同时,你也可以尝尝鲜。 在Ubuntu 14.04 LTS和Ubuntu 14.10上可以通过官方PPA获得Tomahawk。 @@ -47,7 +46,7 @@ Tomahawk嫁给了一个带有我们的“即时”现代文化的传统应用结 在官方项目网站上可以找的独立安装程序和更详细的信息。 -- [Visit the Official Tomahawk Website][1] +- [访问 Tomahawk 官网][1] -------------------------------------------------------------------------------- @@ -55,7 +54,7 @@ via: http://www.omgubuntu.co.uk/2014/11/tomahawk-media-player-returns-new-look-f 作者:[Joey-Elijah Sneddon][a] 译者:[H-mudcup](https://github.com/H-mudcup) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 424874e4a600f0c2acf8df947d1d69557c89fda4 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 12 Mar 2015 16:09:06 +0800 Subject: [PATCH 537/725] PUB:20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously @runningwater --- ...gle ISO to 20 USB Drives Simultaneously.md | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) rename {translated/share => published}/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md (59%) diff --git a/translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md b/published/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md similarity index 59% rename from translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md rename to published/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md index 098350741f..b9768d7148 100644 --- a/translated/share/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md +++ b/published/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md @@ -1,20 +1,20 @@ -支持同时把单个 ISO 文件写入 20 个 USB 驱动盘的应用程序 +MultiWriter:同时将 ISO 镜像并发写入 20 个 USB 启动盘 ================================================================================ -**我的问题是如何把一个Linux ISO 文件烧录到 17 个 USB 拇指驱动盘?** +**我的问题是如何把一个Linux ISO 文件烧录到 17 个 USB 启动盘?** -精通代码的会写一个 bash 脚本来自动化处理,而大部分的人会使用像 USB 启动盘创建器这样的图形用户界面工具来把 ISO 文件一个一个的烧录到驱动盘中。但剩下的还有一些人会很快得出结论,两种方法都不太理想。 +精通代码的人会写一个 bash 脚本来自动化处理,而大部分的人会使用像 USB 启动盘创建器这样的图形用户界面工具来把 ISO 文件一个、一个的烧录到驱动盘中。但剩下的还有一些人也许会很快得出结论,两种方法都不太理想。 ### 问题 > 解决 ### ![GNOME MultiWriter in action](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/gnome-multi-writer.jpg) -GNOME MultiWriter 在运行当中 +*GNOME MultiWriter 在运行当中* -Richard Hughes,一个 GNOME 开发者,也面临着类似的困境。他要创建一批预装操作系统的 USB 驱动盘,需要一个足够简单的工具,使得像他父亲这样的用户也能使用。 +Richard Hughes,一个 GNOME 开发者,也面临着类似的困境。他要创建一批预装操作系统的 USB 启动盘,需要一个足够简单的工具,使得像他父亲这样的用户也能使用。 他的反应是开发**品牌性的新应用程序**,使上面的两种方法合二为一,创造出易用的一款工具。 -它的名字就叫 “[GNOME MultiWriter][1]”。同时可以把单个的 ISO 或 IMG 文件写入多个 USB 驱动盘。 +它的名字就叫 “[GNOME MultiWriter][1]”,可以同时把单个的 ISO 或 IMG 文件写入多个 USB 驱动盘。 它不支持个性化自定义或命令行执行的功能,使用它就可以省掉浪费一下午的时间来对相同的操作的重复动作。 @@ -24,25 +24,25 @@ Richard Hughes,一个 GNOME 开发者,也面临着类似的困境。他要 ![The app can be installed on Ubuntu](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/mutli-writer-on-ubuntu.jpg) -该应用程序可以在 Ubuntu 上安装 +*该应用程序可以在 Ubuntu 上安装* -这款应用程序的定义使用场景很不错,正适合使用于预装正要发布的操作系统或 live 映像的 USB 棒上。 +这款应用程序的定义使用场景很不错,正适合使用于预装正要发布的操作系统或 live 映像的 USB 启动盘上。 -那就是说,任何人想要创建一个单独可启动的 USB 棒的话,也是一样的适用 - 因我用 Ubuntu 的内置磁盘创建工具来创建可引导的映像从来没有一次成功过的,所以这方案对我来说是个好消息! +那就是说,任何人想要创建一个单独可启动的 USB 启动盘的话,也是一样的适用 - 因我用 Ubuntu 的内置磁盘创建工具来创建可引导的映像从来没有一次成功过的,所以这方案对我来说是个好消息! -它的开发者 Hughes 说它**最高能支持20个 USB驱动盘**,每个盘的大小在 1GB 到 32GB之间。 +它的开发者 Hughes 说它**最高能支持20个 USB 启动盘**,每个盘的大小在 1GB 到 32GB之间。 -GNOME MultiWriter 不好的地方(到现在为止)就是它还没有一个完结、稳定的成品。它是能工作,但在早期的时候,还没有可安装的二进制版本或可添加到你庞大软件源的 PPA。 +GNOME MultiWriter 也有不好的地方(到现在为止)就是它还没有一个完结、稳定的成品。它是能工作,但在早期的时候,还没有可安装的二进制版本或可添加到你庞大软件源的 PPA。 如果您知道通常的 configure/make 的操作流程的话,可以获取其源码并随时都可以编译运行。在 Ubuntu14.10 系统上,你可能还需要首先安装以下软件包: sudo apt-get install gnome-common yelp-tools libcanberra-gtk3-dev libudisks2-dev gobject-introspection -如果您得到并运行起来,已经玩转的话,给我们分享下您的感受! +如果您可以运行起来,已经玩转的话,给我们分享下您的感受! 此项目托管在 GitHub 上,盼望对其提出问题缺陷和发起 pull 请求,在上面也可以找到压缩包下载,进行手动安装。 -- [Github 上的 GNOME MultiWriter][2] +- [Github 上的 GNOME MultiWriter][1] -------------------------------------------------------------------------------- @@ -50,10 +50,9 @@ via: http://www.omgubuntu.co.uk/2015/01/gnome-multiwriter-iso-usb-utility 作者:[Joey-Elijah Sneddon][a] 译者:[runningwater](https://github.com/runningwater) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:https://plus.google.com/117485690627814051450/?rel=author [1]:https://github.com/hughsie/gnome-multi-writer/ -[2]:https://github.com/hughsie/gnome-multi-writer/ From ed1c45b4b8ca27423269b13c59bb4418571da4fb Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 12 Mar 2015 16:44:15 +0800 Subject: [PATCH 538/725] PUB:20141229 5 User Space Debugging Tools in Linux @mtunique --- ...9 5 User Space Debugging Tools in Linux.md | 102 +++++++++--------- 1 file changed, 54 insertions(+), 48 deletions(-) rename {translated/tech => published}/20141229 5 User Space Debugging Tools in Linux.md (63%) diff --git a/translated/tech/20141229 5 User Space Debugging Tools in Linux.md b/published/20141229 5 User Space Debugging Tools in Linux.md similarity index 63% rename from translated/tech/20141229 5 User Space Debugging Tools in Linux.md rename to published/20141229 5 User Space Debugging Tools in Linux.md index 7989758115..d3f572c516 100644 --- a/translated/tech/20141229 5 User Space Debugging Tools in Linux.md +++ b/published/20141229 5 User Space Debugging Tools in Linux.md @@ -1,9 +1,11 @@ -5 Linux下用户空间调试工具 +五个 Linux 下用户空间的调试工具 ================================================================================ -根据定义,调试工具是那些那些使我们能够监测、控制和纠正其他程序的程序。我们为什么应该用调试工具呢? 在有些情况下,运行一些程序的时候我们会被卡住,我们需要明白究竟发生了什么。 例如, 我们正在运行应用程序,它产生了一些错误消息。要修复这些错误,我们应该先找出为什么产生这些错误的消息和这些错误消息从哪里产生的。 一个应用程序可能突然挂起,我们必须了解其他什么进程同时在运行。我们可能还必须弄清楚进程'x'挂起的时候在做什么。为了剖析这些细节, 我们需要调试工具的帮助。有几个Linux下的用户空间调试工具和技术,他们用来分析用户空间问题相当有用。他们是: +根据定义,调试工具是那些那些使我们能够监测、控制和纠正其他程序的程序。我们为什么应该用调试工具呢? 在有些情况下,运行一些程序的时候我们会被卡住,我们需要明白究竟发生了什么。 例如,我们正在运行应用程序,它产生了一些错误消息。要修复这些错误,我们应该先找出为什么产生这些错误的消息和这些错误消息从哪里产生的。 一个应用程序可能突然挂起,我们必须了解其他什么进程同时在运行。我们可能还必须弄清楚某个进程挂起的时候在做什么。为了剖析这些细节, 我们需要调试工具的帮助。 + +有几个Linux下的用户空间调试工具和技术,它们用来分析用户空间的问题相当有用。它们是: - **'print' 语句** -- **查询 (/proc, /sys etc)** +- **查询 (/proc, /sys 等)** - **跟踪 (strace/ltrace)** - **Valgrind (memwatch)** - **GDB** @@ -12,42 +14,44 @@ ### 1.'print' 语句 ### -这是一个基本的原始的调试问题的方法。 我们可以在程序中插入print语句来了解控制流和变量值。 虽然这是一个简单的技术, 但它有一些缺点的。 程序需要进行编辑以添加'print'语句,然后不得不重新编译,重新运行来获得输出。 如果要调试的程序相当大,这是一个耗时的方法。 +这是一个基本的原始的调试问题的方法。 我们可以在程序中插入print语句来了解控制流和变量值。 虽然这是一个简单的技术, 但它有一些缺点。 程序需要进行编辑以添加'print'语句,然后必须重新编译,重新运行来获得输出。 如果要调试的程序相当大,这是一个耗时的方法。 ### 2. 查询 ### 在某些情况下,我们需要弄清楚在一个运行在内核中的进程的状态和内存映射。为了获得这些信息,我们不需要在内核中插入任何代码。 相反,可以用 /proc 文件系统。 -/proc 是一个伪文件系统,系统一起启动运行就收集着运行时系统的信息 (cpu信息, 内存容量 等)。 +/proc 是一个伪文件系统,系统一启动运行就收集着运行时系统的信息 (cpu信息, 内存容量等)。 ![output of 'ls /proc'](http://blog.linoxide.com/wp-content/uploads/2014/12/proc-output.png) -'ls /proc'的输出 + +*'ls /proc'的输出* 正如你看到的, 系统中运行的每一个进程在/proc文件系统中有一个以进程id命名的项。每个进程的细节信息可以在进程id对应的目录下的文件中获得。 ![output of 'ls /proc/pid'](http://blog.linoxide.com/wp-content/uploads/2014/12/proc-pid.png) -'ls /proc/pid'的输出 + +*'ls /proc/pid'的输出* 解释/proc文件系统内的所有条目超出了本文的范围。一些有用的列举如下: - /proc/cmdline -> 内核命令行 - /proc/cpuinfo -> 关于处理器的品牌,型号信息等 - /proc/filesystems -> 文件系统的内核支持的信息 -- /proc//cmdline -> 命令行参数传递到当前进程 -- /proc//mem -> 当前进程持有的内存 -- /proc//status -> 当前进程的状态 +- /proc/\/cmdline -> 命令行参数传递到当前进程 +- /proc/\/mem -> 当前进程持有的内存 +- /proc/\/status -> 当前进程的状态 ### 3. 跟踪 ### -strace的和ltrace是两个在Linux中用来追踪程序的执行细节的跟踪工具 +strace的和ltrace是两个在Linux中用来追踪程序的执行细节的跟踪工具。 #### strace: #### -strace拦截和记录系统调用并且由它来接收的信号。对于用户,它显示了系统调用,传递给它们的参数和返回值。 strace的可以附着到已在运行的进程中,或到一个新的进程。它作为一个针对开发者和系统管理员的诊断,调试工具是很有用的。它也可以用来当为一个通过跟踪不同的程序调用来了解系统的工具。这个工具的好处是不需要源代码和程序不需要重新编译。 +strace拦截和记录系统调用及其接收的信号。对于用户,它显示了系统调用、传递给它们的参数和返回值。strace的可以附着到已在运行的进程或一个新的进程。它作为一个针对开发者和系统管理员的诊断、调试工具是很有用的。它也可以用来当做一个通过跟踪不同的程序调用来了解系统的工具。这个工具的好处是不需要源代码,程序也不需要重新编译。 使用strace的基本语法是: -**strace command** +**strace 命令** strace有各种各样的参数。可以检查看strace的手册页来获得更多的细节。 @@ -58,11 +62,12 @@ strace的输出非常长,我们通常不会对显示的每一行都感兴趣 用'-o'选项,命令的输出可以被重定向到文件。 ![output of strace filtering only the open system call](http://blog.linoxide.com/wp-content/uploads/2014/12/strace-output.png) -strace过滤成只有系统调用的输出 + +*strace过滤成只有系统调用的输出* #### ltrace: #### -ltrace跟踪和记录一个进程的动态(运行时)库的调用和收到的信号。它也可以跟踪一个进程所作的系统调用。它的用法是类似与strace。 +ltrace跟踪和记录一个进程的动态(运行时)库的调用及其收到的信号。它也可以跟踪一个进程所作的系统调用。它的用法是类似与strace。 **ltrace command** @@ -73,25 +78,26 @@ ltrace跟踪和记录一个进程的动态(运行时)库的调用和收到 所有可用的选项请参阅ltrace手册。 ![output of ltrace capturing 'strcmp' library call](http://blog.linoxide.com/wp-content/uploads/2014/12/ltrace-output.png) -ltrace捕捉'STRCMP'库调用的输出 + +*ltrace捕捉'STRCMP'库调用的输出* ### 4. Valgrind ### -Valgrind是一套调试和分析工具。一个被广泛使用的工具,默认的工具被称为'Memcheck'的拦截malloc(),new(),free()和delete()调用的内存检测工具。换句话说,它在检测下面这些问题非常有用: +Valgrind是一套调试和分析工具。它的一个被广泛使用的默认工具——'Memcheck'——可以拦截malloc(),new(),free()和delete()调用。换句话说,它在检测下面这些问题非常有用: - 内存泄露 - 重释放 - 访问越界 - 使用未初始化的内存 -- 使用的内存已经被释放 等。 +- 使用已经被释放的内存等。 它直接通过可执行文件运行。 -Valgrind带有一些缺点。因为它增加了内存占用,可以减慢你的程序。它有时会造成误报和漏报。它不能检测出静态分配的数组的访问越界问题。 +Valgrind也有一些缺点,因为它增加了内存占用,会减慢你的程序。它有时会造成误报和漏报。它不能检测出静态分配的数组的访问越界问题。 -为了用他, 首先下载并安装在你的系统上。 ([Valgrind下载页面][1]). 可以使用操作系统上的包管理起来安装。 +为了使用它,首先请[下载][1]并安装在你的系统上。可以使用操作系统上的包管理器来安装。 -使用命令行安装涉及解压缩,解包下载的文件。 +使用命令行安装需要解压缩和解包下载的文件。 tar -xjvf valgring-x.y.z.tar.bz2 (where x.y.z is the version number you are trying to install) @@ -130,9 +136,10 @@ Valgrind带有一些缺点。因为它增加了内存占用,可以减慢你的 这是valgrind呈现错误的输出: ![output of valgrind showing heap block overrun and memory leak](http://blog.linoxide.com/wp-content/uploads/2014/12/Valgrind.png) -valgrind显示堆溢出和内存泄漏的输出 -正如我们在上面看到的消息,我们正在试图访问超出函数f分配的内存和分配的内存没有释放。 +*valgrind显示堆溢出和内存泄漏的输出* + +正如我们在上面看到的消息,我们正在试图访问函数f未分配的内存以及分配尚未释放的内存。 ### 5. GDB ### @@ -144,15 +151,15 @@ GDB是来自自由软件基金会的调试器。它对定位和修复代码中 - 检查所需信息 - 改变程序中的数据 等。 -你也可以附加一个崩溃的程序coredump到GDB并分析故障的原因。 +你也可以将一个崩溃的程序coredump附着到GDB并分析故障的原因。 GDB提供很多选项来调试程序。 然而,我们将介绍一些重要的选择,来感受如何开始使用GDB。 -如果你还没有安装GDB,可以在这里下载 [GDB官方网站][2]. +如果你还没有安装GDB,可以在这里下载:[GDB官方网站][2]。 #### 编译程序: #### -为了用GDB调试程序,必须使用gcc的'-g'选项进行编译。将以操作系统的本地格式产生调试信息,GDB利用这些信息来工作。 +为了用GDB调试程序,必须使用gcc的'-g'选项进行编译。这将以操作系统的本地格式产生调试信息,GDB利用这些信息来工作。 下面是一个简单的程序(example1.c)执行被零除用来显示GDB的用法: @@ -169,18 +176,20 @@ GDB提供很多选项来调试程序。 然而,我们将介绍一些重要的 } ![An example showing usage of gdb](http://blog.linoxide.com/wp-content/uploads/2014/12/gdb-example.png) -展示GDB用法的例子 + +*展示GDB用法的例子* #### 调用 GDB: #### 通过在命令行中执行'gdb'来启动gdb: ![invoking gdb](http://blog.linoxide.com/wp-content/uploads/2014/12/gdb.png) -调用 gdb -一旦调用, 它将等待终端命令并执行,直到退出。 +*调用 gdb* -如果一个进程已经在运行,你需要将GDB连接到它上面,可以通过指定进程ID来实现。假设程序已经崩溃,要分析问题的原因,则连接GDB到core文件。 +调用后, 它将等待终端命令并执行,直到退出。 + +如果一个进程已经在运行,你需要将GDB连接到它上面,可以通过指定进程ID来实现。假设程序已经崩溃,要分析问题的原因,则用GDB分析core文件。 #### 启动程序: #### @@ -188,7 +197,7 @@ GDB提供很多选项来调试程序。 然而,我们将介绍一些重要的 #### 给程序传参数: #### -使用'set args'给你的程序传参数,当程序下次运行时将获得参数。'show args'将显示传递给程序的参数。 +使用'set args'给你的程序传参数,当程序下次运行时将获得该参数。'show args'将显示传递给程序的参数。 #### 检查堆栈: #### @@ -202,13 +211,13 @@ GDB提供很多选项来调试程序。 然而,我们将介绍一些重要的 #### 检查数据: #### -程序的数据可以在里面GDB使用'print'命令进行检查。例如,如果'X'是调试程序内的变量,'print x'会打印x的值。 +程序的数据可以在里面GDB使用'print'命令进行检查。例如,如果'x'是调试程序内的变量,'print x'会打印x的值。 #### 检查源码: #### 源码可以在GDB中打印。默认情况下,'list'命令会打印10行代码。 -- **list **: 列出'linenum'行周外的源码 +- **list **: 列出'linenum'行周围的源码 - **list **: 从'function'开始列出源码 - **disas **: 显示该函数机器代码 @@ -217,11 +226,11 @@ GDB提供很多选项来调试程序。 然而,我们将介绍一些重要的 使用GDB,我们可以在必要的地方设置断点,观察点等来停止程序。 - **break **: 在'location'设置一个断点。当在程序执行到这里时断点将被击中,控制权被交给用户。 -- **watch **: 当'expr'被程序写而且它的值发生变化时GDB将停止 -- **catch **: 当'event'发生时GDB停止。 +- **watch **: 当'expr'被程序写入而且它的值发生变化时GDB将停止 +- **catch **: 当'event'发生时GDB停止 - **disable **: 禁用指定断点 - **enable **: 启用指定断点 -- **delete **: 删除 断点/观察点/捕获点。 如果没有传递参数默认操作是在所有的断点。 +- **delete **: 删除 断点/观察点/捕获点。 如果没有传递参数默认操作是在所有的断点 - **step**: 一步一步执行程序 - **continue**: 继续执行程序,直到执行完毕 @@ -232,21 +241,18 @@ GDB提供很多选项来调试程序。 然而,我们将介绍一些重要的 GDB还有更多的可用选项。里面GDB使用help选项了解更多详情。 ![getting help within gdb](http://blog.linoxide.com/wp-content/uploads/2014/12/gdb-help.png) -在GDB种获得帮助 + +*在GDB中获得帮助* ### 总结 ### -在这篇文章中,我们已经看到不同类型的Linux用户空间的调试工具。总结以上所有内容,这是些什么时候使用该什么的快速指南: +在这篇文章中,我们已经看到不同类型的Linux用户空间的调试工具。总结以上所有内容,如下是什么时候使用该什么的快速指南: -基本调试,获得关键变量 - print 语句 - -获取有关文件系统支持,可用内存,CPU,运行程序的内核状态等信息 - 查询 /proc 文件系统 - -最初的问题诊断,系统调用或库调用的相关问题,了解程序流程 – strace / ltrace - -应用程序内存空间的问题 – valgrind - -检查应用程序运行时的行为,分析应用程序崩溃 – gdb。 +- 基本调试,获得关键变量 - print 语句 +- 获取有关文件系统支持,可用内存,CPU,运行程序的内核状态等信息 - 查询 /proc 文件系统 +- 最初的问题诊断,系统调用或库调用的相关问题,了解程序流程 – strace / ltrace +- 应用程序内存空间的问题 – valgrind +- 检查应用程序运行时的行为,分析应用程序崩溃 – gdb -------------------------------------------------------------------------------- @@ -254,7 +260,7 @@ via: http://linoxide.com/linux-how-to/user-space-debugging-tools-linux/ 作者:[B N Poornima][a] 译者:[mtunique](https://github.com/mtunique) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From f5a21bd49d810c9b76127e190fff8d28de622536 Mon Sep 17 00:00:00 2001 From: theo-l Date: Thu, 12 Mar 2015 15:03:52 -0300 Subject: [PATCH 539/725] translating --- ...10 How To Get Email Alerts for SSH Login on Linux Server.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md b/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md index 286c909768..4147d4bab5 100644 --- a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md +++ b/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md @@ -1,3 +1,4 @@ +theo-l translating How To Get Email Alerts for SSH Login on Linux Server ================================================================================ ![](http://www.ehowstuff.com/wp-content/uploads/2015/03/fail2ban-security.jpg) @@ -56,4 +57,4 @@ via: http://www.ehowstuff.com/how-to-get-email-alerts-for-ssh-login-on-linux-ser 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.ehowstuff.com/author/mhstar/ \ No newline at end of file +[a]:http://www.ehowstuff.com/author/mhstar/ From e89e7c26b6c5938e7d9f05126cae502258443341 Mon Sep 17 00:00:00 2001 From: theo-l Date: Thu, 12 Mar 2015 18:17:05 -0300 Subject: [PATCH 540/725] translating --- ...10 How To Get Email Alerts for SSH Login on Linux Server.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md b/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md index 4147d4bab5..c153a57a88 100644 --- a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md +++ b/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md @@ -1,11 +1,14 @@ theo-l translating How To Get Email Alerts for SSH Login on Linux Server +在Linux服务器上如何为SSH登陆获取Email警告 ================================================================================ ![](http://www.ehowstuff.com/wp-content/uploads/2015/03/fail2ban-security.jpg) Enable SSH server on a virtual private server (VPS) will expose the server to the internet and provide opportunities for hacking activities, especially when VPS still using root as a primary access. VPS should be configured with a email alert automatically to each successful login attempts via SSH server . VPS server owner shall be notified of any SSH server access log, such as who, when and which source IP address. This is an important security concern for server owners to protect the server from unknown login attempts. This is because if hackers use brute force to log into your VPS via ssh then it can be very dangerous. In this article, I will explain how to set up an email alert to all SSH login users on linux CentOS 6, CentOS 7, RHEL 6 and RHEL 7. +让SSH服务器在虚拟私有服务器(VPS)上生效会使得该服务器暴露到互联网中并为黑客活动提供了机会,尤其时当VPS还将root作为主要访问时. VPS应该为每次通过SSH服务器成功登陆尝试配置一个自动的email警告. VPS的服务器所有者应该在任何的SSH服务器访问时得到通知,例如登陆者,登陆时间以及IP地址等信息.这是一个对于服务器拥有者保护服务器避免未知登陆尝试的非常重要的安全关注点.因为如果黑客使用暴力破解方式通过SSH来登陆你的VPS,那么后果很严重.在本文中,我会解释如何在CentOS 6, CentOS 7, RHEL 6 和 RHEL 7上为所有的SSH用户登陆设置一个email警告. 1. Login to your server as root user : +1. 使用root用户登陆到你的服务器: 2. Configure at alert from source global definitions (/etc/bashrc). This will enabled for root and normal users : From 8703f2f61725878cb9742a4ac4fc099ac9811d6f Mon Sep 17 00:00:00 2001 From: theo-l Date: Thu, 12 Mar 2015 21:22:46 -0300 Subject: [PATCH 541/725] translated --- ...il Alerts for SSH Login on Linux Server.md | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) rename {sources => translated}/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md (64%) diff --git a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md b/translated/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md similarity index 64% rename from sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md rename to translated/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md index c153a57a88..7c7e556f31 100644 --- a/sources/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md +++ b/translated/tech/20150310 How To Get Email Alerts for SSH Login on Linux Server.md @@ -1,32 +1,27 @@ -theo-l translating -How To Get Email Alerts for SSH Login on Linux Server 在Linux服务器上如何为SSH登陆获取Email警告 ================================================================================ ![](http://www.ehowstuff.com/wp-content/uploads/2015/03/fail2ban-security.jpg) -Enable SSH server on a virtual private server (VPS) will expose the server to the internet and provide opportunities for hacking activities, especially when VPS still using root as a primary access. VPS should be configured with a email alert automatically to each successful login attempts via SSH server . VPS server owner shall be notified of any SSH server access log, such as who, when and which source IP address. This is an important security concern for server owners to protect the server from unknown login attempts. This is because if hackers use brute force to log into your VPS via ssh then it can be very dangerous. In this article, I will explain how to set up an email alert to all SSH login users on linux CentOS 6, CentOS 7, RHEL 6 and RHEL 7. 让SSH服务器在虚拟私有服务器(VPS)上生效会使得该服务器暴露到互联网中并为黑客活动提供了机会,尤其时当VPS还将root作为主要访问时. VPS应该为每次通过SSH服务器成功登陆尝试配置一个自动的email警告. VPS的服务器所有者应该在任何的SSH服务器访问时得到通知,例如登陆者,登陆时间以及IP地址等信息.这是一个对于服务器拥有者保护服务器避免未知登陆尝试的非常重要的安全关注点.因为如果黑客使用暴力破解方式通过SSH来登陆你的VPS,那么后果很严重.在本文中,我会解释如何在CentOS 6, CentOS 7, RHEL 6 和 RHEL 7上为所有的SSH用户登陆设置一个email警告. -1. Login to your server as root user : 1. 使用root用户登陆到你的服务器: -2. Configure at alert from source global definitions (/etc/bashrc). This will enabled for root and normal users : - +2. 在全局源定义处配置警告(/etc/bashrc),这样就会对跟用户以及普通用户都生效: [root@vps ~]# vi /etc/bashrc -Add the following at the bottom of the files. +将下面的内容加入到上述文件的尾部。 echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com -3. Optionally you can enable alert for root only : +3.你也可以选择性地让警告只对跟用户生效: [root@vps ~]# vi .bashrc -Add the following at the bottom of /root/.bashrc : +将下面的内容添加到/root/.bashrc的为尾部: echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com -Full Configuration file example : +整个配置文件样例: # .bashrc @@ -42,11 +37,11 @@ Full Configuration file example : fi echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com -4. Optionally you can enable alert for specify normal user (e.g skytech ) : +4.你也可以选择性地让警告只对特定的普通用户生效(例如 skytech): [root@vps ~]# vi /home/skytech/.bashrc -Add the following at the bottom of /home/skytech/.bashrc : +将下面的内容加入到/home/skytech/.bashrc文件尾部: echo 'ALERT - Root Shell Access (vps.ehowstuff.com) on:' `date` `who` | mail -s "Alert: Root Access from `who | cut -d'(' -f2 | cut -d')' -f1`" recipient@gmail.com @@ -55,7 +50,7 @@ Add the following at the bottom of /home/skytech/.bashrc : via: http://www.ehowstuff.com/how-to-get-email-alerts-for-ssh-login-on-linux-server/ 作者:[skytech][a] -译者:[译者ID](https://github.com/译者ID) +译者:[theo-l](https://github.com/theo-l) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From cd7803df524bb40b91d0156102660b6901f19c69 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Fri, 13 Mar 2015 09:03:07 +0800 Subject: [PATCH 542/725] translating --- ... Share Folders On Local Network Between Ubuntu And Windows.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md b/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md index d0f6d9f1df..28c93ea5fd 100644 --- a/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md +++ b/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md @@ -1,3 +1,4 @@ +[translating by KayGuoWhu] Share Folders On Local Network Between Ubuntu And Windows ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_windows.jpeg) From caaee827dde07189d55eab7ff995ea396b155ab7 Mon Sep 17 00:00:00 2001 From: theo-l Date: Thu, 12 Mar 2015 22:29:33 -0300 Subject: [PATCH 543/725] translating --- ...9 15 Interview Questions on Linux 'ls ' Command--Part 1.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md b/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md index 29804f5874..fd0a8d99ee 100644 --- a/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md +++ b/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md @@ -1,3 +1,5 @@ +theo-l translating + 15 Interview Questions on Linux “ls” Command – Part 1 ================================================================================ The listing command in UNIX and UNIX like operating System ‘ls‘ is one of the most basic and widely used utility in command-line. It is POSIX compliant utility available for GNU coreutils and BSD variants. The ‘ls’ command can be used with a variety of options to get desired results. This article aims at deep insight of file listing command in Linux with relevant examples. @@ -184,4 +186,4 @@ via: http://www.tecmint.com/ls-command-interview-questions/ [a]:http://www.tecmint.com/author/avishek/ [1]:http://www.tecmint.com/ls-interview-questions/ -[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ \ No newline at end of file +[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ From 20fdbd3e069ac8df674ef669c420ca6db60c6d73 Mon Sep 17 00:00:00 2001 From: LouisWei Date: Fri, 13 Mar 2015 13:31:44 +0800 Subject: [PATCH 544/725] wi-cuckoo tranlating --- ...Windows SSH Client Tools To Connect To Your Linux Server.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md b/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md index 550d373d65..5760b5aaa5 100644 --- a/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md +++ b/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md @@ -1,3 +1,4 @@ +wi-cuckoo translating LLAP List Of Free Windows SSH Client Tools To Connect To Your Linux Server ================================================================================ You have Windows as operating system and you need to connect to Linux server to transfer files from Linux to Windows and inversely. So you need to have Secure Shell known as SSH. In fact, SSH is a network protocol which enables you to connect to Linux and Unix servers over the network. It uses public key cryptography to authenticate the remote computer. You can use SSH by several ways, either by using it automatically or by using a password authentication to log in. @@ -78,4 +79,4 @@ via: https://www.unixmen.com/list-free-windows-ssh-client-tools-connect-linux-se [2]:http://www.bitvise.com/download-area [3]:http://mobaxterm.mobatek.net/download.html [4]:http://www.dameware.com/downloads/registration.aspx?productType=ssh&AppID=17471&CampaignID=70150000000PcNM -[5]:http://cygwin.com/packages/ \ No newline at end of file +[5]:http://cygwin.com/packages/ From b33cbc78e7a344dbb38d03ada23f6963393c5fda Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 13 Mar 2015 14:46:47 +0800 Subject: [PATCH 545/725] PUB:20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script @geekpi --- ...o get the process ID (PID) of a shell script.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename {translated/tech => published}/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md (74%) diff --git a/translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md b/published/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md similarity index 74% rename from translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md rename to published/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md index 760757a712..0e24fa1fb1 100644 --- a/translated/tech/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md +++ b/published/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md @@ -1,12 +1,12 @@ -Linux有问必答:如何在脚本中获取进程ID(PID) +Linux有问必答:如何在脚本中获取进程ID(PID) ================================================================================ -> **提问**: 我想要知道运行中脚本subshell的进程id。我该如何在shell脚本中得到PID。 +> **提问**: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。 -当我在执行shell脚本时,它会启动一个叫subshell的进程。作为主shell的子进程,subshell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 +当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 -在某些情况下,你也许想要知道运行中的subshell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的subshell。 +在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。 -在bash中,**subshell进程的PID**存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如: +在bash中,**子shell进程的PID**存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如: #!/bin/bash @@ -16,7 +16,7 @@ Linux有问必答:如何在脚本中获取进程ID(PID) PID of this script: 6583 -除了$$, bash shell还会导出其他的只读变量。比如,PPID存储subshell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID。比如: +除了$$, bash shell还会导出其他的只读变量。比如,PPID存储子shell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID。比如: #!/bin/bash @@ -43,6 +43,6 @@ Linux有问必答:如何在脚本中获取进程ID(PID) via: http://ask.xmodulo.com/process-id-pid-shell-script.html 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 9f9b54e0714edac8ea7dd75a31995431a592dbc9 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 14 Mar 2015 06:07:15 -0300 Subject: [PATCH 546/725] transalted --- ...uestions on Linux 'ls ' Command--Part 1.md | 189 ------------------ ...uestions on Linux 'ls ' Command--Part 1.md | 183 +++++++++++++++++ 2 files changed, 183 insertions(+), 189 deletions(-) delete mode 100644 sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md create mode 100644 translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md diff --git a/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md b/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md deleted file mode 100644 index fd0a8d99ee..0000000000 --- a/sources/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md +++ /dev/null @@ -1,189 +0,0 @@ -theo-l translating - -15 Interview Questions on Linux “ls” Command – Part 1 -================================================================================ -The listing command in UNIX and UNIX like operating System ‘ls‘ is one of the most basic and widely used utility in command-line. It is POSIX compliant utility available for GNU coreutils and BSD variants. The ‘ls’ command can be used with a variety of options to get desired results. This article aims at deep insight of file listing command in Linux with relevant examples. - -![15 ls Command Questions](http://www.tecmint.com/wp-content/uploads/2014/09/ls-Command-Questions.png) -15 ls Command Questions - -### 1. How will you List files from a directory? ### - -Ans: The Linux file listing command ‘ls‘ comes to rescue here. - - # ls - -![List Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-files.gif) -List Files - -Alternatively, we can use ‘echo‘ command to list files within a directory in association with wildcard (*). - - # echo * - -![List All Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-files.gif) -List All Files - -### 2. How will you list all the directories only using echo command? ### - - # echo */ - -![List All Directories](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-directories.gif) -List All Directories - -### 3. How will you list all the files within a directory including hidden files aka (.) dot files? ### - -Ans: We need to use option ‘-a‘ (list hidden files) with command ‘ls‘. - - # ls -a - -![List All Hidden Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-hidden-files.gif) -List All Hidden Files - -### 4. How do you list all the files within a directory including hidden files, but do not list implied ‘.’ and ‘..’? ### - -Ans: We need to use option ‘-A‘ (do not list implied . and ..) with command ‘ls‘. - - # ls -A - -![Do Not List Implied](http://www.tecmint.com/wp-content/uploads/2014/09/Do-not-list-Implied.gif) -Do Not List Implied - -### 5. How will you print the content of a directory in long format listing? ### - -Ans: We need to use option ‘l‘ (long format) with command ‘ls‘. - - # ls -l - -![List Files Long](http://www.tecmint.com/wp-content/uploads/2014/09/list-files-long.gif) -List Files Long - -In the above example, the output seems like. - - drwxr-xr-x 5 avi tecmint 4096 Sep 30 11:31 Binary - -Here, drwxr-xr-x is file permission for owner, group and world. Owner has Read(r), Write(w) and Execute(x) permission. The group to which this file belongs has Read(r) and Execute(x) permission but not Write(w) permission, same permission implies for the world that have access to this file. - -- The Initial ‘d‘ means its a Directory. -- Number ‘5‘ represents Symbolic Link. -- The File Binary belongs to user avi and group tecmint. -- Sep 30 11:31 represents the date and time it was last modified. - -### 6. You are supposed to print the content of directory in long format listing, showing hidden/dot files. How will you achieve this? ### - -Ans: We need to use option ‘-a‘ (list hidden files) and ‘-l‘ (long listing) together with command ‘ls‘. - - # ls -la - -![Print Content of Directory](http://www.tecmint.com/wp-content/uploads/2014/09/Print-Content-of-Directory.gif) -Print Content of Directory - -Alternatively We can use option ‘-A‘ and ‘-l‘ with ‘ls‘ command, if we do not want to list implied ‘.’ and ‘..’. - - # ls -lA - -### 7. How will you figure out the author of each file? ### - -Ans: We need to use option ‘–author‘ along with option ‘-l‘ to print the author name of each file. - - # ls --author -l - -![List Author Files](http://www.tecmint.com/wp-content/uploads/2014/09/List-Author-Files.gif) -List Author Files - -### 8. How will you print escape for non-graphic character? ### - -Ans: We just need to use option ‘-b‘ to print escape for non-graphic character. - - # ls -b - -![Print Escape Character](http://www.tecmint.com/wp-content/uploads/2014/09/Print-Escape-Character.gif) - -### 9. List the size of files and folders in desired scale format. How will you achieve this? ### - -Ans: Here option ‘–block-size=scale‘ along with option ‘-l‘ needs to be used. We need to remove ‘scale’ in the example with the desired scale viz M, K, etc. - - # ls --block-size=M -l - # ls --block-size=K -l - -![List File Scale Format](http://www.tecmint.com/wp-content/uploads/2014/09/List-File-Scale-Format.gif) -List File Scale Format - -### 10. List the files within a directory, but don’t show the backup files, i.e., those files that end with ~. ### - -Ans: Here option ‘-B‘ (do not list implied entries ending with ~) comes to rescue. - - # ls -B - -![List File Without Backup](http://www.tecmint.com/wp-content/uploads/2014/09/List-File-Without-Backup.gif) -List File Without Backup - -### 11. Sort all the files within a directory by name and show associated last modification information. ### - -Ans: We need to use option ‘-c‘ and option ‘-l‘ with command ls to fulfil the need as suggested above. - - # ls -cl - -![Sort Files](http://www.tecmint.com/wp-content/uploads/2014/09/Sort-Files.gif) -Sort Files - -### 12. Sort all the files within a directory by modification time and show associated information. ### - -Ans: We need to use three options together i.e., ‘-l‘, ‘-t‘ and ‘-c‘ with command ls to sort files by modification time, newest first. - - # ls -ltc - -![Sort Files by Modification](http://www.tecmint.com/wp-content/uploads/2014/09/Sort-Files-by-Modification.gif) -Sort Files by Modification - -### 13. How will you control the output of ‘ls’ command to be colorful or no-color? ### - -Ans: We need to use option ‘–color=parameter‘. The parameter to be used with color option are ‘auto’, ‘always’ and ‘never’ which are self explanatory. - - # ls --color=never - # ls --color=auto - # ls --color=always - -![ls Colorful Output](http://www.tecmint.com/wp-content/uploads/2014/09/ls-colorful-output.gif) -ls Colorful Output - -### 14. You are supposed to list directory entries themselves, not their contents. What will you do? ### - -Ans: Here the option ‘-d‘ comes handy. - - # ls -d - -![List Directory Entries](http://www.tecmint.com/wp-content/uploads/2014/09/List-Directory-Entries.gif) -List Directory Entries - -### 15. Create an alias for long format listing “ls -l” as “ll” and output the result to a file and not standard output. ### - -Ans: Here in the above scenario, we need to add alias to .bashrc file and then use redirect operator to write the output to file and not standard output. We will be using editor nano. - - # ls -a - # nano .bashrc - # ll >> ll.txt - # nano ll.txt - -![Create Alias for ls command](http://www.tecmint.com/wp-content/uploads/2014/09/Create-ls-Alias.gif) -Create Alias for ls command - -That’s all for now. Don’t forget to provide us with your valuable feedback in the comments below. I’ll be here again with another interesting article soon. Till then stay tuned and connected. - -### Real Also: ### - -- [10 ‘ls’ Command Interview Questions – Part 2][1] -- [15 Basic ‘ls’ Commands in Linux][2] - --------------------------------------------------------------------------------- - -via: http://www.tecmint.com/ls-command-interview-questions/ - -作者:[Avishek Kumar][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.tecmint.com/author/avishek/ -[1]:http://www.tecmint.com/ls-interview-questions/ -[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ diff --git a/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md b/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md new file mode 100644 index 0000000000..5d72d1f9ca --- /dev/null +++ b/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md @@ -0,0 +1,183 @@ +关于linux中的“ls”命令的15个面试问题 - 第一部分 +================================================================================ +Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使用的最广泛的命令行中工具之一。 +它是一个在GNU基本工具集以及BSD各种变体上可用的与POSIX兼容的工具。 +“ls”命令可以通过与大量的选项一起使用来达到想要的结果。 +这篇文章的目的在于通过相关的样例来深入讨论文件列表命令。 + +![15 ls Command Questions](http://www.tecmint.com/wp-content/uploads/2014/09/ls-Command-Questions.png) +15个“ls”命令问题。 + +### 1. 你会如何从目录中列出文件?### + +答:使用linux文件列表命令“ls”驾到拯救。 + + # ls + +![List Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-files.gif) +列出文件 + +同时,我们也可以使用“echo(打印)”命令与一个通配符(*)相关联的方式在目录中列出其中的所有文件。 + # echo * + +![List All Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-files.gif) +列出所有的文件。 + +### 2. 你会如何只通过使用echo命令来列出目录中的所有文件?### + # echo */ + +![List All Directories](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-directories.gif) +列出所有的目录 + +### 3. 你会怎样列出一个目录中的所有文件, 包括隐藏的dot文件?### + +答:我们需要将“-a”选项与“ls”命令一起使用。 + # ls -a + +![List All Hidden Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-hidden-files.gif) +列出所有的隐藏文件。 + +### 4. 如何列出目录中除了 “当前目录暗喻(.)”和“父目录暗喻(..)”之外的所有文件,包括隐藏文件?### + +答: 我们需要将“-A”选项与“ls”命令一起使用 + # ls -A + +![Do Not List Implied](http://www.tecmint.com/wp-content/uploads/2014/09/Do-not-list-Implied.gif) +别列出暗喻文件。 + +### 5. 如何将当前目录中的内容使用长格式打印列表?### + +答: 我们需要将“-l”选项与“ls”命令一起使用。 + # ls -l + +![List Files Long](http://www.tecmint.com/wp-content/uploads/2014/09/list-files-long.gif) +列出文件的长格式。 + +上面的样例中,其输出结果看起来向下面这样。 + + drwxr-xr-x 5 avi tecmint 4096 Sep 30 11:31 Binary + +上面的drwxr-xr-x 是文件的权限,分别代表了文件所有者,组以及对整个世界。 所有者具有读(r),写(w)以及执行(x)等权限。 该文件所属组具有读(r)和执行(x)但是没有写的权限,相同的权限预示着 +对于整个世界的其他可以访问该文件的用户。 + +- 开头的‘d’意味着这是一个目录 +- 数字'5'表示符号链接 +- 文件 Binary归属于用户 “avi”以及用户组 "tecmint" +- Sep 30 11:31 表示文件最后一次的访问日期与时间。 + +### 6. 假如让你来将目录中的内容以长格式列表打印,并且显示出隐藏的“点文件”,你会如何实现?### + +答: 我们需要同时将"-a"和"-l"选项与“ls”命令一起使用。 + + # ls -la + +![Print Content of Directory](http://www.tecmint.com/wp-content/uploads/2014/09/Print-Content-of-Directory.gif) +打印目录内容 + +同时,如果我们不想列出“当前目录暗喻”和"父目录暗喻",可以将“-A”和“-l”选项同“ls”命令一起使用。 + # ls -lA + +### 7. 如何找到每个文件的创建者?### + +答: 我们需要结合 “--author”和 "-l"选项来打印出每个文件的创建者。 + # ls --author -l + +![List Author Files](http://www.tecmint.com/wp-content/uploads/2014/09/List-Author-Files.gif) +列出文件创建者。 + +### 8. 如何对非显示字符进行转义打印?### + +答:我们只需要使用“-b”选项来对非显示字符进行转义打印 + + # ls -b + +![Print Escape Character](http://www.tecmint.com/wp-content/uploads/2014/09/Print-Escape-Character.gif) + +### 9. 指定特定的单位格式来列出文件和目录的大小,你会如何实现?### +答: 在此可以同时使用选项“-block-size=scale”和“-l”,但是我们需要用特定的单位如M,K等来替换‘scale’。 + + # ls --block-size=M -l + # ls --block-size=K -l + +![List File Scale Format](http://www.tecmint.com/wp-content/uploads/2014/09/List-File-Scale-Format.gif) +列出文件大小单位格式。 + +### 10. 列出目录中的非备份文件,也就是那些文件名以‘~’结尾的文件### + +答: 选项‘-B’赶来救驾。 + + # ls -B + +![List File Without Backup](http://www.tecmint.com/wp-content/uploads/2014/09/List-File-Without-Backup.gif) +列出非备份文件 + +### 11. 将目录中的所有文件按照名称进行排序并与最后修改时间信息进行关联显示### + +答: 为了实现这个需求,我们需要同时将“-c”和"-l"选项与命令一起使用。 + + # ls -cl + +![Sort Files](http://www.tecmint.com/wp-content/uploads/2014/09/Sort-Files.gif) +文件排序 + +### 12. 将目录中的文件按照修改时间进行排序,并显示相关联的信息。### + +答: 我们需要同时使用3个选项--'-l','-t','-c'--与命令‘ls’一起使用来对文件使用修改时间排序,最新的修改时间排在最前。 + + # ls -ltc + +![Sort Files by Modification](http://www.tecmint.com/wp-content/uploads/2014/09/Sort-Files-by-Modification.gif) +按照修改时间对文件排序。 + +### 13. 如何控制‘ls’命令的输出颜色的有无?### + +答: 需要使用选项‘--color=parameter’,parameter参数值具有三种不同值,“auto(自动)”,“always(一直)”,“never(无色)”。 + + # ls --color=never + # ls --color=auto + # ls --color=always + +![ls Colorful Output](http://www.tecmint.com/wp-content/uploads/2014/09/ls-colorful-output.gif) +ls的输出颜色 + +### 14. 假如只需要列出目录本身,而不是目录的内容,你会如何做?### + +答:在此“-d”选项就会显得很顺手。 + + # ls -d + +![List Directory Entries](http://www.tecmint.com/wp-content/uploads/2014/09/List-Directory-Entries.gif) +列出目录本身 + +### 15. 为长格式列表命令"ls -l"创建别名“ll”,并将其结果输出到一个文件而不是标准输出中。### + +答:在上述的这个场景中,我们需要将别名添加到.bashrc文件中,然后使用重定向操作符将输出写入到文件而不是标准输出中。我们将会使用编辑器nano。 + + # ls -a + # nano .bashrc + # ll >> ll.txt + # nano ll.txt + +![Create Alias for ls command](http://www.tecmint.com/wp-content/uploads/2014/09/Create-ls-Alias.gif) +为ls命令创建别名。 + +先到此为止,别忘了在下面的评论中提出你们的宝贵意见,我会再次带着另外的有趣的文章在此闪亮登场。 + +### 参考阅读:### + +- [10 个‘ls’命令的面试问题-第二部分][1] +- [Linux中15个基础的'ls'命令][2] + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/ls-command-interview-questions/ + +作者:[Avishek Kumar][a] +译者:[theo-l](https://github.com/theo-l) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://www.tecmint.com/ls-interview-questions/ +[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ From 260c255e8d73781c4a93ade527e7ad528637fef2 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 14 Mar 2015 06:17:31 -0300 Subject: [PATCH 547/725] updated --- ...9 15 Interview Questions on Linux 'ls ' Command--Part 1.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md b/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md index 5d72d1f9ca..60d41dd161 100644 --- a/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md +++ b/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md @@ -24,6 +24,7 @@ Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使 列出所有的文件。 ### 2. 你会如何只通过使用echo命令来列出目录中的所有文件?### + # echo */ ![List All Directories](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-directories.gif) @@ -32,6 +33,7 @@ Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使 ### 3. 你会怎样列出一个目录中的所有文件, 包括隐藏的dot文件?### 答:我们需要将“-a”选项与“ls”命令一起使用。 + # ls -a ![List All Hidden Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-hidden-files.gif) @@ -40,6 +42,7 @@ Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使 ### 4. 如何列出目录中除了 “当前目录暗喻(.)”和“父目录暗喻(..)”之外的所有文件,包括隐藏文件?### 答: 我们需要将“-A”选项与“ls”命令一起使用 + # ls -A ![Do Not List Implied](http://www.tecmint.com/wp-content/uploads/2014/09/Do-not-list-Implied.gif) @@ -48,6 +51,7 @@ Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使 ### 5. 如何将当前目录中的内容使用长格式打印列表?### 答: 我们需要将“-l”选项与“ls”命令一起使用。 + # ls -l ![List Files Long](http://www.tecmint.com/wp-content/uploads/2014/09/list-files-long.gif) From 5b259482011b6109713392baeb349a130614e5bb Mon Sep 17 00:00:00 2001 From: theo-L Date: Sat, 14 Mar 2015 06:20:16 -0300 Subject: [PATCH 548/725] Update 20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md --- ...09 15 Interview Questions on Linux 'ls ' Command--Part 1.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md b/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md index 60d41dd161..77e42ff9e9 100644 --- a/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md +++ b/translated/tech/20150309 15 Interview Questions on Linux 'ls ' Command--Part 1.md @@ -18,6 +18,7 @@ Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使 列出文件 同时,我们也可以使用“echo(打印)”命令与一个通配符(*)相关联的方式在目录中列出其中的所有文件。 + # echo * ![List All Files](http://www.tecmint.com/wp-content/uploads/2014/09/list-all-files.gif) @@ -79,11 +80,13 @@ Unix或类Unix系统中的“文件列表”命令“ls”是最基础并且使 打印目录内容 同时,如果我们不想列出“当前目录暗喻”和"父目录暗喻",可以将“-A”和“-l”选项同“ls”命令一起使用。 + # ls -lA ### 7. 如何找到每个文件的创建者?### 答: 我们需要结合 “--author”和 "-l"选项来打印出每个文件的创建者。 + # ls --author -l ![List Author Files](http://www.tecmint.com/wp-content/uploads/2014/09/List-Author-Files.gif) From 424be6472986610dc725ed69e2e9442458a4b21b Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 14 Mar 2015 06:27:51 -0300 Subject: [PATCH 549/725] theo-l translating --- ...ls' Command Interview Questions--Part 2.md | 6 ++- ...15 Basic 'ls' Command Examples in Linux.md | 39 ++++++++++--------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md b/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md index bd9a956d12..3e185fe7e1 100644 --- a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md +++ b/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md @@ -1,3 +1,5 @@ +theo-l translating + 10 Useful ‘ls’ Command Interview Questions – Part 2 ================================================================================ Continuing the legacy of ls command here is the second interview article on Listing command. The first article of the series was highly appreciated by the Tecmint Community. If you’ve missed the first part of this series you may like to visit at: @@ -158,10 +160,10 @@ That’s all for now. We will be coming up with the next part of this article se via: http://www.tecmint.com/ls-interview-questions/ 作者:[Ravi Saive][a] -译者:[译者ID](https://github.com/译者ID) +译者:[theo-l](https://github.com/theo-l) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.tecmint.com/author/admin/ -[1]:http://www.tecmint.com/ls-command-interview-questions/ \ No newline at end of file +[1]:http://www.tecmint.com/ls-command-interview-questions/ diff --git a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md index d51dce8f75..f02c7daa58 100644 --- a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md +++ b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md @@ -1,3 +1,4 @@ +theo-l translating Translating by ZTinoZ 15 Basic ‘ls’ Command Examples in Linux ================================================================================ @@ -11,7 +12,7 @@ Linux ls Command ls with no option list files and directories in bare format where we won’t be able to view details like file types, size, modified date and time, permission and links etc. # ls - + 0001.pcap Desktop Downloads index.html install.log.syslog Pictures Templates anaconda-ks.cfg Documents fbcmd_update.php install.log Music Public Videos @@ -20,7 +21,7 @@ ls with no option list files and directories in bare format where we won’t be Here, ls -l (-l is character not one) shows file or directory, size, modified date and time, file or folder name and owner of file and it’s permission. # ls -l - + total 176 -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg @@ -42,7 +43,7 @@ Here, ls -l (-l is character not one) shows file or directory, size, modified da List all files including hidden file starting with ‘.‘. # ls -a - + . .bashrc Documents .gconfd install.log .nautilus .pulse-cookie .. .cache Downloads .gnome2 install.log.syslog .netstat.swp .recently-used.xbel 0001.pcap .config .elinks .gnome2_private .kde .opera .spice-vdagent @@ -56,7 +57,7 @@ List all files including hidden file starting with ‘.‘. With combination of -lh option, shows sizes in human readable format. # ls -lh - + total 176K -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -rw-------. 1 root root 1.6K Jul 31 02:17 anaconda-ks.cfg @@ -78,7 +79,7 @@ With combination of -lh option, shows sizes in human readable format. Using -F option with ls command, will add the ‘/’ Character at the end each directory. # ls -F - + 0001.pcap Desktop/ Downloads/ index.html install.log.syslog Pictures/ Templates/ anaconda-ks.cfg Documents/ fbcmd_update.php install.log Music/ Public/ Videos/ @@ -87,7 +88,7 @@ Using -F option with ls command, will add the ‘/’ Character at the end each The following command with ls -r option display files and directories in reverse order. # ls -r - + Videos Public Music install.log fbcmd_update.php Documents anaconda-ks.cfg Templates Pictures install.log.syslog index.html Downloads Desktop 0001.pcap @@ -96,21 +97,21 @@ The following command with ls -r option display files and directories in reverse ls -R option will list very long listing directory trees. See an example of output of the command. # ls -R - + total 1384 -rw-------. 1 root root 33408 Aug 8 17:25 anaconda.log -rw-------. 1 root root 30508 Aug 8 17:25 anaconda.program.log - + ./httpd: total 132 -rw-r--r-- 1 root root 0 Aug 19 03:14 access_log -rw-r--r--. 1 root root 61916 Aug 10 17:55 access_log-20120812 - + ./lighttpd: total 68 -rw-r--r-- 1 lighttpd lighttpd 7858 Aug 21 15:26 access.log -rw-r--r--. 1 lighttpd lighttpd 37531 Aug 17 18:21 access.log-20120819 - + ./nginx: total 12 -rw-r--r--. 1 root root 0 Aug 12 03:17 access.log @@ -121,7 +122,7 @@ ls -R option will list very long listing directory trees. See an example of outp With combination of -ltr will shows latest modification file or directory date as last. # ls -ltr - + total 176 -rw-r--r--. 1 root root 11439 Jul 31 02:13 install.log.syslog -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log @@ -143,7 +144,7 @@ With combination of -ltr will shows latest modification file or directory date a With combination of -lS displays file size in order, will display big in size first. # ls -lS - + total 176 -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log -rw-r--r--. 1 root root 46701 Jul 31 09:58 index.html @@ -165,7 +166,7 @@ With combination of -lS displays file size in order, will display big in size fi We can see some number printed before file / directory name. With -i options list file / directory with inode number. # ls -i - + 20112 0001.pcap 23610 Documents 23793 index.html 23611 Music 23597 Templates 23564 anaconda-ks.cfg 23595 Downloads 22 install.log 23612 Pictures 23613 Videos 23594 Desktop 23585 fbcmd_update.php 35 install.log.syslog 23601 Public @@ -175,7 +176,7 @@ We can see some number printed before file / directory name. With -i options lis Check version of ls command. # ls --version - + ls (GNU coreutils) 8.4 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . @@ -188,7 +189,7 @@ Check version of ls command. List help page of ls command with their option. # ls --help - + Usage: ls [OPTION]... [FILE]... ### 13. List Directory Information ### @@ -210,7 +211,7 @@ With ls -l command list files under directory /tmp. Wherein with -ld parameters ---------- # ls -ld /tmp/ - + drwxrwxrwt. 13 root root 4096 Aug 21 12:48 /tmp/ ### 14. Display UID and GID of Files ### @@ -218,7 +219,7 @@ With ls -l command list files under directory /tmp. Wherein with -ld parameters To display UID and GID of files and directories. use option -n with ls command. # ls -n - + total 36 drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Downloads drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Music @@ -235,7 +236,7 @@ We have made alias for ls command, when we execute ls command it’ll take -l op Note: We can see number of alias available in your system with below alias command and same can be unalias as shown below example. # alias - + alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' @@ -255,7 +256,7 @@ In our next article we’ll cover up more or advanced ls command with their exam via: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ 作者:[Ravi Saive][a] -译者:[译者ID](https://github.com/译者ID) +译者:[theo-l](https://github.com/theo-l) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From edbe43a3867148ee88487cc25941d8a7bd8eba5c Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 14 Mar 2015 06:30:35 -0300 Subject: [PATCH 550/725] update --- .../tech/20150309 15 Basic 'ls' Command Examples in Linux.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md index f02c7daa58..c2ec2532f0 100644 --- a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md +++ b/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md @@ -1,4 +1,3 @@ -theo-l translating Translating by ZTinoZ 15 Basic ‘ls’ Command Examples in Linux ================================================================================ @@ -256,7 +255,7 @@ In our next article we’ll cover up more or advanced ls command with their exam via: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ 作者:[Ravi Saive][a] -译者:[theo-l](https://github.com/theo-l) +译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 27635f039184ec68317ecd9c7d8e14343bbfc32e Mon Sep 17 00:00:00 2001 From: just4fun Date: Sat, 14 Mar 2015 19:53:27 +0800 Subject: [PATCH 551/725] Update 20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md --- ...6 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md index 8aef952736..684d7e31dd 100644 --- a/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md +++ b/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md @@ -1,3 +1,4 @@ +linuhap translating Pinta 1.6 Released! Install It In Ubuntu And Linux Mint ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Pinta_Ubuntu_Linux.jpeg) @@ -46,4 +47,4 @@ via: http://itsfoss.com/pinta-1-6-ubuntu-linux-mint/ [2]:http://itsfoss.com/add-application-list-open-applications-ubuntu-1310/ [3]:http://pinta-project.com/releases/1-6 [4]:http://pinta-project.com/releases -[5]:http://itsfoss.com/image-applications-ubuntu-linux/ \ No newline at end of file +[5]:http://itsfoss.com/image-applications-ubuntu-linux/ From deba48aec73245cd9aeec19c4a55de5096a8157b Mon Sep 17 00:00:00 2001 From: Louis Wei Date: Sat, 14 Mar 2015 22:53:49 +0800 Subject: [PATCH 552/725] Delete 20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md --- ...t Tools To Connect To Your Linux Server.md | 82 ------------------- 1 file changed, 82 deletions(-) delete mode 100644 sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md diff --git a/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md b/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md deleted file mode 100644 index 5760b5aaa5..0000000000 --- a/sources/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server.md +++ /dev/null @@ -1,82 +0,0 @@ -wi-cuckoo translating LLAP -List Of Free Windows SSH Client Tools To Connect To Your Linux Server -================================================================================ -You have Windows as operating system and you need to connect to Linux server to transfer files from Linux to Windows and inversely. So you need to have Secure Shell known as SSH. In fact, SSH is a network protocol which enables you to connect to Linux and Unix servers over the network. It uses public key cryptography to authenticate the remote computer. You can use SSH by several ways, either by using it automatically or by using a password authentication to log in. - -This article provides a list of SSH clients let you to connect SSH to your Linux servers. - -let’s start. - -### PuTTY ### - -**PuTTY** is the most famous SSH and telnet client, developed originally by Simon Tatham for the Windows platform. PuTTY is open source software that is available with source code and is developed and supported by a group of volunteers. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/putty.png) - -Putty is very easy to install and to use.You don’t usually need to change most of the configuration options. To start the simplest kind of session, all you need to do is to enter a few basic parameters.You can download PuTTY [here][1] - -### Bitvise SSH Client ### - -**Bitvise SSH** Client is an SSH and SFTP client for Windows. It is developed and supported professionally by Bitvise. The SSH Client is robust, easy to install, easy to use. Bitvise SSH Client is a feature-rich graphical SSH/SFTP client for windows and allow you dynamic port forwarding through an integrated proxy with auto-reconnecting capability. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/bitvise.png) - -Bitvise SSH Client is **free for personal use**, as well as for individual commercial use inside organizations. You can [download Bitvise SSH Client here][2]. - -### MobaXterm ### - -**MobaXterm** is your **ultimate toolbox for remote computing**. In a single Windows application, it provides loads of functions that are tailored for programmers, webmasters, IT administrators and pretty much all users who need to handle their remote jobs in a more simple fashion. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/mobaxterm.png) - -MobaXterm provides all the important **remote network tools** (SSH, X11, RDP, VNC, FTP, MOSH, …) and **Unix commands** (bash, ls, cat, sed, grep, awk, rsync, …) to Windows desktop, in a **single portable exe file** which works out of the box. MobaXterm is **free for personal use**. You can download MobaXterm [from here][3]. - -### DameWare SSH ### - -I think that **DameWare SSH** is the best free ssh client. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/ssh.png) - -This free tool is a terminal emulator that lets you make multiple telnet and SSH connections from one easy-to-use console. - -- Manage multiple sessions from one console with a tabbed interface -- Save favorite sessions within the Windows file system -- Access multiple sets of saved credentials for easy log-in to different devices -- Connect to computers and devices using telnet, SSH1, and SSH2 protocols - -You can download **DameWare SSH** from [this link][4]. - -### SmarTTY ### - -SmarTTY is a free multi-tabbed SSH client that supports copying files and directories with SCP on-the-fly. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/smart.png) - -Most SSH servers support up to 10 sub-sessions per connection. SmarTTY makes the best of it: no annoying multiple windows, no need to relogin, just open a new tab and go! - -### Cygwin ### - -Cygwin is a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. - -![](https://www.unixmen.com/wp-content/uploads/2015/03/cyq.png) - -**Cygwin** consists of a Unix system call emulation library, cygwin1.dll, together with a [vast set][5] of GNU and other free software applications organized into a large number of optional packages. Among these packages are high-quality compilers and other software development tools, an X11 server, a complete X11 development toolkit, GNU emacs, TeX and LaTeX, OpenSSH (client and server), and much more, including everything needed to compile and use PhysioToolkit software under MS-Windows. - -After reading our article, which is your favorite SSH client? You can leave a comment describing your favorite system and the reasons of your choice. And of course if there is another SSH client doesn’t appear in this article, you can help us to add it. - --------------------------------------------------------------------------------- - -via: https://www.unixmen.com/list-free-windows-ssh-client-tools-connect-linux-server/ - -作者:[anismaj][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://www.unixmen.com/author/anis/ -[1]:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html -[2]:http://www.bitvise.com/download-area -[3]:http://mobaxterm.mobatek.net/download.html -[4]:http://www.dameware.com/downloads/registration.aspx?productType=ssh&AppID=17471&CampaignID=70150000000PcNM -[5]:http://cygwin.com/packages/ From 3a800cd6f03a23712dddcce6d9edb06d731cf74b Mon Sep 17 00:00:00 2001 From: Louis Wei Date: Sat, 14 Mar 2015 22:55:38 +0800 Subject: [PATCH 553/725] Create 20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server .md --- ... Tools To Connect To Your Linux Server .md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 translated/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server .md diff --git a/translated/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server .md b/translated/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server .md new file mode 100644 index 0000000000..ccb4bc2fec --- /dev/null +++ b/translated/tech/20150309 List Of Free Windows SSH Client Tools To Connect To Your Linux Server .md @@ -0,0 +1,81 @@ +在windows下,连接你的Linux服务器的ssh免费客户端工具列举\ +================================================================================ +你的操作系统是Windows,而你想要连接Linux服务器相互传送文件.于是你需要一个Secure Shell,简称SSH.实际上,SSH是一个网络协议,允许你通过网络连接到Linux和Unix服务器.SSH使用公钥加密来认证远程的计算机.你可以有多种途径使用SSH,要么自动地连接,或者使用密码认证登录. + +本篇文章讲述了几种SSH客户端,供选择使用来连接你的Linux服务器. + +我们开始. + +### Putty ### + +**Putty**是最有名的SSH和telnet客户端,最初由Simon Tatham为Windows平台开发.Putty是一款开源软件,有可用的源代码,和一群志愿者的发展和支持. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/putty.png) + +Putty非常易于安装和使用,通常你不需要改大部分的配置选项.你只需要输入少量基本的参赛,就可以开始最简单的对话连接[here][1]. + +### Bitvise SSH Client ### + +**Bitvise SSH **是一款支持SSH和SFTP的Windows客户端.由Bitvise专业地提供支持和发展.这款SSH客户端性能强悍,易于安装和使用.Bitvise SSH客户端功能丰富,拥有图形界面,通过一个有自动重连能力的内置代理允许用户动态端口运行. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/bitvise.png) + +Bitvise SSH客户端对个人用户使用**是**免费的,同时对于在组织内部的单独商业使用也一样.你可以[在这里下载Bitvise SSH客户端][2] + +### MobaXterm ### + +**M偶吧Xterm**是你的**终极工具箱,解决远程计算**.在单一的Windows应用里,它提供了许多裁剪过的的功能,针对程序员,网络管理者,IT管理员和相当一部分需要在更简单界面(此处原文为in a more simple fashion,有点费解)远程作业的用户. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/mobaxterm.png) + +MobaXterm提供了所有重要的**远程网络工具** (如SSH, X11, RDP, VNC, FTP, MOSH 等等),和**Unix 命令**(bash, ls, cat, sed, grep, awk, rsync等等)适用于Windows桌面,在一个**单独便于携带的可执行文件里**,其工作独立于工具箱.MobaXterm对**个人使用免费**.你可以下载MobaXterm[在这里][3]. + +### DameWare SSH ### + +我认为**DameWare SSH**是最好的免费SSH客户端. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/ssh.png) + +这个免费工具是一个终端模拟器,可以让你实现从一个易用控制台的多种telnet和SSH连接. + +-用一个带标签的控制台界面管理多方会话 +-在Windows文件系统中保存喜欢的会话 +-获取多个保存的证书集合,用于轻松登录不同的设备 +-使用telnet,SSH1和SSH2协议连接计算机和设备 + +你可以从[这个链接][4]下载 **DameWare SSH** + +### SmarTTY ### +  +SmarTTY是一款免费的多标签SSH客户端,支持使用SCP命令及时复制文件和目录 + +![](https://www.unixmen.com/wp-content/uploads/2015/03/smart.png) + +大多数SSH服务器每次连接支持最多10个子会话.SmarTTY在这方面做得很好:没有烦人的多个窗口,不需要重新登录,仅仅打开一个新的标签页就可以开始了! + +### Cygwin ### + +Cygwin是一款GNU和开源工具的大杂烩,提供的功能近似一个Windows平台下的Linux. + +![](https://www.unixmen.com/wp-content/uploads/2015/03/cyq.png) + +**Cygwin**包括了一个Unix系统,集模拟库,cygwin.dll,GNU大量集合和其他被归类了的大量可选免费应用软件包.在这些安装包中,有高质量的编译器和其他软件开发工具,一个X11服务器,一套完整的X11开发套件,GNU emacs编辑器,Tex和LaTeX,openSSH(客户端和服务器),除此之外还有很多,包括在微软Windows下需要编译和使用PhysioToolkit软件的每一样东西. + +读完我们的文章后,不知你中意哪一款SSH客户端?你可以留下你的评论,描述你喜欢的系统和选择的原因.当然,如果有另外的SSH客户端没有被本文列举出来,你可以帮助我们补充. + +-------------------------------------------------------------------------------- + +via: https://www.unixmen.com/list-free-windows-ssh-client-tools-connect-linux-server/ + +作者:[anismaj][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://www.unixmen.com/author/anis/ +[1]:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html +[2]:http://www.bitvise.com/download-area +[3]:http://mobaxterm.mobatek.net/download.html +[4]:http://www.dameware.com/downloads/registration.aspx?productType=ssh&AppID=17471&CampaignID=70150000000PcNM +[5]:http://cygwin.com/packages/ From 3d2b832d93c1109e85f1b6c648feaa213ec39c0e Mon Sep 17 00:00:00 2001 From: theo-l Date: Sat, 14 Mar 2015 15:57:30 -0300 Subject: [PATCH 554/725] translated --- ...ls' Command Interview Questions--Part 2.md | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md b/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md index 3e185fe7e1..cade1ae602 100644 --- a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md +++ b/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md @@ -1,19 +1,22 @@ -theo-l translating - 10 Useful ‘ls’ Command Interview Questions – Part 2 +10个有用的‘ls’命令面试问题-第二部分 ================================================================================ Continuing the legacy of ls command here is the second interview article on Listing command. The first article of the series was highly appreciated by the Tecmint Community. If you’ve missed the first part of this series you may like to visit at: +这是关于文件列表命令的第二篇文章,继续探讨‘ls’命令的其他方面。该系列的第一篇文章收到了Tecmint社区的高度关注,如果你错过了该系列的第一部分,你可能会访问以下地址: - [15 Interview Questions on “ls” Command – Part 1][1] This article is well presented in the manner that it gives deep insight of ls command with examples. We have taken extra care in the making of article so that it remains simple to understand yet serve the purpose to the fullest. +这篇文章通过样例来很好地展现‘ls’命令的深入应用,我们加倍小心地来写这篇文章来保持其简洁可理解性,同时又能提供最全面的服务。 ![10 Interview Questions on ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/ls-Command-Interview-Questions.jpg) 10 Interview Questions on ls Command ### 1. You are supposed to list the content of a directory in long list format, but not print the name of the author and group the file belongs. Also show the difference in output. ### +### 1. 假如你想要以长列表的形式列出目录中的内容,但是不打印文件创建者名称以及文件所属组。同时在输出中显示其不同之处。### a. ls command listing the name of the files in long listing format when used with switch (-l). +a. ls 命令在与‘-l’选项一起使用时会将文件以长列表格式输出。 # ls -l @@ -21,6 +24,7 @@ a. ls command listing the name of the files in long listing format when used wit List Files in- Long List Format b. ls command listing the name of the files in long listing format along with the name of the author file belongs, when used with switch (–author) along with switch (-l). +b. ls 命令在与‘-l’和‘--author’一起使用时,会将文件以长列表格式输出并带有文件创建者的名称信息。 # ls -l --author @@ -28,6 +32,7 @@ b. ls command listing the name of the files in long listing format along with th List Files By Author c. ls command listing the name of the files without the name of its owner, when used with switch (-g). +c. ls 命令在与‘-g’选项 一起将会列出文件名但是不带属主名称。 # ls -g @@ -35,16 +40,16 @@ c. ls command listing the name of the files without the name of its owner, when List Files Without Printing Owner Name d. ls command listing the name of files in long listing format without the name of group it belongs, when used with switch (-G) along with switch (-l). - +d. ls 命令在与'-G'和‘-l’选项一起将会使用长列表格式列出文件名称带式不带文件所属组名称。 # ls -Gl ![List Files Without Printing Group](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Printing-Group.gif) List Files Without Printing Group ### 2. Print the size of files and folders in the current directory, in human readable format. How will you do this? ### - +### 2. 使用用户友好的格式打印出当前目录中的文件以及文件夹的大小,你会如何做?### Well we need to use switch -h (human-readable) along with switch (-l) and/or (-s) with the command ls to get the desired output. - +这里我们需要使用'-h'选项(人类可阅读的)同‘-l’或‘-s’选项与ls命令一起使用来得到想要的输出。 # ls -hl ![List Files in Human Readable Format](http://www.tecmint.com/wp-content/uploads/2015/03/List-Size-of-Files-with-ls.gif) @@ -56,10 +61,13 @@ List Files in Human Readable Format List File Sizes in Long List Format **Note**: The option -h uses the power of 1024 (standard in computation) and output the size of files and folders in the units of K, M and G. +**注意**: ‘-h’选项使用1024(计算机中的标准)的幂,文件或文件夹的大小分别以K,M和G作为输出单位。 ### 3. Well if switch (-h) output size in power of 1024, that is standard, What else power values are supported in ls command? ### +### 3. 既然‘-h’选项是使用1024的幂作为标准来输出大小,那么ls命令还支持其他的幂值呢?### There exist a switch -si which is similar to switch -h. The only difference is switch -si uses power of 1000 unlike switch -h which uses the power of 1024. +存在一个选项 ‘-si’与选项‘-h’相似,不同之处在于前者以使用1000的幂,后者使用1024的幂。 # ls -si @@ -67,6 +75,7 @@ There exist a switch -si which is similar to switch -h. The only difference is s Supported Power Values of ls Command It can also be used with switch -l to output the size of folder in the power of 1000, in long listing format. +所以'-si'也可以与‘-l’选项一起使用来按照1000的幂来输出文件夹的大小,并且以长列表格式显示。 # ls -si -l @@ -74,8 +83,10 @@ It can also be used with switch -l to output the size of folder in the power of List Files by Power Values ### 4. You are supposed to print the contents of a directory separated with comma. Is it possible? Can it be done in long listing format? ### +### 4. 假如要你使用逗号‘,’作为分隔符来打印一个目录中的内容,可以吗? 对于长列表形式也可行吗?### Yup! Linux ls command can output the contents of a directory separated by comma when used with the switch (-m). Since this comma separated entries are filled horizontally, ls command can’t separate contents with comma when listing contents vertically. +当然!linux的ls命令当与其选项‘-m’一起使用时可以在打印目录内容时以逗号‘,’分割。由于逗号分割的内容是水平填充的,ls命令不能在垂直列出内容时使用逗号来分割内容。 # ls -m @@ -83,6 +94,7 @@ Yup! Linux ls command can output the contents of a directory separated by comma Print Contents of Directory by Comma When used in long listing format, switch -m gets useless. +当使用长列表格式时,‘-m’选项就没有什么效果了。 # ls -ml @@ -90,8 +102,10 @@ When used in long listing format, switch -m gets useless. Listing Content Horizontally ### 5. If there any way to print the contents of a directory upside down? i.e., in reverse order. ### +### 5. 有办法将目录的内容逆序打印出来吗?### Yeah! The above situation can easily be achieved using the switch -r. The switch ‘-r‘ reverse the order of output. It can also be used with switch -l (long listing format). +可以!上面的情形可以轻松地通过'-r'选项搞定,该选项将输出顺序倒置。这个选项也可以与‘-l’选项一起使用。 # ls -r @@ -104,17 +118,20 @@ List Content in Reverse Order Long List Content in Reverse Order ### 6. You are given a situation to print the sub-directories recursively. How will you achieve this situation? Mind it only sub directories and no files. ### +### 6. 如果你被分配一个任务,来递归地打印各个子目录,你会如何应付?注意哟,只针对子目录而不是文件哦。### Okay! That is pretty easy with the switch -R when used with command ls. It can further be grouped with other options like -l (long list) and -m (comma separated), etc. - +小意思!使用“-R”选项就可以轻轻松松拿下,它也可以更进一步地与其他选项如‘-l’和‘-m’选项等组合使用。 # ls -R ![Print Sub Directories in Recursively](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Sub-Directories-in-Recursively.gif) Print Sub Directories in Recursively ### 7. How to sort the files based upon the size? ### +### 7. 如何按照文件大小对其进行排序?### The Linux command line option -S when used with ls gives the desired output. To sort the files based upon size in descending order with the largest file listed at first and smallest at last. +linux命令行选项'-S'赋予了ls命令这个超能力。按照文件大小从大到小的顺序排序: # ls -S @@ -122,6 +139,7 @@ The Linux command line option -S when used with ls gives the desired output. To Sort Files with ls Command To sort the files based upon size in descending order with the smallest file listed at first and largest at last. +按照文件大小从小到大的顺序排序。 # ls -Sr @@ -129,8 +147,9 @@ To sort the files based upon size in descending order with the smallest file lis Sort Files in Descending Order ### 8. List the contents of a directory with no additional information appearing one file per line. ### - +### 8. 列出目录中的内容按照一行一个文件并且不带额外信息的方式 ### The switch -1 comes to rescue here. ls command with switch -1 output the contents of the directory with one file per line and no additional information. +选项‘-l’在此可以解决这个问题,使用‘-l’选项来使用ls命令可以将目录中的内容按照一行一个文件并且不带额外信息的方式进行输出。 # ls -1 @@ -138,8 +157,9 @@ The switch -1 comes to rescue here. ls command with switch -1 output the content List Files Without Information ### 9. You are given a situation in which you have to print the contents of a directory on standard output enclosed by double quotes. How will you do this? ### - +### 9. 现在委派给你一个任务,你必须将目录中的内容输出到终端而且需要使用双引号引起来,你会如何做?### There exist an option -Q (quote-name) which output the content of ls enclosed in double quotes. +存在一个选项‘-Q’会将ls命令的输出内容用双引号引起来。 # ls -Q @@ -147,6 +167,7 @@ There exist an option -Q (quote-name) which output the content of ls enclosed in Print Files with Double Quotes ### 10. You are working in a directory which contains lots of files and folders. You need to print the name of folders before directories. How will you get this? ### +### 10. 想象一下你正在与一个包含有很多文件和文件夹的目录打交道,你需要使目录名显示在文件名之前,你如何做?### # ls --group-directories-first @@ -154,6 +175,7 @@ Print Files with Double Quotes Print Directories First That’s all for now. We will be coming up with the next part of this article series very soon. Till then stay tuned and connected to Tecmint. Do not forget to provide us with valuable feedback in the comment section below. Like and share us and help us get spread! +先点到为止,我们会马上提供该系列文章的下一部分。别换频道,关注Tecmint。 另外别忘了在下面的评论中提出你们宝贵的反馈信息,喜欢就分享,帮助我们得到更好的传播吧! -------------------------------------------------------------------------------- From b65c622f3b9043c88fffd7e941f183293cc9785a Mon Sep 17 00:00:00 2001 From: LouisWei Date: Sun, 15 Mar 2015 10:42:00 +0800 Subject: [PATCH 555/725] translating wi-cuckoo --- ... Look At What Linux Games We Will See In 2015 And Beyond.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md index 9f11f47573..bf99fd2154 100644 --- a/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md +++ b/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md @@ -1,3 +1,4 @@ +translating wi-cuckoo LLAP A Look At What Linux Games We Will See In 2015 And Beyond ================================================================================ Linux Gaming is dead they said, Linux Gaming is pointless they said...ah whatever. Here’s a look at what’s to come for us in 2015 and beyond. @@ -133,4 +134,4 @@ via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-se [38]:https://www.gamingonlinux.com/articles/outlast-that-really-scary-game-looks-like-its-still-heading-to-linux.4896 [39]:https://www.gamingonlinux.com/articles/shadow-warrior-looks-like-it-will-come-to-linux.4859 [40]:https://www.gamingonlinux.com/articles/torchlight-ii-has-even-more-positive-signs-for-linux.4817 -[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ \ No newline at end of file +[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ From f4bb5998c2b75870a54a619211d5a315087f6e0a Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 15 Mar 2015 11:53:00 +0800 Subject: [PATCH 556/725] [translated] 20150127 Windows 10 versus Linux.md --- .../talk/20150127 Windows 10 versus Linux.md | 32 ------------------- .../talk/20150127 Windows 10 versus Linux.md | 31 ++++++++++++++++++ 2 files changed, 31 insertions(+), 32 deletions(-) delete mode 100644 sources/talk/20150127 Windows 10 versus Linux.md create mode 100644 translated/talk/20150127 Windows 10 versus Linux.md diff --git a/sources/talk/20150127 Windows 10 versus Linux.md b/sources/talk/20150127 Windows 10 versus Linux.md deleted file mode 100644 index d79b45d93c..0000000000 --- a/sources/talk/20150127 Windows 10 versus Linux.md +++ /dev/null @@ -1,32 +0,0 @@ -zpl1025 -Windows 10 versus Linux -================================================================================ -![](https://farm4.staticflickr.com/3852/14863156322_e4edbae70e_t.jpg) - -Windows 10 seemed to dominate the headlines today, even in many Linux circles. Leading the pack is Brian Fagioli at betanews.com saying Windows 10 is ringing the death knell for Linux desktops. Microsoft announced today that Windows 10 will be free for loyal Windows users and Steven J. Vaughan-Nichols said it's the newest Open Source company. Then Matt Hartley compares Windows 10 to Ubuntu and Jesse Smith reviews Windows 10 from a Linux user's perspective. - -**Windows 10** was the talk around water coolers today with Microsoft's [announcement][1] that it would be free for Windows 7 and up users. Here in Linuxland, that didn't go unnoticed. Brian Fagioli at betanews.com, a self-proclaimed Linux fan, said today, "Windows 10 closes the door entirely. The year of the Linux desktop will never happen. Rest in peace." [Fagioli explained][2] that Microsoft listened to user complaints and not only addressed them but improved way beyond that. He said Linux missed the boat by failing to capitalize on the Windows 8 unpopularity and ultimate failure. Then he concluded that we on the fringe must accept our "shattered dreams" thanks to Windows 10. - -**H**owever, Jesse Smith, of Distrowatch.com fame, said Microsoft isn't making it easy to find the download, but it is possible and he did it. The installer was simple enough except for the partitioner, which was quite limited and almost scary. After finally getting into Windows 10, Smith said the layout was "sparce" without a lot of the distractions folks hated about 7. The menu is back and the start screen is gone. A new package manager looks a lot like Ubuntu's and Android's according to Smith, but requires an online Microsoft account to use. [Smith concludes][3] in part, "Windows 10 feels like a beta for an early version of Android, a consumer operating system that is designed to be on-line all the time. It does not feel like an operating system I would use to get work done." - -**S**mith's [full article][4] compares Windows 10 to Linux quite a bit, but Matt Hartley today posted an actual Windows 10 vs Linux report. [He said][5] both installers were straightforward and easy Windows still doesn't dual boot easily and Windows provides encryption by default but Ubuntu offers it as an option. At the desktop Hartley said Windows 10 "is struggling to let go of its Windows 8 roots." He thought the Windows Store looks more polished than Ubuntu's but didn't really like the "tile everything" approach to newly installed apps. In conclusion, Hartley said, "The first issue is that it's going to be a free upgrade for a lot of Windows users. This means the barrier to entry and upgrade is largely removed. Second, it seems this time Microsoft has really buckled down on listening to what their users want." - -**S**teven J. Vaughan-Nichols today said that Microsoft is the newest Open Source company; not because it's going to be releasing Windows 10 as a free upgrade but because Microsoft is changing itself from a software company to a software as a service company. And, according to Vaughan-Nichols, Microsoft needs Open Source to do it. They've been working on it for years beginning with Novell/SUSE. Not only that, they've been releasing software as Open Source as well (whatever the motives). [Vaughan-Nichols concluded][6], "Most people won't see it, but Microsoft -- yes Microsoft -- has become an open-source company." - --------------------------------------------------------------------------------- - -via: http://ostatic.com/blog/windows-10-versus-linux - -作者:[Susan Linton][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://ostatic.com/member/susan-linton -[1]:https://news.google.com/news/section?q=microsoft+windows+10+free&ie=UTF-8&oe=UTF-8 -[2]:http://betanews.com/2015/01/25/windows-10-is-the-final-nail-in-the-coffin-for-the-linux-desktop/ -[3]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ -[4]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ -[5]:http://www.datamation.com/open-source/windows-vs-linux-the-2015-version-1.html -[6]:http://www.zdnet.com/article/microsoft-the-open-source-company/ diff --git a/translated/talk/20150127 Windows 10 versus Linux.md b/translated/talk/20150127 Windows 10 versus Linux.md new file mode 100644 index 0000000000..c54e8ff1ee --- /dev/null +++ b/translated/talk/20150127 Windows 10 versus Linux.md @@ -0,0 +1,31 @@ +Windows 10 VS Linux +================================================================================ +![](https://farm4.staticflickr.com/3852/14863156322_e4edbae70e_t.jpg) + +如今Windows 10好像占据了绝大部分头条,甚至在一些Linux圈里也是一样。最突出的是betanews.com的Brian Fagioli说Windows 10已经为Linux桌面系统敲响了丧钟,Microsoft如今宣布将为忠实的Windows用户免费提供windows 10,Steven J. Vaughan-Nichols说这是一个最新的开源公司,然后Matt Hartley比较了Windows 10和Ubuntu,Jesse Smith发表了从Linux用户角度对Windows 10的评估。 + +**Windows 10**,在Microsoft[声明][1]说将免费提供给Windows 7及以上用户时,成为如今闲聊的热门话题。在Linuxland这里,也没有被忽视。betanews.com的Brian Fagioli,一个自封的Linux粉丝,如今这样说,“Windows 10把门彻底关上了。Linux桌面元年将永远不会到来。安息吧。”[Fagioli解释][2]说Microsoft倾听了用户的抱怨而且并不只是记录一下,而是解决的更好。他说Linux错失了由Windows 8不受欢迎以及巨大失败带来的积累机会。然后他总结,拜Windows 10所赐,处于边缘地带的我们只能接受一个“破碎的梦”。 + +**不**过,来自闻名的Distrowatch.com的Jesse Smith,说Microsoft并没有提供一个很明显的下载方式,不过确实可行而且他也升级了。安装程序非常简单,除了分区功能很有限甚至有点吓人。在最终启动进入Windows 10后,Smith说界面布局很“松散”,没有Win7里被很多人讨厌的大量分散注意的元素,开始菜单又回来了,取消了欢迎屏幕。据Smith所说,还有一个和Ubuntu以及Android很类似的新的包管理程序,不过需要Microsoft在线账户才可以使用。[Smith的总结][3]里有这样一条,“感觉Windows 10像是Android的早期beta版本,一个设计成时刻保持在线的消费者操作系统。而不像是一个我能用来完成工作的操作系统。” + +**S**mith的[完整文章][4]里比较了Windows 10和Linux的大量细节,不过Matt Hartley发表了一个实在的Windows 10 vs Linux的报告。[他说][5]两者的安装程序都很直观和简单,Windows的双启动仍然没那么容易,Windows默认提供了加密而Ubuntu只提供了配置选项。在桌面上Hartley说Windows 10“纠结地丢弃了它Windows 8的根。”他觉得Windows 10的Windows商店比Ubuntu的漂亮很多,但是实在不喜欢通过“一切都是卡片”的方式来查看新安装的应用。Hartley这样总结,“首先是它将为大量Windows用户提供免费升级。这意味着大大降低了进入和升级门槛。第二,这次看起来Microsoft真的在全力以赴地倾听他们用户的需求了。” + +**S**teven J. Vaughan-Nichols如今声称Microsoft是最新的开源公司;不仅因为它将放出Windows 10的免费升级,而且Microsoft正在从一个软件公司转型为一个软件服务公司。然后,据Vaughan-Nichols所说,Microsoft需要开源来完成这次转型。从Novell/SUSE开始,他们已经在这一块工作好多年了。不仅如此,他们也发布过开源软件(不管什么目的)。[Vaughan-Nichols总结][6],“很多人都没注意到,但是Microsoft -- 就是那个Microsoft -- 已经成为一家开源公司。” + +-------------------------------------------------------------------------------- + +via: http://ostatic.com/blog/windows-10-versus-linux + +作者:[Susan Linton][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ostatic.com/member/susan-linton +[1]:https://news.google.com/news/section?q=microsoft+windows+10+free&ie=UTF-8&oe=UTF-8 +[2]:http://betanews.com/2015/01/25/windows-10-is-the-final-nail-in-the-coffin-for-the-linux-desktop/ +[3]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ +[4]:http://blowingupbits.com/2015/01/an-outsiders-perspective-on-windows-10-preview/ +[5]:http://www.datamation.com/open-source/windows-vs-linux-the-2015-version-1.html +[6]:http://www.zdnet.com/article/microsoft-the-open-source-company/ From 47c1bc24bd883751722f4fa353886a880a5462e7 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 15 Mar 2015 11:59:59 +0800 Subject: [PATCH 557/725] [translating] 20141219 Google Cloud offers streamlined Ubuntu for Docker use.md --- ...1219 Google Cloud offers streamlined Ubuntu for Docker use.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md b/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md index c63c4a78f2..7a24d0f90a 100644 --- a/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md +++ b/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md @@ -1,3 +1,4 @@ +zpl1025 Google Cloud offers streamlined Ubuntu for Docker use ================================================================================ > Ubuntu Core provides a minimal Lightweight Linux environment for running containers From a1cb729d7596d007491f902a82fe72790d359ab4 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 15 Mar 2015 12:45:33 +0800 Subject: [PATCH 558/725] translating --- ...w App Brings Android Notifications to The GNOME Desktop.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md b/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md index 0a67dab449..3a43eecb35 100644 --- a/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md +++ b/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md @@ -1,3 +1,5 @@ +Translating----geekpi + New App Brings Android Notifications to The GNOME Desktop ================================================================================ ![Fancy seeing your Android alerts here? You can.](http://www.omgubuntu.co.uk/wp-content/uploads/2015/02/Screen-Shot-2015-02-24-at-17.47.48.png) @@ -35,4 +37,4 @@ via: http://www.omgubuntu.co.uk/2015/03/new-app-brings-android-notifications-to- [1]:http://www.omgubuntu.co.uk/2015/02/4-reason-why-gnome-3-16-might-be-the-best-version-yet-gallery [2]:https://play.google.com/store/apps/details?id=org.holylobster.nuntius [3]:http://www.omgubuntu.co.uk/2014/06/kde-connect-android-notifications-linux-desktop -[4]:https://github.com/holylobster \ No newline at end of file +[4]:https://github.com/holylobster From 59a502ef4bff9d775f568a7f14f8767c45a1102c Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 15 Mar 2015 13:13:55 +0800 Subject: [PATCH 559/725] translated --- ...roid Notifications to The GNOME Desktop.md | 40 ------------------- ...roid Notifications to The GNOME Desktop.md | 39 ++++++++++++++++++ 2 files changed, 39 insertions(+), 40 deletions(-) delete mode 100644 sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md create mode 100644 translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md diff --git a/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md b/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md deleted file mode 100644 index 3a43eecb35..0000000000 --- a/sources/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md +++ /dev/null @@ -1,40 +0,0 @@ -Translating----geekpi - -New App Brings Android Notifications to The GNOME Desktop -================================================================================ -![Fancy seeing your Android alerts here? You can.](http://www.omgubuntu.co.uk/wp-content/uploads/2015/02/Screen-Shot-2015-02-24-at-17.47.48.png) -Fancy seeing your Android alerts here? You can. - -**You’ll shortly be able to view your Android notifications on the GNOME desktop thanks to a new application in development.** - -The new project is called ‘Nuntius’ and lets notifications received on an Android phone appear on the GNOME desktop. It’s with GNOME 3.16 and its (wonderfully) [redesigned notification system][1] that the app and its features will be used by more. - -The app, which developers are hoping will be ready in time for this month’s release of GNOME 3.16, will work over Bluetooth to ensure that nothing is passed to external servers or stored online. This does mean that your phone will need to be in a certain proximity to your GNOME desktop for the feature to work. - -It also isn’t yet possible to reply to a text message or act on a news alert. - -The development team do caution that **this is an early release** and those planning on diving in to use it should expect minimum functionality for now. - -The mobile app required to see Android notifications in GNOME’s new notification shade is already available [from the Google Play Store][2] and the GNOME application is already available in the Fedora repos. - -The developers have open-sourced both the Android app and the GNOME application receiver and hosted them (where else) on GitHub. - -A similar tool [has been available for KDE desktops][3] – ‘KDE Connect’ – for a year or two, while the ever-gaining Pushbullet offers similar features on Windows, Mac and Linux desktops for iOS and Android platforms using Google Chrome. - -- [Nuntius for Android & GNOME on GitHub][4] - --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2015/03/new-app-brings-android-notifications-to-the-gnome-desktop - -作者:[Joey-Elijah Sneddon][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:http://www.omgubuntu.co.uk/2015/02/4-reason-why-gnome-3-16-might-be-the-best-version-yet-gallery -[2]:https://play.google.com/store/apps/details?id=org.holylobster.nuntius -[3]:http://www.omgubuntu.co.uk/2014/06/kde-connect-android-notifications-linux-desktop -[4]:https://github.com/holylobster diff --git a/translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md b/translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md new file mode 100644 index 0000000000..b180d43571 --- /dev/null +++ b/translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md @@ -0,0 +1,39 @@ +一款在Gnome桌面中显示Andorid通知的程序 +================================================================================ +![Fancy seeing your Android alerts here? You can.](http://www.omgubuntu.co.uk/wp-content/uploads/2015/02/Screen-Shot-2015-02-24-at-17.47.48.png) +在这里看到Android通知很棒么?你可以 + +**你很快就可以在GNOME桌面中看到Andorid通知了,这都要归功于一个在开发中的新程序。** + + +这个新的项目叫“Numtius”,这可以让在Andorid手机上收到的通知显示在GNOME桌面上。它会集成在GNOME 3.16中,并且它[重新设计了通知系统][1],这个app和特性会用在其他更多的地方。 + +这个app的开发者希望在这个月GNOME 3.16发布之前可以完成,它将通过蓝牙工作来保证不会传给外部的系统或者使用在线存储。这意味着你的电话必须接近GNOME桌面来保证这个功能可用。 + +他现在还不能回复短消息或者对提醒采取操作。 + +开发团队警告说**这是一个早期发布版本**,那些打算重度使用的人们现在应该做好最少功能的准备。 + +在GNOME桌面上看Android通知的移动端app现在已经在[Google Play商店][2]了,GNOME程序已经在Fedora的仓库中了。 + +开发者已经在Gituhb上开源了Android和GNOME接收端的程序, + +一个相似的工具[已经在KDE桌面上有了][3] - ‘KDE Connect’ - 已经有一两年了,通过Pushbullet来为使用Chrome的iOS和Android平台在Windows、MAC和Linux桌面上提供相似的功能。 + +- [Nuntius for Android & GNOME on GitHub][4] + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/03/new-app-brings-android-notifications-to-the-gnome-desktop + +作者:[Joey-Elijah Sneddon][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:http://www.omgubuntu.co.uk/2015/02/4-reason-why-gnome-3-16-might-be-the-best-version-yet-gallery +[2]:https://play.google.com/store/apps/details?id=org.holylobster.nuntius +[3]:http://www.omgubuntu.co.uk/2014/06/kde-connect-android-notifications-linux-desktop +[4]:https://github.com/holylobster From a43a22ef01f07b617d2dab22c201078480401b06 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 15 Mar 2015 14:15:15 +0800 Subject: [PATCH 560/725] [translated] 20141219 Google Cloud offers streamlined Ubuntu for Docker use.md --- ...ffers streamlined Ubuntu for Docker use.md | 44 ------------------- ...ffers streamlined Ubuntu for Docker use.md | 43 ++++++++++++++++++ 2 files changed, 43 insertions(+), 44 deletions(-) delete mode 100644 sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md create mode 100644 translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md diff --git a/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md b/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md deleted file mode 100644 index 7a24d0f90a..0000000000 --- a/sources/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md +++ /dev/null @@ -1,44 +0,0 @@ -zpl1025 -Google Cloud offers streamlined Ubuntu for Docker use -================================================================================ -> Ubuntu Core provides a minimal Lightweight Linux environment for running containers - -Google has adopted for use in its cloud a streamlined version of the Canonical Ubuntu Linux distribution tweaked to run Docker and other containers. - -Ubuntu Core was designed to provide only the essential components for running Linux workloads in the cloud. An [early preview edition][1] of it, which Canonical calls "Snappy," was released last week. The new edition jettisoned many of the libraries and programs usually found in general use Linux distributions that were unnecessary for cloud use. - -[ [Get started with Docker][2] using this step-by-step guide to the red-hot open source framework. | Get the latest insight on the tech news that matters from [InfoWorld's Tech Watch blog][3]. ] - -The Google Compute Engine (GCE) [joins Microsoft Azure][4] in supporting the fresh distribution. - -According to Canonical, Ubuntu Core should provide users with an easy way to deploy Docker, an [increasingly lightweight virtualization container][4] that allows users to quickly spin up workloads and easily move them around, even across different cloud providers. - -Google has been an ardent supporter of Docker and container-based virtualization itself. In June, the company [released as open source its software for managing containers][5], called Kubernetes. - -The design of Ubuntu Core is similar to another Linux distribution, CoreOS, [first released a year ago][7]. - -Developed in part by two ex-Rackspace engineers, [CoreOS][8] is a lightweight Linux distribution designed to work in clustered, highly scalable environments favored by companies that do much or all of their business on the Web. - -CoreOS was quickly adopted by many cloud providers, including Microsoft Azure, Amazon Web Services, DigitalOcean and Google Compute Engine. - -Like CoreOS, Ubuntu Core offers an expedited process for updating components, reducing the amount of time that an administrator would need to manually manage them. -如同Coreos一样,Ubuntu内核提供了一个快速引擎来更新组件 --------------------------------------------------------------------------------- - -via: http://www.infoworld.com/article/2860401/cloud-computing/google-cloud-offers-streamlined-ubuntu-for-docker-use.html - -作者:[Joab Jackson][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.infoworld.com/author/Joab-Jackson/ -[1]:http://www.ubuntu.com/cloud/tools/snappy -[2]:http://www.infoworld.com/article/2607941/linux/how-to--get-started-with-docker.html -[3]:http://www.infoworld.com/blog/infoworld-tech-watch/ -[4]:http://www.ubuntu.com/cloud/tools/snappy -[5]:http://www.itworld.com/article/2695383/open-source-tools/docker-all-geared-up-for-the-enterprise.html -[6]:http://www.itworld.com/article/2695501/cloud-computing/google-unleashes-docker-management-tools.html -[7]:http://www.itworld.com/article/2696116/open-source-tools/coreos-linux-does-away-with-the-upgrade-cycle.html -[8]:https://coreos.com/using-coreos/ diff --git a/translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md b/translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md new file mode 100644 index 0000000000..ab0bdc3210 --- /dev/null +++ b/translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md @@ -0,0 +1,43 @@ +Google云服务为Docker应用提供简化版Ubuntu +================================================================================ +> Ubuntu Core为运行容器提供了最小的轻量级Linux环境 + +Google为自己的云服务采用了一个简化版的Canonical Ubuntu Linux发行版,优化来运行Docker和其他容器。 + +Ubuntu Core被设计成仅提供在云上运行Linux所必需的组件。它的一个[早期预览版][1],Canonical命名为“Snappy”,在上个星期发布了。这个新版本裁减了大量在普通Linux发行版中常见而在云应用中不实用的库和应用程序。 + +[ 通过这篇red-hot开源框架逐步指导文章[开始使用Docker][2] | 从[InfoWorld的技术观察博客][3]获取重要技术新闻的最新解读。 ] + +Google计算引擎(GCE)[加入了Microsoft Azure][4]来支持这个新的发行版。 + +从Canonical了解到,Ubuntu Core将为用户提供一个部署Docker的简单方式,一个[日益精简的虚拟容器][4]允许用户快速启动工作负载并轻松地转移,甚至可以跨越不同的云服务提供商。 + +Google是Docker和基于容器的虚拟化的热心支持者。在六月份,这家公司[用开源的方式发布了一个容器管理软件][5]:Kubernetes。 + +Ubuntu Core在设计上类似于另一个Linux发行版,CoreOS,[发布于一年前][7]。 + +主要由两名前Rackspace工程师开发,[CoreOS][8]是一个轻量级Linux发行版,设计运行在集群中,被那些在网页上完成他们大部分或所有业务的公司所喜好的大规模环境。 + +CoreOS很快被许多云服务提供商采用,包括Microsoft Azure,Amazon网站服务,DigitalOcean以及Google计算引擎。 + +如同CoreOS一样,Ubuntu Core提供了一个快速引擎来更新组件,减少系统管理员去手动处理的时间。 + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2860401/cloud-computing/google-cloud-offers-streamlined-ubuntu-for-docker-use.html + +作者:[Joab Jackson][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Joab-Jackson/ +[1]:http://www.ubuntu.com/cloud/tools/snappy +[2]:http://www.infoworld.com/article/2607941/linux/how-to--get-started-with-docker.html +[3]:http://www.infoworld.com/blog/infoworld-tech-watch/ +[4]:http://www.ubuntu.com/cloud/tools/snappy +[5]:http://www.itworld.com/article/2695383/open-source-tools/docker-all-geared-up-for-the-enterprise.html +[6]:http://www.itworld.com/article/2695501/cloud-computing/google-unleashes-docker-management-tools.html +[7]:http://www.itworld.com/article/2696116/open-source-tools/coreos-linux-does-away-with-the-upgrade-cycle.html +[8]:https://coreos.com/using-coreos/ From 0bf1765da467dce15682a5966ea94df15ec1820f Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 15 Mar 2015 14:30:08 +0800 Subject: [PATCH 561/725] [translating] 20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md --- ...Press Can Be Used to Leverage Critical Ghost Flaw in Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md b/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md index 3d132079a4..15eebc3ad5 100644 --- a/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md +++ b/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md @@ -1,3 +1,4 @@ +zpl1025 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux ----- *Users are advised to apply available patches immediately* From 454c6f142504ea4555da8c8f929663287bb1d6d8 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 15 Mar 2015 15:17:10 +0800 Subject: [PATCH 562/725] [translated] 20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md --- ...o Leverage Critical Ghost Flaw in Linux.md | 50 ------------------- ...o Leverage Critical Ghost Flaw in Linux.md | 49 ++++++++++++++++++ 2 files changed, 49 insertions(+), 50 deletions(-) delete mode 100644 sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md create mode 100644 translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md diff --git a/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md b/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md deleted file mode 100644 index 15eebc3ad5..0000000000 --- a/sources/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md +++ /dev/null @@ -1,50 +0,0 @@ -zpl1025 -WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux ------ -*Users are advised to apply available patches immediately* - -![WordPress validating pingback’s post URL](http://i1-news.softpedia-static.com/images/news2/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730-2.jpg) - -**The vulnerability revealed this week by security researchers at Qualys, who dubbed it [Ghost](1), could be taken advantage of through WordPress or other PHP applications to compromise web servers.** - -The glitch is a buffer overflow that can be triggered by an attacker to gain command execution privileges on a Linux machine. It is present in the glibc’s “__nss_hostname_digits_dots()” function that can be used by the “gethostbyname()” function. - -##PHP applications can be used to exploit the glitch - -Marc-Alexandre Montpas at Sucuri says that the problem is significant because these functions are used in plenty of software and server-level mechanism. - -“An example of where this could be a big issue is within WordPress itself: it uses a function named wp_http_validate_url() to validate every pingback’s post URL,” which is carried out through the “gethostbyname()” function wrapper used by PHP applications, he writes in a blog post on Wednesday. - -An attacker could use this method to introduce a malicious URL designed to trigger the vulnerability on the server side and thus obtain access to the machine. - -In fact, security researchers at Trustwave created [proof-of-concept](2) code that would cause the buffer overflow using the pingback feature in WordPress. - -##Multiple Linux distributions are affected - -Ghost is present in glibc versions up to 2.17, which was made available in May 21, 2013. The latest version of glibc is 2.20, available since September 2014. - -However, at that time it was not promoted as a security fix and was not included in many Linux distributions, those offering long-term support (LTS) in particular. - -Among the impacted operating systems are Debian 7 (wheezy), Red Hat Enterprise Linux 6 and 7, CentOS 6 and 7, Ubuntu 12.04. Luckily, Linux vendors have started to distribute updates with the fix that mitigates the risk. Users are advised to waste no time downloading and applying them. - -In order to demonstrate the flaw, Qualys has created an exploit that allowed them remote code execution through the Exim email server. The security company said that it would not release the exploit until the glitch reached its half-life, meaning that the number of the affected systems has been reduced by 50%. - -Vulnerable application in Linux are clockdiff, ping and arping (under certain conditions), procmail, pppd, and Exim mail server. - --------------------------------------------------------------------------------- - -via:http://news.softpedia.com/news/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730.shtml - -本文发布时间:30 Jan 2015, 17:36 GMT - -作者:[Ionut Ilascu][a] - -译者:[译者ID](https://github.com/译者ID) - -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://news.softpedia.com/editors/browse/ionut-ilascu -[1]:http://news.softpedia.com/news/Linux-Systems-Affected-by-14-year-old-Vulnerability-in-Core-Component-471428.shtml -[2]:http://blog.spiderlabs.com/2015/01/ghost-gethostbyname-heap-overflow-in-glibc-cve-2015-0235.html diff --git a/translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md b/translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md new file mode 100644 index 0000000000..356fe136d2 --- /dev/null +++ b/translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md @@ -0,0 +1,49 @@ +WordPress可以用来触发Linux上的Ghost缺陷 +----- +*建议用户马上更新可用的补丁* + +![WordPress validating pingback’s post URL](http://i1-news.softpedia-static.com/images/news2/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730-2.jpg) + +**这个漏洞于本周由Qualys的安全研究员发现,并取了绰号叫[Ghost](1),可以利用WordPress或其他PHP应用来攻击网站服务器。** + +这个瑕疵是一个缓冲区溢出问题,可以被攻击者触发用来获取Linux主机的命令行执行权限。发生在glibc的“__nss_hostname_digits_dots()”函数中,它会被“gethostbyname()”函数用到。 + +##PHP应用可以用来利用这个瑕疵 + +Sucuri的Marc-Alexandre Montpas说之所以这个问题很重要是因为这些函数在大量软件和服务器系统使用。 + +“说这是个严重问题的一个例子是WordPress本身:它使用一个叫wp_http_validate_url()的函数来验证每个pingback的发送URL,它是通过PHP应用的“gethostbyname()”函数替代来执行的”,他在周三的一篇博客文章里写到。 + +攻击者可以用这种方式来引入一个设计用来触发服务器端漏洞的恶意URL,从而获得系统访问权限。 + +实际上,Trustwave的安全研究人员提供了[验证][2]代码,可以使用WordPress的pingback功能引起缓冲区溢出。 + +##多个Linux发行版受到影响 + +ghost漏洞存在于glibc 2.17以上版本中,发布于2013年5月21日。glibc当前版本是2.20,发布于2014年9月。 + +不过,当时并没有升级为一个安全补丁,许多发行版并没有包含进去,特别是提供长期支持(LTS)的发行版。 + +受影响的系统包括Debian 7(wheezy),Red Hat企业版Linux 6和7,CentOS 6和7,Ubuntu 12.04。幸运的是,Linux供应商已经开始发布可以减轻风险的升级补丁。建议用户马上下载并更新。 + +为了展示这个漏洞,Qualys建立了一个利用它通过Exim邮件服务器运行远程代码的试验页面。这家安全公司声称在这个漏洞丢掉半条命之前不会关闭这个页面,意思是受影响的系统的数量降到50%的水平。 + +Linux上存在漏洞的应用包括clockdiff,ping和arping(在某些特定情况下),procmail,pppd,和Exim邮件服务器。 + +-------------------------------------------------------------------------------- + +via:http://news.softpedia.com/news/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730.shtml + +本文发布时间:30 Jan 2015, 17:36 GMT + +作者:[Ionut Ilascu][a] + +译者:[zpl1025](https://github.com/zpl1025) + +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://news.softpedia.com/editors/browse/ionut-ilascu +[1]:http://news.softpedia.com/news/Linux-Systems-Affected-by-14-year-old-Vulnerability-in-Core-Component-471428.shtml +[2]:http://blog.spiderlabs.com/2015/01/ghost-gethostbyname-heap-overflow-in-glibc-cve-2015-0235.html From 77df4e5e44097a8805f6c3e924fa6d583e75c74f Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Sun, 15 Mar 2015 15:20:12 +0800 Subject: [PATCH 563/725] [translating] 20150306 How to Setup lftp--A Simple Command line FTP Program.md --- ...306 How to Setup lftp--A Simple Command line FTP Program.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md b/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md index b4fe88cd12..ad5f1da84c 100644 --- a/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md +++ b/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md @@ -1,3 +1,4 @@ +zpl1025 How to Setup lftp - A Simple Command line FTP Program ================================================================================ Hi everyone, this article is about Lftp and how we can install Lftp in our Linux Operating System. [Lftp][1] is a command line based File Transfer Software also known as FTP Client which was developed by Alexander Lukyanov and was distributed as GNU General Public License. Besides FTP, it also supports FTPS, HTTP, HTTPS, HFTP, FISH, and SFTP. The program also supports FXP, allowing for data transfers between two FTP servers bypassing the client machine. @@ -171,4 +172,4 @@ via: http://linoxide.com/linux-how-to/setup-lftp-command-line-ftp/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunp/ -[1]:http://lftp.yar.ru/ \ No newline at end of file +[1]:http://lftp.yar.ru/ From a8ef75d88d73d841fca04516ca3715849310d825 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sun, 15 Mar 2015 15:24:08 +0800 Subject: [PATCH 564/725] translated --- ...ocal Network Between Ubuntu And Windows.md | 178 ------------------ ...ocal Network Between Ubuntu And Windows.md | 176 +++++++++++++++++ 2 files changed, 176 insertions(+), 178 deletions(-) delete mode 100644 sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md create mode 100644 translated/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md diff --git a/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md b/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md deleted file mode 100644 index 28c93ea5fd..0000000000 --- a/sources/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md +++ /dev/null @@ -1,178 +0,0 @@ -[translating by KayGuoWhu] -Share Folders On Local Network Between Ubuntu And Windows -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_windows.jpeg) - -This is a complete tutorial to show you **how to share folders over local network in Ubuntu**. - -Do you have multiple devices in your home? Do you have to use Flash Drive or SD card to transfer data from Ubuntu to another computer? Do you find it annoying? We know you do. Because we don’t want you to waste your precious time while you can transfer your files, documents and other large stuff quickly and easily, over the local network. It’s one time setup and then with some clicks you will be able to **share files between Ubuntu and Windows** or any other Linux system. And don’t worry it’s easy and takes only little time. - -One more thing to add, while we performed this tutorial on Ubuntu, this tutorial should be valid for any other Linux OS. - -#### Share folder on local network in Ubuntu #### - -If you are using Ubuntu 14.04, 14.10 or 12.04, there are two ways you can share your local files over the local network to access it from Windows or other Linux computers. - -- Share it for everyone’s access on local network, without password -- Password protect the folders for restricted access - -We’ll see both methods in this post and will let you decide which one you would prefer to use. - -### 1. Share folders on local network without password ### - -#### Step 1: #### - -To share a folder on local network in Ubuntu, right click on the desired folder and select Local Network Share: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Share_Folder_Ubuntu.jpeg) - -**Possible troubleshoot**: If do not see the option of Local Network Share in right click menu, open a terminal and use the following command to install nautlius-share: - - sudo apt-get install nautilus-share - -You’ll need to restart Nautilus. Either log out and log in back or use the command below: - - nautilus -q - -#### Step 2: #### - -When you click on Local Network Share, you will see the option of sharing the folder. Just check the option of Share this folder: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_1.jpeg) - -Possible troubleshoot: If you are prompted about Sharing service not being installed, like in the screenshot below, just click on Install service and follow the instructions. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_2.jpeg) - -#### Step 3: #### - -When you check the option of Share this folder, you’ll see option of Create Share available for you. You can also allow other users to edit the files in the shared folder. Option for guest access can be checked as well. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_folder_Ubuntu_3.png) - -You’ll see that the folder icon have been changed to show that it has been shared. To stop sharing a folder, just uncheck the Share this folder option. - -Now this was the easy way out. This provides access to anyone on your local network to access these files. In normal condition, you should prefer this. I mean, devices on your home network should be generally know devices. But this could not be the case always. What if you want only certain people to access it? This is where Samba server comes in picture. We’ll see that in the second part of the tutorial. - -### 2. Share the folders on local network in Ubuntu with password protection ### - -To do this, we need to configure Samba server. Actually, we did use Samba in the previous part of this tutorial. We just did not emphasize on it. Before we go on seeing how to set up Samba server for local network sharing in Ubuntu, let’s first have a quick look on what actually is [Samba][1]. - -#### What is Samba? #### - -Samba is the software package that allows you to share files, documents and printers across a network, irrespective of whether you are using Linux, Windows and Mac. It’s available for all major platforms and can work tremendously nice in all of them. Quoting from Wikipedia: - -> Samba a free software re-implementation of the SMB/CIFS networking protocol, and was originally developed by Andrew Tridgell. As of version 3, Samba provides file and print services for various Windows Clients and can integrate with a Windows Server domain, either as a Primary Domain Controller (PDC) or as a domain member. It can also be part an Active Directory domain. - -#### Install Samba server on Ubuntu #### - -You can easily install Samba on you Ubuntu box. Before installing update your system so that you can install any available updates. - - sudo apt-get update && apt-get upgrade - -Now install Samba serer and few other required stuffs with the following command: - - sudo apt-get install samba samba-common system-config-samba python-glade2 gksu - -Once you’ve installed Samba server, it’s time to configure Samba from the graphical interface window to share files. - -#### Configure Samba server on Ubuntu #### - -Open Samba Configuration tool from the dash: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Setup-Samba.png) - -Go to **Preference->Server Settings**. Although the default settings are good and may be same you need. But you may need to make change to it in some cases. - -Now in Server Settings you’ve two tabs, ‘Basic’ and ‘Security’. Under Basic tab you’ve the following options that mean: - -- Workgroup – This is the name of the Workgroup of the computer you want to connect to. For example, if you want to connect to a Windows computer so you will enter the workgroup name of Windows computer, and in Windows you already have the same workgroup name as is set by default in Samba Server Settings. But if you have a different workgroup name on Windows then you will enter that workgroup name in this field. (In Windows 7 to get the workgroup name, right-click Computer icon and go to Properties, there you’ll see Windows Workgroup name.) -- Description – This is the name of your computer as seen by others. Don’t use spaces or non-internet friendly characters. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/samba-server-settings.png) - -setting up samba serverAllowing ‘Guests’ is not advisable so there is no reason to change security settings. Keep as it is. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Samba-Security-Settings-compressed.jpg) - -Samba Security security settingsIt is all done! You’ve setup Samba Server. We are not far from sharing our first folder on network. - -#### Create a system user for network file sharing #### - -We will now create a system user for sharing file on network. This is how simple it is. - -- Go to **System Settings**. -- Under Systems Settings Click **User Accounts**. -- Click **unlock** to Enable + (**plus**) icon. -- Click + (plus) icon to create a new system user. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/create-system-user1.jpg) - -Now as you can see the above image, you can enter ‘Full name’. As you enter ‘Full name’ Username will be taken as Full name automatically. Because we are creating this user to share files so we will assign Account Type to ‘**Standard**‘. - -Done above steps? Click add. You have created a system user. The user is not yet activated so we will activate it by setting up password for this account. Make sure Users accounts panel is unlocked. Click Account disabled and type a new password, then confirm password and click Change. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/activate-system-user.jpg) - -Yipee… Upto now we have installed and configured Samba and We have created a System user to share files on network from the account and we have activated our newly created account, too. Now We will move to Samba for the last step of configuring everything, then we will share a folder. - -#### Add new Samba user #### - -Open Samba and click Samba Users under Preference. Fill up the the simple dialogue. Here are couple of details about the fields: - -**Unix Username** – In this case I am selecting the user that I just created. - -**Windows Username** – You will enter this username when you are accessing from Windows Machine. - -**Samba Password** – You will enter this password when you are accessing from Windows Machine. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/samba-user-setting.jpg) - -Once you’ve done click OK. Now take a deep breath. You have successfully created a network with the help of Samba. Now restart the network or Samba services and ready to share files with other machines. - - sudo restart smbd && sudo restart nmbd - -#### Share folders or files over the network #### - -To share files with Samba it’s simple with graphical user interface. Click the Plus icon in Samba and you will get dialogue like this: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/share-files-and-folders.jpg) - -share files and folders over network with sambaComplete the fields. In ‘Directory‘ browse the folder you want to share. Here are the details about the fields you will see here: - -- **Share name** is the name of the folder that other would see. -- **Description** is simply about the content you are sharing on network. -- **Writable** You shared folders are ‘read only’ by default. You can set them to writable if you want others on network to change them. -- **Visible** As the name suggests when you click Visible, the shared folder will be visible to the people on network. - -Now you can set permissions for the folder you are sharing. To do this click ‘Access’ tab and check the users you want to share the folder with. When you select Allow access to everyone, the folder will be accessible to everyone on the network. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Screenshot-from-2015-02-28-202031.png) - -Finally click OK to complete the sharing. Now the folder is shared with the people you want. You have completed sharing file on network. Is there everything left? Yes! How to remove the folders from the network? - -#### Remove shared folders #### - -We will also need to remove some of the folders after sometime from network. It is very simple and here is how we can do that. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/remove-shared-folder-from-network.jpg) - -This is all done! We can also share files over network using terminal but that would not be as easy as this one. If you request for command line sharing then I will write a tutorial on how to share files over network with command line in Linux. - -So, how do you find this tutorial to share files on local network in Ubuntu? I hope with this tutorial you can **easily share files between Ubuntu and Windows**. If you have questions or suggestions, feel free to ask it in the comment box below. - -This tutorial was requested by Kalc. If you would like, you can [request your own tutorial][2]. We would be happy to help you out along with other readers facing the same issue. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/share-folders-local-network-ubuntu-windows/ - -作者:[Mohd Sohail][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/sohail/ -[1]:http://en.wikipedia.org/wiki/Samba_%28software%29 -[2]:http://itsfoss.com/request-tutorial/ \ No newline at end of file diff --git a/translated/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md b/translated/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md new file mode 100644 index 0000000000..972486fbf0 --- /dev/null +++ b/translated/tech/20150304 Share Folders On Local Network Between Ubuntu And Windows.md @@ -0,0 +1,176 @@ +局域网中实现Ubuntu和Windows共享文件夹 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_windows.jpeg) + +本文全面详细地向你描述了**在Ubuntu中如何实现局域网内的文件夹共享**。 + +你的家中是不是有多台电脑?当你需要从一台Ubuntu电脑向另一台电脑传输数据时,是不是必须用到U盘或SD卡?你是否也觉得这个方法很烦人?我想肯定是。本文的目的就是使你在局域网内快速方便地传输文件、文档和其它较大的数据,来节省你的宝贵时间。只需一次设置,然后轻点鼠标,你就可以自由地**在Ubuntu和Windows之间共享文件**,当然这对其它Linux系统同样使用。不要担心这很容易操作,不会花费太多时间。 + +除此之外,尽管本文是在Ubuntu上进行实践,但这个教程在其它Linux系统上同样有用。 + +#### 在Ubuntu上实现局域网共享文件夹 #### + +如果你的系统是Ubuntu 14.04、14.10或12.04,有两个方法可以使你通过局域网在搭载Windows或其他Linux的电脑上共享本地文件。 + +- 对局域网中的每个用户提供无密码共享 +- 仅限特定访问,提供文件夹密码保护 + +这篇文章包括两种方法,你可以选择你想用的那种。 + +### 1. 局域网无密码共享文件夹 ### + +#### 步骤一:#### + +为了在Ubuntu上实现局域网共享文件夹,右键点击打算共享的文件夹,并选择“Local Network Share”: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Share_Folder_Ubuntu.jpeg) + +**可能有用的故障方案**:如果在右键菜单中看不到“Local Network Share”的选项,那就新建一个终端,使用下面的命令去安装nautlius-share: + + sudo apt-get install nautilus-share + +然后重启Nautilus。可以选择注销再登录,或者使用这个命令: + + nautilus -q + +#### 步骤二:#### + +一旦点击“Local Network Share”,就会出现共享文件夹的选项。只需选中“Share this folder”这一项: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_1.jpeg) + +可能的故障方案:如果提示共享服务还未安装,就像下图所示,那就点击安装服务,按照提示操作。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_Folder_Ubuntu_2.jpeg) + +#### 步骤三:#### + +一旦选中“Share this folder”的选项,就会看到按钮“Create Share”变成可用了。你也可以允许其他用户在共享文件夹中编辑文件。选项“Guest access”也是如此。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Share_folder_Ubuntu_3.png) + +你会看到文件夹图标已经显示为共享的。如果要停止共享文件夹,只需取消“Share this floder”这个选项。 + +这个方法就是这么简单,使得局域网中的任何人都可以访问共享文件夹中的文件。在正常情况下,你会选择这种方式。因为,家用局域网中的电脑通常都是可信电脑。但情况也不总是这样。如果你只是想特定的用户才能访问怎么办?这个时候就需要Samba服务器了。我们在本文的第二部分讨论这种方法。 + +### 2. 在Ubuntu上使用密码保护实现局域网共享文件夹### + +为了达到目的,首先需要配置Samba服务器。事实上,在这篇教程的前一部分我们已经用到了Samba,只是我们没有刻意强调。在介绍如何在Ubuntu上搭建Samba服务器实现局域网共享的方法之前,先快速预览一下[Samba][1]到底是什么。 + +#### Samba是什么? #### + +Samba是一个允许用户通过网络共享文件、文档和打印机的软件包,无论是在Linux、Windows,还是Mac上。它适用于所有的主流平台,可以在所有支持系统上流畅运行。下面是维基百科的介绍: + +> Samba是一款重新实现SMB/CIFS网络协议的自由软件,最初由安德鲁·垂鸠开发。在第三版中,Smaba不仅支持通过不同的Windows客户端访问及分享SMB的文件夹及打印机,还可以集成到Windows Server域名,作为主要域名控制站(PDC)或者域名成员。它也可以作为Active Directory域名的一部分。 + +#### 在Ubuntu上安装Samba服务器 #### + +你可以很方便地在Ubuntu电脑上安装Samba。安装前,请先更新系统以便安装任何可用的更新。 + + sudo apt-get update && apt-get upgrade + +然后按照这条命令安装samba和少量所需的软件包: + + sudo apt-get install samba samba-common system-config-samba python-glade2 gksu + +一旦安装完成Samba服务器,就可以从图形界面配置Samba来分享文件。 + +#### 在Ubuntu上配置Samba服务器 #### + +从dash打开Samba配置工具: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Setup-Samba.png) + +进入到**Preference->Server Settings**。尽管默认已经设置好,可能就是你需要的。但在某些情况下你可能需要做一些改动。 + +在Server Setting中可以看到两个选项卡,‘Basic’和‘Security’。在Basic选项卡下的选项含义如下: + +- 工作组 - 用户要连接的电脑所在工作组的名字。比如,如果你想连接到一台Windows电脑,你就要输入Windows电脑的工作组名字。在Windows的Samba服务器设置中,已经默认设置好统一的工作组名字。但如果你有不同的工作组名字,就在这个字段中输入自定义的工作组名字。(在Windows 7中获取工作组名字,右击计算机图标,进到属性,就能看到Windows工作组名字。) +- 描述 - 其他用户看到的你的电脑名字。不要使用空格或计算机不支持(望更正!)的字符。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/samba-server-settings.png) + +设置samba服务器允许‘Guests’可用是不明智的,所以没必要修改安全设置,保持原样即可。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Samba-Security-Settings-compressed.jpg) + +这就搞定了!你已经搭建好Samba服务器,距离实现网络共享第一个文件夹的目标不远了! + +#### 为网络文件共享创建一个系统用户 #### + +现在我们需要为网络共享文件创建一个系统用户。下面是非常简单的步骤: + +- 在Systems Settings下点击**User Accounts**。 +- 点击**unlock**使其可用,以及+(**plus**)图标。 +- 点击+(plus)图标,创建一个新的系统用户。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/create-system-user1.jpg) + +如上图所示,需要输入‘Full name’。当你输入‘Full name’时,Username会自动填充为Full name。因为创建这个用户是为了共享文件,所以还要指定Account Type为‘**Standard**’。 + +完成上述步骤,点击添加,你就创建好一个系统用户。这个用户还没有被激活,所以需要为其设置密码来激活。确保Users accounts界面已经解锁。点击Account disabled。输入一个新密码,然后确认密码,点击Change。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/activate-system-user.jpg) + +耶!到目前为止我们已经安装并配置好Samba,已经创建了一个系统用户以通过这个账户在网络上共享文件,而且也已经激活了新用户。现在来到配置Samba的最后一步,然后就可以共享文件夹了。 + +#### 添加Samba新用户 #### + +打开Samba,在Preference先点击Samba Users。填写弹出的对话框,下面是其中几个字段的说明: + +**Unix Username** - 在这种情况下,我选择刚才创建的用户。 + +**Windows Username** - 输入你要访问的Windows电脑的用户名。 + +**Samba Password** - 输入你要访问的Windows电脑的密码。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/samba-user-setting.jpg) + +完成后点击OK。现在做个深呼吸。你已经在Samba的帮助下成功创建一个网络。然后重启网络或Samba服务,准备好和其它电脑共享文件。 + + sudo restart smbd && sudo restart nmbd + +#### 通过网络共享文件夹或文件 #### + +在图形用户界面下通过Samba共享文件是很简单的。点击Plus图标,会看到如图所示的对话框: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/share-files-and-folders.jpg) + +填写完这些字段。在‘Directory’中,浏览要共享的文件夹。你会看到的字段的含义如下: + +- **Share name** 是其它人会看到的文件夹名字。 +- **Description** 是要共享内容的简单描述。 +- **Writeable** 默认情况下共享的文件夹是‘read only’。如果允许网络上的其他用户修改它们,设置为writable。 +- **Visiable** 当你点击Visiable时,就像它的名字一样,共享文件夹就对网络上的其他人可见。 + +现在你可以设置共享文件夹的权限。点击‘Access’选项,选择想要共享文件夹的用户。当你选择对所有人允许访问后,这个文件夹就对网络上的所有人可见。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Screenshot-from-2015-02-28-202031.png) + +最后点击OK,完成共享。现在这个文件夹就与你想要共享的用户实现共享。你已经完成了网络共享文件。还有其它要做的吗?对!还不知道如何从网络上移除文件夹? + +#### 移除共享文件夹 #### + +在网络共享一段时间后,我们也需要移除其中的一些文件夹。操作很简答,下面就是我们要做的。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/remove-shared-folder-from-network.jpg) + +全部搞定!我们也可以使用终端进行网络文件共享,但这样没有本文介绍的方法这么容易。如果你确实想知道命令行操作,我会再写一篇关于在Linux上使用命令行实现网络文件共享的文章。 + +所以,你是怎么找到这篇教程的呢?我希望看了这篇教程你可以**很容易地在Ubuntu和Windows之间共享文件**。如果你有任何问题或建议,请再评论里说出来。 + +这篇教程是在Kalc的请求下写出的。如果你也想,你可以[请求你自己的教程][2]。我们很乐意帮助你和面临同样问题的读者解决问题。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/share-folders-local-network-ubuntu-windows/ + +作者:[Mohd Sohail][a] +译者:[KayGuoWhu](https://github.com/KayGuoWhu) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/sohail/ +[1]:http://en.wikipedia.org/wiki/Samba_%28software%29 +[2]:http://itsfoss.com/request-tutorial/ From 95dfc87718637f0dcfb533d38e9fff2051958add Mon Sep 17 00:00:00 2001 From: LouisWei Date: Sun, 15 Mar 2015 22:23:48 +0800 Subject: [PATCH 565/725] translated wi-cuckoo --- ...ux Games We Will See In 2015 And Beyond.md | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md diff --git a/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md new file mode 100644 index 0000000000..fc5d48aad4 --- /dev/null +++ b/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md @@ -0,0 +1,136 @@ +预见我们将会在2015年及之后的Linux游戏 +================================================================================他们说Linux游戏开发已经死了,已经变得毫无意义...随他们说去吧.一起看看2015甚至以后会为我们带来什么游戏. + +真的很难跟上为我们出现的每一样事物,但是可以快速浏览一下我们将会看到的变化. + +### 已确认的游戏 ### + +#### 冒险游戏 #### + +- [看火人][1] +- [失落的天堂:初探][2] +- [蒸汽世界:浩劫][3] + +#### 动作游戏 #### + +- [暗黑血统][4] +- [暗黑血统2][5] +- [尸人的世界][6] +- [骷髅女孩][7] + +#### 第一人称游戏 #### + +- [生化奇兵:永恒][8] +- 半条命 3 /troll      #此处troll不知道如何翻译 +- [烽火家园:革命][9] +- [杀戮空间 2][10] +- 英雄萨姆 4(目前无官方站点) +- [联合风暴][11] +- [烈火击杀][12] + +#### 平台游戏 #### + +- [武装原型][13] +- [峡谷][14] #此处游戏名尚不确定 +- [吉安娜姐妹][15] +- [心之所向:Alicia][16] +- [ ][17] #此处游戏名未知 +- [无限工厂][18] +- [无敌9号][19] +- [林中之夜][20] +- [夜][21] +- [奇异的世界:新鲜可口][22] +- [真红女神][23] + +#### 角色扮演游戏 #### + +- [神界:原罪][24] +- [永恒之柱][25] +- [暗影狂奔:香港][26] +- [旗帜的传说][27] + +#### 策略游戏 #### + +- [奇迹时代3][28] +- [放逐之城][29] +- [城:天际][30] +- [发条帝国][31] +- [][32] +- [卷轴][33] +- [太空海盗和僵尸 2][34] + +#### 沙盒游戏 #### + +- [泰拉瑞亚][35] +- [X 重生][36] + +#### 不太确认,不过可能性高 #### + +- [英雄连][37] +- [逃生][38] +- [影子武士][39] +- [火炬之光 2][40] + +然而有两个来自Feral Interactive的,由于不知道他们是什么,所以没有列举出来. + +我们猜测Aspyr也在准备新的大制作,但是他们仅仅发布了他们最新的游戏,所以可能要等上几个月我们才能看到些什么. + +当然,** 这不是完整的列表 **,我们会轻易忘记巨量的游戏正在走向我们,哇,如此丰富的列表. + +下个月就是游戏开发者大会,我们也期待一些改变发生.然而,我们没有什么确切的东西,对于Valve与Steam Machines的合作,我们期待至少会增加一些Linux游戏,否则,如我们担心,炫耀一些过时的游戏会让Valve脸上无光. + +你怀念Linux的哪些地方曾让你兴奋? + +-------------------------------------------------------------------------------- + +via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-see-in-2015-and-beyond.4963 + +作者:[liamdawe][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.gamingonlinux.com/profiles/1 +[1]:https://www.gamingonlinux.com/articles/category/17/articles/firewatch-a-first-person-mystery-game-finally-reveals-itself-in-a-trailer.4231 +[2]:http://www.asthreeworks.com/games/ +[3]:https://www.gamingonlinux.com/articles/category/17/articles/image-form-announces-steamworld-heist.4304 +[4]:https://www.gamingonlinux.com/articles/darksiders-linux-port-looks-like-it-is-still-happening.4893 +[5]:https://www.gamingonlinux.com/articles/darksiders-2-confirmed-for-linux.4154 +[6]:http://ragtagstudio.com/?page_id=457 +[7]:https://www.gamingonlinux.com/articles/editorial-skullgirls-on-linux-finally-shows-some-progress.4789 +[8]:https://www.gamingonlinux.com/articles/bioshock-infinite-looks-set-for-a-linux-release-confirmed.4668 +[9]:http://www.homefront-game.com/ +[10]:https://www.gamingonlinux.com/articles/category/17/articles/killing-floor-2-fps-has-a-new-trailer.4676 +[11]:https://www.gamingonlinux.com/articles/storm-united-online-fps-shows-first-real-gameplay-video-first-alpha-due-soon.4872 +[12]:http://superhotgame.com/ +[13]:http://steamcommunity.com/app/274190/discussions/0/540738051503306548/#c540738051518330743 +[14]:https://www.gamingonlinux.com/articles/category/17/articles/chasm-rpg-platformer-will-have-a-same-day-linux-release.4266 +[15]:https://www.gamingonlinux.com/articles/linux-port-of-platformer-giana-sisters-brought-inhouse-sequel-might-get-sameday-release.4913 +[16]:http://www.alonsomartin.mx/hfa/ +[17]:http://www.hottinroofgame.com/ +[18]:https://twitter.com/zachtronics/status/566016742825005057 +[19]:http://www.mightyno9.com/ +[20]:http://www.nightinthewoods.com/ +[21]:https://www.gamingonlinux.com/articles/category/17/articles/noct-a-fantastic-top-down-thermal-image-survival-horror-game.4783 +[22]:https://www.gamingonlinux.com/articles/puzzle-platformer-oddworld-new-n-tasty-will-release-for-linux-next-month.4836 +[23]:https://www.gamingonlinux.com/articles/new-trailer-for-platformer-red-goddesss-looks-really-good.4939 +[24]:https://www.gamingonlinux.com/articles/divinity-original-sin-is-pushing-ahead-for-the-linux-release.4938 +[25]:https://www.gamingonlinux.com/articles/pillars-of-eternity-the-rpg-aims-for-a-sameday-linux-release-on-march-26th.4834 +[26]:https://www.kickstarter.com/projects/webeharebrained/shadowrun-hong-kong +[27]:https://www.gamingonlinux.com/articles/the-banner-saga-rpg-looks-close-to-a-linux-version.4862 +[28]:https://www.gamingonlinux.com/articles/the-linux-port-of-age-of-wonders-iii-is-progressing-a-bit-too-explosive-right-now.4857 +[29]:https://www.gamingonlinux.com/articles/banished-survival-city-building-sim-is-being-ported-to-linux.4813 +[30]:https://www.gamingonlinux.com/articles/city-builder-game-cities-skylines-now-has-a-release-date.4954 +[31]:https://www.gamingonlinux.com/articles/clockwork-empires-still-pushing-towards-a-linux-version-suffering-delays.4734 +[32]:https://www.gamingonlinux.com/articles/category/17/articles/parkitect-what-roller-coaster-tycoon-should-have-grown-into.4528 +[33]:https://www.gamingonlinux.com/articles/mojangs-scrolls-now-has-an-experimental-linux-build.4450 +[34]:https://www.gamingonlinux.com/articles/space-pirates-and-zombies-2-reveals-the-zombies-in-a-brand-new-video.4759 +[35]:https://www.gamingonlinux.com/articles/terraria-officially-confirmed-to-be-in-development-for-linux-finally.4299 +[36]:https://www.gamingonlinux.com/articles/egosofts-x-rebirth-actively-being-ported-to-linux.4822 +[37]:https://www.gamingonlinux.com/articles/company-of-heroes-2-looks-like-it-is-heading-to-linux.4199 +[38]:https://www.gamingonlinux.com/articles/outlast-that-really-scary-game-looks-like-its-still-heading-to-linux.4896 +[39]:https://www.gamingonlinux.com/articles/shadow-warrior-looks-like-it-will-come-to-linux.4859 +[40]:https://www.gamingonlinux.com/articles/torchlight-ii-has-even-more-positive-signs-for-linux.4817 +[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ + From 08ab60cc63afdfab16cc1b225f161def5a1182ca Mon Sep 17 00:00:00 2001 From: lihaiming Date: Sun, 15 Mar 2015 23:20:35 +0800 Subject: [PATCH 566/725] =?UTF-8?q?=E7=94=B3=E8=AF=B7=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...who start writing kernel code get hired really quickly'.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md index 6d7e64f616..c06b482252 100644 --- a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md +++ b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md @@ -1,3 +1,5 @@ +translating by haiming + Torvalds: 'People who start writing kernel code get hired really quickly' ================================================================================ Now more than ever, the development of the Linux kernel is a matter for the professionals, as unpaid volunteer contributions to the project reached their lowest recorded levels in the latest "Who Writes Linux" report, which was released today. @@ -28,4 +30,4 @@ via: http://www.infoworld.com/article/2885339/application-development/torvalds-p 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.infoworld.com/author/Jon-Gold/ \ No newline at end of file +[a]:http://www.infoworld.com/author/Jon-Gold/ From 6a89282d9a9425525208ae36133112433a396a6d Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 15 Mar 2015 23:30:56 +0800 Subject: [PATCH 567/725] =?UTF-8?q?=E8=A1=A5=E5=85=85=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wi-cuckoo --- ...ux Games We Will See In 2015 And Beyond.md | 137 ------------------ 1 file changed, 137 deletions(-) delete mode 100644 sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md diff --git a/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md deleted file mode 100644 index bf99fd2154..0000000000 --- a/sources/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md +++ /dev/null @@ -1,137 +0,0 @@ -translating wi-cuckoo LLAP -A Look At What Linux Games We Will See In 2015 And Beyond -================================================================================ -Linux Gaming is dead they said, Linux Gaming is pointless they said...ah whatever. Here’s a look at what’s to come for us in 2015 and beyond. - -It's pretty hard to keep up with everything that's going on for us, but here's a quick look at what we could see soon. - -### Confirmed Games ### - -#### Adventure Games #### - -- [Firewatch][1] -- [Paradise Lost: First Contact][2] -- [SteamWorld Heist][3] - -#### Action Games #### - -- [Darksiders][4] -- [Darksiders II][5] -- [Ray's The Dead][6] -- [Skullgirls][7] - -#### FPS Games #### - -- [Bioshock Infinite][8] -- Half Life 3 /troll -- [Homefront: The Revolution][9] -- [Killing Floor 2][10] -- Serious Sam 4 (No official site for it yet) -- [Storm United][11] -- [SUPERHOT][12] - -#### Platformers #### - -- [Broforce][13] -- [Chasm][14] -- [Giana Sisters][15] -- [Heart Forth, Alicia][16] -- [Hot Tin Roof][17] -- [Infinifactory][18] -- [Mighty No. 9][19] -- [Night in the Woods][20] -- [Noct][21] -- [Oddworld: New 'N' Tasty][22] -- [Red Goddess][23] - -#### RPG Games #### - -- [Divinity: Original Sin][24] -- [Pillars Of Eternity][25] -- [Shadowrun: Hong Kong][26] -- [The Banner Saga][27] - -#### Strategy Games #### - -- [Age of Wonders III][28] -- [Banished][29] -- [Cities: Skylines][30] -- [Clockwork Empires][31] -- [Parkitect][32] -- [Scrolls][33] -- [Space Pirates And Zombies 2][34] - -#### Sandbox Games #### - -- [Terraria][35] -- [X Rebirth][36] - -#### Unconfirmed, but highly likely #### - -- [Company of Heroes 2][37] -- [Outlast][38] -- [Shadow Warrior][39] -- [Torchlight II][40] - -Then there’s the [two ports teased from Feral Interactive][41], we can’t let them be left out just because we don’t know what they are. - -We imagine Aspyr Media are also working on new bigger ports, but they have only just released their latest game, so it may be a few months until we see anything. - -**This isn't a complete list** of course, as we can easily forget with the sheer amount of games heading our way, and wow what a list! - -We have GDC next month, and we are expecting a few announcements too. While we don't have anything solid, with Valve's big presence with Steam Machines we are expecting at least some more Linux games, otherwise it we fear it may be a little lacklustre for Valve to only show off older existing games for Linux. - -What did we miss that you’re excited about for Linux? - --------------------------------------------------------------------------------- - -via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-see-in-2015-and-beyond.4963 - -作者:[liamdawe][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.gamingonlinux.com/profiles/1 -[1]:https://www.gamingonlinux.com/articles/category/17/articles/firewatch-a-first-person-mystery-game-finally-reveals-itself-in-a-trailer.4231 -[2]:http://www.asthreeworks.com/games/ -[3]:https://www.gamingonlinux.com/articles/category/17/articles/image-form-announces-steamworld-heist.4304 -[4]:https://www.gamingonlinux.com/articles/darksiders-linux-port-looks-like-it-is-still-happening.4893 -[5]:https://www.gamingonlinux.com/articles/darksiders-2-confirmed-for-linux.4154 -[6]:http://ragtagstudio.com/?page_id=457 -[7]:https://www.gamingonlinux.com/articles/editorial-skullgirls-on-linux-finally-shows-some-progress.4789 -[8]:https://www.gamingonlinux.com/articles/bioshock-infinite-looks-set-for-a-linux-release-confirmed.4668 -[9]:http://www.homefront-game.com/ -[10]:https://www.gamingonlinux.com/articles/category/17/articles/killing-floor-2-fps-has-a-new-trailer.4676 -[11]:https://www.gamingonlinux.com/articles/storm-united-online-fps-shows-first-real-gameplay-video-first-alpha-due-soon.4872 -[12]:http://superhotgame.com/ -[13]:http://steamcommunity.com/app/274190/discussions/0/540738051503306548/#c540738051518330743 -[14]:https://www.gamingonlinux.com/articles/category/17/articles/chasm-rpg-platformer-will-have-a-same-day-linux-release.4266 -[15]:https://www.gamingonlinux.com/articles/linux-port-of-platformer-giana-sisters-brought-inhouse-sequel-might-get-sameday-release.4913 -[16]:http://www.alonsomartin.mx/hfa/ -[17]:http://www.hottinroofgame.com/ -[18]:https://twitter.com/zachtronics/status/566016742825005057 -[19]:http://www.mightyno9.com/ -[20]:http://www.nightinthewoods.com/ -[21]:https://www.gamingonlinux.com/articles/category/17/articles/noct-a-fantastic-top-down-thermal-image-survival-horror-game.4783 -[22]:https://www.gamingonlinux.com/articles/puzzle-platformer-oddworld-new-n-tasty-will-release-for-linux-next-month.4836 -[23]:https://www.gamingonlinux.com/articles/new-trailer-for-platformer-red-goddesss-looks-really-good.4939 -[24]:https://www.gamingonlinux.com/articles/divinity-original-sin-is-pushing-ahead-for-the-linux-release.4938 -[25]:https://www.gamingonlinux.com/articles/pillars-of-eternity-the-rpg-aims-for-a-sameday-linux-release-on-march-26th.4834 -[26]:https://www.kickstarter.com/projects/webeharebrained/shadowrun-hong-kong -[27]:https://www.gamingonlinux.com/articles/the-banner-saga-rpg-looks-close-to-a-linux-version.4862 -[28]:https://www.gamingonlinux.com/articles/the-linux-port-of-age-of-wonders-iii-is-progressing-a-bit-too-explosive-right-now.4857 -[29]:https://www.gamingonlinux.com/articles/banished-survival-city-building-sim-is-being-ported-to-linux.4813 -[30]:https://www.gamingonlinux.com/articles/city-builder-game-cities-skylines-now-has-a-release-date.4954 -[31]:https://www.gamingonlinux.com/articles/clockwork-empires-still-pushing-towards-a-linux-version-suffering-delays.4734 -[32]:https://www.gamingonlinux.com/articles/category/17/articles/parkitect-what-roller-coaster-tycoon-should-have-grown-into.4528 -[33]:https://www.gamingonlinux.com/articles/mojangs-scrolls-now-has-an-experimental-linux-build.4450 -[34]:https://www.gamingonlinux.com/articles/space-pirates-and-zombies-2-reveals-the-zombies-in-a-brand-new-video.4759 -[35]:https://www.gamingonlinux.com/articles/terraria-officially-confirmed-to-be-in-development-for-linux-finally.4299 -[36]:https://www.gamingonlinux.com/articles/egosofts-x-rebirth-actively-being-ported-to-linux.4822 -[37]:https://www.gamingonlinux.com/articles/company-of-heroes-2-looks-like-it-is-heading-to-linux.4199 -[38]:https://www.gamingonlinux.com/articles/outlast-that-really-scary-game-looks-like-its-still-heading-to-linux.4896 -[39]:https://www.gamingonlinux.com/articles/shadow-warrior-looks-like-it-will-come-to-linux.4859 -[40]:https://www.gamingonlinux.com/articles/torchlight-ii-has-even-more-positive-signs-for-linux.4817 -[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ From d3e7a582e1d1754e84202a406b1a82e8926a9b18 Mon Sep 17 00:00:00 2001 From: haimingli Date: Sun, 15 Mar 2015 23:38:36 +0800 Subject: [PATCH 568/725] Update 20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md --- ...e who start writing kernel code get hired really quickly'.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md index c06b482252..2e71467581 100644 --- a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md +++ b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md @@ -1,4 +1,4 @@ -translating by haiming +translating by haimingfg Torvalds: 'People who start writing kernel code get hired really quickly' ================================================================================ From 957e248741acdac3755c473c3217402cd8fb21c1 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 15 Mar 2015 23:44:56 +0800 Subject: [PATCH 569/725] PUB:20141219 Google Cloud offers streamlined Ubuntu for Docker use @zpl1025 --- ...offers streamlined Ubuntu for Docker use.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) rename {translated/news => published}/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md (61%) diff --git a/translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md b/published/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md similarity index 61% rename from translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md rename to published/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md index ab0bdc3210..c79d6de837 100644 --- a/translated/news/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md +++ b/published/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md @@ -2,23 +2,17 @@ Google云服务为Docker应用提供简化版Ubuntu ================================================================================ > Ubuntu Core为运行容器提供了最小的轻量级Linux环境 -Google为自己的云服务采用了一个简化版的Canonical Ubuntu Linux发行版,优化来运行Docker和其他容器。 +Google为自己的云服务采用了一个简化版的Canonical Ubuntu Linux发行版,以优化运行Docker和其他容器。 -Ubuntu Core被设计成仅提供在云上运行Linux所必需的组件。它的一个[早期预览版][1],Canonical命名为“Snappy”,在上个星期发布了。这个新版本裁减了大量在普通Linux发行版中常见而在云应用中不实用的库和应用程序。 +Ubuntu Core被设计成仅提供在云上运行Linux所必需的组件。它发布了一个[早期预览版][1],Canonical命名其为“Snappy”。这个新版本裁减了大量在普通Linux发行版中常见而在云应用中不实用的库和应用程序。 -[ 通过这篇red-hot开源框架逐步指导文章[开始使用Docker][2] | 从[InfoWorld的技术观察博客][3]获取重要技术新闻的最新解读。 ] - -Google计算引擎(GCE)[加入了Microsoft Azure][4]来支持这个新的发行版。 +Google计算引擎(GCE)和Microsoft Azure[加入了][4]支持这个新的发行版的行列。 从Canonical了解到,Ubuntu Core将为用户提供一个部署Docker的简单方式,一个[日益精简的虚拟容器][4]允许用户快速启动工作负载并轻松地转移,甚至可以跨越不同的云服务提供商。 -Google是Docker和基于容器的虚拟化的热心支持者。在六月份,这家公司[用开源的方式发布了一个容器管理软件][5]:Kubernetes。 +Google是Docker和基于容器的虚拟化的热心支持者。在去年六月份,这家公司[用开源的方式发布了一个容器管理软件][5]:Kubernetes。 -Ubuntu Core在设计上类似于另一个Linux发行版,CoreOS,[发布于一年前][7]。 - -主要由两名前Rackspace工程师开发,[CoreOS][8]是一个轻量级Linux发行版,设计运行在集群中,被那些在网页上完成他们大部分或所有业务的公司所喜好的大规模环境。 - -CoreOS很快被许多云服务提供商采用,包括Microsoft Azure,Amazon网站服务,DigitalOcean以及Google计算引擎。 +Ubuntu Core在设计上类似于另一个[发布于一年前][7]的 Linux发行版 CoreOS。CoreOS 主要由两名前Rackspace工程师开发,[CoreOS][8]是一个轻量级Linux发行版,设计运行在集群中,被那些在网页上完成他们大部分或所有业务的公司所喜好的大规模环境。CoreOS很快被许多云服务提供商采用,包括Microsoft Azure,Amazon网站服务,DigitalOcean以及Google计算引擎。 如同CoreOS一样,Ubuntu Core提供了一个快速引擎来更新组件,减少系统管理员去手动处理的时间。 @@ -28,7 +22,7 @@ via: http://www.infoworld.com/article/2860401/cloud-computing/google-cloud-offer 作者:[Joab Jackson][a] 译者:[zpl1025](https://github.com/zpl1025) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a1afc414e34ec7876ba237d9534a2cdfc1722544 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 15 Mar 2015 23:50:50 +0800 Subject: [PATCH 570/725] PUB:20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux @zpl1025 --- ...to Leverage Critical Ghost Flaw in Linux.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) rename {translated/news => published}/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md (75%) diff --git a/translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md b/published/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md similarity index 75% rename from translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md rename to published/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md index 356fe136d2..181ef5922d 100644 --- a/translated/news/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md +++ b/published/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md @@ -1,24 +1,24 @@ -WordPress可以用来触发Linux上的Ghost缺陷 +WordPress 可以触发 Linux 上的 Ghost 缺陷 ----- *建议用户马上更新可用的补丁* ![WordPress validating pingback’s post URL](http://i1-news.softpedia-static.com/images/news2/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730-2.jpg) -**这个漏洞于本周由Qualys的安全研究员发现,并取了绰号叫[Ghost](1),可以利用WordPress或其他PHP应用来攻击网站服务器。** +**这个漏洞之前由Qualys的安全研究员发现,并取了绰号叫[Ghost](1),可以利用WordPress或其他PHP应用来攻击网站服务器。** -这个瑕疵是一个缓冲区溢出问题,可以被攻击者触发用来获取Linux主机的命令行执行权限。发生在glibc的“__nss_hostname_digits_dots()”函数中,它会被“gethostbyname()”函数用到。 +这个瑕疵是一个缓冲区溢出问题,可以被攻击者触发用来获取Linux主机的命令行执行权限。发生在glibc的“`__nss_hostname_digits_dots()`”函数中,它会被“gethostbyname()”函数用到。 -##PHP应用可以用来利用这个瑕疵 +###PHP应用可以用来利用这个瑕疵 Sucuri的Marc-Alexandre Montpas说之所以这个问题很重要是因为这些函数在大量软件和服务器系统使用。 -“说这是个严重问题的一个例子是WordPress本身:它使用一个叫wp_http_validate_url()的函数来验证每个pingback的发送URL,它是通过PHP应用的“gethostbyname()”函数替代来执行的”,他在周三的一篇博客文章里写到。 +“说这是个严重问题的一个例子是WordPress本身:它使用一个叫`wp_http_validate_url()`的函数来验证每个pingback的发送URL,它是通过PHP应用的“gethostbyname()”函数替代来执行的”,他在周三的一篇博客文章里写到。 攻击者可以用这种方式来引入一个设计用来触发服务器端漏洞的恶意URL,从而获得系统访问权限。 实际上,Trustwave的安全研究人员提供了[验证][2]代码,可以使用WordPress的pingback功能引起缓冲区溢出。 -##多个Linux发行版受到影响 +###多个Linux发行版受到影响 ghost漏洞存在于glibc 2.17以上版本中,发布于2013年5月21日。glibc当前版本是2.20,发布于2014年9月。 @@ -32,15 +32,13 @@ Linux上存在漏洞的应用包括clockdiff,ping和arping(在某些特定 -------------------------------------------------------------------------------- -via:http://news.softpedia.com/news/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730.shtml +via: http://news.softpedia.com/news/WordPress-Can-Be-Used-to-Leverage-Critical-Ghost-Flaw-in-Linux-471730.shtml 本文发布时间:30 Jan 2015, 17:36 GMT 作者:[Ionut Ilascu][a] - 译者:[zpl1025](https://github.com/zpl1025) - -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2f6b72e762580fe85540649bada67b8d544b653a Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 16 Mar 2015 00:18:56 +0800 Subject: [PATCH 571/725] PUB:20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wi-cuckoo 翻译的文章有一些小小的不足,请注意一下: 1、标点符号,请在翻译过程中变成中文的。 2、markdown 格式保留不动,比如你的译文中,把链接都给丢失了。 3、文章内的小标题不要忘记翻译了。 --- ...ilia-Romagna Is Switching To OpenOffice.md | 39 +++++++++++++++++++ ...ilia-Romagna Is Switching To OpenOffice.md | 38 ------------------ 2 files changed, 39 insertions(+), 38 deletions(-) create mode 100644 published/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md delete mode 100644 translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md diff --git a/published/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/published/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md new file mode 100644 index 0000000000..4ebb83401f --- /dev/null +++ b/published/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md @@ -0,0 +1,39 @@ +意大利艾米利亚-罗马涅大区正在切换到OpenOffice +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Turin_Open_Source.jpg) + +在拥抱开源的道路上,意大利似乎走在了最前面。我们已经知道,很多意大利的城市如[乌迪内][1],[都灵][2],[Todi和都灵][3]过去已经选择了[开源办公套件以取代微软的Office][4]。现在,位于意大利北部的[艾米利亚-罗马涅大区][5](位于意大利北部,是意大利20个大区之一)也将在下个月完成向[Apache OpenOffice][6]的过渡。 + +### 切换到 OpenOffice ### + +这次向OpenOffice的迁移将会在下个月完成,而且将会覆盖4200个计算机工作站,涉及到10个部门和5个代理机构。 而且,开源文档格式(ODF)也将成为默认的文档格式。向OpenOffice的过渡最初在2013年底被提出来,原本打算在2014年底完成。这次从商业办公产品改用OpenOffice,从授权费用来说,据信会[节约大概2 000 000欧元][7]。 + +为了使这次顺利搬家和方便内部操作,负责这次搬家的团队正在开发许多定制工具和插件。 + +本次项目的负责人,Giovanni Grazia对本次“搬家”充满激情,但同时他也做好了应对批评的准备: + +> “改用新的办公套件并不是一件容易完成的工作,我们借这次机会来拥护免费和开源的软件。一些地区的公务员表示高度支持,而另一些则感到厌烦,因为他们已经使用商业产品二十年了。为了处理任何在迁移中发生的问题,一个有着三个IT专家的五人支持团队正在一个部门接一个部门,逐渐地完成这次迁移。” + +### 祝愿 ### + +我希望其他的国家也能使用OpenOffice套件,祝愿所有迁移到开源软件的人或国家都顺利完成。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/ + +作者:[Abhishek][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://linux.cn/article-3853-1.html +[2]:http://linux.cn/article-3602-1.html +[3]:http://itsfoss.com/italian-cities-switch-libreoffice/ +[4]:http://itsfoss.com/best-free-open-source-alternatives-microsoft-office/ +[5]:http://en.wikipedia.org/wiki/Emilia-Romagna +[6]:https://www.openoffice.org/ +[7]:http://www.slwoods.co.uk/?p=2886 +[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ diff --git a/translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md deleted file mode 100644 index 0dfbfce001..0000000000 --- a/translated/news/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md +++ /dev/null @@ -1,38 +0,0 @@ -意大利Emilia-Romagna区正在切换到OpenOffice -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2014/08/Turin_Open_Source.jpg) - -在拥抱开源的道路上,意大利似乎走在了最前面.我们已经知道,很多意大利的城市如Udine,Turin,Todi和Turin过去已经选择了开源办公套件以取代微软的Office.现在,位于意大利北部的Emilia-Romagna区也将在下个月完成向Apache OpenOffice的过渡. - -### Switching to OpenOffice ### - -这次向OpenOffice的转变将会在下个月完成,而且将会覆盖4200个工作站,涉及到10个部门和5个代理部门. 而且,开源文档格式(ODF)也将成为默认的文档格式.向OpenOffice的过渡最初在2013年底被提出来,原本打算在2014年底完成.这次改用OpenOffice从专用办公产品认证费用来说,相信会节约大概2 000 000欧元. - -为了使这次搬家顺利,提高内部可操作性,许多定制工具和插件也正在被负责这次搬家的团队开发出来. - -本次项目的负责人,Giovanni Grazia对本次"搬家"充满激情,但同时他也会做好应对批评 -> "改用新的办公套件不是容易完成的工作,我们借这次机会来拥护免费和开源的软件.一些地区的公务员表示深深的支持,而令一些则感到厌烦, 因为他们已经使用专业产品二十年了.为了处理任何在转变中发生的问题,一个有五个支持人员的团队已经得到了三个IT专家的支持.一个部门接一个部门,逐渐地,我们将完成这次过渡.一步步的,改变正在发生." - -#### Best wishes #### - -我希望祝Grazia好运,其他的意大利辖区也会使用OpenOffice套件.也希望像法国这样的邻国也会加速拥抱开源的进程. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/udine-open-source/ -[2]:http://itsfoss.com/italian-city-turin-open-source/ -[3]:http://itsfoss.com/italian-cities-switch-libreoffice/ -[4]:http://itsfoss.com/best-free-open-source-alternatives-microsoft-office/ -[5]:http://en.wikipedia.org/wiki/Emilia-Romagna -[6]:https://www.openoffice.org/ -[7]:http://www.slwoods.co.uk/?p=2886 -[8]:http://itsfoss.com/french-city-toulouse-saved-1-million-euro-libreoffice/ From 13098dca89bd175032d016906e08f6bfdef55841 Mon Sep 17 00:00:00 2001 From: theo-l Date: Sun, 15 Mar 2015 21:00:06 -0300 Subject: [PATCH 572/725] translated --- ...ls' Command Interview Questions--Part 2.md | 33 ++----------------- 1 file changed, 3 insertions(+), 30 deletions(-) rename {sources => translated}/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md (63%) diff --git a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md b/translated/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md similarity index 63% rename from sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md rename to translated/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md index cade1ae602..f2cd020692 100644 --- a/sources/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md +++ b/translated/tech/20150309 10 Useful 'ls' Command Interview Questions--Part 2.md @@ -1,21 +1,16 @@ -10 Useful ‘ls’ Command Interview Questions – Part 2 10个有用的‘ls’命令面试问题-第二部分 ================================================================================ -Continuing the legacy of ls command here is the second interview article on Listing command. The first article of the series was highly appreciated by the Tecmint Community. If you’ve missed the first part of this series you may like to visit at: 这是关于文件列表命令的第二篇文章,继续探讨‘ls’命令的其他方面。该系列的第一篇文章收到了Tecmint社区的高度关注,如果你错过了该系列的第一部分,你可能会访问以下地址: - [15 Interview Questions on “ls” Command – Part 1][1] -This article is well presented in the manner that it gives deep insight of ls command with examples. We have taken extra care in the making of article so that it remains simple to understand yet serve the purpose to the fullest. 这篇文章通过样例来很好地展现‘ls’命令的深入应用,我们加倍小心地来写这篇文章来保持其简洁可理解性,同时又能提供最全面的服务。 ![10 Interview Questions on ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/ls-Command-Interview-Questions.jpg) 10 Interview Questions on ls Command -### 1. You are supposed to list the content of a directory in long list format, but not print the name of the author and group the file belongs. Also show the difference in output. ### ### 1. 假如你想要以长列表的形式列出目录中的内容,但是不打印文件创建者名称以及文件所属组。同时在输出中显示其不同之处。### -a. ls command listing the name of the files in long listing format when used with switch (-l). a. ls 命令在与‘-l’选项一起使用时会将文件以长列表格式输出。 # ls -l @@ -23,7 +18,6 @@ a. ls 命令在与‘-l’选项一起使用时会将文件以长列表格式输 ![List Files in- Long List Format](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-inLong-List-Format.gif) List Files in- Long List Format -b. ls command listing the name of the files in long listing format along with the name of the author file belongs, when used with switch (–author) along with switch (-l). b. ls 命令在与‘-l’和‘--author’一起使用时,会将文件以长列表格式输出并带有文件创建者的名称信息。 # ls -l --author @@ -31,7 +25,6 @@ b. ls 命令在与‘-l’和‘--author’一起使用时,会将文件以长 ![List Files By Author](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-By-Author.gif) List Files By Author -c. ls command listing the name of the files without the name of its owner, when used with switch (-g). c. ls 命令在与‘-g’选项 一起将会列出文件名但是不带属主名称。 # ls -g @@ -39,16 +32,14 @@ c. ls 命令在与‘-g’选项 一起将会列出文件名但是不带属主 ![List Files Without Printing Owner Name](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Printing-Author.gif) List Files Without Printing Owner Name -d. ls command listing the name of files in long listing format without the name of group it belongs, when used with switch (-G) along with switch (-l). d. ls 命令在与'-G'和‘-l’选项一起将会使用长列表格式列出文件名称带式不带文件所属组名称。 # ls -Gl ![List Files Without Printing Group](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Printing-Group.gif) List Files Without Printing Group -### 2. Print the size of files and folders in the current directory, in human readable format. How will you do this? ### ### 2. 使用用户友好的格式打印出当前目录中的文件以及文件夹的大小,你会如何做?### -Well we need to use switch -h (human-readable) along with switch (-l) and/or (-s) with the command ls to get the desired output. + 这里我们需要使用'-h'选项(人类可阅读的)同‘-l’或‘-s’选项与ls命令一起使用来得到想要的输出。 # ls -hl @@ -60,13 +51,10 @@ List Files in Human Readable Format ![List File Sizes in Long List Format](http://www.tecmint.com/wp-content/uploads/2015/03/List-File-Sizes-in-Readable-Format.gif) List File Sizes in Long List Format -**Note**: The option -h uses the power of 1024 (standard in computation) and output the size of files and folders in the units of K, M and G. **注意**: ‘-h’选项使用1024(计算机中的标准)的幂,文件或文件夹的大小分别以K,M和G作为输出单位。 -### 3. Well if switch (-h) output size in power of 1024, that is standard, What else power values are supported in ls command? ### ### 3. 既然‘-h’选项是使用1024的幂作为标准来输出大小,那么ls命令还支持其他的幂值呢?### -There exist a switch -si which is similar to switch -h. The only difference is switch -si uses power of 1000 unlike switch -h which uses the power of 1024. 存在一个选项 ‘-si’与选项‘-h’相似,不同之处在于前者以使用1000的幂,后者使用1024的幂。 # ls -si @@ -74,7 +62,6 @@ There exist a switch -si which is similar to switch -h. The only difference is s ![Supported Power Values of ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/ls-supported-power-values.gif) Supported Power Values of ls Command -It can also be used with switch -l to output the size of folder in the power of 1000, in long listing format. 所以'-si'也可以与‘-l’选项一起使用来按照1000的幂来输出文件夹的大小,并且以长列表格式显示。 # ls -si -l @@ -82,10 +69,8 @@ It can also be used with switch -l to output the size of folder in the power of ![List Files by Power Values](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-by-Power-Values.gif) List Files by Power Values -### 4. You are supposed to print the contents of a directory separated with comma. Is it possible? Can it be done in long listing format? ### ### 4. 假如要你使用逗号‘,’作为分隔符来打印一个目录中的内容,可以吗? 对于长列表形式也可行吗?### -Yup! Linux ls command can output the contents of a directory separated by comma when used with the switch (-m). Since this comma separated entries are filled horizontally, ls command can’t separate contents with comma when listing contents vertically. 当然!linux的ls命令当与其选项‘-m’一起使用时可以在打印目录内容时以逗号‘,’分割。由于逗号分割的内容是水平填充的,ls命令不能在垂直列出内容时使用逗号来分割内容。 # ls -m @@ -93,7 +78,6 @@ Yup! Linux ls command can output the contents of a directory separated by comma ![Print Contents of Directory by Comma](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Contents-of-Directory-by-Comma.gif) Print Contents of Directory by Comma -When used in long listing format, switch -m gets useless. 当使用长列表格式时,‘-m’选项就没有什么效果了。 # ls -ml @@ -101,10 +85,8 @@ When used in long listing format, switch -m gets useless. ![Listing Content Horizontally](http://www.tecmint.com/wp-content/uploads/2015/03/Listing-Content-Horizentally.gif) Listing Content Horizontally -### 5. If there any way to print the contents of a directory upside down? i.e., in reverse order. ### ### 5. 有办法将目录的内容逆序打印出来吗?### -Yeah! The above situation can easily be achieved using the switch -r. The switch ‘-r‘ reverse the order of output. It can also be used with switch -l (long listing format). 可以!上面的情形可以轻松地通过'-r'选项搞定,该选项将输出顺序倒置。这个选项也可以与‘-l’选项一起使用。 # ls -r @@ -117,20 +99,16 @@ List Content in Reverse Order ![Long List Content in Reverse Order](http://www.tecmint.com/wp-content/uploads/2015/03/Long-List-Content-in-Reverse-Order.gif) Long List Content in Reverse Order -### 6. You are given a situation to print the sub-directories recursively. How will you achieve this situation? Mind it only sub directories and no files. ### ### 6. 如果你被分配一个任务,来递归地打印各个子目录,你会如何应付?注意哟,只针对子目录而不是文件哦。### -Okay! That is pretty easy with the switch -R when used with command ls. It can further be grouped with other options like -l (long list) and -m (comma separated), etc. 小意思!使用“-R”选项就可以轻轻松松拿下,它也可以更进一步地与其他选项如‘-l’和‘-m’选项等组合使用。 # ls -R ![Print Sub Directories in Recursively](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Sub-Directories-in-Recursively.gif) Print Sub Directories in Recursively -### 7. How to sort the files based upon the size? ### ### 7. 如何按照文件大小对其进行排序?### -The Linux command line option -S when used with ls gives the desired output. To sort the files based upon size in descending order with the largest file listed at first and smallest at last. linux命令行选项'-S'赋予了ls命令这个超能力。按照文件大小从大到小的顺序排序: # ls -S @@ -138,7 +116,6 @@ linux命令行选项'-S'赋予了ls命令这个超能力。按照文件大小从 ![Sort Files with ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/Sort-Files-in-Linux.gif) Sort Files with ls Command -To sort the files based upon size in descending order with the smallest file listed at first and largest at last. 按照文件大小从小到大的顺序排序。 # ls -Sr @@ -146,9 +123,8 @@ To sort the files based upon size in descending order with the smallest file lis ![Sort Files in Descending Order](http://www.tecmint.com/wp-content/uploads/2015/03/Sort-Files-in-Descending-Order.gif) Sort Files in Descending Order -### 8. List the contents of a directory with no additional information appearing one file per line. ### ### 8. 列出目录中的内容按照一行一个文件并且不带额外信息的方式 ### -The switch -1 comes to rescue here. ls command with switch -1 output the contents of the directory with one file per line and no additional information. + 选项‘-l’在此可以解决这个问题,使用‘-l’选项来使用ls命令可以将目录中的内容按照一行一个文件并且不带额外信息的方式进行输出。 # ls -1 @@ -156,9 +132,8 @@ The switch -1 comes to rescue here. ls command with switch -1 output the content ![List Files Without Information](http://www.tecmint.com/wp-content/uploads/2015/03/List-Files-Without-Information.gif) List Files Without Information -### 9. You are given a situation in which you have to print the contents of a directory on standard output enclosed by double quotes. How will you do this? ### ### 9. 现在委派给你一个任务,你必须将目录中的内容输出到终端而且需要使用双引号引起来,你会如何做?### -There exist an option -Q (quote-name) which output the content of ls enclosed in double quotes. + 存在一个选项‘-Q’会将ls命令的输出内容用双引号引起来。 # ls -Q @@ -166,7 +141,6 @@ There exist an option -Q (quote-name) which output the content of ls enclosed in ![Print Files with Double Quotes](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Files-with-Double-Quotes.gif) Print Files with Double Quotes -### 10. You are working in a directory which contains lots of files and folders. You need to print the name of folders before directories. How will you get this? ### ### 10. 想象一下你正在与一个包含有很多文件和文件夹的目录打交道,你需要使目录名显示在文件名之前,你如何做?### # ls --group-directories-first @@ -174,7 +148,6 @@ Print Files with Double Quotes ![Print Directories First](http://www.tecmint.com/wp-content/uploads/2015/03/Print-Directories-First.gif) Print Directories First -That’s all for now. We will be coming up with the next part of this article series very soon. Till then stay tuned and connected to Tecmint. Do not forget to provide us with valuable feedback in the comment section below. Like and share us and help us get spread! 先点到为止,我们会马上提供该系列文章的下一部分。别换频道,关注Tecmint。 另外别忘了在下面的评论中提出你们宝贵的反馈信息,喜欢就分享,帮助我们得到更好的传播吧! -------------------------------------------------------------------------------- From 605067fea03b61377cdbe19fedcfbf625ad0141a Mon Sep 17 00:00:00 2001 From: theo-l Date: Sun, 15 Mar 2015 21:03:11 -0300 Subject: [PATCH 573/725] theo-l translating --- ...ications in a Linux System with Trickle.md | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md b/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md index 18607f7f96..ef1fee0680 100644 --- a/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md +++ b/sources/tech/20150302 How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle.md @@ -1,3 +1,5 @@ +theo-l translating + How to Limit the Network Bandwidth Used by Applications in a Linux System with Trickle ================================================================================ Have you ever encountered situations where one application dominated you all network bandwidth? If you have ever been in a situation where one application ate all your traffic, then you will value the role of the trickle bandwidth shaper application. Either you are a system admin or just a Linux user, you need to learn how to control the upload and download speeds for applications to make sure that your network bandwidth is not burned by a single application. @@ -109,17 +111,17 @@ We are using the freely-distributable Linux Fundamentals PDF file (available fro You can initially download this file to your current working directory with the following command: - # wget http://linux-training.be/files/books/LinuxFun.pdf + # wget http://linux-training.be/files/books/LinuxFun.pdf The syntax to upload a file to our FTP server without trickle is as follows: - # ncftpput -u username -p password 192.168.0.15 /remote_directory local-filename + # ncftpput -u username -p password 192.168.0.15 /remote_directory local-filename Where /remote_directory is the path of the upload directory relative to username’s home, and local-filename is a file in your current working directory. Specifically, without trickle we get a peak upload speed of 52.02 MB/s (please note that this is not the real average upload speed, but an instant starting peak), and the file gets uploaded almost instantly: - # ncftpput -u username -p password 192.168.0.15 /testdir LinuxFun.pdf + # ncftpput -u username -p password 192.168.0.15 /testdir LinuxFun.pdf Output: @@ -127,11 +129,11 @@ Output: With trickle, we will limit the upload transfer rate at 5 KB/s. Before uploading the file for the second time, we need to delete it from the destination directory; otherwise, ncftp will inform us that the file at the destination directory is the same that we are trying to upload, and will not perform the transfer: - # rm /absolute/path/to/destination/directory/LinuxFun.pdf + # rm /absolute/path/to/destination/directory/LinuxFun.pdf Then: - # trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf + # trickle -s -u 5 ncftpput -u username -p password 111.111.111.111 /testdir LinuxFun.pdf Output: @@ -143,13 +145,13 @@ In the example above, we can see that the average upload speed dropped to ~5 KB/ First, remember to delete the PDF from the original source directory: - # rm /absolute/path/to/source/directory/LinuxFun.pdf + # rm /absolute/path/to/source/directory/LinuxFun.pdf Please note that the following cases will download the remote file to the current directory in the client machine. This fact is indicated by the period (‘.‘) that appears after the IP address of the FTP server. Without trickle: - # ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf + # ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf Output: @@ -157,7 +159,7 @@ Output: With trickle, limiting the download speed at 20 KB/s: - # trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf + # trickle -s -d 30 ncftpget -u username -p password 111.111.111.111 . /testdir/LinuxFun.pdf Output: @@ -189,7 +191,7 @@ In this example we will use the freely-distributable “He is the gift” video, We will initially download this file to your current working directory with the following command: - # wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 + # wget http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 First off, we will start the trickled daemon with the command listed above: @@ -197,7 +199,7 @@ First off, we will start the trickled daemon with the command listed above: Without trickle: - # ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 + # ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 Output: @@ -205,7 +207,7 @@ Output: With trickle: - # trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 + # trickle ncftpput -u username -p password 192.168.0.15 /testdir 2014-00-1460-he-is-the-gift-360p-eng.mp4 Output: @@ -219,7 +221,7 @@ As in Example 2, we will be downloading the file to the current working director Without trickle: - # ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 + # ncftpget -u username -p password 192.168.0.15 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 Output: @@ -227,7 +229,7 @@ Output: With trickle: - # trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 + # trickle ncftpget -u username -p password 111.111.111.111 . /testdir/2014-00-1460-he-is-the-gift-360p-eng.mp4 Output: @@ -259,7 +261,7 @@ The following is a trickled.conf sample file in the CentOS 7 client (192.168.0.1 Priority = 1 Time-Smoothing = 0.1 Length-Smoothing = 2 - + [ftp] Priority = 2 Time-Smoothing = 1 @@ -293,4 +295,4 @@ via: http://www.tecmint.com/manage-and-limit-downloadupload-bandwidth-with-trick [3]:http://media2.ldscdn.org/assets/missionary/our-people-2014/2014-00-1460-he-is-the-gift-360p-eng.mp4 [4]:http://www.tecmint.com/10-wget-command-examples-in-linux/ [5]:http://www.tecmint.com/20-linux-yum-yellowdog-updater-modified-commands-for-package-mangement/ -[6]:http://www.tecmint.com/dpkg-command-examples/ \ No newline at end of file +[6]:http://www.tecmint.com/dpkg-command-examples/ From 66bf62dcdb4c69a310f439517dbe82124d906312 Mon Sep 17 00:00:00 2001 From: linuhap Date: Mon, 16 Mar 2015 09:32:45 +0800 Subject: [PATCH 574/725] translated by linuhap --- ...sed Install It In Ubuntu And Linux Mint.md | 50 ------------------- ...sed Install It In Ubuntu And Linux Mint.md | 50 +++++++++++++++++++ 2 files changed, 50 insertions(+), 50 deletions(-) delete mode 100644 sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md create mode 100644 translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md diff --git a/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md deleted file mode 100644 index 684d7e31dd..0000000000 --- a/sources/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md +++ /dev/null @@ -1,50 +0,0 @@ -linuhap translating -Pinta 1.6 Released! Install It In Ubuntu And Linux Mint -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Pinta_Ubuntu_Linux.jpeg) - -[Pinta][1] is a free and open source drawing application which is very popular among Linux users. It won’t be incorrect to term it as an **open source alternative to Microsoft Paint**. Pinta is available for all major platforms such as Linux, Windows and Mac OS X. - -While Gimp is popular as full featured image editing software, Pinta is more of a paint and drawing tool. I have used it extensively in my tutorials for drawing arrows and curves on the screenshots and I can say that it’s my favorite drawing app in Linux. - -### New features in Pinta 1.6 ### - -After over an year, Pinta has released version 1.6, fixing over 50 bugs and introducing some new features. New features are as following: - -- Line tool now supports drawing curves and arrows -- Shapes can be edited even after being drawn -- All shape tools now support drawing dashed lines -- All selection tools now support the Union, Exclude, Xor, and Intersection modes -- Add-in manager now consists of ‘add ins’ -- New options in command line usage - -New version also fixes the annoying bug where you [cannot open a file with Pinta in right click menu option][2]. You can read all the changes in the [release note][3]. - -### Install Pinta 1.6 in Ubuntu and Linux Mint ### - -Pinta 1.5 is available in Ubuntu 14.04, 14.10, Linux Mint 17, elementary OS. If you want to install the latest version 1.6, you can use the official PPA from Pinta team. Don’t worry if you have Pinta 1.5 installed already. Installing it again will upgrade the version. - -Open a terminal and use the following commands: - - sudo add-apt-repository ppa:pinta-maintainers/pinta-stable - sudo apt-get update - sudo apt-get install pinta - -To download the source code or to get the installation files for Windows and Mac OS X, check the [download page of Pinta][4]. In a related post, you can also check out [best photo applications for Linux][5]. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/pinta-1-6-ubuntu-linux-mint/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://pinta-project.com/ -[2]:http://itsfoss.com/add-application-list-open-applications-ubuntu-1310/ -[3]:http://pinta-project.com/releases/1-6 -[4]:http://pinta-project.com/releases -[5]:http://itsfoss.com/image-applications-ubuntu-linux/ diff --git a/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md new file mode 100644 index 0000000000..6c0ee2740c --- /dev/null +++ b/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md @@ -0,0 +1,50 @@ +Pinta 1.6发布了!在 Ubuntu 和 Linux Mint 上安装Pinta +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Pinta_Ubuntu_Linux.jpeg) + + +[Pinta][1] 是一款免费开源的绘图应用软件,它在Linux用户中很受欢迎。你也可以把它看作是**开源的微软画图软件的替代品**。Pinta 可以在很多平台上使用,如 Linux,Windows 以及 Mac OS X。 + +Gimp 作为全功能图像编辑软件而流行,相比Pinta则单纯是一种绘图工具。我常用它在我的截图上画箭头和曲线,而且我可以说这是我在 Linux 上最喜欢的绘图应用软件。 + +### Pinta 1.6 的新功能### + +经一年之后,Pinta发布了1.6版本,修复了50个漏洞并且加入了一些新功能。加入的新功能如下: + +- 线条工具现在支持绘制曲线和箭头 +- 绘制好的图形可以被编辑 +- 所有的图形工具现在支持绘制虚线 +- 所有的选择工具现在支持并集,排除,异或和交集模式 +- 插件可通过插件管理器安装 +- 命令行中加入新选项 + +新版本同时也修复了一个很烦人的漏洞——右键文件,[在打开方式中使用Pinta不能打开文件][2]。你可以在[发布说明][3]阅读所有的改变。 + +### 在 Ubuntu 和 Linux Mint 中安装 Pinta 1.6### + +Pinta 1.5 可以在 Ubuntu 14.04,14.10,Linux Mint 17 和 elementary OS 中使用。如果你想安装最新的1.6版本,你可以使用 Pinta 团队的官方PPA源。如果你已经安装了 Pinta 1.5 也不必担心。再安装一次将会使版本升级。 + +打开终端并使用以下命令: + + sudo add-apt-repository ppa:pinta-maintainers/pinta-stable + sudo apt-get update + sudo apt-get install pinta + +下载源代码或者获取 Windows 和 Mac OS X 的安装文件,请点击[Pinta下载页面][4]。在如下这篇相关文章中,你也可以选出[Linux中最好的照片应用软件][5]。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/pinta-1-6-ubuntu-linux-mint/ + +作者:[Abhishek][a] +译者:[linuhap](https://github.com/linuhap) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://pinta-project.com/ +[2]:http://itsfoss.com/add-application-list-open-applications-ubuntu-1310/ +[3]:http://pinta-project.com/releases/1-6 +[4]:http://pinta-project.com/releases +[5]:http://itsfoss.com/image-applications-ubuntu-linux/ \ No newline at end of file From 34071b3b6b4dcce1815f1f1fd083148c777af598 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 16 Mar 2015 11:21:09 +0800 Subject: [PATCH 575/725] Finish the translation by ZTinoZ --- ...15 Basic 'ls' Command Examples in Linux.md | 109 +++++++++--------- 1 file changed, 54 insertions(+), 55 deletions(-) rename {sources => translated}/tech/20150309 15 Basic 'ls' Command Examples in Linux.md (73%) diff --git a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md b/translated/tech/20150309 15 Basic 'ls' Command Examples in Linux.md similarity index 73% rename from sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md rename to translated/tech/20150309 15 Basic 'ls' Command Examples in Linux.md index c2ec2532f0..31fdefd736 100644 --- a/sources/tech/20150309 15 Basic 'ls' Command Examples in Linux.md +++ b/translated/tech/20150309 15 Basic 'ls' Command Examples in Linux.md @@ -1,26 +1,25 @@ -Translating by ZTinoZ -15 Basic ‘ls’ Command Examples in Linux +Linux中的15个基本‘ls’命令示例 ================================================================================ -ls command is one of the most frequently used command in Linux. I believe ls command is the first command you may use when you get into the command prompt of Linux Box. We use ls command daily basis and frequently even though we may not aware and never use all the option available. In this article, we’ll be discussing basic ls command where we have tried to cover as much parameters as possible. +ls命令是Linux系统中最被频繁使用的命令之一,我相信ls命令一定是你进入一台Linux系统的电脑打开命令提示符后第一个使用的命令。我们每天都在频繁地使用ls命令即使我们可能没有意识也从来用不到所以可用的选项。本文中,我们将讨论下一些基本的ls命令并且覆盖尽可能多的有关参数来讲解。 ![Linux ls Command](http://www.tecmint.com/wp-content/uploads/2012/08/Linux-ls-Commands.png) -Linux ls Command +Linux的ls命令 -### 1. List Files using ls with no option ### +### 1. 不带任何选项列出文件 ### -ls with no option list files and directories in bare format where we won’t be able to view details like file types, size, modified date and time, permission and links etc. +不带选项的ls命令来光秃秃地列出文件和目录,我们是不能看到像文件类型、大小、修改日期和时间、权限以及链接这样具体的信息的。 # ls - + 0001.pcap Desktop Downloads index.html install.log.syslog Pictures Templates anaconda-ks.cfg Documents fbcmd_update.php install.log Music Public Videos -### 2 List Files With option –l ### +### 2 带–l选项列出文件列表 ### -Here, ls -l (-l is character not one) shows file or directory, size, modified date and time, file or folder name and owner of file and it’s permission. +你看,ls -l(-l是字母不是“1”)就能展示出是文件还是目录,它的大小、修改日期和时间、文件或目录的名字以及文件的属主和它的权限。 # ls -l - + total 176 -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg @@ -37,12 +36,12 @@ Here, ls -l (-l is character not one) shows file or directory, size, modified da drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Templates drwxr-xr-x. 2 root root 4096 Jul 31 02:48 Videos -### 3. View Hidden Files ### +### 3. 浏览隐藏文件 ### -List all files including hidden file starting with ‘.‘. +列出所有文件包括以‘.’开头的隐藏文件。 # ls -a - + . .bashrc Documents .gconfd install.log .nautilus .pulse-cookie .. .cache Downloads .gnome2 install.log.syslog .netstat.swp .recently-used.xbel 0001.pcap .config .elinks .gnome2_private .kde .opera .spice-vdagent @@ -51,12 +50,12 @@ List all files including hidden file starting with ‘.‘. .bash_logout Desktop fbcmd_update.php .ICEauthority .mozilla Public Videos .bash_profile .digrc .gconf index.html Music .pulse .wireshark -### 4. List Files with Human Readable Format with option -lh ### +### 4. 用-lh选项来以人类可读方式列出文件 ### -With combination of -lh option, shows sizes in human readable format. +用-lh组合选项,以人类可读方式来显示大小。 # ls -lh - + total 176K -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -rw-------. 1 root root 1.6K Jul 31 02:17 anaconda-ks.cfg @@ -73,55 +72,55 @@ With combination of -lh option, shows sizes in human readable format. drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Templates drwxr-xr-x. 2 root root 4.0K Jul 31 02:48 Videos -### 5. List Files and Directories with ‘/’ Character at the end ### +### 5. 以尾部以‘/’字符结尾的方式列出文件和目录 ### Using -F option with ls command, will add the ‘/’ Character at the end each directory. # ls -F - + 0001.pcap Desktop/ Downloads/ index.html install.log.syslog Pictures/ Templates/ anaconda-ks.cfg Documents/ fbcmd_update.php install.log Music/ Public/ Videos/ -### 6. List Files in Reverse Order ### +### 6. 倒序列出文件 ### -The following command with ls -r option display files and directories in reverse order. +ls -r选项能以倒序方式显示文件和目录。 # ls -r - + Videos Public Music install.log fbcmd_update.php Documents anaconda-ks.cfg Templates Pictures install.log.syslog index.html Downloads Desktop 0001.pcap -### 7. Recursively list Sub-Directories ### +### 7. 递归列出子目录 ### -ls -R option will list very long listing directory trees. See an example of output of the command. +ls -R选项能列出非常长的目录树,来看看示例输出: # ls -R - + total 1384 -rw-------. 1 root root 33408 Aug 8 17:25 anaconda.log -rw-------. 1 root root 30508 Aug 8 17:25 anaconda.program.log - + ./httpd: total 132 -rw-r--r-- 1 root root 0 Aug 19 03:14 access_log -rw-r--r--. 1 root root 61916 Aug 10 17:55 access_log-20120812 - + ./lighttpd: total 68 -rw-r--r-- 1 lighttpd lighttpd 7858 Aug 21 15:26 access.log -rw-r--r--. 1 lighttpd lighttpd 37531 Aug 17 18:21 access.log-20120819 - + ./nginx: total 12 -rw-r--r--. 1 root root 0 Aug 12 03:17 access.log -rw-r--r--. 1 root root 390 Aug 12 03:17 access.log-20120812.gz -### 8. Reverse Output Order ### +### 8. 反向输出次序 ### -With combination of -ltr will shows latest modification file or directory date as last. +带-ltr组合选项能以文件或目录的最新修改时间的次序来显示它们。 # ls -ltr - + total 176 -rw-r--r--. 1 root root 11439 Jul 31 02:13 install.log.syslog -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log @@ -138,12 +137,12 @@ With combination of -ltr will shows latest modification file or directory date a drwxr-xr-x. 4 root root 4096 Aug 16 02:55 Downloads -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -### 9. Sort Files by File Size ### +### 9. 按文件大小排序 ### -With combination of -lS displays file size in order, will display big in size first. +带-lS组合选项能按文件从大到小的次序显示。 # ls -lS - + total 176 -rw-r--r--. 1 root root 48867 Jul 31 02:17 install.log -rw-r--r--. 1 root root 46701 Jul 31 09:58 index.html @@ -160,22 +159,22 @@ With combination of -lS displays file size in order, will display big in size fi -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -### 10. Display Inode number of File or Directory ### +### 10. 显示文件或目录的索引节点数 ### -We can see some number printed before file / directory name. With -i options list file / directory with inode number. +我们有时候可以看到一些数字打印在文件或目录名之前,带-i选项就能列出文件或目录的索引节点数。 # ls -i - + 20112 0001.pcap 23610 Documents 23793 index.html 23611 Music 23597 Templates 23564 anaconda-ks.cfg 23595 Downloads 22 install.log 23612 Pictures 23613 Videos 23594 Desktop 23585 fbcmd_update.php 35 install.log.syslog 23601 Public -### 11. Shows version of ls command ### +### 11. 显示ls命令的版本 ### -Check version of ls command. +查看ls命令的版本。 # ls --version - + ls (GNU coreutils) 8.4 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . @@ -183,17 +182,17 @@ Check version of ls command. There is NO WARRANTY, to the extent permitted by law. Written by Richard M. Stallman and David MacKenzie. -### 12. Show Help Page ### +### 12. 显示帮助页面 ### -List help page of ls command with their option. +列出ls命令的选项帮助页面。 # ls --help - + Usage: ls [OPTION]... [FILE]... -### 13. List Directory Information ### +### 13. 列出目录信息 ### -With ls -l command list files under directory /tmp. Wherein with -ld parameters displays information of /tmp directory. +用ls -l命令列出/tmp目录下的文件,其中-ld参数可以显示/tmp目录的信息。 # ls -l /tmp total 408 @@ -210,15 +209,15 @@ With ls -l command list files under directory /tmp. Wherein with -ld parameters ---------- # ls -ld /tmp/ - + drwxrwxrwt. 13 root root 4096 Aug 21 12:48 /tmp/ -### 14. Display UID and GID of Files ### +### 14. 显示文件的UID和GID ### -To display UID and GID of files and directories. use option -n with ls command. +用ls -n命令来显示文件和目录的UID(译者注:userid,用户ID)和GID(译者注:groupid,组ID)。 # ls -n - + total 36 drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Downloads drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Music @@ -226,16 +225,16 @@ To display UID and GID of files and directories. use option -n with ls command. -rw-rw-r--. 1 500 500 12 Aug 21 13:06 tmp.txt drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Videos -### 15. ls command and it’s Aliases ### +### 15. ls命令和它的别名功能 ### -We have made alias for ls command, when we execute ls command it’ll take -l option by default and display long listing as mentioned earlier. +我们给ls命令设置过别名之后,当我们执行ls命令的时候它会默认执行-l选项并且像上文提到的那样显示长列表。 # alias ls="ls -l" -Note: We can see number of alias available in your system with below alias command and same can be unalias as shown below example. +注意:我们可以通过不加任何参数的alias命令来看到目前系统中可用的所有alias设置,当然它们同时也可以unalias。 # alias - + alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' @@ -244,18 +243,18 @@ Note: We can see number of alias available in your system with below alias comma alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' -To remove an alias previously defined, just use the unalias command. +删除一项之前定义的alias设置,只需用unalias命令即可。 # unalias ls -In our next article we’ll cover up more or advanced ls command with their examples. If we’ve missed anything in the list, please update us via comment section. +下篇文章我们将讨论更多更高级的ls命令以及示例,如果我们在本文有遗漏了任何东西,请通过评论让我们获悉。 -------------------------------------------------------------------------------- via: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ 作者:[Ravi Saive][a] -译者:[译者ID](https://github.com/译者ID) +译者:[ZTinoZ](https://github.com/ZTinoZ) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From b7eab74344c4b8245755825ceb55c8ef0437284a Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 16 Mar 2015 13:56:17 +0800 Subject: [PATCH 576/725] Translating by ZTinoZ --- ...KVM Virtual Environment using Commandline Tools in Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index dcd3fcf919..19cddfb274 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -1,3 +1,4 @@ +Translating by ZTinoZ How to Manage KVM Virtual Environment using Commandline Tools in Linux ================================================================================ In this 4th part of our [KVM series][1], we are discussing KVM environment management using CLI. We use ‘virt-install’ CL tool to create and configure virtual machines, virsh CL tool to create and configure storage pools and qemu-img CL tool to create and manage disk images. @@ -149,4 +150,4 @@ via: http://www.tecmint.com/kvm-management-tools-to-manage-virtual-machines/ [a]:http://www.tecmint.com/author/dos2009/ [1]:http://www.tecmint.com/install-and-configure-kvm-in-linux/ [2]:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Getting_Started_Guide/index.html -[3]:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/index.html \ No newline at end of file +[3]:https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/index.html From 2f69722ec28b4ecdaa62fafbe5c5f3dd6af172e8 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 16 Mar 2015 14:23:43 +0800 Subject: [PATCH 577/725] Translating by ZTinoZ --- ...rtual Environment using Commandline Tools in Linux.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index 19cddfb274..e3da1ec917 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -1,7 +1,6 @@ -Translating by ZTinoZ -How to Manage KVM Virtual Environment using Commandline Tools in Linux +如何在Linux中用命令行工具管理KVM虚拟环境 ================================================================================ -In this 4th part of our [KVM series][1], we are discussing KVM environment management using CLI. We use ‘virt-install’ CL tool to create and configure virtual machines, virsh CL tool to create and configure storage pools and qemu-img CL tool to create and manage disk images. +在我们[KVM系列专题][1]的第四部分,我们将会一起讨论下命令行界面下来管理KVM环境。We use ‘virt-install’ CL tool to create and configure virtual machines, virsh CL tool to create and configure storage pools and qemu-img CL tool to create and manage disk images. ![KVM Management in Linux](http://www.tecmint.com/wp-content/uploads/2015/02/KVM-Management-in-Linux.jpg) KVM Management in Linux @@ -130,7 +129,7 @@ Booting Virtual Machine ![Installation of Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Installation-of-Virtual-Machine.jpeg) Installation of Virtual Machine -### Conclusion ### +### 结论 ### This is the latest part of our KVM tutorial, we haven’t covered everything of course. It a shot to scratch the KVM environment so its your turn to search and keep hands dirty using this nice resources. @@ -142,7 +141,7 @@ This is the latest part of our KVM tutorial, we haven’t covered everything of via: http://www.tecmint.com/kvm-management-tools-to-manage-virtual-machines/ 作者:[Mohammad Dosoukey][a] -译者:[译者ID](https://github.com/译者ID) +译者:[ZTinoZ](https://github.com/ZTinoZ) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7f0e851449ac1475d5065987eb00b544df71530b Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 16 Mar 2015 17:08:36 +0800 Subject: [PATCH 578/725] =?UTF-8?q?20150316-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...d Line Tips and Tricks in Linux--Part 1.md | 115 ++++++++++++++ ...Command Line Using 'Speedtest-CLI' Tool.md | 132 +++++++++++++++ ...m the command line on Linux with Alpine.md | 103 ++++++++++++ ...16 Install Mate desktop in FreeBSD 10.1.md | 61 +++++++ ...n local time and UNIX timestamp in Perl.md | 61 +++++++ ...temd Boot Process a Close Look in Linux.md | 150 ++++++++++++++++++ 6 files changed, 622 insertions(+) create mode 100644 sources/tech/20150316 5 Interesting Command Line Tips and Tricks in Linux--Part 1.md create mode 100644 sources/tech/20150316 How to Test Your Internet Speed Bidirectionally from Command Line Using 'Speedtest-CLI' Tool.md create mode 100644 sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md create mode 100644 sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md create mode 100644 sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md create mode 100644 sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md diff --git a/sources/tech/20150316 5 Interesting Command Line Tips and Tricks in Linux--Part 1.md b/sources/tech/20150316 5 Interesting Command Line Tips and Tricks in Linux--Part 1.md new file mode 100644 index 0000000000..352fa2816c --- /dev/null +++ b/sources/tech/20150316 5 Interesting Command Line Tips and Tricks in Linux--Part 1.md @@ -0,0 +1,115 @@ +5 Interesting Command Line Tips and Tricks in Linux – Part 1 +================================================================================ +Are you making most out of the Linux? There are lots of helpful features which appears to be Tips and Tricks for many of Linux Users. Sometimes Tips and Tricks become the need. It helps you get productive with the same set of commands yet with enhanced functionality. + +![5 Command Line Tips and Tricks](http://www.tecmint.com/wp-content/uploads/2015/03/5-Command-Line-Tips.jpg) +5 Command Line Tips and Tricks + +Here we are starting a new series, where we will be writing some tips and tricks and will try to yield as more as we can in small time. + +### 1. To audit the commands we’d run in past, we use [history command][1]. Here is a sample output of history command. ### + + # history + +![history command example](http://www.tecmint.com/wp-content/uploads/2015/03/history-command.gif) +history command example + +Obvious from output, the history command do not output the time stamp with the log of last executed commands. Any solution for this? Yeah! Run the below command. + + # HISTTIMEFORMAT="%d/%m/%y %T " + # history + +If you want to permanently append this change, add the below line to `~/.bashrc`. + + export HISTTIMEFORMAT="%d/%m/%y %T " + +and then, from terminal run, + + # source ~/.bashrc + +Explanation of commands and switches. + +- history – GNU History Library +- HISTIMEFORMAT – Environmental Variable +- %d – Day +- %m – Month +- %y – Year +- %T – Time Stamp +- source – in short send the contents of file to shell +- .bashrc – is a shell script that BASH runs whenever it is started interactively. + +![history Command Logs](http://www.tecmint.com/wp-content/uploads/2015/03/History-Command-Logs.gif) +history Command Logs + +### 2. The next gem in the list is – how to check disk write speed? Well one liner dd command script serves the purpose. ### + + # dd if=/dev/zero of=/tmp/output.img bs=8k count=256k conv=fdatasync; rm -rf /tmp/output.img + +![dd Command Example](http://www.tecmint.com/wp-content/uploads/2015/03/dd-Command-Example.gif) +dd Command Example + +Explanation of commands and switches. + +- dd – Convert and Copy a file +- if=/dev/zero – Read the file and not stdin +- of=/tmp/output.img – Write to file and not stdout +- bs – Read and Write maximum upto M bytes, at one time +- count – Copy N input block +- conv – Convert the file as per comma separated symbol list. +- rm – Removes files and folder +- -rf – (-r) removes directories and contents recursively and (-f) Force the removal without prompt. + +### 3. How will you check the top six files that are eating out your space? A simple one liner script made from [du command][2], which is primarily used as file space usages. ### + + # du -hsx * | sort -rh | head -6 + +![Check Disk Space Usage](http://www.tecmint.com/wp-content/uploads/2015/03/check-disk-space-usage.gif) +Check Disk Space Usage + +Explanation of commands and switches. + +- du – Estimate file space usages +- -hsx – (-h) Human Readable Format, (-s) Summaries Output, (-x) One File Format, skip directories on other file format. +- sort – Sort text file lines +- -rf – (-r) Reverse the result of comparison, (-f) Ignore case +- head – output first n lines of file. + +### 4. The next step involves statistics in terminal of a file of every kind. We can output the statistics related to a file with the help of stat (output file/fileSystem status) command. ### + + # stat filename_ext (viz., stat abc.pdf) + +![Check File Statistics](http://www.tecmint.com/wp-content/uploads/2015/03/Check-File-Statistics.gif) +Check File Statistics + +### 5. The next and last but not the least, this one line script is for those, who are newbies. If you are an experienced user you probably don’t need it, unless you want some fun out of it. Well newbies are Linux-command-line phobic and the below one liner will generate random man pages. The benefit is as a newbie you always get something to learn and never get bored. ### + + # man $(ls /bin | shuf | head -1) + +![Generate Random Man Pages](http://www.tecmint.com/wp-content/uploads/2015/03/Generate-Random-Man-Pages.gif) +Generate Random Man Pages + +Explanation of commands and switches. + +- man – Linux Man pages +- ls – Linux Listing Commands +- /bin – System Binary file Location +- shuf – Generate Random Permutation +- head – Output first n line of file. + +That’s all for now. If you know any such tips and tricks you may share with us and we will post the same in your words on our reputed Tecmint.com website. + +If you want to share any tips and tricks that you cannot make into article you may share it at tecmint[dot]com[at]gmail[dot]com and we will include it in our article. Don’t forget to provide us with your valuable feedback in the comments below. Keep connected. Like and share us and help us get spread. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/5-linux-command-line-tricks/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://www.tecmint.com/history-command-examples/ +[2]:http://www.tecmint.com/check-linux-disk-usage-of-files-and-directories/ \ No newline at end of file diff --git a/sources/tech/20150316 How to Test Your Internet Speed Bidirectionally from Command Line Using 'Speedtest-CLI' Tool.md b/sources/tech/20150316 How to Test Your Internet Speed Bidirectionally from Command Line Using 'Speedtest-CLI' Tool.md new file mode 100644 index 0000000000..a2e5ebc1d8 --- /dev/null +++ b/sources/tech/20150316 How to Test Your Internet Speed Bidirectionally from Command Line Using 'Speedtest-CLI' Tool.md @@ -0,0 +1,132 @@ +How to Test Your Internet Speed Bidirectionally from Command Line Using ‘Speedtest-CLI’ Tool +================================================================================ +We always need to check the speed of the Internet connection at home and office. What we do for this? Go to websites like Speedtest.net and begin test. It loads JavaScript in the web browser and then select best server based upon ping and output the result. It also uses a Flash player to produce graphical results. + +What about headless server, where isn’t any web based browser and the main point is, most of the servers are headless. The another bottleneck of such web browser based speed testing is that, you can’t schedule the speed testing at regular interval. Here comes an application “Speedtest-cli” that removes such bottlenecks and let you test the speed of Internet connection from command line. + +#### What is Speedtest-cli #### + +The application is basically a script developed in Python programming Language. It measures Internet Bandwidth speed bidirectionally. It used speedtest.net infrastructure to measure the speed. Speedtest-cli is able to list server based upon physical distance, test against specific server, and gives you URL to share the result of your internet speed test. + +To install latest speedtest-cli tool in Linux systems, you must have Python 2.4-3.4 or higher version installed on the system. + +### Install speedtest-cli in Linux ### + +There are two ways to install speedtest-cli tool. The first method involves the use of `python-pip` package while the second method is to download the Python script, make it executable and run, here I will cover both ways…. + +#### Install speedtest-cli Using pythin-pip #### + +First you need to install `python-pip` package, then afterwards you can install the speedtest-cli tool using pip command as shown below. + + $ sudo apt-get install python-pip + $ sudo pip install speedtest-cli + +To upgrade speedtest-cli, at later stage, use. + + $ sudo pip install speedtest-cli --upgrade + +#### Install speedtest-cli Using Python Script #### + +First download the python script from github using wget command, unpack the downloaded file (master.zip) and extract it.. + + $ wget https://github.com/sivel/speedtest-cli/archive/master.zip + $ unzip master.zip + +After extracting the file, go to the extracted directory `speedtest-cli-master` and make the script file executable. + + $ cd speedtest-cli-master/ + $ chmod 755 speedtest_cli.py + +Next, move the executable to `/usr/bin` folder, so that you don’t need to type the full path everytime. + + $ sudo mv speedtest_cli.py /usr/bin/ + +### Testing Internet Connection Speed with speedtest-cli ### + +**1. To test Download and Upload speed of your internet connection, run the `speedtest-cli` command without any argument as shown below.** + + $ speedtest_cli.py + +![Test Download Upload Speed in Linux](http://www.tecmint.com/wp-content/uploads/2015/03/Test-Download-Upload-Speed-in-Linux1.png) +Test Download Upload Speed in Linux + +**2. To check the speed result in bytes in place of bits.** + + $ speedtest_cli.py --bytes + +![Test Internet Speed in Bytes](http://www.tecmint.com/wp-content/uploads/2015/03/Test-Speed-in-Bytes.png) +Test Internet Speed in Bytes + +**3. Share your bandwidth speed with your friends or family. You are provided with a link that can be used to download an image.** + +![Share Internet Speed Results](http://www.tecmint.com/wp-content/uploads/2015/03/Share-Internet-Speed-Results.png) +Share Internet Speed Results + +The following picture is a sample speed test result generated using above command. + +![Speed Test Results](http://www.tecmint.com/wp-content/uploads/2015/03/Speed-Test-Results.png) +Speed Test Results + +**4. Don’t need any additional information other than Ping, Download and upload?** + + $ speedtest_cli.py --simple + +![Test Ping Download Upload Speed](http://www.tecmint.com/wp-content/uploads/2015/03/Test-Ping-Download-Upload-Speed1.png) +Test Ping Download Upload Speed + +**5. List the `speedtest.net` server based upon physical distance. The distance in km is mentioned.** + + $ speedtest_cli.py --list + +![Check Speedtest.net Servers](http://www.tecmint.com/wp-content/uploads/2015/03/Check-Speedtest-Servers.png) +Check Speedtest.net Servers + +**6. The last stage generated a huge list of servers sorted on the basis of distance. How to get desired output? Say I only want to see the speedtest.net server located in Mumbai (India).** + + $ speedtest_cli.py --list | grep -i Mumbai + +![Check Nearest Server](http://www.tecmint.com/wp-content/uploads/2015/03/Check-Nearest-Server.png) +Check Nearest Server + +**7. Test connection speed against a specific server. Use Server Id generated in example 5 and example 6 in above.** + + $ speedtest_cli.py --server [server ID] + $ speedtest_cli.py --server [5060] ## Here server ID 5060 is used in the example. + +![Test Connection Against Server](http://www.tecmint.com/wp-content/uploads/2015/03/Test-Connection-Against-Server.png) +Test Connection Against Server + +**8. To check the version number and help of `speedtest-cli` tool.** + + $ speedtest_cli.py --version + +![Check SpeedCli Version](http://www.tecmint.com/wp-content/uploads/2015/03/Check-SpeedCLi-Version.png) +Check SpeedCli Version + + $ speedtest_cli.py --help + +![SpeedCli Help](http://www.tecmint.com/wp-content/uploads/2015/03/SpeedCli-Help.png) +SpeedCli Help + +**Note:** Latency reported by tool is not its goal and one should not rely on it. The relative latency values output is responsible for server selected to be tested against. CPU and Memory capacity will influence the result to certain extent. + +### Conclusion ### + +The tool is must for system administrators and developers. A simple script which runs without any issue. I must say that the application is wonderful, lightweight and do what it promises. I disliked Speedtest.net for the reason it was using flash, but speedtest-cli gave me a reason to love them. + +speedtest_cli is a third party application and should not be used to automatically record the bandwidth speed. Speedtest.net is used by millions of users and it is a good idea to [Set Your Own Speedtest Mini Server][1]. + +That’s all for now, till then stay tuned and connected to Tecmint. Don’t forget to give your valuable feedback in the comments below. Like and share us and help us get spread. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/check-internet-speed-from-command-line-in-linux/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://www.tecmint.com/speedtest-mini-server-to-test-bandwidth-speed/ \ No newline at end of file diff --git a/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md b/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md new file mode 100644 index 0000000000..d62533381f --- /dev/null +++ b/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md @@ -0,0 +1,103 @@ +How to access Gmail from the command line on Linux with Alpine +================================================================================ +If you are a command-line lover, I am sure that you welcome with open arms any tool that allows you to perform at least one of your daily tasks using that powerful work environment, e.g., from [scheduling appointments][1] and [managing finances][2] to accessing [Facebook][3] and [Twitter][4]. + +In this post I will show you yet another pretty neat use case of Linux command-line: **accessing Google's Gmail service**. To do so, we are going to use Alpine, a versatile ncurses-based, command-line email client (not to be confused with Alpine Linux). We will configure Gmail's IMAP and SMTP settings in Alpine to receive and send email messages via Google mail servers in a terminal environment. At the end of this tutorial, you will realize that it will only take a few minimum steps to use any other mail servers in Alpine. + +Granted there are already outstanding GUI-based email clients such as Thunderbird, Evolution or even web interface. So why would anyone be interested in using a command-line email client to access Gmail? The answer is simple. You need to get something done quickly and want to avoid using system resources unnecessarily. Or you are accessing a minimal headless server that does not have the X server installed. Or the X server on your desktop crashed, and you need to send emails urgently before fixing it. In all these situations Alpine can come in handy and get you going in no time. + +Beyond simple editing, sending and receiving of text-based email messages, Alpine is able to encrypt, decrypt, and digitally sign email messages, and integrate seamlessly with TLS. + +### Installing Alpine on Linux ### + +In Red Hat-based distributions, install Alpine as follows. Note that on RHEL/CentOS, you need to enable [EPEL repository][5] first. + + # yum install alpine + +In Debian, Ubuntu or their derivatives, you will do: + + # aptitude install alpine + +After the installation is complete, you can launch the email client by running: + + # alpine + +The first time you run alpine, it will create a mail directory for the current user inside his/her home directory (~/mail), and bring up the main interface, as shown in the following screencast. + +注:youtube视频,发布的时候做个链接吧 + + +The user interface has the following sections: + +![](https://farm9.staticflickr.com/8724/16618079590_6c236ce2c2_c.jpg) + +Feel free to browse around a bit in order to become acquainted with Alpine. You can always return to the command prompt by hitting the 'Q' key any time. Note that all screens have context-related help available at the bottom of the screen. + +Before proceeding further, we will create a default configuration file for Alpine. In order to do so, quit Alpine, and execute the following command from the command line: + + # alpine -conf > /etc/pine.conf + +### Configuring Alpine to Use a Gmail Account ### + +Once you have installed Alpine and spent at least a few minutes to feel comfortable with its interface and menus, it's time to actually configure it to use an existing Gmail account. + +Before following these steps in Alpine, remember to enable IMAP in your Gmail settings from the webmail interface. Once IMAP access is enabled in your Gmail account, proceed to the following steps to enable reading Gmail messages on Alpine. + +First, launch Alpine. + +Press 'S' for Setup, and then 'L' for collection lists to define groups of folders to help you better organize your mail: + +![](https://farm8.staticflickr.com/7614/16779579656_690eda419c_o.png) + +Add a new folder by pressing 'A' and fill the required information: + +- **Nickname**: whatever name of your choice. +- **Server**: imap.gmail.com/ssl/user=yourgmailusername@gmail.com + +You may leave Path and View blank. + +Then press Ctrl+X and enter your password when prompted: + +![](https://farm9.staticflickr.com/8611/16618079640_6f7dca336a_b.jpg) + +If everything goes as expected, there should be a new folder named after the nickname that you chose earlier. You should find your Gmail mailboxes there: + +![](https://farm8.staticflickr.com/7598/16804355052_10c1a6c5bd_b.jpg) + +For verification, you can compare the contents of your Alpine's "Gmail Sent" mailbox with those of the web client: + +![](https://farm8.staticflickr.com/7602/16619323939_d2eab3e162_c.jpg) + +By default new mail checking/notification occurs automatically every 150 seconds. You can change this value, along with many others, in the /etc/pine.conf file. This configuration file is heavily commented for clarity. To set the desired mail check interval to 10 seconds, for example, you will need to do: + + # The approximate number of seconds between checks for new mail + mail-check-interval=10 + +Finally, we need to configure an SMTP server to send email messages via Alpine. Go back to the Alpine's setup screen as explained earlier, and press 'C' to set the address of a Google's SMTP server. You will need to edit the value of the SMTP Server (for sending) line as follows: + + smtp.gmail.com:587/tls/user=yourgmailusername@gmail.com + +You will be prompted to save changes when you press 'E' to exit setup. Once you save the changes, you are on your way to sending emails through Alpine! To do that, just go to Compose in the main menu, and start enjoying your Gmail account from the command line. + +### Conclusion ### + +In this post we have discussed how to access Gmail in a terminal environment via a lightweight and powerful command-line email client called Alpine. Alpine is free software released under the Apache Software License 2.0, which is a software license compatible with the GPL. Alpine takes pride in being friendly for new users, yet powerful for seasoned system administrators at the same time. I hope that after reading this article you have come to realize how true that last statement is. + +Feel free to leave your comments or questions using the form below. I look forward to hearing from you! + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/gmail-command-line-linux-alpine.html + +作者:[Gabriel Cánepa][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:http://xmodulo.com/schedule-appointments-todo-tasks-linux-terminal.html +[2]:http://xmodulo.com/manage-personal-expenses-command-line.html +[3]:http://xmodulo.com/access-facebook-command-line-linux.html +[4]:http://xmodulo.com/access-twitter-command-line-linux.html +[5]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html \ No newline at end of file diff --git a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md b/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md new file mode 100644 index 0000000000..37e5255b30 --- /dev/null +++ b/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md @@ -0,0 +1,61 @@ +Install Mate desktop in FreeBSD 10.1 +================================================================================ +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/03/FreeBSD-790x494.jpg) + +FreeBSD is fully text mode system, however some times new users might want to use GUI desktop environment. This tutorial will help you to install Mate Desktop in Freebsd 10.1. + +Here is my test system details: + + root@Freebsd-unixmen:~ # uname -a + FreeBSD Freebsd-unixmen 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 + root@Freebsd-unixmen:~ + +To start installing Mate desktop in FreeBSD 10.1, the following steps can be used. + + pkg install xf86-video-fbdev mate-desktop mate xorg + +### Add the following lines to /etc/rc.conf ### + + moused_enable="YES" + dbus_enable="YES" + hald_enable="YES" + +### Test the installation. ### + + xinit mate-session + +![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot2.png) + +Mate doesn’t have a display manager of its own. Hence we can use any other display managers like XDM, GDM, slim etc to use the login manager. Here let’s see how to configure Slim DM with Mate desktop. + +### Install Slim ### + + pkg install slim + +Add the following line to **/etc/rc.conf**: + + slim_enable="YES" + +Add the following line to .xinitrc file in the user’s home directory + + exec mate-session + +Reboot the machine. Now the machine will boot into Slim login where you can login to Mate session. + +![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot3.png) + +![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot4.png) + +That’s it. Cheers! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/install-mate-desktop-freebsd-10-1/ + +作者:[M.el Khamlichi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/pirat9/ \ No newline at end of file diff --git a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md new file mode 100644 index 0000000000..ecd44c9c75 --- /dev/null +++ b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md @@ -0,0 +1,61 @@ +Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl +================================================================================ +> **Question**: I need to convert readable date and time to a corresponding UNIX timestamp (i.e., Epoch time), or vice versa in a Perl program. Can you show me Perl code examples of converting date/time to UNIX timestamp, or conversely, converting UNIX timestamp to human-readable date and time? + +When your Perl script needs to deal with time information, there are two different ways to represent and manipulate date and time in the script. One way is a human-readable string representation of time (e.g., "Sat Mar 14 10:14:05 EDT 2015"), and the other is via UNIX timestamp (also known as "Epoch time") which is the number of elapsed seconds since 00:00:00 UTC, 1 Jaunary 1970. Either method has its own pros and cons, and depending on your requirements you may want to convert one format to the other. + +### Convert Local Time to UNIX Timestamp in Perl ### + +To obtain UNIX time from a date string, you can use str2time() in Date::Parse module. It can handle a variety of date formats, such as: + +- Sat Mar 14 10:14:05 EDT 2015 +- 3/14/2015 10:14:05 -0400 +- 14/Mar/15 10:14:05 +- 14 Mar 15 10:14:05 + + use Date::Parse; + + my $local_time = "Sat Mar 14 10:14:05 EDT 2015"; + + # 1426342445 will be stored in $unix_time + my $unix_time = str2time($local_time); + +Date:Parse module supports multiple languages (English, French, German and Italian) and timezones. For example: + + use Date::Parse; + use Date::Language; + + my $lang = Date::Language->new('French'); + my $unix_time = $lang->str2time("12:14:05, Ago 16, 2014 (CEST)"); + +### Convert UNIX Timestmp to Human-Readable Date and Time in Perl ### + +If you want to show a UNIX timestamp in a human-readable format, you can use localtime() function which converts a UNIX timestamp into a 9-element list. You can use the returned list to construct any kind of human-readable date/time string as you want. Here is a code snippet. + + # $sec, $min, $hour: seconds, minutes and hours + # $mday: the day of the month (0-31) + # $mon: month in the range of 0 (Jaunary) and 11 (December) + # $year: the number of years that have elapsed since 1900 + # $wday: the day of the week in the range of 0 (Sunday) and 6 (Saturday) + # $yday: the day of the year in the range of 0 and 364 (or 365 in leap years) + # $isdst: whether or not it's in daylight saving time + + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp); + + # necessary conversion of $mon and $year + $mon += 1; + $year += 1900; + + print "Current time: $year-$mon-$mday $hour:$min:$sec\n"; + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/convert-local-time-unix-timestamp-perl.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni \ No newline at end of file diff --git a/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md b/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md new file mode 100644 index 0000000000..cec937b8fd --- /dev/null +++ b/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md @@ -0,0 +1,150 @@ +Systemd Boot Process a Close Look in Linux +================================================================================ +The way Linux system boots up is quite complex and there have always been need to optimize the way it works. The traditional boot up process of Linux system is mainly handled by the well know init process (also known as SysV init boot system), while there have been identified inefficiencies in the init based boot system, systemd on the other hand is another boot up manager for Linux based systems which claims to overcome the shortcomings of [traditional Linux SysV init][2] based system. We will be focusing our discussion on the features and controversies of systemd , but in order to understand it, let’s see how Linux boot process is handled by traditional SysV init based system. Kindly note that Systemd is still in testing phase and future releases of Linux operating systems are preparing to replace their current boot process with Systemd Boot manager. + +### Understanding Linux Boot Process ### + +Init is the very first process that starts when we power on our Linux system. Init process is assigned the PID of 1. It is parent process for all other processes on the system. When a Linux computer is started, the processor searches for the BIOS on the system memory, BIOS then tests system resources and find the first boot device, usually set as hard disk, it looks for Master Boot Record (MBR) on the hard disk, loads its contents to memory and passes control to it, the further boot process is controlled by MBR. + +Master Boot Record initiates the Boot loader (Linux has two well know boot loaders, GRUB and LILO, 80% of Linux systems are using GRUB loaders), this is the time when GRUB or LILO loads the kernel module. Kernel module immediately looks for the “init” in /sbin partition and executes it. That’s from where init becomes the parent process of Linux system. The very first file read by init is /etc/inittab , from here init decides the run level of our Linux operating system. It finds partition table information from /etc/fstab file and mounts partitions accordingly. Init then launches all the services/scripts specified in the /etc/init.d directory of the default run level. This is the step where all services are initialized by init one by one. In this process, one service at a time is started by init , all services/daemons run in the background and init keeps managing them. + +The shutdown process works in pretty much the reverse function, first of all init stops all services and then filesystem is un-mounted at the last stage. + +The above mentioned process has some shortcomings. The need to replace traditional init with something better have been felt from long time now. Some replacements have been developed and implemented as well. The well know replacements for this init based system as Upstart , Epoch , Mudar and Systemd. Systemd is the one which got most attention and is considered to be better of all available alternatives. + +### Understanding Systemd ### + +Reducing the boot time and computational overhead is the main objective of developing the Systemd. Systemd (System Manager Daemon) , originally developed under GNU General Public License, is now under GNU Lesser General Public License, it is most frequently discussed boot and services manager these days. If your Linux system is configured to use Systemd boot manager, then instead of traditional SysV init, startup process will be handled by systemd. One of the core feature of Systemd is that it supports post boot scripts of SysV Init as well . + +Systemd introduces the parallelization boot concept, it creates a sockets for each daemon that needs to be started, these sockets are abstracted from the processes that use them so they allow daemons to interact with each other. Systemd creates news processes and assigns every process a control group. The processes in different control groups use kernel to communicate with each others. The way [systemd handles the start up process][2] is quite neat, and much optimized as compared to the traditional init based system. Let’s review some of the core features of Systemd. + +- The boot process is much simpler as compared to the init +- Systemd provides concurrent and parallel process of system boot so it ensures better boot speed +- Processes are tracked using control groups, not by PIDs +- Improved ways to handle boot and services dependencies. +- Capability of system snapshots and restore +- Monitoring of started services ; also capabale of restarting any crashed services +- Includes systemd-login module to control user logins. +- Ability to add and remove components +- Low memory foot prints and ability for job scheduling +- Journald module for event logging and syslogd module for system log. + +Systemd handles system shutdown process in well organized way as well. It has three script located inside /usr/lib/systemd/ directory, named systemd-halt.service , systemd-poweroff.service , systemd-reboot.service . These scripts are executed when user choose to shutdown, reboot or halt Linux system. In the event of shutdown, systemd first un-mount all file systems and disabled all swap devices, detaches the storage devices and kills remaining processes. + +![](http://images.linoxide.com/systemd-boot-process.jpg) + +### Structural Overview of Systemd ### + +Let’s review Linux system boot process with some structural details when it is using systemd as boot and services manager. For the sake of simplicity, we are listing the process in steps below: + +**1.** The very first steps when you power on your system is the BIOS initialization. BIOS reads the boot device settings, locates and hands over control to MBR (assuming hard disk is set as first boot device). + +**2.** MBR reads information from Grub or LILO boot loader and initializes the kernel. Grub or LILO will specify how to handle further system boot up. If you have specified systemd as boot manager in grub configuration file, then the further boot process will be handled by systemd. Systemd handles boot and services management process using “targets”. The ”target" files in systemd are used for grouping different boot units and start up synchronization processes. + +**3.** The very first target executed by systemd is **default.target**. But default.target is actually a symlink to **graphical.target**. Symlink in linux works just like shortcuts in Windows. Graphical.target file is located at /usr/lib/systemd/system/graphical.target path. We have shown the contents of graphical.target file in the following screenshot. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/graphical1.png) + +**4.** At this stage, **multi-user.target** has been invoked and this target keeps its further sub-units inside “/etc/systemd/system/multi-user.target.wants” directory. This target sets the environment for multi user support. None root users are enabled at this stage of boot up process. Firewall related services are started on this stage of boot as well. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/multi-user-target1.png) + +"multi-user.target" passes control to another layer “**basic.target**”. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Basic-Target.png) + +**5.** "basic.target" unit is the one that starts usual services specially graphical manager service. It uses /etc/systemd/system/basic.target.wants directory to decide which services need to be started, basic.target passes on control to **sysinit.target**. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Sysint-Target.png) + +**6.** "sysinit.target" starts important system services like file System mounting, swap spaces and devices, kernel additional options etc. sysinit.target passes on startup process to **local-fs.target**. The contents of this target unit are shown in the following screenshot. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/local-FS-Target.png) + +**7.** local-fs.target , no user related services are started by this target unit, it handles core low level services only. This target is the one performing actions on the basis of /etc/fstab and /etc/inittab files. + +### Analyzing System Boot Performancev ### + +Systemd offers tool to identify and troubleshoot boot related issues or performance concerns. **Systemd-analyze** is a built-in command which lets you examine boot process. You can find out the units which are facing errors during boot up and can further trace and correct boot component issues. Some useful systemd-analyze commands are listed below. + +**systemd-analyze time** shows the time spent in kernel, and normal user space. + + $ systemd-analyze time + + Startup finished in 1440ms (kernel) + 3444ms (userspace) + +**systemd-analyze blame** prints a list of all running units, sorted by the time taken by then to initialize, in this way you can have idea of which services are taking long time to start during boot up. + + $ systemd-analyze blame + + 2001ms mysqld.service + 234ms httpd.service + 191ms vmms.service + +**systemd-analyze verify** shows if there are any syntax errors in the system units. **Systemd-analyze plot** can be used to write down whole startup process to a SVG formate file. Whole boot process is very lengthy to read, so using this command we can dump the output of whole boot processing into a file and then can read and analyze it further. The following command will take care of this. + + systemd-analyze plot > boot.svg + +### Systemd Controversies ### + +Systemd has not been lucky to receive love from everyone, some professionals and administrators have different opinions on its working and developments. Per critics of Systemd, it’s “not Unix-like” because it tried to replace some system services. Some professionals don’t like the idea of using binary configuration files as well. It is said that editing systemd configuration is not an easy tasks and there are no graphical tools available for this purpose. + +### Test Systemd on Ubuntu 14.04 and 12.04 ### + +Originally, Ubuntu decided to replace their current boot process with Systemd in Ubuntu 16.04 LTS. Ubuntu 16.04 is supposed to be released in April 2016, but considering the popularity and demand for Systemd, the upcoming **Ubuntu 15.04** will have it as its default boot manager. Good news is that the user of Ubuntu 14.04 Trusty Tahr And Ubuntu 12.04 Precise Pangolin can still test Systemd on their machines. The test process is not very complex, all you need to do is to include the related PPA to the system, update repository and perform system upgrade. + +**Disclaimer** : Please note that its still in testing and development stages for Ubuntu. Testing packages might have any unknown issues and in worst case scenario, they might break your system configurations. Make sure you backup your important data before trying this upgrade. + +Run following command on the terminal to add ppa to the your ubuntu system: + + sudo add-apt-repository ppa:pitti/systemd + +You will be seeing warning message here because we are trying to use temporary/testing PPA which is not recommended for production machines. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/PPA-Systemd1.png) + +Now update the APT Package Manager repositories by running the following command. + + sudo apt-get update + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Update-APT1.png) + +Perform system upgrade by running the following command. + + sudo apt-get dist-upgrade + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/System-Upgrade.png) + +That’s all, you should be able to see configuration files of systemd on your ubuntu system now, just browse to the /lib/systemd/ directory and see the files there. + +Alright, it’s time we edit grub configuration file and specify systemd as default Boot Manager. Edit grub file using Gedit text editor. + + sudo gedit /etc/default/grub + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Edit-Grub.png) + +Here edit GRUB_CMDLINE_LINUX_DEFAULT parameter in this file and specify the value of this parameter as: "**init=/lib/systemd/systemd**" + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Grub-Systemd.png) + +That’s all, your ubuntu system is no longer using its traditional boot manager, its using Systemd Manager now. Reboot your system and see the systemd boot up process. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Sytemd-Boot.png) + +### Conclusion ### + +Systemd is no doubt a step forward towards improving Linux Boot process; it’s an awesome suite of libraries and daemons that together improve the system boot and shutdown process. Many linux distributions are preparing to support it as their official boot manager. In future releases of Linux distros, we can hope to see systemd startup. But on the other hand, in order to succeed and to be adopted on the wide scale, systemd should address the concerns of critics as well. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/systemd-boot-process/ + +作者:[Aun Raza][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ +[1]:http://linoxide.com/booting/boot-process-of-linux-in-detail/ +[2]:http://0pointer.de/blog/projects/self-documented-boot.html \ No newline at end of file From b3309a9a1eb6126fe745f822832748f1d395c2bb Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Mon, 16 Mar 2015 18:22:44 +0800 Subject: [PATCH 579/725] [translated] 20150306 How to Setup lftp--A Simple Command line FTP Program.md --- ...lftp--A Simple Command line FTP Program.md | 175 ------------------ ...lftp--A Simple Command line FTP Program.md | 174 +++++++++++++++++ 2 files changed, 174 insertions(+), 175 deletions(-) delete mode 100644 sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md create mode 100644 translated/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md diff --git a/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md b/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md deleted file mode 100644 index ad5f1da84c..0000000000 --- a/sources/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md +++ /dev/null @@ -1,175 +0,0 @@ -zpl1025 -How to Setup lftp - A Simple Command line FTP Program -================================================================================ -Hi everyone, this article is about Lftp and how we can install Lftp in our Linux Operating System. [Lftp][1] is a command line based File Transfer Software also known as FTP Client which was developed by Alexander Lukyanov and was distributed as GNU General Public License. Besides FTP, it also supports FTPS, HTTP, HTTPS, HFTP, FISH, and SFTP. The program also supports FXP, allowing for data transfers between two FTP servers bypassing the client machine. - -It has some awesome advanced features such as recursively mirroring entire directory trees and resuming downloads. Transfers can be scheduled for execution at a later time, bandwidth can be throttled, transfer queues can be created, and Unix shell-like job control is supported. The client can also be used interactively or automated with scripts. - -### Installing Lftp ### - -Before we try to run lftp, we have make sure that it is properly installed in our Linux Distribution. Here are some commands mentioned for installing lftp in the list common distribution of Linux. - -**On Ubuntu 14.04 LTS** - -In Ubuntu 14.04 LTS and its derivatives, we can install lftp using apt manager. So, to install it, we'll need to run the following commands in a shell or a terminal under sudo privilege. - - $ sudo apt-get install lftp - -![ubuntu install lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/ubuntu-install-lftp.png) - -**On CentOS/Fedora/RHEL** - -As lftp is also available in the repository of Fedora, CentOS and RHEL, we can use **yum** manager to install it. - - $ sudo yum install lftp - -![fedora lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/fedora-lftp.png) - -**On Arch Linux** - -It is also available in Arch Linux Package Repository so, we can simply use pacman to install it. - - $ sudo pacman -S lftp - -![archlinux install lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/archlinux-install-lftp.png) - -**On OpenSuse** - -Zypper, package management software for OpenSuse can be used to install lftp. Here is the command with which one can install it on their OpenSuse machine. - - $ sudo zypper install lftp - -![opensuse lftp install](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp_install.png) - -### Logging in ### - -To login to a ftp server or sftp server, we'll first need to know about the required credential for the login like username, password, ports. - -After that, we'll want to login using lftp client as basic usage. - - $ lftp ftp://linoxide@localhost - -![ftp login](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp-login.png) - -If we need to point a port to the login then, we'll need to add port as shown below. - - $ lftp ftp://linoxide@localhost:21 - -![ftp login with ports](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp-login-port.png) - -### Navigation ### - -We can use **ls** to list files and directories, **cd** to enter into a directory. - -![ls and cd](http://blog.linoxide.com/wp-content/uploads/2015/03/ls-cd-lftp.png) - -### Uploading and Download Files ### - -We can use **pget** for downloading files from the remote server. - - > pget linspeed.svg - -![pget lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/pget-lftp.png) - -We can use **put** for uploading files to the remote server. - - > put linoxide.tar - -![upload with put](http://blog.linoxide.com/wp-content/uploads/2015/03/put-upload.png) - -To resume partially downloaded files/directories, we will use the -c switch: - - > mirror -c Directory - - >pget -c linoxide.tar - - > put -c upload.tar - -### Using Mirror ### - -We can use mirror to download the whole directory pointed as the source. - - > mirror remote local - -![download with mirror](http://blog.linoxide.com/wp-content/uploads/2015/03/mirror.png) - -There is also reverse mirror (mirror -R) which uploads or updates a directory tree on server. - - > mirror -R local remote - -![upload or update with mirror reverse](http://blog.linoxide.com/wp-content/uploads/2015/03/mirror-reverse.png) - -To resume partially downloaded files/directories, we will use the -c switch: - - > mirror -c Directory - -### To Queue Items to Download ### - -We can use queue option with lftp so that we can download selected files in a queue one by one as there is an option in GUI based clients to select and download in a queue. Here's an example on it. - -To prevent queue from auto transferring while you add to it : - - > queue stop - -Now, we'll add them into queue. - - > queue mirror "directory" - - > queue pget "file.tar" - -After the queue has been added, we should run queue start command. - - > queue start - -To remove the entire queue run the following command. - - > queue -d - -### Segmented Downloading ### - -Here, in this example we are segmenting files into 3 segments, one can change it according to their own need. - -A pget command using segmentation is **pget -n 3 file.tar**, where 3 is the number of segments. - - > pget -n 3 file.tar - -A mirror command using segmentation is **mirror --use-pget-n=3 directory**, where 3 is the number of segments. - - > mirror --use-pget-n=3 linxoxide - -We can use jobs -v to see the speeds of the individual segments as well as the total speed. - -### To Stop, Resume or Kill a Transfer ### - -To cancel a transfer we can press Ctrl+c . And to resume a download we can use the -c (--continue) switch as shown below. - - > mirror -c directory - -And to kill an active transfer we should run **kill** and to kill and delete all we'll need to run **kill all** as shown below. - - > kill - - > kill all - -### Exiting ### - -To quit from lftp, we should run exit command in the terminal or inside lftp interface. - - > exit - -### Conclusion ### - -Hurray! We have successfully installed lftp and learned some basic major ways to use it. lftp is an awesome command line ftp client which supports a lot of additional functionality and cool features. It has a lot stuffs more than the other common ftp client. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy lftp :-) - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/setup-lftp-command-line-ftp/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:http://lftp.yar.ru/ diff --git a/translated/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md b/translated/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md new file mode 100644 index 0000000000..df90008704 --- /dev/null +++ b/translated/tech/20150306 How to Setup lftp--A Simple Command line FTP Program.md @@ -0,0 +1,174 @@ +如何设置lftp - 一个简易的命令行FTP程序 +================================================================================ +大家好,这篇文章是介绍Lftp以及如何在Linux操作系统下安装的。[Lftp][1]是一个基于命令行的文件传输软件也被称为FTP客户端,由Alexander Lukyanov开发并以GNU GPL协议许可发行。除了FTP,它还支持FTPS,HTTP,HTTPS,HFTP,FISH,以及SFTP。这个程序还支持FXP,允许数据绕过客户端直接在两个FTP服务器之间传输。 + +他有很多很棒的高级功能,比如完整目录树递归镜像以及断点续传下载。传输任务可以安排在稍后的时间段执行,可以限制带宽,可以创建传输列表,还支持类似Unix shell的任务控制。客户端还可以在交互式或自动脚本里使用。 + +### 安装Lftp ### + +在运行lftp之前,我们需要确定它已经正确安装在我们的Linux发行版中了。下面是在常见Linux发行版中安装lftp的一些命令。 + +**Ubuntu 14.04 LTS** + +在Ubuntu 14.04 LTS以及它的衍生版中,我们可以通过apt管理程序安装lftp。要安装它,我们需要使用sudo权限在shell或终端里运行下面的命令。 + + $ sudo apt-get install lftp + +![ubuntu install lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/ubuntu-install-lftp.png) + +**CentOS/Fedora/RHEL** + +因为在Fedora,CentOS和RHEL的软件仓库里也能找到lftp,我们可以用**yum**管理程序来安装它。 + + $ sudo yum install lftp + +![fedora lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/fedora-lftp.png) + +**Arch Linux** + +在Arch Linux安装包仓库里也有,我们可以简单地使用pacman来安装它。 + + $ sudo pacman -S lftp + +![archlinux install lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/archlinux-install-lftp.png) + +**OpenSuse** + +OpenSuse系统里的包管理软件Zypper可以用来安装lftp。下面是在OpenSuse机器上用来安装的命令。 + + $ sudo zypper install lftp + +![opensuse lftp install](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp_install.png) + +### 登录 ### + +要登录到ftp服务器或sftp服务器,我们首先需要知道所要求的认证信息,比如用户名,密码,端口。 + +之后,我们想通过lftp来登录。 + + $ lftp ftp://linoxide@localhost + +![ftp login](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp-login.png) + +如果需要指定登录端口,我们可以按下面的方式加上去。 + + $ lftp ftp://linoxide@localhost:21 + +![ftp login with ports](http://blog.linoxide.com/wp-content/uploads/2015/03/lftp-login-port.png) + +### 浏览 ### + +我们可以用**ls**命令来列出文件和目录,用**cd**命令打开目录。 + +![ls and cd](http://blog.linoxide.com/wp-content/uploads/2015/03/ls-cd-lftp.png) + +### 上传和下载文件 ### + +我们可以用**pget**命令来从远端服务器下载文件。 + + > pget linspeed.svg + +![pget lftp](http://blog.linoxide.com/wp-content/uploads/2015/03/pget-lftp.png) + +我们可以用**put**命令来上传文件到远端服务器。 + + > put linoxide.tar + +![upload with put](http://blog.linoxide.com/wp-content/uploads/2015/03/put-upload.png) + +要恢复之前只下载了一部分的文件/目录,我们可以用-c开关: + + > mirror -c Directory + + >pget -c linoxide.tar + + > put -c upload.tar + +### 使用镜像命令 ### + +我们可以用mirror命令来下载所指定的整个目录。 + + > mirror remote local + +![download with mirror](http://blog.linoxide.com/wp-content/uploads/2015/03/mirror.png) + +还可以做反向镜像(mirror -R),可以用来上传或更新本地目录树到服务器上。 + + > mirror -R local remote + +![upload or update with mirror reverse](http://blog.linoxide.com/wp-content/uploads/2015/03/mirror-reverse.png) + +要恢复之前下载了一部分的文件/目录,我们可以用-c开关: + + > mirror -c Directory + +### 下载队列 ### + +我们可以在lftp里使用queue的选项,这样我们可以像基于GUI的客户端那样挨个下载队列里选择的文件。下面举个例子。 + +为了避免队列自动开始传输,我们可以这样做: + + > queue stop + +现在,我们添加任务到队列。 + + > queue mirror "directory" + + > queue pget "file.tar" + +在建立好队列后,我们再运行queue start命令。 + + > queue start + +可以运行下面的命令移除整个队列。 + + > queue -d + +### 分块下载 ### + +下面是一个把一个文件分成3块来下载的例子,你可以根据自己的需要调整。 + +使用pget命令分块功能的方式是**pget -n 3 file.tar**,里面的3是分块的数目。 + + > pget -n 3 file.tar + +使用mirror命令分块功能的方式是**mirror --use-pget-n=3 directory**,里面的3是分块的数目。 + + > mirror --use-pget-n=3 linxoxide + +我们可以用jobs -v命令来查看每个独立分块的下载速度以及整体速度。 + +### 停止,继续或删除一次传输任务 ### + +要取消传输我们可以按下Ctrl+C。而要恢复下载我们可以像下面那样使用-c (--continue)开关。 + + > mirror -c directory + +要删除一次正在正在传输的任务我们可以用**kill**命令,而要删除所有任务我们可以使用下面那样的**kill all**命令。 + + > kill + + > kill all + +### 退出 ### + +要从lftp退出,我们需要在终端或lftp交互接口中运行exit命令。 + + > exit + +### 总结 ### + +哇!我们已经成功地安装了lftp并学会了使用它的一些基础的主要方式。lftp是一个非常棒的命令行ftp客户端,它支持许多额外的功能以及很酷的特性。它比其他普通ftp客户端多了很多东西。好吧,你要是有任何问题,建议,反馈,请在下面的评论区里留言。谢谢!享用lftp吧 :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/setup-lftp-command-line-ftp/ + +作者:[Arun Pyasi][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://lftp.yar.ru/ From 4c6e07095e54af61cf49bbe370af19d6705527c5 Mon Sep 17 00:00:00 2001 From: zpl1025 Date: Mon, 16 Mar 2015 18:28:32 +0800 Subject: [PATCH 580/725] [translating] 20150309 Comparative Introduction To FreeBSD For Linux Users.md --- .../20150316 Systemd Boot Process a Close Look in Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md b/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md index cec937b8fd..eded061738 100644 --- a/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md +++ b/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md @@ -1,3 +1,4 @@ +zpl1025 Systemd Boot Process a Close Look in Linux ================================================================================ The way Linux system boots up is quite complex and there have always been need to optimize the way it works. The traditional boot up process of Linux system is mainly handled by the well know init process (also known as SysV init boot system), while there have been identified inefficiencies in the init based boot system, systemd on the other hand is another boot up manager for Linux based systems which claims to overcome the shortcomings of [traditional Linux SysV init][2] based system. We will be focusing our discussion on the features and controversies of systemd , but in order to understand it, let’s see how Linux boot process is handled by traditional SysV init based system. Kindly note that Systemd is still in testing phase and future releases of Linux operating systems are preparing to replace their current boot process with Systemd Boot manager. @@ -147,4 +148,4 @@ via: http://linoxide.com/linux-how-to/systemd-boot-process/ [a]:http://linoxide.com/author/arunrz/ [1]:http://linoxide.com/booting/boot-process-of-linux-in-detail/ -[2]:http://0pointer.de/blog/projects/self-documented-boot.html \ No newline at end of file +[2]:http://0pointer.de/blog/projects/self-documented-boot.html From bc2776edfdfd6f32e158b429b6c0f09619e7c24e Mon Sep 17 00:00:00 2001 From: LouisWei Date: Mon, 16 Mar 2015 21:11:57 +0800 Subject: [PATCH 581/725] translating wi-cuckoo --- ...best uses for open source software in the business world.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150309 10 best uses for open source software in the business world.md b/sources/talk/20150309 10 best uses for open source software in the business world.md index b0c4475652..5393108cde 100644 --- a/sources/talk/20150309 10 best uses for open source software in the business world.md +++ b/sources/talk/20150309 10 best uses for open source software in the business world.md @@ -1,3 +1,4 @@ +translating wi-cuckoo LLAP 10 best uses for open source software in the business world ================================================================================ > Open source offers some compelling benefits for businesses large and small -- but you might be surprised at some of the ways it's being used. @@ -82,4 +83,4 @@ via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-sof [13]:https://owncloud.org/ [14]:http://audacity.sourceforge.net/ [15]:http://www.openshot.org/ -[16]:https://www.prestashop.com/ \ No newline at end of file +[16]:https://www.prestashop.com/ From 9998ff511e8da36806f08aab04e9e172801b6649 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 16 Mar 2015 21:33:22 +0800 Subject: [PATCH 582/725] PUB:20130315 How to protect SSH server from brute force attacks using fail2ban @theo-l --- ...from brute force attacks using fail2ban.md | 59 ++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) rename {translated/tech => published}/20130315 How to protect SSH server from brute force attacks using fail2ban.md (56%) diff --git a/translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/published/20130315 How to protect SSH server from brute force attacks using fail2ban.md similarity index 56% rename from translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md rename to published/20130315 How to protect SSH server from brute force attacks using fail2ban.md index 599fcfceeb..e2940a2ed7 100644 --- a/translated/tech/20130315 How to protect SSH server from brute force attacks using fail2ban.md +++ b/published/20130315 How to protect SSH server from brute force attacks using fail2ban.md @@ -1,10 +1,11 @@ -如何使用fail2ban来保护SSH服务器避免暴力破解攻击。 +如何使用 fail2ban 防御 SSH 服务器的暴力破解攻击 ================ -对于SSH服务的常见的攻击就是暴力破解攻击--远程攻击者通过不同的密码来进行无限地登录尝试。当然SSH存在参数来防备密码验证以及可用的验证机制,例如[公钥验证][1]或者[双重验证][2],来解决这类攻击. 将不同的验证方法的优劣处先放在一边,先考虑一下强制密码验证的情形.你是如何保护你的SSH服务器免遭暴力破解攻击的呢? -[fail2ban][3]是linux上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如/var/log/auth.log 或者 /var/log/secure)并根据检测到的任何可疑的行为自动触发不同的防御活动。实际上,fail2ban在防御对SSH服务器的暴力密码破解上非常有用。 +对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如[公钥验证][1]或者[双重验证][2]。将不同的验证方法的优劣处先放在一边,如果我们必须使用密码验证方式怎么办?你是如何保护你的 SSH 服务器免遭暴力破解攻击的呢? -在该指导教程中,我会演示**如何安装并配置fail2ban来保护SSH服务器避免来自远程IP地址的暴力攻击** +[fail2ban][3] 是 Linux 上的一个著名的入侵保护的开源框架,它会监控多个系统的日志文件(例如:/var/log/auth.log 或者 /var/log/secure)并根据检测到的任何可疑的行为自动触发不同的防御动作。事实上,fail2ban 在防御对SSH服务器的暴力密码破解上非常有用。 + +在这篇指导教程中,我会演示**如何安装并配置 fail2ban 来保护 SSH 服务器以避免来自远程IP地址的暴力攻击**。 ###在linux上安装Fail2ban @@ -16,15 +17,15 @@ $ sudo yum install fail2ban -在ubuntu,Debian或 Linux Mint上安装fail2ban: +在ubuntu,Debian 或 Linux Mint上安装fail2ban: $ sudo apt-get install fail2ban ### 为SSH服务器配置Fail2ban -现在你已经准备好了通过配置fail2ban来加强你的SSH服务器。你需要编辑其配置文件/etc/fail2ban/jail.conf。 在配置文件的“DEFAULT[默认]”区,你可以在此定义所有受监控的服务的默认参数,另外在特定的服务器,你可以定义任何特定服务键入来覆载默认的参数配置(例如SSH,Apache等)。 +现在你已经准备好了通过配置 fail2ban 来加强你的SSH服务器。你需要编辑其配置文件 /etc/fail2ban/jail.conf。 在配置文件的“[DEFAULT]”区,你可以在此定义所有受监控的服务的默认参数,另外在特定服务的配置部分,你可以为每个服务(例如SSH,Apache等)设置特定的配置来覆盖默认的参数配置。 -在特定服务监狱区(在[DEFAULT(默认)]区后面的地方),你需要定义[ssh-iptables]区,这里用来定义SSH相关的监狱配置。禁止真正的IP地址是通过iptables完成的。 +在针对服务的监狱区(在[DEFAULT]区后面的地方),你需要定义一个[ssh-iptables]区,这里用来定义SSH相关的监狱配置。真正的禁止IP地址的操作是通过iptables完成的。 下面是一个包含“ssh-iptables”监狱配置的/etc/fail2ban/jail.conf的文件样例。当然根据你的需要,你也可以指定其他的应用监狱。 @@ -32,17 +33,17 @@ ``` [DEFAULT] -# a space delimited list of IP addresses, CIDR prefixes, or DNS hostnames -# to bypass fail2ban protection +# 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名 +# 用于指定哪些地址可以忽略 fail2ban 防御 ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24 -# number of seconds during which a client host is blocked +# 客户端主机被禁止的时长(秒) bantime = 86400 -# number of failures before a client host is blocked +# 客户端主机被禁止前允许失败的次数 maxretry = 5 -# number of seconds within which "maxentry" failures result in banning +# 查找失败次数的时长(秒) findtime = 600 mta = sendmail @@ -52,17 +53,17 @@ enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com] -# for Debian-based distros +# Debian 系的发行版 logpath = /var/log/auth.log -# for Red Hat-based distros +# Red Hat 系的发行版 logpath = /var/log/secure -# ssh-specific max-retry threshold +# ssh 服务的最大尝试次数 maxretry = 3 ``` -根据上述配置,fail2ban会自动禁止在最近10分钟内有超过3次访问尝试失败的任意IP地址1。一旦被禁,这个IP地址将会保持在24小时内被持续阻塞。这个事件会通过sendemail发送到一个接收邮件地址进行通知。 +根据上述配置,fail2ban会自动禁止在最近10分钟内有超过3次访问尝试失败的任意IP地址。一旦被禁,这个IP地址将会在24小时内一直被禁止访问 SSH 服务。这个事件也会通过sendemail发送邮件通知。 -一旦配置文件准备就位,按照以下方式重启fail2ban服务。 +一旦配置文件准备就绪,按照以下方式重启fail2ban服务。 在 Debian, Ubuntu 或 CentOS/RHEL 6: @@ -72,14 +73,14 @@ maxretry = 3 $ sudo systemctl restart fail2ban -为了验证fail2ban成功运行,使用参数'ping'来运行fail2ban-client 命令。 如果fail2ban服务正常运行,你可以看到“pong(膨)”作为响应。 +为了验证fail2ban成功运行,使用参数'ping'来运行fail2ban-client 命令。 如果fail2ban服务正常运行,你可以看到“pong(嘭)”作为响应。 $ sudo fail2ban-client ping Server replied: pong -### 测试fail2ban 保护SSH免遭暴力破解攻击 +### 测试 fail2ban 保护SSH免遭暴力破解攻击 -为了测试fail2ban是否能正常工作,尝试通过使用错误的密码来用SSH连接到服务器模拟一个暴力破解攻击。与此同时,监控/var/log/fail2ban.log--该文件记录在fail2ban中发生的任何敏感事件。 +为了测试fail2ban是否能正常工作,尝试通过使用错误的密码来用SSH连接到服务器模拟一个暴力破解攻击。与此同时,监控 /var/log/fail2ban.log,该文件记录在fail2ban中发生的任何敏感事件。 $ sudo tail -f /var/log/fail2ban.log @@ -88,6 +89,7 @@ maxretry = 3 根据上述的日志文件,Fail2ban通过检测IP地址的多次失败登录尝试,禁止了一个IP地址192.168.1.8。 ###检查fail2ban状态并解禁被锁住的IP地址 + 由于fail2ban的“ssh-iptables”监狱使用iptables来阻塞问题IP地址,你可以通过以下方式来检测当前iptables来验证禁止规则。 $ sudo iptables --list -n @@ -110,9 +112,10 @@ RETURN all -- 0.0.0.0/0 0.0.0.0/0 ``` 如果你想要从fail2ban中解锁某个IP地址,你可以使用iptables命令: + $ sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP -当然你可以使用上述的iptables命令手动地检验和管理fail2ban的IP阻塞列表,但实际上有一个适当的方法就是使用fail2ban-client命令行工具。这个命令不仅允许你对"ssh-iptables"监狱进行管理,也可以通过一个标准的命令行接口对其他任何的fail2ban监狱类型。 +当然你可以使用上述的iptables命令手动地检验和管理fail2ban的IP阻塞列表,但实际上有一个适当的方法就是使用fail2ban-client命令行工具。这个命令不仅允许你对"ssh-iptables"监狱进行管理,同时也是一个标准的命令行接口,可以管理其他类型的fail2ban监狱。 为了检验fail2ban状态(会显示出当前活动的监狱列表): @@ -132,8 +135,9 @@ RETURN all -- 0.0.0.0/0 0.0.0.0/0 ![](https://farm8.staticflickr.com/7465/16065915571_b215a8b344_b.jpg) -注意,如果你停止了Fail2ban,那么所有的IP地址都会被解锁。当你重启Fail2ban,它会从/etc/log/secure(或 /var/log/auth.log)中找到异常的IP地址列表,如果这些异常对象的流逝时间仍然在禁止时间内,那么Fail2ban会重新将这些IP地址禁止。 -### Set Fail2ban to Auto-start on Boot +注意,如果你停止了Fail2ban 服务,那么所有的IP地址都会被解锁。当你重启 Fail2ban,它会从/etc/log/secure(或 /var/log/auth.log)中找到异常的IP地址列表,如果这些异常地址的发生时间仍然在禁止时间内,那么Fail2ban会重新将这些IP地址禁止。 + +### 设置 Fail2ban 自动启动 一旦你成功地测试了fail2ban之后,最后一个步骤就是在你的服务器上让其在开机时自动启动。在基于Debian的发行版中,fail2ban已经默认让自动启动生效。在基于Red-Hat的发行版中,按照下面的方式让自动启动生效。 @@ -147,14 +151,15 @@ RETURN all -- 0.0.0.0/0 0.0.0.0/0 ### 总结 -在该教程中,我演示了如何安装并配置fail2ban来保护一个SSH服务器。当然fail2ban可以缓解暴力密码攻击,但是请注意,这并不能保护SSH服务器避免来自复杂分布的暴力破解组织,这些攻击者通过使用成千上万个机器控制的IP地址来绕过fail2ban的防御机制。 +在该教程中,我演示了如何安装并配置fail2ban来保护一个SSH服务器。当然fail2ban可以缓解暴力密码攻击,但是请注意,这并不能保护SSH服务器避免来自复杂的分布式暴力破解组织,这些攻击者通过使用成千上万个机器控制的IP地址来绕过fail2ban的防御机制。 + ----------- -via: http://linoxide.com/tools/linux-compress-decompress-tools/ +via: http://xmodulo.com/how-to-protect-ssh-server-from-brute-force-attacks-using-fail2ban.html 作者:[Dan Nanni][a] 译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -162,4 +167,4 @@ via: http://linoxide.com/tools/linux-compress-decompress-tools/ [1]:http://xmodulo.com/how-to-force-ssh-login-via-public-key-authentication.html [2]:http://xmodulo.com/two-factor-authentication-ssh-login-linux.html [3]:http://www.fail2ban.org/ -[4]:http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html +[4]:http://linux.cn/article-2324-1.html From a98199820b7701957281103e500751fcdacfccdf Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 16 Mar 2015 22:08:23 +0800 Subject: [PATCH 583/725] PUB:20150104 How to configure fail2ban to protect Apache HTTP server @geekpi --- ... fail2ban to protect Apache HTTP server.md | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) rename {translated/tech => published}/20150104 How to configure fail2ban to protect Apache HTTP server.md (61%) diff --git a/translated/tech/20150104 How to configure fail2ban to protect Apache HTTP server.md b/published/20150104 How to configure fail2ban to protect Apache HTTP server.md similarity index 61% rename from translated/tech/20150104 How to configure fail2ban to protect Apache HTTP server.md rename to published/20150104 How to configure fail2ban to protect Apache HTTP server.md index 8f89c4b388..2d7b3efc88 100644 --- a/translated/tech/20150104 How to configure fail2ban to protect Apache HTTP server.md +++ b/published/20150104 How to configure fail2ban to protect Apache HTTP server.md @@ -1,16 +1,16 @@ -如何配置fail2ban来保护Apache服务器 +如何配置 fail2ban 来保护 Apache 服务器 ================================================================================ -生产环境中的Apache服务器可能会受到不同的攻击。攻击者或许试图通过暴力攻击或者执行恶意脚本来获取未经授权或者禁止访问的目录。一些恶意爬虫或许会扫描你网站下的任意安全漏洞,或者手机email地址或者web表格来发送垃圾邮件。 +生产环境中的 Apache 服务器可能会受到不同的攻击。攻击者或许试图通过暴力攻击或者执行恶意脚本来获取未经授权或者禁止访问的目录。一些恶意爬虫或许会扫描你网站下的各种安全漏洞,或者通过收集email地址和web表单来发送垃圾邮件。 -Apache服务器具有综合的日志功能来捕捉不同表明是攻击的异常事件。然而,它还不能系统地解析具体的apache日志并迅速地反应到潜在的攻击(比如,禁止/解禁IP地址)。这时候`fail2ban`可以解救这一切,解放了系统管理员的工作。 +Apache服务器具有全面的日志功能,可以捕捉到各种攻击所反映的异常事件。然而,它还不能系统地解析具体的apache 日志并迅速地对潜在的攻击进行反应(比如,禁止/解禁IP地址)。这时候`fail2ban`可以解救这一切,解放了系统管理员的工作。 -`fail2ban`是一款入侵防御工具,可以基于系统日志检测不同的工具并且可以自动采取保护措施比如:通过`iptables`禁止ip、阻止/etc/hosts.deny中的连接、或者通过邮件通知事件。fail2ban具有一系列预定义的“监狱”,它使用特定程序日志过滤器来检测通常的攻击。你也可以编写自定义的规则来检测来自任意程序的攻击。 +`fail2ban`是一款入侵防御工具,可以基于系统日志检测不同的工具并且可以自动采取保护措施比如:通过`iptables`禁止ip、通过 /etc/hosts.deny 阻止连接、或者通过邮件发送通知。fail2ban具有一系列预定义的“监狱”,它使用特定程序日志过滤器来检测通常的攻击。你也可以编写自定义的规则来检测来自任意程序的攻击。 在本教程中,我会演示如何配置fail2ban来保护你的apache服务器。我假设你已经安装了apache和fail2ban。对于安装,请参考[另外一篇教程][1]。 ### 什么是 Fail2ban 监狱 ### -让我们更深入地了解fail2ban监狱。监狱定义了具体的应用策略,它会为指定的程序触发一个保护措施。fail2ban在/etc/fail2ban/jail.conf 下为一些流行程序如Apache、Dovecot、Lighttpd、MySQL、Postfix、[SSH][2]等预定义了一些监狱。每个依赖于特定的程序日志过滤器(在/etc/fail2ban/fileter.d 下面)来检测通常的攻击。让我看一个例子监狱:SSH监狱。 +让我们更深入地了解 fail2ban 监狱。监狱定义了具体的应用策略,它会为指定的程序触发一个保护措施。fail2ban在 /etc/fail2ban/jail.conf 下为一些流行程序如Apache、Dovecot、Lighttpd、MySQL、Postfix、[SSH][2] 等预定义了一些监狱。每个监狱都通过特定的程序日志过滤器(在/etc/fail2ban/fileter.d 下面)来检测通常的攻击。让我看一个例子监狱:SSH监狱。 [ssh] enabled = true @@ -24,15 +24,15 @@ SSH监狱的配置定义了这些参数: - **[ssh]**: 方括号内是监狱的名字。 - **enabled**:是否启用监狱 -- **port**: 端口的数字 (或者数字对应的名称). -- **filter**: 检测攻击的检测规则 -- **logpath**: 检测的日志文件 -- **maxretry**: 禁止前失败的最大数字 -- **banaction**: 禁止操作 +- **port**: 端口号(或者对应的服务名称) +- **filter**: 检测攻击的日志解析规则 +- **logpath**: 所检测的日志文件 +- **maxretry**: 最大失败次数 +- **banaction**: 所进行的禁止操作 -定义配置文件中的任意参数都会覆盖相应的默认配置`fail2ban-wide` 中的参数。相反,任意缺少的参数都会使用定义在[DEFAULT]字段的值。 +定义在监狱配置中的任意参数都会覆盖`fail2ban-wide` 中相应的默认配置参数。相反,任何缺少的参数都会使用定义在[DEFAULT] 字段的默认值。 -预定义日志过滤器都必须在/etc/fail2ban/filter.d,可以采取的操作在/etc/fail2ban/action.d。 +预定义的日志过滤器都放在/etc/fail2ban/filter.d,而可以采取的禁止操作放在 /etc/fail2ban/action.d。 ![](https://farm8.staticflickr.com/7538/16076581722_cbca3c1307_b.jpg) @@ -40,7 +40,7 @@ SSH监狱的配置定义了这些参数: ### 启用预定义的apache监狱 ### -`fail2ban`的默认安装为Apache服务提供了一些预定义监狱以及过滤器。我要启用这些内建的Apache监狱。由于Debian和红买配置的稍微不同,我会分别它们的配置文件。 +`fail2ban`的默认安装为Apache服务提供了一些预定义监狱和过滤器。我要启用这些内建的Apache监狱。由于Debian和RedHat配置的稍微不同,我会分别提供它们的配置文件。 #### 在Debian 或者 Ubuntu启用Apache监狱 #### @@ -50,7 +50,7 @@ SSH监狱的配置定义了这些参数: ---------- - # detect password authentication failures + # 检测密码认证失败 [apache] enabled = true port = http,https @@ -58,7 +58,7 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/apache*/*error.log maxretry = 6 - # detect potential search for exploits and php vulnerabilities + # 检测漏洞和 PHP 脆弱性扫描 [apache-noscript] enabled = true port = http,https @@ -66,7 +66,7 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/apache*/*error.log maxretry = 6 - # detect Apache overflow attempts + # 检测 Apache 溢出攻击 [apache-overflows] enabled = true port = http,https @@ -74,7 +74,7 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/apache*/*error.log maxretry = 2 - # detect failures to find a home directory on a server + # 检测在服务器寻找主目录的尝试 [apache-nohome] enabled = true port = http,https @@ -100,7 +100,7 @@ SSH监狱的配置定义了这些参数: ---------- - # detect password authentication failures + # 检测密码认证失败 [apache] enabled = true port = http,https @@ -108,7 +108,7 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/httpd/*error_log maxretry = 6 - # detect spammer robots crawling email addresses + # 检测抓取邮件地址的爬虫 [apache-badbots] enabled = true port = http,https @@ -117,7 +117,7 @@ SSH监狱的配置定义了这些参数: bantime = 172800 maxretry = 1 - # detect potential search for exploits and php vulnerabilities + # 检测漏洞和 PHP 脆弱性扫描 [apache-noscript] enabled = true port = http,https @@ -125,7 +125,7 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/httpd/*error_log maxretry = 6 - # detect Apache overflow attempts + # 检测 Apache 溢出攻击 [apache-overflows] enabled = true port = http,https @@ -133,7 +133,7 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/httpd/*error_log maxretry = 2 - # detect failures to find a home directory on a server + # 检测在服务器寻找主目录的尝试 [apache-nohome] enabled = true port = http,https @@ -141,9 +141,9 @@ SSH监狱的配置定义了这些参数: logpath = /var/log/httpd/*error_log maxretry = 2 - # detect failures to execute non-existing scripts that - # are associated with several popular web services - # e.g. webmail, phpMyAdmin, WordPress + # 检测执行不存在的脚本的企图 + # 这些都是流行的网站服务程序 + # 如:webmail, phpMyAdmin,WordPress port = http,https filter = apache-botsearch logpath = /var/log/httpd/*error_log @@ -175,7 +175,7 @@ SSH监狱的配置定义了这些参数: ![](https://farm8.staticflickr.com/7572/15891521967_5c6cbc5f8f_c.jpg) -你也可以手动禁止或者解禁IP地址 +你也可以手动禁止或者解禁IP地址: 要用制定监狱禁止IP: @@ -187,7 +187,7 @@ SSH监狱的配置定义了这些参数: ### 总结 ### -本篇教程解释了fail2ban监狱如何工作以及如何使用内置的监狱来保护Apache服务器。依赖于你的环境以及要保护的web服务器类型,你或许要适配已存在的监狱或者编写自定义监狱和日志过滤器。查看outfail2ban的[官方Github页面][3]来获取最新的监狱和过滤器示例。 +本篇教程解释了fail2ban监狱如何工作以及如何使用内置的监狱来保护Apache服务器。依赖于你的环境以及要保护的web服务器类型,你或许要调整已有的监狱或者编写自定义监狱和日志过滤器。查看outfail2ban的[官方Github页面][3]来获取最新的监狱和过滤器示例。 你有在生产环境中使用fail2ban么?分享一下你的经验吧。 @@ -197,11 +197,11 @@ via: http://xmodulo.com/configure-fail2ban-apache-http-server.html 作者:[Dan Nanni][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://xmodulo.com/author/nanni -[1]:http://xmodulo.com/how-to-protect-ssh-server-from-brute-force-attacks-using-fail2ban.html -[2]:http://xmodulo.com/how-to-protect-ssh-server-from-brute-force-attacks-using-fail2ban.html +[1]:http://linux.cn/article-5067-1.html +[2]:http://linux.cn/article-5067-1.html [3]:https://github.com/fail2ban/fail2ban \ No newline at end of file From 38c9a62ca4bf99c8c776b75ce963d42ceb047be6 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Mar 2015 00:22:09 +0800 Subject: [PATCH 584/725] PUB:20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system @FSSlc --- ...ning up Ubuntu 14.10,14.04,13.10 system.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) rename {translated/tech => published}/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md (54%) diff --git a/translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md b/published/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md similarity index 54% rename from translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md rename to published/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md index a49467781e..ff995682ad 100644 --- a/translated/tech/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md +++ b/published/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md @@ -1,10 +1,10 @@ -清理 Ubuntu 14.10,14.04,13.10 系统 +如何清理你的 Ubuntu 14.10/14.04/13.10 系统 ================================================================================ 前面我们已经讨论了[如何清理 Ubuntu GNU/Linux 系统][1],这篇教程将在原有教程的基础上,增加对新的 Ubuntu 发行版本的支持,并介绍更多的工具。 假如你想清理你的 Ubuntu 主机,你可以按照以下的一些简单步骤来移除所有不需要的垃圾文件。 -### 移除多余软件包 ### +## 移除多余软件包 ## 这又是一个内置功能,但这次我们不必使用新得立包管理软件(Synaptic Package Manager),而是在终端中达到目的。 @@ -14,7 +14,7 @@ sudo apt-get autoclean ``` -这便激活了包清除命令。这个命令所做的工作是: 自动清除那些当你安装或升级程序时系统所缓存的 `.deb` 包(即清除 `/var/cache/apt/archives` 目录,不过只清理过时的包)。如果需要使用 清除命令,只需在终端窗口中键入以下命令: +这便激活了包清除命令。这个命令所做的工作是: 自动清除那些当你安装或升级程序时系统所缓存的 `.deb` 包(即清除 `/var/cache/apt/archives` 目录,不过只清理过时的包)。如果需要使用清除命令,只需在终端窗口中键入以下命令: ``` sudo apt-get clean @@ -26,9 +26,9 @@ sudo apt-get clean sudo apt-get autoremove ``` -### 移除不需要的本地数据 ### +## 移除不需要的本地化数据 ## -为达到此目的,我们需要安装 `localepurge` 软件,它将自动移除一些不需要的本地数据。这个软件是一个简单的脚本,它将从那些 不再需要的本地文件和本地联机手册( man pages ) 所占用的空间中回收磁盘空间。这个软件将在任何 apt 安装命令运行时 被自动激活。 +为达到此目的,我们需要安装 `localepurge` 软件,它将自动移除一些不需要的本地化数据(LCTT 译注:即各种语言翻译)。这个软件是一个简单的脚本,它将从那些不再需要的本地化文件和本地化联机手册( man pages ) 所占用的空间中回收磁盘空间。这个软件将在任何 apt 安装命令运行时 被自动激活。 在 Ubuntu 中安装 `localepurge` @@ -36,7 +36,7 @@ sudo apt-get autoremove sudo apt-get install localepurge ``` -在通过 `apt-get install` 安装任意软件后, localepurge 将移除所有 不是使用你系统中所设定语言的 翻译文件和翻译的联机手册。 +在通过 `apt-get install` 安装任意软件后, localepurge 将移除所有不是使用你系统中所设定语言的翻译文件和翻译的联机手册。 假如你想设置 `localepurge`,你需要编辑 `/ect/locale.nopurge` 文件。 @@ -54,9 +54,9 @@ sudo apt-get install discus > localepurge: Disk space freed in /usr/share/locale: 41860K -### 移除 孤包 ### +## 移除孤包 ## -假如你想移除孤包,你需要安装 `deborphan` 软件: +假如你想移除孤包,你需要安装 `deborphan` 软件: 在 Ubuntu 中安装 `deborphan` : @@ -72,11 +72,11 @@ sudo apt-get install deborphan sudo deborphan | xargs sudo apt-get -y remove --purge ``` -### 使用 GtkOrphan 来移除 孤包 ### +### 使用 GtkOrphan 来移除孤包 ### -`GtkOrphan` (一个针对 debian 系发行版本的 Perl/Gtk2 应用) 是一个分析 用户安装过程状态并查找孤立库文件的图形化工具, 它为 `deborphan` 提供了一个 GUI 前端,并具备移除软件包的功能。 +`GtkOrphan` (一个针对 debian 系发行版本的 Perl/Gtk2 应用) 是一个分析用户安装过程状态并查找孤立库文件的图形化工具,它为 `deborphan` 提供了一个 GUI 前端,并具备移除软件包的功能。 -### 在 Ubuntu 中安装 GtkOrphan ### +#### 在 Ubuntu 中安装 GtkOrphan #### 打开终端并运行如下命令: @@ -90,11 +90,11 @@ sudo apt-get install gtkorphan ### 使用 Wajig 移除孤包 ### -`Wajig`是 Debian 包管理系统中一个简单的软件包管理前端。它将 apt、apt-cache、 dpkg、 /etc/init.d 中的脚本等 通过一个单一命令集成在一起,它的设计初衷是 使用简单 和 为它所包含的函数提供丰富的文档。 +`Wajig`是 Debian 包管理系统中一个简单的软件包管理前端。它将 apt、apt-cache、 dpkg、 /etc/init.d 中的脚本等 通过一个单一命令集成在一起,它的设计初衷是使用简单和为它的所有功能提供丰富的文档。 -通过适当的 `sudo`配置,大多数(如果不是全部)的软件包安装和创建等任务可以通过 一个用户 shell 来完成。`Wajig` 也适用于一般的系统管理。另外,一个 Gnome GUI 命令 `gjig`也被囊括在这个软件包之中。 +通过适当的 `sudo`配置,大多数(如果不是全部)的软件包安装和创建等任务可以通过一个用户 shell 来完成。`Wajig` 也适用于一般的系统管理。另外,一个 Gnome GUI 命令 `gjig`也被囊括在这个软件包之中。 -### 在 Ubuntu 中安装 Wajig ### +#### 在 Ubuntu 中安装 Wajig #### 打开终端并运行如下命令: @@ -102,13 +102,13 @@ sudo apt-get install gtkorphan sudo apt-get install wajig ``` -### Debfoster --- 跟踪你在安装过程中的操作 ### +## Debfoster --- 跟踪你在安装过程中的操作 ## -debfoster 将会维护一个列有 被明确要求安装的软件包的列表,但不包括那些作为某个软件的依赖而被安装的软件包。参数是完全可选的,你甚至可以使得 在 dpkg 和/或 apt-get 每次运行之后的每一秒内 激活 debfoster 。 +debfoster 将会维护一个列有被明确需要安装的软件包的列表,但不包括那些作为某个软件的依赖而被安装的软件包。参数是完全可选的,你甚至可以使得在 dpkg 和/或 apt-get 每次运行之后马上激活 debfoster 。 另外,你还可以在命令行中使用 debfoster 来安装或移除某些特定的软件包。那些后缀为 `---` 的软件包将会被移除,而没有后缀的软件包将会被安装。 -假如一个新的软件包或 debfoster 注意到 作为某个软件包的依赖的软件包 是一个孤包,则 debfoster 将会询问你下一步如何操作。若你决定保留这个孤包, debfoster 将只会进行记录并继续安装过程;若你觉得这个软件包不足以引起你的兴趣,在 debfoster 询问这个问题后,它将移除这个软件包。进一步的,如果你的决定使得其他的软件包变为孤包,更多的提问将会接踵而来。 +假如一个新的软件包或 debfoster 注意到作为某个软件包的依赖的软件包是一个孤包,则 debfoster 将会询问你下一步如何操作。若你决定保留这个孤包, debfoster 将只会进行记录并继续安装过程;若你觉得这个软件包不足以引起你的兴趣,在 debfoster 询问这个问题后,它将移除这个软件包。进一步的,如果你的决定使得其他的软件包变为孤包,更多的提问将会接踵而来。 ### 在 Ubuntu 中安装 debfoster ### @@ -120,13 +120,13 @@ sudo apt-get install debfoster ### 使用 debfoster ### -为了创建一个 初始跟踪文件,可以使用如下命令: +为了创建一个初始跟踪文件,可以使用如下命令: ``` sudo debfoster -q ``` -你总可以编辑 `/var/lib/debfoster/keepers` 文件,来定义那些 你想留在系统中的软件包。 +你总可以编辑 `/var/lib/debfoster/keepers` 文件,来定义那些你想留在系统中的软件包。 为了编辑这个文件,可以键入: @@ -134,7 +134,7 @@ sudo debfoster -q sudo vi /var/lib/debfoster/keepers ``` -强制使 debfoster 去移除 所有没有被列在上面这个文件的软件包 或 安装作为某些列在这个文件中的软件包的依赖, 它也会添加所有在这个列表中没有被安装的软件包。若要根据这个列表来执行相关操作,只需执行 +要强制使 debfoster 去移除所有没有被列在上面这个文件的软件包,或安装作为某些列在这个文件中的软件包的依赖,它也同时会添加所有在这个列表中没有被安装的软件包。若要根据这个列表来执行相关操作,只需执行: ``` sudo debfoster -f @@ -146,9 +146,9 @@ sudo debfoster -f sudo debfoster ``` -### xdiskusage -- 查看你的硬盘空间都去哪儿了 ### +## xdiskusage -- 查看你的硬盘空间都去哪儿了 ## -图形化地展示磁盘使用情况的 du.xdiskusage 是一个用户友好型程序,它将为你展示你所有磁盘的使用情况。 它是在 Phillip C. Dykstra 所写的 “xdu” 程序的基础上设计的。一些改变使得它可以为你运行 “du”命令,并显示磁盘的剩余空间,并且假如你想清晰地了解你的磁盘空间都去哪儿了,它还可以生成一个 PostScript 格式的名为 display.xdiskusage 的文件。 +图形化地展示磁盘使用情况的 du。xdiskusage 是一个用户友好型的程序,它将为你展示你所有磁盘的使用情况。 它是在 Phillip C. Dykstra 所写的 “xdu” 程序的基础上设计的。做了一些修改以使得它可以为你运行 “du”命令,并显示磁盘的剩余空间,并且假如你想清晰地了解你的磁盘空间都去哪儿了,它还可以生成一个 PostScript 格式的名为 display.xdiskusage 的文件。 ### 在 Ubuntu 中安装 xdiskusage ### @@ -169,9 +169,9 @@ sudo xdiskusage ![](http://www.ubuntugeek.com/wp-content/uploads/2015/01/5.png) -### Bleachbit ### +## Bleachbit ## -BleachBit 能快速地释放磁盘空间并不知疲倦地保护你的隐私。它可以 释放缓存,删除 cookie,清除 Internet 上网历史,粉碎临时文件,删除日志,丢弃你所不知道存在何处的垃圾。为 Linux 和 Windows 系统设计,它支持擦除清理数以千计的应用程序,如 Firefox, Internet Explorer, Adobe Flash, Google Chrome, Opera, Safari 等等。除了简单地删除文件,BleachBit 还包括许多高级功能,诸如 粉碎文件以防止恢复,擦除磁盘空间 来隐藏被其他应用程序所删除文件的痕迹,为火狐“除尘”,使其速度更快等。比免费更好,BleachBit 是一个开源软件。 +BleachBit 能快速地释放磁盘空间并不知疲倦地保护你的隐私。它可以释放缓存,删除 cookie,清除 Internet 上网历史,粉碎临时文件,删除日志,丢弃你所不知道存在何处的垃圾。为 Linux 和 Windows 系统而设计,它支持擦除清理数以千计的应用程序,如 Firefox, Internet Explorer, Adobe Flash, Google Chrome, Opera, Safari 等等。除了简单地删除文件,BleachBit 还包括许多高级功能,诸如粉碎文件以防止恢复,擦除磁盘空间来隐藏被其他应用程序所删除文件的痕迹,为火狐“除尘”,使其速度更快等。比免费更好,BleachBit 是一个开源软件。 ### 在 Ubuntu 中安装 Bleachbit ### @@ -195,10 +195,10 @@ via: http://www.ubuntugeek.com/cleaning-up-a-ubuntu-gnulinux-system-updated-with 作者:[ruchi][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.ubuntugeek.com/author/ubuntufix [1]:http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html -[2]:http://www.ubuntugeek.com/www.ubuntugeek.com/install-ubuntu-tweak-on-ubuntu-14-10.html +[2]:http://linux.cn/article-3335-1.html From 3d6d6d5cee8966a638602d202fc8e4b36243e64e Mon Sep 17 00:00:00 2001 From: disylee Date: Tue, 17 Mar 2015 11:27:30 +0800 Subject: [PATCH 585/725] Update 20150215 How to analyze and view Apache web server logs interactively on Linux.md by disylee --- ...e and view Apache web server logs interactively on Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md b/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md index f2f7a9a270..fdcc127252 100644 --- a/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md +++ b/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md @@ -1,3 +1,4 @@ +disylee 来一篇~ How to analyze and view Apache web server logs interactively on Linux ================================================================================ Whether you are in the web hosting business, or run a few web sites on a VPS yourself, chances are you want to display visitor statistics such as top visitors, requested files (dynamic or static), used bandwidth, client browsers, and referring sites, and so forth. @@ -140,4 +141,4 @@ via: http://xmodulo.com/interactive-apache-web-server-log-analyzer-linux.html [3]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html [4]:http://goaccess.io/download#dependencies [5]:http://goaccess.io/download -[6]:http://httpd.apache.org/docs/2.4/logs.html \ No newline at end of file +[6]:http://httpd.apache.org/docs/2.4/logs.html From bc084acc4aa8c9fed4d9474b65b91cfe1aad5a6f Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 17 Mar 2015 17:06:55 +0800 Subject: [PATCH 586/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ased Install It In Ubuntu And Linux Mint.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md index 6c0ee2740c..bf0a698a16 100644 --- a/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md +++ b/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md @@ -3,26 +3,26 @@ Pinta 1.6发布了!在 Ubuntu 和 Linux Mint 上安装Pinta ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Pinta_Ubuntu_Linux.jpeg) -[Pinta][1] 是一款免费开源的绘图应用软件,它在Linux用户中很受欢迎。你也可以把它看作是**开源的微软画图软件的替代品**。Pinta 可以在很多平台上使用,如 Linux,Windows 以及 Mac OS X。 +[Pinta][1] 是一款免费的开源绘图应用软件,它在Linux用户中很受欢迎。你也可以把它看作是**微软画图软件的开源替代品**。Pinta 可以在很多平台上使用,如 Linux、Windows 以及 Mac OS X。 -Gimp 作为全功能图像编辑软件而流行,相比Pinta则单纯是一种绘图工具。我常用它在我的截图上画箭头和曲线,而且我可以说这是我在 Linux 上最喜欢的绘图应用软件。 +Gimp 作为一款功能齐全的图像编辑软件而流行,相比Pinta则单纯是一种绘图工具。我常用它在我的截图上画箭头和曲线,而且我可以说这是我在 Linux 上最喜欢的绘图应用软件。 ### Pinta 1.6 的新功能### -经一年之后,Pinta发布了1.6版本,修复了50个漏洞并且加入了一些新功能。加入的新功能如下: +经过一年多的时间,Pinta发布了1.6版本,修复了50多个漏洞并且增加了一些新功能。增加的新功能如下: - 线条工具现在支持绘制曲线和箭头 -- 绘制好的图形可以被编辑 +- 绘制好的图形可以编辑形状 - 所有的图形工具现在支持绘制虚线 -- 所有的选择工具现在支持并集,排除,异或和交集模式 +- 所有的选择工具现在支持并集、排除,异或和交集模式 - 插件可通过插件管理器安装 - 命令行中加入新选项 -新版本同时也修复了一个很烦人的漏洞——右键文件,[在打开方式中使用Pinta不能打开文件][2]。你可以在[发布说明][3]阅读所有的改变。 +新版本同时也修复了一个很烦人的漏洞——右键菜单选项,[在打开方式中使用Pinta不能打开文件][2]。你可以在[发布说明][3]阅读所有的改变。 ### 在 Ubuntu 和 Linux Mint 中安装 Pinta 1.6### -Pinta 1.5 可以在 Ubuntu 14.04,14.10,Linux Mint 17 和 elementary OS 中使用。如果你想安装最新的1.6版本,你可以使用 Pinta 团队的官方PPA源。如果你已经安装了 Pinta 1.5 也不必担心。再安装一次将会使版本升级。 +Pinta 1.5 可以在 Ubuntu 14.04,14.10,Linux Mint 17 和 elementary OS 中使用。如果你想安装最新的 1.6 版本,你可以使用 Pinta 团队的官方PPA源。如果你已经安装了 Pinta 1.5 也不必担心。再安装一次将会使版本升级。 打开终端并使用以下命令: @@ -38,7 +38,7 @@ via: http://itsfoss.com/pinta-1-6-ubuntu-linux-mint/ 作者:[Abhishek][a] 译者:[linuhap](https://github.com/linuhap) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -47,4 +47,4 @@ via: http://itsfoss.com/pinta-1-6-ubuntu-linux-mint/ [2]:http://itsfoss.com/add-application-list-open-applications-ubuntu-1310/ [3]:http://pinta-project.com/releases/1-6 [4]:http://pinta-project.com/releases -[5]:http://itsfoss.com/image-applications-ubuntu-linux/ \ No newline at end of file +[5]:http://itsfoss.com/image-applications-ubuntu-linux/ From 8874d21c4bce420191b1bb88eed3b9f188ce07fc Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 17 Mar 2015 18:01:10 +0800 Subject: [PATCH 587/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md (100%) diff --git a/translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/published/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md similarity index 100% rename from translated/share/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md rename to published/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md From 8f21e2b84a86d494c138ab992bfd20d05fd355ca Mon Sep 17 00:00:00 2001 From: VicYu Date: Tue, 17 Mar 2015 21:12:28 +0800 Subject: [PATCH 588/725] Update 20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md --- ...o convert between local time and UNIX timestamp in Perl.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md index ecd44c9c75..ab8efa8f19 100644 --- a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md +++ b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md @@ -1,3 +1,5 @@ + Vic020 + Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl ================================================================================ > **Question**: I need to convert readable date and time to a corresponding UNIX timestamp (i.e., Epoch time), or vice versa in a Perl program. Can you show me Perl code examples of converting date/time to UNIX timestamp, or conversely, converting UNIX timestamp to human-readable date and time? @@ -58,4 +60,4 @@ via: http://ask.xmodulo.com/convert-local-time-unix-timestamp-perl.html 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://ask.xmodulo.com/author/nanni \ No newline at end of file +[a]:http://ask.xmodulo.com/author/nanni From 7b900618e1c4f1aa77804760de44cedd04f42133 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Tue, 17 Mar 2015 21:14:12 +0800 Subject: [PATCH 589/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translated/talk/20150127 Windows 10 versus Linux.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translated/talk/20150127 Windows 10 versus Linux.md b/translated/talk/20150127 Windows 10 versus Linux.md index c54e8ff1ee..f0c78dfb4d 100644 --- a/translated/talk/20150127 Windows 10 versus Linux.md +++ b/translated/talk/20150127 Windows 10 versus Linux.md @@ -2,15 +2,15 @@ Windows 10 VS Linux ================================================================================ ![](https://farm4.staticflickr.com/3852/14863156322_e4edbae70e_t.jpg) -如今Windows 10好像占据了绝大部分头条,甚至在一些Linux圈里也是一样。最突出的是betanews.com的Brian Fagioli说Windows 10已经为Linux桌面系统敲响了丧钟,Microsoft如今宣布将为忠实的Windows用户免费提供windows 10,Steven J. Vaughan-Nichols说这是一个最新的开源公司,然后Matt Hartley比较了Windows 10和Ubuntu,Jesse Smith发表了从Linux用户角度对Windows 10的评估。 +前阵子 Windows 10 好像占据了绝大部分头条,甚至在一些Linux圈里也是一样。最具代表性的是 betanews.com 的 Brian Fagioli 说 Windows 10 已经为 Linux 桌面系统敲响了丧钟,Microsoft 如今宣布将为忠实的 Windows 用户免费提供 Windows 10,Steven J. Vaughan-Nichols 说这是一个最新的开源公司,然后 Matt Hartley 比较了 Windows 10 和 Ubuntu,Jesse Smith 从 Linux 用户的视角对 Windows 10 做出评估。 -**Windows 10**,在Microsoft[声明][1]说将免费提供给Windows 7及以上用户时,成为如今闲聊的热门话题。在Linuxland这里,也没有被忽视。betanews.com的Brian Fagioli,一个自封的Linux粉丝,如今这样说,“Windows 10把门彻底关上了。Linux桌面元年将永远不会到来。安息吧。”[Fagioli解释][2]说Microsoft倾听了用户的抱怨而且并不只是记录一下,而是解决的更好。他说Linux错失了由Windows 8不受欢迎以及巨大失败带来的积累机会。然后他总结,拜Windows 10所赐,处于边缘地带的我们只能接受一个“破碎的梦”。 +**Windows 10**,在 Microsoft [声明][1]说将免费提供给 Windows 7 及以上用户,这件事成为如今大家闲聊的热门话题。在 Linuxland 这里,也没有被忽视。betanews.com 的 Brian Fagioli,一个自封的 Linux 粉丝,如今这样说,“ Windows 10 把门彻底关上了。Linux 桌面元年将永远不会到来,歇歇吧。”[Fagioli解释][2]说 Microsoft 倾听了用户的抱怨而且并不只是记录一下,还更好地解决了这些问题。他说 Linux 错失了由 Windows 8 不受欢迎以及巨大失败带来的机会。然后他总结,拜 Windows 10 所赐,处于边缘地带的我们只能接受一个“破碎的梦”。 -**不**过,来自闻名的Distrowatch.com的Jesse Smith,说Microsoft并没有提供一个很明显的下载方式,不过确实可行而且他也升级了。安装程序非常简单,除了分区功能很有限甚至有点吓人。在最终启动进入Windows 10后,Smith说界面布局很“松散”,没有Win7里被很多人讨厌的大量分散注意的元素,开始菜单又回来了,取消了欢迎屏幕。据Smith所说,还有一个和Ubuntu以及Android很类似的新的包管理程序,不过需要Microsoft在线账户才可以使用。[Smith的总结][3]里有这样一条,“感觉Windows 10像是Android的早期beta版本,一个设计成时刻保持在线的消费者操作系统。而不像是一个我能用来完成工作的操作系统。” +不过,来自闻名的 Distrowatch.com 的 Jesse Smith 说 Microsoft 并没有提供一个很明显的下载方式,不过确实可行而且它也升级了。安装程序非常简单,除了分区功能很有限甚至有点吓人。在最终启动进入 Windows 10 后,Smith说界面布局很“松散”,没有 Win7 里被很多人讨厌的大量分散注意的元素,开始菜单又回来了,取消了欢迎屏幕。据Smith所说,还有一个很类似 Ubuntu 和 Android 的新的包管理程序,不过需要 Microsoft 在线账户才可以使用。[Smith的总结][3]里有这样一条,“感觉 Windows 10 像是 Android 的早期 beta 版本,一个设计成时刻保持在线的消费者操作系统。而不像是一个我能用来完成工作的操作系统。” -**S**mith的[完整文章][4]里比较了Windows 10和Linux的大量细节,不过Matt Hartley发表了一个实在的Windows 10 vs Linux的报告。[他说][5]两者的安装程序都很直观和简单,Windows的双启动仍然没那么容易,Windows默认提供了加密而Ubuntu只提供了配置选项。在桌面上Hartley说Windows 10“纠结地丢弃了它Windows 8的根。”他觉得Windows 10的Windows商店比Ubuntu的漂亮很多,但是实在不喜欢通过“一切都是卡片”的方式来查看新安装的应用。Hartley这样总结,“首先是它将为大量Windows用户提供免费升级。这意味着大大降低了进入和升级门槛。第二,这次看起来Microsoft真的在全力以赴地倾听他们用户的需求了。” +**S**mith的[完整文章][4]里比较了 Windows 10 和 Linux 的大量细节,不过 Matt Hartley 发表了一份实在的 Windows 10 vs Linux 的报告。[他说][5]两者的安装程序都很直观和简单,Windows 的双启动仍然没那么容易,Windows 默认提供了加密而 Ubuntu 只提供了配置选项。在桌面方面 Hartley 说 Windows 10 “纠结地丢弃了它 Windows 8 的根。”他觉得 Windows 10 的 Windows 商店比 Ubuntu 的漂亮很多,但是实在不喜欢通过“一切都是卡片”的方式来查看新安装的应用。Hartley这样总结,“首先是它将为大量 Windows 用户提供免费升级。这意味着大大降低了进入和升级门槛。第二,看起来 Microsoft 这次真的在全力以赴地倾听他们的用户需求了。” -**S**teven J. Vaughan-Nichols如今声称Microsoft是最新的开源公司;不仅因为它将放出Windows 10的免费升级,而且Microsoft正在从一个软件公司转型为一个软件服务公司。然后,据Vaughan-Nichols所说,Microsoft需要开源来完成这次转型。从Novell/SUSE开始,他们已经在这一块工作好多年了。不仅如此,他们也发布过开源软件(不管什么目的)。[Vaughan-Nichols总结][6],“很多人都没注意到,但是Microsoft -- 就是那个Microsoft -- 已经成为一家开源公司。” +**S**teven J. Vaughan-Nichols 如今声称 Microsoft 是最新的开源公司;不仅因为它将发布 Windows 10 的免费升级,而且 Microsoft 正在从一个软件公司转型为一个软件服务公司。然后,据 Vaughan-Nichols 所说,Microsoft 需要开源来完成这次转型。从Novell/SUSE开始,他们已经致力于这一块儿好多年了。不仅如此,他们也发布过开源软件(不管什么目的)。[Vaughan-Nichols总结][6],“很多人不这么认为,但是Microsoft——就是Microsoft——已经成为一家开源公司。” -------------------------------------------------------------------------------- @@ -18,7 +18,7 @@ via: http://ostatic.com/blog/windows-10-versus-linux 作者:[Susan Linton][a] 译者:[zpl1025](https://github.com/zpl1025) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 81cadb54f016dcb925ecd40f8179e510e484b9cc Mon Sep 17 00:00:00 2001 From: lihaiming Date: Tue, 17 Mar 2015 23:07:13 +0800 Subject: [PATCH 590/725] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...g kernel code get hired really quickly'.md | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md index 2e71467581..5b99e27165 100644 --- a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md +++ b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md @@ -2,30 +2,49 @@ translating by haimingfg Torvalds: 'People who start writing kernel code get hired really quickly' ================================================================================ +Torvalds: 参加linux内核贡献更加容易找工作 +======================================== + Now more than ever, the development of the Linux kernel is a matter for the professionals, as unpaid volunteer contributions to the project reached their lowest recorded levels in the latest "Who Writes Linux" report, which was released today. +相比起以往,linux内核的发展变是一个专业性的问题,作为一个无偿贡献者去贡献的项目今天在"谁写linux"被低调报道出来了。 + According to the report, which is compiled by the Linux Foundation, just 11.8 percent of kernel development last year was done by unpaid volunteers -- a 19 percent downturn from the 2012 figure of 14.6 percent. The foundation says that the downward trend in volunteer contributions has been present for years. +这个报道由linux基金会编写,基金会说自愿者有逐年下降的趋势,上年有11.8%的内核开发是由无偿自愿者完成,从2012年起由14.6%下滑了19%。 + ![](http://images.techhive.com/images/article/2015/02/screen-shot-2015-02-17-at-5.25.43-pm-100568680-medium.idge.png) Even so, unpaid contributors were still the single biggest source of commits in the latest Who Writes Linux, at 11,968 total changes -- good for 12.4 percent of the whole. However, corporate contributors collectively account for much, much more. The Linux Foundation said that more than 80 percent of all work on the kernel is done by paid professional developers. +即使是这样,在最新的谁写linux里面报道,无偿贡献者还是主要的共享来源,共有11,968改变,整体来说有12.4%是好的,企业贡献者共同占比越来越多,有超过80%的内核贡献是有有尝的专业开发者来完成,linux基金会说。 According to Linus Torvalds, the shift towards paid developers hasn't changed much about kernel development on its own. +根据 linus Torvalds 说,这个有偿开发者趋势不会改变太多这个内核发展的本身。 + "I think one reason it hasn't changed things all that much is that it's not so much 'unpaid volunteers are going away' as 'people who start writing kernel code get hired really quickly,'" he told Network World. +他向全世界人说,我认为不会改变太多的一个原因是不会有更多的无偿自愿者因为编写内核就会更加快找到工作而离开。 + Torvalds said that, while Linux development has changed for plenty of other reasons -- and that, naturally, new contributors pop up all the time -- many of the original developers, with decades of experience, have simply been snapped up by companies with an interest in Linux. +Torvalds +讲到,linux发展改变有很多其他原因,很自然的,新的贡献者会经常冒出来,有很多都是原来的开发者,有着10年的经验,被很多对linux感兴趣的公司抢着去做。 + "We may have started as volunteers, but we're happily employed doing Linux these days," he said. +他说:“开始我们是自愿者,但我们这几天很开心被请去开发linux” + Torvalds' own role in development has become increasingly hands-off, according to the report -- he has personally signed off on 329 patches since version 3.10 of kernel was released, or 0.4 percent. Increasingly, subsystem maintainers do their own reviews and merges of code. +Torvalds 开始抽离了他的开发角色,根据报道在3.10的内核版本里面他个人发布329补丁,占04% 逐渐地,子系统维护人员自己会检查与合并他们的代码。 + -------------------------------------------------------------------------------- via: http://www.infoworld.com/article/2885339/application-development/torvalds-people-who-start-writing-kernel-code-get-hired-really-quickly.html 作者:[Jon Gold][a] -译者:[译者ID](https://github.com/译者ID) +译者:[haimingfg](https://github.com/haimingfg) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 1e962837560cd4810932a6d26f7310f81a229028 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 17 Mar 2015 23:28:14 +0800 Subject: [PATCH 591/725] PUB:20150114 What is a good IDE for C or C++ on Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @ZTinoZ 翻译的棒极了,我基本上没修改。 --- ...hat is a good IDE for C or C++ on Linux.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/share => published}/20150114 What is a good IDE for C or C++ on Linux.md (61%) diff --git a/translated/share/20150114 What is a good IDE for C or C++ on Linux.md b/published/20150114 What is a good IDE for C or C++ on Linux.md similarity index 61% rename from translated/share/20150114 What is a good IDE for C or C++ on Linux.md rename to published/20150114 What is a good IDE for C or C++ on Linux.md index 32d7371d18..e0e960744a 100644 --- a/translated/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/published/20150114 What is a good IDE for C or C++ on Linux.md @@ -1,24 +1,24 @@ -Linux上有哪些比较好的C/C++ IDE? +Linux 上的最佳 C/C++ IDE ================================================================================ -"一个真正的程序员是不用IDE(译者注:集成开发环境)的,他们都是用带着某某插件的文本编辑器来写代码。"我们总能在某些地方听到此类观点。然而,尽管越来越多的人同意这样的观点,但是一个IDE仍然非常有用,它设置简单,使用起来也很方便,因此没有更好办法能像这样来编写一个项目了。所以鉴于这点,在这里我想给大家列一份在linux平台上比较好的C/C++ IDE清单。为什么特地说C/C++呢?因为C语言是我最喜欢的编程语言而且我们总要找个切入点来开始。另外要注意的是,通常有很多种编写C代码的方法,所以为了消减清单的篇幅,我只选择了"真正好用的IDE",而不是诸如Gedit或Vim这种注入[插件][1]的文本编辑器。并不是说这些编辑器在任何情况下都不好,只是如果我将文本编辑器包含进去那这份清单就将永无止境了。 +"一个真正的程序员是不用IDE(译者注:集成开发环境)的,他们都是用带着某某插件的文本编辑器来写代码。"我们总能在某些地方听到此类观点。然而,尽管越来越多的人同意这样的观点,但是一个IDE仍然非常有用,它设置简单,使用起来也很方便,因此不能比这样更合适编写一个项目了。所以鉴于这点,在这里我想给大家列一份在Linux平台上比较好的C/C++ IDE清单。为什么特地说C/C++呢?因为C语言是我最喜欢的编程语言,而且我们总要找个切入点来开始。另外要注意的是,通常有很多种编写C代码的方法,所以为了消减清单的篇幅,我只选择了"真正好用的IDE",而不是诸如Gedit或Vim这种注入[插件][1]的文本编辑器。并不是说这些编辑器不好,只是如果我将文本编辑器包含进去那这份清单就将永无止境了。 ### 1. Code::Blocks ### ![](https://farm8.staticflickr.com/7520/16089880989_10173db27b_c.jpg) -用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。它闪耀的地方在于它简单的插件系统,里面添加了不可缺少的工具,像Valgrind和CppCheck,还有不太重要的比如像俄罗斯方块这样的小游戏。但是我特别喜欢它的理由是它连贯方便的快捷键设定和大量的却感受不到受压迫的选项设置。 +用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。它最闪亮的地方在于它简单的插件系统,里面添加了不可缺少的工具,像Valgrind和CppCheck,还有不太重要的比如像俄罗斯方块这样的小游戏。但是我特别喜欢它的理由是它连贯方便的快捷键设定和大量的却感受不到拥挤的选项设置。 ### 2. Eclipse ### ![](https://farm8.staticflickr.com/7522/16276001255_66235a0a69_c.jpg) -我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[plugin][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。这里要感谢[CDT 项目][5],让Eclipse编写C程序变得可能。你同样可以体验到Eclipse的强大功能包括它的一些传统功能特点比如自动补全、代码大纲、代码生成器和先进的重构功能。照我话说,它的不足之处在于它不如Code::Blocks那么轻量级,它仍然很臃肿,要花费很多时间去载入。但是如果你的电脑可以驾驭它,或者你是个忠实的Eclipse粉,那么它一定是你的不二选择。 +我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[插件][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。这里要感谢[CDT 项目][5],让Eclipse编写C程序变得可能。你同样可以体验到Eclipse的强大功能,包括它的一些传统功能特点比如自动补全、代码大纲、代码生成器和先进的重构功能。照我话说,它的不足之处在于它不如Code::Blocks那么轻量级,它仍然很臃肿,要花费很多时间去载入。但是如果你的电脑可以驾驭它,或者你是个忠实的Eclipse粉,那么它一定是你的不二选择。 ### 3. Geany ### ![](https://farm9.staticflickr.com/8573/16088461968_c6a6c9e49a_c.jpg) -牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、基于模板创作、代码大纲、自定义快捷键和插件管理。相比于现在的IDE,Geany仍然是一款作用广泛的文本编辑器,然而,因为它的功能亮点和它的界面设计,所以我把它放在这份列表里。 +牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、基于模板创作、代码大纲、自定义快捷键和插件管理。相比于现在的IDE,Geany仍然是一款作用广泛的文本编辑器,然而,因为它的功能亮点和它的界面设计,所以我把它放在这份列表里。 ### 4. MonoDevelop ### @@ -30,19 +30,19 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7514/16088462018_7ee6e5b433_c.jpg) -它身上有着强烈的“GNOME感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷方法来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 +它身上有着强烈的“GNOME即视感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷方法来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 ### 6. Komodo Edit ### ![](https://farm8.staticflickr.com/7502/16088462028_81d1114c84_c.jpg) -我不是非常熟悉[Komodo Edit][9],但是在试用了一段时间之后,我被它很多很多的优点给惊喜到了。首先,基于标签的导航功能很有很强的可预见性。其次它奇特的代码大纲让我想到了Sublime Text。此外,它的宏系统和文件比较器使得Komodo Edit非常实用。它的插件库让它几乎是完美的,说“几乎”是因为在其它IDE里我的确找不到能与之相媲美的快捷方法了。而且我们能享受到更多特别的C/C++工具,这往往是普通IDE的不足之处。然而,Komodo Edit就能做到。 +我不是非常熟悉[Komodo Edit][9],但是在试用了一段时间之后,我被它很多很多的优点给惊喜到了。首先,基于标签的导航功能有很强的可预见性。其次它奇特的代码大纲让我想到了Sublime Text。此外,它的宏系统和文件比较器使得Komodo Edit非常实用。它的插件库让它几乎是完美的,说“几乎”是因为在其它IDE里我的确找不到能与之相媲美的快捷方法了。而且我们能享受到更多特别的C/C++工具,这往往是普通IDE的不足之处。然而,Komodo Edit就能做到。 ### 7. NetBeans ### ![](https://farm8.staticflickr.com/7569/16089881229_98beb0fce3_c.jpg) -就好像Eclipse一样,这又是一款不得不提的“巨人级”软件。拥有的功能包括通过标签进行导航、项目管理、代码大纲、更改历史追踪和大量工具,[NetBeans][10]可能是最完整的IDE了,我能用半页来列出它所有让人震惊的特色功能。但是这同时也很容易地向你透露了它的主要缺点,它太臃肿了。比起它的强大,我更喜欢基于插件的软件因为我觉得不太会有人为了一个同样的项目同时需要Git和Mercurial相结合来工作,我是不是很疯狂。但是如果你有耐心去掌握它所有的选项,那你差不多无论到哪里都是IDE大师了。 +就好像Eclipse一样,这又是一款不得不提的“巨人级”软件。拥有的功能包括通过标签进行导航、项目管理、代码大纲、更改历史追踪和大量工具,[NetBeans][10]可能是最完整的IDE了,我能用半页来列出它所有让人震惊的特色功能。但是这同时也很容易地向你透露了它的主要缺点,它太臃肿了。比起它的强大,我更喜欢基于插件的软件,因为我觉得不太会有人为了一个同样的项目同时需要Git和Mercurial相结合来工作,我是不是很疯狂?但是如果你有耐心去掌握它所有的选项,那你差不多无论到哪里都是IDE大师了。 ### 8. KDevelop ### @@ -56,7 +56,7 @@ Linux上有哪些比较好的C/C++ IDE? 留在最后的不代表是最差的,[CodeLite][12]展现给你一种传统的编程规则却仍然能让你从它身上那特有的感觉上有所收获,即使它的界面一开始的确让我想到了Code::Blocks和Anjuta,只是不包括大量的插件库。无论你想要比较文件、插入一条版权块、定义缩略语或者用Git来工作,总有一款插件适合你。如果我不得不挑点毛病,我想说它缺乏一些符合我口味的导航快捷键,但这是真的。 -最后,我希望这份清单能让你给自己最喜欢的语言探索到更多新的IDE。虽然Code::Blocks仍然是我的最爱,不过它有一些很强大的对手。当然我们也可以远离Linux上的IDE用文本编辑器去编写C/C++代码。所以如果你有什么其它的建议想法,在评论中让我们获悉。或者如果你想要我再说说关于一些其它语言的IDE,也可以评论里提出。 +最后,我希望这份清单能让你给自己最喜欢的语言探索到更多新的IDE。虽然Code::Blocks仍然是我的最爱,不过它有一些很强大的对手。当然我们也可以远离Linux上的IDE,而用文本编辑器去编写C/C++代码。所以如果你有什么其它的建议想法,在评论中让我们获悉。或者如果你想要我再说说关于一些其它语言的IDE,也可以评论里提出。 -------------------------------------------------------------------------------- @@ -64,7 +64,7 @@ via: http://xmodulo.com/good-ide-for-c-cpp-linux.html 作者:[Adrien Brochard][a] 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From f872ca4b1cb79468a624b13ce5db8389986a0dbe Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 18 Mar 2015 11:29:59 +0800 Subject: [PATCH 592/725] =?UTF-8?q?20150318-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0150318 Fedora GNOME Keyboard Shortcuts.md | 211 ++++++++++++++++++ ...irectory with Samba on Fedora or CentOS.md | 144 ++++++++++++ 2 files changed, 355 insertions(+) create mode 100644 sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md create mode 100644 sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md diff --git a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md new file mode 100644 index 0000000000..7b70ec9779 --- /dev/null +++ b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -0,0 +1,211 @@ +Fedora GNOME Keyboard Shortcuts +================================================================================ +To get the very best out of the [GNOME desktop environment][1], within Fedora, you need to learn and remember the keyboard shortcuts required to navigate the system. + +This article lists the most useful keyboard shortcuts and how they are used. + +![GNOME Keyboard Shortcuts - The Super Key. ](http://f.tqn.com/y/linux/1/L/o/K/1/gnomekeyboardshortcut1.png) +GNOME Keyboard Shortcuts - The Super Key. + +#### 1. The Super Key #### + +[The "super" key][2] is your best friend when navigating modern operating systems. + +On a standard laptop the "super" key sits on the bottom row next to the "alt" key. + +When you press the "super" key the "activities" overview will be displayed and you will be able to see all of the open applications zoomed out. + +Pressing "ALT" and "F1" together will show the same display. + +![GNOME Run Command.](http://f.tqn.com/y/linux/1/L/p/K/1/runcommand.png) +GNOME Run Command. + +### 2. How To Run A Command Quickly ### + +If you need to run a command quickly, you can press "ALT" and "F2" which displays a "Run Command" dialog. + +You can now enter your command into that window and press return. + +![TAB Through Applications.](http://f.tqn.com/y/linux/1/L/q/K/1/tabthroughwindows.png) +TAB Through Applications. + +### 3. Quickly Switch To Other Open Applications ### + +As with Microsoft Windows you can switch applications using the "ALT" and "TAB" keys. + +On some keyboards the tab key looks like this: **|<- ->|** and on others it simply spells the word "TAB". + +The GNOME application switcher simply shows the icons and names of the applications as you tab through them. + +If you hold down the "shift" and "tab" keys, the application switcher rotates around the icons in reverse order. + +![Switch Windows In The Same Application.](http://f.tqn.com/y/linux/1/L/r/K/1/switchwindowsinsameapplication.png) +Switch Windows In The Same Application. + +### 4. Quickly Switch To Another Window In The Same Application ### + +If you are anything like me then you will end up with half a dozen instances of Firefox open. + +You now know that "Alt" and "Tab" switch between applications. + +There are two ways to cycle through all of the open instances of the same application. + +The first is to press "Alt" and "Tab" until the cursor sits over the icon of the application with many windows that you wish to cycle through. After a pause a dropdown will appear and you can select the Window with the mouse. + +The second and preferred option is to press "Alt" and "Tab" until the cursor sits over the icon of the application you want to cycle through and then press the "super" and "`" keys to toggle through the open instances. + +**Note that the "`" key is the one just above the tab key. The key for cycling through the open instances is always the key above the tab key regardless of your keyboard layout, therefore it isn't always guaranteed to be the "`" key.** + +If you have nimble fingers (or as I like to call them ninja fingers) then you can hold the "shift", "`" and "super" key to cycle backwards through the open instances of an application. + +![Switch Keyboard Focus.](http://f.tqn.com/y/linux/1/L/s/K/1/switchkeyboardfocus.png) +Switch Keyboard Focus. + +### 5. Switch Keyboard Focus ### + +This keyboard shortcut isn't essential but a nice to know. + +If you want to switch the keyboard focus to the search bar or to an application window you can press "CTRL", "ALT" and "TAB". to show a list of possible areas to switch to. + +You can then use the arrow keys to cycle through the possible options. + +![Show All Applications.](http://f.tqn.com/y/linux/1/L/t/K/1/showapplications.png) +Show All Applications. + +### 6. Show A List Of All The Applications ### + +If the last one was a nice to have then this one is a real time saver. + +To quickly navigate to a full list of all the applications on your system press the "super" key and "A". + +![Switch Workspaces.](http://f.tqn.com/y/linux/1/L/u/K/1/switchworkspaces.png) +Switch Workspaces. + +### 7. Switch Workspaces ### + +If you have been using Linux for a while you will appreciate the fact that you [can use multiple workspaces][3]. + +For instance in one workspace you might have development environments open, in another web browsers and in a third your email client. + +To toggle between workspaces press the "super" and the "Page Up" (PGUP) keys to toggle in one direction and the "super", "Page Down" (PGDN) keys to toggle in the other direction. + +The alternative but more longwinded away to switch to another workspace is to press the "super" key to show a list of applications and then select the workspace you wish to switch to on the right side of the screen. + +![Move Application To Another Workspace.](http://f.tqn.com/y/linux/1/L/v/K/1/movetoanewworkspace.png) +Move Application To Another Workspace. + +### 8. Move Items To A New Workspace ### + +If the workspace you are using is getting cluttered and you wish to move the current application to a new workspace press the "super", "shift" and "page up" button or "super", "shift" and "page down" key. + +Alternatively press the "super" key to bring up the list of applications and drag the application you wish to move to one of the workspaces on the right of the screen. + +![Show The Message Tray.](http://f.tqn.com/y/linux/1/L/w/K/1/showmessagetray.png) +Show The Message Tray. + +### 9. Show The Message Tray ### + +The message tray provides a list of notifications. + +To bring up the message tray press the "super" and "M" key on the keyboard. + +Alternatively move the mouse to the bottom right corner of the screen. + +![Lock The Screen.](http://f.tqn.com/y/linux/1/L/x/K/1/lockscreen.png) +Lock The Screen. + +### 10. Lock The Screen ### + +Need to a comfort break or a cup of coffee? Don't want sticky paws all over your keyboard? + +Whenever you leave your computer alone get in the habit of pressing "super" and L to lock the screen. + +To unlock the screen drag up from the bottom and enter your password. + +![Control Alt Delete Within Fedora.](http://f.tqn.com/y/linux/1/L/y/K/1/poweroff.png) +Control Alt Delete Within Fedora. + +### 11. Power Off ### + +If you used to be a Windows user then you will remember the three finger salute known as CTRL, ALT and DELETE. + +If you press "CTRL", "ALT" and "DEL" on your keyboard within Fedora a message will appear telling you that your computer will shut down in 60 seconds. + +### 12. Editing Shortcuts ### + +The editing keyboard shortcuts are pretty much universal across every operating system. + +- CTRL + A Select All +- CTRL + X Cut +- CTRL + C Copy +- CTRL + V Paste +- CTRL + Z Undo + +### 13. Screen Capturing ### + +As with the editing shortcuts, the screencapturing keys are fairly standard + +- PRTSC (Print Screen) Take screenshot +- Alt + PRTSC Take screenshot of current window +- Shift + PRTSC Take screenshot of an area of the screen + +Here is one that is fairly unique but great for people making tutorial videos. + +- CTRL + ALT + SHIFT + R Record Screencast +- CTRL + ALT + SHIFT + R again Stop Screencast + +The [screencasts][4] will be stored in the videos folder under your home directory in the [webm][5] format. + +![Put Windows Side By Side.](http://f.tqn.com/y/linux/1/L/z/K/1/splitwindows.png) +Put Windows Side By Side. + +### 14. Put Windows Side By Side ### + +You can put windows side by side so that one uses up the left side of the screen and the other uses the right side of the screen. + +Press the "Super" and "Left Arrow" key on the keyboard to shift the current application to the left. + +Press the "Super" and "Right Arrow" key on the keyboard to shift the current application to the right. + +### 15. Maximise, Minimise And Restore Windows ### + +To maximise a window double click on the title bar. + +To restore a window to its original size double click on the maximised window. + +To minimise a window, right click and select "minimise" from the menu. + +![GNOME Keyboard Shortcut Cheat Sheet. ](http://f.tqn.com/y/linux/1/L/-/L/1/gnomekeyboardshortcuts.png) +GNOME Keyboard Shortcut Cheat Sheet. + +### 16. Summary ### + +To help you learn these keyboard shortcuts I have created a cheat sheet which you can print out and stick to your wall. + +When you have learned these shortcuts you will begin to appreciate how modern desktop environments work. + +- [Click here to view the Fedora Linux GNOME Desktop Environment cheat sheet.][6] +- [Click here for the GNOME WIKI][7] +- [The other GNOME WIKI][8] +- [An alternative GNOME 3 Cheat Sheet][9] + +-------------------------------------------------------------------------------- + +via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm + +作者:[Gary Newell][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:https://www.gnome.org/gnome-3/ +[2]:http://en.wikipedia.org/wiki/Super_key_%28keyboard_button%29 +[3]:http://linux.about.com/library/gnome/blgnome2n4.htm +[4]:http://en.wikipedia.org/wiki/Screencast +[5]:http://en.wikipedia.org/wiki/WebM +[6]:https://s-media-cache-ak0.pinimg.com/originals/d5/f4/a4/d5f4a42c0940fae6653ee9a17294d450.jpg +[7]:http://en.wikipedia.org/wiki/GNOME +[8]:https://wiki.gnome.org/ +[9]:https://wiki.gnome.org/Gnome3CheatSheet \ No newline at end of file diff --git a/sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md b/sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md new file mode 100644 index 0000000000..0c01862bff --- /dev/null +++ b/sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md @@ -0,0 +1,144 @@ +How to share a directory with Samba on Fedora or CentOS +================================================================================ +Nowadays sharing data across different computers is not something new at home or many work places. Riding on this trend, modern operating systems make it easy to share and exchange data transparently across computers via network file systems. If your work environment involves a mix of Microsoft Windows and Linux computers, one way to share files and folders among them is via SMB/CIFS, a cross-platform network file sharing protocol. Windows Microsoft natively supports SMB/CIFS, while Linux offers free software implementation of SMB/CIFS network protocol in Samba. + +In this article, we will demonstrate **how to share a directory using Samba**. The Linux platform we will use is **Fedora or CentOS**. This article is dividied into four parts. First, we will install Samba under Fedora/CentOS environment. Next, we discuss how to adjust SELinux and firewall configurations to allow file sharing with Samba. Finally, we cover how to enable Samba to share a directory. + +### Step One: Install Samba on Fedora or CentOS ### + +First thing first. Let's install Samba and configure basic settings. + +Check whether Samba application is already installed on your system by running: + + $ rpm -q samba samba-common samba-client + +If the above command doesn't show anything at all, it means that Samba is not installed. In that case, install Samba using the command below. + + $ sudo yum install samba samba-common samba-client + +Next, creates a local directory which will share data over network. This directory will be exported to remote users as a Samba share. In this tutorial, we will create this directory in the top-level directory '/', so make sure that you have the privileges to do it. + + $ sudo mkdir /shared + +If you want to create a shared directory inside your home directory (e.g., ~/shared), you must activate Samba home directory sharing in the SELinux options, which will be described below in more detail. + +After creating /shared directory, set the privileges of the directory so other users can access it. + + $ sudo chmod o+rw /shared + +If you don't want other users to be able to have write to the directory, just remove the 'w' option in chmod command as follows. + + $ sudo chmod o+r /shared + +Next, create one empty file as a test. This file will be used to verify that he Samba share is mounted properly. + + $ sudo touch /shared/file1 + +### Step Two: Configure SELinux for Samba ### + +Next, we need to re-configure SELinux which is enabled by default in Fedora and CentOS distributions. SELinux allows Samba to read and modify files or directories only when they have the right security context (e.g., labeled with the 'samba_share_t' attribute). + +The following command adds the necessary label to file-context configuration: + + $ sudo semanage fcontext -a -t samba_share_t "(/.*)?" + +Replace the with the local directory we created earlier for Samba share (e.g., /shared): + + $ sudo semanage fcontext -a -t samba_share_t "/shared(/.*)?" + +To activate the label change, we then must run the restorecon command like below. + + $ sudo restorecon -R -v /shared + +![](https://farm9.staticflickr.com/8584/16652774078_2055f45f70_b.jpg) + +To share a directory inside our home directory via Samba, we must enable sharing home directory option in SELinux because it is disabled by default. The following command achieves the desired effect. Skip this step if you are not sharing your home directory. + + $ sudo setsebool -P samba_enable_home_dirs 1 + +### Step Three: Configure Firewall for Samba ### + +The next step is to open necessary TCP/UDP ports in the firewall settings for Samba to operate. + +If you are using firewalld (e.g., on Fedora or CentOS 7), the following command will take care of permanent firewall rule change for Samba service. + + $ sudo firewall-cmd --permanent --add-service=samba + +If you are using iptables for your firewall (e.g., CentOS 6 or earlier), use the following commands to open up necessary Samba ports to the world. + + $ sudo vi /etc/sysconfig/iptables + +---------- + + -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT + +Then restart iptables service: + + $ sudo service iptables restart + +### Step Four: Change Samba Configuration ### + +The last step is to configure Samba to export a created local directory as a Samba-share. + +Open the Samba configuration file with a text editor, and add the following lines at the bottom of the file. + + $ sudo nano /etc/samba/smb.conf + +---------- + + [myshare] + comment=my shared files + path=/shared + public=yes + writeable=yes + +In the above the text inside a pair of brackets (e.g., "myshare") is the name of the Samba-shared resource, which will be used to access the Samba share from a remote host. + +Create a Samba user account which is required to mount and export the Samba file system. To create a Samba user, use the smbpasswd tool. Note that the Samba user account must be the same as any existing Linux user. If you try to add a non-existing user with smbpasswd, it will give an error message. + +If you don't want to use any existing Linux user as a Samba user, you can create a new dedicated user in your system. For safety, set the new user's login shell to /sbin/nologin, and do not create its home directory. + +In this example, we are creating a new user named "sambaguest" as follows. + + $ sudo useradd -M -s /sbin/nologin sambaguest + $ sudo passwd sambaguest + +![](https://farm9.staticflickr.com/8702/16814479366_53f540d3ba_b.jpg) + +After creating a new user, add the user as a Samba user using smbpasswd command. When this command asks a password, you can type a different password than the user's password. + + $ sudo smbpasswd -a sambaguest + +4. Activate the Samba service, and check whether the Samba service is running or not. + + $ sudo systemctl enable smb.service + $ sudo systemctl start smb.service + $ sudo systemctl is-active smb + +![](https://farm8.staticflickr.com/7607/16652984770_622f24bccc_b.jpg) + +To see the list of shared directories in Samba, type the following command. + + $ smbclient -U sambaguest -L localhost + +![](https://farm8.staticflickr.com/7281/16220411103_06bf585901_b.jpg) + +The following is a screenshot of accessing the Samba-shared directory on Thunar file manager, and doing copy-paste of file1. Note that the Samba share is accessible via "smb:///myshare" address on Thunar. + +![](https://farm8.staticflickr.com/7644/16218011174_c8b34fcedc_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/share-directory-samba-fedora-centos.html + +作者:[Kristophorus Hadiono][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/kristophorus \ No newline at end of file From e8f3cc6b20d8b8a5fae27aac13e31b3f4263b5c8 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 18 Mar 2015 15:30:27 +0800 Subject: [PATCH 593/725] =?UTF-8?q?20150318-2=20=E9=80=89=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0=E4=B8=8A=E9=9D=A2=E4=B8=80=E7=AF=87?= =?UTF-8?q?=E6=96=87=E7=AB=A0=E4=B8=AD=E4=B8=80=E5=B0=8F=E7=82=B9=E6=8E=92?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...inal Commands That Will Rock Your World.md | 266 ++++++++++++++++++ ...0150318 Fedora GNOME Keyboard Shortcuts.md | 20 +- 2 files changed, 276 insertions(+), 10 deletions(-) create mode 100644 sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md diff --git a/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md new file mode 100644 index 0000000000..ba85e4c6a8 --- /dev/null +++ b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -0,0 +1,266 @@ +11 Linux Terminal Commands That Will Rock Your World +================================================================================ +I have been using Linux for about 10 years and what I am going to show you in this article is a list of Linux commands, tools and clever little tricks that I wish somebody had shown me from the outset instead of stumbling upon them as I went along. + +![Linux Keyboard Shortcuts.](http://f.tqn.com/y/linux/1/L/m/J/1/keyboardshortcuts.png) +Linux Keyboard Shortcuts. + +### 1. Useful Command Line Keyboard Shortcuts ### + +The following keyboard shortcuts are incredibly useful and will save you loads of time: + +- CTRL + U - Cuts text up until the cursor. +- CTRL + K - Cuts text from the cursor until the end of the line +- CTRL + Y - Pastes text +- CTRL + E - Move cursor to end of line +- CTRL + A - Move cursor to the beginning of the line +- ALT + F - Jump forward to next space +- ALT + B - Skip back to previous space +- ALT + Backspace - Delete previous word +- CTRL + W - Cut word behind cursor +- Shift + Insert - Pastes text into terminal + +Just so that the commands above make sense look at the next line of text. + + sudo apt-get intall programname + +As you can see I have a spelling error and for the command to work I would need to change "intall" to "install". + +Imagine the cursor is at the end of the line. There are various ways to get back to the word install to change it. + +I could press ALT + B twice which would put the cursor in the following position (denoted by the ^ symbol): + + sudo apt-get^intall programname + +Now you could press the cursor key and insert the ''s' into install. + +Another useful command is "shift + insert" especially If you need to copy text from a browser into the terminal. + +![](http://f.tqn.com/y/linux/1/L/n/J/1/sudotricks2.png) + +### 2. SUDO !! ### + +You are going to really thank me for the next command if you don't already know it because until you know this exists you curse yourself every time you enter a command and the words "permission denied" appear. + +- sudo !! + +How do you use sudo !!? Simply. Imagine you have entered the following command: + + apt-get install ranger + +The words "Permission denied" will appear unless you are logged in with elevated privileges. + +sudo !! runs the previous command as sudo. So the previous command now becomes: + + sudo apt-get install ranger + +If you don't know what sudo is [start here][1]. + +![Pause Terminal Applications.](http://f.tqn.com/y/linux/1/L/o/J/1/pauseapps.png) +Pause Terminal Applications. + +### 3. Pausing Commands And Running Commands In The Background ### + +I have already written a guide showing how to run terminal commands in the background. + +- CTRL + Z - Pauses an application +- fg - Returns you to the application + +So what is this tip about? + +Imagine you have opened a file in nano as follows: + + sudo nano abc.txt + +Halfway through typing text into the file you realise that you quickly want to type another command into the terminal but you can't because you opened nano in foreground mode. + +You may think your only option is to save the file, exit nano, run the command and then re-open nano. + +All you have to do is press CTRL + Z and the foreground application will pause and you will be returned to the command line. You can then run any command you like and when you have finished return to your previously paused session by entering "fg" into the terminal window and pressing return. + +An interesting thing to try out is to open a file in nano, enter some text and pause the session. Now open another file in nano, enter some text and pause the session. If you now enter "fg" you return to the second file you opened in nano. If you exit nano and enter "fg" again you return to the first file you opened within nano. + +![nohup.](http://f.tqn.com/y/linux/1/L/p/J/1/nohup3.png) +nohup. + +### 4. Use nohup To Run Commands After You Log Out Of An SSH Session ### + +The [nohup command][2] is really useful if you use the ssh command to log onto other machines. + +So what does nohup do? + +Imagine you are logged on to another computer remotely using ssh and you want to run a command that takes a long time and then exit the ssh session but leave the command running even though you are no longer connected then nohup lets you do just that. + +For instance I use my [Raspberry PI][3] to download distributions for review purposes. + +I never have my Raspberry PI connected to a display nor do I have a keyboard and mouse connected to it. + +I always connect to the Raspberry PI via [ssh][4] from a laptop. If I started downloading a large file on the Raspberry PI without using the nohup command then I would have to wait for the download to finish before logging off the ssh session and before shutting down the laptop. If I did this then I may as well have not used the Raspberry PI to download the file at all. + +To use nohup all I have to type is nohup followed by the command as follows: + + nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso & + +![Schedule tasks with at.](http://f.tqn.com/y/linux/1/L/q/J/1/at.png) +Schedule tasks with at. + +### 5. Running A Linux Command 'AT' A Specific Time ### + +The 'nohup' command is good if you are connected to an SSH server and you want the command to remain running after logging out of the SSH session. + +Imagine you want to run that same command at a specific point in time. + +The 'at' command allows you to do just that. 'at' can be used as follows. + + at 10:38 PM Fri + at> cowsay 'hello' + at> CTRL + D + +The above command will run the program [cowsay][5] at 10:38 PM on Friday evening. + +The syntax is 'at' followed by the date and time to run. + +When the at> prompt appears enter the command you want to run at the specified time. + +The CTRL + D returns you to the cursor. + +There are lots of different date and time formats and it is worth checking the man pages for more ways to use 'at'. + +![](http://f.tqn.com/y/linux/1/L/l/J/1/manmost.png) + +### 6. Man Pages ### + +Man pages give you an outline of what commands are supposed to do and the switches that can be used with them. + +The man pages are kind of dull on their own. (I guess they weren't designed to excite us). + +You can however do things to make your usage of man more appealing. + + export PAGER=most + +You will need to install 'most; for this to work but when you do it makes your man pages more colourful. + +You can limit the width of the man page to a certain number of columns using the following command: + + export MANWIDTH=80 + +Finally, if you have a browser available you can open any man page in the default browser by using the -H switch as follows: + + man -H + +Note this only works if you have a default browser set up within the $BROWSER environment variable. + +![View Processes With htop.](http://f.tqn.com/y/linux/1/L/r/J/1/nohup2.png) +View Processes With htop. + +### 7. Use htop To View And Manage Processes ### + +Which command do you currently use to find out which processes are running on your computer? My bet is that you are using '[ps][6]' and that you are using various switches to get the output you desire. + +Install '[htop][7]'. It is definitely a tool you will wish that you installed earlier. + +htop provides a list of all running processes in the terminal much like the file manager in Windows. + +You can use a mixture of function keys to change the sort order and the columns that are displayed. You can also kill processes from within htop. + +To run htop simply type the following into the terminal window: + + htop + +![Command Line File Manager - Ranger.](http://f.tqn.com/y/linux/1/L/s/J/1/ranger.png) +Command Line File Manager - Ranger. + +### 8. Navigate The File System Using ranger ### + +If htop is immensely useful for controlling the processes running via the command line then [ranger][8] is immensely useful for navigating the file system using the command line. + +You will probably need to install ranger to be able to use it but once installed you can run it simply by typing the following into the terminal: + + ranger + +The command line window will be much like any other file manager but it works left to right rather than top to bottom meaning that if you use the left arrow key you work your way up the folder structure and the right arrow key works down the folder structure. + +It is worth reading the man pages before using ranger so that you can get used to all keyboard switches that are available. + +![Cancel Linux Shutdown.](http://f.tqn.com/y/linux/1/L/t/J/1/shutdown.png) +Cancel Linux Shutdown. + +### 9. Cancel A Shutdown ### + +So you started the [shutdown][9] either via the command line or from the GUI and you realised that you really didn't want to do that. + + shutdown -c + +Note that if the shutdown has already started then it may be too late to stop the shutdown. + +Another command to try is as follows: + +- [pkill][10] shutdown + +![Kill Hung Processes With XKill.](http://f.tqn.com/y/linux/1/L/u/J/1/killhungprocesses.png) +Kill Hung Processes With XKill. + +### 10. Killing Hung Processes The Easy Way ### + +Imagine you are running an application and for whatever reason it hangs. + +You could use 'ps -ef' to find the process and then kill the process or you could use 'htop'. + +There is a quicker and easier command that you will love called [xkill][11]. + +Simply type the following into a terminal and then click on the window of the application you want to kill. + + xkill + +What happens though if the whole system is hanging? + +Hold down the 'alt' and 'sysrq' keys on your keyboard and whilst they are held down type the following slowly: + +- [REISUB][12] + +This will restart your computer without having to hold in the power button. + +![youtube-dl.](http://f.tqn.com/y/linux/1/L/v/J/1/youtubedl2.png) +youtube-dl. + +### 11. Download Youtube Videos ### + +Generally speaking most of us are quite happy for Youtube to host the videos and we watch them by streaming them through our chosen media player. + +If you know you are going to be offline for a while (i.e. due to a plane journey or travelling between the south of Scotland and the north of England) then you may wish to download a few videos onto a pen drive and watch them at your leisure. + +All you have to do is install youtube-dl from your package manager. + +You can use youtube-dl as follows: + + youtube-dl url-to-video + +You can get the url to any video on Youtube by clicking the share link on the video's page. Simply copy the link and paste it into the command line (using the shift + insert shortcut). + +### Summary ### + +I hope that you found this list useful and that you are thinking "i didn't know you could do that" for at least 1 of the 11 items listed. + +-------------------------------------------------------------------------------- + +via: http://linux.about.com/od/commands/tp/11-Linux-Terminal-Commands-That-Will-Rock-Your-World.htm + +作者:[Gary Newell][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:http://linux.about.com/cs/linux101/g/sudo.htm +[2]:http://linux.about.com/library/cmd/blcmdl1_nohup.htm +[3]:http://linux.about.com/od/mobiledevicesother/a/Raspberry-Pi-Computer-Running-Linux.htm +[4]:http://linux.about.com/od/commands/l/blcmdl1_ssh.htm +[5]:http://linux.about.com/cs/linux101/g/cowsay.htm +[6]:http://linux.about.com/od/commands/l/blcmdl1_ps.htm +[7]:http://www.linux.com/community/blogs/133-general-linux/745323-5-commands-to-check-memory-usage-on-linux +[8]:http://ranger.nongnu.org/ +[9]:http://linux.about.com/od/commands/l/blcmdl8_shutdow.htm +[10]:http://linux.about.com/library/cmd/blcmdl1_pkill.htm +[11]:http://linux.about.com/od/funnymanpages/a/funman_xkill.htm +[12]:http://blog.kember.net/articles/reisub-the-gentle-linux-restart/ \ No newline at end of file diff --git a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md index 7b70ec9779..9f39418fce 100644 --- a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md +++ b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -135,24 +135,24 @@ If you press "CTRL", "ALT" and "DEL" on your keyboard within Fedora a message wi The editing keyboard shortcuts are pretty much universal across every operating system. -- CTRL + A Select All -- CTRL + X Cut -- CTRL + C Copy -- CTRL + V Paste -- CTRL + Z Undo +- CTRL + A - Select All +- CTRL + X - Cut +- CTRL + C - Copy +- CTRL + V - Paste +- CTRL + Z - Undo ### 13. Screen Capturing ### As with the editing shortcuts, the screencapturing keys are fairly standard -- PRTSC (Print Screen) Take screenshot -- Alt + PRTSC Take screenshot of current window -- Shift + PRTSC Take screenshot of an area of the screen +- PRTSC (Print Screen) - Take screenshot +- Alt + PRTSC - Take screenshot of current window +- Shift + PRTSC - Take screenshot of an area of the screen Here is one that is fairly unique but great for people making tutorial videos. -- CTRL + ALT + SHIFT + R Record Screencast -- CTRL + ALT + SHIFT + R again Stop Screencast +- CTRL + ALT + SHIFT + R - Record Screencast +- CTRL + ALT + SHIFT + R again - Stop Screencast The [screencasts][4] will be stored in the videos folder under your home directory in the [webm][5] format. From 823d5e26f3fea402f013269e655abbd66295d1d1 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 18 Mar 2015 16:08:40 +0800 Subject: [PATCH 594/725] =?UTF-8?q?20150318-3=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150318 The future of Linux storage.md | 81 ++++++ ...M (Logical Volume Management) in Ubuntu.md | 268 ++++++++++++++++++ ...r Easy Partition Resizing and Snapshots.md | 67 +++++ ...And Use 'Go For It!' To Do App In Linux.md | 93 ++++++ 4 files changed, 509 insertions(+) create mode 100644 sources/talk/20150318 The future of Linux storage.md create mode 100644 sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md create mode 100644 sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md create mode 100644 sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md diff --git a/sources/talk/20150318 The future of Linux storage.md b/sources/talk/20150318 The future of Linux storage.md new file mode 100644 index 0000000000..d1a8898677 --- /dev/null +++ b/sources/talk/20150318 The future of Linux storage.md @@ -0,0 +1,81 @@ +The future of Linux storage +================================================================================ +> **Summary**:Linux software developers are working hard on expanding Linux's file and storage options. + +BOSTON - At the [Linux Foundation's][1] new [Vault][2] show, it's all about file systems and storage. You might think that there's nothing new to say about either topic, but you'd be wrong. + +![](http://zdnet2.cbsistatic.com/hub/i/r/2015/03/12/c8f92cc2-b963-4238-80a0-d785ec93698c/resize/770x578/08d93a8a393d3f50b2a56e6b0e7a0ca9/btrfs-1.jpg) +Linux file systems, such as Btrfs, and storage support options are constantly evolving. -- Facebook + +Storage technology has come a long way from the days of, as Linus Torvalds put it, "[nasty platters of spinning rust][3]" and Linux has had to keep up. In recent years, for example, [flash memory has arrived as enterprise server primary storage][4] and [persistent memory][5] is bringing us storage that works at DRAM speeds. At the same time, Big Data, cloud computing, and containers are all bringing new use cases to Linux. + +To deal with this, Linux developers are both expanding their existing file and storage programs and working on new ones. + +### Btrfs ### + +For instance, Chris Mason, a Facebook software engineer and one of the [Btrfs][6] (pronounced Butter FS) maintainers, explained how Facebook uses this file system. Btrfs has many advantages as a file system such as the ability to handle both numerous small files and single files as large as 16 exabytes; baked in RAID; built-in file-system compression; and integrated multi-storage device support. + +Facebook, of course, runs on Linux. To be exact, Facebook runs the 3.10 and 3.18 Linux kernels on an internal distribution, which is based on [CentOS][7]. For Facebook, the real win is that Btrfs is stable and fast under the endless input/output operations per second (IOPS) pounding from Facebook's constantly updating users. + +That's the good news. The bad news is that Btrfs is still much too slow for traditional DBMSs such as MySQL. For those, Facebook uses [XFS][8]. To co-ordinate the two file systems, Facebook uses [Gluster][9], the open-source distributed file system. + +Facebook, which works hand-in-glove with the upstream Btrfs Linux kernel developers, is working on improving Btrfs's DBMS speed. Mason, and his companions, are doing this by using Btrfs with the [RocksDB][10] database. This is a persistent key-value store for fast storage, which can be used as the foundation for a client-server database. + +Btrfs also still has some bugs. For example, if you're foolish enough to fill a disk almost to bursting, Btrfs will stop you from writing to storage before the disk is completely stuffed. For some projects, such as [CoreOS][12], the enterprise Linux that relies on containers, that's a showstopper. [CoreOS has since switched to using xt4 and overlayfs][11]. + +The Btrfs crew is also working on data deduplication. In this, when a file system has more than one identical file, you automatically delete the duplicate. As Mason said, "Not everyone needs this, but if you need it, you really need it!" + +Btrfs isn't the only file system that's both very important and getting worked on. John Spray, a senior software engineer at [Red Hat][13], talked about the distributed [Ceph][14] file system. + +### Ceph FS ### + +Ceph provides a distributed object store and file system which, in turn, relies on a resilient and scalable storage model (RADOS) using clusters of commodity hardware. Along with the RADOS block device (RBD), and the RADOS object gateway (RGW), Ceph provides a [POSIX][15] file-system interface -- Ceph FS. While RBD and RGW have been in use for production workloads for some time, efforts to make Ceph FS ready for production are now underway. + +[Red Hat, after acquiring Inktank][16], Ceph's parent company, in 2014 has been working hard on making CephFS production ready. For better or worse, Spray said, "Some people are already using it in production; we're terrified of this. It's really not ready yet." Still, Spray added, that this "is a mixed blessing because while it's a bit scary, we get really useful feedback and testing from those users." + +That's because while Ceph object stores scale out well, Ceph FS, as a POSIX compliant file-system, are hard to scale out. For example, as a distributed file system, Ceph FS has to deal with multiple writes from multiple clients. This can lead to all or nothing situations where one client can write and others must wait. This can result in file-locking situations that are more complicated than those in ordinary file systems. + +Still, Ceph FS is worth doing, Spray said, "since POSIX file-systems are an operating system lingua franca." That's not to say that Ceph FS doesn't work. "It's not horribly broken. It works. What's missing is the repair and monitoring tools." + +Red Hat is currently hard at work on getting [fsck][17] and journal repair tools, snapshot hardening, better client access control, and cloud and container integration. For now, though, Ceph FS is a file system that only the very brave, or foolish, should use in production. + +### File and storage odds and ends ### + +As for larger issues of file-systems and storage, Jeff Layton, senior software engineer at [Primary Data][18], explained that there are efforts under way to to create "tests for catastrophic power failure, without actually pulling the plug." These tests will soon be integrated with [xfstests][19], the gold standard for Linux file-system testing. + +Rik van Riel, a Red Hat principal software engineer, spoke about the problem of dealing with persistent memory products. You can treat them as storage or as memory. But, you can't currently take snapshots for backups if you use them as memory. The real problem: van Riel is certain that people will try to use persistent memory as both, which will lead to such as situations as "Without back up, how do you deal with a 200GB persistent memory database?" Adding insult to injury, logging systems don't currently work with persistent memory. + +What's the right answer? Linux doesn't have one yet, but programmers are working on it. + +So, while Linux has many file systems and can use any kind of storage out there that can hold a byte, there's still a lot of work to be done. Technology never stands still. Linux, which runs on everything from devices to desktops to servers to clouds to supercomputers, has to keep up with storage advances no matter where they appear. + +-------------------------------------------------------------------------------- + +via: http://www.zdnet.com/article/linux-storage-futures/ + +作者:[Steven J. Vaughan-Nichols][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.zdnet.com/meet-the-team/us/sjvn/ +[1]:http://www.linuxfoundation.org/ +[2]:http://events.linuxfoundation.org/events/vault +[3]:http://www.wired.com/2012/10/linus-torvalds-hard-disks/ +[4]:http://www.zdnet.com/article/sandisk-launches-infiniflash-aims-to-bring-flash-array-costs-down/ +[5]:http://events.linuxfoundation.org/sites/events/files/eeus13_wheeler.pdf +[6]:https://btrfs.wiki.kernel.org/index.php/Main_Page +[7]:http://www.centos.org/ +[8]:http://oss.sgi.com/projects/xfs/ +[9]:http://www.gluster.org/ +[10]:http://rocksdb.org/ +[11]:http://lwn.net/Articles/627232/ +[12]:https://coreos.com/ +[13]:http://www.redhat.com/ +[14]:http://ceph.com/ +[15]:http://pubs.opengroup.org/onlinepubs/9699919799/ +[16]:http://www.zdnet.com/article/red-hat-acquires-inktank-for-175m/ +[17]:http://linux.die.net/man/8/fsck +[18]:http://primarydata.com/ +[19]:http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary \ No newline at end of file diff --git a/sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md b/sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md new file mode 100644 index 0000000000..570217f220 --- /dev/null +++ b/sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md @@ -0,0 +1,268 @@ +How to Manage and Use LVM (Logical Volume Management) in Ubuntu +================================================================================ +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/652x202xbanner-1.png.pagespeed.ic.VGSxDeVS9P.png) + +In our [previous article we told you what LVM is and what you may want to use it for][1], and today we are going to walk you through some of the key management tools of LVM so you will be confident when setting up or expanding your installation. + +As stated before, LVM is a abstraction layer between your operating system and physical hard drives. What that means is your physical hard drives and partitions are no longer tied to the hard drives and partitions they reside on. Rather, the hard drives and partitions that your operating system sees can be any number of separate hard drives pooled together or in a software RAID. + +To manage LVM there are GUI tools available but to really understand what is happening with your LVM configuration it is probably best to know what the command line tools are. This will be especially useful if you are managing LVM on a server or distribution that does not offer GUI tools. + +Most of the commands in LVM are very similar to each other. Each valid command is preceded by one of the following: + +- Physical Volume = pv +- Volume Group = vg +- Logical Volume = lv + +The physical volume commands are for adding or removing hard drives in volume groups. Volume group commands are for changing what abstracted set of physical partitions are presented to your operating in logical volumes. Logical volume commands will present the volume groups as partitions so that your operating system can use the designated space. + +### Downloadable LVM Cheat Sheet ### + +To help you understand what commands are available for each prefix we made a LVM cheat sheet. We will cover some of the commands in this article, but there is still a lot you can do that won’t be covered here. + +All commands on this list will need to be run as root because you are changing system wide settings that will affect the entire machine. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/01/lvm-cheatsheet.png) + +### How to View Current LVM Information ### + +The first thing you may need to do is check how your LVM is set up. The s and display commands work with physical volumes (pv), volume groups (vg), and logical volumes (lv) so it is a good place to start when trying to figure out the current settings. + +The display command will format the information so it’s easier to understand than the s command. For each command you will see the name and path of the pv/vg and it should also give information about free and used space. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/01/539x225xpvdisplay.png.pagespeed.ic.u2XV5LBTYa.png) + +The most important information will be the PV name and VG name. With those two pieces of information we can continue working on the LVM setup. + +### Creating a Logical Volume ### + +Logical volumes are the partitions that your operating system uses in LVM. To create a logical volume we first need to have a physical volume and volume group. Here are all of the steps necessary to create a new logical volume. + +#### Create physical volume #### + +We will start from scratch with a brand new hard drive with no partitions or information on it. Start by finding which disk you will be working with. (/dev/sda, sdb, etc.) + +> Note: Remember all of the commands will need to be run as root or by adding ‘sudo’ to the beginning of the command. + + fdisk -l + +If your hard drive has never been formatted or partitioned before you will probably see something like this in the fdisk output. This is completely fine because we are going to create the needed partitions in the next steps. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/fdisk.png.pagespeed.ce.AmAEsxm-7Q.png) + +Our new disk is located at /dev/sdb so lets use fdisk to create a new partition on the drive. + +There are a plethora of tools that can create a new partition with a GUI, [including Gparted][2], but since we have the terminal open already, we will use fdisk to create the needed partition. + +From a terminal type the following commands: + + fdisk /dev/sdb + +This will put you in a special fdisk prompt. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/627x145xfdisk00.png.pagespeed.ic.I7S8bjoXQG.png) + +Enter the commands in the order given to create a new primary partition that uses 100% of the new hard drive and is ready for LVM. If you need to change the partition size or want multiple partions I suggest using GParted or reading about fdisk on your own. + +**Warning: The following steps will format your hard drive. Make sure you don’t have any information on this hard drive before following these steps.** + +- n = create new partition +- p = creates primary partition +- 1 = makes partition the first on the disk + +Push enter twice to accept the default first cylinder and last cylinder. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/562x216xfdisk01.png.pagespeed.ic.DsSZ38kWcA.png) + +To prepare the partition to be used by LVM use the following two commands. + +- t = change partition type +- 8e = changes to LVM partition type + +Verify and write the information to the hard drive. + +- p = view partition setup so we can review before writing changes to disk +- w = write changes to disk + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/560x339xfdisk03.png.pagespeed.ic.FC8foICZsb.png) + +After those commands, the fdisk prompt should exit and you will be back to the bash prompt of your terminal. + +Enter pvcreate /dev/sdb1 to create a LVM physical volume on the partition we just created. + +You may be asking why we didn’t format the partition with a file system but don’t worry, that step comes later. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/pvcreate.png.pagespeed.ce.W7VAr-ig3t.png) + +#### Create volume Group #### + +Now that we have a partition designated and physical volume created we need to create the volume group. Luckily this only takes one command. + + vgcreate vgpool /dev/sdb1 + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/vgcreate.png.pagespeed.ce.fVLzSmPZou.png) + +Vgpool is the name of the new volume group we created. You can name it whatever you’d like but it is recommended to put vg at the front of the label so if you reference it later you will know it is a volume group. + +#### Create logical volume #### + +To create the logical volume that LVM will use: + + lvcreate -L 3G -n lvstuff vgpool + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/lvcreate.png.pagespeed.ce.vupLB-LJEW.png) + +The -L command designates the size of the logical volume, in this case 3 GB, and the -n command names the volume. Vgpool is referenced so that the lvcreate command knows what volume to get the space from. + +#### Format and Mount the Logical Volume #### + +One final step is to format the new logical volume with a file system. If you want help choosing a Linux file system, read our [how to that can help you choose the best file system for your needs][3]. + + mkfs -t ext3 /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/571x424xmkfs.png.pagespeed.ic.ERMan1Mz0P.png) + +Create a mount point and then mount the volume somewhere you can use it. + + mkdir /mnt/stuff + mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/510x69xmount.png.pagespeed.ic.k0i1tvqgcV.png) + +#### Resizing a Logical Volume #### + +One of the benefits of logical volumes is you can make your shares physically bigger or smaller without having to move everything to a bigger hard drive. Instead, you can add a new hard drive and extend your volume group on the fly. Or if you have a hard drive that isn’t used you can remove it from the volume group to shrink your logical volume. + +There are three basic tools for making physical volumes, volume groups, and logical volumes bigger or smaller. + +Note: Each of these commands will need to be preceded by pv, vg, or lv depending on what you are working with. + +- resize – can shrink or expand physical volumes and logical volumes but not volume groups +- extend – can make volume groups and logical volumes bigger but not smaller +- reduce – can make volume groups and logical volumes smaller but not bigger + +Let’s walk through an example of how to add a new hard drive to the logical volume “lvstuff” we just created. + +#### Install and Format new Hard Drive #### + +To install a new hard drive follow the steps above to create a new partition and add change it’s partition type to LVM (8e). Then use pvcreate to create a physical volume that LVM can recognize. + +#### Add New Hard Drive to Volume Group #### + +To add the new hard drive to a volume group you just need to know what your new partition is, /dev/sdc1 in our case, and the name of the volume group you want to add it to. + +This will add the new physical volume to the existing volume group. + + vgextend vgpool /dev/sdc1 + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/vgextend.png.pagespeed.ce.atRPT1yg5f.png) + +#### Extend Logical Volume #### + +To resize the logical volume we need to say how much we want to extend by size instead of by device. In our example we just added a 8 GB hard drive to our 3 GB vgpool. To make that space usable we can use lvextend or lvresize. + + lvextend -L8G /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/lvextend1.png.pagespeed.ce.6scXbQVUTT.png) + +While this command will work you will see that it will actually resize our logical volume to 8 GB instead of adding 8 GB to the existing volume like we wanted. To add the last 3 available gigabytes you need to use the following command. + + lvextend -L+3G /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/430x85xlvextend2.png.pagespeed.ic.7aBiTBrW03.png) + +Now our logical volume is 11 GB in size. + +#### Extend File System #### + +The logical volume is 11 GB but the file system on that volume is still only 3 GB. To make the file system use the entire 11 GB available you have to use the command resize2fs. Just point resize2fs to the 11 GB logical volume and it will do the magic for you. + + resize2fs /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/650x150xresize2fs.png.pagespeed.ic.Mx74EdMuk_.png) + +**Note: If you are using a different file system besides ext3/4 please see your file systems resize tools.** + +#### Shrink Logical Volume #### + +If you wanted to remove a hard drive from a volume group you would need to follow the above steps in reverse order and use lvreduce and vgreduce instead. + +1. resize file system (make sure to move files to a safe area of the hard drive before resizing) +1. reduce logical volume (instead of + to extend you can also use – to reduce by size) +1. remove hard drive from volume group with vgreduce + +#### Backing up a Logical Volume #### + +Snapshots is a feature that some newer advanced file systems come with but ext3/4 lacks the ability to do snapshots on the fly. One of the coolest things about LVM snapshots is your file system is never taken offline and you can have as many as you want without taking up extra hard drive space. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/652x202xbanner-2.png.pagespeed.ic.VtOUuqYX1W.png) + +When LVM takes a snapshot, a picture is taken of exactly how the logical volume looks and that picture can be used to make a copy on a different hard drive. While a copy is being made, any new information that needs to be added to the logical volume is written to the disk just like normal, but changes are tracked so that the original picture never gets destroyed. + +To create a snapshot we need to create a new logical volume with enough free space to hold any new information that will be written to the logical volume while we make a backup. If the drive is not actively being written to you can use a very small amount of storage. Once we are done with our backup we just remove the temporary logical volume and the original logical volume will continue on as normal. + +#### Create New Snapshot #### + +To create a snapshot of lvstuff use the lvcreate command like before but use the -s flag. + + lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/597x68xlvcreate-snapshot.png.pagespeed.ic.Rw2ivtcpPg.png) + +Here we created a logical volume with only 512 MB because the drive isn’t being actively used. The 512 MB will store any new writes while we make our backup. + +#### Mount New Snapshot #### + +Just like before we need to create a mount point and mount the new snapshot so we can copy files from it. + + mkdir /mnt/lvstuffbackup + mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/565x68xmount-snapshot.png.pagespeed.ic.pVMkhK1o4x.png) + +#### Copy Snapshot and Delete Logical Volume #### + +All you have left to do is copy all of the files from /mnt/lvstuffbackup/ to an external hard drive or tar it up so it is all in one file. + +**Note: tar -c will create an archive and -f will say the location and file name of the archive. For help with the tar command use man tar in the terminal.** + + tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/ + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/627x67xsnapshot-backup.png.pagespeed.ic.tw-2AK_lfZ.png) + +Remember that while the backup is taking place all of the files that would be written to lvstuff are being tracked in the temporary logical volume we created earlier. Make sure you have enough free space while the backup is happening. + +Once the backup finishes, unmount the volume and remove the temporary snapshot. + + umount /mnt/lvstuffbackup + lvremove /dev/vgpool/lvstuffbackup/ + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/630x102xlvremove.png.pagespeed.ic.yBWk47X6lF.png) + +#### Deleting a Logical Volume #### + +To delete a logical volume you need to first make sure the volume is unmounted, and then you can use lvremove to delete it. You can also remove a volume group once the logical volumes have been deleted and a physical volume after the volume group is deleted. + +Here are all the commands using the volumes and groups we’ve created. + + umount /mnt/lvstuff + lvremove /dev/vgpool/lvstuff + vgremove vgpool + pvremove /dev/sdb1 /dev/sdc1 + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/580x185xdelete-lvm.png.pagespeed.ic.3zJTo0Zu9k.png) + +That should cover most of what you need to know to use LVM. If you’ve got some experience on the topic, be sure to share your wisdom in the comments. + +-------------------------------------------------------------------------------- + +via: http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.howtogeek.com/howto/36568/what-is-logical-volume-management-and-how-do-you-enable-it-in-ubuntu/ +[2]:http://www.howtogeek.com/howto/17001/how-to-format-a-usb-drive-in-ubuntu-using-gparted/ +[3]:http://www.howtogeek.com/howto/33552/htg-explains-which-linux-file-system-should-you-choose/ \ No newline at end of file diff --git a/sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md b/sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md new file mode 100644 index 0000000000..7554abd392 --- /dev/null +++ b/sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md @@ -0,0 +1,67 @@ +How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots +================================================================================ +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_55035707bbd74.png.pagespeed.ic.9_yebxUF1C.png) + +Ubuntu’s installer offers an easy “Use LVM” checkbox. The description says it enables Logical Volume Management so you can take snapshots and more easily resize your hard disk partitions — here’s how to do that. + +LVM is a technology that’s similar to [RAID arrays][1] or [Storage Spaces on Windows][2] in some ways. While this technology is particularly useful on servers, it can be used on desktop PCs, too. + +### Should You Use LVM With Your New Ubuntu Installation? ### + +The first question is whether you even want to use LVM with your Ubuntu installation. Ubuntu makes this easy to enable with a quick click, but this option isn’t enabled by default. As the installer says, this allows you to resize partitions, create snapshots, merge multiple disks into a single logical volume, and so on — all while the system is running. Unlike with typical partitions, you don’t have to shut down your system, boot from a live CD or USB drive, and [resize your partitions while they aren’t in use][3]. + +To be perfectly honest, the average Ubuntu desktop user probably won’t realize whether they’re using LVM or not. But, if you want to do more advanced things later, LVM can help. LVM is potentially more complex, which could cause problems if you need to recover your data later — especially if you’re not that experienced with it. There shouldn’t be a noticeable performance penalty here — LVM is implemented right down in the Linux kernel. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_55035cbada6ae.png.pagespeed.ic.cnqyiKfCvi.png) + +### Logical Volume Management Explained ### + +We’re previously [explained what LVM is][4]. In a nutshell, it provides a layer of abstraction between your physical disks and the partitions presented to your operating system. For example, your computer might have two hard drives inside it, each 1 TB in size. You’d have to have at least two partitions on these disks, and each of these partitions would be 1 TB in size. + +LVM provides a layer of abstraction over this. Instead of the traditional partition on a disk, LVM would treat the disks as two separate “physical volumes” after you initialize them. You could then create “logical volumes” based on these physical volumes. For example, you could combine those two 1 TB disks into a single 2 TB partition. Your operating system would just see a 2 TB volume, and LVM would deal with everything in the background. A group of physical volumes and logical volumes is known as a “volume group.” A typical system will just have a single volume group. + +This layer of abstraction makes it possibly to easily resize partitions, combine multiple disks into a single volume, and even take “snapshots” of a partition’s file system while it’s running, all without unmounting it. + +Note that merging multiple disks into a single volume can be a bad idea if you’re not creating backups. It’s like with RAID 0 — if you combine two 1 TB volumes into a single 2 TB volume, you could lose important data on the volume if just one of your hard disks fails. Backups are crucial if you go this route. + +### Graphical Utilities for Managing Your LVM Volumes ### + +Traditionally, [LVM volumes are managed with Linux terminal commands][5].These will work for you on Ubuntu, but there’s an easier, graphical method anyone can take advantage of. If you’re a Linux user used to using GParted or a similar partition manager, don’t bother — GParted doesn’t have support for LVM disks. + +Instead, you can use the Disks utility included along with Ubuntu for this. This utility is also known as GNOME Disk Utility, or Palimpsest. Launch it by clicking the icon on the dash, searching for Disks, and pressing Enter. Unlike GParted, the Disks utility will display your LVM partitions under “Other Devices,” so you can format them and adjust other options if you need to. This utility will also work from a live CD or USB drive, too. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_550361b3772f7.png.pagespeed.ic.nZWwLJUywR.png) + +Unfortunately, the Disks utility doesn’t include support for taking advantage of LVM’s most powerful features. There’s no options for managing your volume groups, extending partitions, or taking snapshots. You could do that from the terminal, but you don’t have to. Instead, you can open the Ubuntu Software Center, search for LVM, and install the Logical Volume Management tool. You could also just run the **sudo apt-get install system-config-lvm** command in a terminal window. After it’s installed, you can open the Logical Volume Management utility from the dash. + +This graphical configuration tool was made by Red Hat. It’s a bit dated, but it’s the only graphical way to do this stuff without resorting to terminal commands. + +Let’s say you wanted to add a new physical volume to your volume group. You’d open the tool, select the new disk under Uninitialized Entries, and click the “Initialize Entry” button. You’d then find the new physical volume under Unallocated Volumes, and you could use the “Add to existing Volume Group” button to add it to the “ubuntu-vg” volume group Ubuntu created during the installation process. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_550363106789c.png.pagespeed.ic.drVInt3Weq.png) + +The volume group view shows you a visual overview of your physical volumes and logical volumes. Here, we have two physical partitions across two separate hard drives. We have a swap partition and a root partition, just as Ubuntu sets up its partitioning scheme by default. Because we’ve added a second physical partition from another drive, there’s now a good chunk of unused space. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_550363f631c19.png.pagespeed.ic.54E_Owcq8y.png) + +To expand a logical partition into the physical space, you could select it under Logical View, click Edit Properties, and modify the size to grow the partition. You could also shrink it from here. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_55036893712d3.png.pagespeed.ic.ce7y_Mt0uF.png) + +The other options in system-config-lvm allow you to set up snapshots and mirroring. You probably won’t need these features on a typical desktop, but they’re available graphically here. Remember, you can also [do all of this with terminal commands][6]. + +-------------------------------------------------------------------------------- + +via: http://www.howtogeek.com/211937/how-to-use-lvm-on-ubuntu-for-easy-partition-resizing-and-snapshots/ + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.howtogeek.com/162676/how-to-use-multiple-disks-intelligently-an-introduction-to-raid/ +[2]:http://www.howtogeek.com/109380/how-to-use-windows-8s-storage-spaces-to-mirror-combine-drives/ +[3]:http://www.howtogeek.com/114503/how-to-resize-your-ubuntu-partitions/ +[4]:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ +[5]:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ +[6]:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ \ No newline at end of file diff --git a/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md new file mode 100644 index 0000000000..d994409438 --- /dev/null +++ b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md @@ -0,0 +1,93 @@ +Install And Use ‘Go For It!’ To Do App In Linux +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_For_It_TODO_Linux.jpeg) + +How do you manage tasks and remember things in desktop Linux? I preferred [using sticky notes in Ubuntu][1] for a long time. But the problem I faced was syncing it with other devices, especially with my smartphone. This is the reason why went on with [Google Keep][2]. + +Now, Google Keep is feature rich app and I really like it, and like it to the extent of calling it [Linux alternative of Evernote][3]. But not everyone may like a feature rich todo list app. Minmalist is the current trend and liked by many. And if you are one of the minimalist lover, who is looking for an open source to do list app, you should give [Go For It!][4] a try. + +### Go For It! productivity desktop app for Linux ### + +Go For It! is a simple to do list app that comes with a timer to keep you focused on the work. So, you add a task to the list and can attach a timer to it. It will keep remind you to work on the task. You can watch the video by its developer, [Manuel Kehl][5]: + +注释:youtube视频,发布的时候可做成一个链接 + + +### Install Go For It! ### + +To install Go For It! in Ubuntu 15.04, 14.10, 14.04 and other Ubuntu based Linux distributions such as Linux Mint, elementary OS Freya etc, use the official PPA of this app: + + sudo add-apt-repository ppa:mank319/go-for-it + sudo apt-get update + sudo apt-get install go-for-it + +You can download the .deb binaries, binaries for Windows and source code from the respective links below: + +- [Download source code][6] +- [Download .deb binaries][7] +- [Download for Windows][8] + +### Using Go For It! in desktop Linux ### + +Using Go For It! is really simple. You add tasks in the list. The tasks are saved in todo.txt file. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux.png) + +By default a timer of 25 minutes will be set on each task. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_1.png) + +Once done, task is automatically archived to done.txt. Based on preferences, it will send desktop notifications at regular time interval and few minutes before the task is supposed to be over: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Linux_notification.png) + +You can change all these preferences from configuration. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_2.png) + +So far so good. But what about using it on a smartphone. A productivity app is not complete if you cannot keep it synced across various devices. Good thing is that Go For It! is based on [todo.txt][9], which means you can use it in smartphones using third party apps and a cloud service like Dropbox. + +### Using Go For It! in Android smartphones and tablets ### + +You need to do couple of things here. First thing first, install Dropbox in Linux as well as in your Android phone, if you haven’t installed it already. The next thing you need to do is to change the configuration of Go For It! and **change the todo.txt directory to Dropbox location**. + +Next, you will have to download [Simpletask Android app][10]. It’s a free app. Install this app. When you run Simpletask for the first time, you will ask to link your account with Dropbox: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android_1.jpeg) + +Once you have linked Simpletask with Dropbox, open the app. If you have change the configuration of Go For It! to save the files in Dropbox, you should be able to see it in Simpletask. If you do not see it, click on the settings from the bottom and use the option of Open Todo file: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android.jpeg) + +Now you should be able to see your tasks synced with Simpletask. + +### Conclusion ### + +With Simpletask, you can use it in similar fashion as a [markup language tool][11]. For minimal and focused usage Go For It! is a nice to do app. A clean interface is another plus point. It could have been better to have its own smartphone app but we already saw the workarounds. + +On the down side, Go For It! doesn’t run in background. Which means, you’ll have to keep it running always. It doesn’t even has a minimize button, a tiny annoyance. What I would like to see is an indicator applet for it. Running in the background and quick access in the panel will definitely improve its usability. + +Do try Go For It! and share your experience with it. What other to-do app do you use on desktop Linux? How does Go For It! compare with your other favorite productivity app? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/go-for-it-to-do-app-in-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/indicator-stickynotes-windows-like-sticky-note-app-for-ubuntu/ +[2]:http://itsfoss.com/install-google-keep-ubuntu-1310/ +[3]:http://itsfoss.com/5-evernote-alternatives-linux/ +[4]:http://manuel-kehl.de/projects/go-for-it/ +[5]:http://manuel-kehl.de/about-me/ +[6]:https://github.com/mank319/Go-For-It +[7]:https://launchpad.net/~mank319/+archive/ubuntu/go-for-it +[8]:http://manuel-kehl.de/projects/go-for-it/download-windows-version/ +[9]:http://todotxt.com/ +[10]:https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&hl=en +[11]:http://itsfoss.com/install-latex-ubuntu-1404/ \ No newline at end of file From f5dffd27d321a35a3d4053646bf7e1c328f14585 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 18 Mar 2015 22:19:04 +0800 Subject: [PATCH 595/725] PUB:20150127 Windows 10 versus Linux @zpl1025 --- .../talk => published}/20150127 Windows 10 versus Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/talk => published}/20150127 Windows 10 versus Linux.md (100%) diff --git a/translated/talk/20150127 Windows 10 versus Linux.md b/published/20150127 Windows 10 versus Linux.md similarity index 100% rename from translated/talk/20150127 Windows 10 versus Linux.md rename to published/20150127 Windows 10 versus Linux.md From 62438ef56f12792c0c12c5222f82611b1a7b9c32 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 18 Mar 2015 23:32:32 +0800 Subject: [PATCH 596/725] PUB:20150215 A Look At What Linux Games We Will See In 2015 And Beyond @wi-cuckoo --- ...ux Games We Will See In 2015 And Beyond.md | 130 ++++++++++-------- 1 file changed, 76 insertions(+), 54 deletions(-) rename {translated/talk => published}/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md (53%) diff --git a/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md similarity index 53% rename from translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md rename to published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md index fc5d48aad4..5def58511a 100644 --- a/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md +++ b/published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md @@ -1,85 +1,100 @@ -预见我们将会在2015年及之后的Linux游戏 -================================================================================他们说Linux游戏开发已经死了,已经变得毫无意义...随他们说去吧.一起看看2015甚至以后会为我们带来什么游戏. +Linux 游戏之 2015 动向 +================================================================================ +他们说Linux游戏开发已经死了,已经变得毫无意义…… 随他们说去吧。一起看看2015甚至以后会为我们带来什么Linux游戏。 -真的很难跟上为我们出现的每一样事物,但是可以快速浏览一下我们将会看到的变化. +真的很难跟得上扑面而来的各种形形色色的新事物,但是可以快速浏览一下我们将会看到的变化。 ### 已确认的游戏 ### #### 冒险游戏 #### -- [看火人][1] -- [失落的天堂:初探][2] -- [蒸汽世界:浩劫][3] +- [看火人(Firewatch)][1] +- [失落的天堂:初探(Paradise Lost: First Contact)][2] +- [时空英豪 1.1(Outcast 1.1)][42] +- [蒸汽世界:浩劫(SteamWorld Heist)][3] #### 动作游戏 #### -- [暗黑血统][4] -- [暗黑血统2][5] -- [尸人的世界][6] -- [骷髅女孩][7] +- [暗黑血统(Darksiders)][4] +- [暗黑血统 2(Darksiders 2)][5] +- [尸人的世界(Ray's The Dead)][6] +- [骷髅女孩(Skullgirls)][7] #### 第一人称游戏 #### -- [生化奇兵:永恒][8] -- 半条命 3 /troll      #此处troll不知道如何翻译 -- [烽火家园:革命][9] -- [杀戮空间 2][10] -- 英雄萨姆 4(目前无官方站点) -- [联合风暴][11] -- [烈火击杀][12] +- [生化奇兵:永恒(Bioshock Infinite)][8] +- 半条命 3 /troll (Half Life 3 /troll)    +- [烽火家园:革命(Homefront: The Revolution)][9] +- [叛变(Insurgency)][43] +- [杀戮空间 2(Killing Floor 2)][10] +- 英雄萨姆 4(Serious Sam 4)(目前无官方站点) +- [联合风暴(Storm United)][11] +- [烈火击杀(SUPERHOT)][12] #### 平台游戏 #### -- [武装原型][13] -- [峡谷][14] #此处游戏名尚不确定 -- [吉安娜姐妹][15] -- [心之所向:Alicia][16] -- [ ][17] #此处游戏名未知 -- [无限工厂][18] -- [无敌9号][19] -- [林中之夜][20] -- [夜][21] -- [奇异的世界:新鲜可口][22] -- [真红女神][23] +- [武装原型(Broforce)][13] +- [峡谷(Chasm)][14] #此处游戏中文名尚不确定 +- [吉安娜姐妹(Giana Sisters)][15] +- [心之所向:Alicia(Heart Forth, Alicia)][16] +- [热铁皮屋顶(Hot Tin Roof)][17] +- [无限工厂(Infinifactory)][18] +- [无敌9号(Mighty No. 9)][19] +- [林中之夜(Night in the Woods)][20] +- [夜(Noct)][21] +- [奇异的世界:新鲜可口(Oddworld: New 'N' Tasty)][22] +- [真红女神(Red Goddess)][23] + +#### 赛车游戏 #### + +- [赛车计划(Project Cars)][44] +- [死亡赛车:再生(Carmageddon: Reincarnation)][45] #### 角色扮演游戏 #### -- [神界:原罪][24] -- [永恒之柱][25] -- [暗影狂奔:香港][26] -- [旗帜的传说][27] +- [神界:原罪(Divinity: Original Sin)][24] +- [永恒之柱(Pillars Of Eternity)][25] +- [暗影狂奔:香港(Shadowrun: Hong Kong)][26] +- [旗帜的传说(The Banner Saga)][27] +- [镇魂曲:遗器之潮(Torment: Tides of Numenera)][46] #### 策略游戏 #### -- [奇迹时代3][28] -- [放逐之城][29] -- [城:天际][30] -- [发条帝国][31] -- [][32] -- [卷轴][33] -- [太空海盗和僵尸 2][34] +- [奇迹时代3(Age of Wonders III)][28] +- [At The Gates][47] # 尚无中文名 +- [放逐之城(Banished)][29] +- [城:天际(Cities: Skylines)][30] +- [发条帝国(Clockwork Empires)][31] +- [Parkitect][32] # 尚无中文名 +- [卷轴(Scrolls)][33] +- [太空海盗和僵尸 2(Space Pirates And Zombies 2)][34] #### 沙盒游戏 #### -- [泰拉瑞亚][35] -- [X 重生][36] +- [泰拉瑞亚(Terraria)][35] +- [X 重生(X Rebirth)][36] -#### 不太确认,不过可能性高 #### +#### 体育游戏 #### -- [英雄连][37] -- [逃生][38] -- [影子武士][39] -- [火炬之光 2][40] +- [惊爆美国棒球16(Out of the Park Baseball 16)][48] -然而有两个来自Feral Interactive的,由于不知道他们是什么,所以没有列举出来. +### 不太确认,不过可能性高 ### -我们猜测Aspyr也在准备新的大制作,但是他们仅仅发布了他们最新的游戏,所以可能要等上几个月我们才能看到些什么. +- [英雄连 2(Company of Heroes 2)][37] +- [逃生(Outlast)][38] +- [影子武士(Shadow Warrior)][39] +- 无光之海 - 其开发商试验性地构建 Linux 版本,不过这要取决于他们的 Windows 版本的销售情况(据邮件沟通信息) +- [火炬之光 2(Torchlight II)][40] -当然,** 这不是完整的列表 **,我们会轻易忘记巨量的游戏正在走向我们,哇,如此丰富的列表. +然而有[两个来自Feral Interactive的移植大作][49],由于不知道他们是什么,所以没有列举出来。 -下个月就是游戏开发者大会,我们也期待一些改变发生.然而,我们没有什么确切的东西,对于Valve与Steam Machines的合作,我们期待至少会增加一些Linux游戏,否则,如我们担心,炫耀一些过时的游戏会让Valve脸上无光. +我们猜测Aspyr也在准备新的大制作,但是他们仅仅发布了他们最新的游戏,所以可能要等上几个月我们才能看到些什么。 -你怀念Linux的哪些地方曾让你兴奋? +当然,** 这不是完整的列表 **,我们会轻易忘记如此多的游戏正在走向我们,哇,如此丰富的列表。 + +我们也期待 GDC 2015 上有一些改变,然而,我们没有什么确切的东西,对于Valve与Steam Machines的合作,我们期待至少会增加一些Linux游戏,否则,如我们担心,炫耀一些过时的游戏会让Valve脸上无光。 + +希望我们没有错过那些 Linux 中让你感到兴奋的东西! -------------------------------------------------------------------------------- @@ -87,7 +102,7 @@ via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-se 作者:[liamdawe][a] 译者:[wi-cuckoo](https://github.com/wi-cuckoo) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -132,5 +147,12 @@ via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-se [38]:https://www.gamingonlinux.com/articles/outlast-that-really-scary-game-looks-like-its-still-heading-to-linux.4896 [39]:https://www.gamingonlinux.com/articles/shadow-warrior-looks-like-it-will-come-to-linux.4859 [40]:https://www.gamingonlinux.com/articles/torchlight-ii-has-even-more-positive-signs-for-linux.4817 -[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ - +[41]:https://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ +[42]:https://www.gamingonlinux.com/articles/outcast-a-real-classic-has-been-revamped-and-linux-is-planned.4736 +[43]:https://www.gamingonlinux.com/articles/insurgency-fps-is-waiting-on-valve-so-it-can-come-to-linux-updated.4564 +[44]:http://projectcarsgame.com/ +[45]:https://www.gamingonlinux.com/articles/carmageddon-reincarnations-jason-garber-answers-our-questions-on-their-linux-support.3380 +[46]:https://www.gamingonlinux.com/articles/torment-tides-of-numenera-new-video-looks-absolutely-stunning.4320 +[47]:http://www.atthegatesgame.com/info +[48]:http://www.ootpdevelopments.com/newsletters/nl0154/ +[49]:http://feralinteractive.com/en/upcoming/ \ No newline at end of file From 3541cca48ad92b098acb218df820647b71e40aca Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Thu, 19 Mar 2015 15:03:03 +0800 Subject: [PATCH 597/725] translating --- sources/talk/20150318 The future of Linux storage.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20150318 The future of Linux storage.md b/sources/talk/20150318 The future of Linux storage.md index d1a8898677..25f178bf8b 100644 --- a/sources/talk/20150318 The future of Linux storage.md +++ b/sources/talk/20150318 The future of Linux storage.md @@ -1,3 +1,4 @@ +[translating by KayGuoWhu] The future of Linux storage ================================================================================ > **Summary**:Linux software developers are working hard on expanding Linux's file and storage options. From 06a3a61874eb618f8689dde545e4bb58e6e2d1cb Mon Sep 17 00:00:00 2001 From: martin qi Date: Thu, 19 Mar 2015 19:53:49 +0800 Subject: [PATCH 598/725] translating --- sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md index 9f39418fce..8faab0ce1d 100644 --- a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md +++ b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -1,3 +1,5 @@ +tanslating by martin. + Fedora GNOME Keyboard Shortcuts ================================================================================ To get the very best out of the [GNOME desktop environment][1], within Fedora, you need to learn and remember the keyboard shortcuts required to navigate the system. @@ -208,4 +210,4 @@ via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm [6]:https://s-media-cache-ak0.pinimg.com/originals/d5/f4/a4/d5f4a42c0940fae6653ee9a17294d450.jpg [7]:http://en.wikipedia.org/wiki/GNOME [8]:https://wiki.gnome.org/ -[9]:https://wiki.gnome.org/Gnome3CheatSheet \ No newline at end of file +[9]:https://wiki.gnome.org/Gnome3CheatSheet From 620535311fdba97dba05e92808e9ef805ac8c4b5 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Fri, 20 Mar 2015 01:30:38 +0800 Subject: [PATCH 599/725] Translated --- ...n local time and UNIX timestamp in Perl.md | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md index ab8efa8f19..34b8bf4629 100644 --- a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md +++ b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md @@ -1,14 +1,12 @@ - Vic020 - -Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl +Linux有问必答:Perl中本地时间和UNIX时间戳间相互转换 ================================================================================ -> **Question**: I need to convert readable date and time to a corresponding UNIX timestamp (i.e., Epoch time), or vice versa in a Perl program. Can you show me Perl code examples of converting date/time to UNIX timestamp, or conversely, converting UNIX timestamp to human-readable date and time? +> **问题**: 在Perl语言中,我需要转换易读的日期和时间到对应的UNIX时间戳,反之亦然。你可以给我一些Perl代码例子吗?关于日期及时间转换到UNIX时间戳,或者相反,转换UNIX时间戳到可读的日期和时间。 -When your Perl script needs to deal with time information, there are two different ways to represent and manipulate date and time in the script. One way is a human-readable string representation of time (e.g., "Sat Mar 14 10:14:05 EDT 2015"), and the other is via UNIX timestamp (also known as "Epoch time") which is the number of elapsed seconds since 00:00:00 UTC, 1 Jaunary 1970. Either method has its own pros and cons, and depending on your requirements you may want to convert one format to the other. +当你的Perl脚本需要解决时间信息,这里有两种方法来表示和处理日期和时间。一种方法是易读的时间表示(例,"Sat Mar 14 10:14:05 EDT 2015"),另外一种是使用UNIX时间戳(也叫“新纪元时间”),这是从1970年1月1日到今所消耗的时间秒数。每一种方法都有它自己的优劣势,取决于你的需要,也许也就需要转换一种格式到另一种。 -### Convert Local Time to UNIX Timestamp in Perl ### +### Perl中转换本地时间到UNIX时间戳 ### -To obtain UNIX time from a date string, you can use str2time() in Date::Parse module. It can handle a variety of date formats, such as: +为了从日期字符串中获得UNIX时间,可以使用Date::Parse模块中str2time()函数。此函数可以处理多种格式,例如: - Sat Mar 14 10:14:05 EDT 2015 - 3/14/2015 10:14:05 -0400 @@ -22,7 +20,7 @@ To obtain UNIX time from a date string, you can use str2time() in Date::Parse mo # 1426342445 will be stored in $unix_time my $unix_time = str2time($local_time); -Date:Parse module supports multiple languages (English, French, German and Italian) and timezones. For example: +Date:Parse 模块支持多种语言(英语,法语,德语和意大利语)和时区。例如: use Date::Parse; use Date::Language; @@ -30,17 +28,18 @@ Date:Parse module supports multiple languages (English, French, German and Itali my $lang = Date::Language->new('French'); my $unix_time = $lang->str2time("12:14:05, Ago 16, 2014 (CEST)"); -### Convert UNIX Timestmp to Human-Readable Date and Time in Perl ### +### Perl中UNIX时间戳到可读的日期和时间 ### -If you want to show a UNIX timestamp in a human-readable format, you can use localtime() function which converts a UNIX timestamp into a 9-element list. You can use the returned list to construct any kind of human-readable date/time string as you want. Here is a code snippet. - # $sec, $min, $hour: seconds, minutes and hours - # $mday: the day of the month (0-31) - # $mon: month in the range of 0 (Jaunary) and 11 (December) - # $year: the number of years that have elapsed since 1900 - # $wday: the day of the week in the range of 0 (Sunday) and 6 (Saturday) - # $yday: the day of the year in the range of 0 and 364 (or 365 in leap years) - # $isdst: whether or not it's in daylight saving time +如果你想要转换UNIX时间戳到可读的格式,可以使用localtime()函数,此函数可以转换UNIX时间戳为一个9元素列表。然后你可以使用返回的list构造任何你需要的可读格式。这里有一个代码片段: + + # $sec, $min, $hour: 秒,分,时 + # $mday: 月中的某天 (0-31) + # $mon: 月份,范围 0 (一月) 至 11 (十二月) + # $year: 年份,与1900年的差值(2015年为2015-1900=115) + # $wday: 星期,范围 0 (星期天) 至 6 (星期六) + # $yday: 年中的某天,范围 0 至 364 (或 365 闰年) + # $isdst: 是否是夏令时 my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp); @@ -55,7 +54,7 @@ If you want to show a UNIX timestamp in a human-readable format, you can use loc via: http://ask.xmodulo.com/convert-local-time-unix-timestamp-perl.html 作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) +译者:[VicYu/Vic020](http://vicyu.net) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 187dee23ca8f4f063bd07511a1289b3827670784 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Fri, 20 Mar 2015 01:31:34 +0800 Subject: [PATCH 600/725] Moved --- ...ow to convert between local time and UNIX timestamp in Perl.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md (100%) diff --git a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md b/translated/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md similarity index 100% rename from sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md rename to translated/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md From 3aa8bc097e07fb086671f5f5abcfae602eb1c324 Mon Sep 17 00:00:00 2001 From: LouisWei Date: Fri, 20 Mar 2015 11:17:57 +0800 Subject: [PATCH 601/725] temp --- ...n source software in the business world.md | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 translated/talk/20150309 10 best uses for open source software in the business world.md diff --git a/translated/talk/20150309 10 best uses for open source software in the business world.md b/translated/talk/20150309 10 best uses for open source software in the business world.md new file mode 100644 index 0000000000..2defa40f83 --- /dev/null +++ b/translated/talk/20150309 10 best uses for open source software in the business world.md @@ -0,0 +1,25 @@ +10种将开源用于商业的最佳途径 +=============================================================================== +> 开源为大大小小的商业带来了一些显著的效益 -- 但是你可能会对某些用途感到惊讶。 + +![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) + +技术上出现了一些不可避免的东西。举个例子,开源会以自己的方式来协助你的工作。10年前,这很容易成为问题。现在呢?仍然无法避免 -- 也没有理由要去避免。有如此多强大(和必要的)的方方面面技术,开源在许多方面已经成为了技术的救世主。但是你哪一块的工作最适合开源呢?当然,这个问题的答案会因公司而异。然而许多的应用可以部署到几乎每个场景中。 + +让我们来看看这10种可能是最佳的使用方法,帮助你的公司成长,带给你从未体验过的灵活性与可靠性,或者仅仅是帮你节省一笔可观的预算。 + +### 1: 服务器软件 ### + +如果你还在微软的互联网信息服务(IIS,Internet Information Services)平台苦苦挣扎,那么你需要体验一下Apache。这款旗舰开源网页服务器软件是这个星球上使用最广泛的软件之一。Apsche免费,难以置信的可靠,易于管理,而且不需要大量如IIS需要的费用。然而,开源并不局限于网页服务器。如果你需要在公司内共享服务器信息块(SMB,Server Message Block),考虑一下Samba, Samba 4甚至集成了活动的目录,所以你不需要担心在Samba服务器上建立单独的用户账号。 + +### 2: 开发 ### + +用开源开发是很简单的事。PHP,Rails,Perl -- 开源上面的开发语言如同开发的工具(从I集成开发环境到调试)一样多。为开源或者开源工具做开发可以有很多种选择(如同私有的开发一样)。开源与私有最大的不同之处在于开源可以接触到软件源代码。在免费开源软件的世界里(FOSS,free open source software),代码都是公开的。对许多开发者来说,Linux操作系统有他们开发和建立需要的一切(特别那些写代码没有一个成熟环境的人)。如果你确实需要图形用户界面(GNU)的开发工具,开源能满足你。 + +### 3: 安全 ### + +通往安全的道路是充满挑战的,但还是很多途径可以达到。你可以选择“安全盒子”的解决方案,跟随Cisco(一个可靠的解决方案)的节奏,或者你可以借助iptables打造最适合你需求的安全。是的,开源的安全之路会需要更多的时间去配置(有很高的学习壁垒),但是结果通常是不错的。这里甚至不强调一种观点,就是一般来说在桌面上使用开源比起大多数封闭的系统来说是一个比较安全的平台。不过在桌面上部署Linux,你的安全性会大大降低。 + +### 4: 桌面 ### + + From 17d47fdea3923cbaa8ae10763f4f80a7505e9ef7 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Fri, 20 Mar 2015 17:11:55 +0800 Subject: [PATCH 602/725] =?UTF-8?q?20150320-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Revealed--The best and worst of Docker.md | 66 ++++++++ ... Smart phones Using Prey Tool in Ubuntu.md | 70 ++++++++ ...o Analyze Disk Images and Recover Files.md | 159 ++++++++++++++++++ 3 files changed, 295 insertions(+) create mode 100644 sources/talk/20150320 Revealed--The best and worst of Docker.md create mode 100644 sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md create mode 100644 sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md diff --git a/sources/talk/20150320 Revealed--The best and worst of Docker.md b/sources/talk/20150320 Revealed--The best and worst of Docker.md new file mode 100644 index 0000000000..1e188d6cba --- /dev/null +++ b/sources/talk/20150320 Revealed--The best and worst of Docker.md @@ -0,0 +1,66 @@ +Revealed: The best and worst of Docker +================================================================================ +![](http://images.techhive.com/images/article/2015/01/best_worst_places_to_work-100564193-primary.idge.jpg) +Credit: [Shutterstock][1] + +> Docker experts talk about the good, the bad, and the ugly of the ubiquitous application container system + +No question about it: Docker's app container system has made its mark and become a staple in many IT environments. With its accelerating adoption, it's bound to stick around for a good long time. + +But there's no end to the debate about what Docker's best for, where it falls short, or how to most sensibly move it forward without alienating its existing users or damaging its utility. Here, we've turned to a few of the folks who have made Docker their business to get their takes on Docker's good, bad, and ugly sides. + +### The good ### + +One hardly expects Steve Francia, chief of operations of the Docker open source project, to speak of Docker in anything less than glowing terms. When asked by email about Docker's best attributes, he didn't disappoint: "I think the best thing about Docker is that it enables people, enables developers, enables users to very easily run an application anywhere," he said. "It's almost like the Holy Grail of development in that you can run an application on your desktop, and the exact same application without any changes can run on the server. That's never been done before." + +Alexis Richardson of [Weaveworks][2], a virtual networking product, praised Docker for enabling simplicity. "Docker offers immense potential to radically simplify and speed up how software gets built," he replied in an email. "This is why it has delivered record-breaking initial mind share and traction." + +Bob Quillin, CEO of [StackEngine][3], which makes Docker management and automation solutions, noted in an email that Docker (the company) has done a fine job of maintaining Docker's (the product) appeal to its audience. "Docker has been best at delivering strong developer support and focused investment in its product," he wrote. "Clearly, they know they have to keep the momentum, and they are doing that by putting intense effort into product functionality." He also mentioned that Docker's commitment to open source has accelerated adoption by "[allowing] people to build around their features as they are being built." + +Though containerization itself isn't new, as Rob Markovich of IT monitoring-service makers [Moogsoft][4] pointed out, Docker's implementation makes it new. "Docker is considered a next-generation virtualization technology given its more modern, lightweight form [of containerization]," he wrote in an email. "[It] brings an opportunity for an order-of-magnitude leap forward for software development teams seeking to deploy code faster." + +### The bad ### + +What's less appealing about Docker boils down to two issues: the complexity of using the product, and the direction of the company behind it. + +Samir Ghosh, CEO of enterprise PaaS outfit [WaveMaker][5], gave Docker a thumbs-up for simplifying the complex scripting typically needed for continuous delivery. That said, he added, "That doesn't mean Docker is simple. Implementing Docker is complicated. There are a lot of supporting technologies needed for things like container management, orchestration, app stack packaging, intercontainer networking, data snapshots, and so on." + +Ghosh noted the ones who feel the most of that pain are enterprises that want to leverage Docker for continuous delivery, but "it's even more complicated for enterprises that have diverse workloads, various app stacks, heterogenous infrastructures, and limited resources, not to mention unique IT needs for visibility, control and security." + +Complexity also becomes an issue in troubleshooting and analysis, and Markovich cited the fact that Docker provides application abstraction as the reason why. "It is nearly impossible to relate problems with application performance running on Docker to the performance of the underlying infrastructure domains," he said in an email. "IT teams are going to need visibility -- a new class of monitoring and analysis tools that can correlate across and relate how everything is working up and down the Docker stack, from the applications down to the private or public infrastructure." + +Quillin is most concerned about Docker's direction vis-à-vis its partner community: "Where will Docker make money, and where will their partners? If [Docker] wants to be the next VMware, it will need to take a page out of VMware's playbook in how to build and support a thriving partner ecosystem. + +"Additionally, to drive broader adoption, especially in the enterprise, Docker needs to start acting like a market leader by releasing more fully formed capabilities that organizations can count on, versus announcements of features with 'some assembly required,' that don't exist yet, or that require you to 'submit a pull request' to fix it yourself." + +Francia pointed to Docker's rapid ascent for creating its own difficulties. "[Docker] caught on so quickly that there's definitely places that we're focused on to add some features that a lot of users are looking forward to." + +One such feature, he noted, was having a GUI. "Right now to use Docker," he said, "you have to be comfortable with the command line. There's no visual interface to using Docker. Right now it's all command line-based. And we know if we want to really be as successful as we think we can be, we need to be more approachable and a lot of people when they see a command line, it's a bit intimidating for a lot of users." + +### The future ### + +In that last respect, Docker recently started to make advances. Last week it [bought the startup Kitematic][6], whose product gave Docker a convenient GUI on Mac OS X (and will eventually do the same for Windows). Another acqui-hire, [SocketPlane][7], is being spun in to work on Docker's networking. + +What remains to be seen is whether Docker's proposed solutions to its problems will be adopted, or whether another party -- say, [Red Hat][8] -- will provide a more immediately useful solution for enterprise customers who can't wait around for the chips to stop falling. + +"Good technology is hard and takes time to build," said Richardson. "The big risk is that expectations spin wildly out of control and customers are disappointed." + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2896895/application-virtualization/best-and-worst-about-docker.html + +作者:[Serdar Yegulalp][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Serdar-Yegulalp/ +[1]:http://shutterstock.com/ +[2]:http://weave.works/ +[3]:http://stackengine.com/ +[4]:http://www.moogsoft.com/ +[5]:http://www.wavemaker.com/ +[6]:http://www.infoworld.com/article/2896099/application-virtualization/dockers-new-acquisition-does-containers-on-the-desktop.html +[7]:http://www.infoworld.com/article/2892916/application-virtualization/docker-snaps-up-socketplane-to-fix-networking-flaws.html +[8]:http://www.infoworld.com/article/2895804/application-virtualization/red-hat-wants-to-do-for-containers-what-its-done-for-linux.html \ No newline at end of file diff --git a/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md new file mode 100644 index 0000000000..598c56bd66 --- /dev/null +++ b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md @@ -0,0 +1,70 @@ +Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu +================================================================================ +Prey is an open source, cross platform tool which helps recover your stolen laptops, desktops, tablet computers and smart phones. It has gained vast popularity and has claimed to help recover hundreds of missing laptops and smart phones. The working of this tool is pretty simple, install it on your Laptop or smart phone, and if your device goes missing, login the Prey website with your credentials and mark your device as “Missing” there. As soon as the thief connects your device with internet, it will immediately send you the Geo location of your device. If your laptop is having webcam, it will also capture the screenshot of the thief. + +Prey consumes minimum system resources; it does not affect your device’s performance in any way. You can also use it alongside any other anti-theft application you had installed on your device. It uses secure and encrypted channels to communicate your device data with Prey servers. + +### Installing and configuring Prey on Ubuntu ### + +Let’s see how we can install and configure Prey on ubuntu, note that during configuration process, we will have to register an account at Prey official website. Once done, it will be able to monitor your devices. Its free account monitors up-to 3 devices, if you need to add more devices to its watch list, you need to purchase appropriate plan. + +Considering the popularity and use of Prey, it has been added to the official ubuntu repository now. That means you don’t need to add any additional PPA to the package manager. Simply launch your terminal application and run the following command to install it: + + sudo apt-get install prey + +![Install Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey.png) + +![Install Prey 1](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey-1.png) + +It is a very lightweight application, uses only few MB of space on the system, once installation is completed, launch it from Applications >> Prey and it will ask you for the configuration. + +Choose “New user” if you are using this app for first time. + +![Prey New User](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-New-User.png) + +This second step is actually the process to sign you up on Prey official website. Please provide your username, email address and password for free account. + +![Register Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Register-Prey.png) + +Hit “Apply” once done, that’s all, your computer is now protected by Prey. + +![Prey Configuration](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Configuration.png) + +Login your newly created [Prey account][1] and you should be able to see your device information there under “Devices” menu. + +![Prey Web Login](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Web-Login.png) + +As soon as your laptop or any other device goes missing, simply login your Prey web account and change the device status to “missing” by clicking “Set Device to Missing” option. + +![Prey Missing Page](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-1.png) + +Choose report frequency from here and hit “Yes, my device is missing”. Report Frequency option is the time interval after which this app will send you status updates for your device location. It will email you as soon as the device status is changed from web interface. + +![Prey Missing Email](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-2.png) + +As soon as your stolen device is connected to the internet, it will immediately send you report, containing your device's Geo whereabouts and IP address. + +![Prey Found Report](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-3.png) + +Click the report link and you should be able to see your device’s Geo location and IP address. + +![Prey Final](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Final.png) + +There is one known drawback in Prey , It needs your device to be connected to internet for sending Geo location, if thief is smart enough to format your device hard disk before connecting it to the network, then you’ll never get report of its recovery. But there is still a work around to overcome this drawback, make sure to add a BIOS password and disable booting the system from removable devices. + +### Conclusion ### + +It is a small, very useful security application which lets you track all of your devices on a single place, although not perfect, but still provides good level of recovery chances for your stolen devices. It runs seamlessly on Linux, Windows and Mac operating system. Here are details about Prey Pro plans. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/anti-theft-application-prey-ubuntu/ + +作者:[Aun Raza][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ +[1]:https://preyproject.com/ \ No newline at end of file diff --git a/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md b/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md new file mode 100644 index 0000000000..ff7ef029e7 --- /dev/null +++ b/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md @@ -0,0 +1,159 @@ +Sleuth Kit - Open Source Forensic Tool to Analyze Disk Images and Recover Files +================================================================================ +SIFT is a Ubuntu based forensics distribution provided by SANS Inc. It consist of many forensics tools such as Sleuth kit / Autopsy etc . However, Sleuth kit/Autopsy tools can be installed on Ubuntu/Fedora distribution instead of downloading complete distribution of SIFT. + +Sleuth Kit /Autopsy is open source digital forensics investigation tool which is used for recovering the lost files from disk image and analysis of images for incident response. Autopsy tool is a web interface of sleuth kit which supports all features of sleuth kit. This tool is available for both Windows and Linux Platforms. + +### Install Sleuth kit ### + +First of all, download Sleuth kit software from [sleuthkit][1] website. Use wget command to download it in terminal which is shown in the figure. + + # wget http://cznic.dl.sourceforge.net/project/sleuthkit/sleuthkit/4.1.3/sleuthkit-4.1.3.tar.gz + +![Download Sleuth Kit](http://blog.linoxide.com/wp-content/uploads/2015/03/download-sleuthkeit.png) + +Extract the sleuthkit-4.1.3.tar.gz using following command and go inside the extracted directory + + # tar -xvzf sleuthkit-4.1.3.tar.gz + +![Extraction Process](http://blog.linoxide.com/wp-content/uploads/2015/03/extract.png) + +Run following command which perform the requirement check before sleuth kit installation + + #./configure + +![configure](http://blog.linoxide.com/wp-content/uploads/2015/03/configure.png) + +Make command compile the sleuth kit code. + + #make + +![make](http://blog.linoxide.com/wp-content/uploads/2015/03/make.png) + +Finally following command install it under **/usr/local** path. + + #make install + +![make install](http://blog.linoxide.com/wp-content/uploads/2015/03/make-install.png) + +### Install Autopsy Tool ### + +Sleuth kit installation is complete and now we will install autopsy interface. Download Autopsy software from [sleuthkit's autopsy page][2] . Use wget command to download it in terminal which is shown in the figure. + + # wget http://kaz.dl.sourceforge.net/project/autopsy/autopsy/2.24/autopsy-2.24.tar.gz + +![Autpsy download link](http://blog.linoxide.com/wp-content/uploads/2015/03/autopsy.png) + +Extract the autopsy-2.24.tar.gz using following command and go inside the extracted directory + + # tar -xvzf autopsy-2.24.tar.gz + +![Autopsy Extraction](http://blog.linoxide.com/wp-content/uploads/2015/03/Autopsy-extraction.png) + +Configuration script of autopsy asks for NSRL (National Software Reference Library) and path of **Evidence_Locker** folder. + +Enter "n" for NSRL prompt and create Evidence_Locker folder under **/usr/local** directory. Autopsy stores the configuration files, audit logs and output under Evidence_Locker folder. + + #mkdir /usr/local/Evidence_Locker + + #cd autopsy-2.24 + + #./configure + +![Autopsy Configuration Script](http://blog.linoxide.com/wp-content/uploads/2015/03/autopsy-configuration.png) + +After adding Evidence_Locker path in installation process , autopsy stores configuration files in it and shows a following message to run the autopsy program. + +![Start Autopsy](http://blog.linoxide.com/wp-content/uploads/2015/03/start-autopsy.png) + +Type **./autopsy** command in terminal to start the graphical interface of Sleuth kit tool. + +![Autopsy Started](http://blog.linoxide.com/wp-content/uploads/2015/03/autopsy-started.png) + +Type following address in the web browser to access the interface of autopsy . + + http://localhost:9999/autopsy + +Main web page of autopsy plugin is shown int the following figure. + +![Main Page](http://blog.linoxide.com/wp-content/uploads/2015/03/main-interface.png) + +Click on the **New Case** button to start analysis in autopsy tool. Enter the case name, description about the investigation and name of agent which is shown in the following figure. + +![create new case](http://blog.linoxide.com/wp-content/uploads/2015/03/create-new-case1.png) + +Following web page will appear after entering the details in the above page. Click on **Add Host** button to add details for the analyst machine. + +![add host](http://blog.linoxide.com/wp-content/uploads/2015/03/add-host1.png) + +Enter host name, description and time zone setting of analyst machine on the next page. + +![add host-detial](http://blog.linoxide.com/wp-content/uploads/2015/03/add-host-detial.png) + +Click on the **Add Image** button to add image file for forensics analysis. + +![add image](http://blog.linoxide.com/wp-content/uploads/2015/03/add-image.png) + +Click on the **Add Image File** button on the following web page. It opens new web page which require Path of image file and select type & importing method. + +![Add image file](http://blog.linoxide.com/wp-content/uploads/2015/03/Add-image-file.png) + +As shown in the following figure, we have entered path of Linux image file. In our case, image file is partition of disk. + +![add image parition](http://blog.linoxide.com/wp-content/uploads/2015/03/add-image-parition.png) + +Click on the next button and select **Calculate hash** option in the next page which is shown in the following figure. It also detect the file system type of the given image. + +![image and file system detail](http://blog.linoxide.com/wp-content/uploads/2015/03/image-and-file-system-detail.png) + +Following window shows the MD5 hash of the image file before static analysis . + +![hash](http://blog.linoxide.com/wp-content/uploads/2015/03/hash1.png) + +On the next web page, autopsy shows following information about the image file. + +- mount point for the image +- name of image +- file system type of given image + +Click on the **details** button to get more information about the given image file. It also offer extraction of unallocated fragments and strings from the volume of image file which is shown in the following figure. + +![Image detail](http://blog.linoxide.com/wp-content/uploads/2015/03/image-details.png) + +Click on **Analyze** button which is shown in the below figure to start analysis on given image . It opens another page which shows the multiple options for image analysis. + +![analysis](http://blog.linoxide.com/wp-content/uploads/2015/03/analysis1.png) + +Autopsy offer following features during image analysis process. + +- File Analysis +- Keyword Search +- File Type +- Image Details +- Data Unit + +File Analysis on given image of Linux partition is shown in the following figure. + +![Analysis of image](http://blog.linoxide.com/wp-content/uploads/2015/03/Analysis-of-image.png) + +It extracts all files and folders from the given image . Extraction of deleted files are shown int he figure. + +![Deleted Files](http://blog.linoxide.com/wp-content/uploads/2015/03/deleted.png) + +### Conclusion ### + +Hopefully this article will be useful for the beginner in static forensics analysis of disk image. Autopsy is web interface for sleuth kit which provides features such as extraction of strings , recovery of deleted files, timeline analysis, extraction of web surfing history, keyword search and email analysis on windows and linux disk images. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/autopsy-sleuth-kit-installation-ubuntu/ + +作者:[nido][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/naveeda/ +[1]:http://www.sleuthkit.org/sleuthkit/download.php +[2]:http://www.sleuthkit.org/autopsy/download.php \ No newline at end of file From aefbeeb6ec493aa8b4de3c4adf830a1fdd10063f Mon Sep 17 00:00:00 2001 From: LouisWei Date: Fri, 20 Mar 2015 20:58:13 +0800 Subject: [PATCH 603/725] translated wi-cuckoo --- ...n source software in the business world.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/translated/talk/20150309 10 best uses for open source software in the business world.md b/translated/talk/20150309 10 best uses for open source software in the business world.md index 2defa40f83..976768229b 100644 --- a/translated/talk/20150309 10 best uses for open source software in the business world.md +++ b/translated/talk/20150309 10 best uses for open source software in the business world.md @@ -22,4 +22,64 @@ ### 4: 桌面 ### +桌面是大多数宏机发生的地方。尽管如此,你必须考虑一个事实,那就是你每天的工作流程已经经历了一个主要的思维模式的转换。我们现在做的大部分事情都是通过网络浏览器。那么为什么不在桌面上部署Linux呢?不但可以能做如今要做的许多工作,而且不用遭受病毒,恶意软件和能破外系统的更新。它不完美 -- 但哪个平台敢说完美?但是它很强大,最后,还可以节省你的开支。这是一个双赢的结局。 +### 5: 工作流程 ### + +每一种工作都依赖于工作的流程。对于某些工作来说,一个流畅的工作流程又取决于所用的工具。开源已经登上这个舞台了。CRM(客户关系管理),HRM(人力资源管理),ERP(企业资源计划),BI(商业智能),BPM(业务流程管理) 。。。。。。只要你叫得出名字,开源就可以做到几乎你能想到的每一种可能的缩写 -- 并且干得不错。借助于[Pentaho][1], [Collabtive][2]和[SugarCRM][3], 开源可以在任何时候与最新的源工具保持同步。 + +### 6: 协作 ### + +没有一起合作项目的能力,你的员工就不能干好工作。所以你选择的协作工具是十分重要的。你会在开源的世界里发现大量的优质协作工具。[Cyn.in community edition][4], [Zimbra Open Source Edition][5]和[Kolab][6]都是不错的协作工具,但仅仅是开源世界里的三个代表而已。 + +### 7: 大数据 ### + +以前说道大数据的时候,往往不会想到开源。多亏了[SUSE][7]的努力,大数据和开源现在可以携手共进了。许多如内存数据和现场内核修复的创意,使得开源成为大数据一个理想的解决方案。 它可以完美地满足大数据在平台上所需的大量要求。而封闭的软件则达不到如此灵活的水平。 + +### 8: 云 ### + +云的主要玩家都是开源的。[Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- 他们都提供云服务,而且知道开源是云配置的最好解决方案。但是,如果你不想用大公司的服务,仍然有很多后起之秀如[OwnCloud][13],你可以选择OwnCloud的特色云方案,或者建立自己的一套。 + +### 9: 多媒体 ### + +如果你的公司为产品发布做播客或视频,开源可以为你提供服务。借助像[Audacity][14]和[OpenShot][15]这样的工具,你可以对音频和视频做你需要的任何处理 -- 而且十分的廉价。实际上,你会感觉到很难再去找到比Audacity更好的播客工具,或者比OpenShot更易用的视频编辑器。没有太大的学习壁垒,或者封闭软件工具要求的高额费用,开源的软件在帮助你创造专业水准的作品方面已经做得很好了。 #这里前一个意群不明白如何翻译 + +### 10: 电子商务 ### + +如果你做在线销售,如果不尝试一下像[PrestaShop][16]之类的工具,你会觉得很没效率的。PrestaShop是最强大的电子商务解决方案之一,易于获取 -- 不需要许可证。 PrestaShop有你可能想要的所有功能(而且有些你可能都没有想过),这个开源平台已经在任何水平上超出了电子商务的范畴。 + +### FOSS 之于商业 ### + +开源已经不再局限于商业交流的范围了。在许多情况下,FOSS已经主导这种交流。如果你已经在寻找将开源解决方案运用的领域,看上面的10条就行了。 + +### 该你了 ### + +你已经将开源用到你的工作中了吗?如果是,属于哪一条方法呢? + +------------------------------------------------------------------------------- + +via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ + +作者:[Jack Wallen][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.techrepublic.com/search/?a=jack+wallen +[1]:http://community.pentaho.com/ +[2]:http://collabtive.o-dyn.de/ +[3]:http://www.sugarcrm.com/ +[4]:http://cynapse.com/cyn-in/ +[5]:https://www.zimbra.com/open-source +[6]:http://kolab.org/ +[7]:http://www.suse.org/ +[8]:http://www.redhat.com/ +[9]:http://www.ubuntu.com/ +[10]:http://www.suse.com/ +[11]:http://aws.amazon.com/ec2/ +[12]:http://www.rackspace.com/cloud +[13]:https://owncloud.org/ +[14]:http://audacity.sourceforge.net/ +[15]:http://www.openshot.org/ +[16]:https://www.prestashop.com/ From 14c70aa5ddb35fb21e0f22b7d6feb695a9ce3c91 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Mar 2015 21:07:58 +0800 Subject: [PATCH 604/725] =?UTF-8?q?=E8=A1=A5=E5=85=85=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wi-cuckoo --- ...n source software in the business world.md | 86 ------------------- 1 file changed, 86 deletions(-) delete mode 100644 sources/talk/20150309 10 best uses for open source software in the business world.md diff --git a/sources/talk/20150309 10 best uses for open source software in the business world.md b/sources/talk/20150309 10 best uses for open source software in the business world.md deleted file mode 100644 index 5393108cde..0000000000 --- a/sources/talk/20150309 10 best uses for open source software in the business world.md +++ /dev/null @@ -1,86 +0,0 @@ -translating wi-cuckoo LLAP -10 best uses for open source software in the business world -================================================================================ -> Open source offers some compelling benefits for businesses large and small -- but you might be surprised at some of the ways it's being used. - -![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) - -Certain inevitabilities occur in technology. For instance, open source software will make its way into your business. Ten years ago, this could easily have been called into question. Now? There's no way to avoid it -- and there's no reason to. With so many powerful (and necessary) pieces of technology, open source has become, in various cases, the savior of tech. But what areas of your business are best suited for open source? The answer to that question is, of course, will be different from one company to the next. But some applications can apply in almost every circumstance. - -Let's take a look at 10 possible best-case uses for open source software that can help make your business grow, bring you a level of flexibility and reliability you haven't experienced, or just save you a welcome percentage of your budget. - -### 1: Server software ### - -If you're still battling Microsoft's IIS platform, you need to experience Apache. The flagship open source web server software is one of the most widely used on the planet. It's free, incredibly reliable, easy to manage, and doesn't require the enormous overhead needed for IIS. But open source isn't limited to just web servers. If you need SMB sharing across your company, consider Samba. Samba 4 even integrates with Active Directory, so you don't have to worry about setting up separate user accounts on the Samba server. - -### 2: Development ### - -Developing with open source is a no-brainer. PHP, Rails, Perl -- there are as many languages to develop with as there are tools (from IDEs to bug tracking). There are a lot of options for developing for open source or with open source tools (as are there with proprietary development). The biggest difference between open source and proprietary is the access you have to the software code. Within the world of FOSS (free open source software) the code is readily available. For many developers, the Linux operating system has everything they need to develop, built right in (especially those who code without a full-blown IDE). If you do require GUI development tools, open source has you covered. - -### 3: Security ### - -The route to security is a challenging one, but there are many paths to success. You can opt for the "security in a box" solution and go with the likes of Cisco (a solid solution) or you can craft your security to perfectly fit your needs with the likes of iptables. Yes, the open source security route will take a bit more time to deploy (with a much higher learning curve), but the end results are generally incredible. This doesn't even address the idea that using open source on the desktop is, generally speaking, a more secure platform than most proprietary systems. Deploy Linux on the desktops and your security woes will drop dramatically. - -### 4: Desktops ### - -This area is where most of the pushback happens. However, you must take into consideration the fact that the daily workflow has undergone a major paradigm shift. Most of what we do now is done via a web browser. So why not deploy Linux on the desktop? Not only does it work with the majority of today's tasks, it will do so without suffering from viruses, malware, and updates that cripple a system. It's not perfect -- what platform is? But it's solid, and in the end, it can save you money. That's a win-win. - -### 5: Workflow ### - -Every business depends upon workflow. For some businesses, a smooth workflow depends upon tools. Open source has this arena covered. CRM, HRM, ERP, BI, BPM... you name it, open source handles just about every possible acronym you can think of -- and it does it very well. With the likes of [Pentaho][1], [Collabtive][2], and [SugarCRM][3], open source can keep up with closed source tools any day. - -### 6: Collaboration ### - -Without the ability to work together on projects, your staff wouldn't be able to get the job done. So the collaboration tools you choose are crucial. You'll find plenty of quality collaboration tools within the world of open source. [Cyn.in community edition][4], [Zimbra Open Source Edition][5], and [Kolab][6] are just three examples of the excellent collaboration tools that exist within the open source world. - -### 7: Big data ### - -When it comes to big data, open source can't be matched. Thanks to the likes of [SUSE][7], big data and open source now go hand in hand. Innovations like in-memory data and live kernel patching make open source an ideal solution for big data. It can be perfectly tuned to meet the massive demands big data places on the platform. Closed source software can't touch this level of flexibility. - -### 8: Cloud ### - -The major players in the cloud are open source. [Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- they all get it and know that open source is the best solution for cloud deployments. But if you don't want to go with the larger companies, there are always up and coming tools like [ownCloud][12], where you can either take advantage of its hosted cloud solutions or build your own. - -### 9: Multimedia ### - -If your company does podcasting or video for PR, open source has you covered. With tools like [Audacity][14] and [OpenShot][15], you can do just about anything with audio or video you need -- and do so on the cheap. In fact, you'll be hard-pressed to find a better podcasting tool than Audacity or an easier-to-use video editor than OpenShot. Both pieces of software do an outstanding job of creating professional-quality results without the steep learning curves or the high prices often associated with closed source tools - -### 10: E-commerce ### - -If your business sells products online, you'd be remiss not to give a tool like [PrestaShop][16] a try. PrestaShop is, hands down, one of the most powerful e-commerce solutions available -- regardless of license. With just about every feature you could possible want (and some you probably haven't even thought of), the open source platform excels at e-commerce on every level. - -### FOSS for business ### - -Open source is no longer hanging around the periphery of the business conversation. In many instances, FOSS leads and dominates that conversation. If you've been looking for areas to consider deploying open source solutions, look no further than these 10. - -### Your turn ### - -Have you added open source software to your business? If so, in what way? - --------------------------------------------------------------------------------- - -via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ - -作者:[Jack Wallen][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.techrepublic.com/search/?a=jack+wallen -[1]:http://community.pentaho.com/ -[2]:http://collabtive.o-dyn.de/ -[3]:http://www.sugarcrm.com/ -[4]:http://cynapse.com/cyn-in/ -[5]:https://www.zimbra.com/open-source -[6]:http://kolab.org/ -[7]:http://www.suse.org/ -[8]:http://www.redhat.com/ -[9]:http://www.ubuntu.com/ -[10]:http://www.suse.com/ -[11]:http://aws.amazon.com/ec2/ -[12]:http://www.rackspace.com/cloud -[13]:https://owncloud.org/ -[14]:http://audacity.sourceforge.net/ -[15]:http://www.openshot.org/ -[16]:https://www.prestashop.com/ From beba4b7d91268345b378ec17bc6f9c5a5730aeed Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Mar 2015 22:32:56 +0800 Subject: [PATCH 605/725] PUB:20150119 Ubuntu With XFCE vs Xubuntu Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @ZhouJ-sh 翻译的很不错! --- ...50119 Ubuntu With XFCE vs Xubuntu Linux.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) rename {translated/share => published}/20150119 Ubuntu With XFCE vs Xubuntu Linux.md (91%) diff --git a/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md b/published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md similarity index 91% rename from translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md rename to published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md index c739b3b702..f48ee95fa7 100644 --- a/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md +++ b/published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md @@ -1,7 +1,8 @@ -Ubuntu With XFCE vs Xubuntu Linux +Ubuntu & XFCE vs Xubuntu ========================================================= -Ubuntu vs Xubuntu。Ubuntu拥有漂亮的桌面体验以及强大的应用程序。Xubuntu轻量、快速并且可定制,哪个更适合你? +Ubuntu拥有漂亮的桌面体验以及强大的应用程序。Xubuntu轻量、快速并且可定制,哪个更适合你? + --------------------------------------------------------- ![](http://f.tqn.com/y/linux/1/W/T/J/1/ubuntudesktop.png) @@ -10,11 +11,11 @@ Ubuntu vs Xubuntu。Ubuntu拥有漂亮的桌面体验以及强大的应用程序 并且,我同时也会在这篇文章中介绍Ubuntu用户如何获取基本的XFCE桌面,以及如何安装完整的Xubuntu桌面。 -[Ubuntu][1]以及[Xubuntu][2]是针对不同目的开发的操作系统,为什么我会强调这一点,是为了说明什么时候或者为什么你应该使用Ubuntu以及什么时候应该使用Xubuntu。 +[Ubuntu][1]以及[Xubuntu][2]是针对不同目的开发的操作系统,为什么我会强调这一点,是为了说明什么时候或者为什么你应该使用Ubuntu或Xubuntu。 比较这两个操作系统就像比较[劳斯莱斯][3]与[保时捷][4]。这两个都是很棒的车,但是如果把劳斯莱斯给一个赛车迷,他们也许会卖掉它买个其他的车,同样,如果把保时捷给舒格勋爵或者休·海夫纳这类人可能也不那么合适。 -Ubuntu拥有一个适用性很强的桌面环境,叫做Unity,并且默认会安装一些很棒的Linux应用程序,包括Rhythmbox以及[LibreOffic][5]。Ubuntu就像是劳斯莱斯。它为舒适而生,并且尽可能的提供从A到B的最时髦的方法。 +Ubuntu拥有一个适用性很强的桌面环境,叫做Unity,并且默认会安装一些很棒的Linux应用程序,包括Rhythmbox以及[LibreOffic][5]。Ubuntu就像是劳斯莱斯。它为舒适而生,并且尽可能的提供满足需要的漂亮的解决方案。 作为一个Ubuntu用户,就像汽车里面的乘客。你在到达目的地的过程中就可以同时把事情搞定,并且所有的事看起来都很漂亮并且很简单。 @@ -92,7 +93,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 接下来,我会使用命令行工具[apt-get][7]介绍在Ubuntu安装XFCE桌面的方法。 -打开一个终端窗口,在Unity环境,你可以在[Dash][8]中搜索“TERM”,或者使用组合键 CTRL+ALT+T。 +打开一个终端窗口,在Unity环境,你可以在[Dash][8]中搜索“TERM”,或者使用组合键 `CTRL+ALT+T`。 安装XFCE桌面十分简单,输入下列命令就可以了: @@ -105,7 +106,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 系统会显示一个消息,提示你是否使用默认的面板布局或者使用单独的面板。 -[最新版本的Xubuntu][10]在顶部包含一个单独的面板,不过我更喜欢两个面板,顶部一个标准面板,底部一个常用程序的停靠面板。 +[最新版本的Xubuntu][10]在顶部包含一个单独的面板,不过我更喜欢双面板,顶部一个标准面板,底部一个常用程序的停靠面板。 需要注意的是,XFCE桌面菜单系统和Xubuntu的菜单有些差异,除非你安装[一个更好的菜单系统][11],设置两个面板或许是个更好的选择。 @@ -117,7 +118,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 如果你想全都使用Xubuntu的东西,但是又不想按照那些介绍重新安装系统的话,看看下面的东西。 -通过搜索“TERM”,或者组合键CTRL+ALT+T,打开一个终端窗口。 +通过搜索“TERM”,或者组合键`CTRL+ALT+T`,打开一个终端窗口。 在终端输入如下命令: @@ -132,16 +133,17 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 Xubuntu桌面就会显示出来啦。 -这里会有一些差异。菜单仍然是XFCE菜单,而不是Xubuntu菜单。某些图标也不会出现在顶部面板中。但是这些问题都不足以让我们花时间卸载Ubuntu然后重装Xubuntu。 +这里会有一些差异。菜单仍然是XFCE菜单,而不是Xubuntu菜单。某些图标也不会出现在顶部面板中。但是这些小问题都不足以让我们花时间卸载Ubuntu然后重装Xubuntu。 下一篇文章中,我会介绍如何自定义Xubuntu以及XFCE桌面。 +----- via : http://linux.about.com/od/dist/fl/Ubuntu-With-XFCE-vs-Xubuntu-Linux.htm 作者:[Gary Newell][a] 译者:[zhouj-sh](https://github.com/Zhouj-sh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 838f2de9fd610e0a344ba8a13dd3ddd8d1b7b458 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Mar 2015 23:09:38 +0800 Subject: [PATCH 606/725] PUB:20150209 How to back up a Debian system using backupninja @FSSlc --- ...ck up a Debian system using backupninja.md | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) rename {translated/tech => published}/20150209 How to back up a Debian system using backupninja.md (53%) diff --git a/translated/tech/20150209 How to back up a Debian system using backupninja.md b/published/20150209 How to back up a Debian system using backupninja.md similarity index 53% rename from translated/tech/20150209 How to back up a Debian system using backupninja.md rename to published/20150209 How to back up a Debian system using backupninja.md index b58baa3bdc..33e95473af 100644 --- a/translated/tech/20150209 How to back up a Debian system using backupninja.md +++ b/published/20150209 How to back up a Debian system using backupninja.md @@ -1,10 +1,10 @@ -如何使用 backupninja 来备份一个 Debian 系统 +如何使用 backupninja 来备份 Debian 系统 ================================================================================ -面临灾难时的小心谨慎或体验可以教会每一个系统管理采取频繁的系统备份的重要性。你可以通过编写存在已久的管用的 shell 脚本,或使用一个(或多个) 适合这项工作的备份工具来完成备份任务。因此,当你要实施一个备份解决方案时,你了解的备份工具越多,你做出的决策就会越明智。 +小心谨慎或灾难体验会让每一个系统管理都认识到频繁的系统备份的重要性。你可以通过编写管用的旧式 shell 脚本,或使用一个(或几个)适合这项工作的备份工具来完成备份任务。因此,当你要实施一个备份解决方案时,你了解的备份工具越多,你做出的决策就会越明智。 -在这篇文章中,我们将为你介绍 [backupninja][2] ,一个轻量且易于配置的系统备份工具。在诸如 **rdiff-backup**, **duplicity**, **mysqlhotcopy** 和 **mysqldump** 等程序的帮助下, Backupninja 可以提供常用的备份功能,如执行远程的、安全的和增量式的文件系统备份,加密备份以及 MySQL/MariaDB 数据库备份。你可以选择性地开启使用 email 进行状态报告功能,也可以对一般的硬件和系统的信息进行备份。 backupninja 的一个关键功能是它拥有一个内建的基于控制台的向导程序(被称为 **ninjahelper**),而后者允许你为不同的备份情景轻松地创建配置文件。 +在这篇文章中,我们将为你介绍 [backupninja][2] ,这是一个轻量且易于配置的系统备份工具。在诸如 **rdiff-backup**, **duplicity**, **mysqlhotcopy** 和 **mysqldump** 等程序的帮助下, Backupninja 可以提供常用的备份功能,如执行远程的、安全的和增量式的文件系统备份,加密备份以及 MySQL/MariaDB 数据库备份。你可以选择性地开启使用 Email 状态报告功能,也可以对一般的硬件和系统的信息进行备份。 backupninja 的一个关键功能是它拥有一个内建的基于控制台的向导程序(被称为 **ninjahelper**),而后者允许你为不同的备份情景轻松地创建配置文件。 -如果非要说的话,backupninja 的缺点是:为了充分使用其所有的功能,它要求一些其他“助手”程序已经被安装在了计算机中。尽管 backupninja 有针对基于 Red Hat(红帽) 的发行版本的 RPM 安装包,但 backupninja 针对 Debian 和它的衍生发行版本的依赖进行了优化。所以不建议在基于 Red Hat 的系统上尝试 backupninja 。 +如果非要说的话,backupninja 的缺点是:为了充分使用其所有的功能,它要求安装一些其他“助手”程序。尽管 backupninja 有针对基于 Red Hat(红帽)的发行版本的 RPM 安装包,但 backupninja 针对 Debian 及其衍生发行版本的依赖进行了优化。所以不建议在基于 Red Hat 的系统上尝试 backupninja 。 在这篇教程中,我们将介绍如何在基于 Debian 的发行版本上安装 backupninja 。 @@ -16,17 +16,17 @@ 在安装的过程中,有几个文件和目录将被创建: -- **/usr/sbin/backupninja** 是 bash shell 主脚本; -- **/etc/cron.d/backupninja**, 默认情况下,构建 cron 任务来每隔一个小时运行上面的主脚本; -- **/etc/logrotate.d/backupninja** 处理由 backupninja 程序产生的日志;(注:我不知道这里的 rotate 该如何翻译) +- **/usr/sbin/backupninja** 是个 bash shell 的主脚本; +- **/etc/cron.d/backupninja**, 默认情况下,设置 cron 任务来每隔一个小时运行上面的主脚本; +- **/etc/logrotate.d/backupninja** 截断由 backupninja 程序产生的日志; - **/etc/backup.d/** 是备份操作的配置文件驻留的目录; - **/etc/backupninja.conf** 是包含一般选项的主配置文件。这个文件带有良好的注释且详细解释了每个选项的含义; -- **/usr/share/backupninja** 是那些被 backupninja 使用的脚本所处的目录。这些脚本文件负责执行实际的工作。在这个目录中,你还可以找到 `.helper` 文件,它们可以被用来配置和设定 ninjahelper 的菜单; -- **/usr/share/doc/backupninja/examples** 含有操作配置文件(即通过 ninjahelper 产生的文件)的模板。 +- **/usr/share/backupninja** 是那些 backupninja 所使用的脚本所处的目录。这些脚本文件负责执行实际的工作。在这个目录中,你还可以找到 `.helper` 文件,它们可以被用来配置和设定 ninjahelper 的菜单; +- **/usr/share/doc/backupninja/examples** 含有操作配置文件(即通过 ninjahelper 产生的文件)的模板。 ### 首次运行 Ninjahelper ### -当我们尝试启动 ninjahelper 时,我们可以看到一个内部依赖可能会被需要。假如系统进行了提示,请输入 “yes” 并敲下回车键来安装 dialog(一个用于从 shell 脚本中显示友好对话框的工具)。 +当我们尝试启动 ninjahelper 时,我们可以看到可能需要一个内部依赖程序。假如系统进行了提示,请输入 “yes” 并敲下回车键来安装 dialog(一个用于从 shell 脚本中显示友好对话框的工具)。 ![](https://farm8.staticflickr.com/7537/15700597667_6618fbc142_z.jpg) @@ -44,11 +44,11 @@ ![](https://farm8.staticflickr.com/7508/15700315139_4c6117ef32_z.jpg) -接下来的一步需要你选取相关条目来作为此次备份任务的一部分。前四个条目已经默认被选上了,但你可以通过按空格键来撤消选择。 +接下来的一步需要你选取相关条目来作为此次备份任务的一部分。前四个条目已经默认被选上了,但你可以通过在条目上按空格键来撤消选择。 ![](https://farm8.staticflickr.com/7507/15699051870_65abaf52e5_z.jpg) -一旦你完成了上面的步骤,按 OK 选项来继续。接着你将能够选择 是愿意使用默认的配置文件(/etc/backup.d/10.sys)来完成这次备份操作,还是创建一个新的配置文件。若为后者,一个含有与默认配置文件内容相同的文件将会在相同的目录下被创建,但它被命名为 11.sys,后续的备份操作将会创建类似的文件(注:只不过命名的序号不同)。需要说明的是一旦这个新的配置文件被创建,你便可以使用你喜爱的文本编辑器来编辑该文件。 +一旦你完成了上面的步骤,按 OK 选项来继续。接着你将能够选择是愿意使用默认的配置文件(/etc/backup.d/10.sys)来完成这次备份操作,还是创建一个新的配置文件。若为后者,一个含有与默认配置文件内容相同的文件将会在相同的目录下被创建,但它被命名为 11.sys,后续的备份操作将会创建类似的文件(注:只不过命名的序号不同)。需要说明的是一旦这个新的配置文件被创建,你便可以使用你喜爱的文本编辑器来编辑该文件。 ![](https://farm9.staticflickr.com/8654/15885715072_1e6126e929_o.png) @@ -56,7 +56,7 @@ 正如你最有可能知道的那样, rsync 被广泛地用于通过网络同步文件或文件夹。在接下来的例子中,我们将讨论一个使用硬链接来为一个远程目录做增量式拉取备份的方法,它被用来保存历史数据以及在我们本地的文件服务器中恢复这些历史数据。这个方法将帮助我们节省空间并增强位于服务器端的安全性。 -**步骤 1**:编写一个位于 `/etc/backup.d`的带有如下内容的自定义脚本,并将它的权限设置为 600 。需要说明的是,除了一般的配置文件,这个目录可能还包含当 backupninja 被执行时你想运行的一些脚本文件,它们可以发挥出位于主配置文件中的变量的优势。 +**步骤 1**:编写一个带有如下内容的自定义脚本,放在 `/etc/backup.d`,并将它的权限设置为 600 。需要说明的是,除了一般的配置文件,这个目录可能还包含当 backupninja 执行时你想运行的一些脚本文件,它们可以发挥出位于主配置文件中的变量的优势。 # REMOTE USER user=root @@ -72,36 +72,37 @@ # RSYNC rsync -av --delete --recursive --link-dest=$localdirold $user@$host:$remotedir $localdir -在上面的配置中, rsync 的 ‘--link-dest’ 选项的作用是为位于 $localdir-old 目录中那些没有改变的文件(包含所有属性) 硬链接到目标目录 ($localdir)。 +在上面的配置中, rsync 的 ‘--link-dest’ 选项的作用是为位于 $localdir-old 目录中那些没有改变的文件(包含所有属性) 硬链接到目标目录($localdir)。 -**步骤 2**:在 backupninja 第一次运行之前,上层目录(这个例子中指的是 /home/gacanepa) 是空的。第一次我们执行下面的命令: +**步骤 2**:在 backupninja 第一次运行之前,上层目录(这个例子中指的是 /home/gacanepa) 是空的。第一次我们执行下面的命令: # backupninja -n backup.0 目录就被创建了,并在接下来的过程中,它的名称将会被更改为 backup.1。 -当我们第二次运行 backupninja 时, backup.0 将会被重新创建,而 backup.1 被保留。 +当我们第二次运行 backupninja 时, backup.0 将会被重新创建,而 backup.1 保持不动。 ![](https://farm8.staticflickr.com/7581/15700597497_0e0cd89ab9.jpg) -**步骤 3**: 确保 backup.1 里面的文件硬链接到 backup.0 里的文件,我们可以通过比较文件的 inode( i 节点) 数和目录的大小来达到此目的。 +**步骤 3**: 确保 backup.1 里面的文件硬链接到 backup.0 里的文件,我们可以通过比较文件的 inode(i 节点)数和目录的大小来达到此目的。 ![](https://farm9.staticflickr.com/8636/15700315029_e922ce771b.jpg) ### 总结 ### -Backupninja 不仅是一个经典的备份工具,它也是一个易于配置的实用程序。你可以通过编写你自己的 handler(注:我不知道该如何翻译 handler 这个单词) 来运行 backupninja 并将它们作为位于 `/etc.backup.d` 的个人配置文件。甚至你还可以为 ninjahelper 编写助手程序,以达到将它们包括在 ninjahelper 的主界面上。 +Backupninja 不仅是一个经典的备份工具,它也是一个易于配置的实用程序。你可以通过编写你自己的控制脚本,用放在 `/etc.backup.d` 中的不同的配置文件来运行 backupninja 。甚至你还可以为 ninjahelper 编写助手程序,并将其包括在 ninjahelper 的主界面上。 -例如,假如你在 `/usr/share/backupninja`目录中创建了一个名为 modulo 的 handler,它将自动运行那些位于 `/etc/backup.d` 目录中以 .xmodulo 为后缀的每个文件。如果你决定添加你的 xmodulo handler 到 ninjahelper 中, 你可以编写相应的助手程序,即 xmodulo.helper 。另外,假如你想 让 backupninja 运行任意一个脚本,只需把它添加到 `/etc/backup.d` 目录中,这样你的目的便可以达到了。 +例如,假如你在 `/usr/share/backupninja`目录中创建了一个名为 xmodulo 的控制脚本,它将自动运行那些位于 `/etc/backup.d` 目录中以 .xmodulo 为后缀的每个文件。如果你决定添加你的 xmodulo 控制脚本到 ninjahelper 中, 你可以编写相应的助手程序,即 xmodulo.helper 。另外,假如你想 让 backupninja 运行其它的脚本,只需把它添加到 `/etc/backup.d` 目录中就可以了。 欢迎使用下面的评论框来留下你的评论、问题或建议。听到你的回应将会使我们很高兴。 + -------------------------------------------------------------------------------- via: http://xmodulo.com/backup-debian-system-backupninja.html 作者:[Gabriel Cánepa][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 5d36c785f206a21b594dc73e57bcde915219d51b Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 20 Mar 2015 23:58:25 +0800 Subject: [PATCH 607/725] PUB:20150104 How to set up a cross-platform backup server on Linux with BackupPC @FSSlc --- ...rm backup server on Linux with BackupPC.md | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) rename {translated/tech => published}/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md (56%) diff --git a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md similarity index 56% rename from translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md rename to published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md index 9dd434a809..24daaf3424 100644 --- a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md +++ b/published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md @@ -1,12 +1,12 @@ -如何在 Linux 上使用 BackupPC 来设置一个跨平台的备份服务器 +如何在 Linux 上使用 BackupPC 来架设跨平台的备份服务器 ================================================================================ -为了防止你不能分辨这篇教程和我先前关于[backupninja][1] 和 [backup-manager][2] 的帖子,=== 我是一个积极的备份迷。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你花费了时间和精力来为你的重要数据生成额外的拷贝。 +也许你没有从我先前关于 [backupninja][1] 和 [backup-manager][2] 的两篇文章中发现,我是一个超级备“粉”。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你为重要数据生成额外的拷贝所付出的时间和精力。 -在这篇帖子中,我将向你介绍 [BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 +在这篇文章中,我将向你介绍 [BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 ### BackupPC 的特点 ### -BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收集和管理其他远程客户端主机上的备份。通过使用它的 Web 界面,你可以检查日志和配置文件、为其他远程主机启动/取消/安排备份任务以及可视化备份任务的当前状态。你也可以非常容易地浏览归档的文件以及从备份的归档中恢复个人文件或整个作业。为了恢复单一的个人文件,你可以直接通过 Web 界面来下载任何先前备份的文件。若如这还不够,针对客户端主机,没有特别的客户端软件需要安装。在 Windows 客户端上, 本机 SMB 协议将被使用,而对于 *nix 客户端,你将使用 `rsync` 或 通过 SSH, RSH 或 NFS 来使用 `tar` 。 +BackupPC 自带有一个健壮的 Web 界面,允许你以集中化的方式来收集和管理其他远程客户端主机上的备份。通过使用它的 Web 界面,你可以检查日志和配置文件、为其他远程主机启动/取消/安排备份任务以及可视化备份任务的当前状态。你也可以非常容易地浏览归档的文件以及从备份的归档中恢复单个文件或整个备份。要恢复单个文件,你可以直接通过 Web 界面来下载任何先前备份的文件。不仅如此,客户端主机并不需要安装特别的客户端软件。在 Windows 客户端上, 使用的是原生的 SMB 协议,而对于 *nix 客户端,你将使用 `rsync` 或 通过 SSH, RSH 或 NFS 来使用 `tar` 。 ### 安装 BackupPC ### @@ -20,13 +20,13 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 # yum install BackupPC -同往常一样,这两种包管理系统都会自动地对依赖问题进行解决。另外,作为安装过程中的一部分,你可能会被要求去配置或重新配置用于图形用户界面的 Web 服务器。下面的截图来自于 Debian 系统: +同往常一样,这两种包管理系统都会自动解决依赖问题。另外,作为安装过程中的一部分,你可能需要新配置或修改配置用于图形用户界面的 Web 服务器。下面的截图来自于 Debian 系统: ![](https://farm8.staticflickr.com/7573/16163781711_6218b620ef_c.jpg) 通过空格键来确定你的选择,然后使用 tab 键移动到 Ok 选项并敲回车键。 -接着类似于下面的截屏将会呈现在你眼前,通知你一个用来管理 BackupPC 的名为 ‘backuppc’的管理员用户以及相应的密码(这个密码可以在以后被更改,如果你希望的话)已经被创建。这里需要注意的是:同样名为 ‘backuppc’的一个 HTTP 账户和一个常规的 Linux 账户将会被创建,它们使用同一个密码。需要前者的目的是来访问受保护的 BackupPC 的 Web 界面,而后者则是为了通过 SSH 来使用 `rsync` 来执行备份任务。 +接着类似于下面的截屏将会呈现在你眼前,通知你创建了一个用来管理 BackupPC 的名为 ‘backuppc’的管理员用户以及相应的密码(如果你需要,这个密码以后可以更改)。这里需要注意的是:这里创建了同样名为 ‘backuppc’的 HTTP 账户和常规的 Linux 账户,它们使用相同的密码。需要前者的目的是来访问受保护的 BackupPC 的 Web 界面,而后者则是为了通过 SSH 来使用 `rsync` 来执行备份任务。 ![](https://farm8.staticflickr.com/7579/15979622809_25e734658d_c.jpg) @@ -42,7 +42,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ### 启动 BackupPC 并设置备份 ### -首先,打开一个浏览器窗口并指向 http:///backuppc/ 。当弹出提示框时,输入先前向你提供的默认 HTTP 用户凭据(注:即用户名 backuppc 和相应的默认密码)。假如认证成功,你就会被带入到 Web 界面的主页: +首先,打开一个浏览器窗口并指向 http://\<服务器名称或 IP 地址>/backuppc/ 。当弹出提示框时,输入先前向你创建的默认 HTTP 用户凭据(注:即用户名 backuppc 和相应的默认密码)。假如认证成功,你就会被带入到 Web 界面的主页: ![](https://farm9.staticflickr.com/8601/15543330314_f6fdaa235e_z.jpg) @@ -51,9 +51,9 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 - Host #1: CentOS 7 [IP 192.168.0.17] - Host #2: Windows 7 [IP 192.168.0.103] -我们将通过 SSH 使用 `rsync`来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 [基于密码认证][7](注:这里我不知如何翻译,根据链接,感觉是无需密码来连接主机)以及在我们的 Windows 主机中设置一个共享目录。 +我们将通过 SSH 使用 `rsync`来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 [基于密钥认证][7] 以及在我们的 Windows 主机中设置一个共享目录。 -下面是关于如何为一个远程 CentOS 主机设置 key-based authentication 的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并向 CentOS 主机上的 root 账户传递它的公共密钥。 +下面是关于如何为一个远程 CentOS 主机设置基于密钥认证的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并将其公钥传输给 CentOS 主机上的 root 账户。 # usermod -s /bin/bash backuppc # su - backuppc @@ -64,13 +64,13 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm8.staticflickr.com/7496/16164929932_8fc817125d_b.jpg) -你需要一个远程的 CentOS 主机的 root 权限来在该主机中的文件系统中发放写权限,以防要恢复的备份文件或目录的所有者为 root 账户。 +你需要一个远程的 CentOS 主机的 root 权限,以获得在该主机中的文件系统中写权限,以防要恢复的备份文件或目录的所有者为 root 账户。 一旦 CentOS 和 Windows 主机都准备完毕,使用 Web 界面将它们添加到 BackupPC: ![](https://farm9.staticflickr.com/8586/15979622709_76c2dcf68c_z.jpg) -下一步的内容由更改每个主机的备份设置组成: +下一步更改每个主机的备份设置: ![](https://farm8.staticflickr.com/7461/16163781611_765c147f9f_z.jpg) @@ -88,7 +88,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm8.staticflickr.com/7536/15978247428_458c023f4c.jpg) -在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页的链接。当一个备份任务被成功地完成,一个被命名为主机名或 IP 地址的目录将会在服务器的 /var/lib/backuppc/pc 目录下被创建。 +在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页的链接。当一个备份任务成功完成后,在服务器的 /var/lib/backuppc/pc 目录下会创建一个命名为主机名或 IP 地址的目录。 ![](https://farm8.staticflickr.com/7549/16165680115_196ee42a49_z.jpg) @@ -96,7 +96,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ### 恢复备份 ### -为了浏览已经保存过的文件。进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你正在工作的机器上: +要浏览这些保存的文件,进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你当前的机器上: ![](https://farm8.staticflickr.com/7506/16165680105_bd5883e0da_c.jpg) @@ -113,21 +113,22 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 有句俗话说,"越简单,越好",而这正是 BackupPC 所提供的东西。在 BackupPC 中,你将不仅找到了一个备份工具,而且还找到了一个无需任何客户端应用来在几个不同的操作系统中管理你的备份的方法。我相信这就有足够的理由让你去尝试一下。 欢迎使用下面的评论框来留下你的评论和问题,假如你有的话。我总是乐于听取读者想说的话! + -------------------------------------------------------------------------------- via: http://xmodulo.com/backuppc-cross-platform-backup-server-linux.html 作者:[Gabriel Cánepa][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://xmodulo.com/author/gabriel -[1]:http://xmodulo.com/backup-debian-system-backupninja.html -[2]:http://xmodulo.com/linux-backup-manager.html +[1]:http://linux.cn/article-5096-1.html +[2]:http://linux.cn/article-4586-1.html [3]:http://backuppc.sourceforge.net/ -[4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[5]:http://ask.xmodulo.com/enable-nux-dextop-repository-centos-rhel.html +[4]:http://linux.cn/article-2324-1.html +[5]:http://linux.cn/article-3889-1.html [6]:http://xmodulo.com/recommend/linuxguide [7]:http://xmodulo.com/how-to-enable-ssh-login-without.html From c71cc70bf2ea8b9724b8c91ee0a47f65405acdbe Mon Sep 17 00:00:00 2001 From: LouisWei Date: Sat, 21 Mar 2015 12:19:20 +0800 Subject: [PATCH 608/725] translating wi-cuckoo --- ...20150318 Install And Use 'Go For It!' To Do App In Linux.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md index d994409438..f09b6b03b2 100644 --- a/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md +++ b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md @@ -1,3 +1,4 @@ +translating wi-cuckoo LLAP Install And Use ‘Go For It!’ To Do App In Linux ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_For_It_TODO_Linux.jpeg) @@ -90,4 +91,4 @@ via: http://itsfoss.com/go-for-it-to-do-app-in-linux/ [8]:http://manuel-kehl.de/projects/go-for-it/download-windows-version/ [9]:http://todotxt.com/ [10]:https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&hl=en -[11]:http://itsfoss.com/install-latex-ubuntu-1404/ \ No newline at end of file +[11]:http://itsfoss.com/install-latex-ubuntu-1404/ From c78d944ea8dd8f46ae558e035a6496bef57223da Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 21 Mar 2015 17:36:19 +0800 Subject: [PATCH 609/725] translating --- sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md b/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md index 37e5255b30..ce77ec963f 100644 --- a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md +++ b/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md @@ -1,3 +1,5 @@ +Translating----geekpi + Install Mate desktop in FreeBSD 10.1 ================================================================================ ![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/03/FreeBSD-790x494.jpg) @@ -58,4 +60,4 @@ via: http://www.unixmen.com/install-mate-desktop-freebsd-10-1/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.unixmen.com/author/pirat9/ \ No newline at end of file +[a]:http://www.unixmen.com/author/pirat9/ From f90c1ab4d7e7e8c4c296260fdaa231ee89425e70 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Mar 2015 17:43:10 +0800 Subject: [PATCH 610/725] PUB:20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS @geekpi --- ...a Web Crawling Tool in Ubuntu 14.04 LTS.md | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) rename {translated/tech => published}/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md (80%) diff --git a/translated/tech/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md b/published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md similarity index 80% rename from translated/tech/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md rename to published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md index 672548853b..6ab4241c76 100644 --- a/translated/tech/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md +++ b/published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md @@ -1,4 +1,4 @@ -如何在Ubuntu 14.04 LTS安装网络爬虫工具 +如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy ================================================================================ 这是一款提取网站数据的开源工具。Scrapy框架用Python开发而成,它使抓取工作又快又简单,且可扩展。我们已经在virtual box中创建一台虚拟机(VM)并且在上面安装了Ubuntu 14.04 LTS。 @@ -6,13 +6,13 @@ Scrapy依赖于Python、开发库和pip。Python最新的版本已经在Ubuntu上预装了。因此我们在安装Scrapy之前只需安装pip和python开发库就可以了。 -pip是作为python包索引器easy_install的替代品。用于安装和管理Python包。pip包的安装可见图 1。 +pip是作为python包索引器easy_install的替代品,用于安装和管理Python包。pip包的安装可见图 1。 sudo apt-get install python-pip ![Fig:1 Pip installation](http://blog.linoxide.com/wp-content/uploads/2014/11/f1.png) -图:1 pip安装 +*图:1 pip安装* 我们必须要用下面的命令安装python开发库。如果包没有安装那么就会在安装scrapy框架的时候报关于python.h头文件的错误。 @@ -20,42 +20,41 @@ pip是作为python包索引器easy_install的替代品。用于安装和管理Py ![Fig:2 Python Developer Libraries](http://blog.linoxide.com/wp-content/uploads/2014/11/f2.png) -图:2 Python 开发库 +*图:2 Python 开发库* -scrapy框架即可从deb包安装也可以从源码安装。然而在图3中我们已经用pip(Python 包管理器)安装了deb包了。 +scrapy框架既可从deb包安装也可以从源码安装。在图3中我们用pip(Python 包管理器)安装了deb包了。 sudo pip install scrapy ![Fig:3 Scrapy Installation](http://blog.linoxide.com/wp-content/uploads/2014/11/f3.png) -图:3 Scrapy 安装 +*图:3 Scrapy 安装* 图4中scrapy的成功安装需要一些时间。 ![Fig:4 Successful installation of Scrapy Framework](http://blog.linoxide.com/wp-content/uploads/2014/11/f4.png) -图:4 成功安装Scrapy框架 +*图:4 成功安装Scrapy框架* ### 使用scrapy框架提取数据 ### -**(基础教程)** +####基础教程#### -我们将用scrapy从fatwallet.com上提取店名(提供卡的店)。首先,我们使用下面的命令新建一个scrapy项目“store name”, 见图5。 +我们将用scrapy从fatwallet.com上提取商店名称(卖卡的店)。首先,我们使用下面的命令新建一个scrapy项目“store name”, 见图5。 $sudo scrapy startproject store_name ![Fig:5 Creation of new project in Scrapy Framework](http://blog.linoxide.com/wp-content/uploads/2014/11/f5.png) -图:5 Scrapy框架新建项目 +*图:5 Scrapy框架新建项目* -Above command creates a directory with title “store_name” at current path. This main directory of the project contains files/folders which are shown in the following Figure 6. 上面的命令在当前路径创建了一个“store_name”的目录。项目主目录下包含的文件/文件夹见图6。 $sudo ls –lR store_name ![Fig:6 Contents of store_name project.](http://blog.linoxide.com/wp-content/uploads/2014/11/f6.png) -图:6 store_name项目的内容 +*图:6 store_name项目的内容* 每个文件/文件夹的概要如下: @@ -66,13 +65,13 @@ Above command creates a directory with title “store_name” at current path. T - store_name/settings.py 是项目的配置文件 - store_name/spiders/, 包含了用于爬取的蜘蛛 -由于我们要从fatwallet.com上如提取店名,因此我们如下修改文件。 +由于我们要从fatwallet.com上如提取店名,因此我们如下修改文件(LCTT 译注:这里没说明是哪个文件,译者认为应该是 items.py)。 import scrapy class StoreNameItem(scrapy.Item): - name = scrapy.Field() # extract the names of Cards store + name = scrapy.Field() # 取出卡片商店的名称 之后我们要在项目的store_name/spiders/文件夹下写一个新的蜘蛛。蜘蛛是一个python类,它包含了下面几个必须的属性: @@ -80,7 +79,7 @@ Above command creates a directory with title “store_name” at current path. T 2. 爬取起点url (start_urls) 3. 包含了从响应中提取需要内容相应的正则表达式的解析方法。解析方法对爬虫而言很重要。 -我们在store_name/spiders/目录下创建了“store_name.py”爬虫,并添加如下的代码来从fatwallet.com上提取点名。爬虫的输出到文件(**StoreName.txt**)中,见图7。 +我们在store_name/spiders/目录下创建了“store_name.py”爬虫,并添加如下的代码来从fatwallet.com上提取店名。爬虫的输出写到文件(**StoreName.txt**)中,见图7。 from scrapy.selector import Selector from scrapy.spider import BaseSpider @@ -113,7 +112,7 @@ Above command creates a directory with title “store_name” at current path. T ![Fig:7 Output of the Spider code .](http://blog.linoxide.com/wp-content/uploads/2014/11/f7.png) -图:7 爬虫的输出 +*图:7 爬虫的输出* *注意: 本教程的目的仅用于理解scrapy框架* @@ -123,7 +122,7 @@ via: http://linoxide.com/ubuntu-how-to/scrapy-install-ubuntu/ 作者:[nido][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 1e0c467871166824612e10fe27fedbe6095fed80 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sat, 21 Mar 2015 17:44:55 +0800 Subject: [PATCH 611/725] translated --- ...16 Install Mate desktop in FreeBSD 10.1.md | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) rename {sources => translated}/tech/20150316 Install Mate desktop in FreeBSD 10.1.md (56%) diff --git a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md b/translated/tech/20150316 Install Mate desktop in FreeBSD 10.1.md similarity index 56% rename from sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md rename to translated/tech/20150316 Install Mate desktop in FreeBSD 10.1.md index ce77ec963f..76d05da5ab 100644 --- a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md +++ b/translated/tech/20150316 Install Mate desktop in FreeBSD 10.1.md @@ -1,61 +1,59 @@ -Translating----geekpi - -Install Mate desktop in FreeBSD 10.1 +在FreeBSD 10.1中安装Mate桌面 ================================================================================ ![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/03/FreeBSD-790x494.jpg) -FreeBSD is fully text mode system, however some times new users might want to use GUI desktop environment. This tutorial will help you to install Mate Desktop in Freebsd 10.1. +FreeBSD是全文本模式的系统,然而有些新用户想要使用GUI桌面环境。这个教程就是帮助你在Freebsd 10.1中安装Mate桌面。 -Here is my test system details: +下面是我的系统细节: root@Freebsd-unixmen:~ # uname -a FreeBSD Freebsd-unixmen 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 root@Freebsd-unixmen:~ -To start installing Mate desktop in FreeBSD 10.1, the following steps can be used. +要在FreeBSD 10.1 中开始安装Mate桌面,按照下面的步骤。 pkg install xf86-video-fbdev mate-desktop mate xorg -### Add the following lines to /etc/rc.conf ### +### 在 /etc/rc.conf 中加入下面的行 ### moused_enable="YES" dbus_enable="YES" hald_enable="YES" -### Test the installation. ### +### 测试安装 ### xinit mate-session ![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot2.png) -Mate doesn’t have a display manager of its own. Hence we can use any other display managers like XDM, GDM, slim etc to use the login manager. Here let’s see how to configure Slim DM with Mate desktop. +Mate本身没有显示管理器。因此我们会使用其他的显示管理器如XDM、GDM、slim等等来作为登录管理器。这里让我们看看如何在Mate桌面中配置Slim DM -### Install Slim ### +### 安装 Slim ### pkg install slim -Add the following line to **/etc/rc.conf**: +在**/etc/rc.conf**中加入下面的行: slim_enable="YES" -Add the following line to .xinitrc file in the user’s home directory +在用户的家目录下的.xinitrc文件加入下面的行。 exec mate-session -Reboot the machine. Now the machine will boot into Slim login where you can login to Mate session. +重启电脑。现在在你登录Mate时就会进入Slim登录界面了。 ![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot3.png) ![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot4.png) -That’s it. Cheers! +就是这样。干杯! -------------------------------------------------------------------------------- via: http://www.unixmen.com/install-mate-desktop-freebsd-10-1/ 作者:[M.el Khamlichi][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 28917b514dd1dc0455698d55df3f757a1b2aa269 Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Mar 2015 19:34:03 +0800 Subject: [PATCH 612/725] PUB:20150115 20 Unix Command Line Tricks--Part I @geekpi --- ...115 20 Unix Command Line Tricks--Part I.md | 85 +++++++++---------- 1 file changed, 41 insertions(+), 44 deletions(-) rename {translated/tech => published}/20150115 20 Unix Command Line Tricks--Part I.md (73%) diff --git a/translated/tech/20150115 20 Unix Command Line Tricks--Part I.md b/published/20150115 20 Unix Command Line Tricks--Part I.md similarity index 73% rename from translated/tech/20150115 20 Unix Command Line Tricks--Part I.md rename to published/20150115 20 Unix Command Line Tricks--Part I.md index b178a61db9..deaaef6bfa 100644 --- a/translated/tech/20150115 20 Unix Command Line Tricks--Part I.md +++ b/published/20150115 20 Unix Command Line Tricks--Part I.md @@ -1,6 +1,6 @@ -20个Unix命令技巧 - 第一部分 +20个 Unix/Linux 命令技巧(一) ================================================================================ -让我们用**这些Unix命令技巧**开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。 +让我们用**这些Unix/Linux命令技巧**开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。 ![](http://s0.cyberciti.org/uploads/cms/2015/01/unix-command-line-tricks.001.jpg) @@ -9,16 +9,15 @@ 我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /path/to/file.log - # or use the following syntax + # 或使用如下格式 : > /path/to/file.log - # finally delete it + # 然后删除它 rm /path/to/file.log -### 如何缓存终端输出? ### - -尝试使用script命令行工具来为你的终端输出创建typescript。 +### 如何记录终端输出? ### +试试使用script命令行工具来为你的终端输出创建输出记录。 script my.terminal.sessio @@ -28,7 +27,7 @@ date sudo service foo stop -要退出(结束script绘画),输入*exit* 或者 *logout* 或者按下 *control-D* +要退出(结束script会话),输入 *exit* 或者 *logout* 或者按下 *control-D*。 exit @@ -38,11 +37,10 @@ less my.terminal.session cat my.terminal.session -### 还原删除的 /tmp 文件夹 ### +### 还原被删除的 /tmp 文件夹 ### 我在文章[Linux和Unix shell,我犯了一些错误][1]。我意外地删除了/tmp文件夹。要还原它,我需要这么做: - mkdir /tmp chmod 1777 /tmp chown root:root /tmp @@ -50,11 +48,11 @@ ### 锁定一个文件夹 ### -为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行: +为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行了: chmod 0000 /downloads -root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用: +root用户仍旧可以访问,而ls和cd命令则不工作。要还原它用: chmod 0755 /downloads @@ -66,40 +64,40 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 或者,在退出vim之前使用:X 命令来加密你的文件,vim会提示你输入一个密码。 -### 清除屏幕上的输出 ### +### 清除屏幕上的乱码 ### 只要输入: reset -### 成为人类 ### +### 易读格式 ### -传递*-h*或者*-H*(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以人类可读的格式输出: +传递*-h*或者*-H*(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以易读的格式输出: ls -lh - # 以人类可读的格式 (比如: 1K 234M 2G) + # 以易读的格式 (比如: 1K 234M 2G) df -h df -k - # 已字节输出如: KB, MB, or GB + # 以字节、KB、MB 或 GB 输出: free -b free -k free -m free -g - # 以人类可读的格式打印 (比如 1K 234M 2G) + # 以易读的格式输出 (比如 1K 234M 2G) du -h - # 以人类可读的格式获取系统perms + # 以易读的格式显示文件系统权限 stat -c %A /boot - # 比较人类可读的数字 + # 比较易读的数字 sort -h -a file - # 在Linux上以人类可读的形式显示cpu信息 + # 在Linux上以易读的形式显示cpu信息 lscpu lscpu -e lscpu -e=cpu,node - # 以人类可读的形式显示每个文件的大小 + # 以易读的形式显示每个文件的大小 tree -h tree -h /boot -### 在Linux系统中显示已知用户的信息 ### +### 在Linux系统中显示已知的用户信息 ### 只要输入: @@ -143,7 +141,7 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 ### 我如何删除意外在当前文件夹下解压的文件? ### -我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它混乱了/var/www/html下的文件。最简单修复这个问题的方法是: +我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的。最简单修复这个问题的方法是: cd /var/www/html/ /bin/rm -f "$(tar ztf /path/to/file.tar.gz)" @@ -166,7 +164,7 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 ## 以root用户运行最后运行的命令 sudo !! -!!会运行最近使用的命令。要运行最近运行的“foo”命令: +!!会运行最近使用的命令。要运行最近运行的以“foo”开头命令: !foo # 以root用户运行上一次以“service”开头的命令 @@ -180,12 +178,11 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 # 测试 nginx.conf /sbin/nginx -t -c /etc/nginx/nginx.conf - # 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi编辑了 + # 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次编辑这个文件了 sudo vi !$ -### 在你要离开的时候留下一个提醒 ### +### 在终端上提醒你必须得走了 ### -If you need a reminder to leave your terminal, type the following command: 如果你需要提醒离开你的终端,输入下面的命令: leave +hhmm @@ -200,26 +197,26 @@ If you need a reminder to leave your terminal, type the following command: cd - -需要快速地回到家目录?输入: +需要快速地回到你的家目录?输入: cd -变量*CDPATH*定义了含有这个目录的搜索目录路径: +变量*CDPATH*定义了目录的搜索路径: export CDPATH=/var/www:/nas10 -现在,不用输入cd */var/www/html/ ,我可以直接输入下面的命令进入/var/www/html: +现在,不用输入cd */var/www/html/ 这样长了,我可以直接输入下面的命令进入 /var/www/html: cd html -### 编辑一个用less浏览的文件 ### +### 在less浏览时编辑文件 ### -要编辑一个用less浏览的文件,按下v。你就可以用变量$EDITOR下的编辑器来编辑了: +要编辑一个正在用less浏览的文件,可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了: less *.c less foo.html - ## 下载v编辑文件 ## - ## 退出编辑器,你可以继续用less浏览了 ## + ## 按下v键来编辑文件 ## + ## 退出编辑器后,你可以继续用less浏览了 ## ### 列出你系统中的所有文件和目录 ### @@ -237,14 +234,14 @@ If you need a reminder to leave your terminal, type the following command: # 列出 $HOME 中所有的文件 find $HOME -type f -ls | less -### 用一条命令构造命令树 ### +### 用一条命令构造目录树 ### -你可以用mkdir加上-p选项一次创建目录树: +你可以用mkdir加上-p选项一次创建一颗目录树: mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64} ls -l /jail/ -### 复制文件到多个目录中 ### +### 将文件复制到多个目录中 ### 不必运行: @@ -260,16 +257,16 @@ If you need a reminder to leave your terminal, type the following command: ### 快速找出两个目录的不同 ### -diff命令会按行比较文件。它也可以比较两个目录: +diff命令会按行比较文件。但是它也可以比较两个目录: ls -l /tmp/r ls -l /tmp/s - # Compare two folders using diff ## + # 使用 diff 比较两个文件夹 diff /tmp/r/ /tmp/s/ [![Fig. : Finding differences between folders](http://s0.cyberciti.org/uploads/cms/2015/01/differences-between-folders.jpg)][3] -图片: 找出目录之间的不同 +*图片: 找出目录之间的不同* ### 文本格式化 ### @@ -281,13 +278,13 @@ diff命令会按行比较文件。它也可以比较两个目录: fmt -s file.txt -### 看见输出并写入到一个文件中 ### +### 可以看见输出并将其写入到一个文件中 ### 如下使用tee命令在屏幕上看见输出并同样写入到日志文件my.log中: mycoolapp arg1 arg2 input.file | tee my.log -tee可以保证你同时在屏幕上看到mycoolapp的输出和写入文件。 +tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件  my.log。 -------------------------------------------------------------------------------- @@ -295,7 +292,7 @@ via: http://www.cyberciti.biz/open-source/command-line-hacks/20-unix-command-lin 作者:[nixCraft][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 51b26227bc0232bf3e11ab02ae46b35465f3d30f Mon Sep 17 00:00:00 2001 From: wxy Date: Sat, 21 Mar 2015 19:43:02 +0800 Subject: [PATCH 613/725] PUB:20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it @theo-l --- ...oad a RPM package without installing it.md | 56 +++++++++++++++++++ ...oad a RPM package without installing it.md | 55 ------------------ 2 files changed, 56 insertions(+), 55 deletions(-) create mode 100644 published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md delete mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md diff --git a/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md new file mode 100644 index 0000000000..e83de0ff93 --- /dev/null +++ b/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md @@ -0,0 +1,56 @@ +Linux 有问必答:如何使用yum来下载RPM包而不进行安装 +================================================================================ +> **问题**:我想从Red Hat 的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? + +yum是基于Red Hat的系统(如CentOS、Fedora、RHEl)上的默认包管理器。使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系。但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上。 + +这里说明了如何从yum仓库上下载一个RPM包。 + +### 方法一:yum### + +yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了`--downloadonly(只下载)`的选项来达到这个目的。 + + $ sudo yum install --downloadonly + +默认情况下,一个下载的RPM包会保存在下面的目录中: + + /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages + +以上的[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates) + +如果你想要将一个包下载到一个指定的目录(如/tmp): + + $ sudo yum install --downloadonly --downloaddir=/tmp + +注意,如果下载的包包含了任何没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装。 + +另外一个重要的事情是,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用`--downloadonly`命令选项: + + $ sudo yum install yum-plugin-downloadonly + +如果没有该插件,你会在使用yum时得到以下错误: + + Command line error: no such option: --downloadonly + +![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) + +### 方法二: Yumdownloader### + +另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader。 这个工具是yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集。 + + $ sudo yum install yum-utils + +下载一个RPM包: + + $ sudo yumdownloader + +下载的包会被保存在当前目录中。你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/yum-download-rpm-package.html + +译者:[theo-l](https://github.com/theo-l) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md deleted file mode 100644 index a9f1019c19..0000000000 --- a/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md +++ /dev/null @@ -1,55 +0,0 @@ -Linux 常见问题解答--如何使用yum来下载RPM包而不进行安装. -================================================================================ -> **问题**:我想从Red Hat's的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? - -yum是基于Red Hat的系统(如CentOS,Fedora,RHEl)上的默认包管理器.使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系.但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上. - -这里说明了如何从yum仓库上下载一个RPM包. - -### 方法一:yum### - -yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了`--downloadonly(只下载)`的选项来达到这个目的. - - $ sudo yum install --downloadonly - -默认情况下,一个下载的RPM包会保存在下面的目录中: - - /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages - -以上的[repository]表示下载包的来源仓库的名称(例如,base,fedora,updates) - -如果你想要讲一个包下载到一个指定的目录(如/tmp): - - $ sudo yum install --downloadonly --downloaddir=/tmp - -注意,如果下载的包包含了任意没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装. - -另外一个重要的事情时,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用`--downloadonly`命令选项: - - $ sudo yum install yum-plugin-downloadonly - -如果没有该插件,你会在使用yum时得到以下错误: - - Command line error: no such option: --downloadonly - -![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) - -### 方法二: Yumdownloader### -另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader. 这个工具时yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集. - - $ sudo yum install yum-utils - -下载一个RPM包: - - $ sudo yumdownloader - -下载的包会被保存在当前目录中.你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件.与yum命令不同的是,任何依赖包不会被下载. - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/yum-download-rpm-package.html - -译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From e4283f0affa14d1590d848a054d75e1c2ad160d0 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 11:08:01 +0800 Subject: [PATCH 614/725] PUB:20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show @JeffDing --- ...inally Lets You Set Menus ToAlways Show.md | 41 ++++++++++++++++++ ...inally Lets You Set Menus ToAlways Show.md | 42 ------------------- 2 files changed, 41 insertions(+), 42 deletions(-) create mode 100644 published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md delete mode 100644 translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md diff --git a/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md new file mode 100644 index 0000000000..3eec1c4a08 --- /dev/null +++ b/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -0,0 +1,41 @@ +Ubuntu 15.04 终于可以让你将菜单设置为 ‘始终可见’ +================================================================================ +**如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野,在 Ubuntu 15.04 稍微做点工作就可以留住菜单。** + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/locally-integrated-menus-in-ubuntu.png) + +最新的Ubuntu 15.04的Unity界面通过在“提议(Proposed)”通道提供了一个选项,**使应用程序菜单在Ubuntu中始终可见**。 + +这是个不会淡出,也不会过段时间就消失的菜单。 + +最大的缺点是它目前只能通过`dconf`来控制,而不是常规的面向用户的选项设置。 + +我希望(如果预计没有的话)在之后的开发中,能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分。 + +现在,如果你使用的是 Ubuntu 15.04,并启用了“提议(Proposed)”的更新通道后,你可以在dconf 的com>canonical>Unity>‘always show menus’ 中找到这个开关。 + +### 迟到总比没有要好? ### + +开发者们计划在Ubuntu 14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 + +本地集成菜单(LIM)在Ubuntu 14.04 LTS 中的首次亮相就赢得了赞誉,其被广泛认为在那些喜欢隐藏方式的与那些不喜欢必须使用鼠标和触摸板的人之间的最佳的折衷方案。 + +虽然在Unity方面本地集成菜单减少了不少批评,不过默认的“淡入/淡出”行为总是还让人不爽。 + +在Ubuntu 过去的几个版本中已经能够看到他们在积极解决早期的用户体验中的几个痛点。经过了几年,在TODO列表中[我们去年终于看到了本地集成菜单][1],以及通过[点击应用图标来实现Unity 启动器中应用的最小化及恢复的选项][2]。 + +一年以来我们终于看到了一个使应用程序菜单始终显示的选项,无论我们的鼠标在哪里。迟来总比没有好,对不对? + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option + +作者:[Joey-Elijah Sneddon][a] +译者:[JeffDing](https://github.com/JeffDing) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:http://www.omgubuntu.co.uk/2014/02/locally-integrated-menus-ubuntu-14-04 +[2]:http://www.omgubuntu.co.uk/2014/03/minimize-click-launcher-option-ubuntu-14-04 diff --git a/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md deleted file mode 100644 index 1247c8eb78..0000000000 --- a/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ /dev/null @@ -1,42 +0,0 @@ -Ubuntu 15.04 最终实现你可以设置你的菜单 ‘始终可见’ -================================================================================ -**如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野, Ubuntu 15.04 有一些额外附加去实现这点.** - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/locally-integrated-menus-in-ubuntu.png) - -最新的Ubuntu 15.04的Unity界面通过在提议通道提供了一个选项**使应用程序菜单在Ubuntu中可见**. - -不时尚, 不过时, 没有丢失的菜单. - -最大的缺点是它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 - -我希望(如果不是期望)能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 - -现在,如果你使用的是Ubuntu15.04,并启用“建议”的更新通道后,你会发现这个开关存在于在COM>规范>Unity>“始终显示菜单”。 - - -### 迟到总比没有要好? ### - -开发者计划在Ubuntu14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 - -本地集成菜单(LIM)在Ubuntu 14.04 LTS 首次获得了欣赏,被广泛认为在那些喜欢隐藏方式的和那些不喜欢必须使用鼠标和触摸板的人之间的最佳的折衷方法 - -虽然本地集成菜单给我们带来了半路上沉默的批评在统一方面,默认的“淡入/淡出”行为给我们留下了令人发痒的伤痕 - -在Ubuntu 过去的几个版本中已经能够看到积极的去解决早期UX的经历过的关切的问题。在经过几年“打算去做”的列表[我们去年终于得到了本地集成菜单][1],以及不支持的通过点击图标实现[减少和恢复Unity启动程序中不支持的应用程序的选项]。 - -一年以来我们终于得到一个选项以使应用程序菜单始终显示,无论我们的鼠标在哪里。迟来总比没有好,对不对? - --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option - -作者:[Joey-Elijah Sneddon][a] -译者:[JeffDing](https://github.com/JeffDing) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:http://www.omgubuntu.co.uk/2014/02/locally-integrated-menus-ubuntu-14-04 -[2]:http://www.omgubuntu.co.uk/2014/03/minimize-click-launcher-option-ubuntu-14-04 From e824b167a1d3310d6b18f242271d9ca3600bd6fe Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 11:44:24 +0800 Subject: [PATCH 615/725] PUB:20150309 10 best uses for open source software in the business world MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @wi-cuckoo 翻译的不错。 --- ...n source software in the business world.md | 85 +++++++++++++++++++ ...n source software in the business world.md | 85 ------------------- 2 files changed, 85 insertions(+), 85 deletions(-) create mode 100644 published/20150309 10 best uses for open source software in the business world.md delete mode 100644 translated/talk/20150309 10 best uses for open source software in the business world.md diff --git a/published/20150309 10 best uses for open source software in the business world.md b/published/20150309 10 best uses for open source software in the business world.md new file mode 100644 index 0000000000..82b5c89956 --- /dev/null +++ b/published/20150309 10 best uses for open source software in the business world.md @@ -0,0 +1,85 @@ +10种将开源用于商业的最佳途径 +=============================================================================== +> 开源为大大小小的商业带来了一些显著的效益 -- 但是你可能会对某些用途感到惊讶。 + +![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) + +技术上已经发生了一些必然性的改变。举个例子,开源软件以它的方式进入到了你的工作之中。10 年前,这也许还能称为一个问题。现在呢?则已经无法避免开源技术的使用 -- 也没有理由要去避免。有如此多强大(和必需的)的方方面面技术,开源在许多方面已经成为了技术的救世主。但是你哪一块的工作最适合开源软件呢?当然,这个问题的答案会因公司而异。然而许多的应用几乎可以适用于每个场景中。 + +让我们来看看这10种可能是最佳的使用方法,它们可以帮助你的公司成长,带给你从未体验过的灵活性与可靠性,或者仅仅是帮你节省一笔可观的预算。 + +### 1: 服务器软件 ### + +如果你还在微软的 IIS 平台苦苦挣扎,那么你需要体验一下 Apache。这款旗舰级开源软件是这个星球上使用最广泛的网页服务器软件之一。Apache 免费、极其可靠、易于管理,而且不像 IIS 一样需要大量的资源。然而,开源并不局限于网页服务器。如果你需要在公司内使用 SMB 来共享资源,可以试试 Samba, Samba 4甚至集成了活动目录(AD),所以你不需要担心在Samba服务器上建立单独的用户账号。 + +### 2: 开发 ### + +用开源开发是很简单的事。PHP,Rails,Perl -- 开源上面的开发语言和开发的工具(从集成开发环境到调试)都很多。为开源或者开源工具做开发可以有很多种选择(如同使用商业软件开发一样)。开源软件与商业软件最大的不同之处在于开源可以接触到软件源代码。在自由开源软件(FOSS,free open source software)的世界里,代码都是公开的。对许多开发者来说,Linux操作系统有他们开发和构建所需要的一切(特别那些没有一个成熟环境来写代码的人而言)。如果你需要图形用户界面(GUI)的开发工具,开源也能满足你。 + +### 3: 安全 ### + +通往安全的道路是充满挑战的,但还是很多途径可以达到。你可以选择“安全盒子”的解决方案,跟随Cisco(一个可靠的解决方案)的节奏,或者你可以借助iptables打造最适合你需求的安全。是的,开源的安全之路会需要更多的时间去配置(有很高的学习壁垒),但是结果通常是不错的。这里甚至不强调一种观点,就一般来说,在桌面上使用开源比起大多数封闭的系统而言是一个更安全的平台。在桌面上部署Linux,你的安全痛点会大大降低。 + +### 4: 桌面 ### + +Linux 桌面是大多数人不认可的地方。尽管如此,你必须考虑一个事实,那就是你每天的工作流程已经经历了一个主要的思维模式的转换。我们现在做的大部分事情都是通过网络浏览器。那么为什么不将Linux部署到桌面上呢?不但可以能做如今要做的许多工作,而且不用遭受病毒,恶意软件和能破坏系统的更新。它不完美 -- 但哪个平台敢说完美?但是它很强大,最后,还可以节省你的开支。这是一个双赢的结局。 + +### 5: 工作流程 ### + +每一种工作都依赖于工作流程。对于某些工作来说,一个流畅的工作流程又取决于所用的工具。开源已经登上这个舞台了。CRM(客户关系管理),HRM(人力资源管理),ERP(企业资源计划),BI(商业智能),BPM(业务流程管理) …… 只要你叫得出名字,开源就可以做到几乎你能想到的每一种可能 -- 并且干得不错。借助于[Pentaho][1], [Collabtive][2]和[SugarCRM][3], 开源可以在任何时候与最新的源工具保持同步。 + +### 6: 协作 ### + +没有一起合作项目的能力,你的员工就不能干好工作。所以你选择的协作工具是十分重要的。你会在开源的世界里发现大量的优质协作工具。[Cyn.in 社区版][4], [Zimbra 开源版][5]和[Kolab][6]都是不错的协作工具,但这仅仅是开源世界里的三个代表而已。 + +### 7: 大数据 ### + +以前说到大数据的时候,往往不会想到开源。多亏了[SUSE][7]的努力,大数据和开源现在可以携手共进了。许多如内存数据和内核热补丁的发明创建,使得开源成为大数据一个理想的解决方案。它可以完美地满足大数据在平台上所需的大量要求,而封闭的软件则达不到如此灵活的水平。 + +### 8: 云 ### + +云的主要玩家都是开源的。[Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- 他们都提供云服务,而且认为开源是云配置的最好解决方案。但是,如果你不想用大公司的服务,仍然有很多后起之秀如[OwnCloud][13],你可以选择OwnCloud的托管云方案,或者建立自己的一套。 + +### 9: 多媒体 ### + +如果你的公司做播客或为产品发布制作视频,开源可以为你提供服务。借助像[Audacity][14]和[OpenShot][15]这样的工具,你可以对音频和视频做你需要的任何处理 -- 而且十分的廉价。实际上,你会感觉到很难再去找到比Audacity更好的播客工具,或者比OpenShot更易用的视频编辑器。没有太大的学习壁垒,或者闭源软件工具所要求的高额费用,开源的软件在帮助你创造专业水准的作品方面已经做得很好了。 + +### 10: 电子商务 ### + +如果你做在线销售,如果不尝试一下像[PrestaShop][16]之类的工具,你就太懈怠了。PrestaShop是最强大的电子商务解决方案之一,易于获取 -- 不需要许可证。 PrestaShop有你可能想要的所有功能(而且有些你可能都没有想过),这个开源平台已经在任何水平上超出了电子商务的范畴。 + +### FOSS 之于商业 ### + +开源已经不再局限于商业交流的范围了。在许多情况下,FOSS已经主导这种交流。如果你已经在寻找将开源解决方案运用的领域,看上面的10条就行了。 + +### 该你了 ### + +你已经将开源用到你的工作中了吗?如果是,属于哪一条方法呢? + +------------------------------------------------------------------------------- + +via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ + +作者:[Jack Wallen][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.techrepublic.com/search/?a=jack+wallen +[1]:http://community.pentaho.com/ +[2]:http://collabtive.o-dyn.de/ +[3]:http://www.sugarcrm.com/ +[4]:http://cynapse.com/cyn-in/ +[5]:https://www.zimbra.com/open-source +[6]:http://kolab.org/ +[7]:http://www.suse.org/ +[8]:http://www.redhat.com/ +[9]:http://www.ubuntu.com/ +[10]:http://www.suse.com/ +[11]:http://aws.amazon.com/ec2/ +[12]:http://www.rackspace.com/cloud +[13]:https://owncloud.org/ +[14]:http://audacity.sourceforge.net/ +[15]:http://www.openshot.org/ +[16]:https://www.prestashop.com/ diff --git a/translated/talk/20150309 10 best uses for open source software in the business world.md b/translated/talk/20150309 10 best uses for open source software in the business world.md deleted file mode 100644 index 976768229b..0000000000 --- a/translated/talk/20150309 10 best uses for open source software in the business world.md +++ /dev/null @@ -1,85 +0,0 @@ -10种将开源用于商业的最佳途径 -=============================================================================== -> 开源为大大小小的商业带来了一些显著的效益 -- 但是你可能会对某些用途感到惊讶。 - -![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) - -技术上出现了一些不可避免的东西。举个例子,开源会以自己的方式来协助你的工作。10年前,这很容易成为问题。现在呢?仍然无法避免 -- 也没有理由要去避免。有如此多强大(和必要的)的方方面面技术,开源在许多方面已经成为了技术的救世主。但是你哪一块的工作最适合开源呢?当然,这个问题的答案会因公司而异。然而许多的应用可以部署到几乎每个场景中。 - -让我们来看看这10种可能是最佳的使用方法,帮助你的公司成长,带给你从未体验过的灵活性与可靠性,或者仅仅是帮你节省一笔可观的预算。 - -### 1: 服务器软件 ### - -如果你还在微软的互联网信息服务(IIS,Internet Information Services)平台苦苦挣扎,那么你需要体验一下Apache。这款旗舰开源网页服务器软件是这个星球上使用最广泛的软件之一。Apsche免费,难以置信的可靠,易于管理,而且不需要大量如IIS需要的费用。然而,开源并不局限于网页服务器。如果你需要在公司内共享服务器信息块(SMB,Server Message Block),考虑一下Samba, Samba 4甚至集成了活动的目录,所以你不需要担心在Samba服务器上建立单独的用户账号。 - -### 2: 开发 ### - -用开源开发是很简单的事。PHP,Rails,Perl -- 开源上面的开发语言如同开发的工具(从I集成开发环境到调试)一样多。为开源或者开源工具做开发可以有很多种选择(如同私有的开发一样)。开源与私有最大的不同之处在于开源可以接触到软件源代码。在免费开源软件的世界里(FOSS,free open source software),代码都是公开的。对许多开发者来说,Linux操作系统有他们开发和建立需要的一切(特别那些写代码没有一个成熟环境的人)。如果你确实需要图形用户界面(GNU)的开发工具,开源能满足你。 - -### 3: 安全 ### - -通往安全的道路是充满挑战的,但还是很多途径可以达到。你可以选择“安全盒子”的解决方案,跟随Cisco(一个可靠的解决方案)的节奏,或者你可以借助iptables打造最适合你需求的安全。是的,开源的安全之路会需要更多的时间去配置(有很高的学习壁垒),但是结果通常是不错的。这里甚至不强调一种观点,就是一般来说在桌面上使用开源比起大多数封闭的系统来说是一个比较安全的平台。不过在桌面上部署Linux,你的安全性会大大降低。 - -### 4: 桌面 ### - -桌面是大多数宏机发生的地方。尽管如此,你必须考虑一个事实,那就是你每天的工作流程已经经历了一个主要的思维模式的转换。我们现在做的大部分事情都是通过网络浏览器。那么为什么不在桌面上部署Linux呢?不但可以能做如今要做的许多工作,而且不用遭受病毒,恶意软件和能破外系统的更新。它不完美 -- 但哪个平台敢说完美?但是它很强大,最后,还可以节省你的开支。这是一个双赢的结局。 - -### 5: 工作流程 ### - -每一种工作都依赖于工作的流程。对于某些工作来说,一个流畅的工作流程又取决于所用的工具。开源已经登上这个舞台了。CRM(客户关系管理),HRM(人力资源管理),ERP(企业资源计划),BI(商业智能),BPM(业务流程管理) 。。。。。。只要你叫得出名字,开源就可以做到几乎你能想到的每一种可能的缩写 -- 并且干得不错。借助于[Pentaho][1], [Collabtive][2]和[SugarCRM][3], 开源可以在任何时候与最新的源工具保持同步。 - -### 6: 协作 ### - -没有一起合作项目的能力,你的员工就不能干好工作。所以你选择的协作工具是十分重要的。你会在开源的世界里发现大量的优质协作工具。[Cyn.in community edition][4], [Zimbra Open Source Edition][5]和[Kolab][6]都是不错的协作工具,但仅仅是开源世界里的三个代表而已。 - -### 7: 大数据 ### - -以前说道大数据的时候,往往不会想到开源。多亏了[SUSE][7]的努力,大数据和开源现在可以携手共进了。许多如内存数据和现场内核修复的创意,使得开源成为大数据一个理想的解决方案。 它可以完美地满足大数据在平台上所需的大量要求。而封闭的软件则达不到如此灵活的水平。 - -### 8: 云 ### - -云的主要玩家都是开源的。[Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- 他们都提供云服务,而且知道开源是云配置的最好解决方案。但是,如果你不想用大公司的服务,仍然有很多后起之秀如[OwnCloud][13],你可以选择OwnCloud的特色云方案,或者建立自己的一套。 - -### 9: 多媒体 ### - -如果你的公司为产品发布做播客或视频,开源可以为你提供服务。借助像[Audacity][14]和[OpenShot][15]这样的工具,你可以对音频和视频做你需要的任何处理 -- 而且十分的廉价。实际上,你会感觉到很难再去找到比Audacity更好的播客工具,或者比OpenShot更易用的视频编辑器。没有太大的学习壁垒,或者封闭软件工具要求的高额费用,开源的软件在帮助你创造专业水准的作品方面已经做得很好了。 #这里前一个意群不明白如何翻译 - -### 10: 电子商务 ### - -如果你做在线销售,如果不尝试一下像[PrestaShop][16]之类的工具,你会觉得很没效率的。PrestaShop是最强大的电子商务解决方案之一,易于获取 -- 不需要许可证。 PrestaShop有你可能想要的所有功能(而且有些你可能都没有想过),这个开源平台已经在任何水平上超出了电子商务的范畴。 - -### FOSS 之于商业 ### - -开源已经不再局限于商业交流的范围了。在许多情况下,FOSS已经主导这种交流。如果你已经在寻找将开源解决方案运用的领域,看上面的10条就行了。 - -### 该你了 ### - -你已经将开源用到你的工作中了吗?如果是,属于哪一条方法呢? - -------------------------------------------------------------------------------- - -via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ - -作者:[Jack Wallen][a] -译者:[wi-cuckoo](https://github.com/wi-cuckoo) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.techrepublic.com/search/?a=jack+wallen -[1]:http://community.pentaho.com/ -[2]:http://collabtive.o-dyn.de/ -[3]:http://www.sugarcrm.com/ -[4]:http://cynapse.com/cyn-in/ -[5]:https://www.zimbra.com/open-source -[6]:http://kolab.org/ -[7]:http://www.suse.org/ -[8]:http://www.redhat.com/ -[9]:http://www.ubuntu.com/ -[10]:http://www.suse.com/ -[11]:http://aws.amazon.com/ec2/ -[12]:http://www.rackspace.com/cloud -[13]:https://owncloud.org/ -[14]:http://audacity.sourceforge.net/ -[15]:http://www.openshot.org/ -[16]:https://www.prestashop.com/ From 2e63a45961caad6ab2df13867439ad677f1642ba Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 12:09:27 +0800 Subject: [PATCH 616/725] PUB:20150121 Linux FAQs with Answers--How to check CPU info on Linux @ZTinoZ --- ...Answers--How to check CPU info on Linux.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/tech => published}/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md (73%) diff --git a/translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md similarity index 73% rename from translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md rename to published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index da72d8527b..e8b97a3f0d 100644 --- a/translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -1,8 +1,8 @@ -Linux有问必答时间--如何查看Linux系统的CPU信息 +Linux有问必答:如何查看Linux系统的CPU信息 ================================================================================ > **问题**: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么? -根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名、模型名、时钟频率、套接字/内核的数量, L1/L2/L3缓存配置、可用的处理器能力(比如:硬件虚拟化、AES, MMX, SSE)等等。在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息。 +根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名、模型名、时钟频率、插槽/内核的数量, L1/L2/L3缓存配置、可用的处理器能力(比如:硬件虚拟化、AES, MMX, SSE)等等。在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息。 ### 1. /proc/cpuinfo ### @@ -12,7 +12,7 @@ Linux有问必答时间--如何查看Linux系统的CPU信息 ![](https://farm8.staticflickr.com/7572/15934711577_4136a8e0b9_c.jpg) -通过查看这个文件,你能[识别出][1]物理处理器数、每个CPU核心数、可用的CPU标志寄存器以及其它东西的数量。 +通过查看这个文件,你能[识别出][1]物理处理器数(插槽)、每个CPU核心数、可用的CPU标志寄存器以及其它东西的数量。 ### 2. cpufreq-info ### @@ -32,7 +32,7 @@ cpuid命令的功能就相当于一个专用的CPU信息工具,它能通过使 ### 4. dmidecode ### -dmidecode命令直接从BIOS的DMI(译者注:桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU标志寄存器、最大/最近的时钟速度、(所允许的)核心总数、L1/L2/L3缓存配置等等。 +dmidecode命令直接从BIOS的DMI(桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU标志寄存器、最大/当前的时钟速度、(启用的)核心总数、L1/L2/L3缓存配置等等。 $ sudo dmidecode @@ -54,7 +54,7 @@ i7z是一个专供英特尔酷睿i3、i5和i7 CPU的实时CPU报告工具。它 ![](https://farm8.staticflickr.com/7546/15534687744_1968dc2b18_c.jpg) -### 8. likwid-topology ### +### 8. likwid拓扑 ### [likwid][3] (Like I Knew What I'm Doing) 是一个用来测量、配置并显示硬件相关特性的命令行收集工具。其中的likwid拓扑结构能显示CPU硬件(线程/缓存/NUMA)的拓扑结构信息,还能识别处理器家族(比如:Intel Core 2, AMD Shanghai)。 @@ -70,7 +70,7 @@ lscpu命令用一个更加用户友好的格式统计了 /etc/cpuinfo 的内容 ### 10. lshw ### -**lshw**命令是一个综合性硬件查询工具。不同于其它工具,lshw需要root特权才能运行因为它是在BIOS系统里查询DMI(译者注:桌面管理接口)信息。它能报告总核心数和可用核心数,但是会遗漏掉一些信息比如L1/L2/L3缓存配置。GTK版本的lshw-gtk也是可用的。 +**lshw**命令是一个综合性硬件查询工具。不同于其它工具,lshw需要root特权才能运行,因为它是在BIOS系统里查询DMI(桌面管理接口)信息。它能报告总核心数和可用核心数,但是会遗漏掉一些信息比如L1/L2/L3缓存配置。GTK版本的lshw-gtk也是可用的。 $ sudo lshw -class processor @@ -78,7 +78,7 @@ lscpu命令用一个更加用户友好的格式统计了 /etc/cpuinfo 的内容 ### 11. lstopo ### -lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组成的拓扑结构可见。这个命令用来识别处理器结构和系统的NUMA拓扑结构。 +lstopo命令 (包括在 [hwloc][4] 包中) 以可视化的方式组成 CPU、缓存、内存和I/O设备的拓扑结构。这个命令用来识别处理器结构和系统的NUMA拓扑结构。 $ lstopo @@ -86,7 +86,7 @@ lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组 ### 12. numactl ### -其被开发的起初是为了设置NUMA的时序安排和Linux处理器的内存布局策略,numactl命令也能通过命令行来展示关于CPU硬件的NUMA拓扑结构信息。 +最初其被开发的目的是为了设置NUMA的时序安排和Linux处理器的内存布局策略,numactl命令也能通过命令行来展示关于CPU硬件的NUMA拓扑结构信息。 $ numactl --hardware @@ -94,7 +94,7 @@ lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组 ### 13. x86info ### -x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信息报告包括CPU型号、线程/核心数、时钟速度、TLB(译者注:传输后备缓冲器)缓存配置、支持的特征标志寄存器等等。 +x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信息报告包括CPU型号、线程/核心数、时钟速度、TLB(传输后备缓冲器)缓存配置、支持的特征标志寄存器等等。 $ x86info --all @@ -105,7 +105,7 @@ x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信 via: http://ask.xmodulo.com/check-cpu-info-linux.html 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d173bfb5a1e189030f017feb4199e3f22e2f5d4e Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 12:33:43 +0800 Subject: [PATCH 617/725] PUB:20150126 How To Kill All Processes Of A Specific User With slay @geekpi --- ... Kill All Processes Of A Specific User With slay.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename {translated/tech => published}/20150126 How To Kill All Processes Of A Specific User With slay.md (83%) diff --git a/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md b/published/20150126 How To Kill All Processes Of A Specific User With slay.md similarity index 83% rename from translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md rename to published/20150126 How To Kill All Processes Of A Specific User With slay.md index 897c4c16c7..77a8441323 100644 --- a/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md +++ b/published/20150126 How To Kill All Processes Of A Specific User With slay.md @@ -1,4 +1,4 @@ -如何用‘slay’杀掉指定用户的所有进程 +用‘slay’干掉某个用户的所有进程 ================================================================================ **slay** 是**Chris Ausbrooks**写的一款用于杀掉指定用户所有运行进程的命令行工具。slay对系统管理员而言在找出那些不应该运行进程的用户是很有用的。 @@ -31,19 +31,19 @@ slay在大多数发行版中都有官方仓库。 ~ sudo slay amitooo slay: Done. -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/slay-amitoo-kpenee.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/slay-amitoo-kpenee.png) 当slay运行完成后,你应该就可以看到反馈了。 -享受吧。 +爽吧?! -------------------------------------------------------------------------------- via: http://www.unixmen.com/kill-processes-specific-user-slay/ -作者:[ Enock Seth Nyamador][a] +作者:[Enock Seth Nyamador][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2b3a4256c90fd74f634aba2c87b2d8cd39882a58 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 12:55:46 +0800 Subject: [PATCH 618/725] PUB:20150128 How To Monitor Access Point Signal Strength With wifi-linux @geekpi --- ...cess Point Signal Strength With wifi-linux.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) rename {translated/tech => published}/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md (71%) diff --git a/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md similarity index 71% rename from translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md rename to published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md index db2ae3c05a..7a12be0642 100644 --- a/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md +++ b/published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md @@ -1,14 +1,14 @@ 如何用wifi-linux检测AP信号强度 ================================================================================ -作为一名python极客,我喜欢在github上发现新的针对linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具。 +作为一名python极客,我喜欢在github上挖掘新的用于linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具:wifi-linux。 我已经在**wifi-linux**上实验了大约两个小时,并且它工作的很好但是我希望在不久的将来在作者那里看到一些单元测试,因为命令**plot**无法在我的电脑上工作,并且会导致一些问题。 ### 什么是wifi-linux ### -根据github作者账号的官方的offical readme.md文件, wifi-linux是一个简单的收集你周围AP的RSSI信息的python脚本,它还会画出RSSI活动图形。 +根据github上作者账号的官方的 readme.md文件, wifi-linux是一个简单的收集你周围AP的RSSI信息的python脚本,它还会画出RSSI活动图形。 -,这同样可以用命令plot生成,但是不幸的是,这对我不可行。wifi-linux支持其他的命令,比如**bp** 来加入一个断点,**print**会打印一些统计和**启动开关**。 +作者说可以在该程序中可以使用plot命令绘制RSSI 活动图形,但是不幸的是,这对我不可行。wifi-linux也支持其他的命令,比如**bp** 来加入一个断点,**print**会打印一些统计和**启动开关**。 wifi-linux程序有下面这些依赖: @@ -19,15 +19,15 @@ wifi-linux程序有下面这些依赖: ### 安装wifi-linux需要的包 ### -我怕尝试使用python包管理工具pip安装python-dbus但是失败了,因为pip会查找setup.py,但是python-dbus中没有。因此下面的命令不工作。 +我尝试使用python包管理工具pip安装python-dbus但是失败了,因为pip会查找setup.py,但是python-dbus中没有。因此下面的命令不工作。 pip install dbus-python -你可以试一下但是很有可能会在终端中下面的错误。 +你可以试一下但是很有可能会在终端中出现下面的错误。 IOError: [Errno 2] No such file or directory: '/tmp/pip_build_oltjano/dbus-python/setup.py' -我该怎么解决这个问题呢?很简单,用下面命令中的系统包管理工具安装Python DBUS。 +我该怎么解决这个问题呢?很简单,用下面命令中的系统包管理工具来安装Python DBUS。 sudo apt-get install python-dbus @@ -69,7 +69,7 @@ wifi-linux程序有下面这些依赖: ![the bp command in wifi-linux](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux2.png) -命令**print**可以用于显示你机器的状态。下面就是一个例子。 +命令**print**可以用于在终端上显示你机器的状态。下面就是一个例子。 ![the print command](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux3.png) @@ -79,7 +79,7 @@ via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi- 作者:[Oltjano Terpollari][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 5a6329ca9a7736b2226a73f4edab583b13a8c61c Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 22 Mar 2015 13:49:37 +0800 Subject: [PATCH 619/725] translating --- .../20150310 4 Linux Based Mini PC You Can Buy In 2015.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md index fcecf0d396..ced7df8156 100644 --- a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md +++ b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -1,3 +1,5 @@ +Translating---geekpi + 4 Linux Based Mini PC You Can Buy In 2015 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) @@ -136,4 +138,4 @@ via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ [6]:https://www.thinkpenguin.com/ [7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop [8]:http://itsfoss.com/raspberry-pi-2-specs/ -[9]:http://itsfoss.com/intels-compute-stick/ \ No newline at end of file +[9]:http://itsfoss.com/intels-compute-stick/ From a71c491feb3ce0f759473337df793999d7865b95 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 22 Mar 2015 14:38:37 +0800 Subject: [PATCH 620/725] translated --- ...Linux Based Mini PC You Can Buy In 2015.md | 141 ----------------- ...Linux Based Mini PC You Can Buy In 2015.md | 145 ++++++++++++++++++ 2 files changed, 145 insertions(+), 141 deletions(-) delete mode 100644 sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md create mode 100644 translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md diff --git a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md deleted file mode 100644 index ced7df8156..0000000000 --- a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md +++ /dev/null @@ -1,141 +0,0 @@ -Translating---geekpi - -4 Linux Based Mini PC You Can Buy In 2015 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) - -Mini PCs, in my opinion, will takeover the traditional desktop computers in near future. Traditional desktop has a bulky CPU which takes a lot of space with its fan running like a blower. The mini PCs, on the other hand, are tiny and compact. With hardly 4″ or 5″ in size, they can be easily placed on a table. - -Moreover, these mini PCs are fanless which is an added virtue. Of course, you can buy fanless regular desktops but the space consumption is still an issue. Personally, I find the mini PC cute in looks. If you are not a gamer and thinking of buying a new desktop PC, I’ll highly recommend you to **buy a Linux based mini PC**. - -If you go by my recommendation and consider buying it, you might wonder what options do you have. Worry not. In this post we shall see four **Linux based Mini PC that you can buy in 2015**. - -### Linux based mini PCs ### - -Please do note that some of these gadgets might not be available to order just yet. Some of these have been just announced and will be released to public in near future. - -#### 1. Meerkat by System76 #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) - -[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: - -**Specification** - -- Intel 5th Generation processors, available options i3-5010U and i5-5250U -- up to 2 TB of storage (M.2 SATA SSD) -- 16 GB DDR3 RAM -- Graphics Intel HD 5500 and Intel HD 6000 for i3 and i5 respectively -- 4″ x 4″ in size -- WiFi -- 1 Gb NIC -- 2 USB 3.0 ports - -**Price** - -In the range of $500 (yet to be confirmed). - -**Availability** - -US release by the end of March 2015. - -#### 2. Mintbox Mini by Compulab #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) - -[Compulab][3] shrunk its flagship Linux Mint based PC devices, Mintbox into [Mintbox Mini][4]. The compact version is around 4″ in size. More details are as following: - -**Specifications** - -- AMD A4-6400T processor -- Radeon R3 graphics processor -- 4 GB RAM -- 64 GB SSD -- 2 USB 3.0 ports, 3 USB 2.0 ports -- 2 HDMI out ports -- 802.11 b/g/n Wifi -- Gigabit Ethernet -- MicroSD reader - -**Price** - -Staring around $300 - -**Availability** - -Second quarter of 2015 - -#### 3. Utilite2 by Compulab #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) - -It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. - -**Specifications** - -- Qualcomm Snapdragon 600 (APQ8064) quad-core CPU 1.7GHz -- 2GB RAM, eMMC with optional 32 GB mSATA storage -- Graphics with Qualcomm Adreno™ GPU -- 1080p video playback and capture -- Dual-antenna WiFi 802.11 and Bluetooth 4.0 -- Gigabit Ethernet, 4x USB2, USB OTG -- Cellular modem support - -**Price** - -$192 for regular model, $229 with SSD storage. Shipping charges extra. - -**Availability** - -Available to purchase now. It will take four weeks in shipping. - -#### Penguin Pocket Wee by Think Penguin #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) - -[Think Penguin][6] is a Open Source focused hardware manufacturer. In the mini PC category, it has [Penguin Pocket Wee][7] to offer. With 4.6″x 4.4″x 1.4″ in size, Penguin Pocket Wee provides a number of configuration to you. You can choose between the processors, storage, network adapters and what not. You can choose to buy it pre-installed with your favorite Linux distribution, default OS is Ubuntu. - -The general configuration is as following: - -- Intel Core i3 or i5 processor with support for up to 1080p HD video -- Expandable up to 16GB of DDR3 RAM -- Intel HD graphics -- Wireless N -- Up to 250GB of SSD -- 4 USB 3.0 -- Intel 10/100/1000 Gigabit Ethernet Controller - -**Price** - -Basic model starts at $499 and it can go up to $1000 based on the configuration you select. - -**Availability** - -Available to order now. There are offices in UK and USA so it should be shipping to North America and Europe. - -### What’s your pick? ### - -I have deliberately not included [Raspberry Pi 2][8] or other Linux microcomputer such as [Intel’s Compute Stick][9]. The reason is that I do not think that micro-computers fall in the same categories as mini PCs. - -What do you think? Are you tempted to replace your desktop with a mini PC? Is there another player which I missed in this list of **best Linux based mini PCs**? Do share your views. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:https://system76.com/ -[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ -[3]:http://www.compulab.co.il/ -[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ -[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview -[6]:https://www.thinkpenguin.com/ -[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop -[8]:http://itsfoss.com/raspberry-pi-2-specs/ -[9]:http://itsfoss.com/intels-compute-stick/ diff --git a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md new file mode 100644 index 0000000000..c3aa5b76b5 --- /dev/null +++ b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -0,0 +1,145 @@ +2015你可以买的一款基于Linux的迷你PC +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) + +在我看来迷你PC将在不久的将来会替代传统桌面电脑。传统桌面的有一个像送风机那样占据大量空间的风扇。迷你PC,在另一方面说很小巧和紧凑。通常是4″或者5″大小,可以轻易地放在桌子上。 + +不仅如此,这些迷你PC的无风扇设计是一个好处。当然,你可以购买无风扇的常规电脑,但是空间占用仍然是一个问题。对我个人来说,我觉得迷你PC外观上看着很可爱。如果你不是一个游戏玩家也不想买新的桌面PC,我强烈建议你**购买一个基于Linux的迷你PC**。 + +如果你考虑我的建议买一个,那么你或许想知道该买哪款。不要担心,这篇文章我们会介绍**四款你可以在2015购买的基于Linux的迷你PC**。 + +### 基于Linux的迷你PC ### + +请注意这些PC可能还不能下单。它们中有些还刚刚公布,在不久的将来才会面向公众出售。 + + +#### 1. System76出品的Meerkat #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) + +[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: +[System76][1] 是一家仅出品基于Ubuntu电脑、笔记本、服务器的电脑生产商。[System76在上周宣布了一款基于Ubuntu的迷你PC][2]。让我看一下它的规格: + +**规格** + +- Intel第五代处理器,共有两种选择 i3-5010U 和 i5-5250U +- 最高2TB存储 (M.2 SATA SSD) +- 16 GB DDR3 内存 +- i3和i5处理器下相应的Intel HD 5500 和 Intel HD 6000显卡 +- 4″ x 4″ 大小 +- WiFi +- 1 Gb 网卡 +- 2个USB 3.0端口 + +**价格** + +在$500之内(还没确定)。 + +**发售日期** + +美国地区在2015年3月底 + +#### 2.Compulab出品的Mintbox Mini #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) + +[Compulab][3]将它的旗舰产品基于Linux Mint的桌面设备成了[Mintbox Mini][4]。紧凑的版本在4″大小。更多的细节如下: + +**规格** + +- AMD A4-6400T 处理器 +- Radeon R3 显卡 +- 4 GB 内存 +- 64 GB SSD +- 2个USB 3.0端口, 3个USB 2.0端口 +- 2个HDMI输出端 +- 802.11 b/g/n Wifi +- 千兆网卡 +- MicroSD读卡器 + +**价格** + +$300起售 + +**发售日期** + +2015第二季度 + +#### 3. Compulab出品的Utilite2 #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) + +It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. +Compulab并不是坚持用Linux Mint的。它在去年12月宣布了一款运行Ubuntu的ARM桌面PC。大小是3.4″x2.3″,[Utilite2][5]有最现代的特性和价格 + + +**规格** + +- 高通Snapdragon 600 (APQ8064) 四核 CPU 1.7GHz +- 2GB 内存, 可选32 GB的eMMC mSATA 存储 +- 高通 Adreno™ GPU显卡 +- 1080p 视频回放和捕捉 +- 双天线 WiFi 802.11 和 Bluetooth 4.0 +- 千兆网卡, 4个USB2端口和USB OTG +- 蜂窝调制解调器支持 + +**价格** + +常规版售价$192、带硬盘售价$229。邮费另付。 + +**发售日期** + +现在就可购买。运送将花费4周。 + +#### Think Penguin出品的Penguin Pocket Wee #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) + +[Think Penguin][6]是一家开源硬件生产商。在迷你PC领域,它提供了[Penguin Pocket Wee][7]。大小是4.6″x 4.4″x 1.4″ ,, Penguin Pocket Wee提供了大量的配置。你可以选择处理器、存储、网卡等。你可以选择购买预装你喜欢的Linux发行版,默认系统是Ubuntu。 + +The general configuration is as following: +下面的默认的配置 + +- Intel Core i3 或者 i5处理器,最高支持1080p视频 +- 最高扩展至 16GB 的 DDR3内存 +- Intel HD 显卡 +- Wireless N +- 最大250GB的SSD +- 4个USB 3.0接口 +- Intel 10/100/1000 千兆网卡 + +**价格** + +Basic model starts at $499 and it can go up to $1000 based on the configuration you select. +基础版本$499起售,根据你的配置最大是$1000。 + +**发售日期** + +现在就可下订单。该公司在美国和英国也有办公司,所以应也可以运送到南美和欧洲。 + +### 你会选哪种? ### + +我故意没有介绍[Raspberry Pi 2][8]或者其他Linux微电脑如[Intel的电脑棒][9]。原因是我不认为这些微电脑属于迷你PC的范畴。 + +你怎么看?你想用迷你PC代替你的桌面PC么?是不是还有我没有在**最好的基于Linux的迷你PC**列出的PC?分享你们的观点吧。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:https://system76.com/ +[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ +[3]:http://www.compulab.co.il/ +[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ +[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview +[6]:https://www.thinkpenguin.com/ +[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop +[8]:http://itsfoss.com/raspberry-pi-2-specs/ +[9]:http://itsfoss.com/intels-compute-stick/ From 613bc8c1d3d6012341124bca69f7ae3bc387684e Mon Sep 17 00:00:00 2001 From: zheng Date: Sun, 22 Mar 2015 14:43:33 +0800 Subject: [PATCH 621/725] Revert "translated" This reverts commit a71c491feb3ce0f759473337df793999d7865b95. --- ...Linux Based Mini PC You Can Buy In 2015.md | 141 +++++++++++++++++ ...Linux Based Mini PC You Can Buy In 2015.md | 145 ------------------ 2 files changed, 141 insertions(+), 145 deletions(-) create mode 100644 sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md delete mode 100644 translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md diff --git a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md new file mode 100644 index 0000000000..ced7df8156 --- /dev/null +++ b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -0,0 +1,141 @@ +Translating---geekpi + +4 Linux Based Mini PC You Can Buy In 2015 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) + +Mini PCs, in my opinion, will takeover the traditional desktop computers in near future. Traditional desktop has a bulky CPU which takes a lot of space with its fan running like a blower. The mini PCs, on the other hand, are tiny and compact. With hardly 4″ or 5″ in size, they can be easily placed on a table. + +Moreover, these mini PCs are fanless which is an added virtue. Of course, you can buy fanless regular desktops but the space consumption is still an issue. Personally, I find the mini PC cute in looks. If you are not a gamer and thinking of buying a new desktop PC, I’ll highly recommend you to **buy a Linux based mini PC**. + +If you go by my recommendation and consider buying it, you might wonder what options do you have. Worry not. In this post we shall see four **Linux based Mini PC that you can buy in 2015**. + +### Linux based mini PCs ### + +Please do note that some of these gadgets might not be available to order just yet. Some of these have been just announced and will be released to public in near future. + +#### 1. Meerkat by System76 #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) + +[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: + +**Specification** + +- Intel 5th Generation processors, available options i3-5010U and i5-5250U +- up to 2 TB of storage (M.2 SATA SSD) +- 16 GB DDR3 RAM +- Graphics Intel HD 5500 and Intel HD 6000 for i3 and i5 respectively +- 4″ x 4″ in size +- WiFi +- 1 Gb NIC +- 2 USB 3.0 ports + +**Price** + +In the range of $500 (yet to be confirmed). + +**Availability** + +US release by the end of March 2015. + +#### 2. Mintbox Mini by Compulab #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) + +[Compulab][3] shrunk its flagship Linux Mint based PC devices, Mintbox into [Mintbox Mini][4]. The compact version is around 4″ in size. More details are as following: + +**Specifications** + +- AMD A4-6400T processor +- Radeon R3 graphics processor +- 4 GB RAM +- 64 GB SSD +- 2 USB 3.0 ports, 3 USB 2.0 ports +- 2 HDMI out ports +- 802.11 b/g/n Wifi +- Gigabit Ethernet +- MicroSD reader + +**Price** + +Staring around $300 + +**Availability** + +Second quarter of 2015 + +#### 3. Utilite2 by Compulab #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) + +It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. + +**Specifications** + +- Qualcomm Snapdragon 600 (APQ8064) quad-core CPU 1.7GHz +- 2GB RAM, eMMC with optional 32 GB mSATA storage +- Graphics with Qualcomm Adreno™ GPU +- 1080p video playback and capture +- Dual-antenna WiFi 802.11 and Bluetooth 4.0 +- Gigabit Ethernet, 4x USB2, USB OTG +- Cellular modem support + +**Price** + +$192 for regular model, $229 with SSD storage. Shipping charges extra. + +**Availability** + +Available to purchase now. It will take four weeks in shipping. + +#### Penguin Pocket Wee by Think Penguin #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) + +[Think Penguin][6] is a Open Source focused hardware manufacturer. In the mini PC category, it has [Penguin Pocket Wee][7] to offer. With 4.6″x 4.4″x 1.4″ in size, Penguin Pocket Wee provides a number of configuration to you. You can choose between the processors, storage, network adapters and what not. You can choose to buy it pre-installed with your favorite Linux distribution, default OS is Ubuntu. + +The general configuration is as following: + +- Intel Core i3 or i5 processor with support for up to 1080p HD video +- Expandable up to 16GB of DDR3 RAM +- Intel HD graphics +- Wireless N +- Up to 250GB of SSD +- 4 USB 3.0 +- Intel 10/100/1000 Gigabit Ethernet Controller + +**Price** + +Basic model starts at $499 and it can go up to $1000 based on the configuration you select. + +**Availability** + +Available to order now. There are offices in UK and USA so it should be shipping to North America and Europe. + +### What’s your pick? ### + +I have deliberately not included [Raspberry Pi 2][8] or other Linux microcomputer such as [Intel’s Compute Stick][9]. The reason is that I do not think that micro-computers fall in the same categories as mini PCs. + +What do you think? Are you tempted to replace your desktop with a mini PC? Is there another player which I missed in this list of **best Linux based mini PCs**? Do share your views. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:https://system76.com/ +[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ +[3]:http://www.compulab.co.il/ +[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ +[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview +[6]:https://www.thinkpenguin.com/ +[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop +[8]:http://itsfoss.com/raspberry-pi-2-specs/ +[9]:http://itsfoss.com/intels-compute-stick/ diff --git a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md deleted file mode 100644 index c3aa5b76b5..0000000000 --- a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md +++ /dev/null @@ -1,145 +0,0 @@ -2015你可以买的一款基于Linux的迷你PC -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) - -在我看来迷你PC将在不久的将来会替代传统桌面电脑。传统桌面的有一个像送风机那样占据大量空间的风扇。迷你PC,在另一方面说很小巧和紧凑。通常是4″或者5″大小,可以轻易地放在桌子上。 - -不仅如此,这些迷你PC的无风扇设计是一个好处。当然,你可以购买无风扇的常规电脑,但是空间占用仍然是一个问题。对我个人来说,我觉得迷你PC外观上看着很可爱。如果你不是一个游戏玩家也不想买新的桌面PC,我强烈建议你**购买一个基于Linux的迷你PC**。 - -如果你考虑我的建议买一个,那么你或许想知道该买哪款。不要担心,这篇文章我们会介绍**四款你可以在2015购买的基于Linux的迷你PC**。 - -### 基于Linux的迷你PC ### - -请注意这些PC可能还不能下单。它们中有些还刚刚公布,在不久的将来才会面向公众出售。 - - -#### 1. System76出品的Meerkat #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) - -[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: -[System76][1] 是一家仅出品基于Ubuntu电脑、笔记本、服务器的电脑生产商。[System76在上周宣布了一款基于Ubuntu的迷你PC][2]。让我看一下它的规格: - -**规格** - -- Intel第五代处理器,共有两种选择 i3-5010U 和 i5-5250U -- 最高2TB存储 (M.2 SATA SSD) -- 16 GB DDR3 内存 -- i3和i5处理器下相应的Intel HD 5500 和 Intel HD 6000显卡 -- 4″ x 4″ 大小 -- WiFi -- 1 Gb 网卡 -- 2个USB 3.0端口 - -**价格** - -在$500之内(还没确定)。 - -**发售日期** - -美国地区在2015年3月底 - -#### 2.Compulab出品的Mintbox Mini #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) - -[Compulab][3]将它的旗舰产品基于Linux Mint的桌面设备成了[Mintbox Mini][4]。紧凑的版本在4″大小。更多的细节如下: - -**规格** - -- AMD A4-6400T 处理器 -- Radeon R3 显卡 -- 4 GB 内存 -- 64 GB SSD -- 2个USB 3.0端口, 3个USB 2.0端口 -- 2个HDMI输出端 -- 802.11 b/g/n Wifi -- 千兆网卡 -- MicroSD读卡器 - -**价格** - -$300起售 - -**发售日期** - -2015第二季度 - -#### 3. Compulab出品的Utilite2 #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) - -It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. -Compulab并不是坚持用Linux Mint的。它在去年12月宣布了一款运行Ubuntu的ARM桌面PC。大小是3.4″x2.3″,[Utilite2][5]有最现代的特性和价格 - - -**规格** - -- 高通Snapdragon 600 (APQ8064) 四核 CPU 1.7GHz -- 2GB 内存, 可选32 GB的eMMC mSATA 存储 -- 高通 Adreno™ GPU显卡 -- 1080p 视频回放和捕捉 -- 双天线 WiFi 802.11 和 Bluetooth 4.0 -- 千兆网卡, 4个USB2端口和USB OTG -- 蜂窝调制解调器支持 - -**价格** - -常规版售价$192、带硬盘售价$229。邮费另付。 - -**发售日期** - -现在就可购买。运送将花费4周。 - -#### Think Penguin出品的Penguin Pocket Wee #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) - -[Think Penguin][6]是一家开源硬件生产商。在迷你PC领域,它提供了[Penguin Pocket Wee][7]。大小是4.6″x 4.4″x 1.4″ ,, Penguin Pocket Wee提供了大量的配置。你可以选择处理器、存储、网卡等。你可以选择购买预装你喜欢的Linux发行版,默认系统是Ubuntu。 - -The general configuration is as following: -下面的默认的配置 - -- Intel Core i3 或者 i5处理器,最高支持1080p视频 -- 最高扩展至 16GB 的 DDR3内存 -- Intel HD 显卡 -- Wireless N -- 最大250GB的SSD -- 4个USB 3.0接口 -- Intel 10/100/1000 千兆网卡 - -**价格** - -Basic model starts at $499 and it can go up to $1000 based on the configuration you select. -基础版本$499起售,根据你的配置最大是$1000。 - -**发售日期** - -现在就可下订单。该公司在美国和英国也有办公司,所以应也可以运送到南美和欧洲。 - -### 你会选哪种? ### - -我故意没有介绍[Raspberry Pi 2][8]或者其他Linux微电脑如[Intel的电脑棒][9]。原因是我不认为这些微电脑属于迷你PC的范畴。 - -你怎么看?你想用迷你PC代替你的桌面PC么?是不是还有我没有在**最好的基于Linux的迷你PC**列出的PC?分享你们的观点吧。 - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ - -作者:[Abhishek][a] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:https://system76.com/ -[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ -[3]:http://www.compulab.co.il/ -[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ -[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview -[6]:https://www.thinkpenguin.com/ -[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop -[8]:http://itsfoss.com/raspberry-pi-2-specs/ -[9]:http://itsfoss.com/intels-compute-stick/ From 5188734f49a8d63039a95f91589f52300d000310 Mon Sep 17 00:00:00 2001 From: geekpi Date: Sun, 22 Mar 2015 14:45:23 +0800 Subject: [PATCH 622/725] translated --- ...Linux Based Mini PC You Can Buy In 2015.md | 141 ----------------- ...Linux Based Mini PC You Can Buy In 2015.md | 145 ++++++++++++++++++ 2 files changed, 145 insertions(+), 141 deletions(-) delete mode 100644 sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md create mode 100644 translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md diff --git a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md deleted file mode 100644 index ced7df8156..0000000000 --- a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md +++ /dev/null @@ -1,141 +0,0 @@ -Translating---geekpi - -4 Linux Based Mini PC You Can Buy In 2015 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) - -Mini PCs, in my opinion, will takeover the traditional desktop computers in near future. Traditional desktop has a bulky CPU which takes a lot of space with its fan running like a blower. The mini PCs, on the other hand, are tiny and compact. With hardly 4″ or 5″ in size, they can be easily placed on a table. - -Moreover, these mini PCs are fanless which is an added virtue. Of course, you can buy fanless regular desktops but the space consumption is still an issue. Personally, I find the mini PC cute in looks. If you are not a gamer and thinking of buying a new desktop PC, I’ll highly recommend you to **buy a Linux based mini PC**. - -If you go by my recommendation and consider buying it, you might wonder what options do you have. Worry not. In this post we shall see four **Linux based Mini PC that you can buy in 2015**. - -### Linux based mini PCs ### - -Please do note that some of these gadgets might not be available to order just yet. Some of these have been just announced and will be released to public in near future. - -#### 1. Meerkat by System76 #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) - -[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: - -**Specification** - -- Intel 5th Generation processors, available options i3-5010U and i5-5250U -- up to 2 TB of storage (M.2 SATA SSD) -- 16 GB DDR3 RAM -- Graphics Intel HD 5500 and Intel HD 6000 for i3 and i5 respectively -- 4″ x 4″ in size -- WiFi -- 1 Gb NIC -- 2 USB 3.0 ports - -**Price** - -In the range of $500 (yet to be confirmed). - -**Availability** - -US release by the end of March 2015. - -#### 2. Mintbox Mini by Compulab #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) - -[Compulab][3] shrunk its flagship Linux Mint based PC devices, Mintbox into [Mintbox Mini][4]. The compact version is around 4″ in size. More details are as following: - -**Specifications** - -- AMD A4-6400T processor -- Radeon R3 graphics processor -- 4 GB RAM -- 64 GB SSD -- 2 USB 3.0 ports, 3 USB 2.0 ports -- 2 HDMI out ports -- 802.11 b/g/n Wifi -- Gigabit Ethernet -- MicroSD reader - -**Price** - -Staring around $300 - -**Availability** - -Second quarter of 2015 - -#### 3. Utilite2 by Compulab #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) - -It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. - -**Specifications** - -- Qualcomm Snapdragon 600 (APQ8064) quad-core CPU 1.7GHz -- 2GB RAM, eMMC with optional 32 GB mSATA storage -- Graphics with Qualcomm Adreno™ GPU -- 1080p video playback and capture -- Dual-antenna WiFi 802.11 and Bluetooth 4.0 -- Gigabit Ethernet, 4x USB2, USB OTG -- Cellular modem support - -**Price** - -$192 for regular model, $229 with SSD storage. Shipping charges extra. - -**Availability** - -Available to purchase now. It will take four weeks in shipping. - -#### Penguin Pocket Wee by Think Penguin #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) - -[Think Penguin][6] is a Open Source focused hardware manufacturer. In the mini PC category, it has [Penguin Pocket Wee][7] to offer. With 4.6″x 4.4″x 1.4″ in size, Penguin Pocket Wee provides a number of configuration to you. You can choose between the processors, storage, network adapters and what not. You can choose to buy it pre-installed with your favorite Linux distribution, default OS is Ubuntu. - -The general configuration is as following: - -- Intel Core i3 or i5 processor with support for up to 1080p HD video -- Expandable up to 16GB of DDR3 RAM -- Intel HD graphics -- Wireless N -- Up to 250GB of SSD -- 4 USB 3.0 -- Intel 10/100/1000 Gigabit Ethernet Controller - -**Price** - -Basic model starts at $499 and it can go up to $1000 based on the configuration you select. - -**Availability** - -Available to order now. There are offices in UK and USA so it should be shipping to North America and Europe. - -### What’s your pick? ### - -I have deliberately not included [Raspberry Pi 2][8] or other Linux microcomputer such as [Intel’s Compute Stick][9]. The reason is that I do not think that micro-computers fall in the same categories as mini PCs. - -What do you think? Are you tempted to replace your desktop with a mini PC? Is there another player which I missed in this list of **best Linux based mini PCs**? Do share your views. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:https://system76.com/ -[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ -[3]:http://www.compulab.co.il/ -[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ -[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview -[6]:https://www.thinkpenguin.com/ -[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop -[8]:http://itsfoss.com/raspberry-pi-2-specs/ -[9]:http://itsfoss.com/intels-compute-stick/ diff --git a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md new file mode 100644 index 0000000000..c3aa5b76b5 --- /dev/null +++ b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -0,0 +1,145 @@ +2015你可以买的一款基于Linux的迷你PC +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) + +在我看来迷你PC将在不久的将来会替代传统桌面电脑。传统桌面的有一个像送风机那样占据大量空间的风扇。迷你PC,在另一方面说很小巧和紧凑。通常是4″或者5″大小,可以轻易地放在桌子上。 + +不仅如此,这些迷你PC的无风扇设计是一个好处。当然,你可以购买无风扇的常规电脑,但是空间占用仍然是一个问题。对我个人来说,我觉得迷你PC外观上看着很可爱。如果你不是一个游戏玩家也不想买新的桌面PC,我强烈建议你**购买一个基于Linux的迷你PC**。 + +如果你考虑我的建议买一个,那么你或许想知道该买哪款。不要担心,这篇文章我们会介绍**四款你可以在2015购买的基于Linux的迷你PC**。 + +### 基于Linux的迷你PC ### + +请注意这些PC可能还不能下单。它们中有些还刚刚公布,在不久的将来才会面向公众出售。 + + +#### 1. System76出品的Meerkat #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) + +[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: +[System76][1] 是一家仅出品基于Ubuntu电脑、笔记本、服务器的电脑生产商。[System76在上周宣布了一款基于Ubuntu的迷你PC][2]。让我看一下它的规格: + +**规格** + +- Intel第五代处理器,共有两种选择 i3-5010U 和 i5-5250U +- 最高2TB存储 (M.2 SATA SSD) +- 16 GB DDR3 内存 +- i3和i5处理器下相应的Intel HD 5500 和 Intel HD 6000显卡 +- 4″ x 4″ 大小 +- WiFi +- 1 Gb 网卡 +- 2个USB 3.0端口 + +**价格** + +在$500之内(还没确定)。 + +**发售日期** + +美国地区在2015年3月底 + +#### 2.Compulab出品的Mintbox Mini #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) + +[Compulab][3]将它的旗舰产品基于Linux Mint的桌面设备成了[Mintbox Mini][4]。紧凑的版本在4″大小。更多的细节如下: + +**规格** + +- AMD A4-6400T 处理器 +- Radeon R3 显卡 +- 4 GB 内存 +- 64 GB SSD +- 2个USB 3.0端口, 3个USB 2.0端口 +- 2个HDMI输出端 +- 802.11 b/g/n Wifi +- 千兆网卡 +- MicroSD读卡器 + +**价格** + +$300起售 + +**发售日期** + +2015第二季度 + +#### 3. Compulab出品的Utilite2 #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) + +It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. +Compulab并不是坚持用Linux Mint的。它在去年12月宣布了一款运行Ubuntu的ARM桌面PC。大小是3.4″x2.3″,[Utilite2][5]有最现代的特性和价格 + + +**规格** + +- 高通Snapdragon 600 (APQ8064) 四核 CPU 1.7GHz +- 2GB 内存, 可选32 GB的eMMC mSATA 存储 +- 高通 Adreno™ GPU显卡 +- 1080p 视频回放和捕捉 +- 双天线 WiFi 802.11 和 Bluetooth 4.0 +- 千兆网卡, 4个USB2端口和USB OTG +- 蜂窝调制解调器支持 + +**价格** + +常规版售价$192、带硬盘售价$229。邮费另付。 + +**发售日期** + +现在就可购买。运送将花费4周。 + +#### Think Penguin出品的Penguin Pocket Wee #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) + +[Think Penguin][6]是一家开源硬件生产商。在迷你PC领域,它提供了[Penguin Pocket Wee][7]。大小是4.6″x 4.4″x 1.4″ ,, Penguin Pocket Wee提供了大量的配置。你可以选择处理器、存储、网卡等。你可以选择购买预装你喜欢的Linux发行版,默认系统是Ubuntu。 + +The general configuration is as following: +下面的默认的配置 + +- Intel Core i3 或者 i5处理器,最高支持1080p视频 +- 最高扩展至 16GB 的 DDR3内存 +- Intel HD 显卡 +- Wireless N +- 最大250GB的SSD +- 4个USB 3.0接口 +- Intel 10/100/1000 千兆网卡 + +**价格** + +Basic model starts at $499 and it can go up to $1000 based on the configuration you select. +基础版本$499起售,根据你的配置最大是$1000。 + +**发售日期** + +现在就可下订单。该公司在美国和英国也有办公司,所以应也可以运送到南美和欧洲。 + +### 你会选哪种? ### + +我故意没有介绍[Raspberry Pi 2][8]或者其他Linux微电脑如[Intel的电脑棒][9]。原因是我不认为这些微电脑属于迷你PC的范畴。 + +你怎么看?你想用迷你PC代替你的桌面PC么?是不是还有我没有在**最好的基于Linux的迷你PC**列出的PC?分享你们的观点吧。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:https://system76.com/ +[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ +[3]:http://www.compulab.co.il/ +[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ +[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview +[6]:https://www.thinkpenguin.com/ +[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop +[8]:http://itsfoss.com/raspberry-pi-2-specs/ +[9]:http://itsfoss.com/intels-compute-stick/ From b3a8f81c2804dcb94e7731bad80b793610c8af4f Mon Sep 17 00:00:00 2001 From: LouisWei Date: Sun, 22 Mar 2015 16:48:32 +0800 Subject: [PATCH 623/725] translated wi-cuckoo --- ...And Use 'Go For It!' To Do App In Linux.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 translated/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md diff --git a/translated/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md b/translated/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md new file mode 100644 index 0000000000..6fa5899404 --- /dev/null +++ b/translated/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md @@ -0,0 +1,94 @@ +在Linux上安装与使用‘Go for it!’备忘软件 +=============================================================================== +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_For_It_TODO_Linux.jpeg) + +你在Linux桌面是如何管理任务和备忘的?我喜欢[用Ubuntu的粘滞便签][1]很久了。但是我要面对与其他设备同步的麻烦,特别是我的智能手机。这就是我为什么选择使用[Google Keep][2]的原因了。 + +现在,Google Keep是一款功能丰富的软件,我十分喜爱,而且喜欢到把他叫做[Linux的Evernote][3]地步。但是并不是每个人都喜欢一款功能丰富的备忘录软件。极简主义是目前的主流,很多人喜欢。如果你是极简主义的追求者之一,而且正在寻找一款开源的备忘录软件,那么你应该试一试[Go For It!][4]。 + +### Go For It!高效的Linux桌面软件 ### + +Go For It!是一款简洁的备忘软件,借助定时提醒帮助你专注于工作。所以,你添加一个任务到列表后,可以附上一个定时器。到设定时间后,它就会提醒你去做任务。你可以看看其开发者制作的视频,[Manuel Kehl][5]: + +注释:youtube视频,发布的时候可做成一个链接 + + +### 安装 Go For It!### + +为在Ubuntu 15.04,14.04和其他基于Linux内核的Ubuntu版本,如Linux Mint,初级操作系统Freya等等上面安装 Go For It!请使用这款软件官方的PPA: + + sudo add-apt-repository ppa:mank319/go-for-it + sudo apt-get update + sudo apt-get install go-for-it + +你也可以下载.deb包,Windows安装包和源代码,从下面不同的连接中: + +- [Download source code][6] +- [Download .deb binaries][7] +- [Download for Windows][8] + +### 在Linux桌面使用Go For It!### + +Go For It!使用真心方便。你只需添加任务到列表中,任务会自动存入todo.txt文件中。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux.png) + +默认是为每个任务定时25分钟。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_1.png) + +任务一旦完成,就会被自动存档到done.txt文件中。根据喜好,它会在规定的时间间隔或者任务过期前不久,发送桌面提醒: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Linux_notification.png) + +你可以从配置里面修改所有的喜好。 + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_2.png) + +目前一切都看着挺好。但是在智能手机上使用体验怎样呢?如果你不能使它在不同设备间同步,那这款高效软件就是不完整的。好消息是Go For It!是基于[todo.txt][9]的,这意味着你可以用第三方软件和像Dropbox一样的云服务来使用它。 + +### 在安卓手机和平板上使用Go For It! ### + +在这里你需要做一些工作。首先的首先,在Linux和你的安卓手机上安装Dropbox,如果之前没有安装的话。下一步你要做的就是要配置Go For It!和 **改todo.txt的目录到Dropbox的路径下**。 + +然后,你得去下载[Simpletask Andriod app][10]。这是免费的应用。安装它。当你第一次运行Simletask的时候,你会被要求关联你的账号到Dropbox: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android_1.jpeg) + +一旦你完成了Simpletask与Dropbox的关联,就可以打开应用。如果你已经修改了Go For It的配置,将文件保存到Dropbox上,你就应该可以在Simpletask里看到。而如果你没有看到,点击应用底部的设置,选择Open Todo file的选项: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android.jpeg) + +现在,你应该可以看到Simpletask同步的任务了。 + +### 总结 ### + +有了Simpletask,你就可以相似地使用它,就像一种[标记语言工具][11]。对于小巧和专注而言,Go For It!是一款不错的备忘软件。一个干净的界面是额外的加分点。拥有它自己的手机应用应该是比较好的,但是我们已经看到了替代的方案。 + +底层来讲,Go For It!不会运行在后台。这就是说,你不得不让它一直保持运行。它甚至没有一个最小化的按钮,这有一点小小的烦扰。我想要看到的是有一个小的指示程序,运行在后台,并且快速进入主面板,这肯定会提升其可用性。 + +是该试试Go For It!了,分享一下你们之间的经历。在Linux桌面上,你还使用了哪些其他的备忘软件?比起其他你最喜欢的同类应用,Go For It!怎么样? + +------------------------------------------------------------------------------- + + +via: http://itsfoss.com/go-for-it-to-do-app-in-linux/ + +作者:[Abhishek][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/indicator-stickynotes-windows-like-sticky-note-app-for-ubuntu/ +[2]:http://itsfoss.com/install-google-keep-ubuntu-1310/ +[3]:http://itsfoss.com/5-evernote-alternatives-linux/ +[4]:http://manuel-kehl.de/projects/go-for-it/ +[5]:http://manuel-kehl.de/about-me/ +[6]:https://github.com/mank319/Go-For-It +[7]:https://launchpad.net/~mank319/+archive/ubuntu/go-for-it +[8]:http://manuel-kehl.de/projects/go-for-it/download-windows-version/ +[9]:http://todotxt.com/ +[10]:https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&hl=en +[11]:http://itsfoss.com/install-latex-ubuntu-1404/ From bfb9f1842ed8462cded239d48399105630c4956d Mon Sep 17 00:00:00 2001 From: lihaiming Date: Sun, 22 Mar 2015 18:37:29 +0800 Subject: [PATCH 624/725] =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rm backup server on Linux with BackupPC.md | 37 +-- ...a Web Crawling Tool in Ubuntu 14.04 LTS.md | 33 ++- ...hat is a good IDE for C or C++ on Linux.md | 20 +- ...115 20 Unix Command Line Tricks--Part I.md | 85 +++--- ...inally Lets You Set Menus ToAlways Show.md | 41 +++ ...50119 Ubuntu With XFCE vs Xubuntu Linux.md | 20 +- ...Answers--How to check CPU info on Linux.md | 20 +- ...oad a RPM package without installing it.md | 56 ++++ ... Processes Of A Specific User With slay.md | 10 +- .../20150127 Windows 10 versus Linux.md | 0 ...s Point Signal Strength With wifi-linux.md | 16 +- ...ck up a Debian system using backupninja.md | 41 +-- ...ux Games We Will See In 2015 And Beyond.md | 130 +++++---- ...n source software in the business world.md | 85 ++++++ ...Linux Based Mini PC You Can Buy In 2015.md | 139 --------- ...n source software in the business world.md | 86 ------ .../20150318 The future of Linux storage.md | 82 ++++++ ... Revealed--The best and worst of Docker.md | 66 +++++ ...n local time and UNIX timestamp in Perl.md | 61 ---- ...inal Commands That Will Rock Your World.md | 266 +++++++++++++++++ ...0150318 Fedora GNOME Keyboard Shortcuts.md | 213 ++++++++++++++ ...M (Logical Volume Management) in Ubuntu.md | 268 ++++++++++++++++++ ...r Easy Partition Resizing and Snapshots.md | 67 +++++ ...irectory with Samba on Fedora or CentOS.md | 144 ++++++++++ ...And Use 'Go For It!' To Do App In Linux.md | 94 ++++++ ... Smart phones Using Prey Tool in Ubuntu.md | 70 +++++ ...o Analyze Disk Images and Recover Files.md | 159 +++++++++++ ...Linux Based Mini PC You Can Buy In 2015.md | 145 ++++++++++ ...inally Lets You Set Menus ToAlways Show.md | 42 --- ...g kernel code get hired really quickly'.md | 39 +++ ...oad a RPM package without installing it.md | 55 ---- ...16 Install Mate desktop in FreeBSD 10.1.md | 28 +- ...n local time and UNIX timestamp in Perl.md | 62 ++++ 33 files changed, 2088 insertions(+), 592 deletions(-) rename {translated/tech => published}/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md (56%) rename {translated/tech => published}/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md (80%) rename {translated/share => published}/20150114 What is a good IDE for C or C++ on Linux.md (61%) rename {translated/tech => published}/20150115 20 Unix Command Line Tricks--Part I.md (73%) create mode 100644 published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md rename {translated/share => published}/20150119 Ubuntu With XFCE vs Xubuntu Linux.md (91%) rename {translated/tech => published}/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md (73%) create mode 100644 published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md rename {translated/tech => published}/20150126 How To Kill All Processes Of A Specific User With slay.md (83%) rename {translated/talk => published}/20150127 Windows 10 versus Linux.md (100%) rename {translated/tech => published}/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md (71%) rename {translated/tech => published}/20150209 How to back up a Debian system using backupninja.md (53%) rename {translated/talk => published}/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md (53%) create mode 100644 published/20150309 10 best uses for open source software in the business world.md delete mode 100644 sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md delete mode 100644 sources/talk/20150309 10 best uses for open source software in the business world.md create mode 100644 sources/talk/20150318 The future of Linux storage.md create mode 100644 sources/talk/20150320 Revealed--The best and worst of Docker.md delete mode 100644 sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md create mode 100644 sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md create mode 100644 sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md create mode 100644 sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md create mode 100644 sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md create mode 100644 sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md create mode 100644 sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md create mode 100644 sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md create mode 100644 sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md create mode 100644 translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md delete mode 100644 translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md create mode 100644 translated/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md delete mode 100644 translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md rename {sources => translated}/tech/20150316 Install Mate desktop in FreeBSD 10.1.md (55%) create mode 100644 translated/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md diff --git a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md similarity index 56% rename from translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md rename to published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md index 9dd434a809..24daaf3424 100644 --- a/translated/tech/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md +++ b/published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md @@ -1,12 +1,12 @@ -如何在 Linux 上使用 BackupPC 来设置一个跨平台的备份服务器 +如何在 Linux 上使用 BackupPC 来架设跨平台的备份服务器 ================================================================================ -为了防止你不能分辨这篇教程和我先前关于[backupninja][1] 和 [backup-manager][2] 的帖子,=== 我是一个积极的备份迷。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你花费了时间和精力来为你的重要数据生成额外的拷贝。 +也许你没有从我先前关于 [backupninja][1] 和 [backup-manager][2] 的两篇文章中发现,我是一个超级备“粉”。当提到备份,我宁愿备份的太多而不希望备份不足,因为如果我们有需要的话,你将会感激你为重要数据生成额外的拷贝所付出的时间和精力。 -在这篇帖子中,我将向你介绍 [BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 +在这篇文章中,我将向你介绍 [BackupPC][3],一个跨平台的备份服务器软件,它可以通过网络为 Linux,Windows 和 MacOS 等系统上的客户端主机拉取备份。BackupPC 添加了一系列的特点使得管理备份变为一件快乐的事。 ### BackupPC 的特点 ### -BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收集和管理其他远程客户端主机上的备份。通过使用它的 Web 界面,你可以检查日志和配置文件、为其他远程主机启动/取消/安排备份任务以及可视化备份任务的当前状态。你也可以非常容易地浏览归档的文件以及从备份的归档中恢复个人文件或整个作业。为了恢复单一的个人文件,你可以直接通过 Web 界面来下载任何先前备份的文件。若如这还不够,针对客户端主机,没有特别的客户端软件需要安装。在 Windows 客户端上, 本机 SMB 协议将被使用,而对于 *nix 客户端,你将使用 `rsync` 或 通过 SSH, RSH 或 NFS 来使用 `tar` 。 +BackupPC 自带有一个健壮的 Web 界面,允许你以集中化的方式来收集和管理其他远程客户端主机上的备份。通过使用它的 Web 界面,你可以检查日志和配置文件、为其他远程主机启动/取消/安排备份任务以及可视化备份任务的当前状态。你也可以非常容易地浏览归档的文件以及从备份的归档中恢复单个文件或整个备份。要恢复单个文件,你可以直接通过 Web 界面来下载任何先前备份的文件。不仅如此,客户端主机并不需要安装特别的客户端软件。在 Windows 客户端上, 使用的是原生的 SMB 协议,而对于 *nix 客户端,你将使用 `rsync` 或 通过 SSH, RSH 或 NFS 来使用 `tar` 。 ### 安装 BackupPC ### @@ -20,13 +20,13 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 # yum install BackupPC -同往常一样,这两种包管理系统都会自动地对依赖问题进行解决。另外,作为安装过程中的一部分,你可能会被要求去配置或重新配置用于图形用户界面的 Web 服务器。下面的截图来自于 Debian 系统: +同往常一样,这两种包管理系统都会自动解决依赖问题。另外,作为安装过程中的一部分,你可能需要新配置或修改配置用于图形用户界面的 Web 服务器。下面的截图来自于 Debian 系统: ![](https://farm8.staticflickr.com/7573/16163781711_6218b620ef_c.jpg) 通过空格键来确定你的选择,然后使用 tab 键移动到 Ok 选项并敲回车键。 -接着类似于下面的截屏将会呈现在你眼前,通知你一个用来管理 BackupPC 的名为 ‘backuppc’的管理员用户以及相应的密码(这个密码可以在以后被更改,如果你希望的话)已经被创建。这里需要注意的是:同样名为 ‘backuppc’的一个 HTTP 账户和一个常规的 Linux 账户将会被创建,它们使用同一个密码。需要前者的目的是来访问受保护的 BackupPC 的 Web 界面,而后者则是为了通过 SSH 来使用 `rsync` 来执行备份任务。 +接着类似于下面的截屏将会呈现在你眼前,通知你创建了一个用来管理 BackupPC 的名为 ‘backuppc’的管理员用户以及相应的密码(如果你需要,这个密码以后可以更改)。这里需要注意的是:这里创建了同样名为 ‘backuppc’的 HTTP 账户和常规的 Linux 账户,它们使用相同的密码。需要前者的目的是来访问受保护的 BackupPC 的 Web 界面,而后者则是为了通过 SSH 来使用 `rsync` 来执行备份任务。 ![](https://farm8.staticflickr.com/7579/15979622809_25e734658d_c.jpg) @@ -42,7 +42,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ### 启动 BackupPC 并设置备份 ### -首先,打开一个浏览器窗口并指向 http:///backuppc/ 。当弹出提示框时,输入先前向你提供的默认 HTTP 用户凭据(注:即用户名 backuppc 和相应的默认密码)。假如认证成功,你就会被带入到 Web 界面的主页: +首先,打开一个浏览器窗口并指向 http://\<服务器名称或 IP 地址>/backuppc/ 。当弹出提示框时,输入先前向你创建的默认 HTTP 用户凭据(注:即用户名 backuppc 和相应的默认密码)。假如认证成功,你就会被带入到 Web 界面的主页: ![](https://farm9.staticflickr.com/8601/15543330314_f6fdaa235e_z.jpg) @@ -51,9 +51,9 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 - Host #1: CentOS 7 [IP 192.168.0.17] - Host #2: Windows 7 [IP 192.168.0.103] -我们将通过 SSH 使用 `rsync`来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 [基于密码认证][7](注:这里我不知如何翻译,根据链接,感觉是无需密码来连接主机)以及在我们的 Windows 主机中设置一个共享目录。 +我们将通过 SSH 使用 `rsync`来备份 CentOS 主机,使用 SMB 来备份 Windows 主机。在执行备份之前,我们需要向我们的 CentOS 主机设置 [基于密钥认证][7] 以及在我们的 Windows 主机中设置一个共享目录。 -下面是关于如何为一个远程 CentOS 主机设置 key-based authentication 的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并向 CentOS 主机上的 root 账户传递它的公共密钥。 +下面是关于如何为一个远程 CentOS 主机设置基于密钥认证的指导。我们创建 ‘backuppc’ 用户的 RSA 密钥对,并将其公钥传输给 CentOS 主机上的 root 账户。 # usermod -s /bin/bash backuppc # su - backuppc @@ -64,13 +64,13 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm8.staticflickr.com/7496/16164929932_8fc817125d_b.jpg) -你需要一个远程的 CentOS 主机的 root 权限来在该主机中的文件系统中发放写权限,以防要恢复的备份文件或目录的所有者为 root 账户。 +你需要一个远程的 CentOS 主机的 root 权限,以获得在该主机中的文件系统中写权限,以防要恢复的备份文件或目录的所有者为 root 账户。 一旦 CentOS 和 Windows 主机都准备完毕,使用 Web 界面将它们添加到 BackupPC: ![](https://farm9.staticflickr.com/8586/15979622709_76c2dcf68c_z.jpg) -下一步的内容由更改每个主机的备份设置组成: +下一步更改每个主机的备份设置: ![](https://farm8.staticflickr.com/7461/16163781611_765c147f9f_z.jpg) @@ -88,7 +88,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ![](https://farm8.staticflickr.com/7536/15978247428_458c023f4c.jpg) -在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页的链接。当一个备份任务被成功地完成,一个被命名为主机名或 IP 地址的目录将会在服务器的 /var/lib/backuppc/pc 目录下被创建。 +在任何时候,你都可以通过点击如上图展示的每个主机的备份主页来查看备份任务的状态。假如因为某些原因备份失败,在主机菜单中将会出现一个指向包含错误信息的网页的链接。当一个备份任务成功完成后,在服务器的 /var/lib/backuppc/pc 目录下会创建一个命名为主机名或 IP 地址的目录。 ![](https://farm8.staticflickr.com/7549/16165680115_196ee42a49_z.jpg) @@ -96,7 +96,7 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 ### 恢复备份 ### -为了浏览已经保存过的文件。进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你正在工作的机器上: +要浏览这些保存的文件,进入每个主机的主菜单下的 “浏览备份”选项,你可以一目了然地看到目录和文件,并选择那些你想恢复的文件。另外,你还可以通过点击文件来使用默认程序打开文件或右击文件并选择“另存为”来下载该文件到你当前的机器上: ![](https://farm8.staticflickr.com/7506/16165680105_bd5883e0da_c.jpg) @@ -113,21 +113,22 @@ BackupPC 自带有一个健壮的 Web 界面,允许你以集中的方式来收 有句俗话说,"越简单,越好",而这正是 BackupPC 所提供的东西。在 BackupPC 中,你将不仅找到了一个备份工具,而且还找到了一个无需任何客户端应用来在几个不同的操作系统中管理你的备份的方法。我相信这就有足够的理由让你去尝试一下。 欢迎使用下面的评论框来留下你的评论和问题,假如你有的话。我总是乐于听取读者想说的话! + -------------------------------------------------------------------------------- via: http://xmodulo.com/backuppc-cross-platform-backup-server-linux.html 作者:[Gabriel Cánepa][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://xmodulo.com/author/gabriel -[1]:http://xmodulo.com/backup-debian-system-backupninja.html -[2]:http://xmodulo.com/linux-backup-manager.html +[1]:http://linux.cn/article-5096-1.html +[2]:http://linux.cn/article-4586-1.html [3]:http://backuppc.sourceforge.net/ -[4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[5]:http://ask.xmodulo.com/enable-nux-dextop-repository-centos-rhel.html +[4]:http://linux.cn/article-2324-1.html +[5]:http://linux.cn/article-3889-1.html [6]:http://xmodulo.com/recommend/linuxguide [7]:http://xmodulo.com/how-to-enable-ssh-login-without.html diff --git a/translated/tech/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md b/published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md similarity index 80% rename from translated/tech/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md rename to published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md index 672548853b..6ab4241c76 100644 --- a/translated/tech/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md +++ b/published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md @@ -1,4 +1,4 @@ -如何在Ubuntu 14.04 LTS安装网络爬虫工具 +如何在Ubuntu 14.04 LTS安装网络爬虫工具:Scrapy ================================================================================ 这是一款提取网站数据的开源工具。Scrapy框架用Python开发而成,它使抓取工作又快又简单,且可扩展。我们已经在virtual box中创建一台虚拟机(VM)并且在上面安装了Ubuntu 14.04 LTS。 @@ -6,13 +6,13 @@ Scrapy依赖于Python、开发库和pip。Python最新的版本已经在Ubuntu上预装了。因此我们在安装Scrapy之前只需安装pip和python开发库就可以了。 -pip是作为python包索引器easy_install的替代品。用于安装和管理Python包。pip包的安装可见图 1。 +pip是作为python包索引器easy_install的替代品,用于安装和管理Python包。pip包的安装可见图 1。 sudo apt-get install python-pip ![Fig:1 Pip installation](http://blog.linoxide.com/wp-content/uploads/2014/11/f1.png) -图:1 pip安装 +*图:1 pip安装* 我们必须要用下面的命令安装python开发库。如果包没有安装那么就会在安装scrapy框架的时候报关于python.h头文件的错误。 @@ -20,42 +20,41 @@ pip是作为python包索引器easy_install的替代品。用于安装和管理Py ![Fig:2 Python Developer Libraries](http://blog.linoxide.com/wp-content/uploads/2014/11/f2.png) -图:2 Python 开发库 +*图:2 Python 开发库* -scrapy框架即可从deb包安装也可以从源码安装。然而在图3中我们已经用pip(Python 包管理器)安装了deb包了。 +scrapy框架既可从deb包安装也可以从源码安装。在图3中我们用pip(Python 包管理器)安装了deb包了。 sudo pip install scrapy ![Fig:3 Scrapy Installation](http://blog.linoxide.com/wp-content/uploads/2014/11/f3.png) -图:3 Scrapy 安装 +*图:3 Scrapy 安装* 图4中scrapy的成功安装需要一些时间。 ![Fig:4 Successful installation of Scrapy Framework](http://blog.linoxide.com/wp-content/uploads/2014/11/f4.png) -图:4 成功安装Scrapy框架 +*图:4 成功安装Scrapy框架* ### 使用scrapy框架提取数据 ### -**(基础教程)** +####基础教程#### -我们将用scrapy从fatwallet.com上提取店名(提供卡的店)。首先,我们使用下面的命令新建一个scrapy项目“store name”, 见图5。 +我们将用scrapy从fatwallet.com上提取商店名称(卖卡的店)。首先,我们使用下面的命令新建一个scrapy项目“store name”, 见图5。 $sudo scrapy startproject store_name ![Fig:5 Creation of new project in Scrapy Framework](http://blog.linoxide.com/wp-content/uploads/2014/11/f5.png) -图:5 Scrapy框架新建项目 +*图:5 Scrapy框架新建项目* -Above command creates a directory with title “store_name” at current path. This main directory of the project contains files/folders which are shown in the following Figure 6. 上面的命令在当前路径创建了一个“store_name”的目录。项目主目录下包含的文件/文件夹见图6。 $sudo ls –lR store_name ![Fig:6 Contents of store_name project.](http://blog.linoxide.com/wp-content/uploads/2014/11/f6.png) -图:6 store_name项目的内容 +*图:6 store_name项目的内容* 每个文件/文件夹的概要如下: @@ -66,13 +65,13 @@ Above command creates a directory with title “store_name” at current path. T - store_name/settings.py 是项目的配置文件 - store_name/spiders/, 包含了用于爬取的蜘蛛 -由于我们要从fatwallet.com上如提取店名,因此我们如下修改文件。 +由于我们要从fatwallet.com上如提取店名,因此我们如下修改文件(LCTT 译注:这里没说明是哪个文件,译者认为应该是 items.py)。 import scrapy class StoreNameItem(scrapy.Item): - name = scrapy.Field() # extract the names of Cards store + name = scrapy.Field() # 取出卡片商店的名称 之后我们要在项目的store_name/spiders/文件夹下写一个新的蜘蛛。蜘蛛是一个python类,它包含了下面几个必须的属性: @@ -80,7 +79,7 @@ Above command creates a directory with title “store_name” at current path. T 2. 爬取起点url (start_urls) 3. 包含了从响应中提取需要内容相应的正则表达式的解析方法。解析方法对爬虫而言很重要。 -我们在store_name/spiders/目录下创建了“store_name.py”爬虫,并添加如下的代码来从fatwallet.com上提取点名。爬虫的输出到文件(**StoreName.txt**)中,见图7。 +我们在store_name/spiders/目录下创建了“store_name.py”爬虫,并添加如下的代码来从fatwallet.com上提取店名。爬虫的输出写到文件(**StoreName.txt**)中,见图7。 from scrapy.selector import Selector from scrapy.spider import BaseSpider @@ -113,7 +112,7 @@ Above command creates a directory with title “store_name” at current path. T ![Fig:7 Output of the Spider code .](http://blog.linoxide.com/wp-content/uploads/2014/11/f7.png) -图:7 爬虫的输出 +*图:7 爬虫的输出* *注意: 本教程的目的仅用于理解scrapy框架* @@ -123,7 +122,7 @@ via: http://linoxide.com/ubuntu-how-to/scrapy-install-ubuntu/ 作者:[nido][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/share/20150114 What is a good IDE for C or C++ on Linux.md b/published/20150114 What is a good IDE for C or C++ on Linux.md similarity index 61% rename from translated/share/20150114 What is a good IDE for C or C++ on Linux.md rename to published/20150114 What is a good IDE for C or C++ on Linux.md index 32d7371d18..e0e960744a 100644 --- a/translated/share/20150114 What is a good IDE for C or C++ on Linux.md +++ b/published/20150114 What is a good IDE for C or C++ on Linux.md @@ -1,24 +1,24 @@ -Linux上有哪些比较好的C/C++ IDE? +Linux 上的最佳 C/C++ IDE ================================================================================ -"一个真正的程序员是不用IDE(译者注:集成开发环境)的,他们都是用带着某某插件的文本编辑器来写代码。"我们总能在某些地方听到此类观点。然而,尽管越来越多的人同意这样的观点,但是一个IDE仍然非常有用,它设置简单,使用起来也很方便,因此没有更好办法能像这样来编写一个项目了。所以鉴于这点,在这里我想给大家列一份在linux平台上比较好的C/C++ IDE清单。为什么特地说C/C++呢?因为C语言是我最喜欢的编程语言而且我们总要找个切入点来开始。另外要注意的是,通常有很多种编写C代码的方法,所以为了消减清单的篇幅,我只选择了"真正好用的IDE",而不是诸如Gedit或Vim这种注入[插件][1]的文本编辑器。并不是说这些编辑器在任何情况下都不好,只是如果我将文本编辑器包含进去那这份清单就将永无止境了。 +"一个真正的程序员是不用IDE(译者注:集成开发环境)的,他们都是用带着某某插件的文本编辑器来写代码。"我们总能在某些地方听到此类观点。然而,尽管越来越多的人同意这样的观点,但是一个IDE仍然非常有用,它设置简单,使用起来也很方便,因此不能比这样更合适编写一个项目了。所以鉴于这点,在这里我想给大家列一份在Linux平台上比较好的C/C++ IDE清单。为什么特地说C/C++呢?因为C语言是我最喜欢的编程语言,而且我们总要找个切入点来开始。另外要注意的是,通常有很多种编写C代码的方法,所以为了消减清单的篇幅,我只选择了"真正好用的IDE",而不是诸如Gedit或Vim这种注入[插件][1]的文本编辑器。并不是说这些编辑器不好,只是如果我将文本编辑器包含进去那这份清单就将永无止境了。 ### 1. Code::Blocks ### ![](https://farm8.staticflickr.com/7520/16089880989_10173db27b_c.jpg) -用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。它闪耀的地方在于它简单的插件系统,里面添加了不可缺少的工具,像Valgrind和CppCheck,还有不太重要的比如像俄罗斯方块这样的小游戏。但是我特别喜欢它的理由是它连贯方便的快捷键设定和大量的却感受不到受压迫的选项设置。 +用我个人的最爱来开篇,[Code::Blocks][2]是一款简单快速的专有C/C++ IDE。就像任何一款强大的IDE一样, 它集成了语法高亮、书签功能、自动补全功能、项目管理和一个调试器。它最闪亮的地方在于它简单的插件系统,里面添加了不可缺少的工具,像Valgrind和CppCheck,还有不太重要的比如像俄罗斯方块这样的小游戏。但是我特别喜欢它的理由是它连贯方便的快捷键设定和大量的却感受不到拥挤的选项设置。 ### 2. Eclipse ### ![](https://farm8.staticflickr.com/7522/16276001255_66235a0a69_c.jpg) -我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[plugin][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。这里要感谢[CDT 项目][5],让Eclipse编写C程序变得可能。你同样可以体验到Eclipse的强大功能包括它的一些传统功能特点比如自动补全、代码大纲、代码生成器和先进的重构功能。照我话说,它的不足之处在于它不如Code::Blocks那么轻量级,它仍然很臃肿,要花费很多时间去载入。但是如果你的电脑可以驾驭它,或者你是个忠实的Eclipse粉,那么它一定是你的不二选择。 +我知道我只说"真正好用的IDE"而不是带着插件的文本编辑器,但是,[Eclipse][3]的确是一款"真正好用的IDE",只是Eclipse需要一些[插件][4](或经过一些改装)来编写C程序,所以严格来说我无法反驳我自己。而且,做一份IDE清单不提到Eclipse这个“巨人”是不可能的事情。无论喜欢它与否,Eclipse仍然是一款强大的Java编程工具。这里要感谢[CDT 项目][5],让Eclipse编写C程序变得可能。你同样可以体验到Eclipse的强大功能,包括它的一些传统功能特点比如自动补全、代码大纲、代码生成器和先进的重构功能。照我话说,它的不足之处在于它不如Code::Blocks那么轻量级,它仍然很臃肿,要花费很多时间去载入。但是如果你的电脑可以驾驭它,或者你是个忠实的Eclipse粉,那么它一定是你的不二选择。 ### 3. Geany ### ![](https://farm9.staticflickr.com/8573/16088461968_c6a6c9e49a_c.jpg) -牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、基于模板创作、代码大纲、自定义快捷键和插件管理。相比于现在的IDE,Geany仍然是一款作用广泛的文本编辑器,然而,因为它的功能亮点和它的界面设计,所以我把它放在这份列表里。 +牺牲了很多特色功能但是增加了很多灵活性,[Geany][6]就是这样一款与Eclipse对立的软件。但是对于它所缺乏的地方(比如说没有调试器), Geany用一些漂亮小巧的特色功能弥补了它们:一个可以做笔记的区域、基于模板创作、代码大纲、自定义快捷键和插件管理。相比于现在的IDE,Geany仍然是一款作用广泛的文本编辑器,然而,因为它的功能亮点和它的界面设计,所以我把它放在这份列表里。 ### 4. MonoDevelop ### @@ -30,19 +30,19 @@ Linux上有哪些比较好的C/C++ IDE? ![](https://farm8.staticflickr.com/7514/16088462018_7ee6e5b433_c.jpg) -它身上有着强烈的“GNOME感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷方法来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 +它身上有着强烈的“GNOME即视感”,[Anjuta][8]的外观很具争议。我倾向于把它看作是带着调试器的Geany升级版,但是它的界面实际上要复杂得多。我确实很享受能在项目、文件夹和代码大纲视图之间来回切换的标签系统,我本想用诸如更多的快捷方法来移动文件,然而,这是一个很好的提供了显著编译功能和构建选项的工具,它能够支持哪些很有特点的需求。 ### 6. Komodo Edit ### ![](https://farm8.staticflickr.com/7502/16088462028_81d1114c84_c.jpg) -我不是非常熟悉[Komodo Edit][9],但是在试用了一段时间之后,我被它很多很多的优点给惊喜到了。首先,基于标签的导航功能很有很强的可预见性。其次它奇特的代码大纲让我想到了Sublime Text。此外,它的宏系统和文件比较器使得Komodo Edit非常实用。它的插件库让它几乎是完美的,说“几乎”是因为在其它IDE里我的确找不到能与之相媲美的快捷方法了。而且我们能享受到更多特别的C/C++工具,这往往是普通IDE的不足之处。然而,Komodo Edit就能做到。 +我不是非常熟悉[Komodo Edit][9],但是在试用了一段时间之后,我被它很多很多的优点给惊喜到了。首先,基于标签的导航功能有很强的可预见性。其次它奇特的代码大纲让我想到了Sublime Text。此外,它的宏系统和文件比较器使得Komodo Edit非常实用。它的插件库让它几乎是完美的,说“几乎”是因为在其它IDE里我的确找不到能与之相媲美的快捷方法了。而且我们能享受到更多特别的C/C++工具,这往往是普通IDE的不足之处。然而,Komodo Edit就能做到。 ### 7. NetBeans ### ![](https://farm8.staticflickr.com/7569/16089881229_98beb0fce3_c.jpg) -就好像Eclipse一样,这又是一款不得不提的“巨人级”软件。拥有的功能包括通过标签进行导航、项目管理、代码大纲、更改历史追踪和大量工具,[NetBeans][10]可能是最完整的IDE了,我能用半页来列出它所有让人震惊的特色功能。但是这同时也很容易地向你透露了它的主要缺点,它太臃肿了。比起它的强大,我更喜欢基于插件的软件因为我觉得不太会有人为了一个同样的项目同时需要Git和Mercurial相结合来工作,我是不是很疯狂。但是如果你有耐心去掌握它所有的选项,那你差不多无论到哪里都是IDE大师了。 +就好像Eclipse一样,这又是一款不得不提的“巨人级”软件。拥有的功能包括通过标签进行导航、项目管理、代码大纲、更改历史追踪和大量工具,[NetBeans][10]可能是最完整的IDE了,我能用半页来列出它所有让人震惊的特色功能。但是这同时也很容易地向你透露了它的主要缺点,它太臃肿了。比起它的强大,我更喜欢基于插件的软件,因为我觉得不太会有人为了一个同样的项目同时需要Git和Mercurial相结合来工作,我是不是很疯狂?但是如果你有耐心去掌握它所有的选项,那你差不多无论到哪里都是IDE大师了。 ### 8. KDevelop ### @@ -56,7 +56,7 @@ Linux上有哪些比较好的C/C++ IDE? 留在最后的不代表是最差的,[CodeLite][12]展现给你一种传统的编程规则却仍然能让你从它身上那特有的感觉上有所收获,即使它的界面一开始的确让我想到了Code::Blocks和Anjuta,只是不包括大量的插件库。无论你想要比较文件、插入一条版权块、定义缩略语或者用Git来工作,总有一款插件适合你。如果我不得不挑点毛病,我想说它缺乏一些符合我口味的导航快捷键,但这是真的。 -最后,我希望这份清单能让你给自己最喜欢的语言探索到更多新的IDE。虽然Code::Blocks仍然是我的最爱,不过它有一些很强大的对手。当然我们也可以远离Linux上的IDE用文本编辑器去编写C/C++代码。所以如果你有什么其它的建议想法,在评论中让我们获悉。或者如果你想要我再说说关于一些其它语言的IDE,也可以评论里提出。 +最后,我希望这份清单能让你给自己最喜欢的语言探索到更多新的IDE。虽然Code::Blocks仍然是我的最爱,不过它有一些很强大的对手。当然我们也可以远离Linux上的IDE,而用文本编辑器去编写C/C++代码。所以如果你有什么其它的建议想法,在评论中让我们获悉。或者如果你想要我再说说关于一些其它语言的IDE,也可以评论里提出。 -------------------------------------------------------------------------------- @@ -64,7 +64,7 @@ via: http://xmodulo.com/good-ide-for-c-cpp-linux.html 作者:[Adrien Brochard][a] 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/tech/20150115 20 Unix Command Line Tricks--Part I.md b/published/20150115 20 Unix Command Line Tricks--Part I.md similarity index 73% rename from translated/tech/20150115 20 Unix Command Line Tricks--Part I.md rename to published/20150115 20 Unix Command Line Tricks--Part I.md index b178a61db9..deaaef6bfa 100644 --- a/translated/tech/20150115 20 Unix Command Line Tricks--Part I.md +++ b/published/20150115 20 Unix Command Line Tricks--Part I.md @@ -1,6 +1,6 @@ -20个Unix命令技巧 - 第一部分 +20个 Unix/Linux 命令技巧(一) ================================================================================ -让我们用**这些Unix命令技巧**开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。 +让我们用**这些Unix/Linux命令技巧**开启新的一年,提高在终端下的生产力。我已经找了很久了,现在就与你们分享。 ![](http://s0.cyberciti.org/uploads/cms/2015/01/unix-command-line-tricks.001.jpg) @@ -9,16 +9,15 @@ 我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /path/to/file.log - # or use the following syntax + # 或使用如下格式 : > /path/to/file.log - # finally delete it + # 然后删除它 rm /path/to/file.log -### 如何缓存终端输出? ### - -尝试使用script命令行工具来为你的终端输出创建typescript。 +### 如何记录终端输出? ### +试试使用script命令行工具来为你的终端输出创建输出记录。 script my.terminal.sessio @@ -28,7 +27,7 @@ date sudo service foo stop -要退出(结束script绘画),输入*exit* 或者 *logout* 或者按下 *control-D* +要退出(结束script会话),输入 *exit* 或者 *logout* 或者按下 *control-D*。 exit @@ -38,11 +37,10 @@ less my.terminal.session cat my.terminal.session -### 还原删除的 /tmp 文件夹 ### +### 还原被删除的 /tmp 文件夹 ### 我在文章[Linux和Unix shell,我犯了一些错误][1]。我意外地删除了/tmp文件夹。要还原它,我需要这么做: - mkdir /tmp chmod 1777 /tmp chown root:root /tmp @@ -50,11 +48,11 @@ ### 锁定一个文件夹 ### -为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行: +为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹。因此我运行了: chmod 0000 /downloads -root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用: +root用户仍旧可以访问,而ls和cd命令则不工作。要还原它用: chmod 0755 /downloads @@ -66,40 +64,40 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 或者,在退出vim之前使用:X 命令来加密你的文件,vim会提示你输入一个密码。 -### 清除屏幕上的输出 ### +### 清除屏幕上的乱码 ### 只要输入: reset -### 成为人类 ### +### 易读格式 ### -传递*-h*或者*-H*(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以人类可读的格式输出: +传递*-h*或者*-H*(和其他选项)选项给GNU或者BSD工具来获取像ls、df、du等命令以易读的格式输出: ls -lh - # 以人类可读的格式 (比如: 1K 234M 2G) + # 以易读的格式 (比如: 1K 234M 2G) df -h df -k - # 已字节输出如: KB, MB, or GB + # 以字节、KB、MB 或 GB 输出: free -b free -k free -m free -g - # 以人类可读的格式打印 (比如 1K 234M 2G) + # 以易读的格式输出 (比如 1K 234M 2G) du -h - # 以人类可读的格式获取系统perms + # 以易读的格式显示文件系统权限 stat -c %A /boot - # 比较人类可读的数字 + # 比较易读的数字 sort -h -a file - # 在Linux上以人类可读的形式显示cpu信息 + # 在Linux上以易读的形式显示cpu信息 lscpu lscpu -e lscpu -e=cpu,node - # 以人类可读的形式显示每个文件的大小 + # 以易读的形式显示每个文件的大小 tree -h tree -h /boot -### 在Linux系统中显示已知用户的信息 ### +### 在Linux系统中显示已知的用户信息 ### 只要输入: @@ -143,7 +141,7 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 ### 我如何删除意外在当前文件夹下解压的文件? ### -我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它混乱了/var/www/html下的文件。最简单修复这个问题的方法是: +我意外在/var/www/html/而不是/home/projects/www/current下解压了一个tarball。它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的。最简单修复这个问题的方法是: cd /var/www/html/ /bin/rm -f "$(tar ztf /path/to/file.tar.gz)" @@ -166,7 +164,7 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 ## 以root用户运行最后运行的命令 sudo !! -!!会运行最近使用的命令。要运行最近运行的“foo”命令: +!!会运行最近使用的命令。要运行最近运行的以“foo”开头命令: !foo # 以root用户运行上一次以“service”开头的命令 @@ -180,12 +178,11 @@ root用户仍旧可以访问,但是ls和cd命令还不可用。要还原它用 # 测试 nginx.conf /sbin/nginx -t -c /etc/nginx/nginx.conf - # 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi编辑了 + # 测试完 "/sbin/nginx -t -c /etc/nginx/nginx.conf"你可以用vi再次编辑这个文件了 sudo vi !$ -### 在你要离开的时候留下一个提醒 ### +### 在终端上提醒你必须得走了 ### -If you need a reminder to leave your terminal, type the following command: 如果你需要提醒离开你的终端,输入下面的命令: leave +hhmm @@ -200,26 +197,26 @@ If you need a reminder to leave your terminal, type the following command: cd - -需要快速地回到家目录?输入: +需要快速地回到你的家目录?输入: cd -变量*CDPATH*定义了含有这个目录的搜索目录路径: +变量*CDPATH*定义了目录的搜索路径: export CDPATH=/var/www:/nas10 -现在,不用输入cd */var/www/html/ ,我可以直接输入下面的命令进入/var/www/html: +现在,不用输入cd */var/www/html/ 这样长了,我可以直接输入下面的命令进入 /var/www/html: cd html -### 编辑一个用less浏览的文件 ### +### 在less浏览时编辑文件 ### -要编辑一个用less浏览的文件,按下v。你就可以用变量$EDITOR下的编辑器来编辑了: +要编辑一个正在用less浏览的文件,可以按下v。你就可以用变量$EDITOR所指定的编辑器来编辑了: less *.c less foo.html - ## 下载v编辑文件 ## - ## 退出编辑器,你可以继续用less浏览了 ## + ## 按下v键来编辑文件 ## + ## 退出编辑器后,你可以继续用less浏览了 ## ### 列出你系统中的所有文件和目录 ### @@ -237,14 +234,14 @@ If you need a reminder to leave your terminal, type the following command: # 列出 $HOME 中所有的文件 find $HOME -type f -ls | less -### 用一条命令构造命令树 ### +### 用一条命令构造目录树 ### -你可以用mkdir加上-p选项一次创建目录树: +你可以用mkdir加上-p选项一次创建一颗目录树: mkdir -p /jail/{dev,bin,sbin,etc,usr,lib,lib64} ls -l /jail/ -### 复制文件到多个目录中 ### +### 将文件复制到多个目录中 ### 不必运行: @@ -260,16 +257,16 @@ If you need a reminder to leave your terminal, type the following command: ### 快速找出两个目录的不同 ### -diff命令会按行比较文件。它也可以比较两个目录: +diff命令会按行比较文件。但是它也可以比较两个目录: ls -l /tmp/r ls -l /tmp/s - # Compare two folders using diff ## + # 使用 diff 比较两个文件夹 diff /tmp/r/ /tmp/s/ [![Fig. : Finding differences between folders](http://s0.cyberciti.org/uploads/cms/2015/01/differences-between-folders.jpg)][3] -图片: 找出目录之间的不同 +*图片: 找出目录之间的不同* ### 文本格式化 ### @@ -281,13 +278,13 @@ diff命令会按行比较文件。它也可以比较两个目录: fmt -s file.txt -### 看见输出并写入到一个文件中 ### +### 可以看见输出并将其写入到一个文件中 ### 如下使用tee命令在屏幕上看见输出并同样写入到日志文件my.log中: mycoolapp arg1 arg2 input.file | tee my.log -tee可以保证你同时在屏幕上看到mycoolapp的输出和写入文件。 +tee可以保证你同时在屏幕上看到mycoolapp的输出并写入文件  my.log。 -------------------------------------------------------------------------------- @@ -295,7 +292,7 @@ via: http://www.cyberciti.biz/open-source/command-line-hacks/20-unix-command-lin 作者:[nixCraft][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md new file mode 100644 index 0000000000..3eec1c4a08 --- /dev/null +++ b/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md @@ -0,0 +1,41 @@ +Ubuntu 15.04 终于可以让你将菜单设置为 ‘始终可见’ +================================================================================ +**如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野,在 Ubuntu 15.04 稍微做点工作就可以留住菜单。** + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/locally-integrated-menus-in-ubuntu.png) + +最新的Ubuntu 15.04的Unity界面通过在“提议(Proposed)”通道提供了一个选项,**使应用程序菜单在Ubuntu中始终可见**。 + +这是个不会淡出,也不会过段时间就消失的菜单。 + +最大的缺点是它目前只能通过`dconf`来控制,而不是常规的面向用户的选项设置。 + +我希望(如果预计没有的话)在之后的开发中,能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分。 + +现在,如果你使用的是 Ubuntu 15.04,并启用了“提议(Proposed)”的更新通道后,你可以在dconf 的com>canonical>Unity>‘always show menus’ 中找到这个开关。 + +### 迟到总比没有要好? ### + +开发者们计划在Ubuntu 14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 + +本地集成菜单(LIM)在Ubuntu 14.04 LTS 中的首次亮相就赢得了赞誉,其被广泛认为在那些喜欢隐藏方式的与那些不喜欢必须使用鼠标和触摸板的人之间的最佳的折衷方案。 + +虽然在Unity方面本地集成菜单减少了不少批评,不过默认的“淡入/淡出”行为总是还让人不爽。 + +在Ubuntu 过去的几个版本中已经能够看到他们在积极解决早期的用户体验中的几个痛点。经过了几年,在TODO列表中[我们去年终于看到了本地集成菜单][1],以及通过[点击应用图标来实现Unity 启动器中应用的最小化及恢复的选项][2]。 + +一年以来我们终于看到了一个使应用程序菜单始终显示的选项,无论我们的鼠标在哪里。迟来总比没有好,对不对? + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option + +作者:[Joey-Elijah Sneddon][a] +译者:[JeffDing](https://github.com/JeffDing) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:http://www.omgubuntu.co.uk/2014/02/locally-integrated-menus-ubuntu-14-04 +[2]:http://www.omgubuntu.co.uk/2014/03/minimize-click-launcher-option-ubuntu-14-04 diff --git a/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md b/published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md similarity index 91% rename from translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md rename to published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md index c739b3b702..f48ee95fa7 100644 --- a/translated/share/20150119 Ubuntu With XFCE vs Xubuntu Linux.md +++ b/published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md @@ -1,7 +1,8 @@ -Ubuntu With XFCE vs Xubuntu Linux +Ubuntu & XFCE vs Xubuntu ========================================================= -Ubuntu vs Xubuntu。Ubuntu拥有漂亮的桌面体验以及强大的应用程序。Xubuntu轻量、快速并且可定制,哪个更适合你? +Ubuntu拥有漂亮的桌面体验以及强大的应用程序。Xubuntu轻量、快速并且可定制,哪个更适合你? + --------------------------------------------------------- ![](http://f.tqn.com/y/linux/1/W/T/J/1/ubuntudesktop.png) @@ -10,11 +11,11 @@ Ubuntu vs Xubuntu。Ubuntu拥有漂亮的桌面体验以及强大的应用程序 并且,我同时也会在这篇文章中介绍Ubuntu用户如何获取基本的XFCE桌面,以及如何安装完整的Xubuntu桌面。 -[Ubuntu][1]以及[Xubuntu][2]是针对不同目的开发的操作系统,为什么我会强调这一点,是为了说明什么时候或者为什么你应该使用Ubuntu以及什么时候应该使用Xubuntu。 +[Ubuntu][1]以及[Xubuntu][2]是针对不同目的开发的操作系统,为什么我会强调这一点,是为了说明什么时候或者为什么你应该使用Ubuntu或Xubuntu。 比较这两个操作系统就像比较[劳斯莱斯][3]与[保时捷][4]。这两个都是很棒的车,但是如果把劳斯莱斯给一个赛车迷,他们也许会卖掉它买个其他的车,同样,如果把保时捷给舒格勋爵或者休·海夫纳这类人可能也不那么合适。 -Ubuntu拥有一个适用性很强的桌面环境,叫做Unity,并且默认会安装一些很棒的Linux应用程序,包括Rhythmbox以及[LibreOffic][5]。Ubuntu就像是劳斯莱斯。它为舒适而生,并且尽可能的提供从A到B的最时髦的方法。 +Ubuntu拥有一个适用性很强的桌面环境,叫做Unity,并且默认会安装一些很棒的Linux应用程序,包括Rhythmbox以及[LibreOffic][5]。Ubuntu就像是劳斯莱斯。它为舒适而生,并且尽可能的提供满足需要的漂亮的解决方案。 作为一个Ubuntu用户,就像汽车里面的乘客。你在到达目的地的过程中就可以同时把事情搞定,并且所有的事看起来都很漂亮并且很简单。 @@ -92,7 +93,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 接下来,我会使用命令行工具[apt-get][7]介绍在Ubuntu安装XFCE桌面的方法。 -打开一个终端窗口,在Unity环境,你可以在[Dash][8]中搜索“TERM”,或者使用组合键 CTRL+ALT+T。 +打开一个终端窗口,在Unity环境,你可以在[Dash][8]中搜索“TERM”,或者使用组合键 `CTRL+ALT+T`。 安装XFCE桌面十分简单,输入下列命令就可以了: @@ -105,7 +106,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 系统会显示一个消息,提示你是否使用默认的面板布局或者使用单独的面板。 -[最新版本的Xubuntu][10]在顶部包含一个单独的面板,不过我更喜欢两个面板,顶部一个标准面板,底部一个常用程序的停靠面板。 +[最新版本的Xubuntu][10]在顶部包含一个单独的面板,不过我更喜欢双面板,顶部一个标准面板,底部一个常用程序的停靠面板。 需要注意的是,XFCE桌面菜单系统和Xubuntu的菜单有些差异,除非你安装[一个更好的菜单系统][11],设置两个面板或许是个更好的选择。 @@ -117,7 +118,7 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 如果你想全都使用Xubuntu的东西,但是又不想按照那些介绍重新安装系统的话,看看下面的东西。 -通过搜索“TERM”,或者组合键CTRL+ALT+T,打开一个终端窗口。 +通过搜索“TERM”,或者组合键`CTRL+ALT+T`,打开一个终端窗口。 在终端输入如下命令: @@ -132,16 +133,17 @@ Xubuntu就像一个改装过的跑车。你可以把它改装成任何你想要 Xubuntu桌面就会显示出来啦。 -这里会有一些差异。菜单仍然是XFCE菜单,而不是Xubuntu菜单。某些图标也不会出现在顶部面板中。但是这些问题都不足以让我们花时间卸载Ubuntu然后重装Xubuntu。 +这里会有一些差异。菜单仍然是XFCE菜单,而不是Xubuntu菜单。某些图标也不会出现在顶部面板中。但是这些小问题都不足以让我们花时间卸载Ubuntu然后重装Xubuntu。 下一篇文章中,我会介绍如何自定义Xubuntu以及XFCE桌面。 +----- via : http://linux.about.com/od/dist/fl/Ubuntu-With-XFCE-vs-Xubuntu-Linux.htm 作者:[Gary Newell][a] 译者:[zhouj-sh](https://github.com/Zhouj-sh) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md similarity index 73% rename from translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md rename to published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md index da72d8527b..e8b97a3f0d 100644 --- a/translated/tech/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md +++ b/published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md @@ -1,8 +1,8 @@ -Linux有问必答时间--如何查看Linux系统的CPU信息 +Linux有问必答:如何查看Linux系统的CPU信息 ================================================================================ > **问题**: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么? -根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名、模型名、时钟频率、套接字/内核的数量, L1/L2/L3缓存配置、可用的处理器能力(比如:硬件虚拟化、AES, MMX, SSE)等等。在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息。 +根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名、模型名、时钟频率、插槽/内核的数量, L1/L2/L3缓存配置、可用的处理器能力(比如:硬件虚拟化、AES, MMX, SSE)等等。在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息。 ### 1. /proc/cpuinfo ### @@ -12,7 +12,7 @@ Linux有问必答时间--如何查看Linux系统的CPU信息 ![](https://farm8.staticflickr.com/7572/15934711577_4136a8e0b9_c.jpg) -通过查看这个文件,你能[识别出][1]物理处理器数、每个CPU核心数、可用的CPU标志寄存器以及其它东西的数量。 +通过查看这个文件,你能[识别出][1]物理处理器数(插槽)、每个CPU核心数、可用的CPU标志寄存器以及其它东西的数量。 ### 2. cpufreq-info ### @@ -32,7 +32,7 @@ cpuid命令的功能就相当于一个专用的CPU信息工具,它能通过使 ### 4. dmidecode ### -dmidecode命令直接从BIOS的DMI(译者注:桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU标志寄存器、最大/最近的时钟速度、(所允许的)核心总数、L1/L2/L3缓存配置等等。 +dmidecode命令直接从BIOS的DMI(桌面管理接口)数据收集关于系统硬件的具体信息。CPU信息报告包括CPU供应商、版本、CPU标志寄存器、最大/当前的时钟速度、(启用的)核心总数、L1/L2/L3缓存配置等等。 $ sudo dmidecode @@ -54,7 +54,7 @@ i7z是一个专供英特尔酷睿i3、i5和i7 CPU的实时CPU报告工具。它 ![](https://farm8.staticflickr.com/7546/15534687744_1968dc2b18_c.jpg) -### 8. likwid-topology ### +### 8. likwid拓扑 ### [likwid][3] (Like I Knew What I'm Doing) 是一个用来测量、配置并显示硬件相关特性的命令行收集工具。其中的likwid拓扑结构能显示CPU硬件(线程/缓存/NUMA)的拓扑结构信息,还能识别处理器家族(比如:Intel Core 2, AMD Shanghai)。 @@ -70,7 +70,7 @@ lscpu命令用一个更加用户友好的格式统计了 /etc/cpuinfo 的内容 ### 10. lshw ### -**lshw**命令是一个综合性硬件查询工具。不同于其它工具,lshw需要root特权才能运行因为它是在BIOS系统里查询DMI(译者注:桌面管理接口)信息。它能报告总核心数和可用核心数,但是会遗漏掉一些信息比如L1/L2/L3缓存配置。GTK版本的lshw-gtk也是可用的。 +**lshw**命令是一个综合性硬件查询工具。不同于其它工具,lshw需要root特权才能运行,因为它是在BIOS系统里查询DMI(桌面管理接口)信息。它能报告总核心数和可用核心数,但是会遗漏掉一些信息比如L1/L2/L3缓存配置。GTK版本的lshw-gtk也是可用的。 $ sudo lshw -class processor @@ -78,7 +78,7 @@ lscpu命令用一个更加用户友好的格式统计了 /etc/cpuinfo 的内容 ### 11. lstopo ### -lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组成的拓扑结构可见。这个命令用来识别处理器结构和系统的NUMA拓扑结构。 +lstopo命令 (包括在 [hwloc][4] 包中) 以可视化的方式组成 CPU、缓存、内存和I/O设备的拓扑结构。这个命令用来识别处理器结构和系统的NUMA拓扑结构。 $ lstopo @@ -86,7 +86,7 @@ lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组 ### 12. numactl ### -其被开发的起初是为了设置NUMA的时序安排和Linux处理器的内存布局策略,numactl命令也能通过命令行来展示关于CPU硬件的NUMA拓扑结构信息。 +最初其被开发的目的是为了设置NUMA的时序安排和Linux处理器的内存布局策略,numactl命令也能通过命令行来展示关于CPU硬件的NUMA拓扑结构信息。 $ numactl --hardware @@ -94,7 +94,7 @@ lstopo命令 (包括 [hwloc][4] 包) 使由CPU、缓存、内存和I/O设备组 ### 13. x86info ### -x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信息报告包括CPU型号、线程/核心数、时钟速度、TLB(译者注:传输后备缓冲器)缓存配置、支持的特征标志寄存器等等。 +x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信息报告包括CPU型号、线程/核心数、时钟速度、TLB(传输后备缓冲器)缓存配置、支持的特征标志寄存器等等。 $ x86info --all @@ -105,7 +105,7 @@ x86info是一个为了展示基于x86架构的CPU信息的命令行工具。信 via: http://ask.xmodulo.com/check-cpu-info-linux.html 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md new file mode 100644 index 0000000000..e83de0ff93 --- /dev/null +++ b/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md @@ -0,0 +1,56 @@ +Linux 有问必答:如何使用yum来下载RPM包而不进行安装 +================================================================================ +> **问题**:我想从Red Hat 的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? + +yum是基于Red Hat的系统(如CentOS、Fedora、RHEl)上的默认包管理器。使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系。但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上。 + +这里说明了如何从yum仓库上下载一个RPM包。 + +### 方法一:yum### + +yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了`--downloadonly(只下载)`的选项来达到这个目的。 + + $ sudo yum install --downloadonly + +默认情况下,一个下载的RPM包会保存在下面的目录中: + + /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages + +以上的[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates) + +如果你想要将一个包下载到一个指定的目录(如/tmp): + + $ sudo yum install --downloadonly --downloaddir=/tmp + +注意,如果下载的包包含了任何没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装。 + +另外一个重要的事情是,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用`--downloadonly`命令选项: + + $ sudo yum install yum-plugin-downloadonly + +如果没有该插件,你会在使用yum时得到以下错误: + + Command line error: no such option: --downloadonly + +![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) + +### 方法二: Yumdownloader### + +另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader。 这个工具是yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集。 + + $ sudo yum install yum-utils + +下载一个RPM包: + + $ sudo yumdownloader + +下载的包会被保存在当前目录中。你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。 + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/yum-download-rpm-package.html + +译者:[theo-l](https://github.com/theo-l) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md b/published/20150126 How To Kill All Processes Of A Specific User With slay.md similarity index 83% rename from translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md rename to published/20150126 How To Kill All Processes Of A Specific User With slay.md index 897c4c16c7..77a8441323 100644 --- a/translated/tech/20150126 How To Kill All Processes Of A Specific User With slay.md +++ b/published/20150126 How To Kill All Processes Of A Specific User With slay.md @@ -1,4 +1,4 @@ -如何用‘slay’杀掉指定用户的所有进程 +用‘slay’干掉某个用户的所有进程 ================================================================================ **slay** 是**Chris Ausbrooks**写的一款用于杀掉指定用户所有运行进程的命令行工具。slay对系统管理员而言在找出那些不应该运行进程的用户是很有用的。 @@ -31,19 +31,19 @@ slay在大多数发行版中都有官方仓库。 ~ sudo slay amitooo slay: Done. -![](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/slay-amitoo-kpenee.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/slay-amitoo-kpenee.png) 当slay运行完成后,你应该就可以看到反馈了。 -享受吧。 +爽吧?! -------------------------------------------------------------------------------- via: http://www.unixmen.com/kill-processes-specific-user-slay/ -作者:[ Enock Seth Nyamador][a] +作者:[Enock Seth Nyamador][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/talk/20150127 Windows 10 versus Linux.md b/published/20150127 Windows 10 versus Linux.md similarity index 100% rename from translated/talk/20150127 Windows 10 versus Linux.md rename to published/20150127 Windows 10 versus Linux.md diff --git a/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md similarity index 71% rename from translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md rename to published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md index db2ae3c05a..7a12be0642 100644 --- a/translated/tech/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md +++ b/published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md @@ -1,14 +1,14 @@ 如何用wifi-linux检测AP信号强度 ================================================================================ -作为一名python极客,我喜欢在github上发现新的针对linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具。 +作为一名python极客,我喜欢在github上挖掘新的用于linux用户的python工具。今天我发现了一款用python写成的用于检测AP信号强度的工具:wifi-linux。 我已经在**wifi-linux**上实验了大约两个小时,并且它工作的很好但是我希望在不久的将来在作者那里看到一些单元测试,因为命令**plot**无法在我的电脑上工作,并且会导致一些问题。 ### 什么是wifi-linux ### -根据github作者账号的官方的offical readme.md文件, wifi-linux是一个简单的收集你周围AP的RSSI信息的python脚本,它还会画出RSSI活动图形。 +根据github上作者账号的官方的 readme.md文件, wifi-linux是一个简单的收集你周围AP的RSSI信息的python脚本,它还会画出RSSI活动图形。 -,这同样可以用命令plot生成,但是不幸的是,这对我不可行。wifi-linux支持其他的命令,比如**bp** 来加入一个断点,**print**会打印一些统计和**启动开关**。 +作者说可以在该程序中可以使用plot命令绘制RSSI 活动图形,但是不幸的是,这对我不可行。wifi-linux也支持其他的命令,比如**bp** 来加入一个断点,**print**会打印一些统计和**启动开关**。 wifi-linux程序有下面这些依赖: @@ -19,15 +19,15 @@ wifi-linux程序有下面这些依赖: ### 安装wifi-linux需要的包 ### -我怕尝试使用python包管理工具pip安装python-dbus但是失败了,因为pip会查找setup.py,但是python-dbus中没有。因此下面的命令不工作。 +我尝试使用python包管理工具pip安装python-dbus但是失败了,因为pip会查找setup.py,但是python-dbus中没有。因此下面的命令不工作。 pip install dbus-python -你可以试一下但是很有可能会在终端中下面的错误。 +你可以试一下但是很有可能会在终端中出现下面的错误。 IOError: [Errno 2] No such file or directory: '/tmp/pip_build_oltjano/dbus-python/setup.py' -我该怎么解决这个问题呢?很简单,用下面命令中的系统包管理工具安装Python DBUS。 +我该怎么解决这个问题呢?很简单,用下面命令中的系统包管理工具来安装Python DBUS。 sudo apt-get install python-dbus @@ -69,7 +69,7 @@ wifi-linux程序有下面这些依赖: ![the bp command in wifi-linux](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux2.png) -命令**print**可以用于显示你机器的状态。下面就是一个例子。 +命令**print**可以用于在终端上显示你机器的状态。下面就是一个例子。 ![the print command](http://blog.linoxide.com/wp-content/uploads/2015/01/wifi-linux3.png) @@ -79,7 +79,7 @@ via: http://linoxide.com/linux-how-to/monitor-access-point-signal-strength-wifi- 作者:[Oltjano Terpollari][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/tech/20150209 How to back up a Debian system using backupninja.md b/published/20150209 How to back up a Debian system using backupninja.md similarity index 53% rename from translated/tech/20150209 How to back up a Debian system using backupninja.md rename to published/20150209 How to back up a Debian system using backupninja.md index b58baa3bdc..33e95473af 100644 --- a/translated/tech/20150209 How to back up a Debian system using backupninja.md +++ b/published/20150209 How to back up a Debian system using backupninja.md @@ -1,10 +1,10 @@ -如何使用 backupninja 来备份一个 Debian 系统 +如何使用 backupninja 来备份 Debian 系统 ================================================================================ -面临灾难时的小心谨慎或体验可以教会每一个系统管理采取频繁的系统备份的重要性。你可以通过编写存在已久的管用的 shell 脚本,或使用一个(或多个) 适合这项工作的备份工具来完成备份任务。因此,当你要实施一个备份解决方案时,你了解的备份工具越多,你做出的决策就会越明智。 +小心谨慎或灾难体验会让每一个系统管理都认识到频繁的系统备份的重要性。你可以通过编写管用的旧式 shell 脚本,或使用一个(或几个)适合这项工作的备份工具来完成备份任务。因此,当你要实施一个备份解决方案时,你了解的备份工具越多,你做出的决策就会越明智。 -在这篇文章中,我们将为你介绍 [backupninja][2] ,一个轻量且易于配置的系统备份工具。在诸如 **rdiff-backup**, **duplicity**, **mysqlhotcopy** 和 **mysqldump** 等程序的帮助下, Backupninja 可以提供常用的备份功能,如执行远程的、安全的和增量式的文件系统备份,加密备份以及 MySQL/MariaDB 数据库备份。你可以选择性地开启使用 email 进行状态报告功能,也可以对一般的硬件和系统的信息进行备份。 backupninja 的一个关键功能是它拥有一个内建的基于控制台的向导程序(被称为 **ninjahelper**),而后者允许你为不同的备份情景轻松地创建配置文件。 +在这篇文章中,我们将为你介绍 [backupninja][2] ,这是一个轻量且易于配置的系统备份工具。在诸如 **rdiff-backup**, **duplicity**, **mysqlhotcopy** 和 **mysqldump** 等程序的帮助下, Backupninja 可以提供常用的备份功能,如执行远程的、安全的和增量式的文件系统备份,加密备份以及 MySQL/MariaDB 数据库备份。你可以选择性地开启使用 Email 状态报告功能,也可以对一般的硬件和系统的信息进行备份。 backupninja 的一个关键功能是它拥有一个内建的基于控制台的向导程序(被称为 **ninjahelper**),而后者允许你为不同的备份情景轻松地创建配置文件。 -如果非要说的话,backupninja 的缺点是:为了充分使用其所有的功能,它要求一些其他“助手”程序已经被安装在了计算机中。尽管 backupninja 有针对基于 Red Hat(红帽) 的发行版本的 RPM 安装包,但 backupninja 针对 Debian 和它的衍生发行版本的依赖进行了优化。所以不建议在基于 Red Hat 的系统上尝试 backupninja 。 +如果非要说的话,backupninja 的缺点是:为了充分使用其所有的功能,它要求安装一些其他“助手”程序。尽管 backupninja 有针对基于 Red Hat(红帽)的发行版本的 RPM 安装包,但 backupninja 针对 Debian 及其衍生发行版本的依赖进行了优化。所以不建议在基于 Red Hat 的系统上尝试 backupninja 。 在这篇教程中,我们将介绍如何在基于 Debian 的发行版本上安装 backupninja 。 @@ -16,17 +16,17 @@ 在安装的过程中,有几个文件和目录将被创建: -- **/usr/sbin/backupninja** 是 bash shell 主脚本; -- **/etc/cron.d/backupninja**, 默认情况下,构建 cron 任务来每隔一个小时运行上面的主脚本; -- **/etc/logrotate.d/backupninja** 处理由 backupninja 程序产生的日志;(注:我不知道这里的 rotate 该如何翻译) +- **/usr/sbin/backupninja** 是个 bash shell 的主脚本; +- **/etc/cron.d/backupninja**, 默认情况下,设置 cron 任务来每隔一个小时运行上面的主脚本; +- **/etc/logrotate.d/backupninja** 截断由 backupninja 程序产生的日志; - **/etc/backup.d/** 是备份操作的配置文件驻留的目录; - **/etc/backupninja.conf** 是包含一般选项的主配置文件。这个文件带有良好的注释且详细解释了每个选项的含义; -- **/usr/share/backupninja** 是那些被 backupninja 使用的脚本所处的目录。这些脚本文件负责执行实际的工作。在这个目录中,你还可以找到 `.helper` 文件,它们可以被用来配置和设定 ninjahelper 的菜单; -- **/usr/share/doc/backupninja/examples** 含有操作配置文件(即通过 ninjahelper 产生的文件)的模板。 +- **/usr/share/backupninja** 是那些 backupninja 所使用的脚本所处的目录。这些脚本文件负责执行实际的工作。在这个目录中,你还可以找到 `.helper` 文件,它们可以被用来配置和设定 ninjahelper 的菜单; +- **/usr/share/doc/backupninja/examples** 含有操作配置文件(即通过 ninjahelper 产生的文件)的模板。 ### 首次运行 Ninjahelper ### -当我们尝试启动 ninjahelper 时,我们可以看到一个内部依赖可能会被需要。假如系统进行了提示,请输入 “yes” 并敲下回车键来安装 dialog(一个用于从 shell 脚本中显示友好对话框的工具)。 +当我们尝试启动 ninjahelper 时,我们可以看到可能需要一个内部依赖程序。假如系统进行了提示,请输入 “yes” 并敲下回车键来安装 dialog(一个用于从 shell 脚本中显示友好对话框的工具)。 ![](https://farm8.staticflickr.com/7537/15700597667_6618fbc142_z.jpg) @@ -44,11 +44,11 @@ ![](https://farm8.staticflickr.com/7508/15700315139_4c6117ef32_z.jpg) -接下来的一步需要你选取相关条目来作为此次备份任务的一部分。前四个条目已经默认被选上了,但你可以通过按空格键来撤消选择。 +接下来的一步需要你选取相关条目来作为此次备份任务的一部分。前四个条目已经默认被选上了,但你可以通过在条目上按空格键来撤消选择。 ![](https://farm8.staticflickr.com/7507/15699051870_65abaf52e5_z.jpg) -一旦你完成了上面的步骤,按 OK 选项来继续。接着你将能够选择 是愿意使用默认的配置文件(/etc/backup.d/10.sys)来完成这次备份操作,还是创建一个新的配置文件。若为后者,一个含有与默认配置文件内容相同的文件将会在相同的目录下被创建,但它被命名为 11.sys,后续的备份操作将会创建类似的文件(注:只不过命名的序号不同)。需要说明的是一旦这个新的配置文件被创建,你便可以使用你喜爱的文本编辑器来编辑该文件。 +一旦你完成了上面的步骤,按 OK 选项来继续。接着你将能够选择是愿意使用默认的配置文件(/etc/backup.d/10.sys)来完成这次备份操作,还是创建一个新的配置文件。若为后者,一个含有与默认配置文件内容相同的文件将会在相同的目录下被创建,但它被命名为 11.sys,后续的备份操作将会创建类似的文件(注:只不过命名的序号不同)。需要说明的是一旦这个新的配置文件被创建,你便可以使用你喜爱的文本编辑器来编辑该文件。 ![](https://farm9.staticflickr.com/8654/15885715072_1e6126e929_o.png) @@ -56,7 +56,7 @@ 正如你最有可能知道的那样, rsync 被广泛地用于通过网络同步文件或文件夹。在接下来的例子中,我们将讨论一个使用硬链接来为一个远程目录做增量式拉取备份的方法,它被用来保存历史数据以及在我们本地的文件服务器中恢复这些历史数据。这个方法将帮助我们节省空间并增强位于服务器端的安全性。 -**步骤 1**:编写一个位于 `/etc/backup.d`的带有如下内容的自定义脚本,并将它的权限设置为 600 。需要说明的是,除了一般的配置文件,这个目录可能还包含当 backupninja 被执行时你想运行的一些脚本文件,它们可以发挥出位于主配置文件中的变量的优势。 +**步骤 1**:编写一个带有如下内容的自定义脚本,放在 `/etc/backup.d`,并将它的权限设置为 600 。需要说明的是,除了一般的配置文件,这个目录可能还包含当 backupninja 执行时你想运行的一些脚本文件,它们可以发挥出位于主配置文件中的变量的优势。 # REMOTE USER user=root @@ -72,36 +72,37 @@ # RSYNC rsync -av --delete --recursive --link-dest=$localdirold $user@$host:$remotedir $localdir -在上面的配置中, rsync 的 ‘--link-dest’ 选项的作用是为位于 $localdir-old 目录中那些没有改变的文件(包含所有属性) 硬链接到目标目录 ($localdir)。 +在上面的配置中, rsync 的 ‘--link-dest’ 选项的作用是为位于 $localdir-old 目录中那些没有改变的文件(包含所有属性) 硬链接到目标目录($localdir)。 -**步骤 2**:在 backupninja 第一次运行之前,上层目录(这个例子中指的是 /home/gacanepa) 是空的。第一次我们执行下面的命令: +**步骤 2**:在 backupninja 第一次运行之前,上层目录(这个例子中指的是 /home/gacanepa) 是空的。第一次我们执行下面的命令: # backupninja -n backup.0 目录就被创建了,并在接下来的过程中,它的名称将会被更改为 backup.1。 -当我们第二次运行 backupninja 时, backup.0 将会被重新创建,而 backup.1 被保留。 +当我们第二次运行 backupninja 时, backup.0 将会被重新创建,而 backup.1 保持不动。 ![](https://farm8.staticflickr.com/7581/15700597497_0e0cd89ab9.jpg) -**步骤 3**: 确保 backup.1 里面的文件硬链接到 backup.0 里的文件,我们可以通过比较文件的 inode( i 节点) 数和目录的大小来达到此目的。 +**步骤 3**: 确保 backup.1 里面的文件硬链接到 backup.0 里的文件,我们可以通过比较文件的 inode(i 节点)数和目录的大小来达到此目的。 ![](https://farm9.staticflickr.com/8636/15700315029_e922ce771b.jpg) ### 总结 ### -Backupninja 不仅是一个经典的备份工具,它也是一个易于配置的实用程序。你可以通过编写你自己的 handler(注:我不知道该如何翻译 handler 这个单词) 来运行 backupninja 并将它们作为位于 `/etc.backup.d` 的个人配置文件。甚至你还可以为 ninjahelper 编写助手程序,以达到将它们包括在 ninjahelper 的主界面上。 +Backupninja 不仅是一个经典的备份工具,它也是一个易于配置的实用程序。你可以通过编写你自己的控制脚本,用放在 `/etc.backup.d` 中的不同的配置文件来运行 backupninja 。甚至你还可以为 ninjahelper 编写助手程序,并将其包括在 ninjahelper 的主界面上。 -例如,假如你在 `/usr/share/backupninja`目录中创建了一个名为 modulo 的 handler,它将自动运行那些位于 `/etc/backup.d` 目录中以 .xmodulo 为后缀的每个文件。如果你决定添加你的 xmodulo handler 到 ninjahelper 中, 你可以编写相应的助手程序,即 xmodulo.helper 。另外,假如你想 让 backupninja 运行任意一个脚本,只需把它添加到 `/etc/backup.d` 目录中,这样你的目的便可以达到了。 +例如,假如你在 `/usr/share/backupninja`目录中创建了一个名为 xmodulo 的控制脚本,它将自动运行那些位于 `/etc/backup.d` 目录中以 .xmodulo 为后缀的每个文件。如果你决定添加你的 xmodulo 控制脚本到 ninjahelper 中, 你可以编写相应的助手程序,即 xmodulo.helper 。另外,假如你想 让 backupninja 运行其它的脚本,只需把它添加到 `/etc/backup.d` 目录中就可以了。 欢迎使用下面的评论框来留下你的评论、问题或建议。听到你的回应将会使我们很高兴。 + -------------------------------------------------------------------------------- via: http://xmodulo.com/backup-debian-system-backupninja.html 作者:[Gabriel Cánepa][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md similarity index 53% rename from translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md rename to published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md index fc5d48aad4..5def58511a 100644 --- a/translated/talk/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md +++ b/published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md @@ -1,85 +1,100 @@ -预见我们将会在2015年及之后的Linux游戏 -================================================================================他们说Linux游戏开发已经死了,已经变得毫无意义...随他们说去吧.一起看看2015甚至以后会为我们带来什么游戏. +Linux 游戏之 2015 动向 +================================================================================ +他们说Linux游戏开发已经死了,已经变得毫无意义…… 随他们说去吧。一起看看2015甚至以后会为我们带来什么Linux游戏。 -真的很难跟上为我们出现的每一样事物,但是可以快速浏览一下我们将会看到的变化. +真的很难跟得上扑面而来的各种形形色色的新事物,但是可以快速浏览一下我们将会看到的变化。 ### 已确认的游戏 ### #### 冒险游戏 #### -- [看火人][1] -- [失落的天堂:初探][2] -- [蒸汽世界:浩劫][3] +- [看火人(Firewatch)][1] +- [失落的天堂:初探(Paradise Lost: First Contact)][2] +- [时空英豪 1.1(Outcast 1.1)][42] +- [蒸汽世界:浩劫(SteamWorld Heist)][3] #### 动作游戏 #### -- [暗黑血统][4] -- [暗黑血统2][5] -- [尸人的世界][6] -- [骷髅女孩][7] +- [暗黑血统(Darksiders)][4] +- [暗黑血统 2(Darksiders 2)][5] +- [尸人的世界(Ray's The Dead)][6] +- [骷髅女孩(Skullgirls)][7] #### 第一人称游戏 #### -- [生化奇兵:永恒][8] -- 半条命 3 /troll      #此处troll不知道如何翻译 -- [烽火家园:革命][9] -- [杀戮空间 2][10] -- 英雄萨姆 4(目前无官方站点) -- [联合风暴][11] -- [烈火击杀][12] +- [生化奇兵:永恒(Bioshock Infinite)][8] +- 半条命 3 /troll (Half Life 3 /troll)    +- [烽火家园:革命(Homefront: The Revolution)][9] +- [叛变(Insurgency)][43] +- [杀戮空间 2(Killing Floor 2)][10] +- 英雄萨姆 4(Serious Sam 4)(目前无官方站点) +- [联合风暴(Storm United)][11] +- [烈火击杀(SUPERHOT)][12] #### 平台游戏 #### -- [武装原型][13] -- [峡谷][14] #此处游戏名尚不确定 -- [吉安娜姐妹][15] -- [心之所向:Alicia][16] -- [ ][17] #此处游戏名未知 -- [无限工厂][18] -- [无敌9号][19] -- [林中之夜][20] -- [夜][21] -- [奇异的世界:新鲜可口][22] -- [真红女神][23] +- [武装原型(Broforce)][13] +- [峡谷(Chasm)][14] #此处游戏中文名尚不确定 +- [吉安娜姐妹(Giana Sisters)][15] +- [心之所向:Alicia(Heart Forth, Alicia)][16] +- [热铁皮屋顶(Hot Tin Roof)][17] +- [无限工厂(Infinifactory)][18] +- [无敌9号(Mighty No. 9)][19] +- [林中之夜(Night in the Woods)][20] +- [夜(Noct)][21] +- [奇异的世界:新鲜可口(Oddworld: New 'N' Tasty)][22] +- [真红女神(Red Goddess)][23] + +#### 赛车游戏 #### + +- [赛车计划(Project Cars)][44] +- [死亡赛车:再生(Carmageddon: Reincarnation)][45] #### 角色扮演游戏 #### -- [神界:原罪][24] -- [永恒之柱][25] -- [暗影狂奔:香港][26] -- [旗帜的传说][27] +- [神界:原罪(Divinity: Original Sin)][24] +- [永恒之柱(Pillars Of Eternity)][25] +- [暗影狂奔:香港(Shadowrun: Hong Kong)][26] +- [旗帜的传说(The Banner Saga)][27] +- [镇魂曲:遗器之潮(Torment: Tides of Numenera)][46] #### 策略游戏 #### -- [奇迹时代3][28] -- [放逐之城][29] -- [城:天际][30] -- [发条帝国][31] -- [][32] -- [卷轴][33] -- [太空海盗和僵尸 2][34] +- [奇迹时代3(Age of Wonders III)][28] +- [At The Gates][47] # 尚无中文名 +- [放逐之城(Banished)][29] +- [城:天际(Cities: Skylines)][30] +- [发条帝国(Clockwork Empires)][31] +- [Parkitect][32] # 尚无中文名 +- [卷轴(Scrolls)][33] +- [太空海盗和僵尸 2(Space Pirates And Zombies 2)][34] #### 沙盒游戏 #### -- [泰拉瑞亚][35] -- [X 重生][36] +- [泰拉瑞亚(Terraria)][35] +- [X 重生(X Rebirth)][36] -#### 不太确认,不过可能性高 #### +#### 体育游戏 #### -- [英雄连][37] -- [逃生][38] -- [影子武士][39] -- [火炬之光 2][40] +- [惊爆美国棒球16(Out of the Park Baseball 16)][48] -然而有两个来自Feral Interactive的,由于不知道他们是什么,所以没有列举出来. +### 不太确认,不过可能性高 ### -我们猜测Aspyr也在准备新的大制作,但是他们仅仅发布了他们最新的游戏,所以可能要等上几个月我们才能看到些什么. +- [英雄连 2(Company of Heroes 2)][37] +- [逃生(Outlast)][38] +- [影子武士(Shadow Warrior)][39] +- 无光之海 - 其开发商试验性地构建 Linux 版本,不过这要取决于他们的 Windows 版本的销售情况(据邮件沟通信息) +- [火炬之光 2(Torchlight II)][40] -当然,** 这不是完整的列表 **,我们会轻易忘记巨量的游戏正在走向我们,哇,如此丰富的列表. +然而有[两个来自Feral Interactive的移植大作][49],由于不知道他们是什么,所以没有列举出来。 -下个月就是游戏开发者大会,我们也期待一些改变发生.然而,我们没有什么确切的东西,对于Valve与Steam Machines的合作,我们期待至少会增加一些Linux游戏,否则,如我们担心,炫耀一些过时的游戏会让Valve脸上无光. +我们猜测Aspyr也在准备新的大制作,但是他们仅仅发布了他们最新的游戏,所以可能要等上几个月我们才能看到些什么。 -你怀念Linux的哪些地方曾让你兴奋? +当然,** 这不是完整的列表 **,我们会轻易忘记如此多的游戏正在走向我们,哇,如此丰富的列表。 + +我们也期待 GDC 2015 上有一些改变,然而,我们没有什么确切的东西,对于Valve与Steam Machines的合作,我们期待至少会增加一些Linux游戏,否则,如我们担心,炫耀一些过时的游戏会让Valve脸上无光。 + +希望我们没有错过那些 Linux 中让你感到兴奋的东西! -------------------------------------------------------------------------------- @@ -87,7 +102,7 @@ via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-se 作者:[liamdawe][a] 译者:[wi-cuckoo](https://github.com/wi-cuckoo) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -132,5 +147,12 @@ via: http://www.gamingonlinux.com/articles/a-look-at-what-linux-games-we-will-se [38]:https://www.gamingonlinux.com/articles/outlast-that-really-scary-game-looks-like-its-still-heading-to-linux.4896 [39]:https://www.gamingonlinux.com/articles/shadow-warrior-looks-like-it-will-come-to-linux.4859 [40]:https://www.gamingonlinux.com/articles/torchlight-ii-has-even-more-positive-signs-for-linux.4817 -[41]:http://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ - +[41]:https://www.gamingonlinux.com/articles/feralinteractive.com/en/upcoming/ +[42]:https://www.gamingonlinux.com/articles/outcast-a-real-classic-has-been-revamped-and-linux-is-planned.4736 +[43]:https://www.gamingonlinux.com/articles/insurgency-fps-is-waiting-on-valve-so-it-can-come-to-linux-updated.4564 +[44]:http://projectcarsgame.com/ +[45]:https://www.gamingonlinux.com/articles/carmageddon-reincarnations-jason-garber-answers-our-questions-on-their-linux-support.3380 +[46]:https://www.gamingonlinux.com/articles/torment-tides-of-numenera-new-video-looks-absolutely-stunning.4320 +[47]:http://www.atthegatesgame.com/info +[48]:http://www.ootpdevelopments.com/newsletters/nl0154/ +[49]:http://feralinteractive.com/en/upcoming/ \ No newline at end of file diff --git a/published/20150309 10 best uses for open source software in the business world.md b/published/20150309 10 best uses for open source software in the business world.md new file mode 100644 index 0000000000..82b5c89956 --- /dev/null +++ b/published/20150309 10 best uses for open source software in the business world.md @@ -0,0 +1,85 @@ +10种将开源用于商业的最佳途径 +=============================================================================== +> 开源为大大小小的商业带来了一些显著的效益 -- 但是你可能会对某些用途感到惊讶。 + +![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) + +技术上已经发生了一些必然性的改变。举个例子,开源软件以它的方式进入到了你的工作之中。10 年前,这也许还能称为一个问题。现在呢?则已经无法避免开源技术的使用 -- 也没有理由要去避免。有如此多强大(和必需的)的方方面面技术,开源在许多方面已经成为了技术的救世主。但是你哪一块的工作最适合开源软件呢?当然,这个问题的答案会因公司而异。然而许多的应用几乎可以适用于每个场景中。 + +让我们来看看这10种可能是最佳的使用方法,它们可以帮助你的公司成长,带给你从未体验过的灵活性与可靠性,或者仅仅是帮你节省一笔可观的预算。 + +### 1: 服务器软件 ### + +如果你还在微软的 IIS 平台苦苦挣扎,那么你需要体验一下 Apache。这款旗舰级开源软件是这个星球上使用最广泛的网页服务器软件之一。Apache 免费、极其可靠、易于管理,而且不像 IIS 一样需要大量的资源。然而,开源并不局限于网页服务器。如果你需要在公司内使用 SMB 来共享资源,可以试试 Samba, Samba 4甚至集成了活动目录(AD),所以你不需要担心在Samba服务器上建立单独的用户账号。 + +### 2: 开发 ### + +用开源开发是很简单的事。PHP,Rails,Perl -- 开源上面的开发语言和开发的工具(从集成开发环境到调试)都很多。为开源或者开源工具做开发可以有很多种选择(如同使用商业软件开发一样)。开源软件与商业软件最大的不同之处在于开源可以接触到软件源代码。在自由开源软件(FOSS,free open source software)的世界里,代码都是公开的。对许多开发者来说,Linux操作系统有他们开发和构建所需要的一切(特别那些没有一个成熟环境来写代码的人而言)。如果你需要图形用户界面(GUI)的开发工具,开源也能满足你。 + +### 3: 安全 ### + +通往安全的道路是充满挑战的,但还是很多途径可以达到。你可以选择“安全盒子”的解决方案,跟随Cisco(一个可靠的解决方案)的节奏,或者你可以借助iptables打造最适合你需求的安全。是的,开源的安全之路会需要更多的时间去配置(有很高的学习壁垒),但是结果通常是不错的。这里甚至不强调一种观点,就一般来说,在桌面上使用开源比起大多数封闭的系统而言是一个更安全的平台。在桌面上部署Linux,你的安全痛点会大大降低。 + +### 4: 桌面 ### + +Linux 桌面是大多数人不认可的地方。尽管如此,你必须考虑一个事实,那就是你每天的工作流程已经经历了一个主要的思维模式的转换。我们现在做的大部分事情都是通过网络浏览器。那么为什么不将Linux部署到桌面上呢?不但可以能做如今要做的许多工作,而且不用遭受病毒,恶意软件和能破坏系统的更新。它不完美 -- 但哪个平台敢说完美?但是它很强大,最后,还可以节省你的开支。这是一个双赢的结局。 + +### 5: 工作流程 ### + +每一种工作都依赖于工作流程。对于某些工作来说,一个流畅的工作流程又取决于所用的工具。开源已经登上这个舞台了。CRM(客户关系管理),HRM(人力资源管理),ERP(企业资源计划),BI(商业智能),BPM(业务流程管理) …… 只要你叫得出名字,开源就可以做到几乎你能想到的每一种可能 -- 并且干得不错。借助于[Pentaho][1], [Collabtive][2]和[SugarCRM][3], 开源可以在任何时候与最新的源工具保持同步。 + +### 6: 协作 ### + +没有一起合作项目的能力,你的员工就不能干好工作。所以你选择的协作工具是十分重要的。你会在开源的世界里发现大量的优质协作工具。[Cyn.in 社区版][4], [Zimbra 开源版][5]和[Kolab][6]都是不错的协作工具,但这仅仅是开源世界里的三个代表而已。 + +### 7: 大数据 ### + +以前说到大数据的时候,往往不会想到开源。多亏了[SUSE][7]的努力,大数据和开源现在可以携手共进了。许多如内存数据和内核热补丁的发明创建,使得开源成为大数据一个理想的解决方案。它可以完美地满足大数据在平台上所需的大量要求,而封闭的软件则达不到如此灵活的水平。 + +### 8: 云 ### + +云的主要玩家都是开源的。[Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- 他们都提供云服务,而且认为开源是云配置的最好解决方案。但是,如果你不想用大公司的服务,仍然有很多后起之秀如[OwnCloud][13],你可以选择OwnCloud的托管云方案,或者建立自己的一套。 + +### 9: 多媒体 ### + +如果你的公司做播客或为产品发布制作视频,开源可以为你提供服务。借助像[Audacity][14]和[OpenShot][15]这样的工具,你可以对音频和视频做你需要的任何处理 -- 而且十分的廉价。实际上,你会感觉到很难再去找到比Audacity更好的播客工具,或者比OpenShot更易用的视频编辑器。没有太大的学习壁垒,或者闭源软件工具所要求的高额费用,开源的软件在帮助你创造专业水准的作品方面已经做得很好了。 + +### 10: 电子商务 ### + +如果你做在线销售,如果不尝试一下像[PrestaShop][16]之类的工具,你就太懈怠了。PrestaShop是最强大的电子商务解决方案之一,易于获取 -- 不需要许可证。 PrestaShop有你可能想要的所有功能(而且有些你可能都没有想过),这个开源平台已经在任何水平上超出了电子商务的范畴。 + +### FOSS 之于商业 ### + +开源已经不再局限于商业交流的范围了。在许多情况下,FOSS已经主导这种交流。如果你已经在寻找将开源解决方案运用的领域,看上面的10条就行了。 + +### 该你了 ### + +你已经将开源用到你的工作中了吗?如果是,属于哪一条方法呢? + +------------------------------------------------------------------------------- + +via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ + +作者:[Jack Wallen][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.techrepublic.com/search/?a=jack+wallen +[1]:http://community.pentaho.com/ +[2]:http://collabtive.o-dyn.de/ +[3]:http://www.sugarcrm.com/ +[4]:http://cynapse.com/cyn-in/ +[5]:https://www.zimbra.com/open-source +[6]:http://kolab.org/ +[7]:http://www.suse.org/ +[8]:http://www.redhat.com/ +[9]:http://www.ubuntu.com/ +[10]:http://www.suse.com/ +[11]:http://aws.amazon.com/ec2/ +[12]:http://www.rackspace.com/cloud +[13]:https://owncloud.org/ +[14]:http://audacity.sourceforge.net/ +[15]:http://www.openshot.org/ +[16]:https://www.prestashop.com/ diff --git a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md deleted file mode 100644 index fcecf0d396..0000000000 --- a/sources/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md +++ /dev/null @@ -1,139 +0,0 @@ -4 Linux Based Mini PC You Can Buy In 2015 -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) - -Mini PCs, in my opinion, will takeover the traditional desktop computers in near future. Traditional desktop has a bulky CPU which takes a lot of space with its fan running like a blower. The mini PCs, on the other hand, are tiny and compact. With hardly 4″ or 5″ in size, they can be easily placed on a table. - -Moreover, these mini PCs are fanless which is an added virtue. Of course, you can buy fanless regular desktops but the space consumption is still an issue. Personally, I find the mini PC cute in looks. If you are not a gamer and thinking of buying a new desktop PC, I’ll highly recommend you to **buy a Linux based mini PC**. - -If you go by my recommendation and consider buying it, you might wonder what options do you have. Worry not. In this post we shall see four **Linux based Mini PC that you can buy in 2015**. - -### Linux based mini PCs ### - -Please do note that some of these gadgets might not be available to order just yet. Some of these have been just announced and will be released to public in near future. - -#### 1. Meerkat by System76 #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) - -[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: - -**Specification** - -- Intel 5th Generation processors, available options i3-5010U and i5-5250U -- up to 2 TB of storage (M.2 SATA SSD) -- 16 GB DDR3 RAM -- Graphics Intel HD 5500 and Intel HD 6000 for i3 and i5 respectively -- 4″ x 4″ in size -- WiFi -- 1 Gb NIC -- 2 USB 3.0 ports - -**Price** - -In the range of $500 (yet to be confirmed). - -**Availability** - -US release by the end of March 2015. - -#### 2. Mintbox Mini by Compulab #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) - -[Compulab][3] shrunk its flagship Linux Mint based PC devices, Mintbox into [Mintbox Mini][4]. The compact version is around 4″ in size. More details are as following: - -**Specifications** - -- AMD A4-6400T processor -- Radeon R3 graphics processor -- 4 GB RAM -- 64 GB SSD -- 2 USB 3.0 ports, 3 USB 2.0 ports -- 2 HDMI out ports -- 802.11 b/g/n Wifi -- Gigabit Ethernet -- MicroSD reader - -**Price** - -Staring around $300 - -**Availability** - -Second quarter of 2015 - -#### 3. Utilite2 by Compulab #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) - -It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. - -**Specifications** - -- Qualcomm Snapdragon 600 (APQ8064) quad-core CPU 1.7GHz -- 2GB RAM, eMMC with optional 32 GB mSATA storage -- Graphics with Qualcomm Adreno™ GPU -- 1080p video playback and capture -- Dual-antenna WiFi 802.11 and Bluetooth 4.0 -- Gigabit Ethernet, 4x USB2, USB OTG -- Cellular modem support - -**Price** - -$192 for regular model, $229 with SSD storage. Shipping charges extra. - -**Availability** - -Available to purchase now. It will take four weeks in shipping. - -#### Penguin Pocket Wee by Think Penguin #### - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) - -[Think Penguin][6] is a Open Source focused hardware manufacturer. In the mini PC category, it has [Penguin Pocket Wee][7] to offer. With 4.6″x 4.4″x 1.4″ in size, Penguin Pocket Wee provides a number of configuration to you. You can choose between the processors, storage, network adapters and what not. You can choose to buy it pre-installed with your favorite Linux distribution, default OS is Ubuntu. - -The general configuration is as following: - -- Intel Core i3 or i5 processor with support for up to 1080p HD video -- Expandable up to 16GB of DDR3 RAM -- Intel HD graphics -- Wireless N -- Up to 250GB of SSD -- 4 USB 3.0 -- Intel 10/100/1000 Gigabit Ethernet Controller - -**Price** - -Basic model starts at $499 and it can go up to $1000 based on the configuration you select. - -**Availability** - -Available to order now. There are offices in UK and USA so it should be shipping to North America and Europe. - -### What’s your pick? ### - -I have deliberately not included [Raspberry Pi 2][8] or other Linux microcomputer such as [Intel’s Compute Stick][9]. The reason is that I do not think that micro-computers fall in the same categories as mini PCs. - -What do you think? Are you tempted to replace your desktop with a mini PC? Is there another player which I missed in this list of **best Linux based mini PCs**? Do share your views. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:https://system76.com/ -[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ -[3]:http://www.compulab.co.il/ -[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ -[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview -[6]:https://www.thinkpenguin.com/ -[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop -[8]:http://itsfoss.com/raspberry-pi-2-specs/ -[9]:http://itsfoss.com/intels-compute-stick/ \ No newline at end of file diff --git a/sources/talk/20150309 10 best uses for open source software in the business world.md b/sources/talk/20150309 10 best uses for open source software in the business world.md deleted file mode 100644 index 5393108cde..0000000000 --- a/sources/talk/20150309 10 best uses for open source software in the business world.md +++ /dev/null @@ -1,86 +0,0 @@ -translating wi-cuckoo LLAP -10 best uses for open source software in the business world -================================================================================ -> Open source offers some compelling benefits for businesses large and small -- but you might be surprised at some of the ways it's being used. - -![](http://tr2.cbsistatic.com/hub/i/r/2015/03/05/54a9c323-4311-4455-b10b-5182548da424/resize/620x485/95164f01a19cbd7a3e4b843be78febae/foss.jpg) - -Certain inevitabilities occur in technology. For instance, open source software will make its way into your business. Ten years ago, this could easily have been called into question. Now? There's no way to avoid it -- and there's no reason to. With so many powerful (and necessary) pieces of technology, open source has become, in various cases, the savior of tech. But what areas of your business are best suited for open source? The answer to that question is, of course, will be different from one company to the next. But some applications can apply in almost every circumstance. - -Let's take a look at 10 possible best-case uses for open source software that can help make your business grow, bring you a level of flexibility and reliability you haven't experienced, or just save you a welcome percentage of your budget. - -### 1: Server software ### - -If you're still battling Microsoft's IIS platform, you need to experience Apache. The flagship open source web server software is one of the most widely used on the planet. It's free, incredibly reliable, easy to manage, and doesn't require the enormous overhead needed for IIS. But open source isn't limited to just web servers. If you need SMB sharing across your company, consider Samba. Samba 4 even integrates with Active Directory, so you don't have to worry about setting up separate user accounts on the Samba server. - -### 2: Development ### - -Developing with open source is a no-brainer. PHP, Rails, Perl -- there are as many languages to develop with as there are tools (from IDEs to bug tracking). There are a lot of options for developing for open source or with open source tools (as are there with proprietary development). The biggest difference between open source and proprietary is the access you have to the software code. Within the world of FOSS (free open source software) the code is readily available. For many developers, the Linux operating system has everything they need to develop, built right in (especially those who code without a full-blown IDE). If you do require GUI development tools, open source has you covered. - -### 3: Security ### - -The route to security is a challenging one, but there are many paths to success. You can opt for the "security in a box" solution and go with the likes of Cisco (a solid solution) or you can craft your security to perfectly fit your needs with the likes of iptables. Yes, the open source security route will take a bit more time to deploy (with a much higher learning curve), but the end results are generally incredible. This doesn't even address the idea that using open source on the desktop is, generally speaking, a more secure platform than most proprietary systems. Deploy Linux on the desktops and your security woes will drop dramatically. - -### 4: Desktops ### - -This area is where most of the pushback happens. However, you must take into consideration the fact that the daily workflow has undergone a major paradigm shift. Most of what we do now is done via a web browser. So why not deploy Linux on the desktop? Not only does it work with the majority of today's tasks, it will do so without suffering from viruses, malware, and updates that cripple a system. It's not perfect -- what platform is? But it's solid, and in the end, it can save you money. That's a win-win. - -### 5: Workflow ### - -Every business depends upon workflow. For some businesses, a smooth workflow depends upon tools. Open source has this arena covered. CRM, HRM, ERP, BI, BPM... you name it, open source handles just about every possible acronym you can think of -- and it does it very well. With the likes of [Pentaho][1], [Collabtive][2], and [SugarCRM][3], open source can keep up with closed source tools any day. - -### 6: Collaboration ### - -Without the ability to work together on projects, your staff wouldn't be able to get the job done. So the collaboration tools you choose are crucial. You'll find plenty of quality collaboration tools within the world of open source. [Cyn.in community edition][4], [Zimbra Open Source Edition][5], and [Kolab][6] are just three examples of the excellent collaboration tools that exist within the open source world. - -### 7: Big data ### - -When it comes to big data, open source can't be matched. Thanks to the likes of [SUSE][7], big data and open source now go hand in hand. Innovations like in-memory data and live kernel patching make open source an ideal solution for big data. It can be perfectly tuned to meet the massive demands big data places on the platform. Closed source software can't touch this level of flexibility. - -### 8: Cloud ### - -The major players in the cloud are open source. [Red Hat][8], [Ubuntu][9], [SUSE][10], [Amazon][11], [Rackspace][12] -- they all get it and know that open source is the best solution for cloud deployments. But if you don't want to go with the larger companies, there are always up and coming tools like [ownCloud][12], where you can either take advantage of its hosted cloud solutions or build your own. - -### 9: Multimedia ### - -If your company does podcasting or video for PR, open source has you covered. With tools like [Audacity][14] and [OpenShot][15], you can do just about anything with audio or video you need -- and do so on the cheap. In fact, you'll be hard-pressed to find a better podcasting tool than Audacity or an easier-to-use video editor than OpenShot. Both pieces of software do an outstanding job of creating professional-quality results without the steep learning curves or the high prices often associated with closed source tools - -### 10: E-commerce ### - -If your business sells products online, you'd be remiss not to give a tool like [PrestaShop][16] a try. PrestaShop is, hands down, one of the most powerful e-commerce solutions available -- regardless of license. With just about every feature you could possible want (and some you probably haven't even thought of), the open source platform excels at e-commerce on every level. - -### FOSS for business ### - -Open source is no longer hanging around the periphery of the business conversation. In many instances, FOSS leads and dominates that conversation. If you've been looking for areas to consider deploying open source solutions, look no further than these 10. - -### Your turn ### - -Have you added open source software to your business? If so, in what way? - --------------------------------------------------------------------------------- - -via: http://www.techrepublic.com/blog/10-things/10-best-uses-for-open-source-software-in-the-business-world/ - -作者:[Jack Wallen][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.techrepublic.com/search/?a=jack+wallen -[1]:http://community.pentaho.com/ -[2]:http://collabtive.o-dyn.de/ -[3]:http://www.sugarcrm.com/ -[4]:http://cynapse.com/cyn-in/ -[5]:https://www.zimbra.com/open-source -[6]:http://kolab.org/ -[7]:http://www.suse.org/ -[8]:http://www.redhat.com/ -[9]:http://www.ubuntu.com/ -[10]:http://www.suse.com/ -[11]:http://aws.amazon.com/ec2/ -[12]:http://www.rackspace.com/cloud -[13]:https://owncloud.org/ -[14]:http://audacity.sourceforge.net/ -[15]:http://www.openshot.org/ -[16]:https://www.prestashop.com/ diff --git a/sources/talk/20150318 The future of Linux storage.md b/sources/talk/20150318 The future of Linux storage.md new file mode 100644 index 0000000000..25f178bf8b --- /dev/null +++ b/sources/talk/20150318 The future of Linux storage.md @@ -0,0 +1,82 @@ +[translating by KayGuoWhu] +The future of Linux storage +================================================================================ +> **Summary**:Linux software developers are working hard on expanding Linux's file and storage options. + +BOSTON - At the [Linux Foundation's][1] new [Vault][2] show, it's all about file systems and storage. You might think that there's nothing new to say about either topic, but you'd be wrong. + +![](http://zdnet2.cbsistatic.com/hub/i/r/2015/03/12/c8f92cc2-b963-4238-80a0-d785ec93698c/resize/770x578/08d93a8a393d3f50b2a56e6b0e7a0ca9/btrfs-1.jpg) +Linux file systems, such as Btrfs, and storage support options are constantly evolving. -- Facebook + +Storage technology has come a long way from the days of, as Linus Torvalds put it, "[nasty platters of spinning rust][3]" and Linux has had to keep up. In recent years, for example, [flash memory has arrived as enterprise server primary storage][4] and [persistent memory][5] is bringing us storage that works at DRAM speeds. At the same time, Big Data, cloud computing, and containers are all bringing new use cases to Linux. + +To deal with this, Linux developers are both expanding their existing file and storage programs and working on new ones. + +### Btrfs ### + +For instance, Chris Mason, a Facebook software engineer and one of the [Btrfs][6] (pronounced Butter FS) maintainers, explained how Facebook uses this file system. Btrfs has many advantages as a file system such as the ability to handle both numerous small files and single files as large as 16 exabytes; baked in RAID; built-in file-system compression; and integrated multi-storage device support. + +Facebook, of course, runs on Linux. To be exact, Facebook runs the 3.10 and 3.18 Linux kernels on an internal distribution, which is based on [CentOS][7]. For Facebook, the real win is that Btrfs is stable and fast under the endless input/output operations per second (IOPS) pounding from Facebook's constantly updating users. + +That's the good news. The bad news is that Btrfs is still much too slow for traditional DBMSs such as MySQL. For those, Facebook uses [XFS][8]. To co-ordinate the two file systems, Facebook uses [Gluster][9], the open-source distributed file system. + +Facebook, which works hand-in-glove with the upstream Btrfs Linux kernel developers, is working on improving Btrfs's DBMS speed. Mason, and his companions, are doing this by using Btrfs with the [RocksDB][10] database. This is a persistent key-value store for fast storage, which can be used as the foundation for a client-server database. + +Btrfs also still has some bugs. For example, if you're foolish enough to fill a disk almost to bursting, Btrfs will stop you from writing to storage before the disk is completely stuffed. For some projects, such as [CoreOS][12], the enterprise Linux that relies on containers, that's a showstopper. [CoreOS has since switched to using xt4 and overlayfs][11]. + +The Btrfs crew is also working on data deduplication. In this, when a file system has more than one identical file, you automatically delete the duplicate. As Mason said, "Not everyone needs this, but if you need it, you really need it!" + +Btrfs isn't the only file system that's both very important and getting worked on. John Spray, a senior software engineer at [Red Hat][13], talked about the distributed [Ceph][14] file system. + +### Ceph FS ### + +Ceph provides a distributed object store and file system which, in turn, relies on a resilient and scalable storage model (RADOS) using clusters of commodity hardware. Along with the RADOS block device (RBD), and the RADOS object gateway (RGW), Ceph provides a [POSIX][15] file-system interface -- Ceph FS. While RBD and RGW have been in use for production workloads for some time, efforts to make Ceph FS ready for production are now underway. + +[Red Hat, after acquiring Inktank][16], Ceph's parent company, in 2014 has been working hard on making CephFS production ready. For better or worse, Spray said, "Some people are already using it in production; we're terrified of this. It's really not ready yet." Still, Spray added, that this "is a mixed blessing because while it's a bit scary, we get really useful feedback and testing from those users." + +That's because while Ceph object stores scale out well, Ceph FS, as a POSIX compliant file-system, are hard to scale out. For example, as a distributed file system, Ceph FS has to deal with multiple writes from multiple clients. This can lead to all or nothing situations where one client can write and others must wait. This can result in file-locking situations that are more complicated than those in ordinary file systems. + +Still, Ceph FS is worth doing, Spray said, "since POSIX file-systems are an operating system lingua franca." That's not to say that Ceph FS doesn't work. "It's not horribly broken. It works. What's missing is the repair and monitoring tools." + +Red Hat is currently hard at work on getting [fsck][17] and journal repair tools, snapshot hardening, better client access control, and cloud and container integration. For now, though, Ceph FS is a file system that only the very brave, or foolish, should use in production. + +### File and storage odds and ends ### + +As for larger issues of file-systems and storage, Jeff Layton, senior software engineer at [Primary Data][18], explained that there are efforts under way to to create "tests for catastrophic power failure, without actually pulling the plug." These tests will soon be integrated with [xfstests][19], the gold standard for Linux file-system testing. + +Rik van Riel, a Red Hat principal software engineer, spoke about the problem of dealing with persistent memory products. You can treat them as storage or as memory. But, you can't currently take snapshots for backups if you use them as memory. The real problem: van Riel is certain that people will try to use persistent memory as both, which will lead to such as situations as "Without back up, how do you deal with a 200GB persistent memory database?" Adding insult to injury, logging systems don't currently work with persistent memory. + +What's the right answer? Linux doesn't have one yet, but programmers are working on it. + +So, while Linux has many file systems and can use any kind of storage out there that can hold a byte, there's still a lot of work to be done. Technology never stands still. Linux, which runs on everything from devices to desktops to servers to clouds to supercomputers, has to keep up with storage advances no matter where they appear. + +-------------------------------------------------------------------------------- + +via: http://www.zdnet.com/article/linux-storage-futures/ + +作者:[Steven J. Vaughan-Nichols][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.zdnet.com/meet-the-team/us/sjvn/ +[1]:http://www.linuxfoundation.org/ +[2]:http://events.linuxfoundation.org/events/vault +[3]:http://www.wired.com/2012/10/linus-torvalds-hard-disks/ +[4]:http://www.zdnet.com/article/sandisk-launches-infiniflash-aims-to-bring-flash-array-costs-down/ +[5]:http://events.linuxfoundation.org/sites/events/files/eeus13_wheeler.pdf +[6]:https://btrfs.wiki.kernel.org/index.php/Main_Page +[7]:http://www.centos.org/ +[8]:http://oss.sgi.com/projects/xfs/ +[9]:http://www.gluster.org/ +[10]:http://rocksdb.org/ +[11]:http://lwn.net/Articles/627232/ +[12]:https://coreos.com/ +[13]:http://www.redhat.com/ +[14]:http://ceph.com/ +[15]:http://pubs.opengroup.org/onlinepubs/9699919799/ +[16]:http://www.zdnet.com/article/red-hat-acquires-inktank-for-175m/ +[17]:http://linux.die.net/man/8/fsck +[18]:http://primarydata.com/ +[19]:http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary \ No newline at end of file diff --git a/sources/talk/20150320 Revealed--The best and worst of Docker.md b/sources/talk/20150320 Revealed--The best and worst of Docker.md new file mode 100644 index 0000000000..1e188d6cba --- /dev/null +++ b/sources/talk/20150320 Revealed--The best and worst of Docker.md @@ -0,0 +1,66 @@ +Revealed: The best and worst of Docker +================================================================================ +![](http://images.techhive.com/images/article/2015/01/best_worst_places_to_work-100564193-primary.idge.jpg) +Credit: [Shutterstock][1] + +> Docker experts talk about the good, the bad, and the ugly of the ubiquitous application container system + +No question about it: Docker's app container system has made its mark and become a staple in many IT environments. With its accelerating adoption, it's bound to stick around for a good long time. + +But there's no end to the debate about what Docker's best for, where it falls short, or how to most sensibly move it forward without alienating its existing users or damaging its utility. Here, we've turned to a few of the folks who have made Docker their business to get their takes on Docker's good, bad, and ugly sides. + +### The good ### + +One hardly expects Steve Francia, chief of operations of the Docker open source project, to speak of Docker in anything less than glowing terms. When asked by email about Docker's best attributes, he didn't disappoint: "I think the best thing about Docker is that it enables people, enables developers, enables users to very easily run an application anywhere," he said. "It's almost like the Holy Grail of development in that you can run an application on your desktop, and the exact same application without any changes can run on the server. That's never been done before." + +Alexis Richardson of [Weaveworks][2], a virtual networking product, praised Docker for enabling simplicity. "Docker offers immense potential to radically simplify and speed up how software gets built," he replied in an email. "This is why it has delivered record-breaking initial mind share and traction." + +Bob Quillin, CEO of [StackEngine][3], which makes Docker management and automation solutions, noted in an email that Docker (the company) has done a fine job of maintaining Docker's (the product) appeal to its audience. "Docker has been best at delivering strong developer support and focused investment in its product," he wrote. "Clearly, they know they have to keep the momentum, and they are doing that by putting intense effort into product functionality." He also mentioned that Docker's commitment to open source has accelerated adoption by "[allowing] people to build around their features as they are being built." + +Though containerization itself isn't new, as Rob Markovich of IT monitoring-service makers [Moogsoft][4] pointed out, Docker's implementation makes it new. "Docker is considered a next-generation virtualization technology given its more modern, lightweight form [of containerization]," he wrote in an email. "[It] brings an opportunity for an order-of-magnitude leap forward for software development teams seeking to deploy code faster." + +### The bad ### + +What's less appealing about Docker boils down to two issues: the complexity of using the product, and the direction of the company behind it. + +Samir Ghosh, CEO of enterprise PaaS outfit [WaveMaker][5], gave Docker a thumbs-up for simplifying the complex scripting typically needed for continuous delivery. That said, he added, "That doesn't mean Docker is simple. Implementing Docker is complicated. There are a lot of supporting technologies needed for things like container management, orchestration, app stack packaging, intercontainer networking, data snapshots, and so on." + +Ghosh noted the ones who feel the most of that pain are enterprises that want to leverage Docker for continuous delivery, but "it's even more complicated for enterprises that have diverse workloads, various app stacks, heterogenous infrastructures, and limited resources, not to mention unique IT needs for visibility, control and security." + +Complexity also becomes an issue in troubleshooting and analysis, and Markovich cited the fact that Docker provides application abstraction as the reason why. "It is nearly impossible to relate problems with application performance running on Docker to the performance of the underlying infrastructure domains," he said in an email. "IT teams are going to need visibility -- a new class of monitoring and analysis tools that can correlate across and relate how everything is working up and down the Docker stack, from the applications down to the private or public infrastructure." + +Quillin is most concerned about Docker's direction vis-à-vis its partner community: "Where will Docker make money, and where will their partners? If [Docker] wants to be the next VMware, it will need to take a page out of VMware's playbook in how to build and support a thriving partner ecosystem. + +"Additionally, to drive broader adoption, especially in the enterprise, Docker needs to start acting like a market leader by releasing more fully formed capabilities that organizations can count on, versus announcements of features with 'some assembly required,' that don't exist yet, or that require you to 'submit a pull request' to fix it yourself." + +Francia pointed to Docker's rapid ascent for creating its own difficulties. "[Docker] caught on so quickly that there's definitely places that we're focused on to add some features that a lot of users are looking forward to." + +One such feature, he noted, was having a GUI. "Right now to use Docker," he said, "you have to be comfortable with the command line. There's no visual interface to using Docker. Right now it's all command line-based. And we know if we want to really be as successful as we think we can be, we need to be more approachable and a lot of people when they see a command line, it's a bit intimidating for a lot of users." + +### The future ### + +In that last respect, Docker recently started to make advances. Last week it [bought the startup Kitematic][6], whose product gave Docker a convenient GUI on Mac OS X (and will eventually do the same for Windows). Another acqui-hire, [SocketPlane][7], is being spun in to work on Docker's networking. + +What remains to be seen is whether Docker's proposed solutions to its problems will be adopted, or whether another party -- say, [Red Hat][8] -- will provide a more immediately useful solution for enterprise customers who can't wait around for the chips to stop falling. + +"Good technology is hard and takes time to build," said Richardson. "The big risk is that expectations spin wildly out of control and customers are disappointed." + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2896895/application-virtualization/best-and-worst-about-docker.html + +作者:[Serdar Yegulalp][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Serdar-Yegulalp/ +[1]:http://shutterstock.com/ +[2]:http://weave.works/ +[3]:http://stackengine.com/ +[4]:http://www.moogsoft.com/ +[5]:http://www.wavemaker.com/ +[6]:http://www.infoworld.com/article/2896099/application-virtualization/dockers-new-acquisition-does-containers-on-the-desktop.html +[7]:http://www.infoworld.com/article/2892916/application-virtualization/docker-snaps-up-socketplane-to-fix-networking-flaws.html +[8]:http://www.infoworld.com/article/2895804/application-virtualization/red-hat-wants-to-do-for-containers-what-its-done-for-linux.html \ No newline at end of file diff --git a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md b/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md deleted file mode 100644 index ecd44c9c75..0000000000 --- a/sources/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md +++ /dev/null @@ -1,61 +0,0 @@ -Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl -================================================================================ -> **Question**: I need to convert readable date and time to a corresponding UNIX timestamp (i.e., Epoch time), or vice versa in a Perl program. Can you show me Perl code examples of converting date/time to UNIX timestamp, or conversely, converting UNIX timestamp to human-readable date and time? - -When your Perl script needs to deal with time information, there are two different ways to represent and manipulate date and time in the script. One way is a human-readable string representation of time (e.g., "Sat Mar 14 10:14:05 EDT 2015"), and the other is via UNIX timestamp (also known as "Epoch time") which is the number of elapsed seconds since 00:00:00 UTC, 1 Jaunary 1970. Either method has its own pros and cons, and depending on your requirements you may want to convert one format to the other. - -### Convert Local Time to UNIX Timestamp in Perl ### - -To obtain UNIX time from a date string, you can use str2time() in Date::Parse module. It can handle a variety of date formats, such as: - -- Sat Mar 14 10:14:05 EDT 2015 -- 3/14/2015 10:14:05 -0400 -- 14/Mar/15 10:14:05 -- 14 Mar 15 10:14:05 - - use Date::Parse; - - my $local_time = "Sat Mar 14 10:14:05 EDT 2015"; - - # 1426342445 will be stored in $unix_time - my $unix_time = str2time($local_time); - -Date:Parse module supports multiple languages (English, French, German and Italian) and timezones. For example: - - use Date::Parse; - use Date::Language; - - my $lang = Date::Language->new('French'); - my $unix_time = $lang->str2time("12:14:05, Ago 16, 2014 (CEST)"); - -### Convert UNIX Timestmp to Human-Readable Date and Time in Perl ### - -If you want to show a UNIX timestamp in a human-readable format, you can use localtime() function which converts a UNIX timestamp into a 9-element list. You can use the returned list to construct any kind of human-readable date/time string as you want. Here is a code snippet. - - # $sec, $min, $hour: seconds, minutes and hours - # $mday: the day of the month (0-31) - # $mon: month in the range of 0 (Jaunary) and 11 (December) - # $year: the number of years that have elapsed since 1900 - # $wday: the day of the week in the range of 0 (Sunday) and 6 (Saturday) - # $yday: the day of the year in the range of 0 and 364 (or 365 in leap years) - # $isdst: whether or not it's in daylight saving time - - my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp); - - # necessary conversion of $mon and $year - $mon += 1; - $year += 1900; - - print "Current time: $year-$mon-$mday $hour:$min:$sec\n"; - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/convert-local-time-unix-timestamp-perl.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://ask.xmodulo.com/author/nanni \ No newline at end of file diff --git a/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md new file mode 100644 index 0000000000..ba85e4c6a8 --- /dev/null +++ b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -0,0 +1,266 @@ +11 Linux Terminal Commands That Will Rock Your World +================================================================================ +I have been using Linux for about 10 years and what I am going to show you in this article is a list of Linux commands, tools and clever little tricks that I wish somebody had shown me from the outset instead of stumbling upon them as I went along. + +![Linux Keyboard Shortcuts.](http://f.tqn.com/y/linux/1/L/m/J/1/keyboardshortcuts.png) +Linux Keyboard Shortcuts. + +### 1. Useful Command Line Keyboard Shortcuts ### + +The following keyboard shortcuts are incredibly useful and will save you loads of time: + +- CTRL + U - Cuts text up until the cursor. +- CTRL + K - Cuts text from the cursor until the end of the line +- CTRL + Y - Pastes text +- CTRL + E - Move cursor to end of line +- CTRL + A - Move cursor to the beginning of the line +- ALT + F - Jump forward to next space +- ALT + B - Skip back to previous space +- ALT + Backspace - Delete previous word +- CTRL + W - Cut word behind cursor +- Shift + Insert - Pastes text into terminal + +Just so that the commands above make sense look at the next line of text. + + sudo apt-get intall programname + +As you can see I have a spelling error and for the command to work I would need to change "intall" to "install". + +Imagine the cursor is at the end of the line. There are various ways to get back to the word install to change it. + +I could press ALT + B twice which would put the cursor in the following position (denoted by the ^ symbol): + + sudo apt-get^intall programname + +Now you could press the cursor key and insert the ''s' into install. + +Another useful command is "shift + insert" especially If you need to copy text from a browser into the terminal. + +![](http://f.tqn.com/y/linux/1/L/n/J/1/sudotricks2.png) + +### 2. SUDO !! ### + +You are going to really thank me for the next command if you don't already know it because until you know this exists you curse yourself every time you enter a command and the words "permission denied" appear. + +- sudo !! + +How do you use sudo !!? Simply. Imagine you have entered the following command: + + apt-get install ranger + +The words "Permission denied" will appear unless you are logged in with elevated privileges. + +sudo !! runs the previous command as sudo. So the previous command now becomes: + + sudo apt-get install ranger + +If you don't know what sudo is [start here][1]. + +![Pause Terminal Applications.](http://f.tqn.com/y/linux/1/L/o/J/1/pauseapps.png) +Pause Terminal Applications. + +### 3. Pausing Commands And Running Commands In The Background ### + +I have already written a guide showing how to run terminal commands in the background. + +- CTRL + Z - Pauses an application +- fg - Returns you to the application + +So what is this tip about? + +Imagine you have opened a file in nano as follows: + + sudo nano abc.txt + +Halfway through typing text into the file you realise that you quickly want to type another command into the terminal but you can't because you opened nano in foreground mode. + +You may think your only option is to save the file, exit nano, run the command and then re-open nano. + +All you have to do is press CTRL + Z and the foreground application will pause and you will be returned to the command line. You can then run any command you like and when you have finished return to your previously paused session by entering "fg" into the terminal window and pressing return. + +An interesting thing to try out is to open a file in nano, enter some text and pause the session. Now open another file in nano, enter some text and pause the session. If you now enter "fg" you return to the second file you opened in nano. If you exit nano and enter "fg" again you return to the first file you opened within nano. + +![nohup.](http://f.tqn.com/y/linux/1/L/p/J/1/nohup3.png) +nohup. + +### 4. Use nohup To Run Commands After You Log Out Of An SSH Session ### + +The [nohup command][2] is really useful if you use the ssh command to log onto other machines. + +So what does nohup do? + +Imagine you are logged on to another computer remotely using ssh and you want to run a command that takes a long time and then exit the ssh session but leave the command running even though you are no longer connected then nohup lets you do just that. + +For instance I use my [Raspberry PI][3] to download distributions for review purposes. + +I never have my Raspberry PI connected to a display nor do I have a keyboard and mouse connected to it. + +I always connect to the Raspberry PI via [ssh][4] from a laptop. If I started downloading a large file on the Raspberry PI without using the nohup command then I would have to wait for the download to finish before logging off the ssh session and before shutting down the laptop. If I did this then I may as well have not used the Raspberry PI to download the file at all. + +To use nohup all I have to type is nohup followed by the command as follows: + + nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso & + +![Schedule tasks with at.](http://f.tqn.com/y/linux/1/L/q/J/1/at.png) +Schedule tasks with at. + +### 5. Running A Linux Command 'AT' A Specific Time ### + +The 'nohup' command is good if you are connected to an SSH server and you want the command to remain running after logging out of the SSH session. + +Imagine you want to run that same command at a specific point in time. + +The 'at' command allows you to do just that. 'at' can be used as follows. + + at 10:38 PM Fri + at> cowsay 'hello' + at> CTRL + D + +The above command will run the program [cowsay][5] at 10:38 PM on Friday evening. + +The syntax is 'at' followed by the date and time to run. + +When the at> prompt appears enter the command you want to run at the specified time. + +The CTRL + D returns you to the cursor. + +There are lots of different date and time formats and it is worth checking the man pages for more ways to use 'at'. + +![](http://f.tqn.com/y/linux/1/L/l/J/1/manmost.png) + +### 6. Man Pages ### + +Man pages give you an outline of what commands are supposed to do and the switches that can be used with them. + +The man pages are kind of dull on their own. (I guess they weren't designed to excite us). + +You can however do things to make your usage of man more appealing. + + export PAGER=most + +You will need to install 'most; for this to work but when you do it makes your man pages more colourful. + +You can limit the width of the man page to a certain number of columns using the following command: + + export MANWIDTH=80 + +Finally, if you have a browser available you can open any man page in the default browser by using the -H switch as follows: + + man -H + +Note this only works if you have a default browser set up within the $BROWSER environment variable. + +![View Processes With htop.](http://f.tqn.com/y/linux/1/L/r/J/1/nohup2.png) +View Processes With htop. + +### 7. Use htop To View And Manage Processes ### + +Which command do you currently use to find out which processes are running on your computer? My bet is that you are using '[ps][6]' and that you are using various switches to get the output you desire. + +Install '[htop][7]'. It is definitely a tool you will wish that you installed earlier. + +htop provides a list of all running processes in the terminal much like the file manager in Windows. + +You can use a mixture of function keys to change the sort order and the columns that are displayed. You can also kill processes from within htop. + +To run htop simply type the following into the terminal window: + + htop + +![Command Line File Manager - Ranger.](http://f.tqn.com/y/linux/1/L/s/J/1/ranger.png) +Command Line File Manager - Ranger. + +### 8. Navigate The File System Using ranger ### + +If htop is immensely useful for controlling the processes running via the command line then [ranger][8] is immensely useful for navigating the file system using the command line. + +You will probably need to install ranger to be able to use it but once installed you can run it simply by typing the following into the terminal: + + ranger + +The command line window will be much like any other file manager but it works left to right rather than top to bottom meaning that if you use the left arrow key you work your way up the folder structure and the right arrow key works down the folder structure. + +It is worth reading the man pages before using ranger so that you can get used to all keyboard switches that are available. + +![Cancel Linux Shutdown.](http://f.tqn.com/y/linux/1/L/t/J/1/shutdown.png) +Cancel Linux Shutdown. + +### 9. Cancel A Shutdown ### + +So you started the [shutdown][9] either via the command line or from the GUI and you realised that you really didn't want to do that. + + shutdown -c + +Note that if the shutdown has already started then it may be too late to stop the shutdown. + +Another command to try is as follows: + +- [pkill][10] shutdown + +![Kill Hung Processes With XKill.](http://f.tqn.com/y/linux/1/L/u/J/1/killhungprocesses.png) +Kill Hung Processes With XKill. + +### 10. Killing Hung Processes The Easy Way ### + +Imagine you are running an application and for whatever reason it hangs. + +You could use 'ps -ef' to find the process and then kill the process or you could use 'htop'. + +There is a quicker and easier command that you will love called [xkill][11]. + +Simply type the following into a terminal and then click on the window of the application you want to kill. + + xkill + +What happens though if the whole system is hanging? + +Hold down the 'alt' and 'sysrq' keys on your keyboard and whilst they are held down type the following slowly: + +- [REISUB][12] + +This will restart your computer without having to hold in the power button. + +![youtube-dl.](http://f.tqn.com/y/linux/1/L/v/J/1/youtubedl2.png) +youtube-dl. + +### 11. Download Youtube Videos ### + +Generally speaking most of us are quite happy for Youtube to host the videos and we watch them by streaming them through our chosen media player. + +If you know you are going to be offline for a while (i.e. due to a plane journey or travelling between the south of Scotland and the north of England) then you may wish to download a few videos onto a pen drive and watch them at your leisure. + +All you have to do is install youtube-dl from your package manager. + +You can use youtube-dl as follows: + + youtube-dl url-to-video + +You can get the url to any video on Youtube by clicking the share link on the video's page. Simply copy the link and paste it into the command line (using the shift + insert shortcut). + +### Summary ### + +I hope that you found this list useful and that you are thinking "i didn't know you could do that" for at least 1 of the 11 items listed. + +-------------------------------------------------------------------------------- + +via: http://linux.about.com/od/commands/tp/11-Linux-Terminal-Commands-That-Will-Rock-Your-World.htm + +作者:[Gary Newell][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:http://linux.about.com/cs/linux101/g/sudo.htm +[2]:http://linux.about.com/library/cmd/blcmdl1_nohup.htm +[3]:http://linux.about.com/od/mobiledevicesother/a/Raspberry-Pi-Computer-Running-Linux.htm +[4]:http://linux.about.com/od/commands/l/blcmdl1_ssh.htm +[5]:http://linux.about.com/cs/linux101/g/cowsay.htm +[6]:http://linux.about.com/od/commands/l/blcmdl1_ps.htm +[7]:http://www.linux.com/community/blogs/133-general-linux/745323-5-commands-to-check-memory-usage-on-linux +[8]:http://ranger.nongnu.org/ +[9]:http://linux.about.com/od/commands/l/blcmdl8_shutdow.htm +[10]:http://linux.about.com/library/cmd/blcmdl1_pkill.htm +[11]:http://linux.about.com/od/funnymanpages/a/funman_xkill.htm +[12]:http://blog.kember.net/articles/reisub-the-gentle-linux-restart/ \ No newline at end of file diff --git a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md new file mode 100644 index 0000000000..8faab0ce1d --- /dev/null +++ b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -0,0 +1,213 @@ +tanslating by martin. + +Fedora GNOME Keyboard Shortcuts +================================================================================ +To get the very best out of the [GNOME desktop environment][1], within Fedora, you need to learn and remember the keyboard shortcuts required to navigate the system. + +This article lists the most useful keyboard shortcuts and how they are used. + +![GNOME Keyboard Shortcuts - The Super Key. ](http://f.tqn.com/y/linux/1/L/o/K/1/gnomekeyboardshortcut1.png) +GNOME Keyboard Shortcuts - The Super Key. + +#### 1. The Super Key #### + +[The "super" key][2] is your best friend when navigating modern operating systems. + +On a standard laptop the "super" key sits on the bottom row next to the "alt" key. + +When you press the "super" key the "activities" overview will be displayed and you will be able to see all of the open applications zoomed out. + +Pressing "ALT" and "F1" together will show the same display. + +![GNOME Run Command.](http://f.tqn.com/y/linux/1/L/p/K/1/runcommand.png) +GNOME Run Command. + +### 2. How To Run A Command Quickly ### + +If you need to run a command quickly, you can press "ALT" and "F2" which displays a "Run Command" dialog. + +You can now enter your command into that window and press return. + +![TAB Through Applications.](http://f.tqn.com/y/linux/1/L/q/K/1/tabthroughwindows.png) +TAB Through Applications. + +### 3. Quickly Switch To Other Open Applications ### + +As with Microsoft Windows you can switch applications using the "ALT" and "TAB" keys. + +On some keyboards the tab key looks like this: **|<- ->|** and on others it simply spells the word "TAB". + +The GNOME application switcher simply shows the icons and names of the applications as you tab through them. + +If you hold down the "shift" and "tab" keys, the application switcher rotates around the icons in reverse order. + +![Switch Windows In The Same Application.](http://f.tqn.com/y/linux/1/L/r/K/1/switchwindowsinsameapplication.png) +Switch Windows In The Same Application. + +### 4. Quickly Switch To Another Window In The Same Application ### + +If you are anything like me then you will end up with half a dozen instances of Firefox open. + +You now know that "Alt" and "Tab" switch between applications. + +There are two ways to cycle through all of the open instances of the same application. + +The first is to press "Alt" and "Tab" until the cursor sits over the icon of the application with many windows that you wish to cycle through. After a pause a dropdown will appear and you can select the Window with the mouse. + +The second and preferred option is to press "Alt" and "Tab" until the cursor sits over the icon of the application you want to cycle through and then press the "super" and "`" keys to toggle through the open instances. + +**Note that the "`" key is the one just above the tab key. The key for cycling through the open instances is always the key above the tab key regardless of your keyboard layout, therefore it isn't always guaranteed to be the "`" key.** + +If you have nimble fingers (or as I like to call them ninja fingers) then you can hold the "shift", "`" and "super" key to cycle backwards through the open instances of an application. + +![Switch Keyboard Focus.](http://f.tqn.com/y/linux/1/L/s/K/1/switchkeyboardfocus.png) +Switch Keyboard Focus. + +### 5. Switch Keyboard Focus ### + +This keyboard shortcut isn't essential but a nice to know. + +If you want to switch the keyboard focus to the search bar or to an application window you can press "CTRL", "ALT" and "TAB". to show a list of possible areas to switch to. + +You can then use the arrow keys to cycle through the possible options. + +![Show All Applications.](http://f.tqn.com/y/linux/1/L/t/K/1/showapplications.png) +Show All Applications. + +### 6. Show A List Of All The Applications ### + +If the last one was a nice to have then this one is a real time saver. + +To quickly navigate to a full list of all the applications on your system press the "super" key and "A". + +![Switch Workspaces.](http://f.tqn.com/y/linux/1/L/u/K/1/switchworkspaces.png) +Switch Workspaces. + +### 7. Switch Workspaces ### + +If you have been using Linux for a while you will appreciate the fact that you [can use multiple workspaces][3]. + +For instance in one workspace you might have development environments open, in another web browsers and in a third your email client. + +To toggle between workspaces press the "super" and the "Page Up" (PGUP) keys to toggle in one direction and the "super", "Page Down" (PGDN) keys to toggle in the other direction. + +The alternative but more longwinded away to switch to another workspace is to press the "super" key to show a list of applications and then select the workspace you wish to switch to on the right side of the screen. + +![Move Application To Another Workspace.](http://f.tqn.com/y/linux/1/L/v/K/1/movetoanewworkspace.png) +Move Application To Another Workspace. + +### 8. Move Items To A New Workspace ### + +If the workspace you are using is getting cluttered and you wish to move the current application to a new workspace press the "super", "shift" and "page up" button or "super", "shift" and "page down" key. + +Alternatively press the "super" key to bring up the list of applications and drag the application you wish to move to one of the workspaces on the right of the screen. + +![Show The Message Tray.](http://f.tqn.com/y/linux/1/L/w/K/1/showmessagetray.png) +Show The Message Tray. + +### 9. Show The Message Tray ### + +The message tray provides a list of notifications. + +To bring up the message tray press the "super" and "M" key on the keyboard. + +Alternatively move the mouse to the bottom right corner of the screen. + +![Lock The Screen.](http://f.tqn.com/y/linux/1/L/x/K/1/lockscreen.png) +Lock The Screen. + +### 10. Lock The Screen ### + +Need to a comfort break or a cup of coffee? Don't want sticky paws all over your keyboard? + +Whenever you leave your computer alone get in the habit of pressing "super" and L to lock the screen. + +To unlock the screen drag up from the bottom and enter your password. + +![Control Alt Delete Within Fedora.](http://f.tqn.com/y/linux/1/L/y/K/1/poweroff.png) +Control Alt Delete Within Fedora. + +### 11. Power Off ### + +If you used to be a Windows user then you will remember the three finger salute known as CTRL, ALT and DELETE. + +If you press "CTRL", "ALT" and "DEL" on your keyboard within Fedora a message will appear telling you that your computer will shut down in 60 seconds. + +### 12. Editing Shortcuts ### + +The editing keyboard shortcuts are pretty much universal across every operating system. + +- CTRL + A - Select All +- CTRL + X - Cut +- CTRL + C - Copy +- CTRL + V - Paste +- CTRL + Z - Undo + +### 13. Screen Capturing ### + +As with the editing shortcuts, the screencapturing keys are fairly standard + +- PRTSC (Print Screen) - Take screenshot +- Alt + PRTSC - Take screenshot of current window +- Shift + PRTSC - Take screenshot of an area of the screen + +Here is one that is fairly unique but great for people making tutorial videos. + +- CTRL + ALT + SHIFT + R - Record Screencast +- CTRL + ALT + SHIFT + R again - Stop Screencast + +The [screencasts][4] will be stored in the videos folder under your home directory in the [webm][5] format. + +![Put Windows Side By Side.](http://f.tqn.com/y/linux/1/L/z/K/1/splitwindows.png) +Put Windows Side By Side. + +### 14. Put Windows Side By Side ### + +You can put windows side by side so that one uses up the left side of the screen and the other uses the right side of the screen. + +Press the "Super" and "Left Arrow" key on the keyboard to shift the current application to the left. + +Press the "Super" and "Right Arrow" key on the keyboard to shift the current application to the right. + +### 15. Maximise, Minimise And Restore Windows ### + +To maximise a window double click on the title bar. + +To restore a window to its original size double click on the maximised window. + +To minimise a window, right click and select "minimise" from the menu. + +![GNOME Keyboard Shortcut Cheat Sheet. ](http://f.tqn.com/y/linux/1/L/-/L/1/gnomekeyboardshortcuts.png) +GNOME Keyboard Shortcut Cheat Sheet. + +### 16. Summary ### + +To help you learn these keyboard shortcuts I have created a cheat sheet which you can print out and stick to your wall. + +When you have learned these shortcuts you will begin to appreciate how modern desktop environments work. + +- [Click here to view the Fedora Linux GNOME Desktop Environment cheat sheet.][6] +- [Click here for the GNOME WIKI][7] +- [The other GNOME WIKI][8] +- [An alternative GNOME 3 Cheat Sheet][9] + +-------------------------------------------------------------------------------- + +via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm + +作者:[Gary Newell][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:https://www.gnome.org/gnome-3/ +[2]:http://en.wikipedia.org/wiki/Super_key_%28keyboard_button%29 +[3]:http://linux.about.com/library/gnome/blgnome2n4.htm +[4]:http://en.wikipedia.org/wiki/Screencast +[5]:http://en.wikipedia.org/wiki/WebM +[6]:https://s-media-cache-ak0.pinimg.com/originals/d5/f4/a4/d5f4a42c0940fae6653ee9a17294d450.jpg +[7]:http://en.wikipedia.org/wiki/GNOME +[8]:https://wiki.gnome.org/ +[9]:https://wiki.gnome.org/Gnome3CheatSheet diff --git a/sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md b/sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md new file mode 100644 index 0000000000..570217f220 --- /dev/null +++ b/sources/tech/20150318 How to Manage and Use LVM (Logical Volume Management) in Ubuntu.md @@ -0,0 +1,268 @@ +How to Manage and Use LVM (Logical Volume Management) in Ubuntu +================================================================================ +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/652x202xbanner-1.png.pagespeed.ic.VGSxDeVS9P.png) + +In our [previous article we told you what LVM is and what you may want to use it for][1], and today we are going to walk you through some of the key management tools of LVM so you will be confident when setting up or expanding your installation. + +As stated before, LVM is a abstraction layer between your operating system and physical hard drives. What that means is your physical hard drives and partitions are no longer tied to the hard drives and partitions they reside on. Rather, the hard drives and partitions that your operating system sees can be any number of separate hard drives pooled together or in a software RAID. + +To manage LVM there are GUI tools available but to really understand what is happening with your LVM configuration it is probably best to know what the command line tools are. This will be especially useful if you are managing LVM on a server or distribution that does not offer GUI tools. + +Most of the commands in LVM are very similar to each other. Each valid command is preceded by one of the following: + +- Physical Volume = pv +- Volume Group = vg +- Logical Volume = lv + +The physical volume commands are for adding or removing hard drives in volume groups. Volume group commands are for changing what abstracted set of physical partitions are presented to your operating in logical volumes. Logical volume commands will present the volume groups as partitions so that your operating system can use the designated space. + +### Downloadable LVM Cheat Sheet ### + +To help you understand what commands are available for each prefix we made a LVM cheat sheet. We will cover some of the commands in this article, but there is still a lot you can do that won’t be covered here. + +All commands on this list will need to be run as root because you are changing system wide settings that will affect the entire machine. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/01/lvm-cheatsheet.png) + +### How to View Current LVM Information ### + +The first thing you may need to do is check how your LVM is set up. The s and display commands work with physical volumes (pv), volume groups (vg), and logical volumes (lv) so it is a good place to start when trying to figure out the current settings. + +The display command will format the information so it’s easier to understand than the s command. For each command you will see the name and path of the pv/vg and it should also give information about free and used space. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/01/539x225xpvdisplay.png.pagespeed.ic.u2XV5LBTYa.png) + +The most important information will be the PV name and VG name. With those two pieces of information we can continue working on the LVM setup. + +### Creating a Logical Volume ### + +Logical volumes are the partitions that your operating system uses in LVM. To create a logical volume we first need to have a physical volume and volume group. Here are all of the steps necessary to create a new logical volume. + +#### Create physical volume #### + +We will start from scratch with a brand new hard drive with no partitions or information on it. Start by finding which disk you will be working with. (/dev/sda, sdb, etc.) + +> Note: Remember all of the commands will need to be run as root or by adding ‘sudo’ to the beginning of the command. + + fdisk -l + +If your hard drive has never been formatted or partitioned before you will probably see something like this in the fdisk output. This is completely fine because we are going to create the needed partitions in the next steps. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/fdisk.png.pagespeed.ce.AmAEsxm-7Q.png) + +Our new disk is located at /dev/sdb so lets use fdisk to create a new partition on the drive. + +There are a plethora of tools that can create a new partition with a GUI, [including Gparted][2], but since we have the terminal open already, we will use fdisk to create the needed partition. + +From a terminal type the following commands: + + fdisk /dev/sdb + +This will put you in a special fdisk prompt. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/627x145xfdisk00.png.pagespeed.ic.I7S8bjoXQG.png) + +Enter the commands in the order given to create a new primary partition that uses 100% of the new hard drive and is ready for LVM. If you need to change the partition size or want multiple partions I suggest using GParted or reading about fdisk on your own. + +**Warning: The following steps will format your hard drive. Make sure you don’t have any information on this hard drive before following these steps.** + +- n = create new partition +- p = creates primary partition +- 1 = makes partition the first on the disk + +Push enter twice to accept the default first cylinder and last cylinder. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/562x216xfdisk01.png.pagespeed.ic.DsSZ38kWcA.png) + +To prepare the partition to be used by LVM use the following two commands. + +- t = change partition type +- 8e = changes to LVM partition type + +Verify and write the information to the hard drive. + +- p = view partition setup so we can review before writing changes to disk +- w = write changes to disk + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/560x339xfdisk03.png.pagespeed.ic.FC8foICZsb.png) + +After those commands, the fdisk prompt should exit and you will be back to the bash prompt of your terminal. + +Enter pvcreate /dev/sdb1 to create a LVM physical volume on the partition we just created. + +You may be asking why we didn’t format the partition with a file system but don’t worry, that step comes later. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/pvcreate.png.pagespeed.ce.W7VAr-ig3t.png) + +#### Create volume Group #### + +Now that we have a partition designated and physical volume created we need to create the volume group. Luckily this only takes one command. + + vgcreate vgpool /dev/sdb1 + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/vgcreate.png.pagespeed.ce.fVLzSmPZou.png) + +Vgpool is the name of the new volume group we created. You can name it whatever you’d like but it is recommended to put vg at the front of the label so if you reference it later you will know it is a volume group. + +#### Create logical volume #### + +To create the logical volume that LVM will use: + + lvcreate -L 3G -n lvstuff vgpool + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/lvcreate.png.pagespeed.ce.vupLB-LJEW.png) + +The -L command designates the size of the logical volume, in this case 3 GB, and the -n command names the volume. Vgpool is referenced so that the lvcreate command knows what volume to get the space from. + +#### Format and Mount the Logical Volume #### + +One final step is to format the new logical volume with a file system. If you want help choosing a Linux file system, read our [how to that can help you choose the best file system for your needs][3]. + + mkfs -t ext3 /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/571x424xmkfs.png.pagespeed.ic.ERMan1Mz0P.png) + +Create a mount point and then mount the volume somewhere you can use it. + + mkdir /mnt/stuff + mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/510x69xmount.png.pagespeed.ic.k0i1tvqgcV.png) + +#### Resizing a Logical Volume #### + +One of the benefits of logical volumes is you can make your shares physically bigger or smaller without having to move everything to a bigger hard drive. Instead, you can add a new hard drive and extend your volume group on the fly. Or if you have a hard drive that isn’t used you can remove it from the volume group to shrink your logical volume. + +There are three basic tools for making physical volumes, volume groups, and logical volumes bigger or smaller. + +Note: Each of these commands will need to be preceded by pv, vg, or lv depending on what you are working with. + +- resize – can shrink or expand physical volumes and logical volumes but not volume groups +- extend – can make volume groups and logical volumes bigger but not smaller +- reduce – can make volume groups and logical volumes smaller but not bigger + +Let’s walk through an example of how to add a new hard drive to the logical volume “lvstuff” we just created. + +#### Install and Format new Hard Drive #### + +To install a new hard drive follow the steps above to create a new partition and add change it’s partition type to LVM (8e). Then use pvcreate to create a physical volume that LVM can recognize. + +#### Add New Hard Drive to Volume Group #### + +To add the new hard drive to a volume group you just need to know what your new partition is, /dev/sdc1 in our case, and the name of the volume group you want to add it to. + +This will add the new physical volume to the existing volume group. + + vgextend vgpool /dev/sdc1 + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/vgextend.png.pagespeed.ce.atRPT1yg5f.png) + +#### Extend Logical Volume #### + +To resize the logical volume we need to say how much we want to extend by size instead of by device. In our example we just added a 8 GB hard drive to our 3 GB vgpool. To make that space usable we can use lvextend or lvresize. + + lvextend -L8G /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/lvextend1.png.pagespeed.ce.6scXbQVUTT.png) + +While this command will work you will see that it will actually resize our logical volume to 8 GB instead of adding 8 GB to the existing volume like we wanted. To add the last 3 available gigabytes you need to use the following command. + + lvextend -L+3G /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/430x85xlvextend2.png.pagespeed.ic.7aBiTBrW03.png) + +Now our logical volume is 11 GB in size. + +#### Extend File System #### + +The logical volume is 11 GB but the file system on that volume is still only 3 GB. To make the file system use the entire 11 GB available you have to use the command resize2fs. Just point resize2fs to the 11 GB logical volume and it will do the magic for you. + + resize2fs /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/650x150xresize2fs.png.pagespeed.ic.Mx74EdMuk_.png) + +**Note: If you are using a different file system besides ext3/4 please see your file systems resize tools.** + +#### Shrink Logical Volume #### + +If you wanted to remove a hard drive from a volume group you would need to follow the above steps in reverse order and use lvreduce and vgreduce instead. + +1. resize file system (make sure to move files to a safe area of the hard drive before resizing) +1. reduce logical volume (instead of + to extend you can also use – to reduce by size) +1. remove hard drive from volume group with vgreduce + +#### Backing up a Logical Volume #### + +Snapshots is a feature that some newer advanced file systems come with but ext3/4 lacks the ability to do snapshots on the fly. One of the coolest things about LVM snapshots is your file system is never taken offline and you can have as many as you want without taking up extra hard drive space. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/652x202xbanner-2.png.pagespeed.ic.VtOUuqYX1W.png) + +When LVM takes a snapshot, a picture is taken of exactly how the logical volume looks and that picture can be used to make a copy on a different hard drive. While a copy is being made, any new information that needs to be added to the logical volume is written to the disk just like normal, but changes are tracked so that the original picture never gets destroyed. + +To create a snapshot we need to create a new logical volume with enough free space to hold any new information that will be written to the logical volume while we make a backup. If the drive is not actively being written to you can use a very small amount of storage. Once we are done with our backup we just remove the temporary logical volume and the original logical volume will continue on as normal. + +#### Create New Snapshot #### + +To create a snapshot of lvstuff use the lvcreate command like before but use the -s flag. + + lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/597x68xlvcreate-snapshot.png.pagespeed.ic.Rw2ivtcpPg.png) + +Here we created a logical volume with only 512 MB because the drive isn’t being actively used. The 512 MB will store any new writes while we make our backup. + +#### Mount New Snapshot #### + +Just like before we need to create a mount point and mount the new snapshot so we can copy files from it. + + mkdir /mnt/lvstuffbackup + mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/565x68xmount-snapshot.png.pagespeed.ic.pVMkhK1o4x.png) + +#### Copy Snapshot and Delete Logical Volume #### + +All you have left to do is copy all of the files from /mnt/lvstuffbackup/ to an external hard drive or tar it up so it is all in one file. + +**Note: tar -c will create an archive and -f will say the location and file name of the archive. For help with the tar command use man tar in the terminal.** + + tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/ + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/627x67xsnapshot-backup.png.pagespeed.ic.tw-2AK_lfZ.png) + +Remember that while the backup is taking place all of the files that would be written to lvstuff are being tracked in the temporary logical volume we created earlier. Make sure you have enough free space while the backup is happening. + +Once the backup finishes, unmount the volume and remove the temporary snapshot. + + umount /mnt/lvstuffbackup + lvremove /dev/vgpool/lvstuffbackup/ + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/630x102xlvremove.png.pagespeed.ic.yBWk47X6lF.png) + +#### Deleting a Logical Volume #### + +To delete a logical volume you need to first make sure the volume is unmounted, and then you can use lvremove to delete it. You can also remove a volume group once the logical volumes have been deleted and a physical volume after the volume group is deleted. + +Here are all the commands using the volumes and groups we’ve created. + + umount /mnt/lvstuff + lvremove /dev/vgpool/lvstuff + vgremove vgpool + pvremove /dev/sdb1 /dev/sdc1 + +![](http://cdn5.howtogeek.com/wp-content/uploads/2011/02/580x185xdelete-lvm.png.pagespeed.ic.3zJTo0Zu9k.png) + +That should cover most of what you need to know to use LVM. If you’ve got some experience on the topic, be sure to share your wisdom in the comments. + +-------------------------------------------------------------------------------- + +via: http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.howtogeek.com/howto/36568/what-is-logical-volume-management-and-how-do-you-enable-it-in-ubuntu/ +[2]:http://www.howtogeek.com/howto/17001/how-to-format-a-usb-drive-in-ubuntu-using-gparted/ +[3]:http://www.howtogeek.com/howto/33552/htg-explains-which-linux-file-system-should-you-choose/ \ No newline at end of file diff --git a/sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md b/sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md new file mode 100644 index 0000000000..7554abd392 --- /dev/null +++ b/sources/tech/20150318 How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots.md @@ -0,0 +1,67 @@ +How to Use LVM on Ubuntu for Easy Partition Resizing and Snapshots +================================================================================ +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_55035707bbd74.png.pagespeed.ic.9_yebxUF1C.png) + +Ubuntu’s installer offers an easy “Use LVM” checkbox. The description says it enables Logical Volume Management so you can take snapshots and more easily resize your hard disk partitions — here’s how to do that. + +LVM is a technology that’s similar to [RAID arrays][1] or [Storage Spaces on Windows][2] in some ways. While this technology is particularly useful on servers, it can be used on desktop PCs, too. + +### Should You Use LVM With Your New Ubuntu Installation? ### + +The first question is whether you even want to use LVM with your Ubuntu installation. Ubuntu makes this easy to enable with a quick click, but this option isn’t enabled by default. As the installer says, this allows you to resize partitions, create snapshots, merge multiple disks into a single logical volume, and so on — all while the system is running. Unlike with typical partitions, you don’t have to shut down your system, boot from a live CD or USB drive, and [resize your partitions while they aren’t in use][3]. + +To be perfectly honest, the average Ubuntu desktop user probably won’t realize whether they’re using LVM or not. But, if you want to do more advanced things later, LVM can help. LVM is potentially more complex, which could cause problems if you need to recover your data later — especially if you’re not that experienced with it. There shouldn’t be a noticeable performance penalty here — LVM is implemented right down in the Linux kernel. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_55035cbada6ae.png.pagespeed.ic.cnqyiKfCvi.png) + +### Logical Volume Management Explained ### + +We’re previously [explained what LVM is][4]. In a nutshell, it provides a layer of abstraction between your physical disks and the partitions presented to your operating system. For example, your computer might have two hard drives inside it, each 1 TB in size. You’d have to have at least two partitions on these disks, and each of these partitions would be 1 TB in size. + +LVM provides a layer of abstraction over this. Instead of the traditional partition on a disk, LVM would treat the disks as two separate “physical volumes” after you initialize them. You could then create “logical volumes” based on these physical volumes. For example, you could combine those two 1 TB disks into a single 2 TB partition. Your operating system would just see a 2 TB volume, and LVM would deal with everything in the background. A group of physical volumes and logical volumes is known as a “volume group.” A typical system will just have a single volume group. + +This layer of abstraction makes it possibly to easily resize partitions, combine multiple disks into a single volume, and even take “snapshots” of a partition’s file system while it’s running, all without unmounting it. + +Note that merging multiple disks into a single volume can be a bad idea if you’re not creating backups. It’s like with RAID 0 — if you combine two 1 TB volumes into a single 2 TB volume, you could lose important data on the volume if just one of your hard disks fails. Backups are crucial if you go this route. + +### Graphical Utilities for Managing Your LVM Volumes ### + +Traditionally, [LVM volumes are managed with Linux terminal commands][5].These will work for you on Ubuntu, but there’s an easier, graphical method anyone can take advantage of. If you’re a Linux user used to using GParted or a similar partition manager, don’t bother — GParted doesn’t have support for LVM disks. + +Instead, you can use the Disks utility included along with Ubuntu for this. This utility is also known as GNOME Disk Utility, or Palimpsest. Launch it by clicking the icon on the dash, searching for Disks, and pressing Enter. Unlike GParted, the Disks utility will display your LVM partitions under “Other Devices,” so you can format them and adjust other options if you need to. This utility will also work from a live CD or USB drive, too. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_550361b3772f7.png.pagespeed.ic.nZWwLJUywR.png) + +Unfortunately, the Disks utility doesn’t include support for taking advantage of LVM’s most powerful features. There’s no options for managing your volume groups, extending partitions, or taking snapshots. You could do that from the terminal, but you don’t have to. Instead, you can open the Ubuntu Software Center, search for LVM, and install the Logical Volume Management tool. You could also just run the **sudo apt-get install system-config-lvm** command in a terminal window. After it’s installed, you can open the Logical Volume Management utility from the dash. + +This graphical configuration tool was made by Red Hat. It’s a bit dated, but it’s the only graphical way to do this stuff without resorting to terminal commands. + +Let’s say you wanted to add a new physical volume to your volume group. You’d open the tool, select the new disk under Uninitialized Entries, and click the “Initialize Entry” button. You’d then find the new physical volume under Unallocated Volumes, and you could use the “Add to existing Volume Group” button to add it to the “ubuntu-vg” volume group Ubuntu created during the installation process. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_550363106789c.png.pagespeed.ic.drVInt3Weq.png) + +The volume group view shows you a visual overview of your physical volumes and logical volumes. Here, we have two physical partitions across two separate hard drives. We have a swap partition and a root partition, just as Ubuntu sets up its partitioning scheme by default. Because we’ve added a second physical partition from another drive, there’s now a good chunk of unused space. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_550363f631c19.png.pagespeed.ic.54E_Owcq8y.png) + +To expand a logical partition into the physical space, you could select it under Logical View, click Edit Properties, and modify the size to grow the partition. You could also shrink it from here. + +![](http://cdn5.howtogeek.com/wp-content/uploads/2015/03/ximg_55036893712d3.png.pagespeed.ic.ce7y_Mt0uF.png) + +The other options in system-config-lvm allow you to set up snapshots and mirroring. You probably won’t need these features on a typical desktop, but they’re available graphically here. Remember, you can also [do all of this with terminal commands][6]. + +-------------------------------------------------------------------------------- + +via: http://www.howtogeek.com/211937/how-to-use-lvm-on-ubuntu-for-easy-partition-resizing-and-snapshots/ + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.howtogeek.com/162676/how-to-use-multiple-disks-intelligently-an-introduction-to-raid/ +[2]:http://www.howtogeek.com/109380/how-to-use-windows-8s-storage-spaces-to-mirror-combine-drives/ +[3]:http://www.howtogeek.com/114503/how-to-resize-your-ubuntu-partitions/ +[4]:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ +[5]:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ +[6]:http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/ \ No newline at end of file diff --git a/sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md b/sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md new file mode 100644 index 0000000000..0c01862bff --- /dev/null +++ b/sources/tech/20150318 How to share a directory with Samba on Fedora or CentOS.md @@ -0,0 +1,144 @@ +How to share a directory with Samba on Fedora or CentOS +================================================================================ +Nowadays sharing data across different computers is not something new at home or many work places. Riding on this trend, modern operating systems make it easy to share and exchange data transparently across computers via network file systems. If your work environment involves a mix of Microsoft Windows and Linux computers, one way to share files and folders among them is via SMB/CIFS, a cross-platform network file sharing protocol. Windows Microsoft natively supports SMB/CIFS, while Linux offers free software implementation of SMB/CIFS network protocol in Samba. + +In this article, we will demonstrate **how to share a directory using Samba**. The Linux platform we will use is **Fedora or CentOS**. This article is dividied into four parts. First, we will install Samba under Fedora/CentOS environment. Next, we discuss how to adjust SELinux and firewall configurations to allow file sharing with Samba. Finally, we cover how to enable Samba to share a directory. + +### Step One: Install Samba on Fedora or CentOS ### + +First thing first. Let's install Samba and configure basic settings. + +Check whether Samba application is already installed on your system by running: + + $ rpm -q samba samba-common samba-client + +If the above command doesn't show anything at all, it means that Samba is not installed. In that case, install Samba using the command below. + + $ sudo yum install samba samba-common samba-client + +Next, creates a local directory which will share data over network. This directory will be exported to remote users as a Samba share. In this tutorial, we will create this directory in the top-level directory '/', so make sure that you have the privileges to do it. + + $ sudo mkdir /shared + +If you want to create a shared directory inside your home directory (e.g., ~/shared), you must activate Samba home directory sharing in the SELinux options, which will be described below in more detail. + +After creating /shared directory, set the privileges of the directory so other users can access it. + + $ sudo chmod o+rw /shared + +If you don't want other users to be able to have write to the directory, just remove the 'w' option in chmod command as follows. + + $ sudo chmod o+r /shared + +Next, create one empty file as a test. This file will be used to verify that he Samba share is mounted properly. + + $ sudo touch /shared/file1 + +### Step Two: Configure SELinux for Samba ### + +Next, we need to re-configure SELinux which is enabled by default in Fedora and CentOS distributions. SELinux allows Samba to read and modify files or directories only when they have the right security context (e.g., labeled with the 'samba_share_t' attribute). + +The following command adds the necessary label to file-context configuration: + + $ sudo semanage fcontext -a -t samba_share_t "(/.*)?" + +Replace the with the local directory we created earlier for Samba share (e.g., /shared): + + $ sudo semanage fcontext -a -t samba_share_t "/shared(/.*)?" + +To activate the label change, we then must run the restorecon command like below. + + $ sudo restorecon -R -v /shared + +![](https://farm9.staticflickr.com/8584/16652774078_2055f45f70_b.jpg) + +To share a directory inside our home directory via Samba, we must enable sharing home directory option in SELinux because it is disabled by default. The following command achieves the desired effect. Skip this step if you are not sharing your home directory. + + $ sudo setsebool -P samba_enable_home_dirs 1 + +### Step Three: Configure Firewall for Samba ### + +The next step is to open necessary TCP/UDP ports in the firewall settings for Samba to operate. + +If you are using firewalld (e.g., on Fedora or CentOS 7), the following command will take care of permanent firewall rule change for Samba service. + + $ sudo firewall-cmd --permanent --add-service=samba + +If you are using iptables for your firewall (e.g., CentOS 6 or earlier), use the following commands to open up necessary Samba ports to the world. + + $ sudo vi /etc/sysconfig/iptables + +---------- + + -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT + -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT + +Then restart iptables service: + + $ sudo service iptables restart + +### Step Four: Change Samba Configuration ### + +The last step is to configure Samba to export a created local directory as a Samba-share. + +Open the Samba configuration file with a text editor, and add the following lines at the bottom of the file. + + $ sudo nano /etc/samba/smb.conf + +---------- + + [myshare] + comment=my shared files + path=/shared + public=yes + writeable=yes + +In the above the text inside a pair of brackets (e.g., "myshare") is the name of the Samba-shared resource, which will be used to access the Samba share from a remote host. + +Create a Samba user account which is required to mount and export the Samba file system. To create a Samba user, use the smbpasswd tool. Note that the Samba user account must be the same as any existing Linux user. If you try to add a non-existing user with smbpasswd, it will give an error message. + +If you don't want to use any existing Linux user as a Samba user, you can create a new dedicated user in your system. For safety, set the new user's login shell to /sbin/nologin, and do not create its home directory. + +In this example, we are creating a new user named "sambaguest" as follows. + + $ sudo useradd -M -s /sbin/nologin sambaguest + $ sudo passwd sambaguest + +![](https://farm9.staticflickr.com/8702/16814479366_53f540d3ba_b.jpg) + +After creating a new user, add the user as a Samba user using smbpasswd command. When this command asks a password, you can type a different password than the user's password. + + $ sudo smbpasswd -a sambaguest + +4. Activate the Samba service, and check whether the Samba service is running or not. + + $ sudo systemctl enable smb.service + $ sudo systemctl start smb.service + $ sudo systemctl is-active smb + +![](https://farm8.staticflickr.com/7607/16652984770_622f24bccc_b.jpg) + +To see the list of shared directories in Samba, type the following command. + + $ smbclient -U sambaguest -L localhost + +![](https://farm8.staticflickr.com/7281/16220411103_06bf585901_b.jpg) + +The following is a screenshot of accessing the Samba-shared directory on Thunar file manager, and doing copy-paste of file1. Note that the Samba share is accessible via "smb:///myshare" address on Thunar. + +![](https://farm8.staticflickr.com/7644/16218011174_c8b34fcedc_b.jpg) + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/share-directory-samba-fedora-centos.html + +作者:[Kristophorus Hadiono][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/kristophorus \ No newline at end of file diff --git a/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md new file mode 100644 index 0000000000..f09b6b03b2 --- /dev/null +++ b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md @@ -0,0 +1,94 @@ +translating wi-cuckoo LLAP +Install And Use ‘Go For It!’ To Do App In Linux +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_For_It_TODO_Linux.jpeg) + +How do you manage tasks and remember things in desktop Linux? I preferred [using sticky notes in Ubuntu][1] for a long time. But the problem I faced was syncing it with other devices, especially with my smartphone. This is the reason why went on with [Google Keep][2]. + +Now, Google Keep is feature rich app and I really like it, and like it to the extent of calling it [Linux alternative of Evernote][3]. But not everyone may like a feature rich todo list app. Minmalist is the current trend and liked by many. And if you are one of the minimalist lover, who is looking for an open source to do list app, you should give [Go For It!][4] a try. + +### Go For It! productivity desktop app for Linux ### + +Go For It! is a simple to do list app that comes with a timer to keep you focused on the work. So, you add a task to the list and can attach a timer to it. It will keep remind you to work on the task. You can watch the video by its developer, [Manuel Kehl][5]: + +注释:youtube视频,发布的时候可做成一个链接 + + +### Install Go For It! ### + +To install Go For It! in Ubuntu 15.04, 14.10, 14.04 and other Ubuntu based Linux distributions such as Linux Mint, elementary OS Freya etc, use the official PPA of this app: + + sudo add-apt-repository ppa:mank319/go-for-it + sudo apt-get update + sudo apt-get install go-for-it + +You can download the .deb binaries, binaries for Windows and source code from the respective links below: + +- [Download source code][6] +- [Download .deb binaries][7] +- [Download for Windows][8] + +### Using Go For It! in desktop Linux ### + +Using Go For It! is really simple. You add tasks in the list. The tasks are saved in todo.txt file. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux.png) + +By default a timer of 25 minutes will be set on each task. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_1.png) + +Once done, task is automatically archived to done.txt. Based on preferences, it will send desktop notifications at regular time interval and few minutes before the task is supposed to be over: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Linux_notification.png) + +You can change all these preferences from configuration. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_2.png) + +So far so good. But what about using it on a smartphone. A productivity app is not complete if you cannot keep it synced across various devices. Good thing is that Go For It! is based on [todo.txt][9], which means you can use it in smartphones using third party apps and a cloud service like Dropbox. + +### Using Go For It! in Android smartphones and tablets ### + +You need to do couple of things here. First thing first, install Dropbox in Linux as well as in your Android phone, if you haven’t installed it already. The next thing you need to do is to change the configuration of Go For It! and **change the todo.txt directory to Dropbox location**. + +Next, you will have to download [Simpletask Android app][10]. It’s a free app. Install this app. When you run Simpletask for the first time, you will ask to link your account with Dropbox: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android_1.jpeg) + +Once you have linked Simpletask with Dropbox, open the app. If you have change the configuration of Go For It! to save the files in Dropbox, you should be able to see it in Simpletask. If you do not see it, click on the settings from the bottom and use the option of Open Todo file: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android.jpeg) + +Now you should be able to see your tasks synced with Simpletask. + +### Conclusion ### + +With Simpletask, you can use it in similar fashion as a [markup language tool][11]. For minimal and focused usage Go For It! is a nice to do app. A clean interface is another plus point. It could have been better to have its own smartphone app but we already saw the workarounds. + +On the down side, Go For It! doesn’t run in background. Which means, you’ll have to keep it running always. It doesn’t even has a minimize button, a tiny annoyance. What I would like to see is an indicator applet for it. Running in the background and quick access in the panel will definitely improve its usability. + +Do try Go For It! and share your experience with it. What other to-do app do you use on desktop Linux? How does Go For It! compare with your other favorite productivity app? + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/go-for-it-to-do-app-in-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/indicator-stickynotes-windows-like-sticky-note-app-for-ubuntu/ +[2]:http://itsfoss.com/install-google-keep-ubuntu-1310/ +[3]:http://itsfoss.com/5-evernote-alternatives-linux/ +[4]:http://manuel-kehl.de/projects/go-for-it/ +[5]:http://manuel-kehl.de/about-me/ +[6]:https://github.com/mank319/Go-For-It +[7]:https://launchpad.net/~mank319/+archive/ubuntu/go-for-it +[8]:http://manuel-kehl.de/projects/go-for-it/download-windows-version/ +[9]:http://todotxt.com/ +[10]:https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&hl=en +[11]:http://itsfoss.com/install-latex-ubuntu-1404/ diff --git a/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md new file mode 100644 index 0000000000..598c56bd66 --- /dev/null +++ b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md @@ -0,0 +1,70 @@ +Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu +================================================================================ +Prey is an open source, cross platform tool which helps recover your stolen laptops, desktops, tablet computers and smart phones. It has gained vast popularity and has claimed to help recover hundreds of missing laptops and smart phones. The working of this tool is pretty simple, install it on your Laptop or smart phone, and if your device goes missing, login the Prey website with your credentials and mark your device as “Missing” there. As soon as the thief connects your device with internet, it will immediately send you the Geo location of your device. If your laptop is having webcam, it will also capture the screenshot of the thief. + +Prey consumes minimum system resources; it does not affect your device’s performance in any way. You can also use it alongside any other anti-theft application you had installed on your device. It uses secure and encrypted channels to communicate your device data with Prey servers. + +### Installing and configuring Prey on Ubuntu ### + +Let’s see how we can install and configure Prey on ubuntu, note that during configuration process, we will have to register an account at Prey official website. Once done, it will be able to monitor your devices. Its free account monitors up-to 3 devices, if you need to add more devices to its watch list, you need to purchase appropriate plan. + +Considering the popularity and use of Prey, it has been added to the official ubuntu repository now. That means you don’t need to add any additional PPA to the package manager. Simply launch your terminal application and run the following command to install it: + + sudo apt-get install prey + +![Install Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey.png) + +![Install Prey 1](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey-1.png) + +It is a very lightweight application, uses only few MB of space on the system, once installation is completed, launch it from Applications >> Prey and it will ask you for the configuration. + +Choose “New user” if you are using this app for first time. + +![Prey New User](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-New-User.png) + +This second step is actually the process to sign you up on Prey official website. Please provide your username, email address and password for free account. + +![Register Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Register-Prey.png) + +Hit “Apply” once done, that’s all, your computer is now protected by Prey. + +![Prey Configuration](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Configuration.png) + +Login your newly created [Prey account][1] and you should be able to see your device information there under “Devices” menu. + +![Prey Web Login](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Web-Login.png) + +As soon as your laptop or any other device goes missing, simply login your Prey web account and change the device status to “missing” by clicking “Set Device to Missing” option. + +![Prey Missing Page](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-1.png) + +Choose report frequency from here and hit “Yes, my device is missing”. Report Frequency option is the time interval after which this app will send you status updates for your device location. It will email you as soon as the device status is changed from web interface. + +![Prey Missing Email](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-2.png) + +As soon as your stolen device is connected to the internet, it will immediately send you report, containing your device's Geo whereabouts and IP address. + +![Prey Found Report](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-3.png) + +Click the report link and you should be able to see your device’s Geo location and IP address. + +![Prey Final](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Final.png) + +There is one known drawback in Prey , It needs your device to be connected to internet for sending Geo location, if thief is smart enough to format your device hard disk before connecting it to the network, then you’ll never get report of its recovery. But there is still a work around to overcome this drawback, make sure to add a BIOS password and disable booting the system from removable devices. + +### Conclusion ### + +It is a small, very useful security application which lets you track all of your devices on a single place, although not perfect, but still provides good level of recovery chances for your stolen devices. It runs seamlessly on Linux, Windows and Mac operating system. Here are details about Prey Pro plans. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/anti-theft-application-prey-ubuntu/ + +作者:[Aun Raza][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ +[1]:https://preyproject.com/ \ No newline at end of file diff --git a/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md b/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md new file mode 100644 index 0000000000..ff7ef029e7 --- /dev/null +++ b/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md @@ -0,0 +1,159 @@ +Sleuth Kit - Open Source Forensic Tool to Analyze Disk Images and Recover Files +================================================================================ +SIFT is a Ubuntu based forensics distribution provided by SANS Inc. It consist of many forensics tools such as Sleuth kit / Autopsy etc . However, Sleuth kit/Autopsy tools can be installed on Ubuntu/Fedora distribution instead of downloading complete distribution of SIFT. + +Sleuth Kit /Autopsy is open source digital forensics investigation tool which is used for recovering the lost files from disk image and analysis of images for incident response. Autopsy tool is a web interface of sleuth kit which supports all features of sleuth kit. This tool is available for both Windows and Linux Platforms. + +### Install Sleuth kit ### + +First of all, download Sleuth kit software from [sleuthkit][1] website. Use wget command to download it in terminal which is shown in the figure. + + # wget http://cznic.dl.sourceforge.net/project/sleuthkit/sleuthkit/4.1.3/sleuthkit-4.1.3.tar.gz + +![Download Sleuth Kit](http://blog.linoxide.com/wp-content/uploads/2015/03/download-sleuthkeit.png) + +Extract the sleuthkit-4.1.3.tar.gz using following command and go inside the extracted directory + + # tar -xvzf sleuthkit-4.1.3.tar.gz + +![Extraction Process](http://blog.linoxide.com/wp-content/uploads/2015/03/extract.png) + +Run following command which perform the requirement check before sleuth kit installation + + #./configure + +![configure](http://blog.linoxide.com/wp-content/uploads/2015/03/configure.png) + +Make command compile the sleuth kit code. + + #make + +![make](http://blog.linoxide.com/wp-content/uploads/2015/03/make.png) + +Finally following command install it under **/usr/local** path. + + #make install + +![make install](http://blog.linoxide.com/wp-content/uploads/2015/03/make-install.png) + +### Install Autopsy Tool ### + +Sleuth kit installation is complete and now we will install autopsy interface. Download Autopsy software from [sleuthkit's autopsy page][2] . Use wget command to download it in terminal which is shown in the figure. + + # wget http://kaz.dl.sourceforge.net/project/autopsy/autopsy/2.24/autopsy-2.24.tar.gz + +![Autpsy download link](http://blog.linoxide.com/wp-content/uploads/2015/03/autopsy.png) + +Extract the autopsy-2.24.tar.gz using following command and go inside the extracted directory + + # tar -xvzf autopsy-2.24.tar.gz + +![Autopsy Extraction](http://blog.linoxide.com/wp-content/uploads/2015/03/Autopsy-extraction.png) + +Configuration script of autopsy asks for NSRL (National Software Reference Library) and path of **Evidence_Locker** folder. + +Enter "n" for NSRL prompt and create Evidence_Locker folder under **/usr/local** directory. Autopsy stores the configuration files, audit logs and output under Evidence_Locker folder. + + #mkdir /usr/local/Evidence_Locker + + #cd autopsy-2.24 + + #./configure + +![Autopsy Configuration Script](http://blog.linoxide.com/wp-content/uploads/2015/03/autopsy-configuration.png) + +After adding Evidence_Locker path in installation process , autopsy stores configuration files in it and shows a following message to run the autopsy program. + +![Start Autopsy](http://blog.linoxide.com/wp-content/uploads/2015/03/start-autopsy.png) + +Type **./autopsy** command in terminal to start the graphical interface of Sleuth kit tool. + +![Autopsy Started](http://blog.linoxide.com/wp-content/uploads/2015/03/autopsy-started.png) + +Type following address in the web browser to access the interface of autopsy . + + http://localhost:9999/autopsy + +Main web page of autopsy plugin is shown int the following figure. + +![Main Page](http://blog.linoxide.com/wp-content/uploads/2015/03/main-interface.png) + +Click on the **New Case** button to start analysis in autopsy tool. Enter the case name, description about the investigation and name of agent which is shown in the following figure. + +![create new case](http://blog.linoxide.com/wp-content/uploads/2015/03/create-new-case1.png) + +Following web page will appear after entering the details in the above page. Click on **Add Host** button to add details for the analyst machine. + +![add host](http://blog.linoxide.com/wp-content/uploads/2015/03/add-host1.png) + +Enter host name, description and time zone setting of analyst machine on the next page. + +![add host-detial](http://blog.linoxide.com/wp-content/uploads/2015/03/add-host-detial.png) + +Click on the **Add Image** button to add image file for forensics analysis. + +![add image](http://blog.linoxide.com/wp-content/uploads/2015/03/add-image.png) + +Click on the **Add Image File** button on the following web page. It opens new web page which require Path of image file and select type & importing method. + +![Add image file](http://blog.linoxide.com/wp-content/uploads/2015/03/Add-image-file.png) + +As shown in the following figure, we have entered path of Linux image file. In our case, image file is partition of disk. + +![add image parition](http://blog.linoxide.com/wp-content/uploads/2015/03/add-image-parition.png) + +Click on the next button and select **Calculate hash** option in the next page which is shown in the following figure. It also detect the file system type of the given image. + +![image and file system detail](http://blog.linoxide.com/wp-content/uploads/2015/03/image-and-file-system-detail.png) + +Following window shows the MD5 hash of the image file before static analysis . + +![hash](http://blog.linoxide.com/wp-content/uploads/2015/03/hash1.png) + +On the next web page, autopsy shows following information about the image file. + +- mount point for the image +- name of image +- file system type of given image + +Click on the **details** button to get more information about the given image file. It also offer extraction of unallocated fragments and strings from the volume of image file which is shown in the following figure. + +![Image detail](http://blog.linoxide.com/wp-content/uploads/2015/03/image-details.png) + +Click on **Analyze** button which is shown in the below figure to start analysis on given image . It opens another page which shows the multiple options for image analysis. + +![analysis](http://blog.linoxide.com/wp-content/uploads/2015/03/analysis1.png) + +Autopsy offer following features during image analysis process. + +- File Analysis +- Keyword Search +- File Type +- Image Details +- Data Unit + +File Analysis on given image of Linux partition is shown in the following figure. + +![Analysis of image](http://blog.linoxide.com/wp-content/uploads/2015/03/Analysis-of-image.png) + +It extracts all files and folders from the given image . Extraction of deleted files are shown int he figure. + +![Deleted Files](http://blog.linoxide.com/wp-content/uploads/2015/03/deleted.png) + +### Conclusion ### + +Hopefully this article will be useful for the beginner in static forensics analysis of disk image. Autopsy is web interface for sleuth kit which provides features such as extraction of strings , recovery of deleted files, timeline analysis, extraction of web surfing history, keyword search and email analysis on windows and linux disk images. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/autopsy-sleuth-kit-installation-ubuntu/ + +作者:[nido][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/naveeda/ +[1]:http://www.sleuthkit.org/sleuthkit/download.php +[2]:http://www.sleuthkit.org/autopsy/download.php \ No newline at end of file diff --git a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md new file mode 100644 index 0000000000..c3aa5b76b5 --- /dev/null +++ b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -0,0 +1,145 @@ +2015你可以买的一款基于Linux的迷你PC +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) + +在我看来迷你PC将在不久的将来会替代传统桌面电脑。传统桌面的有一个像送风机那样占据大量空间的风扇。迷你PC,在另一方面说很小巧和紧凑。通常是4″或者5″大小,可以轻易地放在桌子上。 + +不仅如此,这些迷你PC的无风扇设计是一个好处。当然,你可以购买无风扇的常规电脑,但是空间占用仍然是一个问题。对我个人来说,我觉得迷你PC外观上看着很可爱。如果你不是一个游戏玩家也不想买新的桌面PC,我强烈建议你**购买一个基于Linux的迷你PC**。 + +如果你考虑我的建议买一个,那么你或许想知道该买哪款。不要担心,这篇文章我们会介绍**四款你可以在2015购买的基于Linux的迷你PC**。 + +### 基于Linux的迷你PC ### + +请注意这些PC可能还不能下单。它们中有些还刚刚公布,在不久的将来才会面向公众出售。 + + +#### 1. System76出品的Meerkat #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) + +[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: +[System76][1] 是一家仅出品基于Ubuntu电脑、笔记本、服务器的电脑生产商。[System76在上周宣布了一款基于Ubuntu的迷你PC][2]。让我看一下它的规格: + +**规格** + +- Intel第五代处理器,共有两种选择 i3-5010U 和 i5-5250U +- 最高2TB存储 (M.2 SATA SSD) +- 16 GB DDR3 内存 +- i3和i5处理器下相应的Intel HD 5500 和 Intel HD 6000显卡 +- 4″ x 4″ 大小 +- WiFi +- 1 Gb 网卡 +- 2个USB 3.0端口 + +**价格** + +在$500之内(还没确定)。 + +**发售日期** + +美国地区在2015年3月底 + +#### 2.Compulab出品的Mintbox Mini #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) + +[Compulab][3]将它的旗舰产品基于Linux Mint的桌面设备成了[Mintbox Mini][4]。紧凑的版本在4″大小。更多的细节如下: + +**规格** + +- AMD A4-6400T 处理器 +- Radeon R3 显卡 +- 4 GB 内存 +- 64 GB SSD +- 2个USB 3.0端口, 3个USB 2.0端口 +- 2个HDMI输出端 +- 802.11 b/g/n Wifi +- 千兆网卡 +- MicroSD读卡器 + +**价格** + +$300起售 + +**发售日期** + +2015第二季度 + +#### 3. Compulab出品的Utilite2 #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) + +It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. +Compulab并不是坚持用Linux Mint的。它在去年12月宣布了一款运行Ubuntu的ARM桌面PC。大小是3.4″x2.3″,[Utilite2][5]有最现代的特性和价格 + + +**规格** + +- 高通Snapdragon 600 (APQ8064) 四核 CPU 1.7GHz +- 2GB 内存, 可选32 GB的eMMC mSATA 存储 +- 高通 Adreno™ GPU显卡 +- 1080p 视频回放和捕捉 +- 双天线 WiFi 802.11 和 Bluetooth 4.0 +- 千兆网卡, 4个USB2端口和USB OTG +- 蜂窝调制解调器支持 + +**价格** + +常规版售价$192、带硬盘售价$229。邮费另付。 + +**发售日期** + +现在就可购买。运送将花费4周。 + +#### Think Penguin出品的Penguin Pocket Wee #### + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) + +[Think Penguin][6]是一家开源硬件生产商。在迷你PC领域,它提供了[Penguin Pocket Wee][7]。大小是4.6″x 4.4″x 1.4″ ,, Penguin Pocket Wee提供了大量的配置。你可以选择处理器、存储、网卡等。你可以选择购买预装你喜欢的Linux发行版,默认系统是Ubuntu。 + +The general configuration is as following: +下面的默认的配置 + +- Intel Core i3 或者 i5处理器,最高支持1080p视频 +- 最高扩展至 16GB 的 DDR3内存 +- Intel HD 显卡 +- Wireless N +- 最大250GB的SSD +- 4个USB 3.0接口 +- Intel 10/100/1000 千兆网卡 + +**价格** + +Basic model starts at $499 and it can go up to $1000 based on the configuration you select. +基础版本$499起售,根据你的配置最大是$1000。 + +**发售日期** + +现在就可下订单。该公司在美国和英国也有办公司,所以应也可以运送到南美和欧洲。 + +### 你会选哪种? ### + +我故意没有介绍[Raspberry Pi 2][8]或者其他Linux微电脑如[Intel的电脑棒][9]。原因是我不认为这些微电脑属于迷你PC的范畴。 + +你怎么看?你想用迷你PC代替你的桌面PC么?是不是还有我没有在**最好的基于Linux的迷你PC**列出的PC?分享你们的观点吧。 + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ + +作者:[Abhishek][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:https://system76.com/ +[2]:http://itsfoss.com/system76-unveils-ubuntu-based-mini-pc-meerkat/ +[3]:http://www.compulab.co.il/ +[4]:http://itsfoss.com/mintbox-mini-compact-linux-mint-powered-pc-unveiled/ +[5]:http://www.compulab.co.il/utilite-computer/web/utilite2-overview +[6]:https://www.thinkpenguin.com/ +[7]:https://www.thinkpenguin.com/gnu-linux/penguin-pocket-wee-gnu-linux-desktop +[8]:http://itsfoss.com/raspberry-pi-2-specs/ +[9]:http://itsfoss.com/intels-compute-stick/ diff --git a/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md deleted file mode 100644 index 1247c8eb78..0000000000 --- a/translated/talk/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md +++ /dev/null @@ -1,42 +0,0 @@ -Ubuntu 15.04 最终实现你可以设置你的菜单 ‘始终可见’ -================================================================================ -**如果你不喜欢 Unity 的全局菜单在你的鼠标离开后就淡出你的视野, Ubuntu 15.04 有一些额外附加去实现这点.** - -![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/02/locally-integrated-menus-in-ubuntu.png) - -最新的Ubuntu 15.04的Unity界面通过在提议通道提供了一个选项**使应用程序菜单在Ubuntu中可见**. - -不时尚, 不过时, 没有丢失的菜单. - -最大的缺点是它目前只能通过dconf来控制,而不是常规的面向用户的选项设置。 - -我希望(如果不是期望)能有一个设置这个特性的选项被加入到Ubuntu的【系统设置】>【外观】部分的开发仍在继续。 - -现在,如果你使用的是Ubuntu15.04,并启用“建议”的更新通道后,你会发现这个开关存在于在COM>规范>Unity>“始终显示菜单”。 - - -### 迟到总比没有要好? ### - -开发者计划在Ubuntu14.04 LTS的下一个SRU中反向移植这个选项(假设在测试阶段没有任何意外发生)。 - -本地集成菜单(LIM)在Ubuntu 14.04 LTS 首次获得了欣赏,被广泛认为在那些喜欢隐藏方式的和那些不喜欢必须使用鼠标和触摸板的人之间的最佳的折衷方法 - -虽然本地集成菜单给我们带来了半路上沉默的批评在统一方面,默认的“淡入/淡出”行为给我们留下了令人发痒的伤痕 - -在Ubuntu 过去的几个版本中已经能够看到积极的去解决早期UX的经历过的关切的问题。在经过几年“打算去做”的列表[我们去年终于得到了本地集成菜单][1],以及不支持的通过点击图标实现[减少和恢复Unity启动程序中不支持的应用程序的选项]。 - -一年以来我们终于得到一个选项以使应用程序菜单始终显示,无论我们的鼠标在哪里。迟来总比没有好,对不对? - --------------------------------------------------------------------------------- - -via: http://www.omgubuntu.co.uk/2015/01/ubuntu-15-04-always-show-menu-bar-option - -作者:[Joey-Elijah Sneddon][a] -译者:[JeffDing](https://github.com/JeffDing) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:https://plus.google.com/117485690627814051450/?rel=author -[1]:http://www.omgubuntu.co.uk/2014/02/locally-integrated-menus-ubuntu-14-04 -[2]:http://www.omgubuntu.co.uk/2014/03/minimize-click-launcher-option-ubuntu-14-04 diff --git a/translated/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md b/translated/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md new file mode 100644 index 0000000000..62d9af6b24 --- /dev/null +++ b/translated/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md @@ -0,0 +1,39 @@ +translated by haimingfg + +Torvalds: 参加linux内核贡献更加容易找工作 +======================================== + +相比起以往,linux内核的发展变是一个专业性的问题,作为一个无偿贡献者去贡献的项目今天在"谁写linux"被低调报道出来了。 + +这个报道由linux基金会编写,基金会说自愿者有逐年下降的趋势,上年有11.8%的内核开发是由无偿自愿者完成,从2012年起由14.6%下滑了19%。 + +![](http://images.techhive.com/images/article/2015/02/screen-shot-2015-02-17-at-5.25.43-pm-100568680-medium.idge.png) + +即使是这样,在最新的谁写linux里面报道,无偿贡献者还是主要的共享来源,共有11,968改变,整体来说有12.4%是好的,企业贡献者共同占比越来越多,有超过80%的内核贡献是有有尝的专业开发者来完成,linux基金会说。 + + +根据 linus Torvalds 说,这个有偿开发者趋势不会改变太多这个内核发展的本身。 + + +他向全世界人说,我认为不会改变太多的一个原因是不会有更多的无偿自愿者因为编写内核就会更加快找到工作而离开。 + + +Torvalds讲到,linux发展改变有很多其他原因,很自然的,新的贡献者会经常冒出来,有很多都是原来的开发者,有着10年的经验,被很多对linux感兴趣的公司抢着去做。 + + +他说:“开始我们是自愿者,但我们这几天很开心被请去开发linux” + + +Torvalds 开始抽离了他的开发角色,根据报道在3.10的内核版本里面他个人发布329补丁,占04% 逐渐地,子系统维护人员自己会检查与合并他们的代码。 + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2885339/application-development/torvalds-people-who-start-writing-kernel-code-get-hired-really-quickly.html + +作者:[Jon Gold][a] +译者:[haimingfg](https://github.com/haimingfg) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Jon-Gold/ diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md deleted file mode 100644 index a9f1019c19..0000000000 --- a/translated/tech/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md +++ /dev/null @@ -1,55 +0,0 @@ -Linux 常见问题解答--如何使用yum来下载RPM包而不进行安装. -================================================================================ -> **问题**:我想从Red Hat's的标准仓库中下载一个RPM包,我能使用yum命令来下载一个RPM包但是不进行安装吗? - -yum是基于Red Hat的系统(如CentOS,Fedora,RHEl)上的默认包管理器.使用yum,你可以安装或者更新一个RPM包,并且他会自动解决包依赖关系.但是如果你只想将一个RPM包下载到你的系统上该怎么办呢? 例如,你可能想要获取一些RPM包在以后使用,或者将他们安装在另外的机器上. - -这里说明了如何从yum仓库上下载一个RPM包. - -### 方法一:yum### - -yum命令本身就可以用来下载一个RPM包,标准的yum命令提供了`--downloadonly(只下载)`的选项来达到这个目的. - - $ sudo yum install --downloadonly - -默认情况下,一个下载的RPM包会保存在下面的目录中: - - /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages - -以上的[repository]表示下载包的来源仓库的名称(例如,base,fedora,updates) - -如果你想要讲一个包下载到一个指定的目录(如/tmp): - - $ sudo yum install --downloadonly --downloaddir=/tmp - -注意,如果下载的包包含了任意没有满足的依赖关系,yum将会把所有的依赖关系包下载,但是都不会被安装. - -另外一个重要的事情时,在CentOS/RHEL 6或更早期的版本中,你需要安装一个单独yum插件(名称为 yum-plugin-downloadonly)才能使用`--downloadonly`命令选项: - - $ sudo yum install yum-plugin-downloadonly - -如果没有该插件,你会在使用yum时得到以下错误: - - Command line error: no such option: --downloadonly - -![](https://farm9.staticflickr.com/8627/15571201803_38390aae75_c.jpg) - -### 方法二: Yumdownloader### -另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader. 这个工具时yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集. - - $ sudo yum install yum-utils - -下载一个RPM包: - - $ sudo yumdownloader - -下载的包会被保存在当前目录中.你需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件.与yum命令不同的是,任何依赖包不会被下载. - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/yum-download-rpm-package.html - -译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 diff --git a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md b/translated/tech/20150316 Install Mate desktop in FreeBSD 10.1.md similarity index 55% rename from sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md rename to translated/tech/20150316 Install Mate desktop in FreeBSD 10.1.md index 37e5255b30..76d05da5ab 100644 --- a/sources/tech/20150316 Install Mate desktop in FreeBSD 10.1.md +++ b/translated/tech/20150316 Install Mate desktop in FreeBSD 10.1.md @@ -1,61 +1,61 @@ -Install Mate desktop in FreeBSD 10.1 +在FreeBSD 10.1中安装Mate桌面 ================================================================================ ![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/03/FreeBSD-790x494.jpg) -FreeBSD is fully text mode system, however some times new users might want to use GUI desktop environment. This tutorial will help you to install Mate Desktop in Freebsd 10.1. +FreeBSD是全文本模式的系统,然而有些新用户想要使用GUI桌面环境。这个教程就是帮助你在Freebsd 10.1中安装Mate桌面。 -Here is my test system details: +下面是我的系统细节: root@Freebsd-unixmen:~ # uname -a FreeBSD Freebsd-unixmen 10.1-RELEASE FreeBSD 10.1-RELEASE #0 r274401: Tue Nov 11 21:02:49 UTC 2014 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 root@Freebsd-unixmen:~ -To start installing Mate desktop in FreeBSD 10.1, the following steps can be used. +要在FreeBSD 10.1 中开始安装Mate桌面,按照下面的步骤。 pkg install xf86-video-fbdev mate-desktop mate xorg -### Add the following lines to /etc/rc.conf ### +### 在 /etc/rc.conf 中加入下面的行 ### moused_enable="YES" dbus_enable="YES" hald_enable="YES" -### Test the installation. ### +### 测试安装 ### xinit mate-session ![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot2.png) -Mate doesn’t have a display manager of its own. Hence we can use any other display managers like XDM, GDM, slim etc to use the login manager. Here let’s see how to configure Slim DM with Mate desktop. +Mate本身没有显示管理器。因此我们会使用其他的显示管理器如XDM、GDM、slim等等来作为登录管理器。这里让我们看看如何在Mate桌面中配置Slim DM -### Install Slim ### +### 安装 Slim ### pkg install slim -Add the following line to **/etc/rc.conf**: +在**/etc/rc.conf**中加入下面的行: slim_enable="YES" -Add the following line to .xinitrc file in the user’s home directory +在用户的家目录下的.xinitrc文件加入下面的行。 exec mate-session -Reboot the machine. Now the machine will boot into Slim login where you can login to Mate session. +重启电脑。现在在你登录Mate时就会进入Slim登录界面了。 ![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot3.png) ![](http://www.unixmen.com/wp-content/uploads/2015/03/snapshot4.png) -That’s it. Cheers! +就是这样。干杯! -------------------------------------------------------------------------------- via: http://www.unixmen.com/install-mate-desktop-freebsd-10-1/ 作者:[M.el Khamlichi][a] -译者:[译者ID](https://github.com/译者ID) +译者:[geekpi](https://github.com/geekpi) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.unixmen.com/author/pirat9/ \ No newline at end of file +[a]:http://www.unixmen.com/author/pirat9/ diff --git a/translated/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md b/translated/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md new file mode 100644 index 0000000000..34b8bf4629 --- /dev/null +++ b/translated/tech/20150316 Linux FAQs with Answers--How to convert between local time and UNIX timestamp in Perl.md @@ -0,0 +1,62 @@ +Linux有问必答:Perl中本地时间和UNIX时间戳间相互转换 +================================================================================ +> **问题**: 在Perl语言中,我需要转换易读的日期和时间到对应的UNIX时间戳,反之亦然。你可以给我一些Perl代码例子吗?关于日期及时间转换到UNIX时间戳,或者相反,转换UNIX时间戳到可读的日期和时间。 + +当你的Perl脚本需要解决时间信息,这里有两种方法来表示和处理日期和时间。一种方法是易读的时间表示(例,"Sat Mar 14 10:14:05 EDT 2015"),另外一种是使用UNIX时间戳(也叫“新纪元时间”),这是从1970年1月1日到今所消耗的时间秒数。每一种方法都有它自己的优劣势,取决于你的需要,也许也就需要转换一种格式到另一种。 + +### Perl中转换本地时间到UNIX时间戳 ### + +为了从日期字符串中获得UNIX时间,可以使用Date::Parse模块中str2time()函数。此函数可以处理多种格式,例如: + +- Sat Mar 14 10:14:05 EDT 2015 +- 3/14/2015 10:14:05 -0400 +- 14/Mar/15 10:14:05 +- 14 Mar 15 10:14:05 + + use Date::Parse; + + my $local_time = "Sat Mar 14 10:14:05 EDT 2015"; + + # 1426342445 will be stored in $unix_time + my $unix_time = str2time($local_time); + +Date:Parse 模块支持多种语言(英语,法语,德语和意大利语)和时区。例如: + + use Date::Parse; + use Date::Language; + + my $lang = Date::Language->new('French'); + my $unix_time = $lang->str2time("12:14:05, Ago 16, 2014 (CEST)"); + +### Perl中UNIX时间戳到可读的日期和时间 ### + + +如果你想要转换UNIX时间戳到可读的格式,可以使用localtime()函数,此函数可以转换UNIX时间戳为一个9元素列表。然后你可以使用返回的list构造任何你需要的可读格式。这里有一个代码片段: + + # $sec, $min, $hour: 秒,分,时 + # $mday: 月中的某天 (0-31) + # $mon: 月份,范围 0 (一月) 至 11 (十二月) + # $year: 年份,与1900年的差值(2015年为2015-1900=115) + # $wday: 星期,范围 0 (星期天) 至 6 (星期六) + # $yday: 年中的某天,范围 0 至 364 (或 365 闰年) + # $isdst: 是否是夏令时 + + my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp); + + # necessary conversion of $mon and $year + $mon += 1; + $year += 1900; + + print "Current time: $year-$mon-$mday $hour:$min:$sec\n"; + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/convert-local-time-unix-timestamp-perl.html + +作者:[Dan Nanni][a] +译者:[VicYu/Vic020](http://vicyu.net) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni From ed12ddaf9ce278f50f29685bd3a0275465fc366d Mon Sep 17 00:00:00 2001 From: lihaiming Date: Sun, 22 Mar 2015 18:45:43 +0800 Subject: [PATCH 625/725] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E5=AE=8C=E7=9A=84=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...g kernel code get hired really quickly'.md | 52 ------------------- 1 file changed, 52 deletions(-) delete mode 100644 sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md diff --git a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md b/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md deleted file mode 100644 index 5b99e27165..0000000000 --- a/sources/talk/20150225 Torvalds--'People who start writing kernel code get hired really quickly'.md +++ /dev/null @@ -1,52 +0,0 @@ -translating by haimingfg - -Torvalds: 'People who start writing kernel code get hired really quickly' -================================================================================ -Torvalds: 参加linux内核贡献更加容易找工作 -======================================== - -Now more than ever, the development of the Linux kernel is a matter for the professionals, as unpaid volunteer contributions to the project reached their lowest recorded levels in the latest "Who Writes Linux" report, which was released today. - -相比起以往,linux内核的发展变是一个专业性的问题,作为一个无偿贡献者去贡献的项目今天在"谁写linux"被低调报道出来了。 - -According to the report, which is compiled by the Linux Foundation, just 11.8 percent of kernel development last year was done by unpaid volunteers -- a 19 percent downturn from the 2012 figure of 14.6 percent. The foundation says that the downward trend in volunteer contributions has been present for years. - -这个报道由linux基金会编写,基金会说自愿者有逐年下降的趋势,上年有11.8%的内核开发是由无偿自愿者完成,从2012年起由14.6%下滑了19%。 - -![](http://images.techhive.com/images/article/2015/02/screen-shot-2015-02-17-at-5.25.43-pm-100568680-medium.idge.png) - -Even so, unpaid contributors were still the single biggest source of commits in the latest Who Writes Linux, at 11,968 total changes -- good for 12.4 percent of the whole. However, corporate contributors collectively account for much, much more. The Linux Foundation said that more than 80 percent of all work on the kernel is done by paid professional developers. -即使是这样,在最新的谁写linux里面报道,无偿贡献者还是主要的共享来源,共有11,968改变,整体来说有12.4%是好的,企业贡献者共同占比越来越多,有超过80%的内核贡献是有有尝的专业开发者来完成,linux基金会说。 - -According to Linus Torvalds, the shift towards paid developers hasn't changed much about kernel development on its own. - -根据 linus Torvalds 说,这个有偿开发者趋势不会改变太多这个内核发展的本身。 - -"I think one reason it hasn't changed things all that much is that it's not so much 'unpaid volunteers are going away' as 'people who start writing kernel code get hired really quickly,'" he told Network World. - -他向全世界人说,我认为不会改变太多的一个原因是不会有更多的无偿自愿者因为编写内核就会更加快找到工作而离开。 - -Torvalds said that, while Linux development has changed for plenty of other reasons -- and that, naturally, new contributors pop up all the time -- many of the original developers, with decades of experience, have simply been snapped up by companies with an interest in Linux. - -Torvalds -讲到,linux发展改变有很多其他原因,很自然的,新的贡献者会经常冒出来,有很多都是原来的开发者,有着10年的经验,被很多对linux感兴趣的公司抢着去做。 - -"We may have started as volunteers, but we're happily employed doing Linux these days," he said. - -他说:“开始我们是自愿者,但我们这几天很开心被请去开发linux” - -Torvalds' own role in development has become increasingly hands-off, according to the report -- he has personally signed off on 329 patches since version 3.10 of kernel was released, or 0.4 percent. Increasingly, subsystem maintainers do their own reviews and merges of code. - -Torvalds 开始抽离了他的开发角色,根据报道在3.10的内核版本里面他个人发布329补丁,占04% 逐渐地,子系统维护人员自己会检查与合并他们的代码。 - --------------------------------------------------------------------------------- - -via: http://www.infoworld.com/article/2885339/application-development/torvalds-people-who-start-writing-kernel-code-get-hired-really-quickly.html - -作者:[Jon Gold][a] -译者:[haimingfg](https://github.com/haimingfg) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.infoworld.com/author/Jon-Gold/ From 9f23e49691aee0d15f83fe18cd0b46878e136158 Mon Sep 17 00:00:00 2001 From: lihaiming Date: Sun, 22 Mar 2015 19:41:13 +0800 Subject: [PATCH 626/725] =?UTF-8?q?=E7=94=B3=E8=AF=B7=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Forensic Tool to Analyze Disk Images and Recover Files.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md b/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md index ff7ef029e7..4e8461528e 100644 --- a/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md +++ b/sources/tech/20150320 Sleuth Kit--Open Source Forensic Tool to Analyze Disk Images and Recover Files.md @@ -1,3 +1,6 @@ + +tranlating by haimingfg + Sleuth Kit - Open Source Forensic Tool to Analyze Disk Images and Recover Files ================================================================================ SIFT is a Ubuntu based forensics distribution provided by SANS Inc. It consist of many forensics tools such as Sleuth kit / Autopsy etc . However, Sleuth kit/Autopsy tools can be installed on Ubuntu/Fedora distribution instead of downloading complete distribution of SIFT. @@ -156,4 +159,4 @@ via: http://linoxide.com/ubuntu-how-to/autopsy-sleuth-kit-installation-ubuntu/ [a]:http://linoxide.com/author/naveeda/ [1]:http://www.sleuthkit.org/sleuthkit/download.php -[2]:http://www.sleuthkit.org/autopsy/download.php \ No newline at end of file +[2]:http://www.sleuthkit.org/autopsy/download.php From abf3a29cc01a09af740e1861f3546201d0f006e7 Mon Sep 17 00:00:00 2001 From: Louis Wei Date: Sun, 22 Mar 2015 20:38:50 +0800 Subject: [PATCH 627/725] Delete 20150318 Install And Use 'Go For It!' To Do App In Linux.md --- ...And Use 'Go For It!' To Do App In Linux.md | 94 ------------------- 1 file changed, 94 deletions(-) delete mode 100644 sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md diff --git a/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md b/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md deleted file mode 100644 index f09b6b03b2..0000000000 --- a/sources/tech/20150318 Install And Use 'Go For It!' To Do App In Linux.md +++ /dev/null @@ -1,94 +0,0 @@ -translating wi-cuckoo LLAP -Install And Use ‘Go For It!’ To Do App In Linux -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_For_It_TODO_Linux.jpeg) - -How do you manage tasks and remember things in desktop Linux? I preferred [using sticky notes in Ubuntu][1] for a long time. But the problem I faced was syncing it with other devices, especially with my smartphone. This is the reason why went on with [Google Keep][2]. - -Now, Google Keep is feature rich app and I really like it, and like it to the extent of calling it [Linux alternative of Evernote][3]. But not everyone may like a feature rich todo list app. Minmalist is the current trend and liked by many. And if you are one of the minimalist lover, who is looking for an open source to do list app, you should give [Go For It!][4] a try. - -### Go For It! productivity desktop app for Linux ### - -Go For It! is a simple to do list app that comes with a timer to keep you focused on the work. So, you add a task to the list and can attach a timer to it. It will keep remind you to work on the task. You can watch the video by its developer, [Manuel Kehl][5]: - -注释:youtube视频,发布的时候可做成一个链接 - - -### Install Go For It! ### - -To install Go For It! in Ubuntu 15.04, 14.10, 14.04 and other Ubuntu based Linux distributions such as Linux Mint, elementary OS Freya etc, use the official PPA of this app: - - sudo add-apt-repository ppa:mank319/go-for-it - sudo apt-get update - sudo apt-get install go-for-it - -You can download the .deb binaries, binaries for Windows and source code from the respective links below: - -- [Download source code][6] -- [Download .deb binaries][7] -- [Download for Windows][8] - -### Using Go For It! in desktop Linux ### - -Using Go For It! is really simple. You add tasks in the list. The tasks are saved in todo.txt file. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux.png) - -By default a timer of 25 minutes will be set on each task. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_1.png) - -Once done, task is automatically archived to done.txt. Based on preferences, it will send desktop notifications at regular time interval and few minutes before the task is supposed to be over: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Linux_notification.png) - -You can change all these preferences from configuration. - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go-for-it_todo_app_linux_2.png) - -So far so good. But what about using it on a smartphone. A productivity app is not complete if you cannot keep it synced across various devices. Good thing is that Go For It! is based on [todo.txt][9], which means you can use it in smartphones using third party apps and a cloud service like Dropbox. - -### Using Go For It! in Android smartphones and tablets ### - -You need to do couple of things here. First thing first, install Dropbox in Linux as well as in your Android phone, if you haven’t installed it already. The next thing you need to do is to change the configuration of Go For It! and **change the todo.txt directory to Dropbox location**. - -Next, you will have to download [Simpletask Android app][10]. It’s a free app. Install this app. When you run Simpletask for the first time, you will ask to link your account with Dropbox: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android_1.jpeg) - -Once you have linked Simpletask with Dropbox, open the app. If you have change the configuration of Go For It! to save the files in Dropbox, you should be able to see it in Simpletask. If you do not see it, click on the settings from the bottom and use the option of Open Todo file: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Go_for_it_Android.jpeg) - -Now you should be able to see your tasks synced with Simpletask. - -### Conclusion ### - -With Simpletask, you can use it in similar fashion as a [markup language tool][11]. For minimal and focused usage Go For It! is a nice to do app. A clean interface is another plus point. It could have been better to have its own smartphone app but we already saw the workarounds. - -On the down side, Go For It! doesn’t run in background. Which means, you’ll have to keep it running always. It doesn’t even has a minimize button, a tiny annoyance. What I would like to see is an indicator applet for it. Running in the background and quick access in the panel will definitely improve its usability. - -Do try Go For It! and share your experience with it. What other to-do app do you use on desktop Linux? How does Go For It! compare with your other favorite productivity app? - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/go-for-it-to-do-app-in-linux/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/indicator-stickynotes-windows-like-sticky-note-app-for-ubuntu/ -[2]:http://itsfoss.com/install-google-keep-ubuntu-1310/ -[3]:http://itsfoss.com/5-evernote-alternatives-linux/ -[4]:http://manuel-kehl.de/projects/go-for-it/ -[5]:http://manuel-kehl.de/about-me/ -[6]:https://github.com/mank319/Go-For-It -[7]:https://launchpad.net/~mank319/+archive/ubuntu/go-for-it -[8]:http://manuel-kehl.de/projects/go-for-it/download-windows-version/ -[9]:http://todotxt.com/ -[10]:https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&hl=en -[11]:http://itsfoss.com/install-latex-ubuntu-1404/ From d979e7bb04a23e3e01556811802fafee56d51919 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sun, 22 Mar 2015 21:27:54 +0800 Subject: [PATCH 628/725] translated --- ...0150318 Fedora GNOME Keyboard Shortcuts.md | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md diff --git a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md new file mode 100644 index 0000000000..6273cf010b --- /dev/null +++ b/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -0,0 +1,215 @@ +Fedora GNOME快捷键 + +================================================================================ + +在Fedora,为了获得最好的[GNOME桌面] [1]体验,你需要了解并掌握一些驾驭系统的快捷键。 + +这篇文章将列举我们日常使用中使用频率最高的快捷键。 + +![GNOME Keyboard Shortcuts - The Super Key. ](http://f.tqn.com/y/linux/1/L/o/K/1/gnomekeyboardshortcut1.png) +GNOME 快捷键 - super键. + +#### 1. Super键 #### + +[“super”键][2]是如今驾驭操作系统的好朋友。 + +在传统的笔记本电脑中“super”键坐落于最后一列就在“alt”键的旁边(就是徽标键)。 + +当你按下“super”键后“activities”总览图就会出现,你就能看见所有打开应用的缩略图。 + +同时按下 "ALT" 和"F1"一样可以达到这样的效果。 + +![GNOME Run Command.](http://f.tqn.com/y/linux/1/L/p/K/1/runcommand.png) +GNOME 指令运行. + +### 2. 如何快速执行一条指令 ### + +如果你需要快速的执行一条指令,你可以按下"ALT"+"F2",这样就会出现指令运行对话框了。 + +你就可以在窗口中输入你想要执行的指令了,回车执行。 + +![TAB Through Applications.](http://f.tqn.com/y/linux/1/L/q/K/1/tabthroughwindows.png) +使用TAB在应用中切换。 + +### 3. 快速切换到另一个打开的应用 ### + +就像微软的Windows一样你可以使用"ALT"和"TAB" 的组合键在应用程序之间切换。 + +在一些键盘上tab键是这样的**|<- ->|**而有些则是简单的"TAB"字母。 + +GNOME应用间切换随着你的切换显示的是简单的图标和应用的名字 + +如果你按下"shift"+"tab"将反过来切换应用。 + +![Switch Windows In The Same Application.](http://f.tqn.com/y/linux/1/L/r/K/1/switchwindowsinsameapplication.png) +在应用中切换不同窗口。 + +### 4. 在同一应用中快速切换不同的窗口 ### + +如果你像我一样经常打开五六个Firefox。 + +你已经知道通过"Alt"+"Tab"实现应用间的切换。 + +有两种方法可以在同应用中所有打开的窗口中切换。 + +第一种是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上。短暂的停留等到下拉窗出现你就能用鼠标选择窗口了。 + +第二种也是比较推荐的方式是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上然后按"super"+"`"在此应用打开的窗口间切换。 + +**注释"`"就是tab键上面的那个键。用于切换的键一直都是tab上面的那个键,无论你使用的那种键盘排布,也有可能不是"`"键。** + +如果你的手很灵活(或者是我称之为的忍者手)那你也可以同时按"shift", "`"和"super"键来反向切换窗口。 + +![Switch Keyboard Focus.](http://f.tqn.com/y/linux/1/L/s/K/1/switchkeyboardfocus.png) +切换键盘焦点。 + +### 5. 切换键盘焦点 ### + +这个键盘快捷键并不是必须掌握的,但是还是最好掌握。 + +如若你想将输入的焦点放到搜索栏或者一个应用窗口上,你可以同时按下"CTRL", "ALT"和"TAB",这样就会出现一个让你选择切换区域的列表。 + +然后就可以按方向键做出选择了。 + +![Show All Applications.](http://f.tqn.com/y/linux/1/L/t/K/1/showapplications.png) +显示所有应用程序。 + +### 6. 显示所有应用程序列表 ### + +如果恰巧最后一个应用就是你想要找的,那么这样做真的会帮你省很多时间。 + +按"super"和"A"键来快速浏览这个包含你系统上所有应用的列表。 + +![Switch Workspaces.](http://f.tqn.com/y/linux/1/L/u/K/1/switchworkspaces.png) +切换工作区。 + +### 7. 切换工作区 ### + +如果你已经使用linux有一段时间了,那么这种[多工作区切换][3]的工作方式一定深得你心了吧。 + +举个例子,你在第一个工作区里做开发,第二个中浏览网页而把你邮件的客户端开在第三个工作区中。 + +工作区切换你可以使用"super"+"Page Up" (PGUP)键朝一个方向切,也可以按"super"+"Page Down" (PGDN)键朝另一个方向切。 + +还有一个比较麻烦的备选方案就是按"super"显示打开的应用,然后在屏幕的右侧选择你所要切换的工作区。 + +![Move Application To Another Workspace.](http://f.tqn.com/y/linux/1/L/v/K/1/movetoanewworkspace.png) +将应用移至另一个工作区。 + +### 8. 将一些项目移至一个新的工作区 ### + +如果这个工作区已经被搞得杂乱无章了没准你会想将手头的应用转到一个全新的工作区,请按组合键"super", "shift"和"page up"或"super", "shift"和"page down" key。 + +备选方案按"super"键,然后在应用列表中找到你想要移动的应用拖到屏幕右侧的工作区。 + +![Show The Message Tray.](http://f.tqn.com/y/linux/1/L/w/K/1/showmessagetray.png) +显示信息栏。 + +### 9. 显示信息栏 ### + +消息栏会提供一些通知。 + +按"super"+"M"呼出消息栏。 + +备选方法是鼠标移动到屏幕右下角。 + +![Lock The Screen.](http://f.tqn.com/y/linux/1/L/x/K/1/lockscreen.png) +锁屏。 + +### 10. 锁屏 ### + +想要休息一会喝杯咖啡?不想误触键盘? + +无论何时只要离开你的电脑应该习惯性的按下"super"+"L"锁屏。 + +解锁方法是从屏幕的下方向上拽,输入密码即可。 + +![Control Alt Delete Within Fedora.](http://f.tqn.com/y/linux/1/L/y/K/1/poweroff.png) +Fedora中Control+Alt+Delete + +### 11. 关机 ### + +如果你曾是windows的用户,你一定记得著名的三指快捷操作CTRL+ALT+DELETE。 + +如果在键盘上同时按下CTRL+ALT+DELETE,Fedora就会弹出一则消息,提示你的电脑将在60秒后关闭。 + +### 12. 编辑快捷键 ### + +在各类操作系统中编辑快捷键都大同小异。 + +- CTRL + A - 全选 +- CTRL + X - 剪切 +- CTRL + C - 复制 +- CTRL + V - 粘贴 +- CTRL + Z - 撤销 + +### 13. 截屏 ### + +和编辑快捷键一样,截屏键也就那么基础的几个。 + +- PRTSC (Print Screen) - 截屏 + +- Alt + PRTSC - 当前窗口截图 + +- Shift + PRTSC - 所选区域截图 + +这里还有一个比较特殊的按键,主要是为了大家可以更容易的制作视频教程的。 + +- CTRL + ALT + SHIFT + R - 录制视频 +- CTRL + ALT + SHIFT + R 第二次按下时 - 停止录制 + +[录制的内容][4]将以[webm][5]格式保存于当前用户家目录下的录像文件夹中。 + +![Put Windows Side By Side.](http://f.tqn.com/y/linux/1/L/z/K/1/splitwindows.png) +并排显示窗口。 + +### 14. 并排显示窗口 ### + +你可以将一个窗口靠左占满左半屏,另一个窗口靠右占满右半屏,让两个窗口并排显示。 + +也可以按"Super"+"←"让当前应用占满左半屏。 + +按"Super"+"→"让当前应用占满右半屏。 + +### 15. 窗口的最大化, 最小化和恢复 ### + +双击标题栏可以最大化窗口。 + +最大化后的窗口再双击就会还原至原大小。 + +右键菜单选择"最小化"就可以最小化了。 + +![GNOME Keyboard Shortcut Cheat Sheet. ](http://f.tqn.com/y/linux/1/L/-/L/1/gnomekeyboardshortcuts.png) +GNOME快捷键速查表。 + +### 16. 总结 ### + +我做了一份快捷键速查表,你可以打印出来贴在墙上,这样一定能够更快上手。 + +当你掌握了这些快捷键后,你一定会感慨这个桌面环境使用起来是如此的顺手。 + +- [戳这里查看Fedora GNOME桌面的速查表][6] +- [查看GNOME WIKI请戳这里][7] +- [另外的一个GNOME WIKI][8] +- [GNOME 3备用速查表][9] + +-------------------------------------------------------------------------------- + +via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm + +作者:[Gary Newell][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:https://www.gnome.org/gnome-3/ +[2]:http://en.wikipedia.org/wiki/Super_key_%28keyboard_button%29 +[3]:http://linux.about.com/library/gnome/blgnome2n4.htm +[4]:http://en.wikipedia.org/wiki/Screencast +[5]:http://en.wikipedia.org/wiki/WebM +[6]:https://s-media-cache-ak0.pinimg.com/originals/d5/f4/a4/d5f4a42c0940fae6653ee9a17294d450.jpg +[7]:http://en.wikipedia.org/wiki/GNOME +[8]:https://wiki.gnome.org/ +[9]:https://wiki.gnome.org/Gnome3CheatSheet From aa0e465c757bbfa0772125ac7dc85c6932889b0d Mon Sep 17 00:00:00 2001 From: martin qi Date: Sun, 22 Mar 2015 21:29:44 +0800 Subject: [PATCH 629/725] Update 20150318 Fedora GNOME Keyboard Shortcuts.md --- translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md index 6273cf010b..3c4d3316e9 100644 --- a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md +++ b/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -1,7 +1,5 @@ Fedora GNOME快捷键 - ================================================================================ - 在Fedora,为了获得最好的[GNOME桌面] [1]体验,你需要了解并掌握一些驾驭系统的快捷键。 这篇文章将列举我们日常使用中使用频率最高的快捷键。 From 4c5b461271d7a086c45d21ff64c4999511f2a524 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sun, 22 Mar 2015 21:34:49 +0800 Subject: [PATCH 630/725] Update 20150318 Fedora GNOME Keyboard Shortcuts.md --- translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md index 3c4d3316e9..4210289b6d 100644 --- a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md +++ b/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -54,7 +54,7 @@ GNOME应用间切换随着你的切换显示的是简单的图标和应用的名 第二种也是比较推荐的方式是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上然后按"super"+"`"在此应用打开的窗口间切换。 -**注释"`"就是tab键上面的那个键。用于切换的键一直都是tab上面的那个键,无论你使用的那种键盘排布,也有可能不是"`"键。** +**注释"\`"就是tab键上面的那个键。用于切换的键一直都是tab上面的那个键,无论你使用的那种键盘排布,也有可能不是"`"键。** 如果你的手很灵活(或者是我称之为的忍者手)那你也可以同时按"shift", "`"和"super"键来反向切换窗口。 From 8af7d4a429d4a20224344cf88d25437162cfcc88 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sun, 22 Mar 2015 21:35:55 +0800 Subject: [PATCH 631/725] Delete 20150318 Fedora GNOME Keyboard Shortcuts.md --- ...0150318 Fedora GNOME Keyboard Shortcuts.md | 213 ------------------ 1 file changed, 213 deletions(-) delete mode 100644 sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md diff --git a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md deleted file mode 100644 index 8faab0ce1d..0000000000 --- a/sources/tech/20150318 Fedora GNOME Keyboard Shortcuts.md +++ /dev/null @@ -1,213 +0,0 @@ -tanslating by martin. - -Fedora GNOME Keyboard Shortcuts -================================================================================ -To get the very best out of the [GNOME desktop environment][1], within Fedora, you need to learn and remember the keyboard shortcuts required to navigate the system. - -This article lists the most useful keyboard shortcuts and how they are used. - -![GNOME Keyboard Shortcuts - The Super Key. ](http://f.tqn.com/y/linux/1/L/o/K/1/gnomekeyboardshortcut1.png) -GNOME Keyboard Shortcuts - The Super Key. - -#### 1. The Super Key #### - -[The "super" key][2] is your best friend when navigating modern operating systems. - -On a standard laptop the "super" key sits on the bottom row next to the "alt" key. - -When you press the "super" key the "activities" overview will be displayed and you will be able to see all of the open applications zoomed out. - -Pressing "ALT" and "F1" together will show the same display. - -![GNOME Run Command.](http://f.tqn.com/y/linux/1/L/p/K/1/runcommand.png) -GNOME Run Command. - -### 2. How To Run A Command Quickly ### - -If you need to run a command quickly, you can press "ALT" and "F2" which displays a "Run Command" dialog. - -You can now enter your command into that window and press return. - -![TAB Through Applications.](http://f.tqn.com/y/linux/1/L/q/K/1/tabthroughwindows.png) -TAB Through Applications. - -### 3. Quickly Switch To Other Open Applications ### - -As with Microsoft Windows you can switch applications using the "ALT" and "TAB" keys. - -On some keyboards the tab key looks like this: **|<- ->|** and on others it simply spells the word "TAB". - -The GNOME application switcher simply shows the icons and names of the applications as you tab through them. - -If you hold down the "shift" and "tab" keys, the application switcher rotates around the icons in reverse order. - -![Switch Windows In The Same Application.](http://f.tqn.com/y/linux/1/L/r/K/1/switchwindowsinsameapplication.png) -Switch Windows In The Same Application. - -### 4. Quickly Switch To Another Window In The Same Application ### - -If you are anything like me then you will end up with half a dozen instances of Firefox open. - -You now know that "Alt" and "Tab" switch between applications. - -There are two ways to cycle through all of the open instances of the same application. - -The first is to press "Alt" and "Tab" until the cursor sits over the icon of the application with many windows that you wish to cycle through. After a pause a dropdown will appear and you can select the Window with the mouse. - -The second and preferred option is to press "Alt" and "Tab" until the cursor sits over the icon of the application you want to cycle through and then press the "super" and "`" keys to toggle through the open instances. - -**Note that the "`" key is the one just above the tab key. The key for cycling through the open instances is always the key above the tab key regardless of your keyboard layout, therefore it isn't always guaranteed to be the "`" key.** - -If you have nimble fingers (or as I like to call them ninja fingers) then you can hold the "shift", "`" and "super" key to cycle backwards through the open instances of an application. - -![Switch Keyboard Focus.](http://f.tqn.com/y/linux/1/L/s/K/1/switchkeyboardfocus.png) -Switch Keyboard Focus. - -### 5. Switch Keyboard Focus ### - -This keyboard shortcut isn't essential but a nice to know. - -If you want to switch the keyboard focus to the search bar or to an application window you can press "CTRL", "ALT" and "TAB". to show a list of possible areas to switch to. - -You can then use the arrow keys to cycle through the possible options. - -![Show All Applications.](http://f.tqn.com/y/linux/1/L/t/K/1/showapplications.png) -Show All Applications. - -### 6. Show A List Of All The Applications ### - -If the last one was a nice to have then this one is a real time saver. - -To quickly navigate to a full list of all the applications on your system press the "super" key and "A". - -![Switch Workspaces.](http://f.tqn.com/y/linux/1/L/u/K/1/switchworkspaces.png) -Switch Workspaces. - -### 7. Switch Workspaces ### - -If you have been using Linux for a while you will appreciate the fact that you [can use multiple workspaces][3]. - -For instance in one workspace you might have development environments open, in another web browsers and in a third your email client. - -To toggle between workspaces press the "super" and the "Page Up" (PGUP) keys to toggle in one direction and the "super", "Page Down" (PGDN) keys to toggle in the other direction. - -The alternative but more longwinded away to switch to another workspace is to press the "super" key to show a list of applications and then select the workspace you wish to switch to on the right side of the screen. - -![Move Application To Another Workspace.](http://f.tqn.com/y/linux/1/L/v/K/1/movetoanewworkspace.png) -Move Application To Another Workspace. - -### 8. Move Items To A New Workspace ### - -If the workspace you are using is getting cluttered and you wish to move the current application to a new workspace press the "super", "shift" and "page up" button or "super", "shift" and "page down" key. - -Alternatively press the "super" key to bring up the list of applications and drag the application you wish to move to one of the workspaces on the right of the screen. - -![Show The Message Tray.](http://f.tqn.com/y/linux/1/L/w/K/1/showmessagetray.png) -Show The Message Tray. - -### 9. Show The Message Tray ### - -The message tray provides a list of notifications. - -To bring up the message tray press the "super" and "M" key on the keyboard. - -Alternatively move the mouse to the bottom right corner of the screen. - -![Lock The Screen.](http://f.tqn.com/y/linux/1/L/x/K/1/lockscreen.png) -Lock The Screen. - -### 10. Lock The Screen ### - -Need to a comfort break or a cup of coffee? Don't want sticky paws all over your keyboard? - -Whenever you leave your computer alone get in the habit of pressing "super" and L to lock the screen. - -To unlock the screen drag up from the bottom and enter your password. - -![Control Alt Delete Within Fedora.](http://f.tqn.com/y/linux/1/L/y/K/1/poweroff.png) -Control Alt Delete Within Fedora. - -### 11. Power Off ### - -If you used to be a Windows user then you will remember the three finger salute known as CTRL, ALT and DELETE. - -If you press "CTRL", "ALT" and "DEL" on your keyboard within Fedora a message will appear telling you that your computer will shut down in 60 seconds. - -### 12. Editing Shortcuts ### - -The editing keyboard shortcuts are pretty much universal across every operating system. - -- CTRL + A - Select All -- CTRL + X - Cut -- CTRL + C - Copy -- CTRL + V - Paste -- CTRL + Z - Undo - -### 13. Screen Capturing ### - -As with the editing shortcuts, the screencapturing keys are fairly standard - -- PRTSC (Print Screen) - Take screenshot -- Alt + PRTSC - Take screenshot of current window -- Shift + PRTSC - Take screenshot of an area of the screen - -Here is one that is fairly unique but great for people making tutorial videos. - -- CTRL + ALT + SHIFT + R - Record Screencast -- CTRL + ALT + SHIFT + R again - Stop Screencast - -The [screencasts][4] will be stored in the videos folder under your home directory in the [webm][5] format. - -![Put Windows Side By Side.](http://f.tqn.com/y/linux/1/L/z/K/1/splitwindows.png) -Put Windows Side By Side. - -### 14. Put Windows Side By Side ### - -You can put windows side by side so that one uses up the left side of the screen and the other uses the right side of the screen. - -Press the "Super" and "Left Arrow" key on the keyboard to shift the current application to the left. - -Press the "Super" and "Right Arrow" key on the keyboard to shift the current application to the right. - -### 15. Maximise, Minimise And Restore Windows ### - -To maximise a window double click on the title bar. - -To restore a window to its original size double click on the maximised window. - -To minimise a window, right click and select "minimise" from the menu. - -![GNOME Keyboard Shortcut Cheat Sheet. ](http://f.tqn.com/y/linux/1/L/-/L/1/gnomekeyboardshortcuts.png) -GNOME Keyboard Shortcut Cheat Sheet. - -### 16. Summary ### - -To help you learn these keyboard shortcuts I have created a cheat sheet which you can print out and stick to your wall. - -When you have learned these shortcuts you will begin to appreciate how modern desktop environments work. - -- [Click here to view the Fedora Linux GNOME Desktop Environment cheat sheet.][6] -- [Click here for the GNOME WIKI][7] -- [The other GNOME WIKI][8] -- [An alternative GNOME 3 Cheat Sheet][9] - --------------------------------------------------------------------------------- - -via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm - -作者:[Gary Newell][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linux.about.com/bio/Gary-Newell-132058.htm -[1]:https://www.gnome.org/gnome-3/ -[2]:http://en.wikipedia.org/wiki/Super_key_%28keyboard_button%29 -[3]:http://linux.about.com/library/gnome/blgnome2n4.htm -[4]:http://en.wikipedia.org/wiki/Screencast -[5]:http://en.wikipedia.org/wiki/WebM -[6]:https://s-media-cache-ak0.pinimg.com/originals/d5/f4/a4/d5f4a42c0940fae6653ee9a17294d450.jpg -[7]:http://en.wikipedia.org/wiki/GNOME -[8]:https://wiki.gnome.org/ -[9]:https://wiki.gnome.org/Gnome3CheatSheet From 10197251c865d94419e776937e6bbcbdd43d8c46 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 21:46:29 +0800 Subject: [PATCH 632/725] PUB:20150104 How to debug a C or C++ program with Nemiver debugger MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @disylee 诗诗,有些错别字~ --- ... C or C++ program with Nemiver debugger.md | 110 +++++++++++++++ ... C or C++ program with Nemiver debugger.md | 126 ------------------ 2 files changed, 110 insertions(+), 126 deletions(-) create mode 100644 published/20150104 How to debug a C or C++ program with Nemiver debugger.md delete mode 100644 translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md diff --git a/published/20150104 How to debug a C or C++ program with Nemiver debugger.md b/published/20150104 How to debug a C or C++ program with Nemiver debugger.md new file mode 100644 index 0000000000..99eee59987 --- /dev/null +++ b/published/20150104 How to debug a C or C++ program with Nemiver debugger.md @@ -0,0 +1,110 @@ +使用Nemiver调试器来调试 C/C++ 程序 +================================================================================ + +如果你读过我写的[使用GDB命令行调试器调试C/C++程序][1],你就会明白一个调试器对一段C/C++程序来说有多么的重要和有用。然而,如果一个像GDB这样的命令行对你而言听起来更像一个问题而不是一个解决方案的话,那么你也许会对Nemiver更感兴趣。[Nemiver][2] 是一款基于 GTK+ 的用于C/C++程序的图形化的独立调试器,它以GDB作为其后端。最令人赞赏的是其速度和稳定性,Nemiver是一个非常可靠,具备许多优点的调试工具。 + +### Nemiver的安装 ### + +基于Debian发行版,它的安装时非常直接简单,如下: + + $ sudo apt-get install nemiver + +在Arch Linux中安装如下: + + $ sudo pacman -S nemiver + +在Fedora中安装如下: + + $ sudo yum install nemiver + +如果你选择自己编译,[GNOME 网站][3]上有最新源码包。 + +最令人欣慰的是,它能够很好地与GNOME环境像结合。 + +### Nemiver的基本用法 ### + +启动Nemiver的命令: + + $ nemiver + +你也可以通过执行一下命令来启动: + + $ nemiver [需要调试的可执行程序的路径] + +注意,如果在调试模式下编译程序(在 GCC 中使用 -g 选项)将会对 nemiver 更有帮助。 + +还有一个优点是Nemiver的加载很快,所以你马上就可以看到主屏幕的默认布局。 + +![](https://farm9.staticflickr.com/8679/15535277554_d320f6692c_c.jpg) + +默认情况下,断点通常位于主函数的第一行。这样就可以空出时间让你去认识调试器的基本功能: + +![](https://farm9.staticflickr.com/8669/16131832596_bc68ae18a8_o.jpg) + +- 执行到下一行 (按键是F6) +- 执行到函数内部即停止(F7) +- 执行到函数外部即停止(Shift+F7) + +不过我个人喜欢“Run to cursor(运行至光标所在行)”,该选项使你的程序准确的运行至你光标所在行,它的默认按键是F11。 + +断点是很容易使用的。最快捷的方式是在一行代码上按下F8来设置一个断点。但是Nemiver在“Debug”菜单下也有一个更复杂的菜单,它允许你在一个特定的函数,某一行,二进制文件中的位置,或者类似异常、分支或者exec的事件上设置断点。 + +![](https://farm8.staticflickr.com/7579/16157622315_d680a63896_z.jpg) + +你也可以通过追踪来查看一个变量。在“Debug”中,你可以用一个表达式的名字来检查它的值,然后也可以通过将其添加到列表中以方便访问。这可能是最有用的一个功能,虽然我从未有兴趣将鼠标悬停在一个变量来获取它的值。值得注意的是,虽然鼠标悬停可以取到值,如果想要让它更好地工作,Nemiver是可以看到结构并给出所有成员的变量的赋值。 + +![](https://farm8.staticflickr.com/7465/15970310470_7ed020c613.jpg) + +谈到方便地访问信息,我也非常欣赏这个程序的布局。默认情况下,代码在上半部分,功能区标签在下半部分。这可以让你访问终端的输出、上下文追踪器、断点列表、注册器地址、内存映射和变量控制。但是请注意在“Edit”-“Preferences”-“Layout”下你可以选择不同的布局,包括一个可以修改的动态布局。 + +![](https://farm9.staticflickr.com/8606/15971551549_00e4cdd32e_c.jpg) + +![](https://farm8.staticflickr.com/7525/15535277594_026fef17c1_z.jpg) + +自然,当你设置了全部断点,观察点和布局,您可以在“File”菜单下很方便地保存该会话,以便你下次打开时恢复。 + +### Nemiver的高级用法 ### + +到目前为止,我们讨论的都是Nemiver的基本特征,例如,你马上开始调试一个简单的程序需要了解什么。如果你有更高的需求,特别是对于一些更加复杂的程序,你应该会对接下来提到的这些特征更感兴趣。 + +#### 调试一个正在运行的进程 #### + +Nemiver允许你驳接到一个正在运行的进程进行调试。在“File”菜单,你可以筛选出正在运行的进程,并驳接到某个进程。 + +![](https://farm9.staticflickr.com/8593/16155720571_00e4cdd32e_z.jpg) + +#### 通过TCP连接远程调试一个程序 #### + +Nemiver支持远程调试,你可以在一台远程机器上设置一个轻量级调试服务器,然后你在另外一台机器上启动 nemiver 去调试运行在调试服务器上的程序。如果出于某些原因,你不能在远程机器上很好地驾驭 Nemiver或者GDB,那么远程调试对于你来说将非常有用。在“File”菜单下,指定二进制文件、共享库位置、远程地址和端口。 + +![](https://farm8.staticflickr.com/7469/16131832746_c47dee4ef1.jpg) + +#### 使用你的GDB二进制程序进行调试 #### + +如果你的Nemiver是自行编译的,你可以在“Edit(编辑)”-“Preferences(首选项)”-“Debug(调试)”下给GDB指定一个新的位置。如果你想在Nemiver下使用定制版本的GDB,那么这个选项对你来说是非常实用的。 + +#### 跟随一个子进程或者父进程 #### + +当你的程序分支时,Nemiver是可以设置为跟随子进程或者父进程的。想激活这个功能,请到“Debugger”下面的“Preferences(首选项)”。 + +![](https://farm8.staticflickr.com/7512/16131832716_5724ff434c_z.jpg) + +总而言之,Nemiver大概是我最喜欢的不在IDE里面的调试程序。在我看来,它甚至可以击败GDB,它和命令行程序一样深深吸引了我。所以,如果你从未使用过的话,我会强烈推荐你使用。我十分感谢它背后的开发团队给了我这么一个可靠、稳定的程序。 + +你对Nemiver有什么见解?你是否也考虑它作为独立的调试工具?或者仍然坚持使用IDE?让我们在评论中探讨吧。 + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/debug-program-nemiver-debugger.html + +作者:[Adrien Brochard][a] +译者:[disylee](https://github.com/disylee) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/adrien +[1]:http://linux.cn/article-4302-1.html +[2]:https://wiki.gnome.org/Apps/Nemiver +[3]:https://download.gnome.org/sources/nemiver/0.9/ +[4]:http://xmodulo.com/recommend/linuxclibook diff --git a/translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md b/translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md deleted file mode 100644 index b5dc4c34a7..0000000000 --- a/translated/tech/20150104 How to debug a C or C++ program with Nemiver debugger.md +++ /dev/null @@ -1,126 +0,0 @@ -使用Nemiver调试器找出C/C++程序中的bug -================================================================================ - -如果你读过[my post on GDB][1],你就会明白我认为一个调试器对一段C/C++程序来说意味着多么的重要和有用。然而,如果一个像GDB的命令行对你而言听起来更像一个问题而不是一个解决方案,那么你也许会对Nemiver更感兴趣。[Nemiver][2] 是一款基于GTK+的独立图形化用于C/C++程序的调试器,同时它以GDB作为其后端。最令人佩服的是其速度和稳定性,Nemiver时一个非常可靠,具备许多优点的调试工具。 - -### Nemiver的安装 ### - -基于Debian发行版,它的安装时非常直接简单如下: - - $ sudo apt-get install nemiver - -在Arch Linux中安装如下: - - $ sudo pacman -S nemiver - -在Fedora中安装如下: - - $ sudo yum install nemiver - -如果你选择自己变异,[GNOME website][3]中最新源码包可用。 - -最令人欣慰的是,它能够很好地与GNOME环境像结合。 - -### Nemiver的基本用法 ### - -启动Nemiver的命令: - - $ nemiver - -你也可以通过执行一下命令来启动: - - $ nemiver [path to executable to debug] - -你会注意到如果在调试模式下执行编译(-g标志表示GCC)将会更有帮助。 - -还有一个优点是Nemiver的快速加载,所以你应该可以马上看到主屏幕的默认布局。 - - - - - -![](https://farm9.staticflickr.com/8679/15535277554_d320f6692c_c.jpg) - -默认情况下,断点通常位于主函数的第一行。这样就可以空出时间让你去认识调试器的基本功能: - -![](https://farm9.staticflickr.com/8669/16131832596_bc68ae18a8_o.jpg) - -- Next line (mapped to F6) -- Step inside a function (F7) -- Step out of a function (Shift+F7) -- 下一行 (映射到F6) -- 执行内部行数(F7) -- 执行外部函数(Shift+F7) ## 我不确定这个保留哪个都翻译出来了 ## - -但是由于我个人的喜好是“Run to cursor(运行至光标)”,该选项使你的程序运行精确至你光标下的行,并且默认映射到F11. - -下一步,断点通常是容易使用的。最快捷的方式是使用F8设置一个断点在相应的行。但是Nemiver也有一个更富在的菜单在“Debug”项,这允许你在一个特定的函数,行数,二进制位置文件的位置,或者类似一个异常,分支或者exec的事件。 - -![](https://farm8.staticflickr.com/7579/16157622315_d680a63896_z.jpg) - - -你也可以通过追踪来查看一个变量。在“Debug”选项,你可以通过命名来匹配一个表达式来检查。然后也可以通过将其添加到列表中以方便访问。这可能是最有用的一个功能虽然我从未因为浓厚的兴趣将鼠标悬停在一个变量来获取它的值。值得注意的是,将鼠标放置在相应位置时不生效的。如果想要让它更好地工作,Nemiver是可以看到结构并给所有成员的变量赋值。 - -![](https://farm8.staticflickr.com/7465/15970310470_7ed020c613.jpg) - - -谈到方便地访问信息,我也非常欣赏这个程序的平面布局。默认情况下,代码在上个部分,标签在下半部分。这授予你访问中断输出、文本追踪、断点列表、注册地址、内存映射和变量控制。但是注意到在“Edit”“Preferences”“Layout”下你可以选择不同的布局,包括动态修改。 - -![](https://farm9.staticflickr.com/8606/15971551549_00e4cdd32e_c.jpg) - -![](https://farm8.staticflickr.com/7525/15535277594_026fef17c1_z.jpg) - - -自然而然,一旦你设置了所有短点,观察点和布局,您可以在“File”下很方便地保存以免你不小心关掉Nemiver。 - - -### Nemiver的高级用法 ### - - -到目前为止,我们讨论的都是Nemiver的基本特征,例如,你马上开始喝调试一个简单的程序需要什么。如果你有更高的药求,特别是对于一些更佳复杂的程序,你应该会对接下来提到的这些特征更感兴趣。 - - -#### 调试一个正在运行的进程 #### - - -Nemiver允许你连接到一个正在运行的进程进行调试。在“File”菜单,你可以过滤出正在运行的进程,并连接到这个进程。 - -![](https://farm9.staticflickr.com/8593/16155720571_00e4cdd32e_z.jpg) - - -#### 通过TCP连接远程调试一个程序 #### - -Nemiver支持远程调试,当你在一台远程机器设置一个轻量级调试服务器,你可以通过调试服务器启动Nemiver从另一台机器去调试承载远程服务器上的目标。如果出于某些原因,你不能在远程机器上吗很好地驾驭Nemiver或者GDB,那么远程调试对于你来说将非常有用。在“File”菜单下,指定二进制文件、共享库的地址和端口。 - -![](https://farm8.staticflickr.com/7469/16131832746_c47dee4ef1.jpg) - -#### 使用你的GDB二进制进行调试 #### - -如果你想自行通过Nemiver进行编译,你可以在“Edit(编辑)”“Preferences(首选项)”“Debug(调试)”下给GDB制定一个新的位置。如果你想在Nemiver使用GDB的定制版本,那么这个选项对你来说是非常实用的。 - - -#### 循序一个子进程或者父进程 #### - -Nemiver是可以兼容一个子进程或者附近成的。想激活这个功能,请到“Debugger”下面的“Preferences(首选项)”。 - -![](https://farm8.staticflickr.com/7512/16131832716_5724ff434c_z.jpg) - -总而言之,Nemiver大概是我最喜欢的没有IDE的调试程序。在我看来,它甚至可以击败GDB,并且[命令行][4]程序对我本身来说更接地气。所以,如果你从未使用过的话,我会强烈推荐你使用。我只能庆祝我们团队背后给了我这么一个可靠、稳定的程序。 - -你对Nemiver有什么见解?你是否也考虑它作为独立的调试工具?或者仍然坚持使用IDE?让我们在评论中探讨吧。 - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/debug-program-nemiver-debugger.html - -作者:[Adrien Brochard][a] -译者:[disylee](https://github.com/disylee) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/adrien -[1]:http://xmodulo.com/gdb-command-line-debugger.html -[2]:https://wiki.gnome.org/Apps/Nemiver -[3]:https://download.gnome.org/sources/nemiver/0.9/ -[4]:http://xmodulo.com/recommend/linuxclibook From 21c8563993e61047f03b81590d0cff42f4c94fbf Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 22:09:23 +0800 Subject: [PATCH 633/725] PUB:20150114 Install Gitblit On Ubuntu or Fedora or CentOS @geekpi --- ...l Gitblit On Ubuntu or Fedora or CentOS.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/tech => published}/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md (90%) diff --git a/translated/tech/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md b/published/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md similarity index 90% rename from translated/tech/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md rename to published/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md index 84232f87a1..e2dd91ef0b 100644 --- a/translated/tech/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md +++ b/published/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md @@ -2,13 +2,13 @@ ================================================================================ **Git**是一款注重速度、数据完整性、分布式支持和非线性工作流的分布式版本控制工具。Git最初由Linus Torvalds在2005年为Linux内核开发而设计,如今已经成为被广泛接受的版本控制系统。 -和其他大多数分布式版本控制系统比起来,不像大多数客户端-服务端的系统,每个Git工作目录是一个完整的仓库,带有完整的历史记录和完整的版本跟踪能力,不需要依赖网络或者中心服务器。像Linux内核一样,Git意识在GPLv2许可证下的免费软件。 +和其他大多数分布式版本控制系统比起来,不像大多数客户端-服务端的系统,每个Git工作目录是一个完整的仓库,带有完整的历史记录和完整的版本跟踪能力,不需要依赖网络或者中心服务器。像Linux内核一样,Git也是在GPLv2许可证下分发的自由软件。 -本篇教程我会演示如何安装gitlit服务器。gitlit的最新稳定版是1.6.2。[Gitblit][1]是一款开源、纯Java开发的用于管理浏览和服务的[Git][2]仓库。它被设计成一款为希望托管中心仓库的小工作组服务的工具。 +本篇教程我会演示如何安装 gitlit 服务器。gitlit的最新稳定版是1.6.2。[Gitblit][1]是一款开源、纯Java开发的用于管理、浏览和提供[Git][2]仓库服务的软件。它被设计成一款为希望托管中心仓库的小型工作组服务的工具。 mkdir -p /opt/gitblit; cd /opt/gitblit; wget http://dl.bintray.com/gitblit/releases/gitblit-1.6.2.tar.gz -### 列出目录: ### +### 列出解压后目录内容: ### root@vps124229 [/opt/gitblit]# ls ./ docs/ gitblit-stop.sh* LICENSE service-ubuntu.sh* @@ -21,7 +21,7 @@ ### 启动gitlit服务: ### -### 通过service命令: ### +**通过service命令:** root@vps124229 [/opt/gitblit]# cp service-centos.sh /etc/init.d/gitblit root@vps124229 [/opt/gitblit]# chkconfig --add gitblit @@ -29,7 +29,7 @@ Starting gitblit server . -### 手动启动: ### +**手动启动:** root@vps124229 [/opt/gitblit]# java -jar gitblit.jar --baseFolder data 2015-01-10 09:16:53 [INFO ] ***************************************************************** @@ -108,15 +108,15 @@ 打开浏览器,依据你的配置进入**http://localhost:8080** 或者 **https://localhost:8443**。 输入默认的管理员授权:**admin / admin** 并点击**Login** 按钮 -![snapshot2](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/snapshot2.png) +![snapshot2](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/snapshot2.png) ### 添加用户: ### -![snapshot1](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/snapshot1.png) +![snapshot1](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/snapshot1.png) -添加仓库: +###添加仓库:### -![snapshot3](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/snapshot3.png) +![snapshot3](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/snapshot3.png) ### 用命令行创建新的仓库: ### @@ -140,7 +140,7 @@ via: http://www.unixmen.com/install-gitblit-ubuntu-fedora-centos/ 作者:[M.el Khamlichi][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3794ad3136511fc2dd03324779f583c554f0aa31 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sun, 22 Mar 2015 22:26:40 +0800 Subject: [PATCH 634/725] translated --- .../20150318 The future of Linux storage.md | 82 ------------------ .../20150318 The future of Linux storage.md | 86 +++++++++++++++++++ 2 files changed, 86 insertions(+), 82 deletions(-) delete mode 100644 sources/talk/20150318 The future of Linux storage.md create mode 100644 translated/talk/20150318 The future of Linux storage.md diff --git a/sources/talk/20150318 The future of Linux storage.md b/sources/talk/20150318 The future of Linux storage.md deleted file mode 100644 index 25f178bf8b..0000000000 --- a/sources/talk/20150318 The future of Linux storage.md +++ /dev/null @@ -1,82 +0,0 @@ -[translating by KayGuoWhu] -The future of Linux storage -================================================================================ -> **Summary**:Linux software developers are working hard on expanding Linux's file and storage options. - -BOSTON - At the [Linux Foundation's][1] new [Vault][2] show, it's all about file systems and storage. You might think that there's nothing new to say about either topic, but you'd be wrong. - -![](http://zdnet2.cbsistatic.com/hub/i/r/2015/03/12/c8f92cc2-b963-4238-80a0-d785ec93698c/resize/770x578/08d93a8a393d3f50b2a56e6b0e7a0ca9/btrfs-1.jpg) -Linux file systems, such as Btrfs, and storage support options are constantly evolving. -- Facebook - -Storage technology has come a long way from the days of, as Linus Torvalds put it, "[nasty platters of spinning rust][3]" and Linux has had to keep up. In recent years, for example, [flash memory has arrived as enterprise server primary storage][4] and [persistent memory][5] is bringing us storage that works at DRAM speeds. At the same time, Big Data, cloud computing, and containers are all bringing new use cases to Linux. - -To deal with this, Linux developers are both expanding their existing file and storage programs and working on new ones. - -### Btrfs ### - -For instance, Chris Mason, a Facebook software engineer and one of the [Btrfs][6] (pronounced Butter FS) maintainers, explained how Facebook uses this file system. Btrfs has many advantages as a file system such as the ability to handle both numerous small files and single files as large as 16 exabytes; baked in RAID; built-in file-system compression; and integrated multi-storage device support. - -Facebook, of course, runs on Linux. To be exact, Facebook runs the 3.10 and 3.18 Linux kernels on an internal distribution, which is based on [CentOS][7]. For Facebook, the real win is that Btrfs is stable and fast under the endless input/output operations per second (IOPS) pounding from Facebook's constantly updating users. - -That's the good news. The bad news is that Btrfs is still much too slow for traditional DBMSs such as MySQL. For those, Facebook uses [XFS][8]. To co-ordinate the two file systems, Facebook uses [Gluster][9], the open-source distributed file system. - -Facebook, which works hand-in-glove with the upstream Btrfs Linux kernel developers, is working on improving Btrfs's DBMS speed. Mason, and his companions, are doing this by using Btrfs with the [RocksDB][10] database. This is a persistent key-value store for fast storage, which can be used as the foundation for a client-server database. - -Btrfs also still has some bugs. For example, if you're foolish enough to fill a disk almost to bursting, Btrfs will stop you from writing to storage before the disk is completely stuffed. For some projects, such as [CoreOS][12], the enterprise Linux that relies on containers, that's a showstopper. [CoreOS has since switched to using xt4 and overlayfs][11]. - -The Btrfs crew is also working on data deduplication. In this, when a file system has more than one identical file, you automatically delete the duplicate. As Mason said, "Not everyone needs this, but if you need it, you really need it!" - -Btrfs isn't the only file system that's both very important and getting worked on. John Spray, a senior software engineer at [Red Hat][13], talked about the distributed [Ceph][14] file system. - -### Ceph FS ### - -Ceph provides a distributed object store and file system which, in turn, relies on a resilient and scalable storage model (RADOS) using clusters of commodity hardware. Along with the RADOS block device (RBD), and the RADOS object gateway (RGW), Ceph provides a [POSIX][15] file-system interface -- Ceph FS. While RBD and RGW have been in use for production workloads for some time, efforts to make Ceph FS ready for production are now underway. - -[Red Hat, after acquiring Inktank][16], Ceph's parent company, in 2014 has been working hard on making CephFS production ready. For better or worse, Spray said, "Some people are already using it in production; we're terrified of this. It's really not ready yet." Still, Spray added, that this "is a mixed blessing because while it's a bit scary, we get really useful feedback and testing from those users." - -That's because while Ceph object stores scale out well, Ceph FS, as a POSIX compliant file-system, are hard to scale out. For example, as a distributed file system, Ceph FS has to deal with multiple writes from multiple clients. This can lead to all or nothing situations where one client can write and others must wait. This can result in file-locking situations that are more complicated than those in ordinary file systems. - -Still, Ceph FS is worth doing, Spray said, "since POSIX file-systems are an operating system lingua franca." That's not to say that Ceph FS doesn't work. "It's not horribly broken. It works. What's missing is the repair and monitoring tools." - -Red Hat is currently hard at work on getting [fsck][17] and journal repair tools, snapshot hardening, better client access control, and cloud and container integration. For now, though, Ceph FS is a file system that only the very brave, or foolish, should use in production. - -### File and storage odds and ends ### - -As for larger issues of file-systems and storage, Jeff Layton, senior software engineer at [Primary Data][18], explained that there are efforts under way to to create "tests for catastrophic power failure, without actually pulling the plug." These tests will soon be integrated with [xfstests][19], the gold standard for Linux file-system testing. - -Rik van Riel, a Red Hat principal software engineer, spoke about the problem of dealing with persistent memory products. You can treat them as storage or as memory. But, you can't currently take snapshots for backups if you use them as memory. The real problem: van Riel is certain that people will try to use persistent memory as both, which will lead to such as situations as "Without back up, how do you deal with a 200GB persistent memory database?" Adding insult to injury, logging systems don't currently work with persistent memory. - -What's the right answer? Linux doesn't have one yet, but programmers are working on it. - -So, while Linux has many file systems and can use any kind of storage out there that can hold a byte, there's still a lot of work to be done. Technology never stands still. Linux, which runs on everything from devices to desktops to servers to clouds to supercomputers, has to keep up with storage advances no matter where they appear. - --------------------------------------------------------------------------------- - -via: http://www.zdnet.com/article/linux-storage-futures/ - -作者:[Steven J. Vaughan-Nichols][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.zdnet.com/meet-the-team/us/sjvn/ -[1]:http://www.linuxfoundation.org/ -[2]:http://events.linuxfoundation.org/events/vault -[3]:http://www.wired.com/2012/10/linus-torvalds-hard-disks/ -[4]:http://www.zdnet.com/article/sandisk-launches-infiniflash-aims-to-bring-flash-array-costs-down/ -[5]:http://events.linuxfoundation.org/sites/events/files/eeus13_wheeler.pdf -[6]:https://btrfs.wiki.kernel.org/index.php/Main_Page -[7]:http://www.centos.org/ -[8]:http://oss.sgi.com/projects/xfs/ -[9]:http://www.gluster.org/ -[10]:http://rocksdb.org/ -[11]:http://lwn.net/Articles/627232/ -[12]:https://coreos.com/ -[13]:http://www.redhat.com/ -[14]:http://ceph.com/ -[15]:http://pubs.opengroup.org/onlinepubs/9699919799/ -[16]:http://www.zdnet.com/article/red-hat-acquires-inktank-for-175m/ -[17]:http://linux.die.net/man/8/fsck -[18]:http://primarydata.com/ -[19]:http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary \ No newline at end of file diff --git a/translated/talk/20150318 The future of Linux storage.md b/translated/talk/20150318 The future of Linux storage.md new file mode 100644 index 0000000000..23a2dfc674 --- /dev/null +++ b/translated/talk/20150318 The future of Linux storage.md @@ -0,0 +1,86 @@ +Linux存储的未来 +================================================================================ +> **摘要**:Linux系统的软件开发者们正致力于使Linux支持更多种类的文件和存储方案。 + +波士顿 - 在[Linux基金会][1]最近的[Vault][2]展示会上,全都是关于文件系统和存储方案的讨论。你可以会想关于这两个主题并没有什么展值得讨论的最新进展,但事实并非如此。 + +![](http://zdnet2.cbsistatic.com/hub/i/r/2015/03/12/c8f92cc2-b963-4238-80a0-d785ec93698c/resize/770x578/08d93a8a393d3f50b2a56e6b0e7a0ca9/btrfs-1.jpg) + +对Linux文件系统,比如Btrfs,和存储方案的支持正在持续发展中。 -- Facebook + +自从Linus提出“[讨厌的、生锈的机械磁盘]”的观点以来,存储技术已经走过一段长路,Linux也始终保持跟进。比如说,近几年来,[闪存已经逐渐成为企业服务器的主要存储器][4],[持久化内存][5]也正给我们带来拥有DRAM一般快速的存储。与此同时,大数据、云计算和容器化技术正给Linux引入新的应用场景。 + +为了应对挑战,Linux开发者们一边继续扩展已有的文件系统和存储程序,一边致力于开发新的方案。 + +### Btrfs ### + +例如,Chris Mason,一位来自Facebook的软件工程师,也是[Btrfs][6](对外宣称Butter FS)的维护者之一,说明了Facebook是如何使用这种文件系统。Btrfs拥有文件系统固有的许多优点,比如既能处理大量的小文件,也能处理大小可达16EB的单个文件;支持RAID的baked(烦请校正补充);内置的文件系统压缩,以及集成了对多种存储设备的支持。 + +当然,Facebook的服务器也运行在Linux上。更准确地讲,是运行在一个基于[CentOS][7]的内部发行版上,它是基于3.10和3.18版的内核。对Facebook来说,真正的收获是Btrfs在由Facebook持续的更新用户操作带来的巨大的IOPS(每秒钟输入输出的操作数)的负载下依旧保持稳定和快速。 + +这就是好消息,但坏消息是对于像MySQL一样的传统DBMS(数据库管理系统)来说Btrfs还是太慢了。对此,Facebook采用了[XFS][8]。为了协同这两种文件系统,Facebook又用到了一种叫做[Gluster][9]的开源分布式文件系统。 + +Facebook,一直与上游的负责Btrfs的Linux内核开发者保持密切联系,致力于提高Btrfs在DBMS上的速度。Mason和他的同事在[RocksDB][10]数据库上使用Btrfs以达成目标,RocksDB是一种为提供快速存储开发的持久化键值存储系统,可以作为客户端服务器模式数据库的基础部分。 + +当然Btrfs也还存在一些问题,比如,如果有用户傻到用数据把硬盘几乎要撑爆时,Btrfs会在硬盘被完全装满前阻止用户继续写入。对某些工程来说,比如[CoreOS][12],一款依赖容器化的企业版Linux系统,这种问题是致命的。[因此,CoreOS已经切换到使用xt4和overlayfs了][11]。 + +Btrfs的开发人员正致力于数据去重。在这一点上,当文件系统中拥有超过一个的相同文件时,会自动删除多余文件。正如Mason所说,“并非每个人都需要这个功能,但如果有人需要,那就是真的需要!” + +在正在开展的重要性工作中,Btrfs并非是唯一的文件系统。John Spary,[Red Hat][13]的一位高级软件工程师,提到了另一款名为[Ceph][14]的分布式文件系统。 + +### Ceph FS ### + +Ceph提供了一种分布式对象存储方案和文件系统,反过来它依托于一种使用商用硬件集群的弹性的、可扩展的存储模型(RADOS)。配合RADOS块设备(RBD)和RADOS对象网关(RGW),Ceph提供了一种[POSIX][15]接口的文件系统 -- Ceph FS。尽管RBD和RGW已经在生产环境中使用了一段时间,但使Ceph FS适用于生产的工作还是进行中。 + +[Rad Hat,在收购Ceph的母公司Inktank后][16],在2014年一直致力于使CephFS适用于生产环境。不管怎样,Spray说,“有些人已经在生产中使用了它;我们对此表示担忧,毕竟它还没有准备好。”然而,Spray也补充说,“这具有两面性,因为一方面这是让人担心的,另一方面我们又从用户获得了真正有用的反馈和测试。” + +这是因为尽管Ceph对象存储很好地支持扩展,但Ceph Fs,作为一种兼容POSIX的文件系统,却很难实现扩展。比如,作为一种分布式文件系统,Ceph FS必须解决来自多个客户端的多个写操作。这会导致全有或全无的情况,即一个客户端可以写入,但其它客户端必须等待,也会产生文件加锁的情形,即相比普通文件系统中更加复杂。 + +但是,Ceph FS仍值得去做,正如Spray所说,“因为兼容POSIX的文件系统是操作系统通用的。”这并不是说Ceph FS就一无是处。“它并不是支离破碎的,相反它奏效了。所缺的是修复和监控工具。” + +Red Hat目前正致力于获得[fsck][17]和日志修复工具、快照强化、更好客户端访问控制,以及云与容器的集成。尽管Ceph FS到目前为止只是一种有潜力或者没前景的文件系统,但仍然值得用在生产环境中。 + +### 文件与存储的差别与目标 ### + +至于文件系统和存储上的更大问题,Jeff Layton,[Primary Data][18]的一位高级软件工程师,解释说为了“在不断开电源的情况下给灾难性的电源故障提供测试”,大量的相关工作正在进行中。这些测试很快会被集成到[xftests][19]中,它是Linux文件系统测试的黄金标准。 + +Rik van Riel,一位Red Hat的主要软件工程师,谈到了解决持久化内存产品的问题。你可以把它们作为存储器或者内存。但是,如果你现在把它们作为内存来用,是不能为备份创建快照。真正的问题是:van Riel确信人们会尝试使用持久的内存作这两种用途,这会导致出现和“如果不备份,你会如何处理一个200GB大小的持久化内存数据库?”类似的情形发生。更糟的是,现在日志系统也无法和持久化的内存一起发挥作用。 + +正确的答案是什么呢?Linux至今还没有一个,但编程人员们正在努力寻找答案。 + +因此,尽管Linux支持很多文件系统,可以使用这里以外的任何一种存储器来存储数据,但是仍然有很多工作要做。技术从来不会止步不前。Linux,正运行在移动设备、桌面电脑、服务器、云端和超级计算机上等几乎所有的主流设备上,必须跟紧存储的发展步伐,不管它们以何种形式出现。 + +-------------------------------------------------------------------------------- + +via: http://www.zdnet.com/article/linux-storage-futures/ + +作者:[Steven J. Vaughan-Nichols][a] +译者:[KayGuoWhu](https://github.com/KayGuoWhu) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.zdnet.com/meet-the-team/us/sjvn/ +[1]:http://www.linuxfoundation.org/ +[2]:http://events.linuxfoundation.org/events/vault +[3]:http://www.wired.com/2012/10/linus-torvalds-hard-disks/ +[4]:http://www.zdnet.com/article/sandisk-launches-infiniflash-aims-to-bring-flash-array-costs-down/ +[5]:http://events.linuxfoundation.org/sites/events/files/eeus13_wheeler.pdf +[6]:https://btrfs.wiki.kernel.org/index.php/Main_Page +[7]:http://www.centos.org/ +[8]:http://oss.sgi.com/projects/xfs/ +[9]:http://www.gluster.org/ +[10]:http://rocksdb.org/ +[11]:http://lwn.net/Articles/627232/ +[12]:https://coreos.com/ +[13]:http://www.redhat.com/ +[14]:http://ceph.com/ +[15]:http://pubs.opengroup.org/onlinepubs/9699919799/ +[16]:http://www.zdnet.com/article/red-hat-acquires-inktank-for-175m/ +[17]:http://linux.die.net/man/8/fsck +[18]:http://primarydata.com/ +[19]:http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=summary + + + + From 639279db9a16c8ff1c030037cf79eb8b47d7b903 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 22 Mar 2015 22:34:11 +0800 Subject: [PATCH 635/725] PUB:20150309 15 Basic 'ls' Command Examples in Linux @ZTinoZ --- ...15 Basic 'ls' Command Examples in Linux.md | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) rename {translated/tech => published}/20150309 15 Basic 'ls' Command Examples in Linux.md (91%) diff --git a/translated/tech/20150309 15 Basic 'ls' Command Examples in Linux.md b/published/20150309 15 Basic 'ls' Command Examples in Linux.md similarity index 91% rename from translated/tech/20150309 15 Basic 'ls' Command Examples in Linux.md rename to published/20150309 15 Basic 'ls' Command Examples in Linux.md index 31fdefd736..e5feb79b2e 100644 --- a/translated/tech/20150309 15 Basic 'ls' Command Examples in Linux.md +++ b/published/20150309 15 Basic 'ls' Command Examples in Linux.md @@ -1,9 +1,10 @@ Linux中的15个基本‘ls’命令示例 ================================================================================ -ls命令是Linux系统中最被频繁使用的命令之一,我相信ls命令一定是你进入一台Linux系统的电脑打开命令提示符后第一个使用的命令。我们每天都在频繁地使用ls命令即使我们可能没有意识也从来用不到所以可用的选项。本文中,我们将讨论下一些基本的ls命令并且覆盖尽可能多的有关参数来讲解。 +ls命令是Linux系统中最被频繁使用的命令之一,我相信ls命令一定是你进入一台Linux系统的电脑打开命令提示符后第一个使用的命令。我们每天都在频繁地使用ls命令,即使我们可能没有意识也从来用不到所有可用的选项。本文中,我们将讨论下一些基本的ls命令并且覆盖尽可能多的有关参数来讲解。 ![Linux ls Command](http://www.tecmint.com/wp-content/uploads/2012/08/Linux-ls-Commands.png) -Linux的ls命令 + +*Linux的ls命令* ### 1. 不带任何选项列出文件 ### @@ -14,7 +15,7 @@ Linux的ls命令 0001.pcap Desktop Downloads index.html install.log.syslog Pictures Templates anaconda-ks.cfg Documents fbcmd_update.php install.log Music Public Videos -### 2 带–l选项列出文件列表 ### +### 2 带 –l 选项列出文件列表 ### 你看,ls -l(-l是字母不是“1”)就能展示出是文件还是目录,它的大小、修改日期和时间、文件或目录的名字以及文件的属主和它的权限。 @@ -50,9 +51,9 @@ Linux的ls命令 .bash_logout Desktop fbcmd_update.php .ICEauthority .mozilla Public Videos .bash_profile .digrc .gconf index.html Music .pulse .wireshark -### 4. 用-lh选项来以人类可读方式列出文件 ### +### 4. 用 -lh 选项来以易读方式列出文件 ### -用-lh组合选项,以人类可读方式来显示大小。 +用-lh组合选项,以易读方式来显示大小。 # ls -lh @@ -74,7 +75,7 @@ Linux的ls命令 ### 5. 以尾部以‘/’字符结尾的方式列出文件和目录 ### -Using -F option with ls command, will add the ‘/’ Character at the end each directory. +使用 ls 命令的 -F 选项,会在每个目录的末尾添加“/”字符显示。 # ls -F @@ -83,7 +84,7 @@ Using -F option with ls command, will add the ‘/’ Character at the end each ### 6. 倒序列出文件 ### -ls -r选项能以倒序方式显示文件和目录。 +ls -r 选项能以倒序方式显示文件和目录。 # ls -r @@ -92,7 +93,7 @@ ls -r选项能以倒序方式显示文件和目录。 ### 7. 递归列出子目录 ### -ls -R选项能列出非常长的目录树,来看看示例输出: +ls -R 选项能列出非常长的目录树,来看看示例输出: # ls -R @@ -115,7 +116,7 @@ ls -R选项能列出非常长的目录树,来看看示例输出: -rw-r--r--. 1 root root 0 Aug 12 03:17 access.log -rw-r--r--. 1 root root 390 Aug 12 03:17 access.log-20120812.gz -### 8. 反向输出次序 ### +### 8. 以修改时间倒序列出 ### 带-ltr组合选项能以文件或目录的最新修改时间的次序来显示它们。 @@ -159,9 +160,9 @@ ls -R选项能列出非常长的目录树,来看看示例输出: -rw-------. 1 root root 1586 Jul 31 02:17 anaconda-ks.cfg -rw-r--r--. 1 root root 683 Aug 19 09:59 0001.pcap -### 10. 显示文件或目录的索引节点数 ### +### 10. 显示文件或目录的索引节点号 ### -我们有时候可以看到一些数字打印在文件或目录名之前,带-i选项就能列出文件或目录的索引节点数。 +我们有时候可以看到一些数字打印在文件或目录名之前,带-i选项就能列出文件或目录的索引节点号。 # ls -i @@ -192,7 +193,7 @@ ls -R选项能列出非常长的目录树,来看看示例输出: ### 13. 列出目录信息 ### -用ls -l命令列出/tmp目录下的文件,其中-ld参数可以显示/tmp目录的信息。 +用ls -l命令列出/tmp目录下的文件,其中-ld参数可以只显示/tmp目录的信息。 # ls -l /tmp total 408 @@ -225,13 +226,13 @@ ls -R选项能列出非常长的目录树,来看看示例输出: -rw-rw-r--. 1 500 500 12 Aug 21 13:06 tmp.txt drwxr-xr-x. 2 500 500 4096 Aug 2 01:52 Videos -### 15. ls命令和它的别名功能 ### +### 15. ls命令和它的别名 ### -我们给ls命令设置过别名之后,当我们执行ls命令的时候它会默认执行-l选项并且像上文提到的那样显示长列表。 +我们给ls命令设置如下别名之后,当我们执行ls命令的时候它会默认执行-l选项并且像上文提到的那样显示长列表。 # alias ls="ls -l" -注意:我们可以通过不加任何参数的alias命令来看到目前系统中可用的所有alias设置,当然它们同时也可以unalias。 +注意:我们可以通过不加任何参数的alias命令来看到目前系统中可用的所有alias设置,当然它们同时也可以unalias来取消。 # alias @@ -255,7 +256,7 @@ via: http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ 作者:[Ravi Saive][a] 译者:[ZTinoZ](https://github.com/ZTinoZ) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From dc84746601357d22fc0081160942a2dae923d8a4 Mon Sep 17 00:00:00 2001 From: LouisWei Date: Mon, 23 Mar 2015 10:51:30 +0800 Subject: [PATCH 636/725] translating wi-cuckoo LLAP --- ...tolen laptops and Smart phones Using Prey Tool in Ubuntu.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md index 598c56bd66..d1a881f189 100644 --- a/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md +++ b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md @@ -1,3 +1,4 @@ +translating wi-cuckoo LLAP Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu ================================================================================ Prey is an open source, cross platform tool which helps recover your stolen laptops, desktops, tablet computers and smart phones. It has gained vast popularity and has claimed to help recover hundreds of missing laptops and smart phones. The working of this tool is pretty simple, install it on your Laptop or smart phone, and if your device goes missing, login the Prey website with your credentials and mark your device as “Missing” there. As soon as the thief connects your device with internet, it will immediately send you the Geo location of your device. If your laptop is having webcam, it will also capture the screenshot of the thief. @@ -67,4 +68,4 @@ via: http://linoxide.com/ubuntu-how-to/anti-theft-application-prey-ubuntu/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunrz/ -[1]:https://preyproject.com/ \ No newline at end of file +[1]:https://preyproject.com/ From a435269ed5595e4752bab12f971f96b94271684d Mon Sep 17 00:00:00 2001 From: johnhoow Date: Mon, 23 Mar 2015 13:23:01 +0800 Subject: [PATCH 637/725] translated --- ...eight Budgie v8 Desktop in Ubuntu 14.04.md | 99 ------------------- ...eight Budgie v8 Desktop in Ubuntu 14.04.md | 97 ++++++++++++++++++ 2 files changed, 97 insertions(+), 99 deletions(-) delete mode 100644 sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md create mode 100644 translated/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md diff --git a/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md b/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md deleted file mode 100644 index 60155b9f68..0000000000 --- a/sources/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md +++ /dev/null @@ -1,99 +0,0 @@ -johnhoow translating... -How to Install Lightweight Budgie ( v8) Desktop in Ubuntu 14.04 -================================================================================ -Budgie is the flagship desktop of the Evolve OS Linux Distribution, and is an Evolve OS project. Designed with the modern user in mind, it focuses on simplicity and elegance. A huge advantage for the Budgie desktop is that it is not a fork of another project, but rather one written from scratch with integration in mind. - -The [Budgie Desktop][1] tightly integrates with the GNOME stack, employing underlying technologies to offer an alternative desktop experience. In the spirit of open source, the project is compatible with and available for other Linux distributions. - -Also note that Budgie can now emulate the look and feel of the GNOME 2 desktop, optionally, via a setting in the panel preferences. - -### Features in the 0.8 release ### - -- IconTasklist: Add pinning support -- IconTasklist: Use .desktop files for quicklists -- IconTasklist: Use .desktop files for icon resolution -- IconTasklist: Support “attention” hint (blue blink) -- Panel: Support dark theme (used by default) -- Add Menubar applet -- Panel: Initial autohide support (manual, not automatic) -- Panel: Support shadow onall screen edges -- Panel: Dynamic support for gnome panel theming -- RunDialog: Complete visual refresh (bootiful) -- BudgieMenu: Add compact mode, use by default -- BudgieMenu: Sort items by usage -- BudgieMenu: Remove old power option -- Editor: Add all menu options to UI -- Support from GNOME 3.10 up to 3.16 (unreleased, git) -- wm: Kill workspace animation (resolve after v8) -- wm: Better animations for changing of wallpapers - -### Important information ### - -- Budgie [released version 0.8][2] so it is still in development and a beta. -- No nnative network management; can be fixed by using Ubuntu's applet. -- Budgie is intended for the Evolve OS so even with this PPA it might be buggy. -- GNOME themes work better than the native Ubuntu themes. -- Ubuntu’s overlay scrollbars are not working. -- If you want to read more visit the Evolve OS website. - -### Installation ### - -Now, we'll install our Lightweight Budgie Desktop in our Ubuntu 14.04 LTS "Trusty" distribution of Linux Operating System. First of all, we'll need to add ppa repository to our Ubuntu PC. To do so, we'll need to execute the below command in a shell or terminal. - - $ sudo add-apt-repository ppa:evolve-os/ppa - -![Add Budgie Desktop PPA Repo](http://blog.linoxide.com/wp-content/uploads/2015/01/budgie-desktop-ppa.png) - -Now, after we finish adding PPA to our Ubuntu Computer, we'll need to update the local repository index in it. It can be done by running the following command in the same terminal or shell after above is done. - - $ sudo apt-get update - -Then, finally, we'll install the one and only Budgie Desktop Environment in our Ubuntu machine running the latest version 14.04 LTS. - - $ sudo apt-get install budgie-desktop - -![Install Budgie Desktop](http://blog.linoxide.com/wp-content/uploads/2015/02/install-budgie-desktop.png) - -**Notes** - -It is in active development and features remain missing, including, but not limited to: no network management support, no volume control applet (keyboard keys will work fine), no notification system and no way to ‘pin’ apps to the task bar. - -As a workaround you can disable overlay scrollbars, set a different default theme and quit a session from the terminal using the following command: - - $ gnome-session-quit - -![Quitting Gnome Session](http://blog.linoxide.com/wp-content/uploads/2015/02/gnome-seesion-quit.png) - -### Log into the Budgie Session ### - -After installation is completed, we’ll be able to select ‘Budgie’ from the session selector of the Unity Greeter. For that, we'll need to logout the current user and get back to the login screen. Then, we'll be able to switch to Budgie Desktop Environment. - -![Select Desktop Session](http://blog.linoxide.com/wp-content/uploads/2015/02/session-select.png) - -### Budgie Desktop Environment ### - -![Budgie Desktop Environment](http://blog.linoxide.com/wp-content/uploads/2015/02/budgie-desktop.png) - -### Logging Out ### - -You can simply execute **budgie-session --logout** in a shell or terminal to logout it. - - $ budgie-sessioon --logout - -### Conclusion ### - -Hurray! We have successfully installed our Lightweight Budgie Desktop Environment in our Ubuntu 14.04 LTS "Trusty" box. As we know, Budgie Desktop is still underdevelopment which makes it a lot of stuffs missing. Though it’s based on Gnome’s GTK3, it’s not a fork. The desktop is written completely from scratch, and the design is elegant and well thought out. If you have any questions, comments, feedback please do write on the comment box below and let us know what stuffs needs to be added or improved. Thank You! Enjoy Budgie Desktop 0.8 :-) - --------------------------------------------------------------------------------- - -via: http://linoxide.com/ubuntu-how-to/install-lightweight-budgie-v8-desktop-ubuntu/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:https://evolve-os.com/budgie/ -[2]:https://evolve-os.com/2014/11/16/courageous-budgie-v8-released/ diff --git a/translated/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md b/translated/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md new file mode 100644 index 0000000000..10bb779e71 --- /dev/null +++ b/translated/tech/20150227 How to Install Lightweight Budgie v8 Desktop in Ubuntu 14.04.md @@ -0,0 +1,97 @@ +如何在ubuntu14.04上安装轻量级的Budgie桌面(v8) +================================================================================ +Budgie是为Linux发行版定制的旗舰桌面,也是一个定制工程。为思想前卫的用户设计,致力于简单和简洁。它的一个巨大优势是它不是别的项目的fork版本,是从都到尾都独立的。 + +[Budgie桌面][1]与GNOME栈紧密结合,使用先进的技术从而提供一个可选择的桌面体验。出于开源理念,这个桌面之后也能在别的Linux发行版中看到。 + +现在Budgie能够通过面板的设置达到和GNOME2桌面相似的使用体验。 + +### 0.8版的特点 ### + +- 任务栏:支持应用锁定到任务栏 +- 任务栏:使用.desktop文件来配置quicklists菜单 +- 任务栏:使用.desktop文件来配置图标分辨率 +- 任务栏:支持有通知时蓝色闪烁 +- 面板:支持默认深色主体 +- 添加菜单条的小组件 +- 面板:自动隐藏菜单条和工具条(这配置为手动) +- 面板:支持屏幕边缘处阴影 +- 面板:动态支持gnome面板主题 +- 运行对话框:虚拟刷新 +- Budgie菜单: 增加紧凑模式,并默认采用 +- Budgie菜单: 按照使用顺序排列菜单项 +- Budgie菜单: 移除旧的电源选项 +- 编辑器: 在UI中增加所有的菜单选项 +- 支持从GNOME 3.10 升级到3.16 +- wm: 关闭工作区的动画(v8之后) +- wm: 改变壁纸时更好的动画 + +### 重要信息 ### + +- Budgie [0.8版发行版][2]目前只是beta +- 无本地网络管理;可以通过使用ubuntu的小组件解决 +- Budgie 是为Evolve OS设计的,因此这个PPA可能会有bug +- GNOME 主题比Ubuntu本地的主题效果更好 +- Ubuntu的滚动栏将不在工作 +- 如果你想了解的更多可以访问Evolve OS网站 + +### 安装 ### + +现在,我们将在Ubuntu14.04 LTS中安装我们自己的轻量级Budgie桌面。首先,我们要把PPA源添加到我们的Ubuntu中。执行以下命令: + + $ sudo add-apt-repository ppa:evolve-os/ppa + +![添加Budgie的ppa源](http://blog.linoxide.com/wp-content/uploads/2015/01/budgie-desktop-ppa.png) + +添加完ppa之后,运行下面的命令更新本地软件仓库。 + + $ sudo apt-get update + +然后只要执行下面的命令安装 + + $ sudo apt-get install budgie-desktop + +![安装 Budgie Desktop](http://blog.linoxide.com/wp-content/uploads/2015/02/install-budgie-desktop.png) + +**注意点** + +这是一个活跃的开发版本,一些主要的特点可能还不是特别的完善,如:网络管理器,为数不多的控制组件,无通知系统斌并且无法将app锁定到任务栏。 + +作为工作区你能够禁用滚动栏,通过设置一个默认的主题并且通过下面的命令退出当前的会话 + + $ gnome-session-quit + +![退出 Gnome 会话](http://blog.linoxide.com/wp-content/uploads/2015/02/gnome-seesion-quit.png) + +### 登录Budgie会话 ### + +安装完成之后,我们能在登录时选择机进入budgie桌面。 + +![选择桌面会话](http://blog.linoxide.com/wp-content/uploads/2015/02/session-select.png) + +### Budgie 桌面环境 ### + +![Budgie 桌面环境](http://blog.linoxide.com/wp-content/uploads/2015/02/budgie-desktop.png) + +### 注销当前用户 ### + + $ budgie-sessioon --logout + +### 结论 ### + +Hurray! We have successfully installed our Lightweight Budgie Desktop Environment in our Ubuntu 14.04 LTS "Trusty" box. As we know, Budgie Desktop is still underdevelopment which makes it a lot of stuffs missing. Though it’s based on Gnome’s GTK3, it’s not a fork. The desktop is written completely from scratch, and the design is elegant and well thought out. If you have any questions, comments, feedback please do write on the comment box below and let us know what stuffs needs to be added or improved. Thank You! Enjoy Budgie Desktop 0.8 :-) +Budgie桌面当前正在开发过程中,因此有目前有很多功能的缺失。虽然它是基于Gnome,但不是完全的复制。Budgie是完全从零开始实现,它的设计是优雅的并且正在不断的完善。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/install-lightweight-budgie-v8-desktop-ubuntu/ + +作者:[Arun Pyasi][a] +译者:[johnhoow](https://github.com/johnhoow) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://evolve-os.com/budgie/ +[2]:https://evolve-os.com/2014/11/16/courageous-budgie-v8-released/ From 9352e84b9bdb2599941f24d7f0462036c9e60a79 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 23 Mar 2015 16:25:24 +0800 Subject: [PATCH 638/725] =?UTF-8?q?20150323-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...23 Papyrus--An Open Source Note Manager.md | 57 +++++++ ... Hat Developer Toolset 3.1 beta arrives.md | 52 ++++++ ...e 2.0 Icon Pack Is Twice More Beautiful.md | 56 ++++++ ...ble ssh login without entering password.md | 41 +++++ ...up networking between Docker containers.md | 160 ++++++++++++++++++ ...G images from the command line on Linux.md | 100 +++++++++++ ...and access CentOS remote desktop on VPS.md | 121 +++++++++++++ 7 files changed, 587 insertions(+) create mode 100644 sources/share/20150323 Papyrus--An Open Source Note Manager.md create mode 100644 sources/share/20150323 Red Hat Developer Toolset 3.1 beta arrives.md create mode 100644 sources/share/20150323 Square 2.0 Icon Pack Is Twice More Beautiful.md create mode 100644 sources/tech/20150323 How to enable ssh login without entering password.md create mode 100644 sources/tech/20150323 How to set up networking between Docker containers.md create mode 100644 sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md create mode 100644 sources/tech/20150323 Linux FAQs with Answers--How to install and access CentOS remote desktop on VPS.md diff --git a/sources/share/20150323 Papyrus--An Open Source Note Manager.md b/sources/share/20150323 Papyrus--An Open Source Note Manager.md new file mode 100644 index 0000000000..eda13551a8 --- /dev/null +++ b/sources/share/20150323 Papyrus--An Open Source Note Manager.md @@ -0,0 +1,57 @@ +Papyrus: An Open Source Note Manager +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_4.jpeg) + +In last post, we saw an [open source to-do app Go For It!][1]. In a similar article, today we’ll see an **open source note taking application Papyrus**. + +[Papyrus][2] is a fork of [Kaqaz note manager][3] and is built on QT5. It brings a clean, polished user interface and is security focused (as it claims). Emphasizing on simplicity, I find Papyrus similar to OneNote. You organize your notes in ‘paper’ and add them a label for grouping those papers. Simple enough! + +### Papyrus features: ### + +Though Papyrus focuses on simplicity, it still has plenty of features up its sleeves. Some of the main features are: + +- Note management with labels and categories +- Advanced search options +- Touch mode available +- Full screen option +- Back up to Dropbox/hard drive/external +- Password protection for selective papers +- Sharing papers with other applications +- Encrypted synchronization via Dropbox +- Available for Android, Windows and OS X apart from Linux + +### Install Papyrus ### + +Papyrus has APK available for Android users. There are installer files for Windows and OS X. Linux users can get source code of the application. Ubuntu and other Ubuntu based distributions can use the .deb packages. Based on your OS and preference, you can get the respective files from the Papyrus download page: + +- [Download Papyrus][4] + +### Screenshots ### + +Here are some screenshots of the application: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_3-700x450_c.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_2-700x450_c.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_1-700x450_c.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux-700x450_c.jpeg) + +Give Papyrus a try and see if you like it. Do share your experience with it with the rest of us here. + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/papyrus-open-source-note-manager/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/go-for-it-to-do-app-in-linux/ +[2]:http://aseman.co/en/products/papyrus/ +[3]:https://github.com/sialan-labs/kaqaz/ +[4]:http://aseman.co/en/products/papyrus/ \ No newline at end of file diff --git a/sources/share/20150323 Red Hat Developer Toolset 3.1 beta arrives.md b/sources/share/20150323 Red Hat Developer Toolset 3.1 beta arrives.md new file mode 100644 index 0000000000..9faf1f2eb4 --- /dev/null +++ b/sources/share/20150323 Red Hat Developer Toolset 3.1 beta arrives.md @@ -0,0 +1,52 @@ +Red Hat Developer Toolset 3.1 beta arrives +================================================================================ +> **Summary**:Want the newest developer tools for Red Hat Enterprise Linux 6 or 7? The beta's ready for you now. + +It's one of those eternal problems between developers and operators that even [DevOps][1] can't entirely solve. System administrators want the most stable operating system possible, while programmers want the latest and greatest development tools. [Red Hat][2]'s solution for this dilemma has been to take those brand spanking-new tools, test them out on the latest stable [Red Hat Enterprise Linux (RHEL)][3], and then release them to developers. + +![Red Hat Developer Toolset](http://zdnet4.cbsistatic.com/hub/i/2015/03/18/d92b1067-6b36-4ff0-ac9e-608fbe3e8c5d/ae80362df5401a37e3cbcd2598f33370/rhel-dev-tools.png) +Red Hat Developer Toolset + +So it is that Red Hat has just announced its latest toys for developers, [Red Hat Developer Toolset 3.1][4]. This packaging of the hottest new tools is now available in beta. + +This update includes: + +[GNUCompiler Collection (GCC) 4.9][5]: the latest stable upstream version of GCC, which provides numerous improvements and bug fixes + +[Eclipse 4.4.1][6]: with support for Java 8 and updated versions of Eclipse CDT (8.5), Eclipse Linux Tools (3.1), Eclipse Mylyn (3.14), and Eclipse Egit/Jgit (3.6.1) + +Numerous additional updated packages: These include GDB 7.8.2, elfutils 0.161, memstomp 0.1.5, SystemTap 2.6, Valgrind 3.10.1, Dyninst 8.2.1, and ltrace 0.7.91. + +With these development programs, you'll be able to create applications for RHEL 6 and 7.x. These apps will then run on RHEL regardless of whether you're running it on a physical, virtual or cloud environments. They will also run on Red Hat's [OpenShift][7], its Platform-as-a-Service (PaaS) offering. + +This new set of developer programs includes packages for both RHEL 7 and 7 running on [AMD64 and Intel 64 architectures][8]. Although the tools are 64-bit you can use them to create and modify 32-bit binaries. + +Before you try running any of these programs, you should patch RHEL with all the latest updates. To install the beta Toolset, your systems need to be subscribed to the Optional channel to access all the required Red Hat Developer Toolset tool-chain packages. + +In addition, if you've installed earlier Toolkits you may run into some [problems while installing Toolkit 3.1][9]. While these difficulties are easy enough to fix, you should go over these possible hiccups before trying to install the new Toolkit. + +Finally, you may notice that some of the most exciting of the new tools, such as Docker, Kubernetes, and other container tools aren't here. That's because they're in the newly released [RHEL 7.1][10] and [Red Hat Enterprise Linux 7 Atomic Host (RHELAH)][11]. [Red Hat has partnered with Docker][12], but you'll need to move to a Docker-friendly version of RHEL to get at these container-friendly programs. + +-------------------------------------------------------------------------------- + +via: http://www.zdnet.com/article/red-hat-developer-toolset-3-1-beta-arrives/ + +作者:[Steven J. Vaughan-Nichols][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.zdnet.com/meet-the-team/us/sjvn/ +[1]:http://blogs.csc.com/2015/02/03/devops-theory-for-beginners/ +[2]:http://www.redhat.com/en +[3]:http://www.redhat.com/en/technologies/linux-platforms/enterprise-linux +[4]:http://www.redhat.com/en/about/blog/red-hat-developer-toolset-31-beta-now-available +[5]:https://gcc.gnu.org/gcc-4.9/ +[6]:https://projects.eclipse.org/projects/eclipse/releases/4.4.1 +[7]:https://www.openshift.com/ +[8]:https://access.redhat.com/documentation/en-US/Red_Hat_Developer_Toolset/3-Beta/html/3.1_Release_Notes/System_Requirements.html +[9]:https://access.redhat.com/documentation/en-US/Red_Hat_Developer_Toolset/3-Beta/html/3.1_Release_Notes/DTS3.1_Release.html#Known_Issues +[10]:http://www.zdnet.com/article/red-hat-7-1-is-here-centos-7-1-is-coming-soon/ +[11]:http://www.zdnet.com/article/red-hat-buys-into-docker-containers-with-atomic-host/ +[12]:http://www.zdnet.com/article/red-hat-partners-with-docker-to-create-linuxdocker-software-stack/ \ No newline at end of file diff --git a/sources/share/20150323 Square 2.0 Icon Pack Is Twice More Beautiful.md b/sources/share/20150323 Square 2.0 Icon Pack Is Twice More Beautiful.md new file mode 100644 index 0000000000..b0e5afbf8b --- /dev/null +++ b/sources/share/20150323 Square 2.0 Icon Pack Is Twice More Beautiful.md @@ -0,0 +1,56 @@ +Square 2.0 Icon Pack Is Twice More Beautiful +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Square_Icon_Pack_Linux_3.jpeg) + +Elegant, modern looking [Square icon theme][1] has recently been upgraded to version 2.0, which makes it more beautiful than ever. Square icon packs are compatible with all major desktop environments such as **Unity, GNOME, KDE, MATE** etc. Which means that you can use them for all popular Linux distributions such as Ubuntu, Fedora, Linux Mint, elementary OS etc. The vastness of this icon pack can be estimated from the fact it contains over 15,000 icons. + +### Install and use Square icon pack 2.0 in Linux ### + +There are two variants of Square icons, dark and light. Based on your preference, you can choose either of the two. For experimentation sake, I would advise you to download both variants of the icon theme. + +You can download the icon pack from the link below. The files are stored in Google Drive, so don’t be suspicious if you don’t see a standard website like [SourceForge][2]. + +- [Square Dark Icons][3] +- [Square Light Icons][4] + +To use the icon theme, extract the downloaded files in ~/.icons directory. If this doesn’t exist, create it. Once you have the files in the right place, based on your desktop environment, use a tool to change the icon theme. I have written some small tutorials in the past on this topic. Feel free to refer to them if you need further help: + +- [How to change themes in Ubuntu Unity][5] +- [How to change themes in GNOME Shell][6] +- [How to change themes in Linux Mint][7] +- [How to change theme in Elementary OS Freya][8] + +### Give it a try ### + +Here is what my Ubuntu 14.04 looks like with Square icons. I am using [Ubuntu 15.04 default wallpaper][9] in the background. + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Square_Icon_Pack_Linux_2.jpeg) + +A quick look at several icons in the Square theme: + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Square_Icon_Pack_Linux.jpeg) + +How do you find it? Do you think it can be considered as one of the [best icon themes for Ubuntu 14.04][10]? Do share your thoughts and stay tuned for more articles on customizing your Linux desktop. + + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/square-2-0-icon-pack-linux/ + +作者:[Abhishek][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://gnome-look.org/content/show.php/Square?content=163513 +[2]:http://sourceforge.net/ +[3]:http://gnome-look.org/content/download.php?content=163513&id=1&tan=62806435 +[4]:http://gnome-look.org/content/download.php?content=163513&id=2&tan=19789941 +[5]:http://itsfoss.com/how-to-install-themes-in-ubuntu-13-10/ +[6]:http://itsfoss.com/install-switch-themes-gnome-shell/ +[7]:http://itsfoss.com/install-icon-linux-mint/ +[8]:http://itsfoss.com/install-themes-icons-elementary-os-freya/ +[9]:http://itsfoss.com/default-wallpapers-ubuntu-1504/ +[10]:http://itsfoss.com/best-icon-themes-ubuntu-1404/ \ No newline at end of file diff --git a/sources/tech/20150323 How to enable ssh login without entering password.md b/sources/tech/20150323 How to enable ssh login without entering password.md new file mode 100644 index 0000000000..40a4085f01 --- /dev/null +++ b/sources/tech/20150323 How to enable ssh login without entering password.md @@ -0,0 +1,41 @@ +How to enable ssh login without entering password +================================================================================ +Assume that you are a user "aliceA" on hostA, and wish to ssh to hostB as user "aliceB", without entering her password on hostB. You can follow this guide to **enable ssh login without entering a password**. + +First of all, you need to be logged in as user "aliceA" on hostA. + +Generate a public/private rsa key pair by using ssh-keygen. The generated key pair will be stored in ~/.ssh directory. + + $ ssh-keygen -t rsa + +Then, create ~/.ssh directory on aliceB account at the destination hostB by running the following command. This step can be omitted if there is already .ssh directory at aliceB@hostB. + + $ ssh aliceB@hostB mkdir -p .ssh + +Finally, copy the public key of user "aliceA" on hostA to aliceB@hostB to enable password-less ssh. + + $ cat .ssh/id_rsa.pub | ssh aliceB@hostB 'cat >> .ssh/authorized_keys' + +From this point on, you no longer need to type in password to ssh to aliceB@hostB from aliceA@hostA. + +### Troubleshooting ### + +1. You are still asked for an SSH password even after enabling key authentication. In this case, check for system logs (e.g., /var/log/secure) to see if you see something like the following. + + Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys + +In this case, failure of key authentication is due to the fact that the permission or ownership ~/.ssh/authorized_keys file is not correct. Typically this error can happen if ~/.ssh/authorized_keys is read accessible to anyone but yourself. To fix this problem, change the file permission as follows. + + $ chmod 700 ~/.ssh/authorized_keys + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/how-to-enable-ssh-login-without.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni \ No newline at end of file diff --git a/sources/tech/20150323 How to set up networking between Docker containers.md b/sources/tech/20150323 How to set up networking between Docker containers.md new file mode 100644 index 0000000000..7f950494be --- /dev/null +++ b/sources/tech/20150323 How to set up networking between Docker containers.md @@ -0,0 +1,160 @@ +How to set up networking between Docker containers +================================================================================ +As you may be aware, Docker container technology has emerged as a viable lightweight alternative to full-blown virtualization. There are a growing number of use cases of Docker that the industry adopted in different contexts, for example, enabling rapid build environment, simplifying configuration of your infrastructure, isolating applications in multi-tenant environment, and so on. While you can certainly deploy an application sandbox in a standalone Docker container, many real-world use cases of Docker in production environments may involve deploying a complex multi-tier application in an ensemble of multiple containers, where each container plays a specific role (e.g., load balancer, LAMP stack, database, UI). + +There comes the problem of **Docker container networking**: How can we interconnect different Docker containers spawned potentially across different hosts when we do not know beforehand on which host each container will be created? + +One pretty neat open-source solution for this is [weave][1]. This tool makes interconnecting multiple Docker containers pretty much hassle-free. When I say this, I really mean it. + +In this tutorial, I am going to demonstrate **how to set up Docker networking across different hosts using weave**. + +### How Weave Works ### + +![](https://farm8.staticflickr.com/7288/16662287067_27888684a7_b.jpg) + +Let's first see how weave works. Weave creates a network of "peers", where each peer is a virtual router container called "weave router" residing on a distinct host. The weave routers on different hosts maintain TCP connections among themselves to exchange topology information. They also establish UDP connections among themselves to carry inter-container traffic. A weave router on each host is then connected via a bridge to all other Docker containers created on the host. When two containers on different hosts want to exchange traffic, a weave router on each host captures their traffic via a bridge, encapsulates the traffic with UDP, and forwards it to the other router over a UDP connection. + +Each weave router maintains up-to-date weave router topology information, as well as container's MAC address information (similar to switch's MAC learning), so that it can make forwarding decision on container traffic. Weave is able to route traffic between containers created on hosts which are not directly reachable, as long as two hosts are interconnected via an intermediate weave router on weave topology. Optionally, weave routers can be set to encrypt both TCP control data and UDP data traffic based on public key cryptography. + +### Prerequisite ### + +Before using weave on Linux, of course you need to set up Docker environment on each host where you want to run [Docker][2] containers. Check out [these][3] [tutorials][4] on how to create Docker containers on Ubuntu or CentOS/Fedora. + +Once Docker environment is set up, install weave on Linux as follows. + + $ wget https://github.com/zettio/weave/releases/download/latest_release/weave + $ chmod a+x weave + $ sudo cp weave /usr/local/bin + +Make sure that /usr/local/bin is include in your PATH variable by appending the following in /etc/profile. + + export PATH="$PATH:/usr/local/bin" + +Repeat weave installation on every host where Docker containers will be deployed. + +Weave uses TCP/UDP 6783 port. If you are using firewall, make sure that these port numbers are not blocked by the firewall. + +### Launch Weave Router on Each Host ### + +When you want to interconnect Docker containers across multiple hosts, the first step is to launch a weave router on every host. + +On the first host, run the following command, which will create and start a weave router container. + + $ sudo weave launch + +The first time you run this command, it will take a couple of minutes to download a weave image before launching a router container. On successful launch, it will print the ID of a launched weave router. + +To check the status of the router, use this command: + + $ sudo weave status + +![](https://farm9.staticflickr.com/8632/16249607573_4514790cf5_c.jpg) + +Since this is the first weave router launched, there will be only one peer in the peer list. + +You can also verify the launch of a weave router by using docker command. + + $ docker ps + +![](https://farm8.staticflickr.com/7655/16681964438_51d8b18809_c.jpg) + +On the second host, run the following command, where we specify the IP address of the first host as a peer to join. + + $ sudo weave launch + +When you check the status of the router, you will see two peers: the current host and the first host. + +![](https://farm8.staticflickr.com/7608/16868571891_e66d4b8841_c.jpg) + +As you launch more routers on subsequent hosts, the peer list will grow accordingly. When launching a router, just make sure that you specify any previously launched peer's IP address. + +At this point, you should have a weave network up and running, which consists of multiple weave routers across different hosts. + +### Interconnect Docker Containers across Multiple Hosts ### + +Now it is time to launch Docker containers on different hosts, and interconnect them on a virtual network. + +Let's say we want to create a private network 10.0.0.0/24, to interconnect two Docker containers. We will assign random IP addressses from this subnet to the containers. + +When you create a Docker container to deploy on a weave network, you need to use weave command, not docker command. Internally, the weave command uses docker command to create a container, and then sets up Docker networking on it. + +Here is how to create a Ubuntu container on hostA, and attach the container to 10.0.0.0/24 subnet with an IP addresss 10.0.0.1. + + hostA:~$ sudo weave run 10.0.0.1/24 -t -i ubuntu + +On successful run, it will print the ID of a created container. You can use this ID to attach to the running container and access its console as follows. + + hostA:~$ docker attach + +Move to hostB, and let's create another container. Attach it to the same subnet (10.0.0.0/24) with a different IP address 10.0.0.2. + + hostB:~$ sudo weave run 10.0.0.2/24 -t -i ubuntu + +Let's attach to the second container's console as well: + + hostB:~$ docker attach + +At this point, those two containers should be able to ping each other via the other's IP address. Verify that from each container's console. + +![](https://farm9.staticflickr.com/8566/16868571981_d73c8e401b_c.jpg) + +If you check the interfaces of each container, you will see an interface named "ethwe" which is assigned an IP address (e.g., 10.0.0.1 and 10.0.0.2) you specified. + +![](https://farm8.staticflickr.com/7286/16681964648_013f9594b1_b.jpg) + +### Other Advanced Usages of Weave ### + +Weave offers a number of pretty neat features. Let me briefly cover a few here. + +#### Application Isolation #### + +Using weave, you can create multiple virtual networks and dedicate each network to a distinct application. For example, create 10.0.0.0/24 for one group of containers, and 10.10.0.0/24 for another group of containers, and so on. Weave automatically takes care of provisioning these networks, and isolating container traffic on each network. Going further, you can flexibly detach a container from one network, and attach it to another network without restarting containers. For example: + +First launch a container on 10.0.0.0/24: + + $ sudo weave run 10.0.0.2/24 -t -i ubuntu + +Detach the container from 10.0.0.0/24: + + $ sudo weave detach 10.0.0.2/24 + +Re-attach the container to another network 10.10.0.0/24: + + $ sudo weave attach 10.10.0.2/24 + +![](https://farm8.staticflickr.com/7639/16247212144_c31a49714d_c.jpg) + +Now this container should be able to communicate with other containers on 10.10.0.0/24. This is a pretty useful feature when network information is not available at the time you create a container. + +#### Integrate Weave Networks with Host Network #### + +Sometimes you may need to allow containers on a virtual weave network to access physical host network. Conversely, hosts may want to access containers on a weave network. To support this requirement, weave allows weave networks to be integrated with host network. + +For example, on hostA where a container is running on network 10.0.0.0/24, run the following command. + + hostA:~$ sudo weave expose 10.0.0.100/24 + +This will assign IP address 10.0.0.100 to hostA, so that hostA itself is also connected to 10.0.0.0/24 network. Obviously, you need to choose an IP address which is not used by any other containers on the network. + +At this point, hostA should be able to access any containers on 10.0.0.0/24, whether or not the containers are residing on hostA. Pretty neat! + +### Conclusion ### + +As you can see, weave is a pretty useful Docker networking tool. This tutorial only covers a glimpse of [its powerful features][5]. If you are more ambitious, you can try its multi-hop routing, which can be pretty useful in multi-cloud environment, dynamic re-routing, which is a neat fault-tolerance feature, or even its distributed DNS service which allows you to name containers on weave networks. If you decide to use this gem in your environment, feel free to share your use case! + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/networking-between-docker-containers.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:https://github.com/zettio/weave +[2]:http://xmodulo.com/recommend/dockerbook +[3]:http://xmodulo.com/manage-linux-containers-docker-ubuntu.html +[4]:http://xmodulo.com/docker-containers-centos-fedora.html +[5]:http://zettio.github.io/weave/features.html \ No newline at end of file diff --git a/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md b/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md new file mode 100644 index 0000000000..0dab928789 --- /dev/null +++ b/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md @@ -0,0 +1,100 @@ +Linux FAQs with Answers--How to compress JPEG images from the command line on Linux +================================================================================ +> **Question**: I have several JPEG photo images I have taken using a digital camera. I would like to optimize and compress the JPEG pictures before uploading them to Dropbox. What is the easiest way to compress JPEG images without losing their quality on Linux? + +Image resolution of today's picture taking gadgets (e.g., smartphones, digital cameras) keeps increasing. Even 36.3 Megapixel Nikon D800 recently hit the consumer market, and this trend will continue. While modern gadgets continue to produce increasingly high resolution images, we may often want to post-process and compress their sizes before uploading them to a storage-limited and bandwidth-restricted cloud. + +In fact, there is a way to compress JPEG images easily on Linux. A command-line tool called jpegoptim allows you do "lossless" optimization on JPEG images, so you can compress JPEG pictures without sacrificing their quality. In case your storage or bandwidth budget is really low, jpegoptim allows you to do "lossy" compression as well by adjusting image quality. + +For those interested in compressing PNG images, refer to [this guideline][1] instead. + +### Install Jpegoptim on Linux ### + +To install jpegoptim on Ubuntu, Debian or Linux Mint: + + $ sudo apt-get install jpegoptim + +To install jpegoptim on Fedora: + + $ sudo yum install jpegoptim + +To install jpegoptim on CentOS/RHEL, first enable [EPEL repo][2], and then run: + + $ sudo yum install jpegoptim + +### Compress JPEG Images Losslessly ### + +To compress a JPG picture losslessly, simply run: + + $ jpegoptim photo.jpg + +---------- + + photo.jpg 2048x1536 24bit N ICC JFIF [OK] 882178 --> 821064 bytes (6.93%), optimized. + +Note that the original input image will be overwritten with a compressed impage. + +If jpegoptim is not able to further optimize an image losselessly, it will skip overwriting it. + + $ jpegoptim -v photo.jpg + +---------- + + photo.jpg 2048x1536 24bit N ICC JFIF [OK] 821064 --> 821064 bytes (0.00%), skipped. + +If you want to preserve an original image, use "-d" option to specify a target directory. + + $ jpegoptim -d ./compressed photo.jpg + +An compressed image will then be placed (with the same name as the input file) in ./compressed directory. + +If you want to preserve file creation/modification time, use "-p" option as follows. Then a compressed image will be placed with the same date and time as the original image. + + $ jpegoptim -d ./compressed -p photo.jpg + +If you simply check out possible lossless compression ratio without actually compressing it, use "-n" option to "simulate" compression. Then it will simply print results without actually performing compression. + + $ jpegoptim -n photo.jpg + +### Compress JPEG Images Lossily ### + +In case you really want to save storage space, you can do lossy compression on large JPEG pictures. + +In this case, use "-m" option, where maximum quality is specified in the range of 0 and 100 (0 is the highest quality, and 100 is the lowest quality). + +For example, to compress an image with 50% quality: + + $ jpegoptim -m50 photo.jpg + +---------- + + photo.jpg 2048x1536 24bit N ICC JFIF [OK] 882178 --> 301780 bytes (65.79%), optimized. + +You will get a smaller image at the cost of reduced quality. + +![](https://farm9.staticflickr.com/8707/16260736234_6d6f1d2434_c.jpg) + +### Compress Multiple JPEG Images in a Batch ### + +Often times you need to compress many JPEG image files in a directory. In that case, you can use the following shell script. + + #!/bin/sh + + # compress all *.jpg files in the current directory + # and place them in ./compressed directory + # with the same modification date as original files. + for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/compress-jpeg-images-command-line-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://xmodulo.com/how-to-compress-png-files-on-linux.html +[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html \ No newline at end of file diff --git a/sources/tech/20150323 Linux FAQs with Answers--How to install and access CentOS remote desktop on VPS.md b/sources/tech/20150323 Linux FAQs with Answers--How to install and access CentOS remote desktop on VPS.md new file mode 100644 index 0000000000..9306f21c8d --- /dev/null +++ b/sources/tech/20150323 Linux FAQs with Answers--How to install and access CentOS remote desktop on VPS.md @@ -0,0 +1,121 @@ +Linux FAQs with Answers--How to install and access CentOS remote desktop on VPS +================================================================================ +> **Question**: I want to install CentOS desktop on VPS, and be able to access the desktop GUI remotely from home. What is a recommended way to set up and access CentOS-based remote desktop on VPS? + +Nowadays teleworking or remote working with flexible hours is increasingly popular in tech industry. One of the enabling technologies behind this trend is remote desktop. Your desktop environment is in the cloud, and you can access the remote desktop anywhere you go, either from home or at your workplace. + +This tutorial describes how you can set up CentOS based remote desktop on VPS. Here we are going to demonstrate CentOS 7 based environment. + +We assume that you already created a CentOS 7 VPS instance somewhere (e.g., using [DigitalOcean][1] or Amazon EC2). Make sure that the VPS instance has at least 1GB memory. Otherwise, CentOS desktop will crash when you try to access remote desktop. + +### Step One: Install CentOS Desktop ### + +If an available CentOS image is a minimal version of CentOS without desktop, you will need to install desktop (e.g., GNOME) on your CentOS VPS before proceeding. For example, DigitalOcean's CentOS image is such a minimal version, which requires [desktop GUI installation][2] as follows. + + # yum groupinstall "GNOME Desktop" + +Reboot a VPS after finishing installation. + +### Step Two: Install and Configure VNC Server ### + +The next step is to install and configure VNC server. We are going to use TigerVNC, an open-source VNC server implementation. + + # yum install tigervnc-server + +Now create a user account (e.g., xmodulo) which will be used to access remote desktop. + + # useradd xmodulo + # passwd xmodulo + +When a user tries to access remote desktop using VNC, a dedicated VNC server daemon will be launched to handle its requests. This means that you will need to create a separate VNC server configuration for each user. + +CentOS 7 relies on systemd to manage and configure system services. So we are going to configure VNC server for xmodulo user using systemd. + +Let's first check the status of VNC server by running either command below: + + # systemctl status vncserver@:.service + # systemctl is-enabled vncserver@.service + +By default, freshly installed VNC service is not active (disabled). + +![](https://farm8.staticflickr.com/7613/16877514732_8ccffe7b6b_b.jpg) + +Now create a VNC service configuration for xmodulo user by copying a generic VNC service unit file as follows. + + # cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service + +Open the configuration file with a text editor, and replace with an actual user name (e.g., xmodulo) under [Service] section. Also, append "-geometry " parameter in ExecStart. In the end, the following two lines with bold font will be modified. + + # vi /etc/systemd/system/vncserver@:1.service + +---------- + + [Service] + Type=forking + # Clean any existing files in /tmp/.X11-unix environment + ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' + ExecStart=/sbin/runuser -l xmodulo -c "/usr/bin/vncserver %i -geometry 1024x768" + PIDFile=/home/xmodulo/.vnc/%H%i.pid + ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' + +Now set up (optional) VNC password for xmodulo user for security. For this, switch to the user, and run vncserver command. + + # su - xmodulo + # vncserver + +You will be prompted to enter a VNC password for the user. Once the password is set, you will need to use this password to gain access to remote desktop. + +![](https://farm9.staticflickr.com/8752/16692564599_9c4e5da1b6_b.jpg) + +Finally, reload services to activate the new VNC configuration: + + # systemctl daemon-reload + +and enable VNC service to make it start automatically upon boot: + + # systemctl enable vncserver@:1.service + +Check the port number that a VNC server is listening on by running: + + # netstat -tulpn | grep vnc + +![](https://farm8.staticflickr.com/7625/16692646729_7bb16c4897_b.jpg) + +Port 5901 is the default port number for VNC client to connect to a VNC server. + +### Step Three: Connect to Remote Desktop over SSH ### + +By design, Remote Frame Buffer (RFB) protocol used by VNC is not a secure protocol. Thus it is not a good idea to directly connect to a remote VNC server running on VPS using a VNC client. Any sensitive information such as password could easily be leaked from VNC traffic. So instead, I strongly recommend that you [tunnel VNC traffic][3] over a secure SSH tunnel, as described here. + +On a local host where you want to run VNC client, create an SSH tunnel to a remote VPS using the following command. When prompted for SSH password, type the password of the user. + + $ ssh xmodulo@ -L 5901:127.0.0.1:5901 + +Replace "xmodulo" with your own VNC user, and fill in the IP address of your VPS instance. + +Once an SSH tunnel is established, remote VNC traffic will be routed over the SSH tunnel, and be sent to 127.0.0.1:5901. + +Now go ahead and launch your favorite VNC client (e.g., vinagre), and connect to 127.0.0.1:5901. + +![](https://farm8.staticflickr.com/7639/16691289910_fae83510fb_o.png) + +You will be asked to enter a VNC password. When you type a correct VNC password, you will finally be able to CentOS remote desktop on VPS securely. + +![](https://farm8.staticflickr.com/7614/16877678411_aa8349f6b1_c.jpg) + +![](https://farm9.staticflickr.com/8702/16256320434_81f9b5b70c_c.jpg) + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/centos-remote-desktop-vps.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni +[1]:http://xmodulo.com/go/digitalocean +[2]:http://xmodulo.com/how-to-install-gnome-desktop-on-centos.html +[3]:http://xmodulo.com/how-to-set-up-vnc-over-ssh.html \ No newline at end of file From cb33d1666aaadb4f4c1a8031615debdc740f9f68 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Mon, 23 Mar 2015 17:59:31 +0800 Subject: [PATCH 639/725] Translating by ZTinoZ --- ...ual Environment using Commandline Tools in Linux.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index e3da1ec917..cce8eb5688 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -1,15 +1,15 @@ 如何在Linux中用命令行工具管理KVM虚拟环境 ================================================================================ -在我们[KVM系列专题][1]的第四部分,我们将会一起讨论下命令行界面下来管理KVM环境。We use ‘virt-install’ CL tool to create and configure virtual machines, virsh CL tool to create and configure storage pools and qemu-img CL tool to create and manage disk images. +在我们[KVM系列专题][1]的第四部分,我们将会一起讨论下在命令行界面下来管理KVM环境。我们分别用‘virt-install’和virsh命令行工具来创建并配置虚拟机和存储池,用qemu-img命令行工具来创建并管理磁盘映像。 ![KVM Management in Linux](http://www.tecmint.com/wp-content/uploads/2015/02/KVM-Management-in-Linux.jpg) -KVM Management in Linux +Linux系统的KVM管理 -There is nothing new concepts in this article, we just do the previous tasks using command line tools. There is no new prerequisite, just the same procedure, we have discussed in previous parts. +在这篇文章里没有什么新的概念,我们只是用命令行工具重复之前所做过的事情,也没有什么前提条件,都是相同的过程,之前的文章我们都讨论过。 -### Step 1: Configure Storage Pool ### +### 第一步: 配置存储池 ### -Virsh CLI tool is a management user interface for managing virsh guest domains. The virsh program can be used either to run one command by giving the command and its arguments on the shell command line. +Virsh命令行工具 CLI tool is a management user interface for managing virsh客户域 guest domains. The virsh program can be used either to run one command by giving the command and its arguments on the shell command line. In this section, we will use it to create storage pool for our KVM environment. For more information about the tool, use the following command. From 85f1c498e42d805bba6f1cb1158b6d91eda997af Mon Sep 17 00:00:00 2001 From: VicYu Date: Mon, 23 Mar 2015 23:38:01 +0800 Subject: [PATCH 640/725] Update 20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md --- ... to compress JPEG images from the command line on Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md b/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md index 0dab928789..e96abc6f52 100644 --- a/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md +++ b/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md @@ -1,3 +1,5 @@ + Vic020 + Linux FAQs with Answers--How to compress JPEG images from the command line on Linux ================================================================================ > **Question**: I have several JPEG photo images I have taken using a digital camera. I would like to optimize and compress the JPEG pictures before uploading them to Dropbox. What is the easiest way to compress JPEG images without losing their quality on Linux? @@ -97,4 +99,4 @@ via: http://ask.xmodulo.com/compress-jpeg-images-command-line-linux.html [a]:http://ask.xmodulo.com/author/nanni [1]:http://xmodulo.com/how-to-compress-png-files-on-linux.html -[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html \ No newline at end of file +[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html From 244055c59f4d8960c4319a218bdbfa34ece5c78c Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 23 Mar 2015 23:55:30 +0800 Subject: [PATCH 641/725] PUB:20150121 How to Monitor Network Usage with nload in Linux @theo-l --- ...nitor Network Usage with nload in Linux.md | 202 ++++++++++++++++++ ...nitor Network Usage with nload in Linux.md | 196 ----------------- 2 files changed, 202 insertions(+), 196 deletions(-) create mode 100644 published/20150121 How to Monitor Network Usage with nload in Linux.md delete mode 100644 translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md diff --git a/published/20150121 How to Monitor Network Usage with nload in Linux.md b/published/20150121 How to Monitor Network Usage with nload in Linux.md new file mode 100644 index 0000000000..e94489c554 --- /dev/null +++ b/published/20150121 How to Monitor Network Usage with nload in Linux.md @@ -0,0 +1,202 @@ +在linux中如何通过nload来监控网络使用情况 +================================================================================ +nload 是一个 linux 自由软件工具,通过提供两个简单的图形来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个是进入流量,一个是流出流量。 + +我真的很喜欢用**nload**来在屏幕上显示当前的下载速度、总的流入量和平均下载速度等信息。nload工具的报告图非常容易理解,最重要的是这些信息真的非常有用。 + +在其使用手册上说到,在默认情况下它会监控所有网络设备。但是你可以轻松地指定你想要监控的设备,而且可以通过方向键在不同的网络设备之间进行转换。另外还有很多的选项可用,例如 ‘-t’选项以毫秒来设定刷新显示时间间隔(默认时间间隔值是500毫秒),‘-m’选项用来同时显示多个设备(在使用该选项时不会显示流量图),‘-u’选项用来设置显示流量数字的单位,另外还有许多其他的选项将会在本教程中探索和练习。 + +### 如何将 nload安装到你的linux机器上 ### + +**Ubuntu** 和 **Fedora** 用户可以从默认的软件仓库中容易地安装。 + +在Ubuntu上使用以下命令进行安装。 + + sudo apt-get install nload + +在Fedora上使用以下命令进行安装。 + + sudo yum install nload + +**CentOS**用户该怎么办呢? 只需要在你的机器上输入以下命令就可以安装成功。 + + sudo yum install nload + +以下的命令会帮助你在OpenBSD系统中安装nload。 + + sudo pkg_add -i nload + +在 linux 机器上的另外一个非常有效的安装软件的方式就是编译源代码,下载并安装最新的版本意味着能够获得更好地性能、更酷的特性以及更少的bug。 + +### 如何通过源代码安装nload ### + +在从源代码安装nload之前,你需要首先下载源代码。 我通常使用wget工具来进行下载--该工具在许多linux机器上默认可用。该免费工具帮助用户以非交互式的方式从网络上下载文件,并支持以下协议: + +- HTTP +- HTTPS +- FTP + +通过以下命令来进入到**/tmp**目录中。 + + cd /tmp + +然后在你的终端中输入以下命令就可以将最新版本的nload下载到你的linux机器上了。 + + wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz + +如果你不喜欢使用wget工具,也可以通过简单的一个鼠标点击轻松地从[官网][1]上下载其源代码。 + +由于该软件非常轻巧,其下载过程几乎在瞬间就会完成。接下来的步骤就是通过**tar**工具来将下载的源代码包进行解压。 + +tar归档工具可以用来从磁带或硬盘文档中存储或解压文件,该工具有许多可用的选项,但是我们只需要下面的几个选项来执行我们的操作。 + +1. **-x** 从归档中解压文件 +1. **-v** 使用繁琐模式运行--用来显示详细信息 +1. **-f** 用来指定归档文件 + +例如(LCTT 译注:tar 命令的参数前的“-”可以省略): + + tar xvf example.tar + +现在你学会了如何使用tar工具,我可以非常肯定你知道了如何从命令行中解压这个.tar文档。 + + tar xvf nload-0.7.4.tar.gz + +之后使用cd命令来进入到nload*目录中: + + cd nload* + +在我的系统上看起来是这样的: + + oltjano@baby:/tmp/nload-0.7.4$ + +然后运行下面这个命令来为你的系统配置该软件包: + + ./configure + +此时会有“一大波僵尸”会在你的屏幕上显示出来,下面的一个屏幕截图描述了它的样子。 + +![configuring packages for nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload1.png) + +在上述命令完成之后,通过下面的命令来编译nload。 + + make + +![compiling nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload2.png) + +好了,终于....,通过以下命令可以将nload安装在你的机器上了。 + + sudo make install + +![installing nload from source](http://blog.linoxide.com/wp-content/uploads/2015/01/nload3.png) + +安装好nload之后就是让你学习如何使用它的时间了。 + +###如何使用nload### + +我喜欢探索,所以在你的终端输入以下命令. + + nload + +看到了什么? + +我得到了下面的结果。 + +![running nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.png) + +如上述截图可以看到,我得到了以下信息: + +#### 流入量#### + +**当前下载速度** + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.1.png) + +**平均下载速度** + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.2.png) + +**最小下载速度** + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.3.png) + +**最大下载速度** + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.4.png) + +**总的流入量按字节进行显示** + +![](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.5.png) + +#### 流出量 #### + +类似的同样适用于流出量 + +#### 一些nload有用的选项#### + +使用选项 + + -u + +用来设置显示流量单位。 + +下面的命令会帮助你使用MBit/s显示单元 + + nload -u m + +下面的屏幕截图显示了上述命令的结果。 + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload5.png) + +尝试以下命令然后看看有什么结果。 + + nload -u g + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload6.png) + +同时还有一个**-U**选项。根据手册描述,该选项基本上与-u选项类似,只是用在合计数据。 我测试了这个命令,老实说,当你需要检查总的流入与流出量时非常有用。 + + nload -U G + +![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload7.png) + +从上面的截图中可以看到,**nload -U G** 使用Gbyte来显示数据总量。 + +另外一个我喜欢使用的有用选项是 **-t**。 该选项用来设置刷新显示事件间隔,单位为毫秒,默认值为500毫秒。 + +我会通过下面的命令做一些小的实验。 + + nload -t 130 + +那么上述命令做了什么呢?它将刷新显示时间间隔设置为130毫秒。 通常推荐不要将该时间间隔值设置为小于100毫秒,因为nload在生成报告时计算错误。 + +另外的一个选项为 **-a**, 在你想要设置计算平均值的时间窗口的秒数时使用,默认该值为300秒。 + +那么当你想要监控指定的网络设备该如何呢? 非常容易, 像下面这样简单地指定设备或者列出想要监控的设备列表即可。 + + nload wlan0 + +![nload monitoring wlan0 on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) + +下面的语法可帮助你监控指定的多个设备。 + + nload [options] device1 device2 devicen + +例如,使用下面的命令来监控eth0和eth1。 + + nload wlan0 eth0 + +如果不带选项来运行nload,那么它会监控所有自动检测到的设备,你可以通过左右方向键来显示其中的任何一个设备的信息。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/monitoring-2/monitor-network-usage-nload/ + +作者:[Oltjano Terpollari][a] +译者:[theo-l](https://github.com/theo-l) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/oltjano/ +[1]:http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz diff --git a/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md b/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md deleted file mode 100644 index 9b70fa4d8e..0000000000 --- a/translated/tech/20150121 How to Monitor Network Usage with nload in Linux.md +++ /dev/null @@ -1,196 +0,0 @@ -在linux中如何通过nload来监控网络使用情况 -================================================================================ -nload 是一个免费的linux工具,通过提供两个简单的图形化界面来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个作为进入流量,一个作为流出流量. - -我是真的很喜欢用**nload**来在屏幕上显示当前的下载速度,总的流入量和平均下载速度等信息。nload工具的报告图非常容易理解,最重要的是这些信息真的非常有用。 - - - -在使用手册上说到,在默认情况下会监控所有网络设备。但是你可以轻松地指定你想要监控的设备,而且可以可以通过方向键头在不同的网络设备之间进行转换。另外还有很多的选项可用,例如 ‘-r’选项确定以毫秒来刷新显示时间间隔(默认时间间隔值是500毫秒),‘-m’选项用来实时显示多个设备(流量图在使用该选项时不会显示), ‘-u’选项用来设置显示流量数字的单元类型,另外还有许多其他的选项将会在该教程中探索和练习。 - -### 如何将 nload安装到你的linux机器上 ### - -**Ubuntu** 和 **Fedora** 用户可以从默认的软件仓库中容易地安装。 - -在Ubuntu上使用以下命令进行安装。 - - sudo apt-get install nload - -在Fedora上使用以下命令进行安装。 - - sudo yum install nload - -**CentOS**用户该怎么办呢? 只需要在你的机器上输入以下命令,通用能够达到相同的结果--殊途同归。 - - sudo yum install nload - -以下的命令会帮助你在OpenBSD系统中安装nload. - - sudo pkg_add -i nload - -linux机器上的另外一个非常有效的安装软件的方式就是编译源代码,通过下载并安装最新的版本意味着能够获得更好地性能,更酷的特性以及越少的bug数。 - -### 如何通过源代码安装nload ### - -在从源代码安装nload之前,你需要首先下载源代码。 我通常使用wget工具来进行下载--该工具在许多linux机器上默认可用。该免费工具帮助用户以非交互式的方式从网络上下载文件,并支持以下协议: - -- HTTP -- HTTPS -- FTP - -通过以下命令来进入到**/tmp**目录中。 - - cd /tmp - -然后在你的终端中输入以下命令就可以将最新版本的nload下载到你的linux机器上了。 - - wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz - -如果你不喜欢使用wget工具,也可以通过简单的一个鼠标点击轻松地从[官网][1]上下载源代码。 - -由于该软件非常轻巧,其下载过程几乎在瞬间就会完成。接下来的步骤就是通过**tar**工具来将下载的源代码包进行解压。 - -tar归档工具可以用来从磁带或硬盘文档中存储或解压文件,该工具具有许多可用的选项,但是我们只需要下面的几个选项来执行我们的操作。 - -1. **-x** to extract files from an archive -1. **-x** 从文档中解压文件 -1. **-v** to run in verbose mode -1. **-v** 使用繁琐模式运行--用来输入详细信息 -1. **-f** to specify the files -1. **-f** 用来指定文件 - -例如: - - tar xvf example.tar - -现在你学会了如何使用tar工具,我可以非常肯定你会知道如何从命令行中解压.tar文档。 - - tar xvf nload-0.7.4.tar.gz - -之后使用cd命令来进入到nload*目录中 - - cd nload* - -在我的系统上看起来是这样的 - - oltjano@baby:/tmp/nload-0.7.4$ - -然后运行下面这个命令来为你的系统配置包 - - ./configure - -此时会有一大波僵尸会在你的屏幕上显示出来,下面的一个屏幕截图描述了它的样子。 - -![configuring packages for nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload1.png) - -在上述命令完成之后,通过下面的命令来编译nload。 - - make - -![compiling nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload2.png) - -好了,终于....,下载通过以下命令可以将nload安装在你的机器上了。 - - sudo make install - -![installing nload from source](http://blog.linoxide.com/wp-content/uploads/2015/01/nload3.png) - -安装好nload之后就是时间来让你学习如何使用它了。 - -###如何使用nload### - -我喜欢探索,所以在你的终端输入以下命令. - - nload - -看到了什么? - -我得到了下面的结果。 - -![running nload](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.png) - -如上述截图可以看到,我得到了以下信息: -### 流入量### - -#### 当前下载速度#### -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.1.png) - -#### 平均下载速度#### -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.2.png) - -#### 最小下载速度#### -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.3.png) - -#### 最大下载速度#### -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.4.png) - -#### 总的流入量按字节进行显示#### -![](http://blog.linoxide.com/wp-content/uploads/2015/01/nload4.5.png) - -### 流出量 ### - -类似的同样适用于流出量 -#### 一些nload有用的选项#### - -使用选项 - -u - -用来设置显示流量单元的类型. - -下面的命令会帮助你使用MBit/s显示单元 - nload -u m - -下面的屏幕截图显示了上述命令的结果. -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload5.png) - -尝试以下命令然后看看有什么结果. - - nload -u g - -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload6.png) - -同时还有一个**-U**选项.根据手册描述,该选项基本上与-u选项类似,只是用在合计数据. 我测试了这个命令,老实说,当你需要检查总的流入与流出量时非常有用. - - nload -U G - -![nload running on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload7.png) - -从上面的截图中可以看到,**nload -U G** 使用Gbyte来显示数据总量. - -另外一个我喜欢使用的有用选项是 **-t**. 该选项用来设置刷新显示事件间隔为毫秒,默认值为500毫秒. - -我会通过下面的命令做一些小的实验. - nload -t 130 - -那么上述命令做了什么呢,它讲刷新显示时间间隔设置为130毫秒. 通常推荐不要讲该时间间隔值设置为小于100毫秒,因为nload在计算过程中可能会生成带错的报告. - -另外的一个选项为 **-a**. 在你想要设置计算平均值的时间窗口秒数长度时使用,默认该值为300秒. - -那么当你想要监控指定的网络设备该如何呢? 非常容易, 想下面这样简单地指定设备或者列出想要监控的设备列表. - - nload wlan0 - -![nload monitoring wlan0 on linux](http://blog.linoxide.com/wp-content/uploads/2015/01/nload8.png) - -下面的语法可帮助你监控指定的多个设备. - - nload [options] device1 device2 devicen - -例如,使用下面的命令来监控eth0和eth1. - - nload wlan0 eth0 - -如果不带选项来运行nload,那么它会监控监控所有自动检测到的设备,你可以通过左右方向键来显示其中的任何一个设备的信息. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/monitoring-2/monitor-network-usage-nload/ - -作者:[Oltjano Terpollari][a] -译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/oltjano/ -[1]:http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz From 9b16eee344ab9740be1f03c800ef4e31938895d5 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 24 Mar 2015 11:52:15 +0800 Subject: [PATCH 642/725] Translating by ZTinoZ --- ...onment using Commandline Tools in Linux.md | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index cce8eb5688..be433085c3 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -9,15 +9,15 @@ Linux系统的KVM管理 ### 第一步: 配置存储池 ### -Virsh命令行工具 CLI tool is a management user interface for managing virsh客户域 guest domains. The virsh program can be used either to run one command by giving the command and its arguments on the shell command line. +Virsh命令行工具是一款管理virsh客户域的用户界面。virsh程序能在命令行中运行所给的命令以及它的参数。 -In this section, we will use it to create storage pool for our KVM environment. For more information about the tool, use the following command. +本节中,我们要用它给我们的KVM环境创建存储池。想知道关于这个工具的更多信息,用以下这条命令。 # man virsh -**1. Using the command pool-define-as with virsh to define new storage pool, you need also to specify name, type and type’s arguments.** +**1. 用virsh带pool-define-as的命令来定义新的存储池,你需要指定名字、类型和类型参数。** -In our case, name will be Spool1, type will be dir. By default you could provide five arguments for the type: +本例中,我们将名字取为Spool1,类型为目录。默认情况下你可以提供五个参数给该类型: - source-host - source-path @@ -25,62 +25,62 @@ In our case, name will be Spool1, type will be dir. By default you could provide - source-name - target -For (Dir) type, we need the last argumet “target” to specify the path of storage pool, for the other arguments we could use “-” to unspecific them. +对于目录类型,我们需要用最后一个参数“target”来指定存储池的路径,其它参数项我们可以用“-”来填充。 # virsh pool-define-as Spool1 dir - - - - "/mnt/personal-data/SPool1/" ![Create New Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Create-New-Storage-Pool.png) -Create New Storage Pool +创建新存储池 -**2. To check the all storage pools you have in the environment, use the following command.** +**2. 查看环境中我们所有的存储池,用以下命令。** # virsh pool-list --all ![List All Storage Pools](http://www.tecmint.com/wp-content/uploads/2015/02/List-All-Storage-Pools.png) -List All Storage Pools +列出所有存储池 -**3. Now it’s time to build the storage pool, which we have defined above with the following command.** +**3. 现在是时候来构造存储池了,用以下命令来构造我们刚才定义的存储池。** # virsh pool-build Spool1 ![Build Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Build-Storage-Pool.png) -Build Storage Pool +构造存储池 -**4. Using the virsh command pool-start to active/enable the storage pool we have just created/built above.** +**4. 用virsh带pool-start的命令来激活并启动我们刚才创建并构造完成的存储池。** # virsh pool-start Spool1 ![Active Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Active-Storage-Pool.png) -Active Storage Pool +激活存储池 -**5. Check the status of environment storage pools using the following command.** +**5. 查看环境中存储池的状态,用以下命令。** # virsh pool-list --all ![Check Storage Pool Status](http://www.tecmint.com/wp-content/uploads/2015/02/Check-Storage-Pool-Status.png) -Check Storage Pool Status +查看存储池状态 -You will notice that the status of Spool1 converted to active. +你会发现Spool1的状态变成了已激活。 -**6. Configure Spool1 to start by libvirtd service every time automaticlly.** +**6. 对Spool1进行配置,让它每次都能被libvirtd服务自启动。** # virsh pool-autostart Spool1 ![Configure KVM Storage Pool](http://www.tecmint.com/wp-content/uploads/2015/02/Configure-Storage-Pool.png) -Configure KVM Storage Pool +配置KVM存储池 -**7. Finally lets display information about our new storage pool.** +**7. 最后来看看我们新的存储池的信息吧。** # virsh pool-info Spool1 ![Check KVM Storage Pool Information](http://www.tecmint.com/wp-content/uploads/2015/02/Check-Storage-Pool-Information.png) -Check KVM Storage Pool Information +查看KVM存储池信息 -Congratulations, Spool1 is ready to be used lets try to create storage volumes using it. +恭喜你,Spool1已经准备好待命,接下来我们试着创建存储卷来使用它。 -### Step 2: Configure Storage Volumes/Disk Images ### +### 第二步: 配置存储卷/磁盘映像 ### -Now it is disk image’s turn, using qemu-img to create new disk image from Spool1. For more details about qemy-img, use the man page. +现在轮到磁盘映像了,using qemu-img to create new disk image from Spool1. For more details about qemy-img, use the man page. # man qemu-img @@ -100,9 +100,9 @@ Check Storage Volume Information Now its time to create virtual machines in the next step. -### Step 3: Create Virtual Machines ### +### 第三步: 创建虚拟机 ### -10. Now with the last and latest part, we will create virtual machines using virt-istall. The virt-install is a command line tool for creating new KVM virtual machines using the “libvirt” hypervisor management library. For more details about it, use: +**10. Now with the last and latest part, we will create virtual machines using virt-istall. The virt-install is a command line tool for creating new KVM virtual machines using the “libvirt” hypervisor management library. For more details about it, use:** # man virt-install From 34cfb7e78f212cb3bfa591563c726c94b0aa77c1 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 24 Mar 2015 11:55:42 +0800 Subject: [PATCH 643/725] Translating by ZTinoZ --- ...e KVM Virtual Environment using Commandline Tools in Linux.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index be433085c3..7e47bac3bb 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -3,6 +3,7 @@ 在我们[KVM系列专题][1]的第四部分,我们将会一起讨论下在命令行界面下来管理KVM环境。我们分别用‘virt-install’和virsh命令行工具来创建并配置虚拟机和存储池,用qemu-img命令行工具来创建并管理磁盘映像。 ![KVM Management in Linux](http://www.tecmint.com/wp-content/uploads/2015/02/KVM-Management-in-Linux.jpg) + Linux系统的KVM管理 在这篇文章里没有什么新的概念,我们只是用命令行工具重复之前所做过的事情,也没有什么前提条件,都是相同的过程,之前的文章我们都讨论过。 From 07f9b94c061ee2527baa9ecd90eb57e1803c1052 Mon Sep 17 00:00:00 2001 From: sailing Date: Tue, 24 Mar 2015 15:06:50 +0800 Subject: [PATCH 644/725] claim an article --- sources/talk/20141211 Open source all over the world.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/talk/20141211 Open source all over the world.md b/sources/talk/20141211 Open source all over the world.md index bd306edd5a..130201bff4 100644 --- a/sources/talk/20141211 Open source all over the world.md +++ b/sources/talk/20141211 Open source all over the world.md @@ -1,3 +1,4 @@ +[raywang] Open source all over the world ================================================================================ ![](https://opensource.com/sites/default/files/styles/image-full-size/public/images/business/BUS_OpenSourceExperience_520x292_cm.png) From bf30ebd317519848617aebe79772ffabcbe0a6bb Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Tue, 24 Mar 2015 15:07:32 +0800 Subject: [PATCH 645/725] Translating by ZTinoZ --- ...onment using Commandline Tools in Linux.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index 7e47bac3bb..64ffeccad2 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -40,7 +40,7 @@ Virsh命令行工具是一款管理virsh客户域的用户界面。virsh程序 ![List All Storage Pools](http://www.tecmint.com/wp-content/uploads/2015/02/List-All-Storage-Pools.png) 列出所有存储池 -**3. 现在是时候来构造存储池了,用以下命令来构造我们刚才定义的存储池。** +**3. 现在我们来构造存储池了,用以下命令来构造我们刚才定义的存储池。** # virsh pool-build Spool1 @@ -81,46 +81,46 @@ Virsh命令行工具是一款管理virsh客户域的用户界面。virsh程序 ### 第二步: 配置存储卷/磁盘映像 ### -现在轮到磁盘映像了,using qemu-img to create new disk image from Spool1. For more details about qemy-img, use the man page. +现在轮到磁盘映像了,用qemu-img命令在Spool1中创建一个新磁盘映像。获取更多细节信息,可以查看man手册。 # man qemu-img -**8. We should specify the qemu-img command “create, check,….etc”, disk image format, the path of disk image you want to create and the size.** +**8. 我们应该在qemu-img命令之后指定“create, check,…”等等操作、磁盘映像格式、你想要创建的磁盘映像的路径和大小。** # qemu-img create -f raw /mnt/personal-data/SPool1/SVol1.img 10G ![Create Storage Volume](http://www.tecmint.com/wp-content/uploads/2015/02/Create-Storage-Volumes.png) -Create Storage Volume +创建存储卷 -**9. By using qemu-img command info, you could get information about your new disk image.** +**9. 通过使用带info的qemu-img命令,你可以获取到你的新磁盘映像的一些信息。** ![Check Storage Volume Information](http://www.tecmint.com/wp-content/uploads/2015/02/Check-Storage-Volume-Information.png) -Check Storage Volume Information +查看存储卷信息 -**Warning**: Never use qemu-img to modify images in use by a running virtual machine or any other process; this may destroy the image. +**警告**: 不要用qemu-img命令来修改被运行中的虚拟机或任何其它进程所正在使用的映像,那样映像会被破坏。 -Now its time to create virtual machines in the next step. +现在是时候来创建虚拟机了。 ### 第三步: 创建虚拟机 ### -**10. Now with the last and latest part, we will create virtual machines using virt-istall. The virt-install is a command line tool for creating new KVM virtual machines using the “libvirt” hypervisor management library. For more details about it, use:** +**10. 现在到最后一个环节了,在最后一步中,我们将用virt-istall命令来创建虚拟机。virt-install是一个用来创建新的KVM虚拟机命令行工具,它使用“libvirt”管理程序库。想获取更多细节,同样可以查看man手册。** # man virt-install -To create new KVM virtual machine, you need to use the following command with all the details like shown in the below. +要创建新的KVM虚拟机,你需要用到带以下所有信息的命令。 -- Name: Virtual Machine’s name. -- Disk Location: Location of disk image. -- Graphics : How to connect to VM “Usually be SPICE”. -- vcpu : Number of virtual CPU’s. -- ram : Amount of allocated memory in megabytes. -- Location : Specify the installation source path. -- Network : Specify the virtual network “Usually be vibr00 bridge”. +- Name: 虚拟机的名字。 +- Disk Location: 磁盘映像的位置。 +- Graphics : 怎样连接VM,通常是SPICE。 +- vcpu : 虚拟CPU的数量。 +- ram : 以兆字节计算的已分配内存大小。 +- Location : 指定安装源路径。 +- Network : 指定虚拟网络,通常是virbr0网桥。 # virt-install --name=rhel7 --disk path=/mnt/personal-data/SPool1/SVol1.img --graphics spice --vcpu=1 --ram=1024 --location=/run/media/dos/9e6f605a-f502-4e98-826e-e6376caea288/rhel-server-7.0-x86_64-dvd.iso --network bridge=virbr0 ![Create New Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Create-New-Virtual-Machines.png) -Create New Virtual Machine +创建新的虚拟机 **11. You will find also a pop-up virt-vierwer window appears to communicate with virtual machine through it.** From b52aa9da24c625c33b64b0ffb36b8ec96fadca5a Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Mar 2015 15:13:47 +0800 Subject: [PATCH 646/725] PUB:20150126 4 lvcreate Command Examples on Linux @Vic020 --- ...26 4 lvcreate Command Examples on Linux.md | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) rename {translated/tech => published}/20150126 4 lvcreate Command Examples on Linux.md (61%) diff --git a/translated/tech/20150126 4 lvcreate Command Examples on Linux.md b/published/20150126 4 lvcreate Command Examples on Linux.md similarity index 61% rename from translated/tech/20150126 4 lvcreate Command Examples on Linux.md rename to published/20150126 4 lvcreate Command Examples on Linux.md index 145f2c52ee..0da451aef2 100644 --- a/translated/tech/20150126 4 lvcreate Command Examples on Linux.md +++ b/published/20150126 4 lvcreate Command Examples on Linux.md @@ -1,39 +1,38 @@ -在linux中4个lvcreate命令例子 +4 个 lvcreate 常用命令举例 ================================================================================ 逻辑卷管理(LVM)是广泛使用的技术,并拥有极其灵活磁盘管理方案。主要包含3个基础命令: -a. 创建物理卷使用**pvcreate** -b. 创建卷组并给卷组增加分区**vgcreate** -c. 创建新的逻辑卷使用**lvcreate** +1. 创建物理卷使用**pvcreate** +2. 创建卷组并给卷组增加分区**vgcreate** +3. 创建新的逻辑卷使用**lvcreate** ![](http://www.ehowstuff.com/wp-content/uploads/2015/01/lvm-diagram1.jpg) -随后的例子着重在已经存在的卷组上使用**lvcreate**创建逻辑卷。**lvcreate**命令可以在来自自由物理扩展池的卷组分配逻辑扩展。通常,逻辑卷可以随意使用底层逻辑卷上的任意空间。修改逻辑卷将释放或重新分配在物理卷空间。这些例子已经在CentOS 5, CentOS 6, CentOS 7, RHEL 5, RHEl 6 和 RHEL 7 版本中测试通过。 +下列例子主要讲述在已经存在的卷组上使用**lvcreate**创建逻辑卷。**lvcreate**命令可以在卷组的可用物理扩展池中分配逻辑扩展。通常,逻辑卷可以随意使用底层逻辑卷上的任意空间。修改逻辑卷将释放或重新分配物理卷的空间。这些例子已经在CentOS 5, CentOS 6, CentOS 7, RHEL 5, RHEl 6 和 RHEL 7 版本中测试通过。 ### 4个lvcreate命令例子 ### -1. 在名为vg_newlvm卷组中创建15G大小的逻辑卷: +1. 在名为vg_newlvm的卷组中创建15G大小的逻辑卷: - [root@centos7 ~]# lvcreate -L 15G vg_newlvm + [root@centos7 ~]# lvcreate -L 15G vg_newlvm -2. 在名为vg_newlvm中创建大小为2500MB的逻辑卷并命名centos7_newvol,创建块设备/dev/vg_newlvm/centos7_newvol: +2. 在名为vg_newlvm的卷组中创建大小为2500MB的逻辑卷,并命名为centos7_newvol,这样就创建了块设备/dev/vg_newlvm/centos7_newvol: - [root@centos7 ~]# lvcreate -L 2500 -n centos7_newvol vg_newlvm + [root@centos7 ~]# lvcreate -L 2500 -n centos7_newvol vg_newlvm -3.可以使用**lvcreate**命令的参数-l,能指定一些特别的逻辑卷扩展大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7_newvol卷组的50%大小的逻辑卷vg_newlvm: +3. 可以使用**lvcreate**命令的参数-l来指定逻辑卷扩展的大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7_newvol卷组的50%大小的逻辑卷vg_newlvm: - [root@centos7 ~]# lvcreate -l 50%VG -n centos7_newvol vg_newlvm + [root@centos7 ~]# lvcreate -l 50%VG -n centos7_newvol vg_newlvm 4. 使用卷组剩下的所有空间创建逻辑卷 - [root@centos7 ~]# lvcreate --name centos7_newvol -l 100%FREE vg_newlvm + [root@centos7 ~]# lvcreate --name centos7_newvol -l 100%FREE vg_newlvm 更多帮助,使用**lvcreate**命令--help选项来查看: [root@centos7 ~]# lvcreate --help ---------- -以下空号中是帮助字面翻译 lvcreate: Create a logical volume(创建逻辑卷) @@ -46,8 +45,8 @@ c. 创建新的逻辑卷使用**lvcreate** [-C|--contiguous {y|n}] [-d|--debug] [-h|-?|--help] - [--ignoremonitoring](忽略监听) - [--monitor {y|n}](监听) + [--ignoremonitoring](忽略监控) + [--monitor {y|n}](监控) [-i|--stripes Stripes [-I|--stripesize StripeSize]] [-k|--setactivationskip {y|n}] [-K|--ignoreactivationskip] @@ -66,7 +65,7 @@ c. 创建新的逻辑卷使用**lvcreate** [--discards {ignore|nopassdown|passdown}] [--poolmetadatasize MetadataSize[bBsSkKmMgG]]] [--poolmetadataspare {y|n}] - [--thinpool ThinPoolLogicalVolume{Name|Path}]精简池逻辑卷 + [--thinpool ThinPoolLogicalVolume{Name|Path}] (精简池逻辑卷) [-t|--test] [--type VolumeType](卷类型) [-v|--verbose] @@ -75,18 +74,14 @@ c. 创建新的逻辑卷使用**lvcreate** [--version] VolumeGroupName [PhysicalVolumePath...] - lvcreate - { {-s|--snapshot} OriginalLogicalVolume[Path] | - [-s|--snapshot] VolumeGroupName[Path] -V|--virtualsize VirtualSize} - {-T|--thin} VolumeGroupName[Path][/PoolLogicalVolume] - -V|--virtualsize VirtualSize}( + -------------------------------------------------------------------------------- via: http://www.ehowstuff.com/4-lvcreate-command-examples-on-linux/ 作者:[skytech][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[Vic020](https://github.com/Vic020) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 45a30b0f3035a98e38269b4db12d404d382f0aab Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 24 Mar 2015 16:13:06 +0800 Subject: [PATCH 647/725] =?UTF-8?q?20150324-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Telegram Messenger Application on Linux.md | 132 ++++++++++++++ ...ols to Securely Delete Files from Linux.md | 130 ++++++++++++++ ...and Tricks Every Linux User Should Know.md | 163 ++++++++++++++++++ ...t Open Source Code Repository in github.md | 113 ++++++++++++ ...Interactively Create a Docker Container.md | 99 +++++++++++ ...rips--Print IP address on a given range.md | 60 +++++++ 6 files changed, 697 insertions(+) create mode 100644 sources/share/20150324 How to Install Telegram Messenger Application on Linux.md create mode 100644 sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md create mode 100644 sources/tech/20150324 7 Quirky' ls' Command Tricks Every Linux User Should Know.md create mode 100644 sources/tech/20150324 How to Host Open Source Code Repository in github.md create mode 100644 sources/tech/20150324 How to Interactively Create a Docker Container.md create mode 100644 sources/tech/20150324 Prips--Print IP address on a given range.md diff --git a/sources/share/20150324 How to Install Telegram Messenger Application on Linux.md b/sources/share/20150324 How to Install Telegram Messenger Application on Linux.md new file mode 100644 index 0000000000..0d4946db1f --- /dev/null +++ b/sources/share/20150324 How to Install Telegram Messenger Application on Linux.md @@ -0,0 +1,132 @@ +How to Install Telegram Messenger Application on Linux +================================================================================ +Telegram is an Instant Messaging (IM) application similar to whatsapp. It has a very large user base. It has a lot of features that differentiate it from other messaging application. + +![Install Telegram in Linux](http://www.tecmint.com/wp-content/uploads/2015/03/Install-Telegram-in-Linux.png) +Telegram Messenger for Linux + +This article aims at making you aware of telegram application followed by detailed installation instructions on Linux Box. + +#### Features of Telegram #### + +- Implementation for mobile devices +- Available for Desktop. +- Application Program Interface (API) of Telegram can be Accessed by third party developers. +- Available for Android, iphone/ipad, Windows Phone, Web-Version, PC, Mac and Linux +- The above application provides Heavily Encrypted and self destruct messages. +- Lets you access your message from multiple devices and platform. +- The overall processing and message delivery is lightening fast. +- Distributed server across the globe for security and speed. +- Open API and Free Protocol +- NoAds, No Subscription charge. – Free forever. +- Powerful – No limit to media and chats +- Several security measures that make it safe from Hackers. +- Reply to Specific message in group. Mention @username to notify multiple users in group. + +#### Why Telegram? #### + +When Applications like whatsapp and other IM are providing almost same things in bag, why should someone opt for Telegram? + +Well Availability of API to third party developer is enough to say. Moreover availability for PC which means you won’t have to struggle typing message using your mobile, but you can use your PC and that is pretty more than sufficient. + +Also The option to connect on remote locations, Co-ordinate – Group of upto 200 Members, Sync all your devices, Send – Documents of all kind, Encrypt message, Self destruction of message, Storage of Media in Cloud, Build own tool on freely available API and what not. + +**Testing Environment** + +We have used Debian GNU/Linux, x86_64 architecture to test it and the overall process went very smooth for us. Here what we did stepwise. + +### Installation of Telegram Messenger in Linux ### + +First go to the official Telegram site, and download Telegram source package ([tsetup.0.7.23.tar.xz][1]) for Linux system or you may use following wget command to download directly. + + # wget https://updates.tdesktop.com/tlinux/tsetup.0.7.23.tar.xz + +Once package has been downloaded, unpack the tarball and switch from current working directory to the extracted directory. + + # tar -xf tsetup.0.7.23.tar.xz + # cd Telegram/ + +Next, execute the binary file ‘Telegram’ from the command line as shown below. + + # ./Telegram + +1. The first Impression. Click “START MESSAGING”. + +![Start Messaging](http://www.tecmint.com/wp-content/uploads/2015/03/Start-Messaging.jpeg) +Start Messaging + +2. Enter Your phone Number. Click “NEXT”. If you have not registered for telegram before this, using the same number as entered above you will get a warning that you don’t have a telegram account yet. Click “Register Here”. + +![Signup for Telegram](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Register.png) +Signup for Telegram + +3. After submitting your phone number, telegram will send you a verification code, shortly. You need to Enter it. + +![Telegram Verification Code](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Verfication-Code.png) +Telegram Verification Code + +4. Enter your First_Name, Last_name and pics and click “SIGNUP”. + +![Enter Account Details](http://www.tecmint.com/wp-content/uploads/2015/03/Enter-Account-Details.jpeg) +Enter Account Details + +5. After account creation, I got this interface. Everything seems at its place, even when I am new to telegram Application. The interface is really simple. + +![Telegram Interface](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Interface.jpeg) +Telegram Interface + +6. Click Add a contact and Enter Their first_name, last_name and Phone number. Click create when done!. + +![Add New Telegram Contact](http://www.tecmint.com/wp-content/uploads/2015/03/Add-New-Telegram-Contact.png) +Add New Telegram Contact + +7. If the contact you added is not on telegram already, You get a warning message and telegram will acknowledge you when your contact joins telegram. + +![Telegram Contact Notification](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Contact-Notification.jpeg) +Telegram Contact Notification + +8. As soon as the contact joins telegram you get a message (pop-out like) that reads [YOUR_CONTACT] joined telegram. + +9. A formal chat window on Linux Machine. Nice experience… + +![Telegram Contact Join Message](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Contact-Join-Message.jpeg) +Telegram Contact Join Message + +10. At the same time, I’ve tried messaging from my android mobile device, the interface looks similar on both. + +![Telegram Mobile Interface](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Mobile-Interface.png) +Telegram Mobile Interface + +11. Telegram settings page. You have a lot of options to configure. + +![Telegram Settings](http://www.tecmint.com/wp-content/uploads/2015/03/Telegram-Settings.png) +Telegram Settings + +12. About Telegram. + +![About Telegram](http://www.tecmint.com/wp-content/uploads/2015/03/About-Telegram.jpeg) +About Telegram + +#### Less Interesting Points #### + +- Telegram usage protocol MTProto Mobile protocol. +- Released Initially for iPhone in the year 2013 (August 14).. +- People Behind this Amazing Project: Pavel and Nikolai Durov.. + +That’s all for now. I’ll be here again with another interesting article you will love to read. I take the pleasure on behalf of Tecmint to thank all our valuable readers and critics who made us stand where we are now through continuous self evolving process. Keep Connected! Keep Commenting. Share if you care for us. + +- [https://telegram.org/][2] + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/install-telegram-in-linux/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:https://tdesktop.com/linux +[2]:https://telegram.org/ \ No newline at end of file diff --git a/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md b/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md new file mode 100644 index 0000000000..f66f54247d --- /dev/null +++ b/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md @@ -0,0 +1,130 @@ +4 Tools to Securely Delete Files from Linux +================================================================================ +Any computer user with normal level skill set knows that any data removed from computer system can be recovered later with little bit of efforts. This is a good thing in the scenario when you have accidentally deleted your critical data. But in most cases, you don't want your private data to be recovered easily. Whenever we remove anything, the operating system deletes just the index of the particular data. It means that data is still there somewhere on the disk, this method is insecure, as any smart computer hacker can use any good data recovery tool to easily recover your deleted data. Linux users utilizes the well know “**rm**” command to remove data from their operating system, but “rm” command works in the conventional fashion. Data removed using this command can be recovered by special file recovery tools. + +Let’s see how we can safely and completely remove files/folders from our Linux system. The methods mentioned below remove data completely so it becomes very hard for recovery tools to find traces of the actual data and recover it. + +### Secure-Delete ### + +Secure-Delete is a set of tools for Linux operating system and they provide advanced techniques for permanent removal of files. Once Secure-Delete has been installed on any Linux system, it provides following four commands: + +- srm +- smem +- sfill +- sswap + +Run following command in the terminal to install it in ubuntu: + + sudo apt-get install secure-delete + +![secure delete](http://blog.linoxide.com/wp-content/uploads/2015/03/secure-delete.png) + +Run following command to install it in RHEL, Fedora or Centos: + + sudo yum install secure-delete + +“**srm**” command works similarly to “rm” command, but instead of just deleting the file, it first overwrites it multiple times with some random data and then removes the file permanently. The syntax for this command is pretty simply, just specify the file or directory to remove and it will take care of the task. + + sudo srm /home/aun/Documents/xueo/1.png + +"**sfill**" checks the specified partition/directories for space marked as free or available, and then uses its algorithm to fill it up with some random data. In this way it ensures that there are no more recoverable files/folders on the partition. + + sudo sfill /home + +"**sswap**" command is used to securely wipe your swap partitions. Swap partition is used to store data for running programs. First of all find out your swap partition by running the following command: + + cat /proc/swaps + +Example output of above command is show below: + + aun@eagle:~$ cat /proc/swaps + Filename Type Size Used Priority + /dev/sda5 partition 2084860 71216 -1 + +From here, you can see that swap is set to which partition, and then securely clean it by running the following command. Replace the "/dev/sda5" part with your partition name. + + sudo sswap /dev/sda5 + +“**smem**” is used to clean the contents of memory, its true that RAM contents are cleaned when system is rebooted or powered off, but some residual traces of data still remain in the memory. This command provides secure memory cleaning, simly run smem command on the terminal. + + smem + +### Shred ### + +"shred" command destroys files/folder’s contents in a way that it is impossible to recover. It keeps overwriting the files with randomly generated data patterns so in this way it becomes very hard to recover any data from them even if hackers or thief uses high level of data recovery tools/equipments. Shred is installed by default on all Linux distributions, if you want, you can find its installation path by running following command: + + aun@eagle:~$ whereis shred + + shred: /usr/bin/shred /usr/share/man/man1/shred.1.gz + +Run following command to remove file using shred utility. + + shred /home/aun/Documents/xueo/1.png + +Run following command to securely remove any partition using shred ; Replace partition name with your desired partition. + + shred /dev/sda5 + +Shred by default overwrites file with random contents 25 times. If you want it to overwrite file more than this, simply specify the desired number with "shred -n" option. + + shred -n 100 filename + +If you want to truncate and remove file after overwriting, use "shred -u" option + + shred -u filename + +### dd ### + +This command is originally used for Disk Cloning. It is used to copy contents of one partition or disk to another. But it is also used for securely wiping out the contents of a hard disk or partitions. Run following command to overwrite your current data with random data.You don't need to install dd command, all Linux distributions include this command already. + + sudo dd if=/dev/random of=/dev/sda + +You can also overwrite the contents of hard disk or partitions by simply replacing everything with “zero”. + + sudo dd if=/dev/zero of=/dev/sda + +### Wipe ### + +Wipe was originally developed to securely erase files from magnetic media. This command line utility writes special patterns to the files repeatedly. It uses fsync() call and/or the O_SYNC bit to force disk access. It uses Gutmann algorithm for repeated writes. You can remove contents of single file, folder or entire hard disk with this command, but whole hard disk format using wipe command will take good amount of time. The installation and use of this utility is pretty easy. + +Install wipe on ubuntu by running the following command on the terminal. + + sudo aptitude install wipe + +![Wipe Linux](http://blog.linoxide.com/wp-content/uploads/2015/03/wipe.png) + +Install Wipe in Redhat Linux, Centos or Fedora by running the following command: + + sudo yum install wipe + +Once the installation is complete, run following command on the terminal to get complete list of its available options: + + man wipe + +Remove any file or directory as: + + wipe filename + +Securely remove your tmp partition by running following command: + + wipe -r /tmp + +Use following command to remove contents of complete partition (replace partition name with your desired partition). + + wipe /dev/sda1 + +### Conclusion ### + +We hope you find this article useful, the privacy of your data is critical, its important to have such secure file removal utilities installed on your system so you may be able to remove your private data without fear of being recovered easily. All of the above mentioned tools are pretty lightweight, they take minimum system resources to run, and does not affect performance of your system in anyway. Enjoy! + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/security/delete-files-permanatly-linux/ + +作者:[Aun Raza][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ \ No newline at end of file diff --git a/sources/tech/20150324 7 Quirky' ls' Command Tricks Every Linux User Should Know.md b/sources/tech/20150324 7 Quirky' ls' Command Tricks Every Linux User Should Know.md new file mode 100644 index 0000000000..9878cc8cee --- /dev/null +++ b/sources/tech/20150324 7 Quirky' ls' Command Tricks Every Linux User Should Know.md @@ -0,0 +1,163 @@ +7 Quirky ‘ls’ Command Tricks Every Linux User Should Know +================================================================================ +We have covered most of the things on ‘ls‘ command in last two articles of our Interview series. This article is the last part of the ‘ls command‘ series. If you have not gone through last two articles of this series you may visit the links below. + +注:以下三篇都做过源文,看看翻译了没有,如果发布了可适当改链接地址 +- [15 Basic ‘ls’ Command Examples in Linux][] +- [15 Interview Questions on Linux “ls” Command – Part 1][] +- [10 Useful ‘ls’ Command Interview Questions – Part 2][] + +![7 Quirky ls Command Tricks](http://www.tecmint.com/wp-content/uploads/2015/03/ls-command-tricks.jpg) +7 Quirky ls Command Tricks + +### 1. List the contents of a directory with time using various time styles. ### + +To list the contents of a directory with times using style, we need to choose any of the below two methods. + + # ls -l –time-style=[STYLE] (Method A) + +**Note** – The above switch (`--time` style must be run with switch `-l`, else it won’t serve the purpose). + + # ls –full-time (Method B) + +Replace `[STYLE]` with any of the below option. + + full-iso + long-iso + iso + locale + +%H:%M:%S:%D + +**Note** – In the above line H(Hour), M(Minute), S(Second), D(Date) can be used in any order. + +Moreover you just choose those relevant and not all options. E.g., `ls -l --time-style=+%H` will show only hour. + +`ls -l --time-style=+%H:%M:%D` will show Hour, Minute and date. + + # ls -l --time-style=full-iso + +![ls Command Full Time Style](http://www.tecmint.com/wp-content/uploads/2015/03/ls-Command-Full-Time-Style.gif) +ls Command Full Time Style + + # ls -l --time-style=long-iso + +![Long Time Style Listing](http://www.tecmint.com/wp-content/uploads/2015/03/Long-Time-Listing-Format.gif) +Long Time Style Listing + + # ls -l --time-style=iso + +![Time Style Listing](http://www.tecmint.com/wp-content/uploads/2015/03/Local-Time-Style-Listing.gif) +Time Style Listing + + # ls -l --time-style=locale + +![Locale Time Style Listing](http://www.tecmint.com/wp-content/uploads/2015/03/Hour-Mintue-Time-Style-Listing.gif) +Locale Time Style Listing + + # ls -l --time-style=+%H:%M:%S:%D + +![Date and Time Style Listing](http://www.tecmint.com/wp-content/uploads/2015/03/Full-Time-Style-Listing.gif) +Date and Time Style Listing + + # ls --full-time + +![Full Style Time Listing](http://www.tecmint.com/wp-content/uploads/2015/03/Full-Style-Time-Listing.gif) + +Full Style Time Listing + +### 2. Output the contents of a directory in various formats such as separated by commas, horizontal, long, vertical, across, etc. ### + +Contents of directory can be listed using ls command in various format as suggested below. + +- across +- comma +- horizontal +- long +- single-column +- verbose +- vertical + + # ls –-format=across + # ls --format=comma + # ls --format=horizontal + # ls --format=long + # ls --format=single-column + # ls --format=verbose + # ls --format=vertical + +![Listing Formats of ls Command](http://www.tecmint.com/wp-content/uploads/2015/03/ls-command-Listing-Formats.gif) +Listing Formats of ls Command + +### 3. Use ls command to append indicators like (/=@|) in output to the contents of the directory. ### + +The option `-p` with ‘ls‘ command will server the purpose. It will append one of the above indicator, based upon the type of file. + + # ls -p + +![Append Indicators to Content](http://www.tecmint.com/wp-content/uploads/2015/03/Append-Indicators.gif) +Append Indicators to Content + +### 4. Sort the contents of directory on the basis of extension, size, time and version. ### + +We can use options like `--extension` to sort the output by extension, size by extension `--size`, time by using extension `-t` and version using extension `-v`. + +Also we can use option `--none` which will output in general way without any sorting in actual. + + # ls --sort=extension + # ls --sort=size + # ls --sort=time + # ls --sort=version + # ls --sort=none + +![Sort Listing of Content by Options](http://www.tecmint.com/wp-content/uploads/2015/03/Sort-Content-by-Extensions.gif) +Sort Listing of Content by Options + +### 5. Print numeric UID and GID for every contents of a directory using ls command. ### + +The above scenario can be achieved using flag -n (Numeric-uid-gid) along with ls command. + + # ls -n + +![Print Listing of Content by UID and GID](http://www.tecmint.com/wp-content/uploads/2015/03/Print-UID-GID-of-Contents.gif) +Print Listing of Content by UID and GID + +### 6. Print the contents of a directory on standard output in more columns than specified by default. ### + +Well ls command output the contents of a directory according to the size of the screen automatically. + +We can however manually assign the value of screen width and control number of columns appearing. It can be done using switch ‘`--width`‘. + + # ls --width 80 + # ls --width 100 + # ls --width 150 + +![List Content Based on Window Sizes](http://www.tecmint.com/wp-content/uploads/2015/03/List-Content-By-More-Column.gif) +List Content Based on Window Sizes + +**Note**: You can experiment what value you should pass with width flag. + +### 7. Include manual tab size at the contents of directory listed by ls command instead of default 8. ### + + # ls --tabsize=[value] + +![List Content by Table Size](http://www.tecmint.com/wp-content/uploads/2015/03/List-Content-by-Table-Size.gif) +List Content by Table Size + +**Note**: Specify the `[Value]=` Numeric value. + +That’s all for now. Stay tuned to Tecmint till we come up with next article. Do not forget to provide us with your valuable feedback in the comments below. Like and share us and help us get spread. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/linux-ls-command-tricks/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/ +[2]:http://www.tecmint.com/ls-command-interview-questions/ +[3]:http://www.tecmint.com/ls-interview-questions/ \ No newline at end of file diff --git a/sources/tech/20150324 How to Host Open Source Code Repository in github.md b/sources/tech/20150324 How to Host Open Source Code Repository in github.md new file mode 100644 index 0000000000..8749f0b0e3 --- /dev/null +++ b/sources/tech/20150324 How to Host Open Source Code Repository in github.md @@ -0,0 +1,113 @@ +How to Host Open Source Code Repository in github +================================================================================ +Hi all, today we will be learning how to host Source Code of Open Source Software in the repository hosted by github.com . GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features. It provides a workplace to host powerful collaboration, code review, and code management for open source and private projects. Unlike Git, which is strictly a command-line tool, GitHub provides a web-based graphical interface and desktop as well as mobile integration. GitHub offers both paid plans for private repositories and free accounts, which are usually used to host open-source software projects. + +![github universe logo](http://blog.linoxide.com/wp-content/uploads/2015/03/github-universe.jpg) + +It is fast and more flexible web based hosting service which is easy to use and to manage distributed revision control. Anyone can host their software's source code in github's repository for the use, contribution, sharing, issue tracking and many more by millions of people across the globe. Here are some easy and quick steps to easily host software's source code. + +### 1. Creating a new Github Account ### + +First of all, open your favorite browser and go to Github's homepage url ie [github][1]. Then, the homepage will be opened as shown below. + +![Github Homepage](http://blog.linoxide.com/wp-content/uploads/2015/03/github-homepage.png) + +Now, after the homepage has been opened, please fill form shown to sign up for a new github account. + +After the you entered the valid information required for sign up, you'll be redirected to the plan choosing step. We have 5 plans listed in this page. One can choose the plan according to their requirement. Here, we'll go for a free plan. So, click on Choose to the Free plan and click on Finish Sign up. If we are planning to create an organization then, we need to tick on Help me setup an organization next. + +![choosing plan](http://blog.linoxide.com/wp-content/uploads/2015/03/choosing-plan.png) + +### 2. Creating a New Repository ### + +After we have successfully signed up a new account or logged in to Github, we'll now need to create a new Repository to get started. + +Click on **(+)** button which is located at the top right near the account id. Then Click on New Repository . + +![Add new repository](http://blog.linoxide.com/wp-content/uploads/2015/03/create-new-repository.png) + +Now, after clicking on add a new repository, we'll now be directed to the page where we'll need to enter the required information. + +![adding repository information](http://blog.linoxide.com/wp-content/uploads/2015/03/adding-information-repository.png) + +Now, after entering the required information about the new repository, we'll need to click on green Create repository button. + +After it is done, we'll get to see something similar like this image. + +![repository github](http://blog.linoxide.com/wp-content/uploads/2015/03/repository-github.png) + +### 3. Uploading an existing Project ### + +If we want to share our existing project on Github, we'll surely need to push the codes to the repository we created. To do so, we'll first need to install git in our Linux machine. As I am running Ubuntu 14.04 LTS in my machine, I'll need to run **apt** manger to install it. + + $ sudo apt-get install git + +![installing git](http://blog.linoxide.com/wp-content/uploads/2015/03/install-git.png) + +Now, as git is ready, we are now ready to upload the codes. + +**Note**: To avoid errors, do not initialize the new repository with **README**, license, or gitignore files. You can add these files after your project has been pushed to GitHub. + +In Terminal, we'll need to change the current working directory to your local project then initialize the local directory as a Git repository/ + + $ git init + +We'll then add the files in our new local repository. This stages them for the first commit. + + $ git add . + +Now, we'll need to commit the files that we've staged in our local repository. + + $ git commit -m 'First commit' + +![git commit](http://blog.linoxide.com/wp-content/uploads/2015/03/git-commit.png) + +In Terminal, we'll add the URL for the remote repository where our local repostory will be pushed. + + $ git remote add origin remote Repository url + $ git remote -v + +![adding remote url](http://blog.linoxide.com/wp-content/uploads/2015/03/adding-remote-url.png) + +Note: Please do replace remote Repository url to the url of the remote repo. + +Now, to push the changes in our local repository to GitHub's repo we'll need to run as below and enter the required credential for the repository. + + $ git push origin master + +![pushing repo](http://blog.linoxide.com/wp-content/uploads/2015/03/pushing-repo.png) + +### Cloning a Repo ### + +If we want to download a code repository from github straight to our local drives with a single command then, we can simply use git clone command which will clone the current directory to the remote repository. + + $ git clone https://github.com/aruntechgeek/linspeed.git + +![cloning repo](http://blog.linoxide.com/wp-content/uploads/2015/03/cloning-repo.png) + +Please change the above url to the repository you want to clone from. + +### Updating a Change ### + +If we made changes to our code and want to push them to our remote repository then after changing the changes, we should run the following commands inside that directory. + + $ git add . + $ git commit -m "Updating" + $ git push + +### Conclusion ### + +Hurray! We have successfully hosted our Project Source Code in Github repository. Github is fast and more flexible web based hosting service which is easy to use and to manage distributed revision control. Millions of awesome Open Source projects are hosted in github. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy Github :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/usr-mgmt/host-open-source-code-repository-github/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://github.com/ \ No newline at end of file diff --git a/sources/tech/20150324 How to Interactively Create a Docker Container.md b/sources/tech/20150324 How to Interactively Create a Docker Container.md new file mode 100644 index 0000000000..6f8e1a6433 --- /dev/null +++ b/sources/tech/20150324 How to Interactively Create a Docker Container.md @@ -0,0 +1,99 @@ +How to Interactively Create a Docker Container +================================================================================ +Hi everyone, today we'll learn how we can interactively create a docker container using a docker image. Once we start a process in Docker from an Image, Docker fetches the image and its Parent Image, and repeats the process until it reaches the Base Image. Then the Union File System adds a read-write layer on top. That read-write layer, the information about its Parent Image and some other information like its unique id, networking configuration, and resource limits is called a **Container**. Containers has states as they can change from **running** to **exited** state. A container with state as **running** includes a tree of processes running on the CPU, isolated from the other processes running on the host where as **exited** is the state of the file system and its exit value is preserved. You can start, stop, and restart a container with it. + +Docker Technology has brought a remarkable change in the field of IT enabling cloud service for sharing applications and automating workflows, enabling apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. In this article, we'll build CentOS Instance in which we'll host a website running under Apache Web Server. + +Here is quick and easy tutorial on how we can create a container in an interactive method using an interactive shell. + +### 1. Running a Docker Instance ### + +Docker initially tries to fetch and run the required image locally and if its not found in local host the it pulls from the [Docker Public Registry Hub][1] . Here. we'll fetch and create a fedora instance in a Docker Container and attach a bash shell to the tty. + + # docker run -i -t fedora bash + +![Downloading Fedora Base Image](http://blog.linoxide.com/wp-content/uploads/2015/03/downloading-fedora-base-image.png) + +### 2. Installing Apache Web Server ### + +Now, after our Fedora base image with instance is ready, we'll now gonna install Apache Web Server interactively without creating a Dockerfile for it. To do so, we'll need to run the following commands in a terminal or shell. + + # yum update + +![Updating Fedora Base Image](http://blog.linoxide.com/wp-content/uploads/2015/03/updating-fedora-base-image.png) + + # yum install httpd + +![Installing httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/installing-httpd2.png) + + # exit + +### 3. Saving the Image ### + +Now, we'll gonna save the changes we made into the Fedora Instance. To do that, we'll first gonna need to know the Container ID of the Instance. To get that we'll need to run the following command. + + # docker ps -a + +![Docker Running Container](http://blog.linoxide.com/wp-content/uploads/2015/03/docker-running-container.png) + +Then, we'll save the changes as a new image by running the below command. + + # docker commit c16378f943fe fedora-httpd + +![committing fedora httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/committing-fedora-httpd.png) + +Here, the changes are saved using the Container ID and image name fedora-httpd. To make sure that the new image is running or not, we'll run the following command. + + # docker images + +![view docker images](http://blog.linoxide.com/wp-content/uploads/2015/03/view-docker-images.png) + +### 4. Adding the Contents to the new image ### + +As we have our new Fedora Apache image running successfully, now we'll want to add the web contents which includes our website to Apache Web Server so that our website will run successfully out of the box. To do so, we'll need to create a new Dockerfile which will handle the operation from copying web contents to allowing port 80. To do so, we'll need to create a file Dockerfile using our favorite text editor as shown below. + + # nano Dockerfile + +Now, we'll need to add the following lines into that file. + + FROM fedora-httpd + ADD mysite.tar /tmp/ + RUN mv /tmp/mysite/* /var/www/html + EXPOSE 80 + ENTRYPOINT [ "/usr/sbin/httpd" ] + CMD [ "-D", "FOREGROUND" ] + +![configuring Dockerfile](http://blog.linoxide.com/wp-content/uploads/2015/03/configuring-Dockerfile.png) + +Here, in above Dockerfile, the web content which we have in mysite.tar will get automatically extracted to /tmp/ folder. Then, the entire site will move to the Apache Web root ie /var/www/html/ and the expose 80 will open port 80 so that the website will be available normally. Then, the entrypoint is set to /usr/sbin/httpd so that the Apache Server will execute. + +### 5. Building and running a Container ### + +Now, we'll build our Container using the Dockerfile we just created in order to add our website on it. To do so, we'll need to run the following command. + + # docker build -rm -t mysite . + +![Building mysite Image](http://blog.linoxide.com/wp-content/uploads/2015/03/building-mysite-image.png) + +After building our new container, we'll want to run the container using the command below. + + # docker run -d -P mysite + +![Running mysite Container](http://blog.linoxide.com/wp-content/uploads/2015/03/running-mysite-container.png) + +### Conclusion ### + +Finally, we've successfully built a Docker Container interactively. In this method, we build our containers and image directly via interactive shell commands. This method is quite easy and quick to build and deploy our images and containers. If you have any questions, suggestions, feedback please write them in the comment box below so that we can improve or update our contents. Thank you ! Enjoy :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/interactively-create-docker-container/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://registry.hub.docker.com/ \ No newline at end of file diff --git a/sources/tech/20150324 Prips--Print IP address on a given range.md b/sources/tech/20150324 Prips--Print IP address on a given range.md new file mode 100644 index 0000000000..14cd04c4a0 --- /dev/null +++ b/sources/tech/20150324 Prips--Print IP address on a given range.md @@ -0,0 +1,60 @@ +Prips – Print IP address on a given range +================================================================================ +prips is a tool that can be used to print all of the IP address on a given range. It can enhance the usability of tools that are made to work on only one host at a time. + +### Install Prips on ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install prips + +### Using prips ### + +### prips syntax ### + + prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] start end + prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] CIDR-block + +### Available Options ### + +The prips tool accepts the following command-line options: + +- -c -- Print the range in CIDR notation. +- -d delim -- Set the delimiter to the character with ASCII code delim where 0 <= delim <= 255. +- -e -- Exclude ranges from the output. +- -f format -- Set the format of addresses (hex, dec, or dot). +- -i incr -- Set the increment to ‘x'. + +### Prips Examples ### + +Display all the addresses in a reserved subnet: + + prips 192.168.32.0 192.168.32.255 + +The same, using CIDR notation: + + prips 192.168.32/24 + +Display only the usable addresses in a class A reserved subnet using a space instead of a newline for a delimiter: + + prips -d 32 10.0.0.1 10.255.255.255 + +Display every fourth address in a weird block: + + prips -i 4 192.168.32.7 192.168.33.5 + +Determine the smallest CIDR block containing two addresses: + + prips -c 192.168.32.5 192.168.32.11 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/prips-print-ip-address-on-a-given-range.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix \ No newline at end of file From 9e9491f89b6516c5cecd7ab60813c2d4df08f5ce Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Mar 2015 16:28:37 +0800 Subject: [PATCH 648/725] PUB:20150126 Improve system performance by moving your log files to RAM Using Ramlog @soooogreen --- ...ving your log files to RAM Using Ramlog.md | 107 +++++++++++++++++ ...ving your log files to RAM Using Ramlog.md | 111 ------------------ 2 files changed, 107 insertions(+), 111 deletions(-) create mode 100644 published/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md delete mode 100644 translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md diff --git a/published/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/published/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md new file mode 100644 index 0000000000..3ad03ac708 --- /dev/null +++ b/published/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md @@ -0,0 +1,107 @@ +性能优化:使用ramlog将日志文件转移到内存中 +================================================================================ +Ramlog 以系统守护进程的形式运行。在系统启动时它创建虚拟磁盘(ramdisk),将 /var/log 下的文件复制到虚拟磁盘中,同时把虚拟磁盘挂载为/var/log。然后所有的日志就会更新到虚拟磁盘上。而当 ramlog 重启或停止时,需要记录到硬盘上的日志就会保留在目录/var/log.hdd中。而关机的时候,(ramdisk上的)日志文件会重新保存到硬盘上,以确保日志一致性。Ramlog 2.x默认使用tmpfs文件系统,同时也可以支持ramfs和内核ramdisk。使用rsync(译注:Linux数据镜像备份工具)这个工具来同步日志。 + +注意:如果突然断电或者内核崩溃(kernel panic)时,没有保存进硬盘的日志将会丢失。 + +如果你拥有够多的可用内存,而又想把日志放进虚拟磁盘,就安装ramlog吧。它是笔记本用户、带有UPS的系统或是直接在flash中运行的系统的优良选择,可以节省日志的写入时间。 + +Ramlog的运行机制以及步骤如下: + +1. Ramlog 由第一个守护进程(这取决于你所安装过的其它守护进程)启动。 + +2. 然后创建目录/var/log.hdd并将其硬链至/var/log。 + +3. 如果使用的是tmpfs(默认)或者ramfs 文件系统,将其挂载到/var/log上。 + +4. 而如果使用的是内核ramdisk,ramdisk会在/dev/ram9中创建,并将其挂载至/var/log。默认情况下ramlog会占用所有ramdisk的内存,其大小由内核参数"ramdisk_size"指定。 + +5. 接着其它的守护进程被启动,并在ramdisk中更新日志。Logrotate(译注:Linux日志轮替工具)和 ramdisk 配合的也很好。 + +6. 重启(默认一天一次)ramlog时,目录/var/log.hdd将借助rsync与/var/log保持同步。日志自动保存的频率可以通过cron(译注:Linux例行性工作调度)来控制。默认情况下,ramlog 的调度任务放置在目录/etc/cron.daily下。 + +7. 系统关机时,ramlog在最后一个守护进程关闭之前关闭。 + +8. 在ramlog关闭期间,/var/log.hdd中的文件将被同步至/var/log,接着/var/log和/var/log.hdd都被卸载,然后删除空目录/var/log.hdd。 + +**注意:- 此文仅面向高级用户** + +### 在Ubuntu中安装Ramlog ### + +首先需要用以下命令,从[这里][1]下载.deb安装包: + + wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb + +下载ramlog\_2.0.0\_all.deb安装包完毕,使用以下命令进行安装: + + sudo dpkg -i ramlog_2.0.0_all.deb + +这一步会完成整个安装,现在你需要运行以下命令: + + sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 . + +现在,在更新sysklogd的初始化顺序,使之能在ramlog停止运行前正确关闭: + + sudo update-rc.d -f sysklogd remove + + sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 . + +然后重启系统: + + sudo reboot + +系统重启完毕,运行'ramlog getlogsize'来获取你当前的/var/log的空间大小。在此基础之上多分配40%的空间,确保ramdisk有足够的空间(这整个都将作为ramdisk的空间大小)。 + +编辑引导配置文件,如/etc/grub.conf,、/boot/grub/menu.lst 或/etc/lilo.conf(译注:具体哪个配置文件视不同引导加载程序而定),给你的当前内核的新增选项 'ramdisk_size=xxx' ,其中xxx是ramdisk的空间大小。 + +### 配置Ramlog ### + +基于deb的系统中,Ramlog的配置文件位于/etc/default/ramlog,你可以在该配置文件中设置以下变量: + + RAMDISKTYPE=0 + # 取值: + # 0 -- tmpfs (可被交换到交换分区) -- 默认 + # 1 -- ramfs (旧内核不能设置最大空间大小, + # 不能被交换到交换分区,和 SELinux 不兼容) + # 2 -- 老式的内核 ramdisk + TMPFS_RAMFS_SIZE= + # 可以用于 tmpfs 或 ramfs 的最大内存大小 + # 这个值可以是百分比或数值(单位是 Mb),例如: + # TMPFS_RAMFS_SIZE=40% + # TMPFS_RAMFS_SIZE=100m + # 该值为空表示 tmpfs/ramfs 的大小是全部内存的 50% + # 更多选项可以参考 ‘man mount' 中的‘Mount options for tmpfs' 一节 + # (补充,在较新的内核中,ramfs 支持大小限制, + # 虽然 man 中说没有这个挂载选项) + # 该选项仅用于 RAMDISKTYPE=0 或 1 时 + KERNEL_RAMDISK_SIZE=MAX + #以 kb 为单位指定的内核 ramdisk 大小,或者使用 MAX 来使用整个 ramdisk。 + #该选项仅用于 RAMDISKTYPE=2 时 + LOGGING=1 + # 0=关闭, 1=打开 。记录自身的日志到 /var/log/ramdisk + LOGNAME=ramlog + # 自身的日志文件名 (用于 LOGGING=1时) + VERBOSE=1 + # 0=关闭, 1=打开 (设置为 1时,启动或停止失败时会调用 teststartstop 将细节 + # 写到日志中) + +### 在Ubuntu中卸载ramlog ### + +打开终端运行以下命令: + + sudo dpkg -P ramlog + +注意:如果ramlog卸载之前仍在运行,需要重启系统完成整个卸载工作。 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html + +作者:[ruchi][a] +译者:[soooogreen](https://github.com/soooogreen) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix +[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb diff --git a/translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md deleted file mode 100644 index 66f5d72f87..0000000000 --- a/translated/tech/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md +++ /dev/null @@ -1,111 +0,0 @@ -系统性能优化支招:使用Ramlog将日志文件转移到RAM -================================================================================ -Ramlog以系统守护进程的形式存在。它系统启动的时候创建了虚拟磁盘(ramdisk),将文件从目录/var/log复制到虚拟磁盘中,同时把虚拟磁盘挂载为/var/log。接着更新虚拟磁盘上所有的日志。硬盘上的日志会保留在目录/var/log中,直到ramlog重启或停止时被更新。而关机的时候,(ramdisk上的)日志文件会重新保存到硬盘上,以确保日志一致性。Ramlog 2.x默认使用tmpfs文件系统,同时也可以支持ramfs和内核ramdisk。使用rsync(译注:Linux数据镜像备份工具)这个工具来同步日志。 - -注意:没有保存进硬盘的日志将在断电或者内核混乱(kernel panic)的情况下丢失。 - -如果你拥有空间足够的可用内存,而又想把日志放进虚拟磁盘,就安装ramlog吧。它是笔记本用户、UPS系统或是直接在flash中运行的系统节省写周期的优良选择。 - -Ramlog的运行机制以及步骤: - -1.Ramlog在第一个守护进程(这取决于你所安装过的其它守护进程)的基础上启动。 - -2.然后创建目录/var/log.hdd并将其硬链至/var/log。 - -3.如果使用的是tmpfs(默认)或者ramfs之一的文件系统,将其挂载到/var/log上。 - -而如果使用的是内核ramdisk,ramdisk将在/dev/ram9中创建,并将挂载至/var/log。默认情况下ramlog会占用所有ramdisk的内存,其大小由内核参数"ramdisk_size"指定。 - -5.接着其它的守护进程被启动,并在ramdisk中更新日志。Logrotate(译注:Linux日志轮替工具)也是在ramdiks之上运行。 - -6.重启(默认一天一次)ramlog时,目录/var/log.hdd将借助rsync与/var/log保持同步。日志自动保存的频率可以通过cron(译注:Linux例行性工作调度)来控制。默认情况下,ramlog文件放置在目录/etc/cron.daily下。 - -7.系统关机时,ramlog在最后一个守护进程关闭之前关闭。 - -在ramlog关闭期间,/var/log.hdd中的文件将被同步至/var/log,接着/var/log和/var/log.hdd都被卸载,然后删除空目录/var/log.hdd。 - -**注意:- 此文仅面向高级用户** - -### 在Ubuntu中安装Ramlog ### - -首先需要用以下命令,从[这里][1]下载.deb安装包: - - wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb - -下载ramlog_2.0.0_all.deb安装包完毕,使用以下命令进行安装: - - sudo dpkg -i ramlog_2.0.0_all.deb - -这一步会完成整个安装,现在你需要运行以下命令: - - sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 . - -#现在,在初始状态下升级sysklogd,使之能在ramlog停止运行前正确关闭: - - sudo update-rc.d -f sysklogd remove - - sudo update-rc.d sysklogd start 10 2 3 4 5 . stop 90 0 1 6 . - -然后重启系统: - - sudo reboot - -系统重启完毕,运行'ramlog getlogsize'获取/var/log的空间大小。在此基础之上多分配40%的空间,确保ramdisk有足够的空间(这整个都将作为ramdisk的空间大小)。 - -编辑引导配置文件,如/etc/grub.conf,、/boot/grub/menu.lst 或/etc/lilo.conf(译注:具体哪个配置文件视不同引导加载程序而定),kernel参数新增项'ramdisk_size=xxx'以更新当前内核,其中xxx是ramdisk的空间大小。 - -### 配置Ramlog ### - -基于deb的系统中,Ramlog的配置文件位于/etc/default/ramlog,你可以在该目录下设置以下变量: - -Variable (with default value): - -Description: - - RAMDISKTYPE=0 - # Values: - # 0 -- tmpfs (can be swapped) -- default - # 1 -- ramfs (no max size in older kernels, - # cannot be swapped, not SELinux friendly) - # 2 -- old kernel ramdisk - TMPFS_RAMFS_SIZE= - #Maximum size of memory to be used by tmpfs or ramfs. - # The value can be percentage of total RAM or size in megabytes -- for example: - # TMPFS_RAMFS_SIZE=40% - # TMPFS_RAMFS_SIZE=100m - # Empty value means default tmpfs/ramfs size which is 50% of total RAM. - # For more options please check ‘man mount', section ‘Mount options for tmpfs' - # (btw -- ramfs supports size limit in newer kernels - # as well despite man says there are no mount options) - # It has only effect if RAMDISKTYPE=0 or 1 - KERNEL_RAMDISK_SIZE=MAX - #Kernel ramdisk size in kilobytes or MAX to use entire ramdisk. - #It has only effect if RAMDISKTYPE=2 - LOGGING=1 - # 0=off, 1=on Logs can be found in /var/log/ramdisk - LOGNAME=ramlog - # name of the ramlog log file (makes sense if LOGGING=1) - VERBOSE=1 - # 0=off, 1=on (if 1, teststartstop puts detials - # to the logs and it is called after start or stop fails) - -### 在Ubuntu中卸载ramlog ### - -打开终端运行以下命令: - - sudo dpkg -P ramlog - -注意:如果ramlog卸载之前仍在运行,需要重启系统完成整个卸载工作。 - --------------------------------------------------------------------------------- - -via: http://www.ubuntugeek.com/improve-system-performance-by-moving-your-log-files-to-ram-using-ramlog.html - -作者:[ruchi][a] -译者:[soooogreen](https://github.com/soooogreen) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.ubuntugeek.com/author/ubuntufix -[1]:http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb From 036c5860747ad4452cfda67f25ebd56761e23724 Mon Sep 17 00:00:00 2001 From: LouisWei Date: Tue, 24 Mar 2015 20:46:45 +0800 Subject: [PATCH 649/725] translated wi-cuckoo LLAP --- ... Smart phones Using Prey Tool in Ubuntu.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 translated/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md diff --git a/translated/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md b/translated/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md new file mode 100644 index 0000000000..2d9a5e4485 --- /dev/null +++ b/translated/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md @@ -0,0 +1,70 @@ +Ubuntu中,使用Prey定位被盗的笔记本与手机 +=============================================================================== +Prey是一款跨平台的开源工具,可以帮助你找回被盗的笔记本,台式机,平板和智能手机。它已经获得了广泛的流行,声称帮助召回了成百上千台丢失的笔记本和智能手机。Prey的使用特别简单,首先安装在你的笔记本或者手机上,当你的设备不见了,用你的账号登入Prey网站,并且标记你的设备为“丢失”。只要小偷将设备接入网络,Prey就会马上发送设备的地理位置给你。如果你的笔记本有摄像头,它还会拍下小偷。 + +Prey占用很小的系统资源;你不会对你的设备运行有任何影响。你也可以配合其他你已经在设备上安装的防盗软件使用。Prey采用安全加密的通道,在你的设备与Prey服务器之间进行数据传输。 + +### 在Ubuntu上安装并配置Prey ### + +让我们来看看如何在Ubuntu上安装和配置Prey,需要提醒的是,在配置过程中,我们必须到Prey官网进行账号注册。一旦完成上述工作,Prey将会开始监视的设备了。免费的账号最多可以监视三个设备,如果你需要添加更多的设备,你就需要购买合适的的套餐了。 + +想象一下Prey多么流行与被广泛使用,它现在已经被添加到了官方的软件库中了。这意味着你不要往软件包管理器添加任何PPA。很简单地,登录你的终端,运行以下的命令来安装它: + + sudo apt-get install prey + +![Install Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey.png) + +![Install Prey 1](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey-1.png) + +Prey是十分轻巧的软件,只使用了系统几兆的空间,安装完成后,从Application >> Prey启动,之后它会询问你进行相关配置。 + +选择“New User”,如果你是第一次使用的话。 + +![Prey New User](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-New-User.png) + +第二步实际上就是官网注册的流程。请提供你的用户名,邮箱地址和密码,来申清一个免费的账号。 + +![Register Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Register-Prey.png) + +点击“Apply”完成,所有工作搞定,现在你的计算机被Prey保护了。 + +![Prey Configuration](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Configuration.png) + +登录你最新建立的[Prey 账号][1],你就应该可以在“Devices”菜单下看见你的设备信息了。 + +![Prey Web Login](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Web-Login.png) + +只要你的笔记本或者任何其他设备丢失了,就登录你的Prey网站账号,然后点击“Set Device to Missing”选项修改设备状态为“missing”。 + +![Prey Missing Page](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-1.png) + +从这里选择定时报告,并点击“Yes,my device is missing”。定时报告选项是指一段时间间隔后,软件会更新并发送给你设备的地理位置。它还会从网页界面那发邮件给你,只要设备的状态改变了。 + +![Prey Missing Email](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-2.png) + +而一旦被盗的设备接入了互联网,Prey就会马上发送报告给你,包括设备的地理位置和IP地址。 + +![Prey Found Report](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-3.png) + +点击报告链接,你应该会看到设备的地理位置和IP地址。 + +![Prey Final](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Final.png) + +Prey有一个明显的不足。它需要你的设备接入互联网才会发送地理位置给你,如果小偷比较聪明,在接入网络前将你的设备磁盘格式化了,那么你就永远不会收到设备被发现的报告了。但是这里仍然是有一个方法克服这个不足,确保添加一个BIOS密码,并且禁用从可移除的设备里启动系统。 + +### 结论 ### + +这是一款小巧,非常有用的安全保护应用,可以让你在一个地方追踪你所有的设备,尽管不完美,但是仍然提供了找回被盗设备的机会。它在Linux,Windows和Mac平台上无缝运行。以上就是Prey完整使用的所有细节。 + +------------------------------------------------------------------------------- + +via: http://linoxide.com/ubuntu-how-to/anti-theft-application-prey-ubuntu/ + +作者:[Aun Raza][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ +[1]:https://preyproject.com/ From 3d717b2e9dfa78a43c6743e18f50e2244939c623 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Mar 2015 21:26:10 +0800 Subject: [PATCH 650/725] PUB:20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux @geekpi --- ...ID--A Graphical Wi-Fi Scanner for Linux.md | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) rename {translated/tech => published}/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md (58%) diff --git a/translated/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md b/published/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md similarity index 58% rename from translated/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md rename to published/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md index 5935a4545c..e9db8a1172 100644 --- a/translated/tech/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md +++ b/published/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md @@ -1,14 +1,14 @@ -LinSSID - 一款Linux下的图形化Wi-Fi扫描器 +LinSSID:一款Linux下的图形化Wi-Fi扫描器 ================================================================================ ### 介绍 ### -如你所知,**LinSSID** 是一款可以用于寻找可用无线网络的图形化软件。它完全开源,用C++写成,使用了Linux无线工具、Qt5、Qwt6.1,它在外观和功能上与**Inssider** (MS Windows)相近。 +你可能知道,**LinSSID** 是一款可以用于寻找可用无线网络的图形化软件。它完全开源,用C++写成,使用了Linux wireless tools、Qt5、Qwt6.1,它在外观和功能上与**Inssider** (MS Windows 下的)相近。 ### 安装 ### 你可以使用源码安装,如果你使用的是基于DEB的系统比如Ubuntu和LinuxMint等等,你也可以使用PPA安装。 -你可用从[this link][1]这个链接下载并安装LinSSID。 +你可用从[这个][1]下载并安装LinSSID。 这里我门将使用PPA来安装并测试这个软件。 @@ -22,22 +22,21 @@ LinSSID - 一款Linux下的图形化Wi-Fi扫描器 安装完成之后,你可以从菜单或者unity中启动。 -你将被要求输入管理员密码。 +你需要输入管理员密码。 -![Password required for iwlist scan_001](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/Password-required-for-iwlist-scan_001.png) +![Password required for iwlist scan_001](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/Password-required-for-iwlist-scan_001.png) 这就是LinSSID的界面。 -![LinSSID_002](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/LinSSID_002.png) +![LinSSID_002](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/LinSSID_002.png) -现在选择你想要连接无线网络的网卡,比如这里是wlan0.点击Play按钮来搜寻wi-fi网络列表。 +现在选择你想要连接无线网络的网卡,比如这里是wlan0,点击Play按钮来搜寻wi-fi网络列表。 几秒钟之后,LinSSID就会显示wi-fi网络了。 -![LinSSID_003](http://180016988.r.cdn77.net/wp-content/uploads/2015/01/LinSSID_003.png) - -如你在上面的截屏中所见,LinSSID显示SSID名、MAC ID、通道、隐私、加密方式、信号和协议等等信息。当然,你可以让LinSSID显示更多的选项,比如安全、带宽等等。要显示这些,进入**View**菜单并选择需要的选项。同样,它显示了不同通道中的信号随着时间信号强度的变化。最后,它可以工作在2.4Ghz和5Ghz通道上。 +![LinSSID_003](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/01/LinSSID_003.png) +如你在上面的截屏中所见,LinSSID显示SSID名、MAC ID、通道、隐私、加密方式、信号和协议等等信息。当然,你可以让LinSSID显示更多的选项,比如安全设置、带宽等等。要显示这些,进入**View**菜单并选择需要的选项。同样,它显示了不同的通道中的信号随着时间信号强度的变化。最后,它可以工作在2.4Ghz和5Ghz通道上。 就是这样。希望这个工具对你有用。 @@ -53,7 +52,7 @@ via: http://www.unixmen.com/linssid-graphical-wi-fi-scanner-linux/ 作者:[SK][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From b8699044b595ba6f4ae38b43a7048bbf17a62a34 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Mar 2015 21:45:50 +0800 Subject: [PATCH 651/725] PUB:20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10 @geekpi --- ...To Install KDE Plasma 5.2 In Ubuntu 14.10.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) rename {translated/tech => published}/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md (64%) diff --git a/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/published/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md similarity index 64% rename from translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md rename to published/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md index 0e6a83f60f..28a49ca44e 100644 --- a/translated/tech/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md +++ b/published/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md @@ -2,11 +2,11 @@ ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Plasma_Ubuntu_1410.jpg) -[KDE][1] Plasma 5.2已经[发布][2],在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2。 +[KDE][1] Plasma 5.2已经[发布][2]一段时间了,在本篇中我们将看到如何在Ubuntu 14.10 上安装KDE Plasma 5.2。 -Ubuntu的默认桌面环境Unity很漂亮还有很多特性。但是如果你问任何有经验的Linux用户关于桌面自定义,他的回答将是KDE。KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE版本,也就是Kubuntu[3]。 +Ubuntu的默认桌面环境Unity很漂亮还有很多特性,但是如果你问任何有经验的Linux用户关于桌面定制能力,他的回答将是KDE。KDE在定制上是王者并且它得到流行大概是由于Ubuntu有官方的KDE版本,也就是Kubuntu[3]。 -对于Ubuntu(或者任何其他的Linux系统而言)的一个好消息是它没有绑定任何特定的桌面环境。你可以安装额外的桌面环境并且可以在不同的桌面环境间切换。早先我们已经了解了桌面环境的安装。 +对于Ubuntu(或者任何其他的Linux系统)而言的一个好消息是它们没有绑定在任何特定的桌面环境上,你可以安装额外的桌面环境并在不同的桌面环境间切换。早先我们已经了解如下的桌面环境的安装。 - [如何在Ubuntu 14.04中安装Mate桌面][4] - [如何在Ubuntu 14.04中安装Cinnamon桌面][5] @@ -17,25 +17,24 @@ Ubuntu的默认桌面环境Unity很漂亮还有很多特性。但是如果你问 ### 如何在Ubuntu 14.10 上安装KDE Plasma 5.2 ### -在Ubuntu 14.10上安装Plasma之前,你要知道这会下载大概1GB的内容。因此在安装KDE之前要考虑速度和数据包。我们下载所使用的PPA是KDEs社区官方提供的。在终端中使用下面的命令: +在Ubuntu 14.10上安装Plasma之前,你要知道这会下载大概1GB的内容。因此在安装KDE之前要考虑速度和数据存放空间。我们下载所使用的PPA是KDE社区官方提供的。在终端中使用下面的命令: sudo apt-add-repository ppa:kubuntu-ppa/next-backports sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install kubuntu-plasma5-desktop plasma-workspace-wallpapers -During the installation, it will as you to choose the default display manager. I chose the default LightDM. Once installed, restart the system. At the login, click on the Ubuntu symbol beside the login field. In here, select Plasma. 在安装中,我们要选择默认的显示管理器。我选择的是默认的LightDM。安装完成后,重启系统。在登录时,点击登录区域旁边的Ubuntu图标。这里选择Plasma。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/Select_Plasma_KDE_Ubuntu.jpeg) -你现在就登录到KDE Plasma了。这里有一个KDE Plasma 5.2在Ubuntu 14.10下的截图 +你现在就登录到KDE Plasma了。这里有一个KDE Plasma 5.2在Ubuntu 14.10下的截图: ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/KDE_Plasma_Desktop.jpeg) -### 从Ubuntu卸载KDE Plasma ### +### 从Ubuntu中卸载KDE Plasma ### -如果你想要还原更改,使用下面的命令从Ubuntu 14.10中卸载KDE Plasma。 +如果你想要卸载它,使用下面的命令从Ubuntu 14.10中卸载KDE Plasma。 sudo apt-get install ppa-purge sudo apt-get remove kubuntu-plasma5-desktop @@ -47,7 +46,7 @@ via: http://itsfoss.com/install-kde-plasma-ubuntu-1410/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 7ae7b70bf22bab20713ae717b6124673c22bf1dd Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 24 Mar 2015 22:04:35 +0800 Subject: [PATCH 652/725] PUB:20150205 How To Use Smartphones Like Weather Conky In Linux @FSSlc --- ...Smartphones Like Weather Conky In Linux.md | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) rename {translated/tech => published}/20150205 How To Use Smartphones Like Weather Conky In Linux.md (70%) diff --git a/translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md b/published/20150205 How To Use Smartphones Like Weather Conky In Linux.md similarity index 70% rename from translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md rename to published/20150205 How To Use Smartphones Like Weather Conky In Linux.md index 962becea1b..8eb8647d4e 100644 --- a/translated/tech/20150205 How To Use Smartphones Like Weather Conky In Linux.md +++ b/published/20150205 How To Use Smartphones Like Weather Conky In Linux.md @@ -2,7 +2,7 @@ ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Use_Weather_Conky_Linux.jpeg) -智能手机都拥有一些平滑融入手机外观的天气小插件,幸亏有了 Flair Weather Conky,你便可以**在你的 Linux 桌面中拥有像智能手机一样的天气外观**。我们将使用一个 GUI 工具[Conky Manager 在 Linux 中轻松地管理 Conky][1]。那就先让我们看看如何在 Ubuntu 14.10,14.04、Linux Mint 17 及其他 Linux 发行版本中安装 Conky Manager 吧。 +智能手机都拥有一些平滑地融入手机外观的天气小插件,现在幸亏有了 Flair Weather Conky,你便可以**在你的 Linux 桌面中拥有像智能手机一样的天气外观**。我们将使用一个 GUI 工具[Conky Manager 在 Linux 中轻松地管理 Conky][1]。那就先让我们看看如何在 Ubuntu 14.10,14.04、Linux Mint 17 及其他 Linux 发行版本中安装 Conky Manager 吧。 ### 安装 Conky Manager ### @@ -16,7 +16,7 @@ ### 确保 `curl` 已被安装 ### -请确保 [curl][2] 已被安装。(如果没有安装它,)可以使用下面的命令来安装: +请确保 [curl][2] 已被安装。如果没有安装它,可以使用下面的命令来安装: sudo apt-get install curl @@ -30,15 +30,15 @@ #### 步骤 1: #### -同你在 Ubuntu 14.04 中安装主题一样,在你的家目录中应该有一个 `.conky` 目录。假如你使用命令行,则不需要让我来告诉你如何找到这个目录。对于新手,请用文件管理器切换到你的家目录下,并按 `Ctrl+H` 来 [在 Ubuntu 中显示隐藏文件][4]。在这里查找 `.conky` 文件夹,假如没有这个文件夹,则创建一个。 +同你在 Ubuntu 14.04 中安装主题一样,在你的家目录中应该有一个 `.conky` 目录。假如你使用命令行,我想我不需要告诉你如何找到这个目录。对于新手,请用文件管理器切换到你的家目录下,并按 `Ctrl+H` 来 [在 Ubuntu 中显示隐藏文件][4]。在这里查找 `.conky` 文件夹,假如没有这个文件夹,则创建一个。 #### 步骤 2: #### -在 `.conky` 目录中,解压下载到的 Flair Weather 文件。请注意在默认情况下它会自动解压到一个名为 `.conky` 目录。所以请进入这个目录,将 Flair Weather 文件夹从中取出,然后将它粘贴到真正的 `.conky` 目录下。 +在 `.conky` 目录中,解压下载到的 Flair Weather 文件。请注意在默认情况下它会自动解压到一个名为 `.conky` 目录下。所以请进入这个目录,将其中的 Flair Weather 文件夹从中取出,然后将它粘贴到真正的 `.conky` 目录下。 #### 步骤 3: #### -Flair Weather 使用 Yahoo 的天气服务,但它不能自动地识别你的位置。你需要手动地编辑它。到[Yahoo 天气][5] 网页,然后通过键入你的城市/Pin 码来得到你所在城市的 位置 ID号。你可以从网页地址栏中取得位置 ID 号。 +Flair Weather 使用 Yahoo 的天气服务,但它不能自动地识别你的位置。你需要手动地编辑它。到[Yahoo 天气][5] 网页,然后通过键入你的城市/Pin 码来得到你所在城市的位置 ID号。你可以从网页地址栏中取得位置 ID 号。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Yahoo_Weather_Location_Code.jpeg) @@ -46,7 +46,7 @@ Flair Weather 使用 Yahoo 的天气服务,但它不能自动地识别你的 打开 Conky Manager,它应该能够读取新安装的 Conky 脚本。这里有两款样式可用,黑色主题或亮丽主题。你可以选择你偏爱的那一款。当你选择后,你就可以在桌面上看到 conky 的显示了。 -在 Flair Weather 中,默认位置被设定为 Melbourne。你必须手动编辑 conky 文件。 +在 Flair Weather 中,默认位置被设定为 Melbourne。你必须手动编辑 conky 文件来修改。 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Using_Weather_Conky_Ubuntu.jpeg) @@ -56,44 +56,49 @@ Flair Weather 使用 Yahoo 的天气服务,但它不能自动地识别你的 ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/Edit_Conky.jpeg) -在上面查找的相同位置,假如你将 C 替换为 F,则温度的单位将从摄氏温标改为华氏温标 。不要忘了重启 Conky 来查看已经做出的修改。 +在上面查找的相同位置,假如你将`u=c` 替换为`u=f`,则温度的单位将从摄氏温标改为华氏温标 。不要忘了重启 Conky 来查看已经做出的修改。 #### 可能的故障排除 #### -(注:这一小节在 md 文件中没有,原文新添加的。) 在 Ubuntu 14.04 和 Ubuntu 14.10 中,假如你发现 Conky 展示的时间有重叠现象,则请编辑 conky 脚本。查找下面的这些行: + ``` ## cairo-compmgr own_window_type override own_window_argb_visual no ``` + 然后将内容更换为下面的这些行: + + ``` ## cairo-compmgr own_window_type dock own_window_argb_visual no ``` + 保存更改并重启 conky。这就应该解决了这个问题。感谢 Jesse(这个 Conky 脚本的开发者)给我们提供了这个解决方法和为其他相关问题给予的支持。 -#### 尝试尝试 #### +### 尝试一下 ### 在这篇文章中,我们实际上学到了不少东西。我们见证了如何轻松地使用任何 Conky 脚本,如何编辑脚本以及如何使用 Conky Manager 来达到不同的目的。我希望这些对你有用。 -需要留心的是,Ubuntu 14.10 用户可能会看到重叠的时间数字。请在开发者 Jesse 绝妙的[Google + 主页][6] 中报告任何相关的问题。(注:这句在 md 文件中的内容与原文有差异,我按照原文翻译,并加上了 链接) +需要留心的是,Ubuntu 14.10 用户可能会看到重叠的时间数字。请在开发者 Jesse 绝妙的[Google + 主页][6] 中报告任何相关的问题。 + +我已经向你展示了在我的系统上 Flair Weather conky 外观的截图。现在是该你尝试它并炫耀你的桌面的时间了。 -我已经向你展示了在我的系统上 Flair Weather conky 外观的截图。现在该你尝试它并炫耀你的桌面的时间了。 -------------------------------------------------------------------------------- via: http://itsfoss.com/weather-conky-linux/ 作者:[Abhishek][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://itsfoss.com/author/Abhishek/ -[1]:http://itsfoss.com/conky-gui-ubuntu-1304/ +[1]:http://www.linux.cn/article-3434-1.html [2]:http://www.computerhope.com/unix/curl.htm [3]:http://speedracker.deviantart.com/art/Flair-Weather-Conky-Made-for-Conky-Manager-510130311 [4]:http://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/ From 81b5022cbd2657886092de46dab1805f477854ac Mon Sep 17 00:00:00 2001 From: Louis Wei Date: Tue, 24 Mar 2015 23:23:00 +0800 Subject: [PATCH 653/725] Delete 20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md --- ... Smart phones Using Prey Tool in Ubuntu.md | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md diff --git a/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md b/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md deleted file mode 100644 index d1a881f189..0000000000 --- a/sources/tech/20150320 Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu.md +++ /dev/null @@ -1,71 +0,0 @@ -translating wi-cuckoo LLAP -Locate Stolen laptops and Smart phones Using Prey Tool in Ubuntu -================================================================================ -Prey is an open source, cross platform tool which helps recover your stolen laptops, desktops, tablet computers and smart phones. It has gained vast popularity and has claimed to help recover hundreds of missing laptops and smart phones. The working of this tool is pretty simple, install it on your Laptop or smart phone, and if your device goes missing, login the Prey website with your credentials and mark your device as “Missing” there. As soon as the thief connects your device with internet, it will immediately send you the Geo location of your device. If your laptop is having webcam, it will also capture the screenshot of the thief. - -Prey consumes minimum system resources; it does not affect your device’s performance in any way. You can also use it alongside any other anti-theft application you had installed on your device. It uses secure and encrypted channels to communicate your device data with Prey servers. - -### Installing and configuring Prey on Ubuntu ### - -Let’s see how we can install and configure Prey on ubuntu, note that during configuration process, we will have to register an account at Prey official website. Once done, it will be able to monitor your devices. Its free account monitors up-to 3 devices, if you need to add more devices to its watch list, you need to purchase appropriate plan. - -Considering the popularity and use of Prey, it has been added to the official ubuntu repository now. That means you don’t need to add any additional PPA to the package manager. Simply launch your terminal application and run the following command to install it: - - sudo apt-get install prey - -![Install Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey.png) - -![Install Prey 1](http://blog.linoxide.com/wp-content/uploads/2015/03/Install-Prey-1.png) - -It is a very lightweight application, uses only few MB of space on the system, once installation is completed, launch it from Applications >> Prey and it will ask you for the configuration. - -Choose “New user” if you are using this app for first time. - -![Prey New User](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-New-User.png) - -This second step is actually the process to sign you up on Prey official website. Please provide your username, email address and password for free account. - -![Register Prey](http://blog.linoxide.com/wp-content/uploads/2015/03/Register-Prey.png) - -Hit “Apply” once done, that’s all, your computer is now protected by Prey. - -![Prey Configuration](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Configuration.png) - -Login your newly created [Prey account][1] and you should be able to see your device information there under “Devices” menu. - -![Prey Web Login](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Web-Login.png) - -As soon as your laptop or any other device goes missing, simply login your Prey web account and change the device status to “missing” by clicking “Set Device to Missing” option. - -![Prey Missing Page](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-1.png) - -Choose report frequency from here and hit “Yes, my device is missing”. Report Frequency option is the time interval after which this app will send you status updates for your device location. It will email you as soon as the device status is changed from web interface. - -![Prey Missing Email](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-2.png) - -As soon as your stolen device is connected to the internet, it will immediately send you report, containing your device's Geo whereabouts and IP address. - -![Prey Found Report](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Missing-3.png) - -Click the report link and you should be able to see your device’s Geo location and IP address. - -![Prey Final](http://blog.linoxide.com/wp-content/uploads/2015/03/Prey-Final.png) - -There is one known drawback in Prey , It needs your device to be connected to internet for sending Geo location, if thief is smart enough to format your device hard disk before connecting it to the network, then you’ll never get report of its recovery. But there is still a work around to overcome this drawback, make sure to add a BIOS password and disable booting the system from removable devices. - -### Conclusion ### - -It is a small, very useful security application which lets you track all of your devices on a single place, although not perfect, but still provides good level of recovery chances for your stolen devices. It runs seamlessly on Linux, Windows and Mac operating system. Here are details about Prey Pro plans. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/ubuntu-how-to/anti-theft-application-prey-ubuntu/ - -作者:[Aun Raza][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunrz/ -[1]:https://preyproject.com/ From b3d5e20f43912f2229e05de1ac2eb783de0bf559 Mon Sep 17 00:00:00 2001 From: LouisWei Date: Wed, 25 Mar 2015 11:11:22 +0800 Subject: [PATCH 654/725] translating wi-cuckoo LLAP --- .../20150324 How to Interactively Create a Docker Container.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150324 How to Interactively Create a Docker Container.md b/sources/tech/20150324 How to Interactively Create a Docker Container.md index 6f8e1a6433..17576ec4f0 100644 --- a/sources/tech/20150324 How to Interactively Create a Docker Container.md +++ b/sources/tech/20150324 How to Interactively Create a Docker Container.md @@ -1,3 +1,4 @@ +translating wi-cuckoo LLAP How to Interactively Create a Docker Container ================================================================================ Hi everyone, today we'll learn how we can interactively create a docker container using a docker image. Once we start a process in Docker from an Image, Docker fetches the image and its Parent Image, and repeats the process until it reaches the Base Image. Then the Union File System adds a read-write layer on top. That read-write layer, the information about its Parent Image and some other information like its unique id, networking configuration, and resource limits is called a **Container**. Containers has states as they can change from **running** to **exited** state. A container with state as **running** includes a tree of processes running on the CPU, isolated from the other processes running on the host where as **exited** is the state of the file system and its exit value is preserved. You can start, stop, and restart a container with it. @@ -96,4 +97,4 @@ via: http://linoxide.com/linux-how-to/interactively-create-docker-container/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunp/ -[1]:https://registry.hub.docker.com/ \ No newline at end of file +[1]:https://registry.hub.docker.com/ From 2c49973fa63a3656e436fb345128b7bf78a36317 Mon Sep 17 00:00:00 2001 From: Vic___ Date: Wed, 25 Mar 2015 12:20:35 +0800 Subject: [PATCH 655/725] Translated --- ...G images from the command line on Linux.md | 58 +++++++++---------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md b/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md index e96abc6f52..6d72a9f5d9 100644 --- a/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md +++ b/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md @@ -1,32 +1,30 @@ - Vic020 - -Linux FAQs with Answers--How to compress JPEG images from the command line on Linux +Linux有问必答--如何使用命令行压缩JPEG图像 ================================================================================ -> **Question**: I have several JPEG photo images I have taken using a digital camera. I would like to optimize and compress the JPEG pictures before uploading them to Dropbox. What is the easiest way to compress JPEG images without losing their quality on Linux? +> **问题**: 我有许多数码照相机拍出来的照片。我想在上传到Dropbox之前,优化和压缩下JPEG图片。有没有什么简单的方法压缩JPEG图片并不损耗他们的质量? -Image resolution of today's picture taking gadgets (e.g., smartphones, digital cameras) keeps increasing. Even 36.3 Megapixel Nikon D800 recently hit the consumer market, and this trend will continue. While modern gadgets continue to produce increasingly high resolution images, we may often want to post-process and compress their sizes before uploading them to a storage-limited and bandwidth-restricted cloud. +如今拍照设备(如智能手机、数码相机)拍出来的图片分辨率越来越大。甚至3630万像素的Nikon D800已经冲入市场,并且这个趋势根本停不下来。如今的拍照设备不断地提高着照片分辨率,使得我们不得不压缩后,再上传到有储存限制、带宽限制的云。 -In fact, there is a way to compress JPEG images easily on Linux. A command-line tool called jpegoptim allows you do "lossless" optimization on JPEG images, so you can compress JPEG pictures without sacrificing their quality. In case your storage or bandwidth budget is really low, jpegoptim allows you to do "lossy" compression as well by adjusting image quality. +事实上,这里有一个非常简单的方法压缩JPEG图像。一个叫“jpegoptim”命令行工具可以帮助你“无损”美化JPEG图像,所以你可以压缩JPEG图片而不至于牺牲他们的质量。万一你的存储空间和带宽预算真的很少,jpegoptim也支持“有损耗”压缩来调整图像大小。 -For those interested in compressing PNG images, refer to [this guideline][1] instead. +如果要压缩PNG图像,参考[this guideline][1]例子。 -### Install Jpegoptim on Linux ### +### 安装jpegoptim ### -To install jpegoptim on Ubuntu, Debian or Linux Mint: +Ubuntu, Debian 或 Linux Mint: $ sudo apt-get install jpegoptim -To install jpegoptim on Fedora: +Fedora: $ sudo yum install jpegoptim -To install jpegoptim on CentOS/RHEL, first enable [EPEL repo][2], and then run: +CentOS/RHEL安装,先开启[EPEL库][2],然后运行下列命令: $ sudo yum install jpegoptim -### Compress JPEG Images Losslessly ### +### 无损压缩jpeg图像 ### -To compress a JPG picture losslessly, simply run: +为了无损地压缩一副JPG图片,使用: $ jpegoptim photo.jpg @@ -34,9 +32,9 @@ To compress a JPG picture losslessly, simply run: photo.jpg 2048x1536 24bit N ICC JFIF [OK] 882178 --> 821064 bytes (6.93%), optimized. -Note that the original input image will be overwritten with a compressed impage. +注意,原始图像会被压缩后图像覆盖。 -If jpegoptim is not able to further optimize an image losselessly, it will skip overwriting it. +如果jpegoptim不能无损美化图像,将不会覆盖 $ jpegoptim -v photo.jpg @@ -44,27 +42,27 @@ If jpegoptim is not able to further optimize an image losselessly, it will skip photo.jpg 2048x1536 24bit N ICC JFIF [OK] 821064 --> 821064 bytes (0.00%), skipped. -If you want to preserve an original image, use "-d" option to specify a target directory. +如果你想保护原始图片,使用"-d"参数指明保存目录 $ jpegoptim -d ./compressed photo.jpg -An compressed image will then be placed (with the same name as the input file) in ./compressed directory. +这样,压缩的图片将会保存在./compressed目录(已同样的输入文件名) -If you want to preserve file creation/modification time, use "-p" option as follows. Then a compressed image will be placed with the same date and time as the original image. +如果你想要保护文件的创建修改时间,使用"-p"参数。这样压缩后的图片会得到与原始图片相同的日期时间。 $ jpegoptim -d ./compressed -p photo.jpg -If you simply check out possible lossless compression ratio without actually compressing it, use "-n" option to "simulate" compression. Then it will simply print results without actually performing compression. +如果你只是想获得无损压缩率,使用"-n"参数来模拟压缩,然后它会打印压缩率。 $ jpegoptim -n photo.jpg -### Compress JPEG Images Lossily ### +### 有损压缩JPG图像 ### -In case you really want to save storage space, you can do lossy compression on large JPEG pictures. +万一你真的需要要保存在云空间上,你可以使用有损压缩JPG图片。 -In this case, use "-m" option, where maximum quality is specified in the range of 0 and 100 (0 is the highest quality, and 100 is the lowest quality). +这种情况下,使用"-m<质量>"选项,质量数范围0到100。(0是最好质量,100是最坏质量) -For example, to compress an image with 50% quality: +例如,用50%质量压缩图片: $ jpegoptim -m50 photo.jpg @@ -72,19 +70,19 @@ For example, to compress an image with 50% quality: photo.jpg 2048x1536 24bit N ICC JFIF [OK] 882178 --> 301780 bytes (65.79%), optimized. -You will get a smaller image at the cost of reduced quality. +在牺牲质量的基础上,将会得到一个更小的图片。 ![](https://farm9.staticflickr.com/8707/16260736234_6d6f1d2434_c.jpg) -### Compress Multiple JPEG Images in a Batch ### +### 一次压缩多张JPEG图像 ### -Often times you need to compress many JPEG image files in a directory. In that case, you can use the following shell script. +最常见的情况是需要压缩一个目录下的多张JPEG图像文件。为了应付这种情况,你可以使用接下里的脚本。 #!/bin/sh - # compress all *.jpg files in the current directory - # and place them in ./compressed directory - # with the same modification date as original files. + # 压缩当前目录下所有*.jpg文件 + # 保存在./compressed目录 + # 并拥有与原始文件同样的修改日期 for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done -------------------------------------------------------------------------------- @@ -92,7 +90,7 @@ Often times you need to compress many JPEG image files in a directory. In that c via: http://ask.xmodulo.com/compress-jpeg-images-command-line-linux.html 作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) +译者:[VicYu/Vic020](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From c1ef207b0d754f18edbf4b5eadabf4d3bae5a1aa Mon Sep 17 00:00:00 2001 From: Vic___ Date: Wed, 25 Mar 2015 12:21:13 +0800 Subject: [PATCH 656/725] moved --- ...-How to compress JPEG images from the command line on Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md (100%) diff --git a/sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md b/translated/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md similarity index 100% rename from sources/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md rename to translated/tech/20150323 Linux FAQs with Answers--How to compress JPEG images from the command line on Linux.md From 948799785f36254cc6c5cd2d7a33f3dce666760d Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 25 Mar 2015 13:18:04 +0800 Subject: [PATCH 657/725] transla --- .../tech/20150324 Prips--Print IP address on a given range.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150324 Prips--Print IP address on a given range.md b/sources/tech/20150324 Prips--Print IP address on a given range.md index 14cd04c4a0..d94116599f 100644 --- a/sources/tech/20150324 Prips--Print IP address on a given range.md +++ b/sources/tech/20150324 Prips--Print IP address on a given range.md @@ -1,3 +1,5 @@ +Translating---geekpi + Prips – Print IP address on a given range ================================================================================ prips is a tool that can be used to print all of the IP address on a given range. It can enhance the usability of tools that are made to work on only one host at a time. @@ -57,4 +59,4 @@ via: http://www.ubuntugeek.com/prips-print-ip-address-on-a-given-range.html 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://www.ubuntugeek.com/author/ubuntufix \ No newline at end of file +[a]:http://www.ubuntugeek.com/author/ubuntufix From d78be663e1f36d17a11921af0478b88f1005eb2f Mon Sep 17 00:00:00 2001 From: geekpi Date: Wed, 25 Mar 2015 13:45:11 +0800 Subject: [PATCH 658/725] translated --- ...rips--Print IP address on a given range.md | 62 ------------------- ...rips--Print IP address on a given range.md | 60 ++++++++++++++++++ 2 files changed, 60 insertions(+), 62 deletions(-) delete mode 100644 sources/tech/20150324 Prips--Print IP address on a given range.md create mode 100644 translated/tech/20150324 Prips--Print IP address on a given range.md diff --git a/sources/tech/20150324 Prips--Print IP address on a given range.md b/sources/tech/20150324 Prips--Print IP address on a given range.md deleted file mode 100644 index d94116599f..0000000000 --- a/sources/tech/20150324 Prips--Print IP address on a given range.md +++ /dev/null @@ -1,62 +0,0 @@ -Translating---geekpi - -Prips – Print IP address on a given range -================================================================================ -prips is a tool that can be used to print all of the IP address on a given range. It can enhance the usability of tools that are made to work on only one host at a time. - -### Install Prips on ubuntu ### - -Open the terminal and run the following command - - sudo apt-get install prips - -### Using prips ### - -### prips syntax ### - - prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] start end - prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] CIDR-block - -### Available Options ### - -The prips tool accepts the following command-line options: - -- -c -- Print the range in CIDR notation. -- -d delim -- Set the delimiter to the character with ASCII code delim where 0 <= delim <= 255. -- -e -- Exclude ranges from the output. -- -f format -- Set the format of addresses (hex, dec, or dot). -- -i incr -- Set the increment to ‘x'. - -### Prips Examples ### - -Display all the addresses in a reserved subnet: - - prips 192.168.32.0 192.168.32.255 - -The same, using CIDR notation: - - prips 192.168.32/24 - -Display only the usable addresses in a class A reserved subnet using a space instead of a newline for a delimiter: - - prips -d 32 10.0.0.1 10.255.255.255 - -Display every fourth address in a weird block: - - prips -i 4 192.168.32.7 192.168.33.5 - -Determine the smallest CIDR block containing two addresses: - - prips -c 192.168.32.5 192.168.32.11 - --------------------------------------------------------------------------------- - -via: http://www.ubuntugeek.com/prips-print-ip-address-on-a-given-range.html - -作者:[ruchi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.ubuntugeek.com/author/ubuntufix diff --git a/translated/tech/20150324 Prips--Print IP address on a given range.md b/translated/tech/20150324 Prips--Print IP address on a given range.md new file mode 100644 index 0000000000..a628c1e122 --- /dev/null +++ b/translated/tech/20150324 Prips--Print IP address on a given range.md @@ -0,0 +1,60 @@ +Prips - 打印指定范围内的IP地址 +================================================================================ +prips是一个可以打印出指定范围内所有ip地址的一个工具。它可以增强那些只能同时工作在一个主机上的工具的可用性。 + +### 在ubuntu上安装prips ### + +打开终端并输入下面的命令 + + sudo apt-get install prips + +### 使用prips ### + +### prips语法 ### + + prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] start end + prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] CIDR-block + +### 可用选项 ### + +prips接受下面的命令行选项: + +- -c -- 以CIDR形式打印范围。 +- -d delim -- 用ASCII码作为分隔符,0 <= delim <= 255。 +- -e -- 排除输出的范围。 +- -f format -- 设置地址格式 (16进制, 10进制, 或者dot). +- -i incr -- 设置增长上限 + +### Prips示例 ### + +显示保留的子网内的所有地址: + + prips 192.168.32.0 192.168.32.255 + +同样使用CIDR标示: + + prips 192.168.32/24 + +只显示A类保留子网内所有可用的地址,用空格而不是换行作为分隔符: + + prips -d 32 10.0.0.1 10.255.255.255 + +每块显示4个ip地址: + + prips -i 4 192.168.32.7 192.168.33.5 + +打印包含两个地址的最小CIDR块。 + + prips -c 192.168.32.5 192.168.32.11 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/prips-print-ip-address-on-a-given-range.html + +作者:[ruchi][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix From cbb77ef8b6fec1153153adce051ab21299c5e28e Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 25 Mar 2015 14:22:39 +0800 Subject: [PATCH 659/725] Translating by ZTinoZ --- ...ual Environment using Commandline Tools in Linux.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md index 64ffeccad2..3ece220dd5 100644 --- a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md +++ b/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md @@ -103,7 +103,7 @@ Virsh命令行工具是一款管理virsh客户域的用户界面。virsh程序 ### 第三步: 创建虚拟机 ### -**10. 现在到最后一个环节了,在最后一步中,我们将用virt-istall命令来创建虚拟机。virt-install是一个用来创建新的KVM虚拟机命令行工具,它使用“libvirt”管理程序库。想获取更多细节,同样可以查看man手册。** +**10. 现在到最后一个环节了,在最后一步中,我们将用virt-install命令来创建虚拟机。virt-install是一个用来创建新的KVM虚拟机命令行工具,它使用“libvirt”管理程序库。想获取更多细节,同样可以查看man手册。** # man virt-install @@ -122,17 +122,17 @@ Virsh命令行工具是一款管理virsh客户域的用户界面。virsh程序 ![Create New Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Create-New-Virtual-Machines.png) 创建新的虚拟机 -**11. You will find also a pop-up virt-vierwer window appears to communicate with virtual machine through it.** +**11. 你会看到弹出一个virt-vierwer窗口,像是在通过它在与虚拟机通信。** ![Booting Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Booting-Virtual-Machine.jpeg) -Booting Virtual Machine +虚拟机启动程式 ![Installation of Virtual Machine](http://www.tecmint.com/wp-content/uploads/2015/02/Installation-of-Virtual-Machine.jpeg) -Installation of Virtual Machine +虚拟机安装过程 ### 结论 ### -This is the latest part of our KVM tutorial, we haven’t covered everything of course. It a shot to scratch the KVM environment so its your turn to search and keep hands dirty using this nice resources. +以上就是我们KVM教程的最后一部分了,当然我们还没有完全覆盖到全部,我们只是打了个擦边球,所以现在该轮到你来好好地利用这些丰富的资源来做自己想做的事了。 - [KVM Getting Started Guide][2] - [KVM Virtualization Deployment and Administration Guide][3] From 4167a92860f6c4ad2d72a7360c239a0b5829e2bf Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Wed, 25 Mar 2015 14:23:59 +0800 Subject: [PATCH 660/725] Finish the translation by ZTinoZ --- ...ge KVM Virtual Environment using Commandline Tools in Linux.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {sources => translated}/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md (100%) diff --git a/sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md b/translated/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md similarity index 100% rename from sources/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md rename to translated/tech/20150302 How to Manage KVM Virtual Environment using Commandline Tools in Linux.md From ca951ee6a2e0f209f81ef27d710b288f00a595d3 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 25 Mar 2015 22:15:51 +0800 Subject: [PATCH 661/725] PUB:20150115 Get back your privacy and control MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @zpl1025 鸿篇巨制!辛苦啦,翻译得非常好~~ --- ...50115 Get back your privacy and control.md | 145 +++++++++--------- 1 file changed, 73 insertions(+), 72 deletions(-) rename {translated/tech => published}/20150115 Get back your privacy and control.md (80%) diff --git a/translated/tech/20150115 Get back your privacy and control.md b/published/20150115 Get back your privacy and control.md similarity index 80% rename from translated/tech/20150115 Get back your privacy and control.md rename to published/20150115 Get back your privacy and control.md index 9695c1f3de..5c78a23751 100644 --- a/translated/tech/20150115 Get back your privacy and control.md +++ b/published/20150115 Get back your privacy and control.md @@ -1,42 +1,42 @@ -在短短几个小时里拿回自己数据的隐私和控制权:为自己和朋友们搭建私有云 +权威指南:构建个人私有云,拿回你的数据隐私的控制权! ================================================================================ -8年里40'000多次搜索!这是我的Google搜索历史。你的呢?(可以在[这里][1]自己找一下)有经过这么长时间积累下来的这么多数据点,Google已经能非常精确的推测你对什么感兴趣,曾经的想法,担忧过的事情,以及从你第一次获得Google帐号后这些年里所有这些的变化。 +8年里40000多次搜索!这是我的Google搜索历史。你的呢?(可以在[这里][1]自己找一下)有经过这么长时间积累下来的这么多数据点,Google已经能非常精确的推测你对什么感兴趣、曾经的想法、担忧过的事情,以及从你第一次获得Google帐号后这些年里所有这些的变化! -### 很多非常私人的信息不受自己控制地存储在世界范围内的服务器上 ### +## 很多非常私人的信息不受自己控制地存储在世界范围内的服务器上 ## -比如说你也像我一样从2006年到2013年都是Gmail用户,意味着你收到了30'000+的电子邮件以及在这7年里写了差不多5000封电子邮件。这些发送或收到的电子邮件里有很多是非常私人的,私人到你甚至不希望自己的家人或好友能系统地查看。也许你还写过一些草稿邮件,因为最后一分钟改变主意而从没发出去。但是尽管你从未发出去,这些邮件仍然保存在服务器上的某个地方。结论是,说Google服务器比你最亲密的朋友或家人都更了解你的个人生活一点也不过分。 +比如说你也像我一样从2006年到2013年都是Gmail用户,意味着你收到了30000封以上的电子邮件,以及在这7年里写了差不多5000封电子邮件。这些发送或收到的电子邮件里有很多是非常私人的,私人到你甚至不希望自己的家人或好友可以系统地查看。也许你还写过一些草稿邮件,因为最后一分钟改变主意而从没发出去。但是尽管你从未发出去,这些邮件仍然保存在服务器上的某个地方。结论是,说Google服务器比你最亲密的朋友或家人都更了解你的个人生活一点也不过分。 -从统计数据来看,可以很安全地赌你拥有一部智能手机。如果不使用联系人应用的话手机将基本没法用,而它默认会将你的联系人信息保存到Google服务器上的Google联系人里。所以,现在Google不仅知道了你的电子邮件,还有了你的离线联系人:你喜欢打给谁,谁来过电话,你发过短信给谁,以及发了些什么。你也不需要听我的片面之词,可以自己检查一下,看看你开放给类似Google Play服务的一些应用的权限,用来读取来电信息以及收到的短信。你是否还会用到手机里自带的日历应用?除非你在设置日程的时候明确地去掉,那么Google将精确地知道你将要做什么,一天里的每个时段,每一天,每一年。用iPhone代替Android手机也是一样的,只是Apple会代替Google来掌握你的往来邮件,联系人和日程计划。 +从统计数据来看,我可以很保险地打赌你拥有一部智能手机。如果不使用联系人应用的话手机将基本没法用,而它默认会将你的联系人信息保存到Google服务器上的Google联系人里。所以,现在Google不仅知道了你的电子邮件,还有了你的离线联系人:你喜欢打给谁、谁来过电话、你发过短信给谁,以及发了些什么。你也不需要听我的片面之词,可以自己检查一下,看看你开放给类似Google Play服务的一些应用的权限,用来读取来电信息以及收到的短信。你是否还会用到手机里自带的日历应用?除非你在设置日程的时候明确地去掉同步,那么Google将精确地知道你将要做什么,一天里的每个时段、每一天、每一年。用iPhone代替Android手机也是一样的,只是Apple会代替Google来掌握你的往来邮件、联系人和日程计划。 -你是否还会非常小心地同步自己的联系人信息,在你朋友,同事或家人换工作或换服务商的时候更新他们的电子邮件地址和手机号?这给Google提供了一副你社交网络的非常精确的,最新的图片。还有你非常喜欢手机的GPS功能,经常配合Google地图使用。这意味着Google不仅能从日程里知道你在干什么,还知道你在哪儿,住在哪儿,在哪儿工作。然后再关联用户之间的GPS位置信息,GOogle还能知道你现在可能正在和哪些人来往。 +你是否还会非常小心地同步自己的联系人信息,在你朋友,同事或家人换工作或换服务商的时候更新他们的电子邮件地址和手机号?这给Google提供了一副你的社交网络的非常精确的、最新的描绘。还有你非常喜欢手机的GPS功能,经常配合Google地图使用。这意味着Google不仅能从日程里知道你在干什么,还知道你在哪儿、住在哪儿、在哪儿工作。然后再关联用户之间的GPS位置信息,Google还能知道你现在可能正在和哪些人来往。 -### 这种泄漏自己私人信息的日常爱好会以一种甚至没人能够预测的方式影响你的生活 ### +## 这种泄漏自己私人信息的日常爱好会以一种甚至没人能够预测的方式影响你的生活 ## -总结一下,如果你是一个普通的因特网用户,Google拥有过去差不多10年里你最新的,深度的信息,关于你的兴趣,忧虑,热情,疑问。它还收集了一些你很私人的信息(电子邮件,短信),精确到小时的你的日常活动和位置,一副你社交网络的高品质图片。关于你的如此私密的数据,很可能已经超越了你最亲密的朋友,家人或爱人对你的了解。 +总结一下,如果你是一个普通的因特网用户,Google拥有过去差不多10年里你最新的、深度的信息,关于你的兴趣、忧虑、热情、疑问。它还收集了一些你很私人的信息(电子邮件、短信),精确到小时的你的日常活动和位置,一副你社交网络的高精度的描绘。关于你的如此私密的数据,很可能已经超越了你最亲密的朋友,家人或爱人对你的了解。 不敢想象把这些深度的个人信息交给完全陌生的人,就好像把这些信息拷到一个U盘里,然后随便放到某个咖啡厅的桌上,留张纸条说“Olivier Martin的个人数据,请随便”。谁知道什么人会拿到它以及用来干嘛?然而,我们毫不犹豫地把自己的主要信息交给那些对我们的数据很感兴趣的IT公司的陌生人(这是他们制造面包的材料)以及[世界级的数据分析专家][2]手里,也许只是因为我们在点击那个绿色的'接受'按钮时根本没有想这么多。 -有这么多的高质量信息,这么多年里,Google可能会比你希望自我了解的更了解你自己:尼玛,回想我过去的数字生活,我已经不记得5年前发出的邮件里的一半了。我很高兴能重新发现早在2005年对马克思主义的兴趣以及第二年加入了[ATTAC][3](一个致力于通过征收金融交易税来限制投机和改善社会公平的组织)。天知道为什么我竟然在2007年这么喜欢跳舞。这些都是无关紧要的信息(你不要指望我能爆出什么猛料,不会吧?;-)。但是,连接起这些高质量数据点,关于你生活的方方面面(做什么,什么时候,和谁一起,在哪里,...),并跨越这么长时间间隔,应该能推测出你的未来状态。比如说,根据一个17岁女孩的购物习惯,超市甚至可以在他父亲听说之前断定这个女孩怀孕了([真实故事][4])。谁知道通过像Google所掌握的这些远远超出购物习惯的高质量数据能做些什么?连接起这些点,也许有人能预测你未来几年里口味或政治观点的变化。如今,[你从未听过的公司声称拥有你500项数据点][5],包括宗教信仰,性取向和政治观点。提到政治,如果说你决定今后10年内进入政坛会怎么样?你的生活会改变,你的观点也一样,甚至你有时候会有所遗忘,但是Google不会。那你会不会担心你的对手会接触一些可以从Google访问你数据的人并会从你过去这些年里积累的个人数据深渊里挖出一些猛料呢?[就像最近Sony被黑][6]一样,多久以后会轮到Google或Facebook,以致让你的个人信息最终永远暴露? +有这么多的高质量信息,这么多年里,Google可能会比你希望自我了解的更了解你自己:尼玛,回想我过去的数字生活,5年前发出的邮件里有一半我已经不记得了。我很高兴能重新发现早在2005年对xxx主义的兴趣以及第二年加入了[ATTAC][3](一个致力于通过征收金融交易税来限制投机和改善社会公平的组织)。天知道为什么我竟然在2007年这么喜欢跳舞。这些都是无关紧要的信息(你不指望我能爆出什么猛料,是吧?;-)。但是,连接起这些高质量数据点,关于你生活的方方面面(做什么、什么时候、和谁一起、在哪里,...),并跨越这么长时间间隔,应该能推测出你的未来状态。比如说,根据一个17岁女孩的购物习惯,超市甚至可以在他父亲听说之前断定这个女孩怀孕了(这是一个[真实的故事][4])。谁知道通过像Google所掌握的这些远远超出购物习惯的高质量数据能做些什么?连接起这些点,也许有人能预测你未来几年里口味或观点的变化。如今,[你从未听过的公司声称拥有你500项数据点][5],包括宗教信仰、性取向和政治观点。提到政治,如果说你决定今后10年内进入政坛会怎么样?你的生活会改变,你的观点也一样,甚至你有时候会有所遗忘,但是Google不会。那你会不会担心你的对手会接触一些可以从Google访问你数据的人并会从你过去这些年里积累的个人数据深渊里挖出一些猛料呢?[就像最近Sony被黑][6]一样,多久以后会轮到Google或Facebook,以致让你的个人信息最终永远暴露? 我们大多数人把自己的个人数据托付给这些公司的一个原因就是它们提供免费服务。但是真的免费吗?一般的Google帐号的价值根据评估方式不同会有些差别:你花在写邮件上的时间占到[1000美元/年][7],你的帐号对于广告产业的价值差不多在[220美元/年][8]到[500美元/年][9]之间。所以这些服务并不是真的免费:会通过广告和我们的数据在未来的一些未知使用来间接付费。 -我写的最多的是Google,这是因为这是我托付个人数字信息的,以及目前我所知道做的最好的公司。但是我也提到过Apple或Facebook。这些公司通过它们在设计,工程和我们(曾经)喜欢每天使用的服务方面的神奇进步实实在在地改变了世界。但是这并不是说我们应该把所有我们最私人的个人数据堆积到它们的服务器上并把我们的数字生活托付给它们:潜在的危害实在太大了。 +我写的最多的是Google,这是因为这是我托付个人数字信息的,以及目前我所知道做的最好的公司。但是我也提到过Apple或Facebook。这些公司通过它们在设计、工程和我们(曾经)喜欢每天使用的服务方面的神奇进步实实在在地改变了世界。但是这并不是说我们应该把所有我们最私人的个人数据堆积到它们的服务器上并把我们的数字生活托付给它们:潜在的危害实在太大了。 -### 只要5小时,拿回自己以及关心的人的隐私权 ### +## 只要5小时,拿回自己以及关心的人的隐私权 ## -并不是一定要这样做。你可以生活在21世纪,拿着智能手机,每天都用电子邮件和GPS,却仍然可以保留自己的隐私。你所需要的就是拿回自己个人数据的控制权:邮件、日程、联系人、文件,等等。[Prism-Break.org][10]网站上列出了一些能帮你掌握个人数据命运的软件。除此以外,控制自己个人数据的最安全和最有效的方式是架设自己的服务器并搭建自己的云。不过你也许只是没有时间或精力去研究具体该怎么做以及如何让它能流畅工作。 +但是事实并不是一定必须这样的。你可以生活在21世纪,拿着智能手机,每天都用电子邮件和GPS,却仍然可以保留自己的隐私。你所需要的就是拿回自己个人数据的控制权:邮件、日程、联系人、文件,等等。[Prism-Break.org][10]网站上列出了一些能帮你掌握个人数据命运的软件。除此以外,控制自己个人数据的最安全和最有效的方式是架设自己的服务器并搭建自己的云。不过你也许只是没有时间或精力去研究具体该怎么做以及如何让它能流畅工作。 这也是这篇文章的意义所在。仅仅5个小时内,我们将配置出一台服务器来支撑你的邮件、联系人、日程表和各种文件,为你、你的朋友和你的家人。这个服务器将设计成一个个人数据中心或云,所以你能时刻保留它的完整控制。数据将自动在你的台式机/笔记本、手机和平板之间同步。从根本上来说,**我们将建立一个系统来代替Gmail、Google文件/Dropbox、Google联系人、Google日历和Picasa**。 -为自己做这件事情已经是迈出很大一步了。但是,你个人信息的很大一部分将仍然泄漏出去并保存到硅谷的一些主机上,只是因为和你日常来往的太多人在用Gmail和使用智能手机。所以最好是带上你一些比较亲近的人加入这次探险。 +为自己做这件事情已经是迈出很大一步了。但是,你个人信息的很大一部分将仍然泄漏出去并保存到硅谷的一些主机上,只是因为和你日常来往的太多人在用Gmail和使用智能手机,所以最好是带上你一些比较亲近的人加入这次探险。 -我们将构建的系统能够 +我们将构建的系统能够: - **支持任意数目的域名和用户**。这样就能轻易地和你的家人朋友共享这台服务器,所以他们也能掌控自己的个人数据,并且还能和你一起分摊服务费用。和你一起共享服务器的人可以使用他们自己的域名或者共享你的。 -- **允许你从任意网络发送和接收电子邮件**,需要成功登录服务器之后。这样,你可以通过任意的邮件地址,任意设备(台式机、手机、平板),任意网络(家里、公司、公共网络、...)来发送电子邮件。 +- **允许你从任意网络发送和接收电子邮件**,需要成功登录服务器之后。这样,你可以通过任意的邮件地址、任意设备(台式机、手机、平板)、任意网络(家里、公司、公共网络、...)来发送电子邮件。 - **在发送和接收邮件的时候加密网络数据**,这样,你不信任的人不能钓出你的密码,也不能看到你的私人邮件。 -- **提供最先进的反垃圾邮件技术**,结合了已知垃圾邮件黑名单,自动灰名单,和自适应垃圾邮件过滤。如果邮件被误判了只需要简单地把它拖入或拖出垃圾目录就可以重新配置垃圾邮件过滤器。而且,服务器还会为基于社区的反垃圾邮件努力做出贡献。 -- **一段时间里只需要几分钟的维护**,基本上只是安装安全更新和简单地检查一下服务器日志。添加一个新的邮件地址只需要在数据库中插入一条记录。除此之外,你可以忘记它的存在过自己的生活。我在14个月之前搭建了本文描述的这个系统,从那以后就一直顺利运行。所以我完全把它给忘了,直到我最近觉得随便按下手机上的‘检查邮件’会导致电子一路跑到冰岛(我放置服务器的地方)再回来的想法有点好笑才想起来。 +- **提供最先进的反垃圾邮件技术**,结合了已知垃圾邮件黑名单、自动灰名单、和自适应垃圾邮件过滤。如果邮件被误判了只需要简单地把它拖入或拖出垃圾目录就可以重新调校垃圾邮件过滤器。而且,服务器还会为基于社区的反垃圾邮件努力做出贡献。 +- **一段时间里只需要几分钟的维护**,基本上只是安装安全更新和简单地检查一下服务器日志。添加一个新的邮件地址只需要在数据库中插入一条记录。除此之外,你可以忘记它的存在过自己的生活。我在14个月之前搭建了本文描述的这个系统,从那以后就一直顺利运行。所以我完全把它给忘了,直到我最近觉得随便按下手机上的‘检查邮件’会导致电子信号一路跑到冰岛(我放置服务器的地方)再回来的想法有点好笑才想起来。 要完成这篇文章里的工作,你需要一点基本的技术能力。如果你知道SMTP和IMAP的区别,什么是DNS,以及对TCP/IP有基本了解的话,就够了。你还将需要一点基本的Unix知识(在命令行下和文件一起工作,基本的系统管理)。然后你需要花总共5小时时间来搭建。 @@ -49,7 +49,7 @@ - [使用Owncloud提供日历,联系人,文件服务并配置webmail][15] - [在云上同步你的设备][16] -### 这篇文章是受之前工作的启发并以之为基础 ### +## 这篇文章是受之前工作的启发并以之为基础 ## 本文很大程度参考了两篇文章,由[Xavier Claude][17]和[Drew Crawford][18]写的关于架设私有邮件服务器的介绍。 @@ -62,13 +62,13 @@ - 我增加了webmail。 - 我增加了设定云服务器的部分,不仅能收发邮件还能管理文件,地址本/联系人(邮件地址,电话号码,生日,等等等),日程表和图片,供所有设备访问使用。 -### 申请一个虚拟私人服务器,一个域名,并把它们配置好 ### +## 申请一个虚拟私人服务器,一个域名,并把它们配置好 ## 让我们从设置基础设施开始:我们的虚拟私人主机和我们的域名。 我用过[1984.is][19]和[Linode][20]提供的虚拟私人主机(VPS),体验非常好。在本文中,我们将使用**Debian Wheezy**,这个在1984和Linode都提供了已经做好的映像文件可以直接布置到你的VPS上。我喜欢1984是因为它的服务器在冰岛,也是唯一使用可再生能源(地热和水力发电)的地方,目前还没有影响过气候变化,不像[大多数美国数据中心目前大多数依赖于烧煤的火力发电站][21]。而且,他们注重[民权,透明,自由][22]以及[免费软件][23]。 -最好是在服务器上创建一个文件用来保存后面要用到的各种密码(用户账号,邮件账号,云帐号,数据库帐号)。当然最好是加密一下(可以用[GnuPG][24]),这样就算用来设定服务器的电脑被偷了或被入侵了,你的服务器就不会那么容易被攻击。 +最好是在服务器上创建一个文件用来保存后面要用到的各种密码(用户账号、邮件账号、云帐号、数据库帐号)。当然最好是加密一下(可以用[GnuPG][24]),这样就算用来设定服务器的电脑被偷了或被入侵了,你的服务器就不会那么容易被攻击。 关于注册域名,我已经使用[grandi][25]的服务超过10年了,也很满意。在本文中,我们将开辟一个叫**jhausse.net**的域名。然后在上面增加一个叫**cloud.jhausse.net**的二级域名,并绑定MX纪录。在完成之后,设置比较短的纪录生存时间(TTL)比如300秒,这样你在设置服务器的时候,可以修改你的域并很快测试到结果。 @@ -78,7 +78,7 @@ adduser roudy -然后,在文件**/etc/ssh/sshd_config**中设置 +然后,在文件**/etc/ssh/sshd\_config**中设置 PermitRootLogin no @@ -90,7 +90,7 @@ cloud -然后,编辑ssh服务的公钥文件**/etc/ssh/ssh_host_rsa_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_ecdsa_key.pub**,这样文件末尾可以反映你的主机名,比如**root@cloud**。然后重启系统保证主机名在系统的每个需要它的角落都生效了。 +然后,编辑ssh服务的公钥文件**/etc/ssh/ssh\_host\_rsa\_key.pub, /etc/ssh/ssh\_host\_dsa\_key.pub, /etc/ssh/ssh\_host\_ecdsa\_key.pub**,这样文件末尾可以反映你的主机名,比如**root@cloud**。然后重启系统保证主机名在系统的每个需要它的角落都生效了。 reboot @@ -103,15 +103,15 @@ apt-get autoremove apt-get install vim -我喜欢使用vim远程编辑配置文件。打开自动语法高亮会很有帮助。添加下面这一行到**~/.vimrc**文件中。 +我喜欢使用vim远程编辑配置文件。打开vim 的自动语法高亮会很有帮助。添加下面这一行到**~/.vimrc**文件中。 syn on -### 设置postfix和dovecot来收发电子邮件 ### +## 设置postfix和dovecot来收发电子邮件 ## apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-mysql mysql-server dovecot-lmtpd postgrey -在[Postfix][27]的配置菜单里,选择**因特网站点**,把系统邮件名设为**jhausse.net**。 +在[Postfix][27]的配置菜单里,选择`Internet Site`,设置这个系统的邮件名称为**jhausse.net**。 现在开始添加一个数据库用于保存主机上管理的域名列表,和每个域名下的用户列表(同时也包括他们各自的密码),以及邮件别名列表(用于从一个地址往另一个地址转发邮件)。 @@ -142,14 +142,14 @@ FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -我们将承载**jhausse.net**域名。如果还需要加入其他域名,也没问题。我们也会为每个域名设置一个邮件管理地址,转寄给**roudy@jhausse.net**。 +这里我们为**jhausse.net**域名提供邮件服务。如果还需要加入其他域名,也没问题。我们也会为每个域名设置一个邮件管理地址(postmaster),转寄给**roudy@jhausse.net**。 mysql> INSERT INTO virtual_domains (`name`) VALUES ('jhausse.net'); mysql> INSERT INTO virtual_domains (`name`) VALUES ('otherdomain.net'); mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('1', 'postmaster', 'roudy@jhausse.net'); mysql> INSERT INTO virtual_aliases (`domain_id`, `source`, `destination`) VALUES ('2', 'postmaster', 'roudy@jhausse.net'); -现在已经添加了一个本地邮件账号**roudy@jhausse.net**。首先,为它生成一个哈希密码: +现在已经添加了一个本地邮件账号**roudy@jhausse.net**。首先,为它生成一个密码的哈希串: doveadm pw -s SHA512-CRYPT @@ -157,7 +157,7 @@ mysql> INSERT INTO `mailserver`.`virtual_users` (`domain_id`, `password`, `email`) VALUES ('1', '$6$YOURPASSWORDHASH', 'roudy@jhausse.net'); -现在我们的域名,别名和用户列表都设置好了,然后开始设置postfix(SMTP服务器,用来发送邮件)。把文件**/etc/postfix/main.cf**替换为下面的内容: +现在我们的域名、别名和用户列表都设置好了,然后开始设置postfix(这是一个SMTP服务器,用来发送邮件)。把文件**/etc/postfix/main.cf**替换为下面的内容: myhostname = cloud.jhausse.net myorigin = /etc/mailname @@ -239,7 +239,7 @@ 如果一切都正常配置了的话,头两个查询应该输出1,第3个查询应该输出**roudy@jhausse.net**,而最后一个应该什么都不输出。 -现在,让我们设置一下dovecot(一个IMAP服务程序,用来在我们的设备上从服务器获取收件箱里的邮件)。编辑文件**/etc/dovecot/dovecot.conf**设置以下参数: +现在,让我们设置一下dovecot(一个IMAP服务程序,用来在我们的设备上从服务器获取收到的邮件)。编辑文件**/etc/dovecot/dovecot.conf**设置以下参数: # Enable installed protocol # !include_try /usr/share/dovecot/protocols.d/*.protocol @@ -253,7 +253,7 @@ [...] first_valid_uid = 0 -这样邮件将被保存到目录/var/mail/domainname/username下。注意下这几个选项散布在配置文件的不同位置,有时已经在那里写好了:我们只需要取消注释。文件里的其他设定选项,可以维持原样。在本文后面还有很多文件需要用同样的方式更新设置。在文件**/etc/dovecot/conf.d/10-auth.conf**里,设置以下参数: +这样邮件将被保存到目录 /var/mail/domainname/username 下。注意下这几个选项散布在配置文件的不同位置,有时已经在那里写好了:我们只需要取消注释即可。文件里的其他设定选项,可以维持原样。在本文后面还有很多文件需要用同样的方式更新设置。在文件**/etc/dovecot/conf.d/10-auth.conf**里,设置以下参数: disable_plaintext_auth = yes auth_mechanisms = plain @@ -366,9 +366,10 @@ 在服务器上,尝试发送邮件给本地用户: telnet localhost 25 + EHLO cloud.jhausse.net MAIL FROM:youremail@domain.com - rcpt to:roudy@jhausse.net + RCPT TO:roudy@jhausse.net data Subject: Hallo! @@ -397,18 +398,18 @@ 554 5.7.1 : Relay access denied -这个没问题:如果服务器能接受这封邮件,那意味着我们架设的postfix是一个对全世界所有垃圾邮件都开放的中继,将完全没法使用。除了'Relay access denied'消息,你也可能会收到这样的响应: +这个没问题:如果服务器能接受这封邮件而不是返回如上的拒绝消息,那意味着我们架设的postfix是一个对全世界所有垃圾邮件都开放的中继,这将完全没法使用。除了'Relay access denied'消息,你也可能会收到这样的响应: 554 5.7.1 Service unavailable; Client host [87.68.61.119] blocked using zen.spamhaus.org; http://www.spamhaus.org/query/bl?ip=87.68.61.119 -意思是你正尝试从一个被标记成垃圾邮件发送者的IP地址连接服务器。我在通过普通的因特网服务提供商(ISP)连接服务器时曾收到过这样的消息。要解决这个问题,可以试着从另一个主机发起连接,比如另外一个你可以SSH登录的主机。另外一种方式是,你可以修改postfix的**main.cf**配置文件,不要使用Spamhous的RBL,重启postfix服务,然后再检查上面的测试是否正常。不管用哪种方式,最重要的是你要确定一个能工作的,因为我们后面马上要测试其他功能。如果你选择了重新配置postfix不使用RBL,别忘了在完成本文后重新开启RBL并重启postfix,以避免收到一些不必要的垃圾邮件。 +意思是你正尝试从一个被标记成垃圾邮件发送者的IP地址连接服务器。我在通过普通的因特网服务提供商(ISP)连接服务器时曾收到过这样的消息。要解决这个问题,可以试着从另一个主机发起连接,比如另外一个你可以SSH登录的主机。另外一种方式是,你可以修改postfix的**main.cf**配置文件,不要使用Spamhous的RBL,重启postfix服务,然后再检查上面的测试是否正常。不管用哪种方式,最重要的是你要确定一个能工作的,因为我们后面马上要测试其他功能。如果你选择了重新配置postfix不使用RBL,别忘了在完成本文后重新开启RBL并重启postfix,以避免收到一些不必要的垃圾邮件。(LCTT 译者注:在国内可以使用 CASA 的 RBL:cblplus.anti-spam.org.cn,参见:http://www.anti-spam.org.cn/ 。) 现在,我们试一下往SMTP端口25发送一封有效的邮件,这是一般正常的邮件服务器用来彼此对话的方式: openssl s_client -connect cloud.jhausse.net:25 -starttls smtp EHLO cloud.jhausse.net MAIL FROM:youremail@domain.com - rcpt to:roudy@jhausse.net + RCPT TO:roudy@jhausse.net 服务器应该有这样的响应 @@ -425,7 +426,7 @@ 4 UID fetch 1:1 (UID RFC822.SIZE FLAGS BODY.PEEK[]) 5 LOGOUT -这里,你应该把mypassword替换为你自己为这个邮件账号设定的密码。如果能正常工作,基本上我们已经拥有一个能接收邮件的邮件服务器了,通过它我们可以在各种设备(PC/笔记本,平板,手机,...)上收取邮件了。但是我们不能把邮件给它发送出去,除非我们自己从服务器发送。现在我们将让postfix为我们转发邮件,但是这个只有成功登录才可以,这是为了保证邮件是由服务器上的某个有效帐号发出来的。要做到这个,我们要打开一个特殊的,全程SSL连接的,SASL鉴权的邮件提交服务。在文件**/etc/postfix/master.cf**里设置下面的参数: +这里,你应该把*mypassword*替换为你自己为这个邮件账号设定的密码。如果能正常工作,基本上我们已经拥有一个能接收邮件的邮件服务器了,通过它我们可以在各种设备(PC/笔记本、平板、手机...)上收取邮件了。但是我们不能把邮件给它发送出去,除非我们自己从服务器发送。现在我们将让postfix为我们转发邮件,但是这个只有成功登录才可以,这是为了保证邮件是由服务器上的某个有效帐号发出来的。要做到这个,我们要打开一个特殊的,全程SSL连接的,SASL鉴权的邮件提交服务。在文件**/etc/postfix/master.cf**里设置下面的参数: submission inet n - - - - smtpd -o syslog_name=postfix/submission @@ -437,7 +438,7 @@ -o smtpd_sasl_security_options=noanonymous -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject_non_fqdn_recipient,reject_unauth_destination -然后重启postfix服务 +然后重启postfix服务: service postfix reload @@ -446,7 +447,7 @@ openssl s_client -connect cloud.jhausse.net:587 -starttls smtp EHLO cloud.jhausse.net -注意一下服务器建议的'250-AUTH PLAIN'功能,在从端口25连接的时候不会生效。 +注意一下服务器建议的'250-AUTH PLAIN'功能,在从端口25连接的时候不会出现。 MAIL FROM:asdf@jkl.net rcpt to:bob@gmail.com @@ -494,13 +495,13 @@ PS:不要忘记再次[试试通过端口25往自己架设的服务器上的帐号发送邮件][29],来验证你已经没有被postgrey阻挡了。 -### 阻止垃圾邮件进入你的收件箱 ### +## 阻止垃圾邮件进入你的收件箱 ## -为了过滤垃圾邮件,我们已经使用了实时黑名单(RBLs)和灰名单(postgrey)。现在我们将增加自适应垃圾邮件过滤来让我们的垃圾邮件过滤能力提高一个等级。这意味着我们将为我们的邮件服务器增加人工智能,这样它就能从经验中学习哪些有件是垃圾哪些不是。我们将使用[dspam][30]来实现这个功能。 +为了过滤垃圾邮件,我们已经使用了实时黑名单(RBL)和灰名单(postgrey)。现在我们将增加自适应垃圾邮件过滤来让我们的垃圾邮件过滤能力提高一个等级。这意味着我们将为我们的邮件服务器增加人工智能,这样它就能从经验中学习哪些邮件是垃圾哪些不是。我们将使用[dspam][30]来实现这个功能。 apt-get install dspam dovecot-antispam postfix-pcre dovecot-sieve -dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误分类了之后让dovecot重新更新垃圾邮件过滤器。基本上,我们所需要做的就只是把邮件放进或拿出垃圾箱。dovecot-antispam将负责调用dspam来更新过滤器。至于postfix-pcre和dovecot-sieve,我们将分别用它们来把接收的邮件递给垃圾邮件过滤器以及自动把垃圾邮件放入用户的垃圾箱。 +dovecot-antispam是一个安装包,可以在我们发现有邮件被dspam误分类了之后让dovecot重新更新垃圾邮件过滤器。基本上,我们所需要做的就只是把邮件放进或拿出垃圾箱。dovecot-antispam将负责调用dspam来更新过滤器。至于postfix-pcre和dovecot-sieve,我们将分别用它们来把接收的邮件传递给垃圾邮件过滤器以及自动把垃圾邮件放入用户的垃圾箱。 在配置文件**/etc/dspam/dspam.conf**里,为以下参数设置相应的值: @@ -535,7 +536,7 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 dovecot unix - n n - - pipe flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} -现在我们将告诉postfix通过dspam来过滤所有提交给服务器端口25(一般的SMTP通信)的新邮件,除非该邮件是从服务器本身发出(permit_mynetworks)。注意下我们通过SASL鉴权提交给postfix的邮件不会通过dspam过滤,因为我们在前面部分里为这种方式设定了独立的提交服务。编辑文件**/etc/postfix/main.cf**将选项**smtpd_client_restrictions**改为如下内容: +现在我们将告诉postfix通过dspam来过滤所有提交给服务器端口25(一般的SMTP通信)的新邮件,除非该邮件是从服务器本身发出(permit\_mynetworks)。注意下我们通过SASL鉴权提交给postfix的邮件不会通过dspam过滤,因为我们在前面部分里为这种方式设定了独立的提交服务。编辑文件**/etc/postfix/main.cf**将选项**smtpd\_client\_restrictions**改为如下内容: smtpd_client_restrictions = permit_mynetworks, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, check_client_access pcre:/etc/postfix/dspam_filter_access @@ -544,11 +545,11 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 # For DSPAM, only scan one mail at a time dspam_destination_recipient_limit = 1 -现在我们需要指定我们定义的过滤器。基本上,我们将告诉postfix把所有邮件(/./)通过unix套接字发给dspam。创建一个新文件**/etc/postfix/dspam_filter_access**并把下面一行写进去: +现在我们需要指定我们定义的过滤器。基本上,我们将告诉postfix把所有邮件(如下用 /./ 代表)通过unix套接字发给dspam。创建一个新文件**/etc/postfix/dspam\_filter\_access**并把下面一行写进去: /./ FILTER dspam:unix:/run/dspam/dspam.sock -这是postfix部分的配置。现在让我们为dovecot设置垃圾过滤。在文件**/etc/dovecot/conf.d/20-imap.conf**里,修改**imap mail_plugin**插件参数为下面的方式: +这是postfix部分的配置。现在让我们为dovecot设置垃圾过滤。在文件**/etc/dovecot/conf.d/20-imap.conf**里,修改**imap mail\_plugin**插件参数为下面的方式: mail_plugins = $mail_plugins antispam @@ -581,7 +582,7 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 sieve_default = /etc/dovecot/default.sieve -什么是sieve以及为什么我们需要为所有用户设置一个默认脚本?sieve可以在IMAP服务器上为我们自动处理任务。在我们的例子里,我们想让所有被确定为垃圾的邮件会被移到垃圾箱而不是收件箱里。我们希望这是服务器上所有用户的默认行为;这是为什么我们把这个脚本设为默认脚本。现在让我们来创建这个脚本,建立一个新文件**/etc/dovecot/default.sieve**并写入以下内容: +什么是sieve以及为什么我们需要为所有用户设置一个默认脚本?sieve可以在IMAP服务器上为我们自动处理任务。在我们的例子里,我们想让所有被确定为垃圾的邮件移到垃圾箱而不是收件箱里。我们希望这是服务器上所有用户的默认行为;这是为什么我们把这个脚本设为默认脚本。现在让我们来创建这个脚本,建立一个新文件**/etc/dovecot/default.sieve**并写入以下内容: require ["regex", "fileinto", "imap4flags"]; # Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox @@ -603,7 +604,7 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 chmod 0640 default.sieve chmod 0750 default.svbin -最后,我们需要修改dspam要读取的两个postfix配置文件的权限: +最后,我们需要修改dspam需要读取的两个postfix配置文件的权限: chmod 0644 /etc/postfix/dynamicmaps.cf /etc/postfix/main.cf @@ -669,21 +670,21 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 很好!你现在已经为你服务器上的用户配置好自适应垃圾邮件过滤。当然,每个用户将需要在开始的几周里培训过滤器。要标记一则信息为垃圾,只需要在你的任意设备(电脑,平板,手机)上将它移动到叫“垃圾箱”或“废纸篓”的目录里。否则它将被标记为有用。 -### 确保你发出的邮件能通过垃圾邮件过滤器 ### +## 确保你发出的邮件能通过垃圾邮件过滤器 ## 这个部分我们的目标是让我们的邮件服务器能尽量干净地出现在世界上,并让垃圾邮件发送者们更难以我们的名义发邮件。作为附加效果,这也有助于让我们的邮件能通过其他邮件服务器的垃圾邮件过滤器。 -#### 发送者策略框架 #### +### 发送者策略框架(SPF) ### 发送者策略框架(SPF)是你添加到自己服务器区域里的一份记录,声明了整个因特网上哪些邮件服务器能以你的域名发邮件。设置非常简单,使用[microsoft.com][31]上的SPF向导来生成你的SPF记录,然后作为一个TXT记录添加到自己的服务器区域里。看上去像这样: jhausse.net. 300 IN TXT v=spf1 mx mx:cloud.jhausse.net -all -#### 反向PTR #### +### 反向PTR ### 我们[之前][32]在本文里讨论过这个问题,建议你为自己的服务器正确地设置反向DNS,这样对服务器IP地址的反向查询能返回你服务器的实际名字。 -#### OpenDKIM #### +### OpenDKIM ### 当我们激活[OpenDKIM][33]后,postfix会用密钥为每封发出去的邮件签名。然后我们将把这个密钥存储在DNS域中。这样的话,世界上任意一个邮件服务器都能够检验邮件是否真的是我们发出的,或是由垃圾邮件发送者伪造的。让我们先安装opendkim: @@ -710,7 +711,7 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 UMask 022 UserID opendkim:opendkim -我们还需要几个额外的文件,将保存在目录**/etc/opendkim**里: +我们还需要几个额外的文件,需保存在目录**/etc/opendkim**里: mkdir -pv /etc/opendkim/ cd /etc/opendkim/ @@ -740,7 +741,7 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 cat mail.txt -然后把它作为一个TXT记录添加到区域文件里,应该是这样的 +然后把它作为一个TXT记录添加到区域文件里,应该是类似这样的 mail._domainkey.cloud1984.net. 300 IN TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqG... @@ -751,30 +752,30 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 non_smtpd_milters = $smtpd_milters milter_default_action = accept -然后重启相关服务 +然后重启相关服务: service postfix reload service opendkim restart -现在让我们测试一下能找到我们的OpenDKIM公钥并和私钥匹配: +现在让我们测试一下是否能找到我们的OpenDKIM公钥并和私钥匹配: opendkim-testkey -d jhausse.net -s mail -k mail.private -vvv -这个应该返回 +这个应该返回: opendkim-testkey: key OK 这个你可能需要等一会直到域名服务器重新加载该区域(对于Linode,每15分钟会更新一次)。你可以用**dig**来检查区域是否已经重新加载。 -如果这个没问题,让我们测试一下其他服务器能验证我们的OpenDKIM签名和SPF记录。要做这个,我们可以用[Brandon Checkett的邮件测试][34]。发送一封邮件到[Brandon的网页][34]上提供的测试地址,我们可以在服务器上运行下面的命令 +如果这个没问题,让我们测试一下其他服务器能验证我们的OpenDKIM签名和SPF记录。要做这个,我们可以用[Brandon Checkett的邮件测试系统][34]。发送一封邮件到[Brandon的网页][34]上提供的测试地址,我们可以在服务器上运行下面的命令 mail -s CloudCheck ihAdmTBmUH@www.brandonchecketts.com 在Brandon的网页上,我们应该可以在'DKIM Signature'部分里看到**result = pass**的文字,以及在'SPF Information'部分看到**Result: pass**的文字。如果我们的邮件通过这个测试,只要不加-t开关重新生成OpenDKIM密钥,上传新的密钥到区域文件里,然后重新测试检查是否仍然可以通过这些测试。如果可以的话,恭喜!你已经在你的服务器上成功配置好OpenDKIM和SPF了! -### 使用Owncloud提供日历,联系人,文件服务并通过Roundcube配置网页邮件 ### +## 使用Owncloud提供日历,联系人,文件服务并通过Roundcube配置网页邮件 ## -既然我们已经拥有了一流的邮件服务器,让我们再为它增加在云上保存通讯录,日程表和文件的能力。这些是[Owncloud][35]所提供的非常赞的服务。在这个弄好后,我们还会设置一个网页邮件,这样就算你没带任何电子设备出去旅行时,或者说在你的手机或笔记本没电的情况下,也可以检查邮件。 +既然我们已经拥有了一流的邮件服务器,让我们再为它增加在云上保存通讯录,日程表和文件的能力。这些是[Owncloud][35]所提供的非常赞的服务。在这个弄好后,我们还会设置一个网页邮件,这样就算你没带任何电子设备出去旅行时,或者说在你的手机或笔记本没电的情况下,也可以通过网吧来检查邮件。 安装Owncloud非常直观,而且在[这里][36]有非常好的介绍。在Debian系统里,归根结底就是把owncloud的仓库添加到apt源里,下载Owncloud的发行密钥并安装到apt钥匙链中,然后通过apt-get安装Owncloud: @@ -784,20 +785,20 @@ dovecot-antispam是一个安装包,可以在我们发现有邮件被dspan误 apt-get update apt-get install apache2 owncloud roundcube -在有提示的时候,选择**dbconfig**然后说你希望**roundcube**使用**mysql**。然后,提供一下mysql的root密码并为roundcube的mysql用户设置一个漂亮的密码。然后,按如下方式编辑roundcube的配置文件**/etc/roundcube/main.inc.php**,这样登录roundcube默认会使用你的IMAP服务器: +在有提示的时候,选择**dbconfig**并设置**roundcube**使用**mysql**。然后,提供一下mysql的root密码并为roundcube的mysql用户设置一个漂亮的密码。然后,按如下方式编辑roundcube的配置文件**/etc/roundcube/main.inc.php**,这样登录roundcube默认会使用你的IMAP服务器: $rcmail_config['default_host'] = 'ssl://localhost'; $rcmail_config['default_port'] = 993; -现在我们来配置一下apache2网页服务器增加SSL支持,这样我们可以和Owncloud和Roundcube对话时使用加密的方式传输我们的密码和数据。让我们打开Apache的ssl模块: +现在我们来配置一下apache2网页服务器增加SSL支持,这样我们可以和Owncloud和Roundcube对话时使用加密的方式传输我们的密码和数据。让我们打开Apache的SSL模块: a2enmod ssl 然后编辑文件**/etc/apache2/ports.conf**并设定以下参数: -NameVirtualHost *:80 -Listen 80 -ServerName www.jhausse.net + NameVirtualHost *:80 + Listen 80 + ServerName www.jhausse.net # If you add NameVirtualHost *:443 here, you will also have to change @@ -969,9 +970,9 @@ ServerName www.jhausse.net a2ensite default default-ssl roundcube service apache2 restart -关于网页邮件,可以通过网址**https://webmail.jhausse.net**来访问,基本上能工作。之后使用邮箱全名(例如roudy@jhausse.net)和在本文一开始在邮件服务器数据库里设定的密码登录。第一次连接成功,浏览器会警告说证书没有可靠机构的签名。这个没什么关系,只要添加一个例外。 +关于网页邮件,可以通过网址**https://webmail.jhausse.net**来访问,基本上能工作。之后使用邮箱全名(例如roudy@jhausse.net)和在本文一开始在邮件服务器数据库里设定的密码登录。第一次连接成功,浏览器会警告说证书没有可靠机构的签名。这个没什么关系,只要添加一个例外即可。 -最后但很重要的是,我们将通过把以下内容你哦个写入**/etc/apache2/sites-available/owncloud**来为Owncloud创建一个虚拟主机。 +最后但很重要的是,我们将通过把以下内容写入到**/etc/apache2/sites-available/owncloud**来为Owncloud创建一个虚拟主机。 @@ -1040,33 +1041,33 @@ ServerName www.jhausse.net 就这些了!现在你已经拥有自己的Google Drive,日程表,联系人,Dropbox,以及Gmail!好好享受下新鲜恢复保护的隐私吧!:-) -### 在云上同步你的设备 ### +## 在云上同步你的设备 ## -要同步你的邮件,你可以只是用你喜欢的邮件客户端:Android或iOS自带的默认邮件应用,[k9mail][37],或者电脑上的Thunderbird。或者你也可以使用我们设置好的网页邮件。 +要同步你的邮件,你只需用你喜欢的邮件客户端即可:Android或iOS自带的默认邮件应用,[k9mail][37],或者电脑上的Thunderbird。或者你也可以使用我们设置好的网页邮件。 在Owncloud的文档里描述了如何与云端同步你的日程表和联系人。在Android系统中,我用的是CalDAV-Sync,CardDAV-Sync应用桥接了手机上Android自带日历以及联系人应用和Owncloud服务器。 对于文件,有一个叫Owncloud的Android应用可以访问你手机上的文件,然后自动把你拍的图片和视频上传到云中。在你的Mac/PC上访问云端文件也很容易,在[Owncloud文档里有很好的描述][38]。 -### 最后一点提示 ### +## 最后一点提示 ## 在上线后的前几个星期里,最好每天检查一下日志**/var/log/syslog**和**/var/log/mail.log**以保证一切都在顺利运行。在你邀请其他人(朋友,家人,等等)加入你的服务器之前这很重要。他们信任你能很好地架设个人服务器维护他们的数据,但是如果服务器突然崩溃会让他们很失望。 -要添加另一个邮件用户,只要在数据库**mailserver**的**virtual_users**表中增加一行。 +要添加另一个邮件用户,只要在数据库**mailserver**的**virtual\_users**表中增加一行。 -要添加一个域名,只要在**virtual_domains**表中增加一行。然后更新**/etc/opendkim/SigningTable**为发出的邮件签名,上传OpenDKIM密钥到服务器区域,然后吃哦更年期OpenDKIM服务。 +要添加一个域名,只要在**virtual_domains**表中增加一行。然后更新**/etc/opendkim/SigningTable**为发出的邮件签名,上传OpenDKIM密钥到服务器区域,然后重启OpenDKIM服务。 Owncloud有自己的用户数据库,在用管理员帐号登录后可以修改。 -最后,万一在服务器临时崩溃的时候想办法找解决方案很重要。比如说,在服务器恢复之前你的邮件应该送往哪儿?一种方式是找个能帮你做备份MX的朋友,同时你也可以当他的备份MX(看下postfix的配置文件**main.cf**里**relay_domains**和**relay_recipient_maps**里的设定)。与此类似,如果你的服务器被破解然后一个坏蛋把你所有文件删了怎么办?对于这个,考虑增加一个常规备份系统就很重要了。Linode提供了备份选项。在1984.is里,我用crontabs和scp做了一个基本但管用的自动备份系统。 +最后,万一在服务器临时崩溃的时候想办法找解决方案很重要。比如说,在服务器恢复之前你的邮件应该送往哪儿?一种方式是找个能帮你做备份MX的朋友,同时你也可以当他的备份MX(看下postfix的配置文件**main.cf**里**relay\_domains**和**relay\_recipient\_maps**里的设定)。与此类似,如果你的服务器被破解然后一个坏蛋把你所有文件删了怎么办?对于这个,考虑增加一个常规备份系统就很重要了。Linode提供了备份选项。在1984.is里,我用crontabs和scp做了一个基本但管用的自动备份系统。 -------------------------------------------------------------------------------- via: https://www.howtoforge.com/tutorial/build-your-own-cloud-on-debian-wheezy/ -作者:[Roudy Jhausse ][a] +作者:[Roudy Jhausse][a] 译者:[zpl1025](https://github.com/zpl1025) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a897b9b3bec7e707be02bbc86525e20deb09dfe3 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 26 Mar 2015 10:04:15 +0800 Subject: [PATCH 662/725] PUB:20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7 @geekpi --- ... To Single Network Interface Card On CentOS 7.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) rename {translated/tech => published}/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md (92%) diff --git a/translated/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md b/published/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md similarity index 92% rename from translated/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md rename to published/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md index 3dec583608..31a10d3923 100644 --- a/translated/tech/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md +++ b/published/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md @@ -1,6 +1,6 @@ -Linux 基础:在CentOS 7上给一个网卡分配多个IP地址 +在CentOS 7上给一个网卡分配多个IP地址 ================================================================================ -有时你也许想要给一个网卡多个地址。你该怎么做呢?另外买一个网卡来分配地址?不用这么做(只要在小型网络中)。我们现在可以再CentOS/RHEL 7中给一个网卡分配多个ip地址。想知道怎么做么?好的,跟随我,这并不难。 +有时你也许想要给一个网卡多个地址。你该怎么做呢?另外买一个网卡来分配地址?在小型网络中其实不用这么做。我们现在可以在CentOS/RHEL 7中给一个网卡分配多个ip地址。想知道怎么做么?好的,跟随我,这并不难。 首先,让我们找到网卡的IP地址。在我的CentOS 7服务器中,我只使用了一个网卡。 @@ -83,7 +83,6 @@ Linux 基础:在CentOS 7上给一个网卡分配多个IP地址 类似地,你可以加入更多的ip地址。 -Finally, save and close the file. Restart network service to take effect the changes. 最后,保存并退出文件。重启网络服务来使更改生效。 systemctl restart network @@ -172,11 +171,9 @@ Finally, save and close the file. Restart network service to take effect the cha IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" -你可以看到我已经添加一个A类地址(10.0.0.1)并且前缀是16 +你可以看到我已经添加一个A类地址(10.0.0.1)并且前缀是16。 -保存并退出文件。重启网络服务, - -接着,ping新增的地址: +保存并退出文件。重启网络服务,接着,ping新增的地址: ping -c 4 10.0.0.1 @@ -202,7 +199,7 @@ via: http://www.unixmen.com/linux-basics-assign-multiple-ip-addresses-single-net 作者:[SK][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From d96678f024851ae993b350a242414b7af9f50bf0 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Thu, 26 Mar 2015 10:21:41 +0800 Subject: [PATCH 663/725] translating --- ...20150323 How to enable ssh login without entering password.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20150323 How to enable ssh login without entering password.md b/sources/tech/20150323 How to enable ssh login without entering password.md index 40a4085f01..64449b7228 100644 --- a/sources/tech/20150323 How to enable ssh login without entering password.md +++ b/sources/tech/20150323 How to enable ssh login without entering password.md @@ -1,3 +1,4 @@ +[translating by KayGuoWhu] How to enable ssh login without entering password ================================================================================ Assume that you are a user "aliceA" on hostA, and wish to ssh to hostB as user "aliceB", without entering her password on hostB. You can follow this guide to **enable ssh login without entering a password**. From 638a903f62962dc28b05be4165697a467b3006c3 Mon Sep 17 00:00:00 2001 From: dbarobin Date: Thu, 26 Mar 2015 14:06:50 +0800 Subject: [PATCH 664/725] dbarobin translating --- .../20150324 4 Tools to Securely Delete Files from Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md b/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md index f66f54247d..7012e405ab 100644 --- a/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md +++ b/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md @@ -1,3 +1,5 @@ +dbarobin translating + 4 Tools to Securely Delete Files from Linux ================================================================================ Any computer user with normal level skill set knows that any data removed from computer system can be recovered later with little bit of efforts. This is a good thing in the scenario when you have accidentally deleted your critical data. But in most cases, you don't want your private data to be recovered easily. Whenever we remove anything, the operating system deletes just the index of the particular data. It means that data is still there somewhere on the disk, this method is insecure, as any smart computer hacker can use any good data recovery tool to easily recover your deleted data. Linux users utilizes the well know “**rm**” command to remove data from their operating system, but “rm” command works in the conventional fashion. Data removed using this command can be recovered by special file recovery tools. @@ -127,4 +129,4 @@ via: http://linoxide.com/security/delete-files-permanatly-linux/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://linoxide.com/author/arunrz/ \ No newline at end of file +[a]:http://linoxide.com/author/arunrz/ From 1821889c943ba9dd6be0353580d3cd0222095346 Mon Sep 17 00:00:00 2001 From: ZTinoZ Date: Thu, 26 Mar 2015 14:13:29 +0800 Subject: [PATCH 665/725] Translating by ZTinoZ --- ...150324 How to Host Open Source Code Repository in github.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150324 How to Host Open Source Code Repository in github.md b/sources/tech/20150324 How to Host Open Source Code Repository in github.md index 8749f0b0e3..267486f211 100644 --- a/sources/tech/20150324 How to Host Open Source Code Repository in github.md +++ b/sources/tech/20150324 How to Host Open Source Code Repository in github.md @@ -1,3 +1,4 @@ +Translating by ZTinoZ How to Host Open Source Code Repository in github ================================================================================ Hi all, today we will be learning how to host Source Code of Open Source Software in the repository hosted by github.com . GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features. It provides a workplace to host powerful collaboration, code review, and code management for open source and private projects. Unlike Git, which is strictly a command-line tool, GitHub provides a web-based graphical interface and desktop as well as mobile integration. GitHub offers both paid plans for private repositories and free accounts, which are usually used to host open-source software projects. @@ -110,4 +111,4 @@ via: http://linoxide.com/usr-mgmt/host-open-source-code-repository-github/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunp/ -[1]:http://github.com/ \ No newline at end of file +[1]:http://github.com/ From 6d0962ade66a83694c0e012e06f510c8bfab7576 Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Thu, 26 Mar 2015 15:23:58 +0800 Subject: [PATCH 666/725] =?UTF-8?q?=E5=B7=B2=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Linux Based Mini PC You Can Buy In 2015.md | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md index c3aa5b76b5..bbb7efa05c 100644 --- a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md +++ b/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md @@ -1,24 +1,23 @@ -2015你可以买的一款基于Linux的迷你PC +2015年你可以买的四款基于Linux的迷你PC ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Linux_Based_Mini_PC.jpg) -在我看来迷你PC将在不久的将来会替代传统桌面电脑。传统桌面的有一个像送风机那样占据大量空间的风扇。迷你PC,在另一方面说很小巧和紧凑。通常是4″或者5″大小,可以轻易地放在桌子上。 +在我看来迷你PC将在不久的将来会替代传统桌面电脑。传统桌面的有一个像吹风机那样占据大量空间的风扇。迷你PC,在另一方面说很小巧和紧凑。通常是4″或者5″大小,可以轻易地放在桌子上。 -不仅如此,这些迷你PC的无风扇设计是一个好处。当然,你可以购买无风扇的常规电脑,但是空间占用仍然是一个问题。对我个人来说,我觉得迷你PC外观上看着很可爱。如果你不是一个游戏玩家也不想买新的桌面PC,我强烈建议你**购买一个基于Linux的迷你PC**。 +不仅如此,这些迷你PC的无风扇设计是一个优点。当然,你可以购买无风扇的常规电脑,但是空间占用仍然是一个问题。对我个人来说,我觉得迷你PC外观上看着很可爱。如果你不是一个游戏玩家也不想买新的桌面PC,我强烈建议你**购买一款基于Linux的迷你PC**。 -如果你考虑我的建议买一个,那么你或许想知道该买哪款。不要担心,这篇文章我们会介绍**四款你可以在2015购买的基于Linux的迷你PC**。 +如果你考虑我的建议,那么你或许想知道该买哪款。不要担心,这篇文章我们会介绍**2015年你可以购买的四款基于Linux的迷你PC**。 ### 基于Linux的迷你PC ### -请注意这些PC可能还不能下单。它们中有些还刚刚公布,在不久的将来才会面向公众出售。 +需要注意的是,这其中的一些PC可能还不能下单。它们中有些还刚刚公布,在不久的将来才会面向公众出售。 #### 1. System76出品的Meerkat #### ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/system76-meerkat.jpg) -[System76][1] is a computer manufacturer exclusively dealing with only Ubuntu based desktop, laptops and servers. [System76 announced an Ubuntu based mini PC Meerkat][2] last week. Let’s take a quick look at its specification: -[System76][1] 是一家仅出品基于Ubuntu电脑、笔记本、服务器的电脑生产商。[System76在上周宣布了一款基于Ubuntu的迷你PC][2]。让我看一下它的规格: +[System76][1] 是一家仅出品基于Ubuntu电脑、笔记本、服务器的电脑生产商。[System76在上周公布了一款基于Ubuntu的迷你PC][2]。让我看一下它的规格: **规格** @@ -43,7 +42,7 @@ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/mintbox-mini.jpeg) -[Compulab][3]将它的旗舰产品基于Linux Mint的桌面设备成了[Mintbox Mini][4]。紧凑的版本在4″大小。更多的细节如下: +[Compulab][3]将它基于Linux Mint的期间PC设备压缩,从Mintbox变为[Mintbox Mini][4]。这个紧凑的版本大小在4″左右。更多的细节如下: **规格** @@ -59,19 +58,17 @@ **价格** -$300起售 +$300左右起售 **发售日期** -2015第二季度 +2015年第二季度 #### 3. Compulab出品的Utilite2 #### ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Utilite2-ARM-PC.jpg) -It’s not that Compulab has stuck with Linux Mint only. It announced an ARM desktop PC running Ubuntu in last December. With a size of 3.4″x2.3″, [Utilite2][5] has modest feature and modest price. -Compulab并不是坚持用Linux Mint的。它在去年12月宣布了一款运行Ubuntu的ARM桌面PC。大小是3.4″x2.3″,[Utilite2][5]有最现代的特性和价格 - +Compulab并不仅仅被Linux Mint所限制。它在去年12月公布了一款运行Ubuntu的ARM桌面PC。大小是3.4″x2.3″,[Utilite2][5]有最适合的性价比。 **规格** @@ -85,20 +82,19 @@ Compulab并不是坚持用Linux Mint的。它在去年12月宣布了一款运行 **价格** -常规版售价$192、带硬盘售价$229。邮费另付。 +常规版售价$192、带硬盘售价$229。运费另付。 **发售日期** 现在就可购买。运送将花费4周。 -#### Think Penguin出品的Penguin Pocket Wee #### +#### 4. Think Penguin出品的Penguin Pocket Wee #### ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Think_Penguin_Pocket_Wee.jpeg) -[Think Penguin][6]是一家开源硬件生产商。在迷你PC领域,它提供了[Penguin Pocket Wee][7]。大小是4.6″x 4.4″x 1.4″ ,, Penguin Pocket Wee提供了大量的配置。你可以选择处理器、存储、网卡等。你可以选择购买预装你喜欢的Linux发行版,默认系统是Ubuntu。 +[Think Penguin][6]是一家开源硬件生产商。在迷你PC领域,它提供了[Penguin Pocket Wee][7]。大小是4.6″x 4.4″x 1.4″ ,, Penguin Pocket Wee为你提供了大量的配置。你可以选择处理器、存储、网卡等。你可以选择购买预装你喜欢的Linux发行版,默认系统是Ubuntu。 -The general configuration is as following: -下面的默认的配置 +下面是默认的配置: - Intel Core i3 或者 i5处理器,最高支持1080p视频 - 最高扩展至 16GB 的 DDR3内存 @@ -110,18 +106,17 @@ The general configuration is as following: **价格** -Basic model starts at $499 and it can go up to $1000 based on the configuration you select. -基础版本$499起售,根据你的配置最大是$1000。 +基础版本$499起售,根据你选择的配置最高价格是$1000。 **发售日期** -现在就可下订单。该公司在美国和英国也有办公司,所以应也可以运送到南美和欧洲。 +现在就可下订单。该公司在美国和英国也有办公地点,所以应也可以运送到南美和欧洲。 ### 你会选哪种? ### 我故意没有介绍[Raspberry Pi 2][8]或者其他Linux微电脑如[Intel的电脑棒][9]。原因是我不认为这些微电脑属于迷你PC的范畴。 -你怎么看?你想用迷你PC代替你的桌面PC么?是不是还有我没有在**最好的基于Linux的迷你PC**列出的PC?分享你们的观点吧。 +你怎么看?你想用迷你PC代替你的桌面PC么?是不是还有我没有在**基于Linux的最好的迷你PC**列表里列出的PC?在评论区分享你们的观点吧。 -------------------------------------------------------------------------------- @@ -129,7 +124,7 @@ via: http://itsfoss.com/4-linux-based-mini-pc-buy-2015/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[Caroline](https://github.com/carolinewuyan) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2c629f8c525c7b6245cec3303b8b2e1300e8919c Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 26 Mar 2015 15:02:22 +0800 Subject: [PATCH 667/725] PUB:20150127 How to limit network bandwidth on Linux @FSSlc --- ...How to limit network bandwidth on Linux.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) rename {translated/tech => published}/20150127 How to limit network bandwidth on Linux.md (55%) diff --git a/translated/tech/20150127 How to limit network bandwidth on Linux.md b/published/20150127 How to limit network bandwidth on Linux.md similarity index 55% rename from translated/tech/20150127 How to limit network bandwidth on Linux.md rename to published/20150127 How to limit network bandwidth on Linux.md index cc1efc2aef..5be2501e58 100644 --- a/translated/tech/20150127 How to limit network bandwidth on Linux.md +++ b/published/20150127 How to limit network bandwidth on Linux.md @@ -1,12 +1,12 @@ -怎样在 Linux 中限制网络带宽 +怎样在 Linux 中限制网络带宽使用 ================================================================================ -假如你经常在 Linux 桌面上运行多个网络应用,或在家中让多台电脑共享带宽;(这时,)你可能想更好地控制带宽的使用。否则,当你使用下载器下载一个大文件时,交互式 SSH 会话可能会变得缓慢以至不可用;或者当你通过 Dropbox 来同步一个大文件夹时,你的室友可能会抱怨在她的电脑上,视频流变得断断续续。 +假如你经常在 Linux 桌面上运行多个网络应用,或在家中让多台电脑共享带宽;那么你可能想更好地控制带宽的使用。否则,当你使用下载器下载一个大文件时,交互式 SSH 会话可能会变得缓慢以至不可用;或者当你通过 Dropbox 来同步一个大文件夹时,你的室友可能会抱怨在她的电脑上,视频流变得断断续续。 -在本教程中,我将为你描述两种 在 Linux 中限制网络流量速率的不同方法。 +在本教程中,我将为你描述两种在 Linux 中限制网络流量速率的不同方法。 ### 在 Linux 中限制一个应用的速率 ### -限制网络流量速率的一种方法是通过一个名为[trickle][1]的命令行工具。通过在程序运行时,预先加载一个 速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 关于 trickle 命令的一个很好的特征是 它仅在用户空间中运行,这意味着,你不必需要 root 权限来达到限制一个程序的带宽使用的目的。为了与 trickle 程序兼容,这个特定程序必须使用没有静态链接库的套接字接口。当你想对一个不具有内置带宽控制功能的程序进行速率限制时,trickle 可以帮得上忙。 +限制网络流量速率的一种方法是通过一个名为[trickle][1]的命令行工具。通过在程序运行时,预先加载一个速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 trickle 命令有一个很好的特性是它仅在用户空间中运行,这意味着,你不必需要 root 权限就可以限制一个程序的带宽使用。要能使用 trickle 程序控制程序的带宽,这个程序就必须使用非静态链接库的套接字接口。当你想对一个不具有内置带宽控制功能的程序进行速率限制时,trickle 可以帮得上忙。 在 Ubuntu,Debian 及其衍生发行版中安装 trickle : @@ -20,10 +20,10 @@ $ sudo apt-get install trickle $ sudo yum install trickle ``` -trickle 的基本使用方法如下。仅需简单地把 trickle 命令(带有速率参数)放在你想运行的命令之前。 +trickle 的基本使用方法如下。仅需简单地把 trickle 命令(及速率参数)放在你想运行的命令之前。 ``` -$ trickle -d -u +$ trickle -d -u ``` 这就可以将 `` 的下载和上传速率限定为特定值(单位 KBytes/s)。 @@ -34,27 +34,27 @@ $ trickle -d -u $ trickle -u 100 scp backup.tgz alice@remote_host.com: ``` -如若你想,你可以使用下面的命令为你的 Firefox 浏览器设定最大下载速率(e.g. , 300 KB/s),通过产生一个[自定义启动器][3]的方式。 +如若你想,你可以通过创建一个[自定义启动器][3]的方式,使用下面的命令为你的 Firefox 浏览器设定最大下载速率(例如, 300 KB/s)。 ``` trickle -d 300 firefox %u ``` -最后, trickle 也可以 以守护进程模式运行,在该模式下,它将会限制所有通过 trickle 启动且正在运行的程序的总的带宽和。 启动 trickle 使其作为一个守护进程(i.e., trickled): +最后, trickle 也可以以守护进程模式运行,在该模式下,它将会限制所有通过 trickle 启动且正在运行的程序的总带宽之和。 启动 trickle 使其作为一个守护进程(例如, trickled): ``` $ sudo trickled -d 1000 ``` -一旦 trickled 守护进程在后台运行,你便可以通过 trickle 命令来启动其他程序。假如你通过 trickle 启动一个程序,那么这个程序的最大下载速率将是 1000 KB/s, 假如你再通过 trickle 启动了另一个程序,则每个程序的(下载)速率极限将会被限制为 500 KB/s, 等等。 +一旦 trickled 守护进程在后台运行,你便可以通过 trickle 命令来启动其他程序。假如你通过 trickle 启动一个程序,那么这个程序的最大下载速率将是 1000 KB/s, 假如你再通过 trickle 启动了另一个程序,则每个程序的(下载)速率极限将会被限制为 500 KB/s,等等。 ### 在 Linux 中限制一个网络接口的速率 ### -另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux 有一个工具来为你做这件事。[wondershaper][4]恰好执行限制网络接口速率的任务。 +另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux 有一个工具来为你做这件事。[wondershaper][4]就是干这个的。 -wondershaper 实际上是一个 shell 脚本,它使用 [tc][5] 来定义流量调整命令,使用 QoS 来处理特定的网络接口。通过放置被赋予不同的优先级的传出流量在一个队列中,达到限制传出流量速率的目的, 而传入流量通过丢包的方式来达到速率限制的目的。 +wondershaper 实际上是一个 shell 脚本,它使用 [tc][5] 来定义流量调整命令,使用 QoS 来处理特定的网络接口。外发流量通过放在不同优先级的队列中,达到限制传出流量速率的目的;而传入流量通过丢包的方式来达到速率限制的目的。 -事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如SSH 的低延迟。同样的,它还确保批量上传(e.g. , Dropbox 的同步)不会使得下载“窒息”,反之亦然。 +事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如 SSH 的低延迟。同样的,它还会控制批量上传(例如, Dropbox 的同步)不会使得下载“窒息”,反之亦然。 在 Ubuntu Debian 及其衍生发行版本 中安装 wondershaper: @@ -62,9 +62,9 @@ wondershaper 实际上是一个 shell 脚本,它使用 [tc][5] 来定义流量 $ sudo apt-get install wondershaper ``` -在 Fdora 或 CentOS/RHEL (带有 [EPEL 软件仓库][2]) 中安装 wondershaper:(注:这里 链接 2 和 6 一样,可以删除其中之一) +在 Fdora 或 CentOS/RHEL (带有 [EPEL 软件仓库][2]) 中安装 wondershaper: -`` +``` $ sudo yum install wondershaper ``` @@ -90,7 +90,7 @@ $ sudo wondershaper clear eth0 ### 总结 ### -在本教程中,我介绍了两种不同的方法,来达到如何在 Linux 桌面环境中,控制每个应用或每个接口的带宽使用的目的。 这些工具对用户都及其友好,都为用户提供了一个快速且容易的方式来调整或限制流量。 对于那些想更多地了解如何在 Linux 中进行速率控制的读者,请参考 [the Linux bible][7]. +在本教程中,我介绍了两种不同的方法,来达到如何在 Linux 桌面环境中,控制每个应用或每个接口的带宽使用的目的。 这些工具的使用都很简单,都为用户提供了一个快速且容易的方式来调整或限制流量。 对于那些想更多地了解如何在 Linux 中进行速率控制的读者,请参考 [the Linux bible][7]. -------------------------------------------------------------------------------- @@ -98,15 +98,15 @@ via: http://xmodulo.com/limit-network-bandwidth-linux.html 作者:[Dan Nanni][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://xmodulo.com/author/nanni [1]:http://monkey.org/~marius/trickle -[2]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[2]:http://linux.cn/article-2324-1.html [3]:http://xmodulo.com/create-desktop-shortcut-launcher-linux.html [4]:http://lartc.org/wondershaper/ [5]:http://lartc.org/manpages/tc.txt -[6]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[6]:http://linux.cn/article-2324-1.html [7]:http://www.lartc.org/lartc.html From 7f70e58a04f43ca03d744fa0b5bea8979ec5b1ef Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 26 Mar 2015 15:08:29 +0800 Subject: [PATCH 668/725] PUB:20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability @geekpi --- ... To Protect Ubuntu Server Against the GHOST Vulnerability.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename {translated/tech => published}/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md (97%) diff --git a/translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md b/published/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md similarity index 97% rename from translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md rename to published/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md index 38b7c955d3..243c4212d0 100644 --- a/translated/tech/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md +++ b/published/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md @@ -36,7 +36,7 @@ via: http://www.ubuntugeek.com/how-to-protect-ubuntu-server-against-the-ghost-vu 作者:[ruchi][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From ca7e27cfce532bbc8568d332443adbc0627b3e7c Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 26 Mar 2015 15:54:53 +0800 Subject: [PATCH 669/725] PUB:20150211 Best Known Linux Archive or Compress Tools @FSSlc --- ...t Known Linux Archive or Compress Tools.md | 86 +++++++++---------- 1 file changed, 42 insertions(+), 44 deletions(-) rename {translated/tech => published}/20150211 Best Known Linux Archive or Compress Tools.md (67%) diff --git a/translated/tech/20150211 Best Known Linux Archive or Compress Tools.md b/published/20150211 Best Known Linux Archive or Compress Tools.md similarity index 67% rename from translated/tech/20150211 Best Known Linux Archive or Compress Tools.md rename to published/20150211 Best Known Linux Archive or Compress Tools.md index 9938efd5a5..c570ee62a4 100644 --- a/translated/tech/20150211 Best Known Linux Archive or Compress Tools.md +++ b/published/20150211 Best Known Linux Archive or Compress Tools.md @@ -2,16 +2,11 @@ Linux 下最为人熟知的归档/压缩工具 ================================================================================ 很多时候,通过互联网发送或接收大文件和图片是一件令人头疼的事。压缩及解压缩工具正好可以应对这个问题。下面让我们快速浏览一些可以使得我们的工作更加轻松的开源工具。 -Tar -gzip, gunzip -bzip2, bunzip2 -7-Zip - ### Tar ### -Tar 由 'Tape archiver' 衍生而来,最初被用来在磁带上归档和存储文件。Tar 是一个 GNU 软件,它可以压缩一组文件(归档),或提取它们以及对已经存在的压缩文件进行相关操作。在存储、备份以及转移文件方面,它是很有帮助的。在创建归档文件时,Tar 可以保持原有文件和目录结构不变。通过 Tar 归档的文件的后缀名为 ‘.tar’。 +Tar 由 'Tape archiver(磁带归档器)' 衍生而来,最初被用来在磁带上归档和存储文件。Tar 是一个 GNU 软件,它可以压缩一组文件(归档),或提取它们以及对已有的归档文件进行相关操作。在存储、备份以及传输文件方面,它是很有用的。在创建归档文件时,Tar 可以保持原有文件和目录结构不变。通过 Tar 归档的文件的后缀名为 ‘.tar’。 -基本用法 +**基本用法如下:** #### a) 创建归档 (c / --create) #### @@ -23,7 +18,7 @@ Tar 由 'Tape archiver' 衍生而来,最初被用来在磁带上归档和存 ![tar cvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-cvf.png) -创建一个归档 +*创建一个归档* #### b) 列出归档文件内容 ( t / --list) #### @@ -31,7 +26,7 @@ Tar 由 'Tape archiver' 衍生而来,最初被用来在磁带上归档和存 ![tar tvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-tvf.png) -列出归档中包含的文件 +*列出归档中包含的文件* #### c) 提取归档 (x / --extract) #### @@ -41,45 +36,45 @@ Tar 由 'Tape archiver' 衍生而来,最初被用来在磁带上归档和存 ![tar xvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-xvf.png) -提取文件 +*提取文件* ![tar xvf --wildcards](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-wildcard.png) -只提取需要的文件 +*只提取需要的文件* -#### d) 对归档进行更新 ( u / --update) #### +#### d) 对归档文件进行更新 ( u / --update) #### - tar uvf archive.tar newfile.c - 假如归档的版本比先前存在的版本新,通过添加文件 newfile.c 来更新归档. + tar uvf archive.tar newfile.c - 假如归档的newfile.c 要比先前已经归档的新,则添加更新的 newfile.c 到归档里面. ![tar uvf](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-uvf.png) -更新一个归档 +*更新一个归档* #### e) 从归档中删除文件 (--delete) #### - tar--delete -f archive.tar file1.c - 从压缩包'archive.tar' 中删除文件'file1.c' + tar --delete -f archive.tar file1.c - 从压缩包'archive.tar' 中删除文件'file1.c' ![tar --delete](http://blog.linoxide.com/wp-content/uploads/2015/01/tar-delete.png) -删除文件 +*删除文件* 更加具体的使用方法请参考[tar 主页][1]。 ### Gzip / Gunzip ### -Gzip 代表 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩应用,被其压缩的文件的后缀名为'*.gz' 。 +Gzip 即 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩应用,被其压缩的文件的后缀名为'*.gz' 。 -** 基本用法 ** +**基本用法如下:** #### a) 压缩文件 #### gzip file(s) -每个文件将被单独压缩。 +每个文件将被**单独压缩**。 ![gzip](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip.png) -压缩文件 +*压缩文件* 通常在压缩完成后,它会将原来的文件删除。我们可以使用 `-c` 选项来保留原来的文件。 @@ -87,7 +82,7 @@ Gzip 代表 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩 ![gzip-c](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-c.png) -压缩后保留原有文件 +*压缩后保留原有文件* 我们也可以将一组文件压缩到一个单独的文件中 @@ -95,7 +90,7 @@ Gzip 代表 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩 ![gz group](http://blog.linoxide.com/wp-content/uploads/2015/01/gz-group.png) -压缩一组文件 +*压缩一组文件* #### b) 检查压缩比 #### @@ -105,17 +100,17 @@ Gzip 代表 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩 ![gzip -l](http://blog.linoxide.com/wp-content/uploads/2015/01/gzip-l.png) -检查压缩率 +*检查压缩率* #### c) 解压文件 #### -Gunzip 被用来解压文件,在这里,原有文件在被解压后同样会被删除。使用 `-c`选项来保留原始文件。 +Gunzip 用来解压文件,在这里,原有的(压缩)文件在被解压后同样会被删除。使用 `-c`选项来保留原始文件。 gunzip -c archieve.gz ![gunzip -c](http://blog.linoxide.com/wp-content/uploads/2015/01/gunzip-c.png) -解压文件 +*解压文件* gzip 加上'-d'选项 和 gunzip 对压缩文件有同样的效果。 @@ -125,47 +120,50 @@ gzip 加上'-d'选项 和 gunzip 对压缩文件有同样的效果。 同 gzip 一样,[Bzip2][3] 也是一个压缩工具,与其他传统的工具相比,它可以将文件压缩到更小,但其缺点为:运行速度比 gzip 慢。 -** 基本用法 ** +**基本用法如下:** #### a) 压缩文件 #### -一般情况下,针对压缩而言,Bzip2 没有选项可供选择,将被压缩的文件被传递为它的参数。每个文件被单独压缩,且压缩文件以 'bz2' 为后缀名。 +一般情况下,针对压缩而言,Bzip2 不用什么选项,将被压缩的文件被传递为它的参数。每个文件被单独压缩,且压缩文件以 'bz2' 为后缀名。 bzip2 file1 file2 file3 ![bzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2.png) -文件压缩 +*文件压缩* -使用 '-k' 选项可以使得 在压缩或解压缩之后保留原有的文件。 +使用 '-k' 选项可以使得在压缩或解压缩之后保留原有的文件。 ![bzip2 -k](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-k.png) -在压缩后保留原有文件。 +*在压缩后保留原有文件* -'-d' 选项被用来强制解压缩。 + +#### b) 解压 #### + +'-d' 选项被用来解压缩。 ![bzip2 -d](http://blog.linoxide.com/wp-content/uploads/2015/01/bzip2-d.png) -使用 -d 选项删除文件 (!! 注:我(FSSlc)认为 这里的图片说明有误,可以参考 manpage或bzip 的官网来校对一下。) +*使用 -d 选项解压缩文件* -#### b) 解压 #### +也可以使用 bunzip2 来解压缩。 bunzip2 filename ![bunzip2](http://blog.linoxide.com/wp-content/uploads/2015/01/bunzip2.png) -解压文件 +*解压文件* bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 和 tbz 的文件在压缩后,后缀名将变为'.tar' 。 - bzip2 -dc 执行解压文件到标准输出的功能。 + bzip2 -dc - 执行解压文件到标准输出的功能。 ### 7-zip ### -[7-zip][4] 是另一个开源压缩软件。它使用 7z 这种新的压缩格式,并支持高压缩比。因此,它被认为是比先前提及的压缩工具更好的软件。在 Linux 下,可以通过 p7zip 软件包得到,该软件包里包含 3 个二进制文件 – 7z, 7za 和 7zr,读者可以参考 [p7zip wiki][5] 来了解这三个二进制文件之间的不同。在本篇中,我们将使用 7zr 来解释 7-zip 的用法。归档文件以 '.7z' 为后缀名。 +[7-zip][4] 是另一个开源压缩软件。它使用 7z 这种新的压缩格式,并支持高压缩比。因此,它被认为是比先前提及的压缩工具更好的软件。在 Linux 下,可以通过 p7zip 软件包得到,该软件包里包含 3 个二进制文件: 7z, 7za 和 7zr,读者可以参考 [p7zip wiki][5] 来了解这三个二进制文件之间的不同。在本篇中,我们将使用 7zr 来解释 7-zip 的用法。归档文件以 '.7z' 为后缀名。 -** 基本用法 ** +**基本用法如下:** #### a) 创建归档 #### @@ -173,7 +171,7 @@ bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 ![7zr a](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-a.png) -创建一个归档文件 +*创建一个归档文件* #### b) 列出归档包含文件 #### @@ -181,7 +179,7 @@ bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 ![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-l.png) -列出归档中包含的文件 +*列出归档中包含的文件* #### c) 提取归档文件 #### @@ -189,7 +187,7 @@ bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 ![7zr e](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-e.png) -提取归档 +*提取归档* #### d) 更新归档文件 #### @@ -197,7 +195,7 @@ bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 ![7zr u](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-u.png) -更新一个归档文件 +*更新一个归档文件* #### e) 从归档文件中删除文件 #### @@ -205,11 +203,11 @@ bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 ![7zr d](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d.png) -删除文件 +*删除文件* ![7zr l](http://blog.linoxide.com/wp-content/uploads/2015/01/7zr-d-l.png) -确认文件删除 +*确认文件删除* -------------------------------------------------------------------------------- @@ -217,7 +215,7 @@ via: http://linoxide.com/tools/linux-compress-decompress-tools/ 作者:[B N Poornima][a] 译者:[FSSlc](https://github.com/FSSlc) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From a91774045a511d42ee6aef922a40813b3d76ee4d Mon Sep 17 00:00:00 2001 From: dbarobin Date: Thu, 26 Mar 2015 16:37:20 +0800 Subject: [PATCH 670/725] [Translated] dbarobin translated, 20150324 4 Tools to Securely Delete Files from Linux --- ...ols to Securely Delete Files from Linux.md | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 translated/20150324 4 Tools to Securely Delete Files from Linux.md diff --git a/translated/20150324 4 Tools to Securely Delete Files from Linux.md b/translated/20150324 4 Tools to Securely Delete Files from Linux.md new file mode 100644 index 0000000000..bbf0dcb3bf --- /dev/null +++ b/translated/20150324 4 Tools to Securely Delete Files from Linux.md @@ -0,0 +1,130 @@ +# Linux 下四种安全删除文件的工具 # + +任何一个普通水平的计算机用户都知道,从计算机系统中删除的任意数据都可以稍候通过一些努力恢复出来。当你不小心删除了你的重要数据,这是一个不错的方案。但是大多数情况,你不希望你的隐私数据被轻易地恢复。不论何时,我们删除任意的文件,操作系统删除的仅仅是特定数据的索引。这就意味着,数据仍然保存在磁盘的某块地方,这种方法是不安全的,任何一个聪明的计算机黑客可以使用任意不错的数据恢复工具来恢复你删除的数据。Linux 用户利用我们都知晓的 "rm" 命令来从他们的操作系统中删除数据,但是 "rm" 命令在约定俗成的场景下工作。从这个命令删除的数据也可以使用特殊的文件恢复工具恢复。 + +让我们看看怎样安全并且完整地从你地 Linux 系统中删除文件或者文件夹。以下提到的工具可以完全地删除数据,因此那些恢复工具很难找到真实数据的痕迹然后恢复它。 + +### Secure-Delete ### + +Secure-Delete 是一组为 Linux 操作系统而生的工具集合,他们为永久删除文件提供高级的技术支持。一旦 Secure-Delete 安装在任意的 Linux 系统,它会提供如下的四个命令: + +- srm +- smem +- sfill +- sswap + +在 ubuntu 的终端中运行如下命令安装此工具: + + sudo apt-get install secure-delete + +![secure delete](http://blog.linoxide.com/wp-content/uploads/2015/03/secure-delete.png) + +在 RHEL,Fedora 或者 Centos 中运行如下命令安装此工具: + + sudo yum install secure-delete + +“**srm**” 命令的工作方式和 "rm" 命令类似,但是它不仅仅是删除文件,它首先使用一些随机的数据重写数次文件,然后彻底地删除此文件。这个命令的语法是相当地简单,仅仅指定要删除的文件或者目录,然后它会负责此任务。 + + sudo srm /home/aun/Documents/xueo/1.png + +"**sfill**" 检测在指定的分区或者目录被标记为空闲或者可用的空间,然后使用它自身的算法用一些随机数据填充。因此它保证了在此分区没有可以恢复的文件或者文件夹。 + + sudo sfill /home + +"**sswap**" 命令用来安全地清除你的交换分区。交换分区用来存放运行程序的数据。首先我们需要运行如下命令来找到你的交换分区。 + + cat /proc/swaps + +如下是上述命令的输出示例: + + aun@eagle:~$ cat /proc/swaps + Filename Type Size Used Priority + /dev/sda5 partition 2084860 71216 -1 + +从现在起,你可以看到你的交换分区设置在哪个分区,然后使用如下命令安全地清除。替换 "/dev/sda5" 部分为你的交换分区名字。 + + sudo sswap /dev/sda5 + +“**smem**” 用来清理在内存中的内容,它保证当系统重启或者关机时随机存取存储器(RAM)中的内容被清理,但是残余的数据痕迹仍然保存在内存。这个命令提供安全的内存清理,简单地在终端中运行 smem 命令。 + + smem + +### Shred ### + +"shred" 命令销毁文件或者文件夹的内容,在某种程度上,不可能恢复。它使用随机生成的数据模式来持续重写文件,因此很难恢复任意的被销毁的数据,即使是那些黑客或者窃贼使用高水平的数据恢复工具或者设备。Shred 在 Linux 发行版中时默认安装的,如果你想,你可以运行如下命令来找到它的安装目录: + + aun@eagle:~$ whereis shred + + shred: /usr/bin/shred /usr/share/man/man1/shred.1.gz + +使用 shred 工具运行如下命令来删除文件: + + shred /home/aun/Documents/xueo/1.png + +使用 shred 运行如下命令来删除任意的分区,用你期望的分区来替换分区名字。 + + shred /dev/sda5 + +Shred 默认情况下使用随机内容重写数据 25 次。如果你想它重写文件更多次数,可以使用 "shred -n" 选项来简单地指定你所期望的次数。 + + shred -n 100 filename + +如果你想在重写后截断或者删除文件,使用 "shred -u" 选项: + + shred -u filename + +### dd ### + +这个命令起初是用于磁盘克隆的。它用于一个分区或者一个磁盘复制到另一个分区或者磁盘。但是它还用于安全地清除硬盘或者分区的内容。运行如下命令使用随机数据来重写你的当前数据。你不需要安装 dd 命令,所有的 Linux 分发版都已经包含了此命令。 + + sudo dd if=/dev/random of=/dev/sda + +你也可以重写磁盘或者分区中的内容,只需要简单地将所有替换为 “zero”。 + + sudo dd if=/dev/zero of=/dev/sda + +### Wipe ### + +Wipe 起初开发的目的是从磁媒体中安全地擦除文件。这个命令行工具使用特殊的模式来重复地写文件。它使用 fsync() 调用和或 O_SYNC 位来强制访问磁盘,并且使用 Gutmann 算法来重复地写。你可以使用此命令删除单个文件,文件夹或者整个磁盘的内容,但是使用 wipe 命令来删除整个磁盘的模式会耗费大量的时间。另外,安装和使用这个工具相当容易。 + +在 ubuntu 的终端中运行如下命令来安装 wipe。 + + sudo aptitude install wipe + +![Wipe Linux](http://blog.linoxide.com/wp-content/uploads/2015/03/wipe.png) + +使用如下命令在 Redhat Linux,Centos 或者 Fedora 中安装 Wipe: + + sudo yum install wipe + +一旦安装完成,在终端中运行如下命令来获得完整的可用选项列表: + + man wipe + +删除任意文件或者目录: + + wipe filename + +运行如下命令来安全地移除 tmp 分区: + + wipe -r /tmp + +使用如下的命令来删除完整分区的内容(替换分区名字为你所期望的分区)。 + + wipe /dev/sda1 + +### 小结 ### + +我们期望这篇文章对你有帮助,你的数据隐私是有决定性意义的,在你的系统中安装这些安全的删除工具对你来说非常重要,因此你可以删除你的隐私数据而不用担心它们被轻易地恢复。上面提到的所有工具都是相当轻量的,它们只需要耗费最低的系统资源来运行,并且无论如何也不会影响你的系统性能。享受它们带来的便利吧! + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/security/delete-files-permanatly-linux/ + +作者:[Aun Raza][a] +译者:[dbarobin](https://github.com/dbarobin) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ \ No newline at end of file From 7b0a75178304c73b66cfc98f7d106df64e924d63 Mon Sep 17 00:00:00 2001 From: dbarobin Date: Thu, 26 Mar 2015 16:39:34 +0800 Subject: [PATCH 671/725] [Translated] dbarobin translated, 20150324 4 Tools to Securely Delete Files from Linux --- ...ols to Securely Delete Files from Linux.md | 132 ------------------ ...ols to Securely Delete Files from Linux.md | 0 2 files changed, 132 deletions(-) delete mode 100644 sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md rename translated/{ => tech}/20150324 4 Tools to Securely Delete Files from Linux.md (100%) diff --git a/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md b/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md deleted file mode 100644 index 7012e405ab..0000000000 --- a/sources/tech/20150324 4 Tools to Securely Delete Files from Linux.md +++ /dev/null @@ -1,132 +0,0 @@ -dbarobin translating - -4 Tools to Securely Delete Files from Linux -================================================================================ -Any computer user with normal level skill set knows that any data removed from computer system can be recovered later with little bit of efforts. This is a good thing in the scenario when you have accidentally deleted your critical data. But in most cases, you don't want your private data to be recovered easily. Whenever we remove anything, the operating system deletes just the index of the particular data. It means that data is still there somewhere on the disk, this method is insecure, as any smart computer hacker can use any good data recovery tool to easily recover your deleted data. Linux users utilizes the well know “**rm**” command to remove data from their operating system, but “rm” command works in the conventional fashion. Data removed using this command can be recovered by special file recovery tools. - -Let’s see how we can safely and completely remove files/folders from our Linux system. The methods mentioned below remove data completely so it becomes very hard for recovery tools to find traces of the actual data and recover it. - -### Secure-Delete ### - -Secure-Delete is a set of tools for Linux operating system and they provide advanced techniques for permanent removal of files. Once Secure-Delete has been installed on any Linux system, it provides following four commands: - -- srm -- smem -- sfill -- sswap - -Run following command in the terminal to install it in ubuntu: - - sudo apt-get install secure-delete - -![secure delete](http://blog.linoxide.com/wp-content/uploads/2015/03/secure-delete.png) - -Run following command to install it in RHEL, Fedora or Centos: - - sudo yum install secure-delete - -“**srm**” command works similarly to “rm” command, but instead of just deleting the file, it first overwrites it multiple times with some random data and then removes the file permanently. The syntax for this command is pretty simply, just specify the file or directory to remove and it will take care of the task. - - sudo srm /home/aun/Documents/xueo/1.png - -"**sfill**" checks the specified partition/directories for space marked as free or available, and then uses its algorithm to fill it up with some random data. In this way it ensures that there are no more recoverable files/folders on the partition. - - sudo sfill /home - -"**sswap**" command is used to securely wipe your swap partitions. Swap partition is used to store data for running programs. First of all find out your swap partition by running the following command: - - cat /proc/swaps - -Example output of above command is show below: - - aun@eagle:~$ cat /proc/swaps - Filename Type Size Used Priority - /dev/sda5 partition 2084860 71216 -1 - -From here, you can see that swap is set to which partition, and then securely clean it by running the following command. Replace the "/dev/sda5" part with your partition name. - - sudo sswap /dev/sda5 - -“**smem**” is used to clean the contents of memory, its true that RAM contents are cleaned when system is rebooted or powered off, but some residual traces of data still remain in the memory. This command provides secure memory cleaning, simly run smem command on the terminal. - - smem - -### Shred ### - -"shred" command destroys files/folder’s contents in a way that it is impossible to recover. It keeps overwriting the files with randomly generated data patterns so in this way it becomes very hard to recover any data from them even if hackers or thief uses high level of data recovery tools/equipments. Shred is installed by default on all Linux distributions, if you want, you can find its installation path by running following command: - - aun@eagle:~$ whereis shred - - shred: /usr/bin/shred /usr/share/man/man1/shred.1.gz - -Run following command to remove file using shred utility. - - shred /home/aun/Documents/xueo/1.png - -Run following command to securely remove any partition using shred ; Replace partition name with your desired partition. - - shred /dev/sda5 - -Shred by default overwrites file with random contents 25 times. If you want it to overwrite file more than this, simply specify the desired number with "shred -n" option. - - shred -n 100 filename - -If you want to truncate and remove file after overwriting, use "shred -u" option - - shred -u filename - -### dd ### - -This command is originally used for Disk Cloning. It is used to copy contents of one partition or disk to another. But it is also used for securely wiping out the contents of a hard disk or partitions. Run following command to overwrite your current data with random data.You don't need to install dd command, all Linux distributions include this command already. - - sudo dd if=/dev/random of=/dev/sda - -You can also overwrite the contents of hard disk or partitions by simply replacing everything with “zero”. - - sudo dd if=/dev/zero of=/dev/sda - -### Wipe ### - -Wipe was originally developed to securely erase files from magnetic media. This command line utility writes special patterns to the files repeatedly. It uses fsync() call and/or the O_SYNC bit to force disk access. It uses Gutmann algorithm for repeated writes. You can remove contents of single file, folder or entire hard disk with this command, but whole hard disk format using wipe command will take good amount of time. The installation and use of this utility is pretty easy. - -Install wipe on ubuntu by running the following command on the terminal. - - sudo aptitude install wipe - -![Wipe Linux](http://blog.linoxide.com/wp-content/uploads/2015/03/wipe.png) - -Install Wipe in Redhat Linux, Centos or Fedora by running the following command: - - sudo yum install wipe - -Once the installation is complete, run following command on the terminal to get complete list of its available options: - - man wipe - -Remove any file or directory as: - - wipe filename - -Securely remove your tmp partition by running following command: - - wipe -r /tmp - -Use following command to remove contents of complete partition (replace partition name with your desired partition). - - wipe /dev/sda1 - -### Conclusion ### - -We hope you find this article useful, the privacy of your data is critical, its important to have such secure file removal utilities installed on your system so you may be able to remove your private data without fear of being recovered easily. All of the above mentioned tools are pretty lightweight, they take minimum system resources to run, and does not affect performance of your system in anyway. Enjoy! - --------------------------------------------------------------------------------- - -via: http://linoxide.com/security/delete-files-permanatly-linux/ - -作者:[Aun Raza][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunrz/ diff --git a/translated/20150324 4 Tools to Securely Delete Files from Linux.md b/translated/tech/20150324 4 Tools to Securely Delete Files from Linux.md similarity index 100% rename from translated/20150324 4 Tools to Securely Delete Files from Linux.md rename to translated/tech/20150324 4 Tools to Securely Delete Files from Linux.md From 5f385fe5738e2cc3427f988034b3c7c3ddac2797 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Thu, 26 Mar 2015 16:44:03 +0800 Subject: [PATCH 672/725] =?UTF-8?q?20150326-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...26 Mydumper--Mysql Database Backup tool.md | 110 ++++++++ ...to Process Management Commands in Linux.md | 191 +++++++++++++ ... up server monitoring system with Monit.md | 252 ++++++++++++++++++ 3 files changed, 553 insertions(+) create mode 100644 sources/share/20150326 Mydumper--Mysql Database Backup tool.md create mode 100644 sources/tech/20150326 A Peep into Process Management Commands in Linux.md create mode 100644 sources/tech/20150326 How to set up server monitoring system with Monit.md diff --git a/sources/share/20150326 Mydumper--Mysql Database Backup tool.md b/sources/share/20150326 Mydumper--Mysql Database Backup tool.md new file mode 100644 index 0000000000..e8260760e2 --- /dev/null +++ b/sources/share/20150326 Mydumper--Mysql Database Backup tool.md @@ -0,0 +1,110 @@ +Mydumper – Mysql Database Backup tool +================================================================================ +Mydumper is a tool used for backing up MySQL database servers much faster than the mysqldump tool distributed with MySQL. It also has the capability to retrieve the binary logs from the remote server at the same time as the dump itself. + +### Mydumper advantages ### + +o Parallelism (hence, speed) and performance (avoids expensive character set conversion routines, efficient code overall) + +o Easier to manage output (separate files for tables, dump metadata,etc, easy to view/parse data) + +o Consistency -- maintains snapshot across all threads, provides accurate master and slave log positions, etc + +o Manageability -- supports PCRE for specifying database and tables inclusions and exclusions + +### Install mydumper on ubuntu ### + +Open the terminal and run the following command + + sudo apt-get install mydumper + +### Using Mydumper ### + +#### Syntax #### + + mydumper [options] + +Application Options: + +- -B, --database Database to dump +- -T, --tables-list Comma delimited table list to dump (does not exclude regex option) +- -o, --outputdir Directory to output files to +- -s, --statement-size Attempted size of INSERT statement in bytes, default 1000000 +- -r, --rows Try to split tables into chunks of this many rows +- -c, --compress Compress output files +- -e, --build-empty-files Build dump files even if no data available from table +- -x, --regex Regular expression for ‘db.table' matching +- -i, --ignore-engines Comma delimited list of storage engines to ignore +- -m, --no-schemas Do not dump table schemas with the data +- -k, --no-locks Do not execute the temporary shared read lock. WARNING: This will cause inconsistent backups +- -l, --long-query-guard Set long query timer in seconds, default 60 +- --kill-long-queries Kill long running queries (instead of aborting) +- -b, --binlogs Get a snapshot of the binary logs as well as dump data +- -D, --daemon Enable daemon mode +- -I, --snapshot-interval Interval between each dump snapshot (in minutes), requires --daemon, default 60 +- -L, --logfile Log file name to use, by default stdout is used +- -h, --host The host to connect to +- -u, --user Username with privileges to run the dump +- -p, --password User password +- -P, --port TCP/IP port to connect to +- -S, --socket UNIX domain socket file to use for connection +- -t, --threads Number of threads to use, default 4 +- -C, --compress-protocol Use compression on the MySQL connection +- -V, --version Show the program version and exit +- -v, --verbose Verbosity of output, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2 + +#### Mydumper Example #### + + mydumper \ + --database=$DB_NAME \ + --host=$DB_HOST \ + --user=$DB_USER \ + --password=$DB_PASS \ + --outputdir=$DB_DUMP \ + --rows=500000 \ + --compress \ + --build-empty-files \ + --threads=2 \ + --compress-protocol + +Description of Mydumper's output data + +Mydumper does not output to files, but rather to files in a directory. The --outputdir option specifies the name of the directory to use. + +The output is two parts + +Schema + +For each table in the database, a file containing the CREATE TABLE statement will be created. It will be named: + +dbname.tablename-schema.sql.gz + +Data + +For each table with number of rows above the --rows parameter, you will have a file called: + +dbname.tablename.0000n.sql.gz + +Where "n" starts with 0 up to the number of. + +If you want to restore these backup you can use Myloader + + myloader \ + --database=$DB_NAME \ + --directory=$DB_DUMP \ + --queries-per-transaction=50000 \ + --threads=10 \ + --compress-protocol \ + --verbose=3 + +-------------------------------------------------------------------------------- + +via: http://www.ubuntugeek.com/mydumper-mysql-database-backup-tool.html + +作者:[ruchi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.ubuntugeek.com/author/ubuntufix \ No newline at end of file diff --git a/sources/tech/20150326 A Peep into Process Management Commands in Linux.md b/sources/tech/20150326 A Peep into Process Management Commands in Linux.md new file mode 100644 index 0000000000..f05ed62768 --- /dev/null +++ b/sources/tech/20150326 A Peep into Process Management Commands in Linux.md @@ -0,0 +1,191 @@ +A Peep into Process Management Commands in Linux +================================================================================ +A program in execution is called a process. While a program is an executable file present in storage and is passive, a process is a dynamic entity comprising of allocated system resources, memory, security attributes and has a state associated with it. There can be multiple processes associated with the same program and operating simultaneously without interfering with each other. The operating system efficiently manages and keeps track of all the processes running in the system. + +In order to manage these processes, user should be able to + +- See all the processes that are running +- View the system resources consumed by the processes +- Locate a particular process and take specific action on it +- Change the priority levels associated with processes +- Kill the required processes +- Restrict the system resources available to processes etc. + +Linux offers many commands to the user to effectively handle the above mentioned scenarios. Let's understand them one by one. + +### 1. ps ### + +'ps' is one of the basic commands in Linux to view the processes on the system. It lists the running processes in a system along with other details such as process id, command, cpu usage, memory usage etc. Some of the following options come handy to get more useful information + + ps -a - List all the running / active processes + +![Output of "ps -a" command](http://blog.linoxide.com/wp-content/uploads/2015/02/ps-a2.png) + + ps -ef |grep - List only the required process + + ps -aux - Displays processes including those with no terminals(x) Output is user oriented (u) with fields like USER, PID, %CPU, %MEM etc + +### 2. pstree ### + +In Linux, every process gets spawned by its parent process. This command helps visualize the processes by displaying a tree diagram of the processes showing the relationship between them. If a pid is mentioned, the root of the tree will be the pid. Else it will be rooted at init. + +![pstree](http://blog.linoxide.com/wp-content/uploads/2015/02/pstree.png) + +### 3. top ### + +'top' is a very useful command to monitor the system as it shows the system resources used by different processes. It gives a snapshot of the situation that the system is currently in. Its output includes data like process identification number(PID), user of the process, nice value, %CPU and %memory currently consumed by the process etc. One can use this output to figure out which process is hogging the CPU or memory. + +![top](http://blog.linoxide.com/wp-content/uploads/2015/02/top.png) + +### 4. htop ### + +htop is similar to top, but is an interactive text mode process viewer. It displays the per CPU usage and memory, swap usage using a text graph. One can use the Up/Down arrow key to select processes, F7 and F8 to change the priority and F9 to kill a process. It is not present by default in the system and need to be installed explicitly. + +![htop output](http://blog.linoxide.com/wp-content/uploads/2015/03/htop1.png) + +### 5. nice ### + +With the help of nice command, users can set or change the priorities of processes in Linux. Higher the priority of a process, more is the CPU time allocated by the kernel for it. By default, a process gets launched with priority 0. Process priority can be viewed using the top command output under the NI (nice value) column. + +Values of process priority range from -20 to 19. Lower the nice value, higher the priority. + + nice - starts the process by setting its priority to the given value + +![nice command](http://blog.linoxide.com/wp-content/uploads/2015/02/nice-cmd.png) + +![changed nice value of 'top'](http://blog.linoxide.com/wp-content/uploads/2015/02/top-nice.png) + +In the above example, 'top' gets launched with a priority -3. + +### 6. renice ### + +It is similar to nice command. Use this command to change the priority of an already running process. Please note that users can change the priority of only the processes that they own. + + renice -n -p - change the priority of the given process + +![renice command](http://blog.linoxide.com/wp-content/uploads/2015/02/renice2.png) + +Priority of process with id 3806 which had an initial priority of 0 is now changed to priority 4. + + renice -u -g - change the priority of processes owned by the given user and group +![output of renice for a user group](http://blog.linoxide.com/wp-content/uploads/2015/02/renice1.png) + +In the above example, priority of all processes owned by user 'mint' get changed to '-3' + +### 7. kill ### + +This is a command used to terminate processes by sending signals. If a process is not responding to kill command, then it can be forcefully killed using the kill -9 command. But this needs to be used carefully as it does not give a chance for the process to clean up and might end up in corrupted files. If we are not aware of the PID of the process to be killed or want to mention the process name to be killed, then killall comes to rescue. + + kill + + kill -9 + + killall -9 - kill all instances having the same process name + +If you use kill, you need to know the process id of the process to be killed. pkill is a similar command but can be used to kill processes using a pattern, i.e. process name, process owner etc. + + pkill + +![kill initiated](http://blog.linoxide.com/wp-content/uploads/2015/02/kill-initiated.png) + +![kill](http://blog.linoxide.com/wp-content/uploads/2015/02/kill.png) + +### 8. ulimit ### + +Command useful in controlling the system-wide resources available to the shells and processes. Mostly useful for system administrators to manage systems that are heavily used and have performance problems. Limiting the resources ensures that important processes continue to run while other processes do not consume more resources. + + ulimit -a - Displays the current limits associated with the current user. + +![ulimit -a](http://blog.linoxide.com/wp-content/uploads/2015/02/ulimit-a.png) + + -f - maximum file size + + -v - maximum virtual memory size (in KB) + + -n - maximum file descriptor plus 1 + + -H : To change and report the hard limit + + -S : To change and report the soft limit + +Check out the ulimit man page for more options. + +### 9. w ### + +w gives us information about the users who have currently logged in and the processes that they are running. The header details displayed contain information like current time, how long the system has been running, total number of users logged in, load average of the system for the last 1, 5 and 15 minutes + +Based on the user information, one can take care before terminating any processes that do not belong to them. + +!['w' command](http://blog.linoxide.com/wp-content/uploads/2015/02/w.png) + +**who** is a related command and gives a list of currently logged in users, time of last system boot, current run levels etc. + +!['who' command](http://blog.linoxide.com/wp-content/uploads/2015/02/who.png) + +**whoami** command prints the username of the current user ID + +!['whoami' command](http://blog.linoxide.com/wp-content/uploads/2015/02/whoami.png) + +### 10. pgrep ### + +pgrep stands for "Process-ID Global Regular Expression Print". It scans the currently running processes and lists the process IDs that match the selection criteria mentioned on command line to stdout. Useful for retrieving the process id of a process by using its name. + + pgrep -u mint sh + +This command will display the process ID for the process named 'sh' and owned by user 'mint' + +![output of pgrep](http://blog.linoxide.com/wp-content/uploads/2015/03/pgrep.png) + +### 11. fg , bg ### + +Sometimes, the commands that we execute take a long time to complete. In such situations, we can push the jobs to be executed in the background using 'bg' command and can be brought to the foreground with the 'fg' command. + +We can start a program in background by using the '&' : + + find . -name *iso > /tmp/res.txt & + +A program that is already running can also be sent to the background using 'CTRL+Z' and 'bg' command: + + find . -name *iso > /tmp/res.txt & - start the job in the background + + ctrl+z - suspend the currently executing foreground job + + bg - push the command execution to background + +We can list all the background processes using 'jobs' command + + jobs + +We can bring back a background process to foreground using the 'fg' command. + + fg % + +![output of fg, bg and jobscommands](http://blog.linoxide.com/wp-content/uploads/2015/03/fg-bg-jobs.png) + +### 12. ipcs ### + +ipcs command is used for listing the inter-process communication facilities (shared memory, semaphores and message queues). + +This command with -p option can be combined with options -m, -s or-q to display the process id which recently accessed the corresponding ipc facility. + + ipcs -p -m + +The screen shot below is listing the creator id and process id which accessed the shared memory recently. + +![ipcs command](http://blog.linoxide.com/wp-content/uploads/2015/03/ipcs.png) + +### Conclusion ### + +Generally, it is considered the job of administrators to fix problems and tweak the system to improve the performance. But users also need to deal with processes in Linux quite often. Hence, it is essential to familiarise ourselves with the various commands available to manage them effectively. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-command/process-management-commands-linux/ + +作者:[B N Poornima][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/bnpoornima/ \ No newline at end of file diff --git a/sources/tech/20150326 How to set up server monitoring system with Monit.md b/sources/tech/20150326 How to set up server monitoring system with Monit.md new file mode 100644 index 0000000000..c8f9efaecd --- /dev/null +++ b/sources/tech/20150326 How to set up server monitoring system with Monit.md @@ -0,0 +1,252 @@ +How to set up server monitoring system with Monit +================================================================================ +Many Linux admins rely on a centralized remote monitoring system (e.g., [Nagios][1] or [Cacti][2]) to check the health of their network infrastructure. While centralized monitoring makes an admin's life easy when dealing with many hosts and devices, a dedicated monitoring box obviously becomes a single point of failure; if the monitoring box goes down or becomes unreachable for whatever reason (e.g., bad hardware or network outage), you will lose visibility on your entire infrastructure. + +One way to add redundancy to your monitoring system is to install standalone monitoring software (as a fallback) at least on any critical/core servers on your network. In case a centralized monitor is down, you will still be able to maintain visibility on your core servers from their backup monitor. + +### What is Monit? ### + +[Monit][3] is a cross-platform open-source tool for monitoring Unix/Linux systems (e.g., Linux, BSD, OSX, Solaris). Monit is extremely easy to install and reasonably lightweight (with only 500KB in size), and does not require any third-party programs, plugins or libraries. Yet, Monit lends itself to full-blown monitoring, capable of process status monitoring, filesystem change monitoring, email notification, customizable actions for core services, and so on. The combination of ease of setup, lightweight implementation and powerful features makes Monit an ideal candidate for a backup monitoring tool. + +I have been using Monit for several years on multiple hosts, and I am very pleased how reliable it has been. Even as a full-blown monitoring system, Monit is very useful and powerful for any Linux admin. In this tutorial, let me demonstrate how to set up Monit on a local server (as a backup monitor) to monitor common services. With this setup, I will only scrach the surface of what Monit can do for us. + +### Installation of Monit on Linux ### + +Most Linux distributions already include Monit in their repositories. + +Debian, Ubuntu or Linux Mint: + + $ sudo aptitude install monit + +Fedora or CentOS/RHEL: + +On CentOS/RHEL, you must enable either [EPEL][4] or [Repoforge][5] repository first. + + # yum install monit + +Monit comes with a very well documented configuration file with a lots of examples. The main configuration file is located in /etc/monit.conf in Fedora/CentOS/RHEL, or /etc/monit/monitrc in Debian/Ubuntu/Mint. Monit configuration has two parts: "Global" and "Services" sections. + +Gl### ###obal Configuration: Web Status Page + +Monit can use several mail servers for notifications, and/or an HTTP/HTTPS status page. Let's start with the web status page with the following requirements. + +- Monit listens on port 1966. +- Access to the web status page is encrypted with SSL. +- Login requires monituser/romania as user/password. +- Login is permitted from localhost, myhost.mydomain.ro, and internal LAN (192.168.0.0/16) only. +- Monit stores an SSL certificate in a pem format. + +For subsequent steps, I will use a Red Hat based system. Similar steps will be applicable on a Debian based system. + +First, generate and store a self-signed certificate (monit.pem) in /var/cert. + + # mkdir /var/certs + # cd /etc/pki/tls/certs + # ./make-dummy-cert monit.pem + # cp monit.pem /var/certs + # chmod 0400 /var/certs/monit.pem + +Now put the following snippet in the Monit's main configuration file. You can start with an empty configuration file or make a copy of the original file. + + set httpd port 1966 and + SSL ENABLE + PEMFILE /var/certs/monit.pem + allow monituser:romania + allow localhost + allow 192.168.0.0/16 + allow myhost.mydomain.ro + +### Global Configuration: Email Notification ### + +Next, let's set up email notification in Monit. We need at least one active [SMTP server][6] which can send mails from the Monit host. Something like the following will do (adjust it for your case): + +- Mail server hostname: smtp.monit.ro +- Sender email address used by monit (from): monit@monit.ro +- Who will receive mail from monit daemon: guletz@monit.ro +- SMTP port used by mail server: 587 (default is 25) + +With the above information, email notification would be configured like this: + + set mailserver smtp.monit.ro port 587 + set mail-format { + from: monit@monit.ro + subject: $SERVICE $EVENT at $DATE on $HOST + message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION. + + Yours sincerely, + Monit + + } + + set alert guletz@monit.ro + +As you can see, Monit offers several built-in variables ($DATE, $EVENT, $HOST, etc.), and you can customize your email message for your needs. If you want to send mails from the Monit host itself, you need a sendmail-compatible program (e.g., postfix or ssmtp) already installed. + +### Global Configuration: Monit Daemon ### + +The next part is setting up monit daemon. We will set it up as follows. + +- Performs the first check after 120 seconds. +- Checks services once every 3 minutes. +- Use syslog for logging. + +Place the following snippet to achieve the above setting. + + set daemon 120 + with start delay 240 + set logfile syslog facility log_daemon + +We must also define "idfile", a unique ID used by monit demon, and "eventqueue", a path where mails sent by monit but undelivered due to SMTP/network errors. Verifiy that path (/var/monit) already exists. The following configuration will do. + + set idfile /var/monit/id + set eventqueue + basedir /var/monit + +### Test Global Configuration ### + +Now the "Global" section is finished. The Monit configuration file will look like this: + + # Global Section + + # status webpage and acl's + set httpd port 1966 and + SSL ENABLE + PEMFILE /var/certs/monit.pem + allow monituser:romania + allow localhost + allow 192.168.0.0/16 + allow myhost.mydomain.ro + + # mail-server + set mailserver smtp.monit.ro port 587 + # email-format + set mail-format { + from: monit@monit.ro + subject: $SERVICE $EVENT at $DATE on $HOST + message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION. + + Yours sincerely, + Monit + + } + + set alert guletz@monit.ro + + # delay checks + set daemon 120 + with start delay 240 + set logfile syslog facility log_daemon + + # idfile and mail queue path + set idfile /var/monit/id + set eventqueue + basedir /var/monit + +Now it is time to check what we have done. You can test an existing configuration file (/etc/monit.conf) by running: + + # monit -t + +---------- + + Control file syntax OK + +If Monit complains about any error, please review the configuration file again. Fortunately, error/warnings messages are informative. For example: + + monit: Cannot stat the SSL server PEM file '/var/certs/monit.pem' -- No such file or directory + /etc/monit/monitrc:10: Warning: hostname did not resolve 'smtp.monit.ro' + +Once you verify the syntax of configuration, start monit daemon, and wait 2 to 3 minutes: + + # service monit start + +If you are using systemd, run: + + # systemctl start monit + +Now open a browser window, and go to https://:1966. Replace & with your Monit hostname or IP address. + +Note that if you have a self-signed SSL certificate, you will see a warning message in your browser. + +![](https://farm8.staticflickr.com/7596/16737206479_96b9f7dfdb_c.jpg) + +After you have completed login, you must see the following page. + +![](https://farm8.staticflickr.com/7594/16303369973_6019482dea_c.jpg) + +In the rest of the tutorial, let me show how we can monitor a local server and common services. You will see a lot of useful examples on the [official wiki page][7]. Most of them are copy-and-pastable! + +### Service Configuration: CPU/Memory Monitoring ### + +Let start with monitoring a local server's CPU/memory usage. Copy the following snippet in the configuration file. + + check system localhost + if loadavg (1min) > 10 then alert + if loadavg (5min) > 6 then alert + if memory usage > 75% then alert + if cpu usage (user) > 70% then alert + if cpu usage (system) > 60% then alert + if cpu usage (wait) > 75% then alert + +You can easily interpret the above configuration. The above checks are performed on local host for every monitoring cycle (which is set to 120 seconds in the Global section). If any condition is met, monit daemon will send an alert with an email. + +If certain properties do not need to be monitored for every cycle, you can use the following format. For example, this will monitor average load every other cycle (i.e., every 240 seconds). + + if loadavg (1min) > 10 for 2 cycles then alert + +### Service Configuration: SSH Service Monitoring ### + +Let's check if we have sshd binary installed in /usr/sbin/sshd: + + check file sshd_bin with path /usr/sbin/sshd + +We also want to check if the init script for sshd exist: + + check file sshd_init with path /etc/init.d/sshd + +Finally, we want to check if sshd daemon is up an running, and listens on port 22: + + check process sshd with pidfile /var/run/sshd.pid + start program "/etc/init.d/sshd start" + stop program "/etc/init.d/sshd stop" + if failed port 22 protocol ssh then restart + if 5 restarts within 5 cycles then timeout + +More specifically, we can interpret the above configuration as follows. We check if a process named sshd and a pidfile (/var/run/sshd.pid) exist. If either one does not exist, we restart sshd demon using init script. We check if a process listening on port 22 can speak SSH protocol. If not, we restart sshd daemon. If there are at least 5 restarts within the last 5 monitoring cycles (i.e., 5x120 seconds), sshd daemon is declared non-functional, and we do not try to check again. + +![](https://farm9.staticflickr.com/8685/16735725998_62c26a24bc_c.jpg) + +### Service Configuration: SMTP Service Monitoring ### + +Now let's set up a check on a remote SMTP mail server (e.g., 192.168.111.102). Let's assume that the SMTP server is running SMTP, IMAP and SSH on its LAN interface. + + check host MAIL with address 192.168.111.102 + if failed icmp type echo within 10 cycles then alert + if failed port 25 protocol smtp then alert + else if recovered then exec "/scripts/mail-script" + if failed port 22 protocol ssh then alert + if failed port 143 protocol imap then alert + +We check if the remote host responds to ICMP. If we haven't received ICMP response within 10 cycles, we send out an alert. If testing for SMTP protocol on port 25 fails, we send out an alert. If testing succeeds again after a failed test, we run a script (/scripts/mail-script). If testing for SSH and IMAP protocols fail on port 22 and 143, respectively, we send out an alert. + +### Conclusion ### + +In this tutorial, I demonstrate how to set up Monit on a local server. What I showed here is just the tip of the iceberg, as far as Monit's capabilities are concerned. Take your time and read the man page about Monit (a very good one). Monit can do a lot for any Linux admin with a very nice and easy to understand syntax. If you put together a centralized remote monitor and Monit to work for you, you will have a more reliable monitoring system. What is your thought on Monit? + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/server-monitoring-system-monit.html + +作者:[Iulian Murgulet][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/iulian +[1]:http://xmodulo.com/monitor-common-services-nagios.html +[2]:http://xmodulo.com/monitor-linux-servers-snmp-cacti.html +[3]:http://mmonit.com/monit/ +[4]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[5]:http://xmodulo.com/how-to-set-up-rpmforge-repoforge-repository-on-centos.html +[6]:http://xmodulo.com/mail-server-ubuntu-debian.html +[7]:http://mmonit.com/wiki/Monit/ConfigurationExamples \ No newline at end of file From f819c9e82276716a55913077ed273c2bbb6b5e45 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 27 Mar 2015 21:29:02 +0800 Subject: [PATCH 673/725] PUB:20150126 CD Audio Grabbers--Graphical Based @H-mudcup --- ...0126 CD Audio Grabbers--Graphical Based.md | 121 ++++++++++++++++ ...0126 CD Audio Grabbers--Graphical Based.md | 129 ------------------ 2 files changed, 121 insertions(+), 129 deletions(-) create mode 100644 published/20150126 CD Audio Grabbers--Graphical Based.md delete mode 100644 translated/share/20150126 CD Audio Grabbers--Graphical Based.md diff --git a/published/20150126 CD Audio Grabbers--Graphical Based.md b/published/20150126 CD Audio Grabbers--Graphical Based.md new file mode 100644 index 0000000000..4521760139 --- /dev/null +++ b/published/20150126 CD Audio Grabbers--Graphical Based.md @@ -0,0 +1,121 @@ +4 个图形界面的 CD 音频抓取器 +================================================================================ +CD音频抓取器设计用来从光盘中提取(“RIP”)原始数字音频(通常被称为 CDDA 格式)并把它保存成文件或以其他形式输出。这类软件使用户能把数字音频编码成各种格式,并可以从在线光盘数据库 freedb 中下载或上传光盘信息。 + +复制CD合法吗?在美国版权法中,把一个原始CD转换成数字文件用于个人使用等同于‘合理使用’。然而,美国版权法并没有明确的允许或禁止拷贝私人音频CD,而且判例法还没有确立出在具体的哪种情况下可以视为合理使用。而在英国,其版权的定位则更清晰一些。从2014年开始,英国公民制造CD,MP3,DVD,蓝光和电子书的行为成为合法行为。当然,这仅适用于这个人拥有被采集的媒体的实体,并且复制品仅用于他们个人使用。对于欧盟的其他国家,成员国也允许私人复制这种特例。 + +如果你不确定在你生活的国家里这种版权是如何界定的,在你使用这篇文章中所列举的软件前请查询本地的版权法以确定你处在合法的一边。 + +在某种程度上,提取CD音轨看起来有点多余。如[Spotify][5]和Google Play Music这类流媒体服务提供了一个巨大的以通用格式的音乐的库,无需采集你的CD集。但是,如果你已将收藏了一个数量巨大的CD集。能把你的CD转换成可以在便携设备如智能手机、平板和便携式MP3播放器上播放的格式仍然是个诱人的选择。 + +这篇文章推荐了我最喜欢的音频CD抓取器。我挑了四个最好的图形界面的音频抓取器。所有这些应用程序都是在开源许可下发行的。 + +###fre:ac + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-freac.png) + +fre:ac是个开源的音频转换器和CD提取器,支持很多种流行格式和编码器。目前这个应用可以在MA3、MP4/M4A、WMA、Ogg Vorbis、FLAC、AAC、WAV和Bonk格式间转换。这来源于几种不同形式的LAME编码器。 + +#### 功能包括: #### + +- 易学易用 +- MP3、MP4/M4A、WMA、Ogg Vorbis、FLAC、AAC、WAV和Bonk格式转换器 +- 集成了CDDB/freedb标题数据库支持的CD提取器 +- 多核优化的编码器加速了现代PC上的转换速度 +- 对于标签和文件名称的全Unicode支持 +- 易学易用,而当你需要时还提供专家级选项 +- 任务列表 +- 可以使用Winamp 2输入插件 +- 多语言用户界面支持41种语言 + +- 网址: [freac.org][1] +- 开发人员:Robert Kausch +- 许可证: GNU GPL v2 +- 版本号: 20141005 + +###Audex + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-Audex.png) + +Audex是个简单易用的开源的音频CD提取应用。虽然它还处于早期开发阶段,但这个KDE桌面工具足够稳定、智能和简单易用。 + +它的助手可以为LAME、OGG Vorbis(oggenc)、FLAC、FAAC(AAC/MP4)和RIFF WAVE等格式创建配置文件。除了这个助手,你也可以定义你自己的配置文件,这意味着,Audex适用于大部分的命令行编码器。 + +#### 功能包括: #### + +- 可提取CDDA Paranoia +- 提取和编码同时进行 +- 文件名采用本地和远程的CDDB/FreeDB数据库 +- 可以提交到CDDB/FreeDB数据库 +- 类似capitalize的元数据纠正工具 +- 多配置文件提取(每个配置文件文件有一个命令行编码器) +- 从互联网上抓取封面并将他们存在数据库中 +- 在目标目录中创建播放列表、封面和基于模板的信息文件 +- 创建提取和编码协议 +- 将文件传送到FTP服务器 +- 支持国际化 + +- 网址: [kde.maniatek.com/audex][2] +- 开发人员: Marco Nelles +- 许可证: GNU GPL v3 +- 版本号: 0.79 + +###Sound Juicer + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-SoundJuicer.png) + +Sound Juicer是个使用GTK+和GStreamer开发的轻量级CD提取器。它从CD中提取音频并把它转换成音频文件。Sound Juicer还可以直接播放CD中的音轨,在提取前提供预览。 + +它支持任何GStreamer插件所支持的音频编码,包括 MP3、Ogg Vorbis、FLAC和未压缩的PCM格式。 + +它是GNOME桌面环境内建的一部分。 + +#### 功能包括: #### + +- 自动通过CDDB给音轨加标签 +- 可编码成ogg/vorbis、FLAC和原始WAV +- 编码路径的设置很简单 +- 多种风格流派 +- 国际化支持 + +- 网址:[burtonini.com][3] +- 开发人员: Ross Burton +- 许可证:GNU GPL v2 +- 版本号:3.14 + +###ripperX + +![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-ripperX.png) + +ripperX是个开源的图形界面的程序,用于提取CD音轨并把他们编码成Ogg、MP2、MP3或FLAC格式。它的目的是容易使用,只需要点几下鼠标就能转换整张专辑。它支持在CDDB寻找专辑和音轨信息。 + +他使用cdparanoia把CD音轨转换(也就是“提取”)成WAV文件,然后调用Vorbis/Ogg编码器oggenc把WAV文件转换成OGG文件。它还可以调用flac让WAV文件生成无损压缩的FLAC文件。 + +#### 功能包括: #### + +- 非常简单易用 +- 可以把CD音轨提取成WAV、MP3、OGG或FLAC文件 +- 支持CDDB查找 +- 支持ID3v2标签 +- 可暂停提取进程 + +- 网址:[sourceforge.net/projects/ripperx][4] +- 开发人员:Marc André Tanner +- 许可证:MIT/X Consortium License +- 版本号:2.8.0 + +-------------------------------------------------------------------------------- + +转自:http://www.linuxlinks.com/article/20150125043738417/AudioGrabbersGraphical.html + +作者:Frazer Kline +译者:[H-mudcup](https://github.com/H-mudcup) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://www.freac.org/ +[2]:http://kde.maniatek.com/audex/ +[3]:http://burtonini.com/blog/computers/sound-juicer +[4]:http://sourceforge.net/projects/ripperx/ +[5]:http://linux.cn/article-3130-1.html \ No newline at end of file diff --git a/translated/share/20150126 CD Audio Grabbers--Graphical Based.md b/translated/share/20150126 CD Audio Grabbers--Graphical Based.md deleted file mode 100644 index 45254072cb..0000000000 --- a/translated/share/20150126 CD Audio Grabbers--Graphical Based.md +++ /dev/null @@ -1,129 +0,0 @@ - -CD音频抓取器——基于图形界面 -================================================================================ -CD音频抓取器是为了从光盘中提取(“剖出”)原始数字音频(它在一个通常被称为CDDA的格式中)并把它保存成文件或以其他形式输出而设计的。这类软件使用户能把数字音频编码成各种格式,并能下载和上传在线CD目录服务——一个在线的光盘数据库——中的光盘信息。 - -复制CD合法吗?在美国版权法中,把一个原始CD转换成数字文件用于个人使用在被引用时等同于‘合理使用’。然而,美国版权法并没有明确的允许或禁止拷贝私人音频CD,而且判例法还没有确立出在具体的哪种情况下可以视为合理使用。在英国版权的位置更清晰一些。从2014年开始,英国公民制造CD,MP3,DVD,蓝光和电子书的行为成为合法行为。这仅适用于这个人拥有被采集的媒体的实体,并且复制品仅用于他们个人使用。对于欧盟的其他国家,成员国可以允许私人复制这种特例。 - -如果你不确定在你生活的国家里版权处于什么位置,在你使用这两页文章中所列举的软件前请查询本地的版权法以确定你处在合法的一边。 - -在某种程度上,提取CD音轨看起来有点多余。如Spotify和Google Play Music这类流服务提供了一个巨大的以通用格式存在的音乐的库,无需采集你的CD集。但是,如果你已将收藏了一个数量巨大的CD集。能把你的CD转换成可以在便携设备如智能手机、平板和便携式MP3播放器上播放的格式仍然是个诱人的选择。 - -这两页文章推荐了我最喜欢的音频CD抓取器。我挑了四个最好的图形界面的音频抓取器,四个最好的控制台音频抓取器。所有这些应用程序都是在开源许可下发行的。 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/freac.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-freac.png) - -fre:ac是个开源音频转换器和CD提取器,支持很多种流行格式和编码器。目前这个应用可以在MA3、MP4/M4A、WMA、Ogg Vorbis、FLAC、AAC、WAV和Bonk格式间转换。这来源于几种不同形式的LAME编码器。 - -#### 功能包括: #### - -- 易学易用 -- MP3、MP4/M4A、WMA、Ogg Vorbis、FLAC、AAC、WAV和Bonk格式转换器 -- 集成了CDDB/freedb标题数据库支持的CD提取器 -- 多核优化的编码器加速了现代PC上的转换速度 -- 对于标签和文件名称的全Unicode支持 -- 易学易用,当你需要时还提供专家级选项 -- 任务列表 -- 可以使用Winamp 2加入附件 -- 多语言用户界面可以使用41种语言 - -- 网址: [freac.org][1] -- 开发人员:Robert Kausch -- 许可证: GNU GPL v2 -- 版本号: 20141005 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/Audex.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-Audex.png) - -Audex是个简单易用的开源音频CD提取应用。虽然它还处于早期开发阶段,这个KDE桌面工具足够稳定、聪明和简单,可以使用。 - -助手可以给LAME、OGG Vorbis(oggenc)、FLAC、FAAC(AAC/MP4)和RIFF WAVE创建配置文件。除去这个助手,你可以定义你自己的配置文件,这意味着,Audex适用于大部分的命令行编码器。 - -#### 功能包括: #### - -- 可提取CDDA Paranoia -- 提取和编码同时进行 -- 文件名采用本地和远程CDDB/FreeDB数据库 -- 提供新的CDDB/FreeDB数据库入口 -- 类似capitalize的元数据纠正工具 -- 多配置文件提取(每个配置文件文件有一个命令行编码器) -- 从互联网上抓取封面并将他们存在数据库中 -- 在目标目录中创建播放列表、封面和基于模板的信息文件 -- 创建提取和编码协议 -- 将文件传送到FTP服务器 -- 支持国际化 - -- 网址: [kde.maniatek.com/audex][2] -- 开发人员: Marco Nelles -- 许可证: GNU GPL v3 -- 版本号: 0.79 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/SoundJuicer.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-SoundJuicer.png) - -Sound Juicer是个使用GTK+和GStreamer的轻量级CD提取器。它从CD中提取音频并把它转换成音频文件。Sound Juicer还可以直接播放CD中的音轨,在提取前提供预览。 - -由于GStreamer插件它支持任何音频编码,包括 MP3、Ogg Vorbis、FLAC和未压缩的PCM格式。 - -它是GNOME桌面环境已建成的一部分。 - -#### 功能包括: #### - -- 自动通过CDDB给音轨加标签 -- 可编码成ogg/vorbis、FLAC和原始WAV -- 编码路径的设置很简单 -- 多种流派 -- 国际化支持 - -- 网址:[burtonini.com][3] -- 开发人员: Ross Burton -- 许可证:GNU GPL v2 -- 版本号:3.14 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/ripperX.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Utilities/Screenshot-ripperX.png) - -ripperX是个开源的图形交互界面,用于提取CD音轨并把他们编码成Ogg、MP2、MP3或FLAC格式。它的目的是容易使用,只需要点几下鼠标就能转换整张专辑。它支持在CDDB寻找专辑和音轨信息。 - -他使用cdparanoia把CD音轨转换(也就是“提取”)成WAV文件,然后访问Vorbis/Ogg编码器oggenc把WAV文件转换成OGG文件。它还可以访问flac让WAV文件有无损压缩的表现,制成FLAC文件。 - -#### 功能包括: #### - -- 非常简单易用 -- 可以把CD音轨提取成WAV、MP3、OGG或FLAC文件 -- 支持CDDB查找 -- 支持ID3v2标签 -- 可暂停提取进程 - -- 网址:[sourceforge.net/projects/ripperx][4] -- 开发人员:Marc André Tanner -- 许可证:MIT/X Consortium License -- 版本号:2.8.0 - --------------------------------------------------------------------------------- - -转自:http://www.linuxlinks.com/article/20150125043738417/AudioGrabbersGraphical.html - -作者:Frazer Kline -译者:[H-mudcup](https://github.com/H-mudcup) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://www.freac.org/ -[2]:http://kde.maniatek.com/audex/ -[3]:http://burtonini.com/blog/computers/sound-juicer -[4]:http://sourceforge.net/projects/ripperx/ From 61e00fe33cd82b2e2952d55f486de4a92aac77d1 Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 27 Mar 2015 22:13:42 +0800 Subject: [PATCH 674/725] PUB:20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps @Medusar --- ...ows 7 And Delete Ubuntu In 3 Easy Steps.md | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) rename {translated/tech => published}/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md (91%) diff --git a/translated/tech/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md b/published/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md similarity index 91% rename from translated/tech/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md rename to published/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md index 9278bbd707..e20cd1c1ab 100644 --- a/translated/tech/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md +++ b/published/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md @@ -1,4 +1,4 @@ -如何通过简单的3步恢复Windows7同时删除Ubuntu +如何通过简单的3步恢复Windows 7同时删除Ubuntu ================================================================================ ### 说明 ### @@ -8,11 +8,11 @@ 那么为什么我现在要写这篇文章呢? -到目前为止我曾经在很多场合被问到如何从一个装有Windows7或Windows8的双系统中删除Unbuntu系统,因此写这篇文章就变得有意义了。 +到目前为止我曾经在很多场合被问到如何从一个装有Windows7或Windows8的双系统中删除Ubuntu系统,因此写这篇文章就变得有意义了。 我在圣诞节期间浏览了人们在我文章中的留言,感觉是时候把缺失的文章写完同时更新一下那些比较老的又需要关注的文章了。 -我打算把一月份剩下的时间都用在这上面。这是第一步。如果你的电脑上安装了Windown7和Ubuntu双系统,同时你不想通过恢复出厂设置的方式恢复Windows7系统,那么请参考该教程。(注意:对于Windows8系统,有一个独立的教程) +我打算把一月份剩下的时间都用在这上面。这是第一步。如果你的电脑上安装了Windows7和Ubuntu双系统,同时你不想通过恢复出厂设置的方式恢复Windows7系统,那么请参考该教程。(注意:对于Windows8系统,有一个独立的教程) ### 删除Ubuntu系统需要的步骤 ### @@ -24,11 +24,10 @@ 在你开始之前,我建议为你的系统保留一个备份。 -我也建议不要放弃这样的机会也不要使用微软自带的工具。 +我建议你不要放弃备份的机会,但也不要使用微软自带的工具。 [点击查看如何使用Macrinum Reflect备份你的驱动][1] - 如果Ubuntu中有你希望保存的数据,现在就登录进去然后将数据保存到外部硬盘驱动器,USB驱动器或者DVD中。 ### 步骤1 - 删除Grub启动菜单 ### @@ -57,7 +56,7 @@ 点击“创建光盘”。 -将光盘留在电脑中重启电脑,当出现从CD中启动的消息的时候按下键盘上的“回车”键。 +将光盘留在电脑中并重启电脑,当出现从CD中启动的消息的时候按下键盘上的“回车”键。 ![](http://2.bp.blogspot.com/-VPSD50bmk2E/VLWftBg7HxI/AAAAAAAAHnM/APVzvPg4rC0/s1600/recoveryoptionschooselanguage.jpg) @@ -111,13 +110,13 @@ 对于Windows系统来说,我们真正需要的只有驱动器C,所以剩下的是可以删掉的。 -**注意: 注意一下.你的磁盘上可能有恢复分区。 不要删除恢复分区.。它们应该会被标记,将文件系统设置为NTFS或FAT32** +**注意: 注意一下.你的磁盘上可能有恢复分区。 不要删除恢复分区。它们应该有专门的卷标,文件系统也许是NTFS或FAT32** ![](http://3.bp.blogspot.com/-8YUE2p5Fj8Q/VLWlHXst6JI/AAAAAAAAHoQ/BJC57d9Nilg/s1600/deletevolume.png) 在你希望删除的分区上单击右键(例如:root,home和swap分区),然后从弹出的菜单中点击“删除卷”。 -**(不要删除任何NTFS或者FAT32文件系统的分区)** +**(不要删除任何NTFS或者FAT32文件系统的分区!)** 对于剩下的两个分区重复执行上面的操作。 @@ -134,11 +133,12 @@ ![](http://4.bp.blogspot.com/-pLV5L3CvQ1Y/VLWmh-5SKTI/AAAAAAAAHoc/7sJzITyvduo/s1600/diskmanagement4.png) 最后一步是扩展Windows以便于将它再变成一个大的分区。 + 右键点击Windows分区(C盘),然后选择“扩展卷”。 ![](http://1.bp.blogspot.com/-vgmw_N2WZWw/VLWm7i5oSxI/AAAAAAAAHok/k0q_gnIik9A/s1600/extendvolume1.PNG) -当出现左面的窗口的时候点击“下一步”, +当出现左面的窗口的时候点击“下一步”。 ![](http://3.bp.blogspot.com/-WLA86V-Au8g/VLWnTq5RpAI/AAAAAAAAHos/6vzjLNkrwRQ/s1600/extendvolume2.PNG) @@ -165,13 +165,14 @@ 这就是全部内容。一个致力于Linux的网站刚刚向你展示了如何移除Linux然后用Windows7取而代之。 有任何疑问可以在下面评论区留言。 + -------------------------------------------------------------------------------- via: http://www.everydaylinuxuser.com/2015/01/how-to-recover-windows-7-and-delete.html 作者:Gary Newell 译者:[Medusar](https://github.com/Medusar) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 594bd4aae73d8eeac5a2bbf60524e303f1e3f555 Mon Sep 17 00:00:00 2001 From: martin qi Date: Sat, 28 Mar 2015 11:57:59 +0800 Subject: [PATCH 675/725] Update 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ...18 11 Linux Terminal Commands That Will Rock Your World.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md index ba85e4c6a8..0e3af6907d 100644 --- a/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -1,3 +1,5 @@ +translating by martin. + 11 Linux Terminal Commands That Will Rock Your World ================================================================================ I have been using Linux for about 10 years and what I am going to show you in this article is a list of Linux commands, tools and clever little tricks that I wish somebody had shown me from the outset instead of stumbling upon them as I went along. @@ -263,4 +265,4 @@ via: http://linux.about.com/od/commands/tp/11-Linux-Terminal-Commands-That-Will- [9]:http://linux.about.com/od/commands/l/blcmdl8_shutdow.htm [10]:http://linux.about.com/library/cmd/blcmdl1_pkill.htm [11]:http://linux.about.com/od/funnymanpages/a/funman_xkill.htm -[12]:http://blog.kember.net/articles/reisub-the-gentle-linux-restart/ \ No newline at end of file +[12]:http://blog.kember.net/articles/reisub-the-gentle-linux-restart/ From 1c443b48a93d14200dfd701ce64cff8d941df12d Mon Sep 17 00:00:00 2001 From: disylee Date: Sun, 29 Mar 2015 03:21:13 +0800 Subject: [PATCH 676/725] translated by disylee --- ... web server logs interactively on Linux.md | 144 ------------------ ... web server logs interactively on Linux.md | Bin 0 -> 521572 bytes 2 files changed, 144 deletions(-) delete mode 100644 sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md create mode 100644 translated/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md diff --git a/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md b/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md deleted file mode 100644 index fdcc127252..0000000000 --- a/sources/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md +++ /dev/null @@ -1,144 +0,0 @@ -disylee 来一篇~ -How to analyze and view Apache web server logs interactively on Linux -================================================================================ -Whether you are in the web hosting business, or run a few web sites on a VPS yourself, chances are you want to display visitor statistics such as top visitors, requested files (dynamic or static), used bandwidth, client browsers, and referring sites, and so forth. - -[GoAccess][1] is a command-line log analyzer and interactive viewer for Apache or Nginx web server. With this tool, you will not only be able to browse the data mentioned earlier, but also parse the web server logs to dig for further data as well - and **all of this within a terminal window in real time**. Since as of today [most web servers][2] use either a Debian derivative or a Red Hat based distribution as the underlying operating system, I will show you how to install and use GoAccess in Debian and CentOS. - -### Installing GoAccess on Linux ### - -In Debian, Ubuntu and derivatives, run the following command to install GoAccess: - - # aptitude install goaccess - -In CentOS, you'll need to enable the [EPEL repository][3] and then: - - # yum install goaccess - -In Fedora, simply use yum command: - - # yum install goaccess - -If you want to install GoAccess from the source to enable further options (such as GeoIP location), install [required dependencies][4] for your operating system, and then follow these steps: - - # wget http://tar.goaccess.io/goaccess-0.8.5.tar.gz - # tar -xzvf goaccess-0.8.5.tar.gz - # cd goaccess-0.8.5/ - # ./configure --enable-geoip - # make - # make install - -That will install version 0.8.5, but you can always verify what is the latest version in the [Downloads page][5] of the project's web site. - -Since GoAccess does not require any further configurations, once it's installed you are ready to go. - -### Running GoAccess ### - -To start using GoAccess, just run it against your Apache access log. - -For Debian and derivatives: - - # goaccess -f /var/log/apache2/access.log - -For Red Hat based distros: - - # goaccess -f /var/log/httpd/access_log - -When you first launch GoAccess, you will be presented with the following screen to choose the date and log format. As explained, you can toggle between options using the spacebar and proceed with F10. As for the date and log formats, you may want to refer to the [Apache documentation][6] if you need to refresh your memory. - -In this case, Choose Common Log Format (CLF): - -![](https://farm8.staticflickr.com/7422/15868350373_30c16d7c30.jpg) - -and then press F10. You will be presented with the statistics screen. For the sake of brevity, only the header, which shows the summary of the log file, is shown in the next image: - -![](https://farm9.staticflickr.com/8683/16486742901_7a35b5df69_b.jpg) - -### Browsing Web Server Statistics with GoAccess ### - -As you scroll down the page with the down arrow, you will find the following sections, sorted by requests. The order of the categories presented here may vary depending on your distribution or your preferred installation method (from repositories or from source): - -1. Unique visitors per day (HTTP requests having the same IP, same date and same agent are considered an unique visit) - -![](https://farm8.staticflickr.com/7308/16488483965_a439dbc5e2_b.jpg) - -2. Requested files (Pages-URL) - -![](https://farm9.staticflickr.com/8651/16488483975_66d05dce51_b.jpg) - -3. Requested static files (e.g., .png, .js, etc) - -4. Referrers URLs (the URLs where each request came from) - -5. HTTP 404 Not Found response code - -![](https://farm9.staticflickr.com/8669/16486742951_436539b0da_b.jpg) - -6. Operating Systems - -7. Browsers - -8. Hosts (client IPs) - -![](https://farm8.staticflickr.com/7392/16488483995_56e706d77c_z.jpg) - -9. HTTP status codes - -![](https://farm8.staticflickr.com/7282/16462493896_77b856f670_b.jpg) - -10. Top referring sites - -11. Top keyphrases used on Google's search engine - -If you also want to inspect the archived logs, you can pipe them to GoAccess as follows. - -For Debian and derivatives: - - # zcat -f /var/log/apache2/access.log* | goaccess - -For Red Hat based distributions: - - # cat /var/log/httpd/access* | goaccess - -Should you need a more detailed report of any of the above (1 through 11), press the desired section number and then O (uppercase o) to bring up what is called the Detailed View. The following image shows the output of 5-O (press 5, then press O): - -![](https://farm8.staticflickr.com/7382/16302213429_48d9233f40_b.jpg) - -To display GeoIP location information, open the Detail View in the Hosts section, as explained earlier, and you will see the location of the client IPs that performed requests to your web server: - -![](https://farm8.staticflickr.com/7393/16488484075_d778aa91a2_z.jpg) - -If your system has not been very busy lately, some of the above sections will not show a great deal of information, but that situation can change as more and more requests are made to your web server. - -### Saving Reports for Offline Analysis ### - -There will be times when you don't want to inspect your system's stats in real time, but save it to a file for offline analysis or printing. To generate an HTML report, simply redirect the output of the GoAccess commands mentioned earlier to an HTML file. Then just point your web browser to the file to open it. - - # zcat -f /var/log/apache2/access.log* | goaccess > /var/www/webserverstats.html - -Once the report is displayed, you will need to click on the Expand link to show the detail view on each category: - -![](https://farm9.staticflickr.com/8658/16486743041_bd8a80794d_o.png) - -注释:youtube视频 - - -As we have discussed throughout this article, GoAccess is an invaluable tool that will provide you, as a system administrator, with HTTP statistics in a visual report on the fly. Although GoAccess by default presents its results to the standard output, you can also save them to JSON, HTML, or CSV files. This converts GoAccess in an incredibly useful tool to monitor and display statistics of a web server. - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/interactive-apache-web-server-log-analyzer-linux.html - -作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/gabriel -[1]:http://goaccess.io/ -[2]:http://w3techs.com/technologies/details/os-linux/all/all -[3]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html -[4]:http://goaccess.io/download#dependencies -[5]:http://goaccess.io/download -[6]:http://httpd.apache.org/docs/2.4/logs.html diff --git a/translated/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md b/translated/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md new file mode 100644 index 0000000000000000000000000000000000000000..c65b78f21ed2ad0a2c8352bae2e61ba5e5622b6f GIT binary patch literal 521572 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
Fu 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 Ils^jm4_=!k7ytkO literal 0 HcmV?d00001 From 553403497343ed063f16c3a443e336a3878b0451 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Sun, 29 Mar 2015 08:47:01 +0800 Subject: [PATCH 677/725] [Translated] 20141204 Intense Gameplay--Try these 13 Roguelike games.md --- ... Gameplay--Try these 13 Roguelike games.md | 406 ------------------ ... Gameplay--Try these 13 Roguelike games.md | 400 +++++++++++++++++ 2 files changed, 400 insertions(+), 406 deletions(-) delete mode 100644 sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md create mode 100644 translated/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md diff --git a/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md b/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md deleted file mode 100644 index 199474e714..0000000000 --- a/sources/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md +++ /dev/null @@ -1,406 +0,0 @@ -FSSlc translating - -Intense Gameplay? Try these 13 Roguelike games -================================================================================ -Roguelike is a sub-genre of role-playing games. It literally means "a game like Rogue". Rogue is a dungeon crawling video game first released in 1980, standing out for being fiendishly addictive. Its goal was to retrieve the Amulet of Yendor, hidden deep in the 26th level, and ascend back to the top. - -There is no exact definition of a roguelike, but this type of game typically has the following characteristics: - -- High fantasy narrative background -- Procedural level generation. Most of the game world is generated by the game for every new gameplay session. This is meant to encourage replayability -- Turn-based dungeon exploration and combat -- Tile-based graphics that are randomly generated -- Random conflict outcomes -- Permanent death death works realistically, once you're gone, you're gone -- High difficulty - -This article compiles a good selection of roguelike games available for Linux. If you enjoy intense, addictive gameplay, try these 13 games. Don't be put off by the primitive graphics, you'll soon forget the visuals once you get immersed. All of them are available to download without charge, and almost all are released under an open source license. - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/DungeonCrawlStoneSoup.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games/Screenshot-Dungeon1.png) - -Dungeon Crawl Stone Soup is an open-source, single-player, role-playing roguelike game of exploration and treasure-hunting in dungeons filled with dangerous and unfriendly monsters in a quest to rescue the mystifyingly fabulous Orb of Zot. - -Dungeon Crawl Stone Soup is a continuation of Linley's Dungeon Crawl. It is openly developed and invites participation from the Crawl community. - -Dungeon Crawl has superb, deep tactical gameplay, innovative magic and religion systems, and a grand variety of monsters to fight. Crawl is also one of the hardest roguelikes to beat. When you finally beat the game and write your victory post on rec.games.roguelike.misc, you know you have achieved something. - -Features include: - -- Well-rounded, deep tactically rich roguelike -- Hand-drawn maps -- Numerous portal vaults -- Slick interface -- Innovative magic and religion systems -- Wide range of Gods, Characters, Items, and Smart Monsters - -- Website: [crawl.develz.org][1] -- Developer: Stone Soup devteam -- License: Crawl General Public License -- Version Number: 0.15.2 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/DwarfFortress.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games/Screenshot-DwarfFortress.png) - -Dwarf Fortress is a single-player fantasy game, similar to NetHack. You can control a dwarven outpost or an adventurer in a randomly generated, persistent world. - -The game features three modes of play (Dwarf Fortress, Adventurer and Legends modes), a distinct, randomly-generated world (complete with terrain, wildlife and legends), gruesome combat mechanics and vicious schools of carp. - -Features include: - - -- The world persists as long as you like, over many games, recording historical events and tracking changes -- Command your dwarves as they search for wealth in the mountain - - Craft treasures and furniture from many materials and improve these objects with precious metals, jewels and more - - Defend yourself against attacks from hostile civilizations, the wilderness and the depths - - Support the nobility as they make demands of your populace - - Keep your dwarves happy and read their thoughts as they work and relax - - Z coordinate allows you to dig out fortresses with multiple levels. Build towers or conquer the depths - - Build floodgates to divert water for farming or to drown your adversaries -- Play an adventurer and explore, quest for glory or seek vengeance - - Meet adversaries from previous games - - Recruit people in towns to come with you on your journey - - Explore without cumbersome plot restrictions - - Seamlessly wander the world -up to 197376 x 197376 squares total -or travel more rapidly on the region map - - Accept quests from the town and civilization leaders - - Retire and meet your old characters. Bring them along on an adventure with a new character or reactivate them and play directly - - Z coordinate allows you to move seamlessly between dungeon levels and scale structures fighting adversaries above and below -- The combat model uses skills, body parts, wrestling, charging and dodging between squares, bleeding, pain, nausea, and much more -- A dynamic weather model tracks wind, humidity and air masses to create fronts, clouds, rain storms and blizzards -- Over two hundred rock and mineral types are incorporated into the world, placed in their proper geological environments -- Add new creatures, weapons, plants, metals and other objects via modifiable text files -- Extended ASCII character set rendered in 16 colors (including black) as well as 8 background colors (including black) - -- Website: [www.bay12games.com/dwarves/][2] -- Developer: Tarn Adams -- License: Freeware -- Version Number: 0.40.19 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/ADOM.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-ADOM.png) - -Ancient Domains of Mystery (ADOM) is a rogue-like game which has been in development since 1994. - -It is a single-user game featuring the exploration of a dungeon complex. You control a fictional character described by race, class, attributes, skills, and equipment. This fictional character is trying to achieve a specific goal (see below) and succeed in a difficult quest. To fulfill the quest, you have to explore previously undiscovered tunnels and dungeons, fight hideous monsters, uncover long forgotten secrets, and find treasures of all kind. - -During the game, you explore dungeon levels which are randomly generated each game. You might also encounter certain special levels, which present a particular challenge or are built around a certain theme. - -Features include: - -- Huge game world with hundreds of locations such as towns, randomized dungeons, elemental temples, graveyards, ancient ruins, towers and other secrets -- Loads of races (dwarves, drakelings, mist elves, hurthlings, orcs, trolls, ratlings and many others) and even more classes (fighters, elementalists, assassins, chaos knights, duelists and much more) allowing for infinite play styles -- Hundreds of monsters and items, many with enhanced random features -- A corruption system forcing you to balance lust for power with fear of damnation -- Spells, prayers, mindcraft, alchemy, crafting and more -- Dozens of quests and branching story lines -- Numerous wildly different endings that might alter reality itself - -- Website: [www.adom.de][3] -- Developer: Thomas Biskup -- License: Postcardware -- Version Number: 1.20 Prelease 20 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/ToME.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-ToME.png) - -Tales of Maj’Eyal (ToME) is a free, open source roguelike RPG, featuring tactical turn-based combat and advanced character building. It is written as a module that runs in T-Engine 4.0. - -This is the Age of Ascendancy, after over ten thousand years of strife, pain and chaos the known world is at last at relative peace. The Spellblaze last effects are now tamed, the land slowly heals itself and the civilisations rebuild themselves after the Age of Pyre. - -Features include: - -- Suitable for gamers without any rogueline experience -- Supports both graphical tiles and ASCII mode -- Over 40 abilities available on some characters -- Talent system -- Combat engine -- Online persistent stat/achievement tracking -- IRC chat client -- Expandable and moddable -- Atmospheric music -- Unlock new races, classes, starting points, playmodes and features - -- Website: [te4.org][4] -- Developer: ToME Development Team -- License: GNU GPL v3.0 -- Version Number: 1.2.5 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/CataclysmDarkDaysAhead1.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Cataclysm.png) - -Cataclysm is an open source post-apocalyptic roguelike, set in the countryside of fictional New England after a devastating plague of monsters and zombies. It is a continuation of Whale's original Cataclysm, which expands it with numerous new creatures, buildings, gameplay mechanics and many other features. - -While some have described it as a "zombie game", there's far more to Cataclysm than that. Struggle to survive in a harsh, persistent, procedurally generated world. Scavenge the remnants of a dead civilization for for food, equipment, or, if you're lucky, a vehicle with a full tank of gas to get you the hell out of Dodge. Fight to defeat or escape from a wide variety of powerful monstrosities, from zombies to giant insects to killer robots and things far stranger and deadlier, and against the others like yourself, that want what you have... - -Cataclysm is very different from most roguelikes in many ways. Rather than being set in a vertical, linear dungeon, it is set in an unbounded, 3D world. This means that exploration plays a much bigger role than in most roguelikes, and the game is much less linear. As the map is so huge, it is actually completely persistant between games. If you die, and start a new character, your new game will be set in the same game world as your last. Like in many roguelikes, you will be able to loot the dead bodies of previous characters; unlike most roguelikes, you will also be able to retrace their steps completely, and any dramatic changes made to the world will persist into your next game. - -Features include: - - -- Detailed character creation, with a plethora of traits to choose -- Defense mode, a coffeebreak mode with fast-paced combat -- Bionics; Similar to the magic system in many games -- Mutations, both positive and negative -- Unbounded, fully randomized world map that is persistent between characters -- Item crafting - - New recipes may be acquired by honing your knowledge through practice or learning from books -- Realistic fire, smoke, and other dynamic map effects -- A day/night cycle with the need to sleep. Use caffeine to stay awake longer if you must but be aware this is not healthy -- Over 300 item types, including a multitude of real-world guns, drugs, and tools - - Many drugs are addictive, and will require continuous use to avoid withdrawal effects. -- Ability to board doors and windows, construct traps and fortify your home base to prevent a rude awakening by a zombie -- Ability to construct your own wooden constructions, including walls and a roof -- Ability to drive around in vehicles found in the post-apocalyptic landscape - - These can be modified to your needs, or you could even build one from scratch -- A temperature system, being too cold or too hot is quite hazardous -- Preliminary tile support -- WorldGen options, and versatile editing methods -- -- Website: [en.cataclysmdda.com][5] -- Authors: Kevin Granade and others -- License: Creative Commons Attribution-ShareAlike 3.0 Unported License -- Version Number: 0.B - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/GoblinHack1.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-GoblinHack.png) - -Goblin Hack is an open source roguelike OpenGL-based smooth-scrolling ASCII graphics game. The game is inspired by the likes of NetHack, but faster with fewer keys. - -Goblin Hack has a simple interface that appears to appeal to players of all ages, and fires their imagination in today's world of over-rendered games. - -Players can choose one of several classes before being thrown into the first floor of a randomized, ongoing dungeon. - -Features include: - -- Impressive graphics (compared with many other roguelike games) -- Simple interface -- Choose one of several classes before being thrown into the first floor of a randomized, ongoing dungeon -- Manually save the game - -- Website: [goblinhack.sourceforge.net][6], [github.com/goblinhack/goblinhack][7] -- Authors: Neil McGill -- License: GNU GPL v2 -- Version Number: 1.19 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/SLASH%27EM.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-SlashEM.png) - -Super Lotsa Added Stuff Hack - Extended Magic (SLASH'EM) is a role-playing game where you control a single character. SLASH'EM is a variant of NetHack. It also has an interface and gameplay similar to Rogue, ADOM, Anghand and NetHack. You control the actions through the keyboard and view the world from an overhead perspective. - -The problem: The Amulet of Yendor has been stolen. Not only that but it appears that the Wizard of Yendor (not a nice person), who took the amulet, is hiding in the Dungeons of Doom (not a friendly place). - -Features include: - -- Offers extra features, monsters, and items -- Novel features inlude the Monk class and Sokoban levels -- The main dungeon is much larger than in NetHack - -- Website: [www.slashem.org][8] -- Developer: The Slash'EM development team -- License: MIT License, NetHack General Public License -- Version Number: 0.0.7E7F3 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/NetHack.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games/Screenshot-NetHack.jpg) - -NetHack is a wonderfully silly, yet quite addictive Dungeons and Dragons-style adventure game. The "net" element references that its development has been coordinated through the Internet. The "hack" element refers to a genre of role-playing games known as hack and slash for their focus on combat. - -In NetHack you play the part of a fierce fighter, wizard, or any of many other classes, fighting your way down to retrieve the Amulet of Yendor (try saying THAT one backwards!) for your god. On the way, you might encounter a quantum mechanic or two, or perhaps a microscopic space fleet, or -- if you're REALLY lucky -- the Ravenous Bugblatter Beast of Traal. - -Features include: - -- 45-50 levels, most of which are randomly generated -- Variety of items: weapons, armour, scrolls, potions, rings, gems, and an assortment of tools such as keys and lamps -- Blessings and curses -- Permadeath: expired characters cannot be revived without having made backup copies of the actual save files -- Interfaces: - - Console - - Graphical, using X, Qt toolkit or GNOME libraries - -- Website: [www.nethack.org][9] -- Developer: The NetHack DevTeam -- License: NetHack General Public License -- Version Number: 3.4.3 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/AsciiSector.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-AsciiSector.png) - -Ascii Sector is a free space combat/exploration/trading game which is based on the classic computer game Wing Commander: Privateer released by Origin Systems in 1993. - -In Ascii Sector, you start with a simple spaceship and can then accept missions or trade goods to earn enough money to upgrade your ship or buy a new one. You can engage in deadly fights both in space, on the ground and on board spaceships, and using the Ascii Sector scripting language, you can create your own quests for the game or have fun with other players' quests. - -Features include: - -- Uses the ANSI character set for the graphics -- Real depth to the gameplay -- Offers a wide variety of bases, missions, commodities and ships -- Ships include: Broadsword, Centurion, Demon, Dralthi, Drayman, Galaxy, Gladius, Gothri, Kamekh, Nexus, Orion, Paradign, Stileto, Talon, Tarsus, and Ulysses -- Four quadrants: Alizarin, Crimson, Mauve, and Viridian -- Downloadable quests -- Scripting of quests -- Ascii Sector quest language, create your own stories in the Ascii Sector universe -- NPCs on planets can be attacked and robbed -- Persistent fleets that can move around, change control of systems, engage enemy fleets, head back for repairs and rebuilds -- Ships whose systems have been disabled can be boarded -- Download high quality music files - -- Website: [www.asciisector.net][10] -- Developer: Christian Knudsen -- License: Freeware -- Version Number: 0.7.1.4 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/Angband.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Angband.png) - -Angband is a free, single-player graphical dungeon exploration game that uses ASCII characters where you take the role of an adventurer, exploring a deep dungeon, fighting monsters, and acquiring the best weaponry you can, in preparation for a final battle with Morgoth, the Lord of Darkness. It has been in development since the 1990s. - -Angband is along the lines of Rogue and NetHack. It is derived from the games Moria and Umoria, which were in turn based on Rogue. It is often described as a "roguelike" game because the look and feel of the game is still quite similar to Rogue. Many of these new creatures and objects are drawn from the writings of J.R.R Tolkien, although some of the monsters come straight from classical mythology, Dungeons & Dragons, Rolemaster, or the minds of the orginal Angband coders. - -Features include: - -- 100 level dungeon -- New levels are randomly generated -- Choose to be a human, half-elf, elf, hobbit, gnome, dwarf, half-orc, half-troll, dunadan, high-elf, or kobold -- Artifacts -- Spellcasting -- Monsters -- Monster pits -- Monster nests - -- Website: [rephial.org][11] -- Developer: Angband Development Team -- License: GNU GPL v2 -- Version Number: 3.5.0 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/UnNetHack1.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-UnNetHack.png) - -UnNetHack is a fork of NetHack. NetHack was first released in 1987, and is considered by many gamers to be one of the best gaming experiences the computing world offers. - -Features include: - - -- Adds a number of enhancements to NetHack such as additional monsters, more levels, a few new objects, additional dangers, more challenging gameplay, and most importantly more entertainment than vanilla NetHack -- Tutorial to help new players get started - -- Website: [sourceforge.net/apps/trac/unnethack][12] -- Authors: Patric Mueller -- License: Nethack General Public License -- Version Number: 5.1.0 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/HydraSlayer.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-HydraSlayer.png) - -Hydra Slayer is an open source Roguelike game focused on slaying Hydras. It is inspired by Greek mythology, Dungeon Crawl, MathRL seven day roguelike, and some mathematical puzzles about brave heroes slaying many headed beasts. - -Features include: - -- Unique gameplay mechanics -- A theme which mixes Greek mythology and mathematics -- Traditional roguelike ASCII graphics, or tiles/3D display -- 5 player character races with very distinct tactics, strengths and weaknesses -- 28 enemy types: - - 10 basic types of elemental hydras (each of them has two special variations) - - 8 types of special enemies - - Harmless mushrooms for strategic advantage -- 28 types of equipment (not counting material and size/power variations) -- 15 weapon materials -- 18 types of non-equipment items -- 3 game geometries to choose -- 8 level topologies (including the Mobius strip and Klein bottle) -- 11 level generators -- 2 endings - -- Website: [www.roguetemple.com/z/hydra][13] -- Developer: Zeno Rogue -- License: GNU GPL v2 -- Version Number: 16.1 - ----------- - -![](http://www.linuxlinks.com/portal/content2/png/Brogue1.png) - -![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Brogue.png) - -Brogue is an open source Roguelike game for Mac OS X, Windows, Linux, iOS and Android. - -Brogue is a direct descendant of Rogue, a dungeon crawling video game first developed by Michael Toy and Glenn Wichman around 1980. Unlike other popular modern roguelikes, Brogue favors simplicity over complexity, while trying to ensure that the interactions between components are interesting and varied. - -The goal of the game is to travel to the 26th subterranean floor of the dungeon, retrieve the Amulet of Yendor and return with it to the surface. For the truly skillful who desire further challenge, depths below 26 contain three lumenstones each, items which confer an increased score upon victory. - -Brogue is a challenging game, but still great fun to play. Try not to be disheartened by the difficulty of the game; with some application, Brogue will become very addictive. - -Features include: - -- Favors simplicity over complexity -- User-friendly features -- Compared with Rogue, Brogue has a more sophisticated level generation -- XP and levelling system removed -- Traps, protecting items -- Additional monster types and magical items - -- Website: [sites.google.com/site/broguegame][14] -- Authors: Brian Walker -- License: GNU Affero GPL -- Version Number: 1.7.3 - --------------------------------------------------------------------------------- - -via: http://www.linuxlinks.com/article/201412031524381/RoguelikeGames.html - -作者:Frazer Kline -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[1]:http://crawl.develz.org/ -[2]:http://www.bay12games.com/dwarves/index.html -[3]:http://www.adom.de/ -[4]:http://te4.org/ -[5]:http://en.cataclysmdda.com/ -[6]:http://goblinhack.sourceforge.net/ -[7]:https://github.com/goblinhack/goblinhack -[8]:http://www.slashem.org/ -[9]:http://www.nethack.org/ -[10]:http://www.asciisector.net/ -[11]:http://rephial.org/ -[12]:http://sourceforge.net/apps/trac/unnethack/ -[13]:http://www.roguetemple.com/z/hydra/ -[14]:https://sites.google.com/site/broguegame/ diff --git a/translated/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md b/translated/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md new file mode 100644 index 0000000000..aedc2fe881 --- /dev/null +++ b/translated/share/20141204 Intense Gameplay--Try these 13 Roguelike games.md @@ -0,0 +1,400 @@ +寻求激烈的游戏玩法?那就试试这 13 款 Roguelike 游戏吧 +================================================================================ +Roguelike 是角色扮演游戏的一个子类。从字面上看,它的意思是 “像 Rogue 的游戏”。Rogue 是一个关于地下城冒险的视频游戏,于 1980 年第一次发行,以友好、易上瘾而著称。这个游戏的目标是取得深藏于第 26 层的 "Amulet of Yendor",再返回到顶层逃出生天。 + +Roguelike 的准确定义并不存在,但这类游戏通常具有下面的特点: + +- 奇幻的叙事背景; +- 程序性的关卡产生。每个新的游戏环节中的游戏世界均由游戏产生。这样做是为了鼓励玩家重玩; +- 回合制的地下城探险和战斗; +- 随机生成的基于瓷砖的(Tile-based)图形环境; +- 随机的冲突生成; +- 永久死亡 。在游戏中,死亡真的存在,一旦你死了,就代表你真的结束了。 +- 高难度。 + +这篇文章精心挑选了一些可运行在 Linux 平台下的 roguelike 游戏。假如你喜欢激烈、易上瘾的游戏,可以尝试这 13 款游戏。不要因它们原始的画质而退步,一旦你沉浸其中,你将很快忘记画面的简陋。所有的这些都可以免费下载,并且几乎所有的游戏都是在开源协议下发行的。 +---------- + +![](http://www.linuxlinks.com/portal/content2/png/DungeonCrawlStoneSoup.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games/Screenshot-Dungeon1.png) + +Dungeon Crawl Stone Soup 是一个开源的,单用户角色扮演类的 roguelike 游戏,玩家要在充满危险和不友好的怪兽的地下城中进行探险和寻找宝藏,并在任务中拯救 mystifyingly fabulous Orb of Zot(注:这里我不知如何翻译) + +Dungeon Crawl Stone Soup 是 Linley 开发的 Dungeon Crawl 游戏的延续。它被公开地开发并邀请 Crawl 社区的人员来参与其中。 + +Dungeon Crawl 有着超棒且深层次的战术游戏环节,创新的魔法和信仰系统,以及数量宏大的可供战斗的怪兽。Crawl 也是最难以攻陷的 roguelike 游戏之一。当你最终在游戏中通关并将你的胜利宣言张贴在 rec.games.roguelike.misc ,这时在你心中,你知道你已经取得了什么。 + +特点有: + +- 丰富多彩的, 富含深层次战术的 roguelike 游戏; +- 手绘地图; +- 无数的金库; +- 漂亮的界面; +- 创新的魔法和信仰系统; +- 广泛的神灵,角色,物品和聪明的怪兽; + +- 网站: [crawl.develz.org][1] +- 开发者: Stone Soup 开发小组 +- 协议: Crawl General Public License +- 版本号: 0.15.2 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/DwarfFortress.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games/Screenshot-DwarfFortress.png) + +Dwarf Fortress 是一个绝妙的单人游戏,与 NetHack 类似。你可以在一个随机生成的持久的世界中,控制一个矮人哨兵或一个冒险者。 + +这个游戏的特色有:三种游戏模式(矮人要塞,冒险者,传说模式),一个独特的随机生成的世界(由地形,野生生物和传说等组成), 阴森的战斗机制以及各种恶性的鲤鱼。 + +特点包括: + +- 在这个世界里,你想持续多久都可以。可以经历许多次游戏,记录历史事件,对更改进行跟踪等; +- 当你的矮人在山群中寻找宝藏时,你可以对它们下达命令 + - 用各种材料来手工制作珍宝、家具,并可以用贵重金属,宝石等来改进这些珍宝、家具; + - 在广度和深度上保护你自己,防御来自敌对文明的袭击; + - 当他们有求于你的民众时,支持贵族(注:感觉自己翻译错了这句) + - 维持你的矮人的高兴状态,在它们工作和休闲时读取它们的思想; + - Z 坐标可以使你在多个层级上建造你的堡垒,建立塔台或征服深处; + - 建立水闸来为耕种调水或水淹你的对手; +- 扮演一个探险者并进行探索,为荣誉而战或复仇 + - 与以前的游戏中的对手相遇; + - 在你经过的旅途中营救小城里的人群 + - 在没有笨重的绘画限制下探险; + - 无缝的漫游游戏世界-总共达到 197376 x 197376 平方 -或者在区域地图上更快速地穿行; + - 接受小城或文明社会的领导委托的任务 + - 收回并与你扮演的老角色相遇,在一次探险中,以一个新的角色带上它们或者直接使用它们; + - Z 轴使得你可以在各个地牢层级间无缝地上下移动以及调整结构的尺寸来和对手战斗; +- 战斗模型的使用技巧,身体组成,搏斗,在方块之间进行操作和躲避,流血,疼痛,恶心及其他; +- 一个动态的天气模型用来跟踪风,湿度及空气的动向,用来创造前线,风,暴风雨和暴风雪 +- 超过 200 种岩石和矿物类型被引入游戏世界,它们被放置在合适的地理环境中; +- 通过可更改的文本文件来添加生物,武器,植物,金属和其他对象; +- 扩展的以 16 色(包括黑色)渲染的 ASCII 角色集合,以及 8 种背景颜色(包括黑色); + +- 网站: [www.bay12games.com/dwarves/][2] +- 开发者: Tarn Adams +- 协议: 免费软件 +- 版本号: 0.40.19 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/ADOM.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-ADOM.png) + +Ancient Domains of Mystery (ADOM) 是一个 rogue-like 游戏,自从 1994 年开始,它一直在开发。 + +它是一个包含复杂地牢的单用户游戏。你控制一个用种族,类别,属性,技巧和装备等描述的虚构角色。这个虚构角色正尝试着达到一个特定的目标(参考下面的介绍)并在一个困难的任务中取胜。为了完成任务,你必须在以前没有发现的隧道和地牢中探险,和丑陋的怪兽战斗,解开一系列遗忘的秘密,并找到宝藏。 + +在游戏期间,你在每次游戏时随机生成的各层地牢中探索。你也可能遇到某个特定的关卡,其中有着特定的挑战或者围绕某个特定主题而生成。 + +特点包括: + +- 拥有上百个地点的巨大游戏世界,例如城堡,随机生成的地牢,主题寺庙,墓地,古代遗迹,塔台和其他名胜; +- 各种各样的种族(dwarves, drakelings, mist elves, hurthlings, orcs, trolls, ratlings and many others)(注:种族信息可以参考[这里](http://ancardia.wikia.com/wiki/Race) 和更多的类别 (fighters, elementalists, assassins, chaos knights, duelists and much more),允许无限的游戏风格; +- 上百个怪兽和物品,其中的许多拥有增强的随机特性; +- 一个堕落系统,迫使你在对力量的欲望和对诅咒的恐惧之间进行权衡; +- 法术,祈祷,思想技艺,炼金术,手工艺和更多; +- 多样的任务和分支故事主线; +- 许多完全不同的结局,可能改变现实本身 + +- 网站: [www.adom.de][3] +- 开发者: Thomas Biskup +- 协议: Postcardware +- 版本号: 1.20 Prelease 20 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/ToME.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-ToME.png) + +Tales of Maj’Eyal (ToME) (注:中文翻译为 马基埃亚尔的传说) 是一个免费,开源的 roguelike 角色扮演游戏,包含特色的战术回合制战役和先进的建筑。它作为运行在 T-Engine 4.0 中的一个模块而被创造。 + +现在处于王权世纪(Age of Ascendancy),在长达一万年的冲突痛苦和混乱之后,我们所知的世界终于进入了一个相对和平的时期。 “魔法大爆裂(Spellblaze)” 留下的影响已经大为减缓, 大地的伤痕也慢慢地开始愈合。在薪火世纪(Age of Pyre)之后,各个文明也纷纷开始重建家园。(注:翻译来源于 [这里](http://www.qiyun.org/zhuanti/majiaiyaerdechuanshuo.htm))    +特点包括: + +- 适合于那些没有 rogueline 体验的玩家; +- 同时支持图形界面和 ASCII 模式; +- 某些角色拥有超过 40 种能力; +- 天赋系统; +- 战役引擎; +- 在线的持久状态/成就追踪; +- IRC 聊天客户端; +- 可扩展,可修改; +- 充满激情的音乐; +- 解锁新的种族,类别,起始点,游戏模式和特点等; + +- 网站: [te4.org][4] +- 开发者: ToME 开发团队 +- 协议: GNU GPL v3.0 +- 版本号: 1.2.5 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/CataclysmDarkDaysAhead1.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Cataclysm.png) + +Cataclysm 是一个开源的 “后末世” roguelike 游戏,背景设定在由怪兽和僵尸带来的毁灭性的瘟疫后虚构的新英格兰(New England) 乡村。它是 Whale 开发的原有 Cataclysm 的继续,拓展了更多新的生物,建筑,游戏机制和其他特点。 + +尽管有些人描述它为一个 “僵尸游戏”,但 Cataclysm 远比一个“僵尸游戏”包含更多内容。玩家要在一个由程序生成的严酷,持久的世界中艰难生存下去。在一个死寂的文明世界中为了食物,装备或者假如你足够幸运,一辆装满汽油的汽车来逃离 Dodge --这个如地狱一般的地方-- 而苦苦寻觅。通过战斗来击败或从一系列强大的怪兽底下逃离,从僵尸到巨型昆虫或机器人杀手以及更加奇怪和致命的东西中逃离,以及和那些想要得到你拥有的东西的同你一样的人战斗。 + +在许多方面上, Cataclysm 同大多数的 roguelike 游戏有很大的不同。它被设定在一个无界的三维世界里,而不是设定在一个垂直、线性的地牢。这意味着相比于大多数的 roguel 游戏,探险将占一个更大的比重,而且这个游戏将具有更少的线性性。由于地图是如此的巨大,在每次游戏之间,它可以完全保持原样。假如你死了,并以一个新的角色开始,你的新游戏将会设定在同你最近呆过的游戏世界相同的世界里。同许多 roguelike 游戏一样,你可以获得先前角色的战利品;而与大多数 roguelike 不同的是,你也可以重新踏上先前角色的轨迹,并且对世界做出的任何戏剧性改变将会维持到你的下一次游戏。 + +特点包括: + +- 详细的角色创造,提供了数量众多的特性来选择; +- 防御模式, 一个休息模式和快节奏作战; +- Bionics; 类似于在许多其他游戏里的 魔法系统; +- 基因突变, 有好的和坏的; +- 无界的, 完全随机的世界地图,可以在角色交替时保持不变; +- 创造物品 + - 新的制作方法可能需要通过练习或从书本中获得来磨练你的知识; +- 逼真的火,烟和其他动态的地图特效; +- 一个昼/夜循环,需要睡觉。假如你必须的话,可以使用咖啡因来保持更长时间的清醒,但这不健康; +- 超过 300 种物品类型,包括众多的现实世界的枪支,药品和工具; + - 许多药品是上瘾的,并需要持续使用来避免负面效果; +- 通过修补门,窗,建造陷阱和巩固你的家的基石来防止一个僵尸的突然造访; +- 拥有构建你自己的木质建筑,包括墙和屋顶的能力; +- 使用汽车在“后末世”发现的景观中兜风; + - 这个可以根据你的需求来修改,或甚至你可以从底层建造一个景观; +- 一个温度系统,太冷或太热都非常危险; +- 初步支持 tile 界面; +- 一个类似于 World Gen 一样的选项和多彩的编辑方法; + +- 网站: [en.cataclysmdda.com][5] +- 作者: Kevin Granade 及其他 +- 协议: Creative Commons Attribution-ShareAlike 3.0 Unported License +- 版本号: 0.B + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/GoblinHack1.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-GoblinHack.png) + +Goblin Hack 是一个拥有基于 OpenGL 的平滑滚动的图形界面的开源 roguelike 游戏。这个游戏受 NetHack 外观的启发,但更加快速且使用更少的按键。 + +Goblin Hack 有一个简洁的界面,在今天这个过度渲染的游戏世界中,似乎它对所有年龄段的玩家都有吸引力,并启发了这些玩家的想象力。 + +在被投进一个随机的正在生成的地牢之前,玩家可以从几个角色类别中选择一个角色。 + +特点包括: + +- 令人印象深刻的界面(相比于许多其他的 roguelike 游戏); +- 简洁的界面; +- 在被投进一个随机的正在生成的第一层地牢之前,玩家可以从几个角色类别中选择一个角色; +- 手动保存游戏; + +- 网站: [goblinhack.sourceforge.net][6], [github.com/goblinhack/goblinhack][7] +- 作者: Neil McGill +- 协议: GNU GPL v2 +- 版本号: 1.19 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/SLASH%27EM.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-SlashEM.png) + +Super Lotsa Added Stuff Hack - Extended Magic (SLASH'EM) 是一个角色扮演游戏,在其中你控制一个单独的角色。SLASH'EM 是 NetHack 的一个变种。它拥有一个和 Rogue, ADOM, Anghand 及 NetHack 相似的界面和游戏玩法。你通过键盘来控制角色的动作,以一个俯视的视角来查看这个世界。 + +背景: Amulet of Yendor 已被偷走,不仅如此,偷走 amulet 的 Wizard of Yendor(不是一个好人)似乎深藏于 Dungeons of Doom(不是一个友好的地方)。 + +特点包括: + +- 提供额外的特点、怪兽和项目; +- 新颖的特点包括僧人种类和类似推箱子的关卡; +- 主要的地牢比在 NetHack 中的要大很多; + +- 网站: [www.slashem.org][8] +- 开发者: Slash'EM 开发团队 +- 协议: MIT License, NetHack General Public License +- 版本号: 0.0.7E7F3 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/NetHack.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games/Screenshot-NetHack.jpg) + + +NetHack 是一个绝妙的简洁,但又非常吸引人的具有地下城与龙风格的冒险游戏。“net”元素指的是它的发展已经根据网络进行了协调,“hack”元素指的是角色扮演游戏的一种体裁,以乱砍、猛砍著称,着眼于战斗。 + +在 NetHack 中,你扮演激烈的战士、精灵或许多其他种类的一部分角色,一路战斗着,为你的神灵获取 Amulet of Yendor(可以说这是一个倒退!)。在这个过程中,你可能会遇到一个或两个 quantum mechanic(注:从[这里](http://nethack.wikia.com/wiki/Quantum_mechanic)得知,这指的是一种怪兽),或者可能遇到一个小型的太空舰队,抑或是 --假如你*足够*幸运 -- Ravenous Bugblatter Beast of Traal。(注:我参考了[这里](http://nethack.wikia.com/wiki/Douglas_Adams))。 + +特点包括: + +- 45-50 个关卡, 其中的大多数随机生成 +- 各种各样的物品:武器、盔甲、卷轴、药水、戒指、宝石和各种各样的工具,如钥匙和灯 +- 祝福和诅咒 +- Permadeath永久死亡: 若没有对当前的保存文件进行备份,过期的角色不能再找回; +- 界面: + - 控制台; + - 图形化界面, 使用 X、Qt 工具集或 GNOME 库 + +- 网站: [www.nethack.org][9] +- 开发者: NetHack 开发团队 +- 协议: NetHack 通用公共许可证 +- 版本号: 3.4.3 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/AsciiSector.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-AsciiSector.png) + +Ascii Sector 是一个免费的太空战斗/探险/交易游戏,它基于经典的电脑游戏 `Wing Commander: Privateer`,后者由 Origine Systems 公司于 1993 年发布。 + +在 Ascii Sector 中,刚开始你将驾驶一艘简易的飞船,然后可以通过接受任务或者贩卖物品来挣得足够多的钱以升级你的飞船或重新再买一艘。不管是在太空中,还是在地面上,抑或是在飞船上,你可以专注于致命的战斗;并且通过使用 Ascii Sector 的脚本语言,你还可以为游戏创造自己的任务或享受其他玩家创造的任务。 + +特点包括: + +- 图像界面使用 ANSI 人物集; +- 真正的深入到游戏中; +- 提供各种基地,任务,商品和飞船; +- 飞船型号包括: Broadsword, Centurion, Demon, Dralthi, Drayman, Galaxy, Gladius, Gothri, Kamekh, Nexus, Orion, Paradign, Stileto, Talon, Tarsus 和 Ulysses; +- 四个象限: Alizarin, Crimson, Mauve, and Viridian; +- 可下载的任务; +- 任务可用脚本编辑; +- Ascii Sector 任务语言,在 Ascii Sector 宇宙中创造你自己的故事; +- 可以袭击或抢劫位于星球上的 NPCs(指非玩家控制角色); +- 可以到处移动的持久性舰队、可以改变系统的控制、玩弄敌人的舰队、回基地修复或重建; +- 可以登录系统受损的飞船; +- 可下载高质量的音乐文件; + +- 网站: [www.asciisector.net][10] +- 开发者: Christian Knudsen +- 协议: 免费软件 +- 版本号: 0.7.1.4 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/Angband.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Angband.png) + +Angband 是一个免费、单用户、图形界面的地下城探险游戏,它使用 ASCII 字符的角色,在其中你将以一个冒险者的角色探索一个深深的地下城,与怪兽战斗,获得你能取得的最好武器,准备着与黑暗之主 Morgoth 的最后绝战。从上世纪九十年代开始,它一直在持续地开发着。 + +Angband 沿袭了 Rogue 和 NetHack 的风格路线。它由 Moria 和 Umoria 游戏衍生而来,反过来这两个游戏都以 Rogue 为基础。它经常被描述为一个 “roguelike”游戏,因为它的外观和游戏体验与 Rogue 非常相似。很多游戏中的新生物、物品都来自 J.R.R Tolkien 的画作,尽管有些野兽直接来源于经典的神话、Dungeons & Dragons, Rolemaster(根据wikipedia,这两个都是角色扮演游戏的名称)、或原来 Angband 开发者的脑海中。 + +特点包括: + +- 100 层地牢; +- 随机产生的新关卡; +- 可以选择成为人类、半精灵、精灵、霍比特人、地精、矮人,半兽人,半巨魔, 登丹人 ,高等精灵,或者狗头人; +- 神器; +- 施法; +- 怪物; +- 怪物坑; +- 怪物巢穴; + +- 网站: [rephial.org][11] +- 开发者: Angband 开发小组 +- 协议: GNU GPL v2 +- 版本号: 3.5.0 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/UnNetHack1.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-UnNetHack.png) + +UnNetHack 是 NetHack 的一个分支。NetHack 最开始于 1987 年发行,并且许多游戏玩家认为它是计算机世界所能提供的最好游戏体验的游戏之一。 + +特点包括: + +- 增加了许多针对 NetHack 的增强,如额外的怪兽、更多的关卡、许多新的元素、更多的危险、更具挑战性的游戏,以及最重要的,相比普通的 NetHack,它更具娱乐性; +- 帮助新手开始的教程; + +- 网站: [sourceforge.net/apps/trac/unnethack][12] +- 作者: Patric Mueller +- 协议: Nethack General Public License +- 版本号: 5.1.0 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/HydraSlayer.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-HydraSlayer.png) + +Hydra Slayer 是一个专注于杀死九头蛇的开源 Roguelike 游戏。它受希腊神话、地下城探险、MathRL 七日 rouguelike,和一些关于勇敢的英雄杀死多头野兽的数字谜题等启发。 + +特点如下: + +- 独特的游戏机制; +- 混合希腊神话和数字迷宫的主题; +- 传统的 roguelike ASSCII 字符界面或 砖块/3D 界面; +- 5 种人物角色,具有极为不同的战术、力量及弱点; +- 28 种敌人类型: + - 10 种基本的九头蛇类型(每种类型都有两种变种); + - 8 种特殊类型的敌人; + - 无害的蘑菇可用作战术工具; +- 28 种装备(并包括材料和装备的大小/力量的变种); +- 15 种武器材料; +- 18 种不可装备项; +- 3 种可供选择的地图; +- 8 种层级拓扑结构(包括莫比乌斯带和克莱因瓶); +- 11 个等级; +- 2 种胜利结局; + +- 网站: [www.roguetemple.com/z/hydra][13] +- 开发者: Zeno Rogue +- 协议: GNU GPL v2 +- 版本号: 16.1 + +---------- + +![](http://www.linuxlinks.com/portal/content2/png/Brogue1.png) + +![](http://www.linuxlinks.com/portal/content/reviews/Games2/Screenshot-Brogue.png) + +Brogue 是一个开源的 Roguelike 游戏,它可以运行在 Mac OS X, Windows, Linux, iOS 和 Android 等平台下。 + +Brogue 是 Rogue 的一个直系分支,后者是一个由 Michael Toy 和 Glenn Wichman 于 1980 年左右最先开发的地下城探险视频游戏。与其他受欢迎的现代 Roguelike 游戏不同, Brogue 追求简单而不是复杂性,同时尽力确保游戏的不同组成之间的联系是有趣且纷繁多彩的。 + +这个游戏的目标是取得深藏于地下第 26 层的 "Amulet of Yendor",再返回到顶层逃出生天。对于那些技术娴熟且想进一步探险的人来说,位于 26 层之下的每层均包含 3 颗 lumenstone (流明石)(注:这里与我在[这里](http://brogue.wikia.com/wiki/Lumenstone)看到的有些出入),获得它们,将在胜利的基础上被授予额外的得分。 + +Brogue 是一个富有挑战性的游戏,但玩着仍有许多趣味。尽量不要因游戏的高难度而灰心;试玩一段时间之后,你会发现它变得非常吸引人。 + +特点如下: + +- 追求简单而非复杂; +- 对用户友好; +- 相比于 Rogue, Brogue 有一个更加复杂的层级划分; +- 移除了 XP 和 水平系统 ; +- 陷阱,保护项目; +- 额外的怪兽类型和魔法项目; + +- 网站: [sites.google.com/site/broguegame][14] +- 作者: Brian Walker +- 协议: GNU Affero GPL +- 版本号: 1.7.3 + +-------------------------------------------------------------------------------- + +via: http://www.linuxlinks.com/article/201412031524381/RoguelikeGames.html + +作者:Frazer Kline +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:http://crawl.develz.org/ +[2]:http://www.bay12games.com/dwarves/index.html +[3]:http://www.adom.de/ +[4]:http://te4.org/ +[5]:http://en.cataclysmdda.com/ +[6]:http://goblinhack.sourceforge.net/ +[7]:https://github.com/goblinhack/goblinhack +[8]:http://www.slashem.org/ +[9]:http://www.nethack.org/ +[10]:http://www.asciisector.net/ +[11]:http://rephial.org/ +[12]:http://sourceforge.net/apps/trac/unnethack/ +[13]:http://www.roguetemple.com/z/hydra/ +[14]:levelling system \ No newline at end of file From f0a7b1fbb4b343ced5d9dbe77d8a96442d781dc3 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Sun, 29 Mar 2015 09:25:28 +0800 Subject: [PATCH 678/725] Update 20150316 How to access Gmail from the command line on Linux with Alpine.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译这篇文章。 --- ...access Gmail from the command line on Linux with Alpine.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md b/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md index d62533381f..498cd2c827 100644 --- a/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md +++ b/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md @@ -1,3 +1,5 @@ +FSSlc translating + How to access Gmail from the command line on Linux with Alpine ================================================================================ If you are a command-line lover, I am sure that you welcome with open arms any tool that allows you to perform at least one of your daily tasks using that powerful work environment, e.g., from [scheduling appointments][1] and [managing finances][2] to accessing [Facebook][3] and [Twitter][4]. @@ -100,4 +102,4 @@ via: http://xmodulo.com/gmail-command-line-linux-alpine.html [2]:http://xmodulo.com/manage-personal-expenses-command-line.html [3]:http://xmodulo.com/access-facebook-command-line-linux.html [4]:http://xmodulo.com/access-twitter-command-line-linux.html -[5]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html \ No newline at end of file +[5]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html From 319fa18b90704828abae0193d935196825273995 Mon Sep 17 00:00:00 2001 From: KayGuoWhu Date: Sun, 29 Mar 2015 10:51:26 +0800 Subject: [PATCH 679/725] translated --- ...ble ssh login without entering password.md | 42 ------------------- ...ble ssh login without entering password.md | 41 ++++++++++++++++++ 2 files changed, 41 insertions(+), 42 deletions(-) delete mode 100644 sources/tech/20150323 How to enable ssh login without entering password.md create mode 100644 translated/tech/20150323 How to enable ssh login without entering password.md diff --git a/sources/tech/20150323 How to enable ssh login without entering password.md b/sources/tech/20150323 How to enable ssh login without entering password.md deleted file mode 100644 index 64449b7228..0000000000 --- a/sources/tech/20150323 How to enable ssh login without entering password.md +++ /dev/null @@ -1,42 +0,0 @@ -[translating by KayGuoWhu] -How to enable ssh login without entering password -================================================================================ -Assume that you are a user "aliceA" on hostA, and wish to ssh to hostB as user "aliceB", without entering her password on hostB. You can follow this guide to **enable ssh login without entering a password**. - -First of all, you need to be logged in as user "aliceA" on hostA. - -Generate a public/private rsa key pair by using ssh-keygen. The generated key pair will be stored in ~/.ssh directory. - - $ ssh-keygen -t rsa - -Then, create ~/.ssh directory on aliceB account at the destination hostB by running the following command. This step can be omitted if there is already .ssh directory at aliceB@hostB. - - $ ssh aliceB@hostB mkdir -p .ssh - -Finally, copy the public key of user "aliceA" on hostA to aliceB@hostB to enable password-less ssh. - - $ cat .ssh/id_rsa.pub | ssh aliceB@hostB 'cat >> .ssh/authorized_keys' - -From this point on, you no longer need to type in password to ssh to aliceB@hostB from aliceA@hostA. - -### Troubleshooting ### - -1. You are still asked for an SSH password even after enabling key authentication. In this case, check for system logs (e.g., /var/log/secure) to see if you see something like the following. - - Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys - -In this case, failure of key authentication is due to the fact that the permission or ownership ~/.ssh/authorized_keys file is not correct. Typically this error can happen if ~/.ssh/authorized_keys is read accessible to anyone but yourself. To fix this problem, change the file permission as follows. - - $ chmod 700 ~/.ssh/authorized_keys - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/how-to-enable-ssh-login-without.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/nanni \ No newline at end of file diff --git a/translated/tech/20150323 How to enable ssh login without entering password.md b/translated/tech/20150323 How to enable ssh login without entering password.md new file mode 100644 index 0000000000..4f9a4c317d --- /dev/null +++ b/translated/tech/20150323 How to enable ssh login without entering password.md @@ -0,0 +1,41 @@ +如何实现ssh无密码登录 +================================================================================ +假设你是hostA上的一个用户"aliceA",想以用户“aliceB”的身份ssh到hostB上,但又不想输入密码。那么,你可以参考这篇教程实现ssd无密码登录。 + +首先,你需要以用户“aliceA”的身份登录到hostA上。 + +然后,使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下。 + + $ ssh-keygen -t rsa + +接下来,使用下面的命令在目标主机hostB上的aliceB用户目录下创建~/.ssh目录。如果在aliceB@hostB上已经存在.ssh目录,这一步会被略过。 + + $ ssh aliceB@hostB mkdir -p .ssh + +最后,将hostA上用户“aliceA”的公钥拷贝到aliceB@hostB上,来实现无密码ssh。 + + $ cat .ssh/id_rsa.pub | ssh aliceB@hostB 'cat >> .ssh/authorized_keys' + +自此以后,从aliceA@hostA上ssh到aliceB@hostB上再也不需要输入密码。 + +### 疑难解答 ### + +1. 即使在密钥认证生效后,你可能仍然需要输入SSH密码。如果遇到这种情况,请检查系统日志(如/var/log/secure)以查看是否出现下面的异常。 + + Authentication refused: bad ownership or modes for file /home/aliceB/.ssh/authorized_keys + +在这种情况下,密钥认证的失败是由于~/.ssh/authorized_keys文件的权限或拥有者不正确。一般情况,如果这个文件对除了你之外的所有用户都可读,就会出现这个错误。用下面的方式改变文件的权限以修正错误。 + + $ chmod 700 ~/.ssh/authorized_keys + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/how-to-enable-ssh-login-without.html + +作者:[Dan Nanni][a] +译者:[KayGuoWhu](https://github.com/KayGuoWhu) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni \ No newline at end of file From b3c4eb72f31d7f20ca8c0fd6873308f382987210 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 29 Mar 2015 20:04:04 +0800 Subject: [PATCH 680/725] PUB:20150309 New App Brings Android Notifications to The GNOME Desktop @geekpi --- ...roid Notifications to The GNOME Desktop.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/share => published}/20150309 New App Brings Android Notifications to The GNOME Desktop.md (72%) diff --git a/translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md b/published/20150309 New App Brings Android Notifications to The GNOME Desktop.md similarity index 72% rename from translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md rename to published/20150309 New App Brings Android Notifications to The GNOME Desktop.md index b180d43571..7b299029bb 100644 --- a/translated/share/20150309 New App Brings Android Notifications to The GNOME Desktop.md +++ b/published/20150309 New App Brings Android Notifications to The GNOME Desktop.md @@ -1,24 +1,24 @@ 一款在Gnome桌面中显示Andorid通知的程序 ================================================================================ + +**你很快就可以在GNOME桌面中看到Andorid通知了,这都要归功于一个正在开发中的新程序。** + ![Fancy seeing your Android alerts here? You can.](http://www.omgubuntu.co.uk/wp-content/uploads/2015/02/Screen-Shot-2015-02-24-at-17.47.48.png) -在这里看到Android通知很棒么?你可以 +在这里看到Android通知是不是很棒?就可以了~ -**你很快就可以在GNOME桌面中看到Andorid通知了,这都要归功于一个在开发中的新程序。** - - -这个新的项目叫“Numtius”,这可以让在Andorid手机上收到的通知显示在GNOME桌面上。它会集成在GNOME 3.16中,并且它[重新设计了通知系统][1],这个app和特性会用在其他更多的地方。 +这个新的项目叫“Nuntius”,这可以让在Andorid手机上收到的通知显示在GNOME桌面上。它会集成在GNOME 3.16中,并且它[重新设计了通知系统][1],这个app和特性会用在其他更多的地方。 这个app的开发者希望在这个月GNOME 3.16发布之前可以完成,它将通过蓝牙工作来保证不会传给外部的系统或者使用在线存储。这意味着你的电话必须接近GNOME桌面来保证这个功能可用。 他现在还不能回复短消息或者对提醒采取操作。 -开发团队警告说**这是一个早期发布版本**,那些打算重度使用的人们现在应该做好最少功能的准备。 +开发团队警告说**这是一个早期发布版本**,那些打算期望很高人要有暂时只能提供部分功能的心理准备。 -在GNOME桌面上看Android通知的移动端app现在已经在[Google Play商店][2]了,GNOME程序已经在Fedora的仓库中了。 +这个用来配合在GNOME桌面上看Android通知的移动端app现在已经在[Google Play商店][2]找到了,而GNOME程序已经放在Fedora的仓库中了。 -开发者已经在Gituhb上开源了Android和GNOME接收端的程序, +开发者已经在Gituhb上开源了Android和GNOME接收端的程序。 -一个相似的工具[已经在KDE桌面上有了][3] - ‘KDE Connect’ - 已经有一两年了,通过Pushbullet来为使用Chrome的iOS和Android平台在Windows、MAC和Linux桌面上提供相似的功能。 +在一两年前,[KDE桌面上已经有了][3]一个相似的工具 - ‘KDE Connect,它通过Pushbullet来为使用Chrome的iOS和Android提供相似的功能,支持Windows、MAC和Linux桌面。 - [Nuntius for Android & GNOME on GitHub][4] @@ -28,7 +28,7 @@ via: http://www.omgubuntu.co.uk/2015/03/new-app-brings-android-notifications-to- 作者:[Joey-Elijah Sneddon][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 8a70b4ae4d92da122a0b289ff705ee4719cf63f9 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 29 Mar 2015 20:13:35 +0800 Subject: [PATCH 681/725] PUB:20150112 How to Find and Remove Duplicate Files on Linux @geekpi --- ... to Find and Remove Duplicate Files on Linux.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename {translated/tech => published}/20150112 How to Find and Remove Duplicate Files on Linux.md (81%) diff --git a/translated/tech/20150112 How to Find and Remove Duplicate Files on Linux.md b/published/20150112 How to Find and Remove Duplicate Files on Linux.md similarity index 81% rename from translated/tech/20150112 How to Find and Remove Duplicate Files on Linux.md rename to published/20150112 How to Find and Remove Duplicate Files on Linux.md index 7e0b96c45f..d646627e84 100644 --- a/translated/tech/20150112 How to Find and Remove Duplicate Files on Linux.md +++ b/published/20150112 How to Find and Remove Duplicate Files on Linux.md @@ -2,13 +2,13 @@ ================================================================================ 大家好,今天我们会学习如何在Linux PC或者服务器上找出和删除重复文件。这里有一款工具你可以工具自己的需要使用。 -无论你是否正在使用Linux桌面或者服务器,有一些很好的工具能一帮你扫描系统中的重复文件并删除它们来释放空间。图形界面和命令行界面的都有。重复文件是磁盘空间不必要的浪费。毕竟,如果你的确需要在不同的位置享有同一个文件,你可以使用软链接或者硬链接,这样就可以这样就可以在磁盘的一处地方存储数据了。 +无论你是否正在使用Linux桌面或者服务器,有一些很好的工具能够帮你扫描系统中的重复文件并删除它们来释放空间。图形界面和命令行界面的都有。重复文件是磁盘空间不必要的浪费。毕竟,如果你的确需要在不同的位置享有同一个文件,你可以使用软链接或者硬链接,这样就可以在磁盘的一个地方存储数据了。 ### FSlint ### -[FSlint][1] 在不同的Linux发行办二进制仓库中都有,包括Ubuntu、Debian、Fedora和Red Hat。只需你运行你的包管理器并安装“fslint”包就行。这个工具默认提供了一个简单的图形化界面,同样也有包含各种功能的命令行版本。 +[FSlint][1] 在不同的Linux发行版二进制仓库中都有,包括Ubuntu、Debian、Fedora和Red Hat。只需你运行你的包管理器并安装“fslint”包就行。这个工具默认提供了一个简单的图形化界面,同样也有包含各种功能的命令行版本。 -不要让它让你害怕使用FSlint的图形化界面。默认情况下,它会自动选中Duplicate窗格,并以你的家目录作为搜索路径。 +不要担心FSlint的图形化界面太复杂。默认情况下,它会自动选中Duplicate窗格,并以你的家目录作为搜索路径。 要安装fslint,若像我这样运行的是Ubuntu,这里是默认的命令: @@ -27,7 +27,7 @@ Fedora: sudo yum install fslint -For OpenSuse: +OpenSuse: [ -f /etc/mandrake-release ] && pkg=rpm [ -f /etc/SuSE-release ] && pkg=packages @@ -51,11 +51,11 @@ For OpenSuse: ![Delete Duplicate files with Fslint](http://blog.linoxide.com/wp-content/uploads/2015/01/delete-duplicates-fslint.png) -使用按钮来删除任何你要删除的文件,并且可以双击预览。 +点击按钮来删除任何你要删除的文件,并且可以双击预览。 完成这一切后,我们就成功地删除你系统中的重复文件了。 -**注意** 的是命令行工具默认不在环境的路径中,你不能像典型的命令那样运行它。在Ubuntu中,你可以在/usr/share/fslint/fslint下找到它。因此,如果你要在一个单独的目录运行fslint完整扫描,下面是Ubuntu中的运行命令: +**注意** ,命令行工具默认不在环境的路径中,你不能像典型的命令那样运行它。在Ubuntu中,你可以在/usr/share/fslint/fslint下找到它。因此,如果你要在一个单独的目录运行fslint完整扫描,下面是Ubuntu中的运行命令: cd /usr/share/fslint/fslint @@ -84,7 +84,7 @@ via: http://linoxide.com/file-system/find-remove-duplicate-files-linux/ 作者:[Arun Pyasi][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 8779d4476a55820943d8c3446a8895679bb4d681 Mon Sep 17 00:00:00 2001 From: disylee Date: Sun, 29 Mar 2015 20:16:41 +0800 Subject: [PATCH 682/725] disylee translated --- ... web server logs interactively on Linux.md | Bin 521572 -> 6723 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/translated/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md b/translated/tech/20150215 How to analyze and view Apache web server logs interactively on Linux.md index c65b78f21ed2ad0a2c8352bae2e61ba5e5622b6f..51ad96d272d1d80ff260754f42f83ebd4777ee0e 100644 GIT binary patch literal 6723 zcmb_hSx*~T7Jm1ys39-Yk-XsrXmz^PN^couI?;5xrIBT!!Y;tw#zwXYNi+`*1h4^P z2!z!HOxQxez$5`D<0I!TeZ?=t@Ko#KV#=vmKs%`PqU|!>e`l;oA|n44)iM0pwgx0GHg80mUh*J zEmmFl%5vim{;^opg>}79s#Vt2#Y0G_Rc5qTOKN&iE97g%WpICYKB-q1#an%BkDVTC z%TIo}`%|qru2-k^{3IJ&uNC*iMI0tl$#U&{SFKmjz>6ulyLho|Z>ELPR#cIo;2Sgm~W?mQ(#B}vA2)#PI}HLoW} z@U_0Wgs<<;)40ou+pJK*EpeTmfL-cTdv!>p-e&ck6zoaQpH6BkMKdAIfSbkE){-; zlZ9`=8`NQ%T4_|TE`c69-C`rB5D12=6*IN+2+JNKKnz(^N42vF*htMzv+Ov@%7umn z)l31m;2UvXa5Vh)e%z?5TY7bc#6Q?lC+F3vMR8rSO4^eXJvk{|zYbw=fThOj!xe*I zZWm9;wdE9T$6m}O(7>(_1C+%b$%E043ymypfJHh0+OGN?BPuiw|| z7w!=BzEQeDasi$%iE zHA(JIgc1WmMG8gY2{{~=dZIFqJc%=GC;-Bw;n8S4mqbQE4SXfDe|z`a+fuDO%Sy9; zpUV&bQR+N7VbfD;dWR%I!6_P&G%&u`$EGLM^;2OmoEEzL4h2YU zfg9B4If#ekua&3N(zLez_Tl=SF$M+Y@rkX8OPuirUT3R)?+K=CSeDkKj7PfA}t0A3VC>-EiD{2aQvK;0Lem#tWN0 z5RG()dIn;OWVI?0xht$#dz5IX-#E}G|E4s3Y`6?|<|>T~-JvukOl}{wO5&38fElII zh1znq*2ru9a7(YC$ehp>Uh#bh54}>U=imB$9>10^=!H$(W7FICtLBpG{E?t7vPI;* znHwluA|e~ktd9t9Q3|LFD9Mz05P}^Y3nA(+_t8K^TwNxhXeg3NSL7T!PqLkf_j8sa zGrMOnJv?KDVR2Q2g(%KwHT8vpD93^YJ3K>yF$%*KY1>Fh)8CS{Te9DmWA<>g$1d}> z+-eu8X~QFm^QM{wW1?)a=M%zGO|f+)J&LuUL9G+ic-mBENrinF2fZfGrm5GN=HT9> z^hdn|OkijY#R)?gIm;2QNgst*>sV>7-sg zG6?c^BkmFccv-@g`dk4NzH>Uzed-Hu&~$)S&>hsw21w~+uVKh588v89G8ZS++zQJM z>B(WAfojmr)%**;&+Dg(m^wvZ38(3WBUT+X9F^PU{b-M>z`-AkHgjG z>U22*PH(U+;Bwf0?eF=_VlhhRWEuvr@vtSEqmDI9txuh@iv=_xy^t5p6p~Y2DvfG| zq*mI7z=%)*dg|Nr^dYdlI$cB$L$zMHfSZ7scp!bG zSjWeTkw$i>*WK=giX9GTXPfNuba{f^-j2>LLpADi_2jZ%9c!c+93jBQ2jHPuJ0lf& zc#7+6dImyL%%}I*<{PyPu(*r*f#@PlQEt}#HB4Ct4Pz@;DnECzHY+TN|Zp0{`g~)UK#e@ zj?1uza&DK`zk4cf?kcpYGZY z)D@&3cWsBK)8kdz94IVpfzC%p`gIt3YvU)FS^k@nR~4<+c23;e>h5s0cX&J7+Pd03 z-fnN3qoE{IQ&|Dk;F*DPXDQuv+Q6IMV+qmmLu}Nfi}$kCF+L3 zs*tZgp4IlZS@u+vJ6`!4@cJrL-DuB`0&?PaTJv@39}To6Q1qvDYNFie_{|;q1A>y4_fZQ~&>4)1|c~l+W!i<9Oa-w-Uo%Q?~!U~4cR^F&nn99

5yu6V3> z=p>)ui26thd^}X>Opc#g$ap}y9IdTR7urpyyFJ*^>T-3vF9XuB63RW=07gfS<^__k zRrBg&RLw~>Jqv^@ia z3BGOM(f3hNy($k~9iqn~$=wbVRit;jEO$8N)<%+F1_$ViVUou5BdkRB^b20*E>f(z zq-{_hic$bA1(v^TfV^Q6+{0D?t&i_d5DeIykY1+!Y83+bXr9_mMjakul??-7^Ck}? zP`4CY9dj$7pNymD<1d1>VFBvZb8G6{8OttmYYjd=^eva*5i15#qc?9{`S}odRDRu&J`B8={2^+guuet0I{3CR-8gA*0|e zI*+mVLEL2cP_l?=_ZV{@h1v2G$W9-iN(#Uc$Ybw^dw;!crr+h*U{s^VawT^6mMpyARjMLvoNuEIQqtmZxeU4o63 z+3_>vBMe!ey`ahjaL6N%cl15&xXe7Qal#8(PB;ru$IkW!AAq7 zuS*HqfBvQG_JDk+|L?(`ueudEfx-Mnl)q~E@(a6=;Y(OlOjOuG)yn(A*OZ2bV+d11 zyMUX?zz7(lli7G^Ko4svtN`G3w<-pjO&h@d&3m1e+Rw*!3|s zHflBoMDa(91C*ljJaje7!O>rSy7MCxr7l!BzPkFl}I5LDB+ zdd=oQ?GXE3VGc^Xl^JzvhXz?5fFBewGROPlm&IcJgMTcR`yu&rb1U?qFB%*OM|q%x zA_*lX2NI$Cid8HItjId6NINU0d8-_e!w(-RF>9EX{zei)ZS1TO*S_!Nu2@J3OE>?O zk0|}J-zWPm`r(Z6HW-RO3@ggzDBBZC^bT}!*5cHyZ$7iA>v^m+h?@9>%eTI{@=nux z$}X&k5TbL(lJEA-d-txqK`-q0Vsa!NmJ`a|SoBvVkoZhuQ)?`>qE*X~0v`35|D(ZH zDuN8gZlQ1>V*gCiGcWYLG;k<@3O4Gp|8vSboN2bDJdo&(#_T=9A{K1h%~R&ygm!Qi zY?009gRX=U=#6u8(5FZg77rW(DjSI8eQ2^+l1zS<`ax?4R=%6(bh1(L= zfqtvfuY|2Jr9T=EC8Dv1)@Z~U!16e1lu+yuO&ZOD1*3zJa8wRn3*vqxs6+yg#DXo_ h|2k~J0>pgJVWv$)ku4hQu?M4pxV_cprnQs7`#;}AbS3}* literal 521572 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

Fu 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 Ils^jm4_=!k7ytkO From e0857ebb0b263caf9432c70e395b55489a14adf8 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 29 Mar 2015 20:22:25 +0800 Subject: [PATCH 683/725] PUB:20150121 How to apply image effects to pictures on Raspberry Pi @coloka --- ...w to apply image effects to pictures on Raspberry Pi.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) rename {translated/tech => published}/20150121 How to apply image effects to pictures on Raspberry Pi.md (71%) diff --git a/translated/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md b/published/20150121 How to apply image effects to pictures on Raspberry Pi.md similarity index 71% rename from translated/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md rename to published/20150121 How to apply image effects to pictures on Raspberry Pi.md index f767522855..4cbdc0fcb8 100644 --- a/translated/tech/20150121 How to apply image effects to pictures on Raspberry Pi.md +++ b/published/20150121 How to apply image effects to pictures on Raspberry Pi.md @@ -2,7 +2,7 @@ ================================================================================ 现在使用[树莓派摄像头模组][1]("raspi cam"),也可以像使用卡片相机那样,给拍摄的照片增加各种各样的图片特效。 raspistill命令行工具,为您的树莓派提供了丰富的图片特效选项,来美化处理你的图片。 -你可以用[这3个命令行工具][2]来[抓取raspicam拍摄的照片或者视频][3],在这文章中将重点介绍其中的raspstill工具。raspstill工具提供了丰富的控制选项来处理图片,比如说:锐度(sharpness)、对比度(contrast)、亮度(brightness)、饱和度(saturation)、ISO、自动白平衡(AWB)、以及图片特效(image effect)等。 +有[三个命令行工具][2]可以用于[抓取raspicam拍摄的照片或者视频][3],在这文章中将重点介绍其中的raspstill工具。raspstill工具提供了丰富的控制选项来处理图片,比如说:锐度(sharpness)、对比度(contrast)、亮度(brightness)、饱和度(saturation)、ISO、自动白平衡(AWB)、以及图片特效(image effect)等。 在这篇文章中,将介绍如何使用raspstill工具以及raspicam摄像头模组来控制照片的曝光、AWB以及其他的图片效果。我写了一个简单的python脚本来自动拍摄照片并在这些照片上自动应用各种图片特效。raspicam的帮助文档中介绍了该摄像头模组所支持的曝光模式、AWB和图片特效。总的来说,raspicam一共支持16种图片特效、12种曝光模式以及10种AWB选项。 @@ -27,7 +27,6 @@ Python脚本很简单,如下所示 。 time.sleep(0.25) print "End of image capture" -The Python script operates as follows. First, create three array/list variable for the exposure, AWB and image effects. In the example, we use 2 types of exposure, 3 types of AWB, and 13 types of image effects values. Then make nested loops for applying the value of the three variables that we have. Inside the nested loop, execute the raspistill application. We specify (1) the output filename; (2) exposure value; (3) AWB value; (4) image effect value; (5) the time to take a photo, which is set to 1 second; and (6) the size of the photo, which is set to 640x480px. This Python script will create 78 different versions of a captured photo with a combination of 2 types of exposure, 3 types of AWB, and 13 types of image effects. 这个脚本完成了以下几个工作。首先,脚本中定义了3个列表,分别用于枚举曝光模式、AWB模式以及图片特效。在这个实例中,我们将使用到2种曝光模式、3种AWB模式以及13种图片特效。脚本会遍历上述3种选项的各种组合,并使用这些参数组合来运行raspistill工具。传入的参数共6个,分别为:(1)输出文件名;(2)曝光模式;(3)AWB模式;(4)图片特效模式;(5)拍照时间,设为1秒;(6)图片尺寸,设为640x480。脚本会自动拍摄78张照片,每张照片会应用不同的特效参数。 @@ -41,7 +40,7 @@ The Python script operates as follows. First, create three array/list variable f ### 小福利 ### -除了使用raspistill命令行工具来操控raspicam摄像模组以外,还有其他的方法可以用哦。[Picamera][4]是一个python库,它提供了操控raspicam摄像模组的的API接口,这样就可以便捷地构建更加复杂的应用程序。如果你精通python,那么picamera一定是你项目的好伙伴。picamera已经被默认集成到Raspbian最新版本的的镜像中。当然,如果你用的不是最新的Raspbian或者是使用其他的操作系统版本,你可以通过下面的方法来进行手动安装。 +除了使用raspistill命令行工具来操控raspicam摄像模组以外,还有其他的方法可以用哦。[Picamera][4]是一个python库,它提供了操控raspicam摄像模组的的API接口,这样就可以便捷地构建更加复杂的应用程序。如果你精通python,那么picamera一定是你的 hack 项目的好伙伴。picamera已经被默认集成到Raspbian最新版本的的镜像中。当然,如果你用的不是最新的Raspbian或者是使用其他的操作系统版本,你可以通过下面的方法来进行手动安装。 首先,先在你的系统上安装pip,详见[指导][6]。 @@ -57,7 +56,7 @@ via: http://xmodulo.com/apply-image-effects-pictures-raspberrypi.html 作者:[Kristophorus Hadiono][a] 译者:[coloka](https://github.com/coloka) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From bb17eea419213c3c6fdf06bce3cf1c74c4d033e7 Mon Sep 17 00:00:00 2001 From: VicYu Date: Mon, 30 Mar 2015 09:48:31 +0800 Subject: [PATCH 684/725] Update 20150326 A Peep into Process Management Commands in Linux.md --- ...150326 A Peep into Process Management Commands in Linux.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150326 A Peep into Process Management Commands in Linux.md b/sources/tech/20150326 A Peep into Process Management Commands in Linux.md index f05ed62768..e1df53bab5 100644 --- a/sources/tech/20150326 A Peep into Process Management Commands in Linux.md +++ b/sources/tech/20150326 A Peep into Process Management Commands in Linux.md @@ -1,3 +1,5 @@ + Vic020 + A Peep into Process Management Commands in Linux ================================================================================ A program in execution is called a process. While a program is an executable file present in storage and is passive, a process is a dynamic entity comprising of allocated system resources, memory, security attributes and has a state associated with it. There can be multiple processes associated with the same program and operating simultaneously without interfering with each other. The operating system efficiently manages and keeps track of all the processes running in the system. @@ -188,4 +190,4 @@ via: http://linoxide.com/linux-command/process-management-commands-linux/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://linoxide.com/author/bnpoornima/ \ No newline at end of file +[a]:http://linoxide.com/author/bnpoornima/ From 1b53d1157810b9d641dc4df1b4d1a590d47f1746 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 29 Mar 2015 20:29:12 +0800 Subject: [PATCH 685/725] PUB:20150123 Keep History Of Notifications With Recent Notifications AppIndicator @geekpi --- ...fications With Recent Notifications AppIndicator.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename {translated/tech => published}/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md (81%) diff --git a/translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md b/published/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md similarity index 81% rename from translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md rename to published/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md index 2cc7a4778a..4437f991b9 100644 --- a/translated/tech/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md +++ b/published/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md @@ -1,12 +1,12 @@ -使用最近通知工具保持通知历史 +使用“最近通知工具”保持桌面通知历史 ================================================================================ ![How to see recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu_14.jpeg) -大多数桌面环境像Unity和Gnome都有通知特性。我很喜欢其中一些。它尤其当我[在Ubuntu上收听流媒体][1]时帮到我。默认上通知会在桌面的顶部显示几秒接着就会小时。如果你听见了通知的声音但是没有看到内容怎么办?你该如何知道通知的内容? +大多数桌面环境像Unity和Gnome都有通知特性。我很喜欢其中一些。它尤其当我[在Ubuntu上收听流媒体][1]时帮到我。默认上通知会在桌面的顶部显示几秒接着就会消失。如果你听见了通知的声音但是没有看到内容怎么办?你该如何知道通知的内容? 如果你可以看到最近所有通知的历史会很棒吧?是的,我知道这很棒。你可以在Ubuntu Unity或者Gnome中使用最近**通知小工具**来追踪所有的最近通知。 -最近通知位于顶部面板,并且有最近所有通知的历史。当它捕获到新的通知后,它就会变绿来表明你有未读的通知。 +最近通知位于顶部面板,并且记录了最近所有通知的历史。当它捕获到新的通知后,它就会变绿来表明你有未读的通知。 ![Recent notifications in Ubuntu 14.04](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/01/recent_notifications_Ubuntu.jpeg) @@ -24,7 +24,7 @@ sudo apt-get update sudo apt-get install indicator-notifications -安装完成后,重新登录后你就可以用了。现在它是没有通知的状态。很方便的小工具,不是么? +安装完成后,重新登录后你就可以用了。现在妈妈再也不用担心我的通知没看到了。很方便的小工具,不是么? -------------------------------------------------------------------------------- @@ -32,7 +32,7 @@ via: http://itsfoss.com/notifications-appindicator/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From ed120cb9f7c5c970ac0b5626f65e380d4acecab8 Mon Sep 17 00:00:00 2001 From: wxy Date: Sun, 29 Mar 2015 20:45:41 +0800 Subject: [PATCH 686/725] PUB:20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian @geekpi --- ...nstall ixgbe driver on Ubuntu or Debian.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/tech => published}/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md (84%) diff --git a/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/published/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md similarity index 84% rename from translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md rename to published/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md index aab015201e..bcaa1b3c26 100644 --- a/translated/tech/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md +++ b/published/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md @@ -1,10 +1,10 @@ -Linux 有问必答: 如何在Ubuntu或者Debian中下载和安装ixgbe驱动 +Linux 有问必答:如何在Ubuntu或者Debian中编译安装ixgbe驱动 ================================================================================ -> **提问**: 我想为我的Intel 10G网卡下载安装最新的ixgbe。我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? +> **提问**: 我想为我的Intel 10G网卡下载安装最新的ixgbe驱动。我该如何在Ubuntu(或者Debian)中安装ixgbe驱动? -Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现代的Linux发版已经将ixgbe作为一个可加载模块。然而,有些情况你不想要你机器上的已经编译和安装的ixgbe驱动。比如,你想要体验ixbge驱动的最新特性。同样,自带内核中的ixgbe中的一个默认问题是不允许你自定义旭东内核参数。如果你想要完全自动一ixgbe驱动(比如 RSS、多队列、中断阈值等等),你需要手动从源码编译ixgbe驱动。 +Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现代的Linux发行版已经带有了ixgbe驱动,通过可加载模块的方式使用。然而,有些情况你希望在你机器上的自己编译安装ixgbe驱动,比如,你想要体验ixbge驱动的最新特性时。同样,内核默认自带的ixgbe驱动中的一个问题是不允许你自定义驱动的参数。如果你想要一个完全定制的ixgbe驱动(比如 RSS、多队列、中断阈值等等),你需要手动从源码编译ixgbe驱动。 -这里是如何在Ubuntu、Debian或者它们的衍生版中下载安装ixgbe驱动。 +这里是如何在Ubuntu、Debian或者它们的衍生版中下载安装ixgbe驱动的教程。 ### 第一步: 安装前提 ### @@ -29,7 +29,7 @@ Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现 编译之后,你会看到在ixgbe-3.23.2/src目录下创建了**ixgbe.ko**。这就是会加载到内核之中的ixgbe驱动。 -用modinfo命令检查内核模块的信息。注意你需要指定模块的绝对路径(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。输出中会显示ixgbe内核的版本。 +用modinfo命令检查内核模块的信息。注意你需要指定模块文件的绝对路径(比如 ./ixgbe.ko 或者 /home/xmodulo/ixgbe/ixgbe-3.23.2/src/ixgbe.ko)。输出中会显示ixgbe内核的版本。 $ modinfo ./ixgbe.ko @@ -120,24 +120,24 @@ Intel的10G网卡(比如,82598、 82599、 x540)由ixgbe驱动支持。现 ### 第五步: 安装Ixgbe驱动 ### -一旦你验证新的ixgbe驱动已经成功家在,最后一步是在你的系统中安装驱动。 +一旦你验证新的ixgbe驱动可以成功加载,最后一步是在你的系统中安装驱动。 $ sudo make install -**ixgbe.ko** 接着会安装在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。 +**ixgbe.ko** 会安装在/lib/modules//kernel/drivers/net/ethernet/intel/ixgbe 下。 -这一步起,你可以用下面的modprobe命令加载ixgbe驱动了。注意你不必再指定绝对路径。 +从这一步起,你可以用下面的modprobe命令加载ixgbe驱动了。注意你不必再指定绝对路径。 $ sudo modprobe ixgbe -如果你希望在启动时家在ixgbe驱动,你可以在/etc/modules的最后加入“ixgbe”。 +如果你希望在启动时加载ixgbe驱动,你可以在/etc/modules的最后加入“ixgbe”。 -------------------------------------------------------------------------------- via: http://ask.xmodulo.com/download-install-ixgbe-driver-ubuntu-debian.html 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 61351ee8da1816c298846f6859d57ca2e6c43ae6 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 30 Mar 2015 13:38:51 +0800 Subject: [PATCH 687/725] PUB:20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @zpl1025 又是一篇重量级! --- ... Your Linux OS X Unix Shell Environment.md | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) rename {translated/tech => published}/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md (93%) diff --git a/translated/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md b/published/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md similarity index 93% rename from translated/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md rename to published/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md index 2709602c87..2dc0d43263 100644 --- a/translated/tech/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md +++ b/published/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md @@ -1,6 +1,6 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 ================================================================================ -在Linux或类Unix系统中,每个用户和进程都运行在一个特定环境中。这个环境包含了变量,设置,别名,函数以及更多的。下面是对Shell环境下一些常用命令的简单介绍,包括每个命令如何使用的例子,以及在命令行下设定你自己的环境来提高效率。 +在Linux或类Unix系统中,每个用户和进程都运行在一个特定环境中。这个环境包含了变量、设置、别名、函数以及更多的东西。下面是对Shell环境下一些常用命令的简单介绍,包括每个命令如何使用的例子,以及在命令行下设定你自己的环境来提高效率。 ![](http://s0.cyberciti.org/uploads/cms/2015/01/bash-shell-welcome-image.jpg) @@ -18,7 +18,8 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 输出范例: [![图1: Finding out your shell name](http://s0.cyberciti.org/uploads/cms/2015/01/finding-your-shell-like-a-pro.jpg)][1] -图1:找出当前的shell + +*图1:找出当前的shell* ### 找出所有已安装的shell ### @@ -32,9 +33,10 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 输出范例: [![Fig.02: Finding out your shell path](http://s0.cyberciti.org/uploads/cms/2015/01/finding-and-verifying-shell-path.jpg)][2] -图2:找出shell的路径 -文件/etc/shells里包含了系统支持的shell列表。每一行代表一个shell,是相对根目录的完整路径。用这个[cat命令][3]来查看这些数据: +*图2:找出shell的路径* + +文件/etc/shells里包含了系统所支持的shell列表。每一行代表一个shell,是相对根目录的完整路径。用这个[cat命令][3]来查看这些数据: cat /etc/shells @@ -71,7 +73,8 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 示例输出: [![Fig. 03: Bash shell nesting level (subshell numbers)](http://s0.cyberciti.org/uploads/cms/2015/01/a-nested-shell-level-command.jpg)][4] -图3:Bash shell嵌套层级(子shell数目) + +*图3:Bash shell嵌套层级(子shell数目)* ### 通过chsh命令永久变更系统shell ### @@ -83,9 +86,9 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 sudo chsh -s /bin/ksh userNameHere -### 查看当前的环境 ### +### 查看当前的环境变量 ### -你需要用到 +你需要用到: env env | more @@ -118,7 +121,8 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 下面是bash shell里一些常见变量的列表: ![Fig.04: Common bash environment variables](http://s0.cyberciti.org/uploads/cms/2015/01/common-shell-vars.jpg) -图4:常见bash环境变量 + +*图4:常见bash环境变量* > **注意**:下面这些环境变量没事不要乱改。很可能会造成不稳定的shell会话: > @@ -157,7 +161,7 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 /home/vivek -### 增加或设定一个新变量 ### +### 增加或设定一个新环境变量 ### 下面是bash,zsh,sh和ksh的语法: @@ -225,7 +229,8 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 示例输出: [![Fig.05: List all bash environment configuration files](http://s0.cyberciti.org/uploads/cms/2015/01/list-bash-enviroment-variables.jpg)][5] -图5:列出bash的所有配置文件 + +*图5:列出bash的所有配置文件* 要查看所有的bash配置文件,输入: @@ -241,7 +246,7 @@ Shell入门:掌握Linux,OS X,Unix的Shell环境 sudo cp -v /etc/bashrc /etc/bashrc.bak.22_jan_15 ######################################################################## - ## 然后,随心所欲随便改吧,好好玩玩shell环境或者提高一下效率:) ## + ## 然后,随心所欲随便改吧,好好玩玩shell环境或者提高一下效率:) ## ######################################################################## sudo vim /etc/bashrc @@ -326,14 +331,15 @@ zsh的[wiki][6]中建议用下面的命令: 示例输出: [![Fig.06: View session history in the bash shell using history command](http://s0.cyberciti.org/uploads/cms/2015/01/history-outputs.jpg)][7] -图6:在bash shell中使用history命令查看会话历史 -你可以重复使用命令。简单地按下[上]或[下]方向键就可以查看之前的命令。在shell提示符下按下[CTRL-R]可以向后搜索历史缓存或文件来查找命令。重复最后一次命令,只需要在shell提示符下输入!!就好了: +*图6:在bash shell中使用history命令查看会话历史* + +你可以重复使用之前的命令。简单地按下[上]或[下]方向键就可以查看之前的命令。在shell提示符下按下[CTRL-R]可以向后搜索历史缓存或文件来查找命令。重复最后一次命令,只需要在shell提示符下输入!!就好了: ls -l /foo/bar !! -在以上的历史记录中查看命令#93 (hddtemp /dev/sda),输入: +在以上的历史记录中找到命令#93 (hddtemp /dev/sda),输入: !93 @@ -483,7 +489,7 @@ Bash/ksh/zsh函数允许你更进一步地配置shell环境。在这个例子中 最后,[打开bash命令补齐][12] - source /etc/bash_completio + source /etc/bash_completion #### #2: 设定bash命令提示符 #### @@ -511,7 +517,7 @@ Bash/ksh/zsh函数允许你更进一步地配置shell环境。在这个例子中 # 为命令历史文件增加时间戳 export HISTTIMEFORMAT="%F %T " - # 附加到命令历史文件,俄不是覆盖 + # 附加到命令历史文件,而不是覆盖 shopt -s histappend #### #5: 设定shell会话的时区 #### @@ -561,7 +567,7 @@ Bash/ksh/zsh函数允许你更进一步地配置shell环境。在这个例子中 # 清理那些.DS_Store文件 alias dsclean='find . -type f -name .DS_Store -delete' -#### #8: 让世界充满色彩 #### +#### #8: 寡人好色 #### # 彩色的grep输出 alias grep='grep --color=auto' @@ -669,7 +675,7 @@ via: http://www.cyberciti.biz/howto/shell-primer-configuring-your-linux-unix-osx 作者:[nixCraft][a] 译者:[zpl1025](https://github.com/zpl1025) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From e6c768c3b5f205354e6609e3491873bd8ed646c4 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 30 Mar 2015 13:44:53 +0800 Subject: [PATCH 688/725] PUB:20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu @geekpi --- ...Check If A Package Is Installed Or Not In Ubuntu.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename {translated/tech => published}/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md (93%) diff --git a/translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/published/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md similarity index 93% rename from translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md rename to published/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md index 9139b8dd92..a5bdc115e2 100644 --- a/translated/tech/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md +++ b/published/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md @@ -1,6 +1,6 @@ -Linux 基础:如何在Ubuntu上检查是否已经安装了一个包 +Linux 基础:如何在Ubuntu上检查一个软件包是否安装 ================================================================================ -![](http://180016988.r.cdn77.net/wp-content/uploads/2014/04/ubuntu-790x558.png) +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2014/04/ubuntu-790x558.png) 如果你正在管理Debian或者Ubuntu服务器,你也许会经常使用**dpkg** 或者 **apt-get**命令。这两个命令用来安装、卸载和更新包。 @@ -51,7 +51,7 @@ Linux 基础:如何在Ubuntu上检查是否已经安装了一个包 +++-====================================-=======================-=======================-============================================================================= ii firefox 35.0+build3-0ubuntu0.14 amd64 Safe and easy web browser from Mozilla -要列出你系统中安装的包,输入下面的命令: +要列出你系统中安装的所有包,输入下面的命令: dpkg --get-selections @@ -97,7 +97,7 @@ Linux 基础:如何在Ubuntu上检查是否已经安装了一个包 libgcc1:amd64 install libgcc1:i386 install -额外的,你可以使用“**-L**”参数来找出包中文件的位置。 +此外,你可以使用“**-L**”参数来找出包中文件的位置。 dpkg -L gcc-4.8 @@ -130,7 +130,7 @@ via: http://www.unixmen.com/linux-basics-check-package-installed-not-ubuntu/ 作者:[SK][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 9b20eb8a7a16f18f266dafd4135921c0eb602d37 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 30 Mar 2015 14:12:26 +0800 Subject: [PATCH 689/725] PUB:20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7 @geekpi --- ...Without Rebooting on CentOS 7 or RHEL 7.md | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) rename {translated/tech => published}/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md (81%) diff --git a/translated/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md b/published/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md similarity index 81% rename from translated/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md rename to published/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md index 104f05e0a7..d54877bd36 100644 --- a/translated/tech/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md +++ b/published/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md @@ -1,17 +1,18 @@ -如何不用重启在CentOS 7/ RHEL 7中添加一块新硬盘 +如何不用重启在CentOS 7/ RHEL 7虚拟机中添加一块新硬盘 ================================================================================ 通常在你在虚拟机中添加一块新硬盘时,你可能会看到新硬盘没有自动加载。这是因为连接到硬盘的SCSI总线需要重新扫描来使得新硬盘可见。这里有一个简单的命令来重新扫描SCSI总线和SCSI设备。下面这几步在CentOS 7 和RHEL 7 中测试过。 1. 在ESXi或者vCenter中添加一块新的20G硬盘: -![](http://www.ehowstuff.com/wp-content/uploads/2015/01/Create-new-LVM-CentOS7-1.png) + ![](http://www.ehowstuff.com/wp-content/uploads/2015/01/Create-new-LVM-CentOS7-1.png) 2. 显示当前磁盘分区: - [root@centos7 ~]# fdisk -l + [root@centos7 ~]# fdisk -l ----------- + ---------- + ``` Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes @@ -33,20 +34,22 @@ Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes + ``` 3. 确定主机总线号 - [root@centos7 ~]# ls /sys/class/scsi_host/ - host0 host1 host2 + [root@centos7 ~]# ls /sys/class/scsi_host/ + host0 host1 host2 4. 重新扫描SCSI总线来添加设备 - [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan - [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan - [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan + [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan + [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan + [root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan -5. 验证磁盘和分区并确保20GB硬盘已经添加了。在本例中,出现了下面这行 “Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors” 并且确认新盘添加后没有重启服务器: +5. 验证磁盘和分区并确保20GB硬盘已经添加了。在本例中,出现了下面这行 “`Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors`” 并且可以确认没有重启服务器就添加了新盘: + ``` [root@centos7 ~]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors @@ -76,14 +79,14 @@ Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes - + ``` -------------------------------------------------------------------------------- via: http://www.ehowstuff.com/how-to-add-a-new-hard-disk-without-rebooting-on-centos-7-rhel-7/ 作者:[skytech][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 878bc7bf1eb976cd1d8f65384cdf647147e0a369 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 30 Mar 2015 16:11:29 +0800 Subject: [PATCH 690/725] =?UTF-8?q?20150330-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...150330 Picty--Managing Photos Made Easy.md | 102 ++++++++++ ... login with one-time passwords on Linux.md | 180 ++++++++++++++++++ 2 files changed, 282 insertions(+) create mode 100644 sources/share/20150330 Picty--Managing Photos Made Easy.md create mode 100644 sources/tech/20150330 How to secure SSH login with one-time passwords on Linux.md diff --git a/sources/share/20150330 Picty--Managing Photos Made Easy.md b/sources/share/20150330 Picty--Managing Photos Made Easy.md new file mode 100644 index 0000000000..e88ef85cec --- /dev/null +++ b/sources/share/20150330 Picty--Managing Photos Made Easy.md @@ -0,0 +1,102 @@ +Picty: Managing Photos Made Easy +================================================================================ +![](http://1102047360.rsc.cdn77.org/wp-content/uploads/2015/03/picty_002-790x429.png) + +### About Picty ### + +**Picty** is a free, simple, yet powerful photo collection manager that will help you to manage your photos. It is designed around managing **metadata** and a **lossless** approach to image handling. Picty currently supports both online(web-based) and offline(local) collections. In local collections, the images will be stored in a local folder and it’s sub-folders. A database will be maintained to speed up the image queries in the user’s home folder. In online(web-based) collections, you can upload and share images through a web browser. Ant user with proper rights can share photos to any persons, and each user can have multiple collections open at once and collections can be shared by multiple users. There is a simple interface for transferring images between collections using a transfer plugin. + +You can download any number of photos from your Camera or any devices. Also, Picty allows you to browse photo collections from your Camera before downloading it. Picty is lightweight application, and has snappy interface. It supports Linux, and Windows platforms. + +### Features ### + +- Supports big photo collections (20,000 plus images). +- Open more than one collection at a time and transfer images between them. +- Collections are: + - Folders of images in your local file system. + - Images on cameras, phones and other media devices. + - Photo hosting services (Flickr currently supported). +- picty does not “Import” photos into its own database, it simply provides an interface for accessing them wherever they are. To keep things snappy and to allow you to browse even if you are offline, picty maintains a cache of thumbnails and metadata. +- Reads and writes metadata in industry standard formats Exif, IPTC and Xmp +- Lossless approach: + - picty writes all changes including image edits as metadata. e.g. an image crop is stored as any instruction, the original pixels remain in the file + - Changes are stored in picty’s collection cache until you save your metadata changes to the images. You can easily revert unsaved changes that you don’t like. +- Basic image editing: + - Current support for basic image enhancements such as brightness, contrast, color, cropping, and straightening. + - Improvements to those tools and other tools coming soon (red eye reduction, levels, curves, noise reduction) +- Image tagging: + - Use standard IPTC and Xmp keywords for image tags + - A tag tree view lets you easily manage your tags and navigate your collection +- Folder view: + - Navigate the directory heirarchy of your image collection +- Multi-monitor support + - picty can be configured to let you browse your collection on one screen and view full screen images on another. +- Customizable + - Create launchers for external tools + - Supports plugins – many of the current features (tagging and folder views, and all of the image editing tools) are provided by plugins + - Written in python – batteries included! + +### Installation ### + +#### 1. Install from PPA #### + +Picty developers has a PPA for Debian based distributions, like Ubuntu, to make the installation much easier. + +To install in Ubuntu and derivatives, run: + + sudo add-apt-repository ppa:damien-moore/ppa + sudo apt-get update + sudo apt-get install picty + +#### 2. Install from Source #### + +Also, you can install it from Source files. First, install the following dependencies. + + sudo apt-get install bzr python-pyinotify python-pyexiv2 python-gtk2 python-gnome2 dcraw python-osmgpsmap python-flickrapi + +Then, get the latest version using command: + + bzr branch lp:picty + +To run picty, change to the picty directory, and enter: + + cd picty + bin/picty + +To update to the latest version, run: + + cd picty + bzr pull + +### Usage ### + +Launch Picty either from Menu or Unity Dash. + +![picty_001](http://www.unixmen.com/wp-content/uploads/2015/03/picty_001.png) + +You can either choose existing collection, device or directory. Let us create a **new collection**. To do that, create New Collection button. Enter the collection, and browse to the path where you have the images stored. Finally, click **Create** button. + +![Create a Collection_001](http://www.unixmen.com/wp-content/uploads/2015/03/Create-a-Collection_001.png) + +![picty_002](http://www.unixmen.com/wp-content/uploads/2015/03/picty_002.png) + +You can modify, rotate, add/remove tags, set descriptive info of each images. To do that, just right click any image and do the actions of your choice. + +Visit the following Google group to get more information and support about Picty Photo manager. + +- [http://groups.google.com/group/pictyphotomanager][1] + +Cheers! + +-------------------------------------------------------------------------------- + +via: http://www.unixmen.com/picty-managing-photos-made-easy/ + +作者:[SK][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.unixmen.com/author/sk/ +[1]:http://groups.google.com/group/pictyphotomanager \ No newline at end of file diff --git a/sources/tech/20150330 How to secure SSH login with one-time passwords on Linux.md b/sources/tech/20150330 How to secure SSH login with one-time passwords on Linux.md new file mode 100644 index 0000000000..9133679994 --- /dev/null +++ b/sources/tech/20150330 How to secure SSH login with one-time passwords on Linux.md @@ -0,0 +1,180 @@ +How to secure SSH login with one-time passwords on Linux +================================================================================ +As someone says, security is a not a product, but a process. While SSH protocol itself is cryptographically secure by design, someone can wreak havoc on your SSH service if it is not administered properly, be it weak passwords, compromised keys or outdated SSH client. + +As far as SSH authentication is concerned, [public key authentication][1] is in general considered more secure than password authentication. However, key authentication is actually not desirable or even less secure if you are logging in from a public or shared computer, where things like stealth keylogger or memory scraper can always a possibility. If you cannot trust the local computer, it is better to use something else. This is when "one-time passwords" come in handy. As the name implies, each one-time password is for single-use only. Such disposable passwords can be safely used in untrusted environments as they cannot be re-used even when they are stolen. + +One way to generate disposable passwords is [Google Authenticator][2]. In this tutorial, I am going to demonstrate another way to create one-time passwords for SSH login: [OTPW][3], a one-time password login package. Unlike Google Authenticator, you do not rely on any third party for one-time password generation and verification. + +### What is OTPW? ### + +OTPW consists of one-time password generator and PAM-integrated verification routines. In OTPW, one-time passwords are generated apriori with the generator, and carried by a user securely (e.g., printed in a paper sheet). Cryptographic hash of the generated passwords are then stored in the SSH server host. When a user logs in with a one-time password, OTPW's PAM module verifies the password, and invalidates it to prevent re-use. + +### Step One: Install and Configure OTPW on Linux ### + +#### Debian, Ubuntu or Linux Mint #### + +Install OTPW packages with apt-get. + + $ sudo apt-get install libpam-otpw otpw-bin + +Open a PAM configuration file for SSH (/etc/pam.d/sshd) with a text editor, and comment out the following line (to disable password authentication). + + #@include common-auth + +and add the following two lines (to enable one-time password authentication): + + auth required pam_otpw.so + session optional pam_otpw.so + +![](https://farm8.staticflickr.com/7599/16775121360_d1f93feefa_b.jpg) + +#### Fedora or CentOS/RHEL #### + +OTPW is not available as a prebuilt package on Red Hat based systems. So let's install OTPW by building it from the source. + +First, install prerequites: + + $ sudo yum git gcc pam-devel + $ git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw + $ cd otpw + +Open Makefile with a text editor, and edit a line that starts with "PAMLIB=" as follows. + +On 64-bit system: + + PAMLIB=/usr/lib64/security + +On 32-bit system: + + PAMLIB=/usr/lib/security + +Compile and install it. Note that installation will automatically restart an SSH server. So be ready to be disconnected if you are on an SSH connection. + + $ make + $ sudo make install + +Now you need to update SELinux policy since /usr/sbin/sshd tries to write to user's home directory, which is not allowed by default SELinux policy. The following commands will do. If you are not using SELinux, skip this step. + + $ sudo grep sshd /var/log/audit/audit.log | audit2allow -M mypol + $ sudo semodule -i mypol.pp + +Next, open a PAM configuration file for SSH (/etc/pam.d/sshd) with a text editor, and comment out the following line (to disable password authentication). + + #auth substack password-auth + +and add the following two lines (to enable one-time password authentication): + + auth required pam_otpw.so + session optional pam_otpw.so + +#### Step Two: Configure SSH Server for One-time Passwords #### + +The next step is to configure an SSH server to accept one-time passwords. + +Open /etc/ssh/sshd_config with a text editor, and set the following three parameters. Make sure that you do not add these lines more than once, because that will cause an SSH server to fail. + + UsePrivilegeSeparation yes + ChallengeResponseAuthentication yes + UsePAM yes + +You also need to disable default password authentication. Optionally, enable public key authentication, so that you can fall back to key-based authentication in case you do not have one-time passwords. + + PubkeyAuthentication yes + PasswordAuthentication no + +Now restart SSH server. + +Debian, Ubuntu or Linux Mint: + + $ sudo service ssh restart + +Fedora or CentOS/RHEL 7: + + $ sudo systemctl restart sshd + +#### Step Three: Generate One-time Passwords with OTPW #### + +As mentioned earlier, you need to create one-time passwords beforehand, and have them stored on the remote SSH server host. For this, run otpw-gen tool as the user you will be logging in as. + + $ cd ~ + $ otpw-gen > temporary_password.txt + +![](https://farm9.staticflickr.com/8751/16961258882_c49cfe03fb_b.jpg) + +It will ask you to set a prefix password. When you later log in, you need to type this prefix password AND one-time password. Essentially the prefix password is another layer of protection. Even if the password sheet falls into the wrong hands, the prefix password forces them to brute-force. + +Once the prefix password is set, the command will generate 280 one-time passwords, and store them in the output text file (e.g., temporary_password.txt). Each password (length of 8 characters by default) is preceded by a three-digit index number. You are supposed to print the file in a sheet and carry it with you. + +![](https://farm8.staticflickr.com/7281/16962594055_c2696d5ae1_b.jpg) + +You will also see ~/.otpw file created, where cryptographic hashs of these passwords are stored. The first three digits in each line indicate the index number of the password that will be used for SSH login. + + $ more ~/.otpw + +---------- + + OTPW1 + 280 3 12 8 + 191ai+:ENwmMqwn + 218tYRZc%PIY27a + 241ve8ns%NsHFmf + 055W4/YCauQJkr: + 102ZnJ4VWLFrk5N + 2273Xww55hteJ8Y + 1509d4b5=A64jBT + 168FWBXY%ztm9j% + 000rWUSdBYr%8UE + 037NvyryzcI+YRX + 122rEwA3GXvOk=z + +### Test One-time Passwords for SSH Login ### + +Now let's login to an SSH server in a usual way: + + $ ssh user@remote_host + +If OTPW is successfully set up, you will see a slightly different password prompt: + + Password 191: + +Now open up your password sheet, and look for index number "191" in the sheet. + + 023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB 191 fOO+ PeiD 247 vAnZ EgUt + +According to sheet above, the one-time password for number "191" is "fOO+PeiD". You need to prepend your prefix password to it. For example, if your prefix password is "000", the actual one-time password you need to type is "000fOO+PeiD". + +Once you successfully log in, the password used is automatically invalidated. If you check ~/.otpw, you will notice that the first line is replaced with "---------------", meaning that password "191" has been voided. + + OTPW1 + 280 3 12 8 + --------------- + 218tYRZc%PIY27a + 241ve8ns%NsHFmf + 055W4/YCauQJkr: + 102ZnJ4VWLFrk5N + 2273Xww55hteJ8Y + 1509d4b5=A64jBT + 168FWBXY%ztm9j% + 000rWUSdBYr%8UE + 037NvyryzcI+YRX + 122rEwA3GXvOk=z + +### Conclusion ### + +In this tutorial, I demonstrated how to set up one-time password login for SSH using OTPW package. You may realized that a print sheet can be considered a less fancy version of security token in two-factor authentication. Yet, it is simpler and you do not rely on any third-party for its implementation. Whatever mechanism you are using to create disposable passwords, they can be helpful when you need to log in to an SSH server from an untrusted public computer. Feel free to share your experience or opinion on this topic. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/secure-ssh-login-one-time-passwords-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://xmodulo.com/how-to-force-ssh-login-via-public-key-authentication.html +[2]:http://xmodulo.com/two-factor-authentication-ssh-login-linux.html +[3]:http://www.cl.cam.ac.uk/~mgk25/otpw.html \ No newline at end of file From 57f0979d34ee49ad4bef307e880f3fb9edbc78f1 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Mon, 30 Mar 2015 16:22:47 +0800 Subject: [PATCH 691/725] =?UTF-8?q?20150330-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ys to Create Your Own Docker Base Image.md | 57 ++++++++++ ...epositories Using Gitblit Tool in Linux.md | 101 ++++++++++++++++++ ...nswers--How to upgrade Docker on Ubuntu.md | 35 ++++++ 3 files changed, 193 insertions(+) create mode 100644 sources/tech/20150330 2 Ways to Create Your Own Docker Base Image.md create mode 100644 sources/tech/20150330 How to Serve Git Repositories Using Gitblit Tool in Linux.md create mode 100644 sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md diff --git a/sources/tech/20150330 2 Ways to Create Your Own Docker Base Image.md b/sources/tech/20150330 2 Ways to Create Your Own Docker Base Image.md new file mode 100644 index 0000000000..80a7d4d4fa --- /dev/null +++ b/sources/tech/20150330 2 Ways to Create Your Own Docker Base Image.md @@ -0,0 +1,57 @@ +2 Ways to Create Your Own Docker Base Image +================================================================================ +Greetings to everyone, today we'll learn about docker base Images and how we can build our own. [Docker][1] is an Open Source project that provides an open platform to pack, ship and run any application as a lightweight container. It has no boundaries of Language support, Frameworks or packaging system and can be run anywhere, anytime from a small home computers to high-end servers. It makes them great building blocks for deploying and scaling web apps, databases, and back-end services without depending on a particular stack or provider. + +Docker Images is a read-only layer which never changes. It Docker uses a **Union File System** to add a read-write file system over the read-only file system. But all the changes go to the top-most writeable layer, and underneath, the original file in the read-only image is unchanged. Since images don't change, images do not have state. Base Images are those images that has no parent. The major benefits of it is that it allows us to have a separate linux OS running. + +Here are the ways on how we can create a custom base image. + +### 1. Creating Docker Base Image using Tar ### + +We can create our own base image using tar, we'll want to start building it with a working Linux Distribution we'll want to package as base image. This process may differ and depends on what distribution we are trying to build. In Debian distribution of Linux, debootstrap is preinstalled. We'll need to install debootstrap before starting the below process. Debootstrap is used to fetch the required packages to build the base system. Here, we'll create image based on Ubuntu 14.04 "Trusty". To do so, we'll need to run the following command in a terminal or shell. + + $ sudo debootstrap trusty trusty > /dev/null + $ sudo tar -C trusty -c . | sudo docker import - trusty + +![creating docker base image using debootstrap](http://blog.linoxide.com/wp-content/uploads/2015/03/creating-base-image-debootstrap.png) + +Here, the above command creates a tar file of the current directory and outputs it to STDOUT, where "docker import - trusty" takes it from STDIN and creates a base image called trusty from it. Then, we'll run a test command inside that image as follows. + + $ docker run trusty cat /etc/lsb-release + +Here are some example scripts that will allow us to build quick base images in [Docker GitHub Repo][2] . + +### 2. Creating Base Image using Scratch ### + +In the Docker registry, there is a special repository known as Scratch, which was created using an empty tar file: + + $ tar cv --files-from /dev/null | docker import - scratch + +![creating docker base image using scratch](http://blog.linoxide.com/wp-content/uploads/2015/03/creating-base-image-using-scratch.png) + + +We can use that image to base our new minimal containers FROM: + +FROM scratch +ADD script.sh /usr/local/bin/run.sh +CMD ["/usr/local/bin/run.sh"] + +The above Dockerfile is from an extremely minimal image. Here, first it starts with a totally blank filesystem, then it copies script.sh that is created to /usr/local/bin/run.sh and then run the script /usr/local/bin/run.sh . + +### Conclusion ### + +Here, in this tutorial, we learned how we can build a custom Docker Base Image out of the box. Building a docker base image is an easy task because there are sets of packages and scripts already available for. Building a docker base image is a lot useful if we want to install what we want in it. So, if you have any questions, suggestions, feedback please write them in the comment box below. Thank you ! Enjoy :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/2-ways-create-docker-base-image/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://www.docker.com/ +[2]:https://github.com/docker/docker/blob/master/contrib/mkimage-busybox.sh \ No newline at end of file diff --git a/sources/tech/20150330 How to Serve Git Repositories Using Gitblit Tool in Linux.md b/sources/tech/20150330 How to Serve Git Repositories Using Gitblit Tool in Linux.md new file mode 100644 index 0000000000..806a462675 --- /dev/null +++ b/sources/tech/20150330 How to Serve Git Repositories Using Gitblit Tool in Linux.md @@ -0,0 +1,101 @@ +How to Serve Git Repositories Using Gitblit Tool in Linux +================================================================================ +Hi friends, today we'll be learning how to install Gitblit in your Linux Server or PC. So, lets check out what is a Git, its features and steps to install Gitblit. [Git is a distributed revision control system][1] with an emphasis on speed, data integrity, and support for distributed, non-linear workflows. It was initially designed and developed by Linus Torvalds for Linux kernel under the terms of the GNU General Public License version 2 development in 2005, and has since become the most widely adopted version control system for software development. + +[Gitblit is a free and open source][2] built on a pure Java stack designed to handle everything from small to very large projects with speed and efficiency for serving Git repositories. It is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. + +#### Features of Gitblit #### + +- It can be used as a dumb repository viewer with no administrative controls or user accounts. +- It can be used as a complete Git stack for cloning, pushing, and repository access control. +- It can be used without any other Git tooling (including actual Git) or it can cooperate with your established tools. + +### 1. Creating Gitblit install directory ### + +First of all we'll gonna to create a directory in our server in which we'll be installing our latest gitblit in. + + $ sudo mkdir -p /opt/gitblit + + $ cd /opt/gitblit + +![creating directory gitblit](http://blog.linoxide.com/wp-content/uploads/2015/01/creating-directory-gitblit.png) + +### 2. Downloading and Extracting ### + +Now, we will want to download the latest gitblit from the official site. Here, the current version of gitblit we are gonna install is 1.6.2 . So, please change it as the version you are gonna install in your system. + + $ sudo wget http://dl.bintray.com/gitblit/releases/gitblit-1.6.2.tar.gz + +![downloading gitblit package](http://blog.linoxide.com/wp-content/uploads/2015/01/downloading-gitblit.png) + +Now, we'll be extracting our downloaded tarball package to our current folder ie /opt/gitblit/ + + $ sudo tar -zxvf gitblit-1.6.2.tar.gz + +![extracting gitblit tar](http://blog.linoxide.com/wp-content/uploads/2015/01/extracting-gitblit-tar.png) + +### 3. Configuring and Running ### + +Now, we'll configure our Gitblit configuration. If you want to customize the behavior of Gitblit server, you can do it by modifying `gitblit/data/gitblit.properties` . Now, after you are done configuring the configuration. We finally wanna run our gitblit. We have two options on running gitblit, first is that we run it manually by the command below: + + $ sudo java -jar gitblit.jar --baseFolder data + +And next is to add and use gitblit as service. Here are the steps that we'll need to follow to use gitblit as service in linux. + +So, As I am running Ubuntu, the command below will be sudo cp service-ubuntu.sh /etc/init.d/gitblit so please change the file name service-ubuntu.sh to the distribution you are currently running. + + $ sudo ./install-service-ubuntu.sh + + $ sudo service gitblit start + +![starting gitblit service](http://blog.linoxide.com/wp-content/uploads/2015/01/starting-gitblit-service.png) + +Open your browser to http://localhost:8080 or https://localhost:8443 or replace "localhost" with the ip-address of the machine depending on your system configuration. Enter the default administrator credentials: admin / admin and click the Login button. + +![gitblit welcome](http://blog.linoxide.com/wp-content/uploads/2015/01/gitblit-welcome.png) + +Now, we'll wanna add a new user. First you'll need to login to the admin with default administrator credentials: username = **admin** and password = **admin** . + +Then, Goto user icon > users > (+) new user. And create a new user like as shown in the figure below. + +![add new user](http://blog.linoxide.com/wp-content/uploads/2015/01/add-user.png) + +Now, we'll create a new repo out of the box. Go to repositories > (+) new repository . Then, add new repository as shown below. + +![add new repository](http://blog.linoxide.com/wp-content/uploads/2015/01/add-new-repository.png) + +#### Create a new repository on the command-line #### + + touch README.md + git init + git add README.md + git commit -m "first commit" + git remote add origin ssh://arunlinoxide@localhost:29418/linoxide.com.git + git push -u origin master + +Please replace the username arunlinoxide with the user you add. + +#### Push an existing repository from the command-line #### + + git remote add origin ssh://arunlinoxide@localhost:29418/linoxide.com.git + git push -u origin master + +**Note**: It is highly recommended to everyone to change the password of username "admin" as it comes by default. + +### Conclusion ### + +Hurray, we finally installed our latest Gitblit in our Linux Computer. We can now enjoy such a beautiful version controlling system for our projects whether its small or large, no matter. With Gitblit, version controlling has been too easy. It is easy to learn and has a tiny footprint with lightning fast performance. So, if you have any questions, suggestions, feedback please write them in the comment box below. + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/serve-git-repositories-gitblit/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://git-scm.com/ +[2]:http://gitblit.com/ \ No newline at end of file diff --git a/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md b/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md new file mode 100644 index 0000000000..c31af4675c --- /dev/null +++ b/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md @@ -0,0 +1,35 @@ +Linux FAQs with Answers--How to upgrade Docker on Ubuntu +================================================================================ +> **Question**: I installed Docker on Ubuntu using its standard repositories. However, the default Docker installation does not meet the version requirement for my another application that relies on Docker. How can I upgrade Docker to the latest version on Ubuntu? + +Since Docker was first released in 2013, it has been fast evolving into a full-blown open platform for distributed applications. To meet the industry's expection, Docker is being aggressively developed and constantly upgraded with new features. Chances are that the stock Docker that comes with your Ubuntu distribution is quickly outdated. For example, Ubuntu 14.10 Utopic comes with Docker version 1.2.0, while the latest Docker version is 1.5.0. + +![](https://farm9.staticflickr.com/8730/16351300024_9acb9086da_b.jpg) + +For those of you who want to stay up-to-date with Docker's latest developments, Canonical maintains a separate PPA for Docker. Using this PPA repository, you can easily upgrade Docker to the latest version on Ubuntu. + +Here is how to set up Docker PPA and upgrade Docker. + + $ sudo add-apt-repository ppa:docker-maint/testing + $ sudo apt-get update + $ sudo apt-get install docker.io + +Now check the version of installed Docker: + + $ docker --version + +---------- + + Docker version 1.5.0-dev, build a78ce5c + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/upgrade-docker-ubuntu.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni \ No newline at end of file From 9054218890dd95f702cb1b14777e1d1b21b9fba1 Mon Sep 17 00:00:00 2001 From: LouisWei Date: Mon, 30 Mar 2015 22:53:17 +0800 Subject: [PATCH 692/725] translated wi-cuckoo --- ...Interactively Create a Docker Container.md | 100 ------------------ ...Interactively Create a Docker Container.md | 99 +++++++++++++++++ 2 files changed, 99 insertions(+), 100 deletions(-) delete mode 100644 sources/tech/20150324 How to Interactively Create a Docker Container.md create mode 100644 translated/tech/20150324 How to Interactively Create a Docker Container.md diff --git a/sources/tech/20150324 How to Interactively Create a Docker Container.md b/sources/tech/20150324 How to Interactively Create a Docker Container.md deleted file mode 100644 index 17576ec4f0..0000000000 --- a/sources/tech/20150324 How to Interactively Create a Docker Container.md +++ /dev/null @@ -1,100 +0,0 @@ -translating wi-cuckoo LLAP -How to Interactively Create a Docker Container -================================================================================ -Hi everyone, today we'll learn how we can interactively create a docker container using a docker image. Once we start a process in Docker from an Image, Docker fetches the image and its Parent Image, and repeats the process until it reaches the Base Image. Then the Union File System adds a read-write layer on top. That read-write layer, the information about its Parent Image and some other information like its unique id, networking configuration, and resource limits is called a **Container**. Containers has states as they can change from **running** to **exited** state. A container with state as **running** includes a tree of processes running on the CPU, isolated from the other processes running on the host where as **exited** is the state of the file system and its exit value is preserved. You can start, stop, and restart a container with it. - -Docker Technology has brought a remarkable change in the field of IT enabling cloud service for sharing applications and automating workflows, enabling apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. In this article, we'll build CentOS Instance in which we'll host a website running under Apache Web Server. - -Here is quick and easy tutorial on how we can create a container in an interactive method using an interactive shell. - -### 1. Running a Docker Instance ### - -Docker initially tries to fetch and run the required image locally and if its not found in local host the it pulls from the [Docker Public Registry Hub][1] . Here. we'll fetch and create a fedora instance in a Docker Container and attach a bash shell to the tty. - - # docker run -i -t fedora bash - -![Downloading Fedora Base Image](http://blog.linoxide.com/wp-content/uploads/2015/03/downloading-fedora-base-image.png) - -### 2. Installing Apache Web Server ### - -Now, after our Fedora base image with instance is ready, we'll now gonna install Apache Web Server interactively without creating a Dockerfile for it. To do so, we'll need to run the following commands in a terminal or shell. - - # yum update - -![Updating Fedora Base Image](http://blog.linoxide.com/wp-content/uploads/2015/03/updating-fedora-base-image.png) - - # yum install httpd - -![Installing httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/installing-httpd2.png) - - # exit - -### 3. Saving the Image ### - -Now, we'll gonna save the changes we made into the Fedora Instance. To do that, we'll first gonna need to know the Container ID of the Instance. To get that we'll need to run the following command. - - # docker ps -a - -![Docker Running Container](http://blog.linoxide.com/wp-content/uploads/2015/03/docker-running-container.png) - -Then, we'll save the changes as a new image by running the below command. - - # docker commit c16378f943fe fedora-httpd - -![committing fedora httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/committing-fedora-httpd.png) - -Here, the changes are saved using the Container ID and image name fedora-httpd. To make sure that the new image is running or not, we'll run the following command. - - # docker images - -![view docker images](http://blog.linoxide.com/wp-content/uploads/2015/03/view-docker-images.png) - -### 4. Adding the Contents to the new image ### - -As we have our new Fedora Apache image running successfully, now we'll want to add the web contents which includes our website to Apache Web Server so that our website will run successfully out of the box. To do so, we'll need to create a new Dockerfile which will handle the operation from copying web contents to allowing port 80. To do so, we'll need to create a file Dockerfile using our favorite text editor as shown below. - - # nano Dockerfile - -Now, we'll need to add the following lines into that file. - - FROM fedora-httpd - ADD mysite.tar /tmp/ - RUN mv /tmp/mysite/* /var/www/html - EXPOSE 80 - ENTRYPOINT [ "/usr/sbin/httpd" ] - CMD [ "-D", "FOREGROUND" ] - -![configuring Dockerfile](http://blog.linoxide.com/wp-content/uploads/2015/03/configuring-Dockerfile.png) - -Here, in above Dockerfile, the web content which we have in mysite.tar will get automatically extracted to /tmp/ folder. Then, the entire site will move to the Apache Web root ie /var/www/html/ and the expose 80 will open port 80 so that the website will be available normally. Then, the entrypoint is set to /usr/sbin/httpd so that the Apache Server will execute. - -### 5. Building and running a Container ### - -Now, we'll build our Container using the Dockerfile we just created in order to add our website on it. To do so, we'll need to run the following command. - - # docker build -rm -t mysite . - -![Building mysite Image](http://blog.linoxide.com/wp-content/uploads/2015/03/building-mysite-image.png) - -After building our new container, we'll want to run the container using the command below. - - # docker run -d -P mysite - -![Running mysite Container](http://blog.linoxide.com/wp-content/uploads/2015/03/running-mysite-container.png) - -### Conclusion ### - -Finally, we've successfully built a Docker Container interactively. In this method, we build our containers and image directly via interactive shell commands. This method is quite easy and quick to build and deploy our images and containers. If you have any questions, suggestions, feedback please write them in the comment box below so that we can improve or update our contents. Thank you ! Enjoy :-) - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/interactively-create-docker-container/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:https://registry.hub.docker.com/ diff --git a/translated/tech/20150324 How to Interactively Create a Docker Container.md b/translated/tech/20150324 How to Interactively Create a Docker Container.md new file mode 100644 index 0000000000..9661e8d3f2 --- /dev/null +++ b/translated/tech/20150324 How to Interactively Create a Docker Container.md @@ -0,0 +1,99 @@ +如何交互式地创建一个Docker容器 +=============================================================================== +大家好,今天我们来学习如何使用一个docker镜像交互式地创建一个Docker容器。一旦我们从镜像中启动一个Docker进程,Docker就会在父镜像与子镜像间来回搬运,重复工作,直到到达子镜像。然后联合文件系统会在顶层添加一个读写层。读写层又叫一个 **Container** 包含一些信息,关于它的父镜像和一些其他的信息,如单独的ID,网络配置和资源限制。容器已经声明,他们可以从 **running** 切换到 **exited** 状态。一个处于 **running** 状态的容器包含了很多分支在CPU上面运行,独立于其他在主机上运行的进程,而主机上 **exited** 是文件系统的状态,它的退出变量值是保留的。你可以使用读写层来启动,停止和重启一个容器。 + +Docker技术为IT界带来了巨大的改变,它使得云服务可以用来共享应用和工作流程自动化,使得应用可以从组件快速组合,消除了开发与品质保证和产品环境间的摩擦。在这篇文章中,我们将会建立CentOS环境,然后维护一个网站,在Apache网络服务器下运行。 + +这是快速且容易的教程,讨论我们怎样使用一个交互的shell,以一个交互的方式来创建一个容器。 + +### 1. 运行一个Docker实例 ### + +Docker一开始尝试从本地取得和运行所需的镜像,如果在本地主机上没有发现,它就会从[Docker公共注册中心][1]拉取。这里,我们将会在一个DOcker容器里取得并创建一个fedora实例,附加一个bash shell到tty + + # docker run -i -t fedora bash + +![Downloading Fedora Base Image](http://blog.linoxide.com/wp-content/uploads/2015/03/downloading-fedora-base-image.png) + +### 2.安装Apache网络服务器 ### + +现在,在我们的Fedora基本镜像准备好后,我们将会开始交互式地安装Apache网络服务器,而不必为它创建Dockerfile。为了做到这点,我们需要在终端或者shell运行以下命令。 + + # yum update + +![Installing httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/installing-httpd2.png) + + # yum install httpd + +![Installing httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/installing-httpd2.png) + + # exit + +### 3.Saving the Image ### + +现在,我们要去保存在Fedora实例里做的修改。要做到这个,我们首先需要知道实例的容器ID。而为了得到ID,我们又需要运行以下命令。 + + # docker ps -a + +![Docker Running Container](http://blog.linoxide.com/wp-content/uploads/2015/03/docker-running-container.png) + +然后,我们会保存这些改变为一个新的镜像,请运行以下命令。 + + # docker commit c16378f943fe fedora-httpd + +![committing fedora httpd](http://blog.linoxide.com/wp-content/uploads/2015/03/committing-fedora-httpd.png) + +这里,修改已经通过使用容器ID保存起来了,镜像名字叫fedora-httpd。为了确认新的镜像时候在运行,我们将运行以下命令 + + # docker images + +![view docker images](http://blog.linoxide.com/wp-content/uploads/2015/03/view-docker-images.png) + +### 4. 添加内容到新的镜像 ### + +我们自己新的Fedora Apache镜像正成功的运行,现在我们想添加一些网页内容到Apache网络服务器,包括我们的网站,使得网站能够脱离盒子正确运行。为做到这点,我们需要创建一个新的Dockerfile,它会处理从复制网页内容到使用80端口的所有操作。而为做到这,我们又需要使用我们最喜欢的文本编辑器创建Dockerfile文件,像下面演示的一样。 + + # nano Dockerfile + +现在,我们需要添加以下的命令行到文件中。 + + FROM fedora-httpd + ADD mysite.tar /tmp/ + RUN mv /tmp/mysite/* /var/www/html + EXPOSE 80 + ENTRYPOINT [ "/usr/sbin/httpd" ] + CMD [ "-D", "FOREGROUND" ] + +![configuring Dockerfile](http://blog.linoxide.com/wp-content/uploads/2015/03/configuring-Dockerfile.png) + +这里,运行Dockerfile,mysite.tar里的网页内容会自动解压到/temp/文件夹里。然后,整个文件会被转移到Apache网页根目录/var/www/html/,命令expose 80会打开80端口,这样网站就能正常访问。其次,入口点放在了/usr/sbin/https里面,保证Apache服务器能够执行。 + +### 5. 建立并运行一个容器 ### + +现在,为了添加我们网站在上面,我们要用刚刚创建的Dockerfile创建我们的容器,为做到这,我们需要运行以下命令。 + + # docker build -rm -t mysite . + +![Building mysite Image](http://blog.linoxide.com/wp-content/uploads/2015/03/building-mysite-image.png) + +我们建立自己的容器后,我们想要用下面的命令来运行容器。 + + # docker run -d -P mysite + +![Running mysite Container](http://blog.linoxide.com/wp-content/uploads/2015/03/running-mysite-container.png) + +### 总结 ### + +最后,我们已经成功的以交互式的方式建立了一个Docker容器。在本节方法中,我们是直接通过交互的shell命令建立我们的容器和镜像。这种方法十分简单且快速,在建立与配置镜像与容器方面。如果你有任何问题,建议和反馈,请在下方的评论框里写下来,以便我们可以提升或者更新我们的文章。谢谢!祝生活快乐 :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/interactively-create-docker-container/ + +作者:[Arun Pyasi][a] +译者:[wi-cuckoo](https://github.com/wi-cuckoo) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:https://registry.hub.docker.com/ From ae4d9c4bb233fa8ab466ffc66c48f35882bb1980 Mon Sep 17 00:00:00 2001 From: Zhou Yifan Date: Tue, 31 Mar 2015 12:46:46 +0800 Subject: [PATCH 693/725] =?UTF-8?q?[=E7=BF=BB=E8=AF=91=E5=AE=8C=E6=88=90]?= =?UTF-8?q?=20=20=20=20=20translated/tech/20150205=20How=20To=20Install=20?= =?UTF-8?q?or=20Configure=20VNC=20Server=20On=20CentOS=207.0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...l or Configure VNC Server On CentOS 7.0.md | 161 ----------------- ...l or Configure VNC Server On CentOS 7.0.md | 167 ++++++++++++++++++ 2 files changed, 167 insertions(+), 161 deletions(-) delete mode 100644 sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md create mode 100644 translated/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md diff --git a/sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md b/sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md deleted file mode 100644 index 3eaba972f8..0000000000 --- a/sources/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md +++ /dev/null @@ -1,161 +0,0 @@ -How To Install / Configure VNC Server On CentOS 7.0 -================================================================================ -Hi there, this tutorial is all about how to install or setup [VNC][1] Server on your very CentOS 7. This tutorial also works fine in RHEL 7. In this tutorial, we'll learn what is VNC and how to install or setup [VNC Server][1] on CentOS 7 - -As we know, most of the time as a system administrator we are managing our servers over the network. It is very rare that we will need to have a physical access to any of our managed servers. In most cases all we need is to SSH remotely to do our administration tasks. In this article we will configure a GUI alternative to a remote access to our CentOS 7 server, which is VNC. VNC allows us to open a remote GUI session to our server and thus providing us with a full graphical interface accessible from any remote location. - -VNC server is a Free and Open Source Software which is designed for allowing remote access to the Desktop Environment of the server to the VNC Client whereas VNC viewer is used on remote computer to connect to the server . - -**Some Benefits of VNC server are listed below:** - - Remote GUI administration makes work easy & convenient. - Clipboard sharing between host CentOS server & VNC-client machine. - GUI tools can be installed on the host CentOS server to make the administration more powerful - Host CentOS server can be administered through any OS having the VNC-client installed. - More reliable over ssh graphics and RDP connections. - -So, now lets start our journey towards the installation of VNC Server. We need to follow the steps below to setup and to get a working VNC. - -First of all we'll need a working Desktop Environment (X-Windows), if we don't have a working GUI Desktop Environment (X Windows) running, we'll need to install it first. - -**Note: The commands below must be running under root privilege. To switch to root please execute "sudo -s" under a shell or terminal without quotes("")** - -### 1. Installing X-Windows ### - -First of all to install [X-Windows][2] we'll need to execute the below commands in a shell or terminal. It will take few minutes to install its packages. - - # yum check-update - # yum groupinstall "X Window System" - -![installing x windows](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-x-windows.png) - - #yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts - -![install gnome classic session](http://blog.linoxide.com/wp-content/uploads/2015/01/gnome-classic-session-install.png) - - # unlink /etc/systemd/system/default.target - # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target - -![configuring graphics](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-graphics.png) - - # reboot - -After our machine restarts, we'll get a working CentOS 7 Desktop. - -Now, we'll install VNC Server on our machine. - -### 2. Installing VNC Server Package ### - -Now, we'll install VNC Server package in our CentOS 7 machine. To install VNC Server, we'll need to execute the following command. - - # yum install tigervnc-server -y - -![vnc server](http://blog.linoxide.com/wp-content/uploads/2015/01/install-tigervnc.png) - -### 3. Configuring VNC ### - -Then, we'll need to create a configuration file under **/etc/systemd/system/** directory. We can copy the **vncserver@:1.service** file from example file from **/lib/systemd/system/vncserver@.service** - - # cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service - -![copying vnc server configuration](http://blog.linoxide.com/wp-content/uploads/2015/01/copying-configuration.png) - -Now we'll open **/etc/systemd/system/vncserver@:1.service** in our favorite text editor (here, we're gonna use **nano**). Then find the below lines of text in that file and replace with your username. Here, in my case its linoxide so I am replacing with linoxide and finally looks like below. - - ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i" - PIDFile=/home//.vnc/%H%i.pid - -TO - - ExecStart=/sbin/runuser -l linoxide -c "/usr/bin/vncserver %i" - PIDFile=/home/linoxide/.vnc/%H%i.pid - -If you are creating for root user then - - ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i" - PIDFile=/root/.vnc/%H%i.pid - -![configuring user](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-user.png) - -Now, we'll need to reload our systemd. - - # systemctl daemon-reload - -Finally, we'll create VNC password for the user . To do so, first you'll need to be sure that you have sudo access to the user, here I will login to user "linoxide" then, execute the following. To login to linoxide we'll run "**su linoxide" without quotes** . - - # su linoxide - $ sudo vncpasswd - -![setting vnc password](http://blog.linoxide.com/wp-content/uploads/2015/01/vncpassword.png) - -**Make sure that you enter passwords more than 6 characters.** - -### 4. Enabling and Starting the service ### - -To enable service at startup ( Permanent ) execute the commands shown below. - - $ sudo systemctl enable vncserver@:1.service - -Then, start the service. - - $ sudo systemctl start vncserver@:1.service - -### 5. Allowing Firewalls ### - -We'll need to allow VNC services in Firewall now. - - $ sudo firewall-cmd --permanent --add-service vnc-server - $ sudo systemctl restart firewalld.service - -![allowing firewalld](http://blog.linoxide.com/wp-content/uploads/2015/01/allowing-firewalld.png) - -Now you can able to connect VNC server using IP and Port ( Eg : ip-address:1 ) - -### 6. Connecting the machine with VNC Client ### - -Finally, we are done installing VNC Server. No, we'll wanna connect the server machine and remotely access it. For that we'll need a VNC Client installed in our computer which will only enable us to remote access the server machine. - -![remote access vncserver from vncviewer](http://blog.linoxide.com/wp-content/uploads/2015/01/vncviewer.png) - -You can use VNC client like [Tightvnc viewer][3] and [Realvnc viewer][4] to connect Server. -To connect with additional users create files with different ports, please go to step 3 to configure and add a new user and port, You'll need to create **vncserver@:2.service** and replace the username in config file and continue the steps by replacing service name for different ports. **Please make sure you logged in as that particular user for creating vnc password**. - -VNC by itself runs on port 5900. Since each user will run their own VNC server, each user will have to connect via a separate port. The addition of a number in the file name tells VNC to run that service as a sub-port of 5900. So in our case, arun's VNC service will run on port 5901 (5900 + 1) and further will run on 5900 + x. Where, x denotes the port specified when creating config file **vncserver@:x.service for the further users**. - -We'll need to know the IP Address and Port of the server to connect with the client. IP addresses are the unique identity number of the machine. Here, my IP address is 96.126.120.92 and port for this user is 1. We can get the public IP address by executing the below command in a shell or terminal of the machine where VNC Server is installed. - - # curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' - -### Conclusion ### - -Finally, we installed and configured VNC Server in the machine running CentOS 7 / RHEL 7 (Red Hat Enterprises Linux) . VNC is the most easy FOSS tool for the remote access and also a good alternative to Teamviewer Remote Access. VNC allows a user with VNC client installed to control the machine with VNC Server installed. Here are some commands listed below that are highly useful in VNC . Enjoy !! - -#### Additional Commands : #### - -- To stop VNC service . - - # systemctl stop vncserver@:1.service - -- To disable VNC service from startup. - - # systemctl disable vncserver@:1.service - -- To stop firewall. - - # systemctl stop firewalld.service - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/install-configure-vnc-server-centos-7-0/ - -作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunp/ -[1]:http://en.wikipedia.org/wiki/Virtual_Network_Computing -[2]:http://en.wikipedia.org/wiki/X_Window_System -[3]:http://www.tightvnc.com/ -[4]:https://www.realvnc.com/ \ No newline at end of file diff --git a/translated/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md b/translated/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md new file mode 100644 index 0000000000..58c846e4d6 --- /dev/null +++ b/translated/tech/20150205 How To Install or Configure VNC Server On CentOS 7.0.md @@ -0,0 +1,167 @@ +===>> boredivan翻译中 <<=== +怎样在CentOS 7.0上安装/配置VNC服务器 +================================================================================ +这是一个关于怎样在你的 CentOS 7 上安装配置 [VNC][1] 服务的教程。当然这个教程也适合 RHEL 7 。在这个教程里,我们将学习什么是VNC以及怎样在 CentOS 7 上安装配置 [VNC 服务器][1]。 + +我们都知道,作为一个系统管理员,大多数时间是通过网络管理服务器的。在管理服务器的过程中很少会用到图形界面,多数情况下我们只是用 SSH 来完成我们的管理任务。在这篇文章里,我们将配置 VNC 来提供一个连接我们 CentOS 7 服务器的方法。VNC 允许我们开启一个远程图形会话来连接我们的服务器,这样我们就可以通过网络远程访问服务器的图形界面了。 + +VNC 服务器是一个自由且开源的软件,它可以让用户可以远程访问服务器的桌面环境。另外连接 VNC 服务器需要使用 VNC viewer 这个客户端。 + +** 一些 VNC 服务器的优点:** + + 远程的图形管理方式让工作变得简单方便。 + 剪贴板可以在 CentOS 服务器主机和 VNC 客户端机器之间共享。 + CentOS 服务器上也可以安装图形工具,让管理能力变得更强大。 + 只要安装了 VNC 客户端,任何操作系统都可以管理 CentOS 服务器了。 + 比 ssh 图形和 RDP 连接更可靠。 + +那么,让我们开始安装 VNC 服务器之旅吧。我们需要按照下面的步骤一步一步来搭建一个有效的 VNC。 + + +首先,我们需要一个有效的桌面环境(X-Window),如果没有的话要先安装一个。 + +**注意:以下命令必须以 root 权限运行。要切换到 root ,请在终端下运行“sudo -s”,当然不包括双引号(“”)** + +### 1. 安装 X-Window ### + +首先我们需要安装 [X-Window][2],在终端中运行下面的命令,安装会花费一点时间。 + + # yum check-update + # yum groupinstall "X Window System" + +![installing x windows](http://blog.linoxide.com/wp-content/uploads/2015/01/installing-x-windows.png) + + #yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts + +![install gnome classic session](http://blog.linoxide.com/wp-content/uploads/2015/01/gnome-classic-session-install.png) + + # unlink /etc/systemd/system/default.target + # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target + +![configuring graphics](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-graphics.png) + + # reboot + +在服务器重启之后,我们就有了一个工作着的 CentOS 7 桌面环境了。 + +现在,我们要在服务器上安装 VNC 服务器了。 + +### 2. 安装 VNC 服务器 ### + +现在要在我们的 CentOS 7 上安装 VNC 服务器了。我们需要执行下面的命令。 + + # yum install tigervnc-server -y + +![vnc server](http://blog.linoxide.com/wp-content/uploads/2015/01/install-tigervnc.png) + +### 3. 配置 VNC ### + +然后,我们需要在 **/etc/systemd/system/** 目录里创建一个配置文件。我们可以从 **/lib/systemd/sytem/vncserver@.service** 拷贝一份配置文件范例过来。 + + # cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service + +![copying vnc server configuration](http://blog.linoxide.com/wp-content/uploads/2015/01/copying-configuration.png) + +接着我们用自己最喜欢的编辑器(这儿我们用的 **nano** )打开 **/etc/systemd/system/vncserver@:1.service** ,找到下面这几行,用自己的用户名替换掉 。举例来说,我的用户名是 linoxide 所以我用 linoxide 来替换掉 : + + ExecStart=/sbin/runuser -l -c "/usr/bin/vncserver %i" + PIDFile=/home//.vnc/%H%i.pid + +替换成 + + ExecStart=/sbin/runuser -l linoxide -c "/usr/bin/vncserver %i" + PIDFile=/home/linoxide/.vnc/%H%i.pid + +如果是 root 用户则 + + ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i" + PIDFile=/root/.vnc/%H%i.pid + +![configuring user](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-user.png) + +好了,下面重启 systemd 。 + + # systemctl daemon-reload + +Finally, we'll create VNC password for the user . To do so, first you'll need to be sure that you have sudo access to the user, here I will login to user "linoxide" then, execute the following. To login to linoxide we'll run "**su linoxide" without quotes** . +最后还要设置一下用户的 VNC 密码。要设置某个用户的密码,必须要获得该用户的权限,这里我用 linoxide 的权限,执行“**su linoxide**”就可以了。 + + # su linoxide + $ sudo vncpasswd + +![setting vnc password](http://blog.linoxide.com/wp-content/uploads/2015/01/vncpassword.png) + +**确保你输入的密码多于6个字符** + +### 4. 开启服务 ### + +用下面的命令(永久地)开启服务: + + $ sudo systemctl enable vncserver@:1.service + +启动服务。 + + $ sudo systemctl start vncserver@:1.service + +### 5. 防火墙设置 ### + +我们需要配置防火墙来让 VNC 服务正常工作。 + + $ sudo firewall-cmd --permanent --add-service vnc-server + $ sudo systemctl restart firewalld.service + +![allowing firewalld](http://blog.linoxide.com/wp-content/uploads/2015/01/allowing-firewalld.png) + +现在就可以用 IP 和端口号(例如 192.168.1.1:1 ,这里的端口不是服务器的端口,而是视 VNC 连接数的多少从1开始排序——译注)来连接 VNC 服务器了。 + +### 6. 用 VNC 客户端连接服务器 ### + +好了,现在已经完成了 VNC 服务器的安装了。要使用 VNC 连接服务器,我们还需要一个在本地计算机上安装的仅供连接远程计算机使用的 VNC 客户端。 + +![remote access vncserver from vncviewer](http://blog.linoxide.com/wp-content/uploads/2015/01/vncviewer.png) + +你可以用像 [Tightvnc viewer][3] 和 [Realvnc viewer][4] 的客户端来连接到服务器。 + +要用其他用户和端口连接 VNC 服务器,请回到第3步,添加一个新的用户和端口。你需要创建 **vncserver@:2.service** 并替换配置文件里的用户名和之后步骤里响应的文件名、端口号。**请确保你登录 VNC 服务器用的是你之前配置 VNC 密码的时候使用的那个用户名** + + + +VNC 服务本身使用的是5900端口。鉴于有不同的用户使用 VNC ,每个人的连接都会获得不同的端口。配置文件名里面的数字告诉 VNC 服务器把服务运行在5900的子端口上。在我们这个例子里,第一个 VNC 服务会运行在5901(5900 + 1)端口上,之后的依次增加,运行在5900 + x 号端口上。其中 x 是指之后用户的配置文件名 **vncserver@:x.service** 里面的 x 。 + +在建立连接之前,我们需要知道服务器的 IP 地址和端口。IP 地址是一台计算机在网络中的独特的识别号码。我的服务器的 IP 地址是96.126.120.92,VNC 用户端口是1。执行下面的命令可以获得服务器的公网 IP 地址。 + + # curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' + +### 总结 ### + +好了,现在我们已经在运行 CentOS 7 / RHEL 7 (Red Hat Enterprises Linux)的服务器上安装配置好了 VNC 服务器。VNC 是自由及开源的软件中最简单的一种能实现远程控制服务器的一种工具,也是 Teamviewer Remote Access 的一款优秀的替代品。VNC 允许一个安装了 VNC 客户端的用户远程控制一台安装了 VNC 服务的服务器。下面还有一些经常使用的相关命令。好好玩! + +#### 其他命令: #### + +- 关闭 VNC 服务。 + + # systemctl stop vncserver@:1.service + +- 禁止 VNC 服务开机启动。 + + # systemctl disable vncserver@:1.service + +- 关闭防火墙。 + + # systemctl stop firewalld.service + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-configure-vnc-server-centos-7-0/ + +作者:[Arun Pyasi][a] +译者:[boredivan](https://github.com/boredivan) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://en.wikipedia.org/wiki/Virtual_Network_Computing +[2]:http://en.wikipedia.org/wiki/X_Window_System +[3]:http://www.tightvnc.com/ +[4]:https://www.realvnc.com/ From 481b1b253957f892d7abfd530a0e4422207b456d Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 31 Mar 2015 13:07:14 +0800 Subject: [PATCH 694/725] PUB:20150202 How To Install Websvn for Subversion in CentOS 7.0 @geekpi --- ...all Websvn for Subversion in CentOS 7.0.md | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) rename {translated/tech => published}/20150202 How To Install Websvn for Subversion in CentOS 7.0.md (59%) diff --git a/translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md b/published/20150202 How To Install Websvn for Subversion in CentOS 7.0.md similarity index 59% rename from translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md rename to published/20150202 How To Install Websvn for Subversion in CentOS 7.0.md index 35af70fc51..c374f9f670 100644 --- a/translated/tech/20150202 How To Install Websvn for Subversion in CentOS 7.0.md +++ b/published/20150202 How To Install Websvn for Subversion in CentOS 7.0.md @@ -1,9 +1,8 @@ -如何在CentOS 7.0上为Subverison安装Websvn +如何在CentOS 7.0 安装 Websvn ================================================================================ -大家好,今天我们会在CentOS 7.0 上为subversion安装WebSVN。 - -WebSVN提供了Svbverion中的各种方法来查看你的仓库。我们可以看到任何给定版本的任何文件或者目录的日志并且看到所有文件改动、添加、删除的列表。我们同样可以看到两个版本间的不同来知道特定版本改动了什么。 +大家好,今天我们会在CentOS 7.0 上为 subversion(SVN)安装Web 界面 WebSVN。(subverion 是 apache 的顶级项目,也称为 Apache SVN 或 SVN) +WebSVN 将 Svbverion 的操作你的仓库的各种功能通过 Web 界面提供出来。通过它,我们可以看到任何给定版本的任何文件或者目录的日志,并且可看到所有文件改动、添加、删除的列表。我们同样可以查看两个版本间的差异来知道特定版本改动了什么。 ### 特性 ### @@ -12,20 +11,20 @@ WebSVN提供了下面这些特性: - 易于使用的用户界面 - 可定制的模板系统 - 色彩化的文件列表 -- blame 视图 +- 追溯视图 - 日志信息查询 - RSS支持 - [更多][1] -由于使用PHP写成,WebSVN同样易于移植和安装。 +由于其使用PHP写成,WebSVN同样易于移植和安装。 -现在我们将为Subverison(Apache SVN)安装WebSVN。请确保你的服务器上已经安装了Apache SVN。如果你还没有安装,你可以在本教程中安装。 +现在我们将为Subverison安装WebSVN。请确保你的服务器上已经安装了 SVN。如果你还没有安装,你可以按[本教程][2]安装。 -After you installed Apache SVN(Subversion), you'll need to follow the easy steps below.安装完Apache SVN(Subversion)后,你需要以下几步。 +安装完SVN后,你需要以下几步。 ### 1. 下载 WebSVN ### -你可以从官方网站http://www.websvn.info/download/中下载WebSVN。我们首先进入/var/www/html/并在这里下载安装包。 +你可以从官方网站 http://www.websvn.info/download/ 中下载 WebSVN。我们首先进入 /var/www/html/ 并在这里下载安装包。 $ sudo -s @@ -36,7 +35,7 @@ After you installed Apache SVN(Subversion), you'll need to follow the easy steps ![downloading websvn package](http://blog.linoxide.com/wp-content/uploads/2015/01/downloading-websvn.png) -这里,我下载的是最新的2.3.3版本的websvn。你可以从这个网站得到链接。你可以用你要安装的包的链接来替换上面的链接。 +这里,我下载的是最新的2.3.3版本的 websvn。你可以从上面这个网站找到下载链接,用适合你的包的链接来替换上面的链接。 ### 2. 解压下载的zip ### @@ -54,7 +53,7 @@ After you installed Apache SVN(Subversion), you'll need to follow the easy steps ### 4. 编辑WebSVN配置 ### -现在,我们需要拷贝位于/var/www/html/websvn/include的distconfig.php为config.php,并且接着编辑配置文件。 +现在,我们需要拷贝位于 /var/www/html/websvn/include 的 distconfig.php 为 config.php,并且接着编辑该配置文件。 # cd /var/www/html/websvn/include @@ -62,7 +61,7 @@ After you installed Apache SVN(Subversion), you'll need to follow the easy steps # nano config.php -现在我们需要按如下改变文件。这完成之后,请保存病退出。 +现在我们需要按如下改变文件。完成之后,请保存并退出。 // Configure these lines if your commands aren't on your path. // @@ -100,7 +99,7 @@ After you installed Apache SVN(Subversion), you'll need to follow the easy steps # systemctl restart httpd.service -接着我们在浏览器中打开WebSVN,输入http://Ip-address/websvn,或者你在本地的话,你可以输入http://localhost/websvn。 +接着我们在浏览器中打开WebSVN,输入 http:// IP地址/websvn ,或者你在本地的话,你可以输入 http://localhost/websvn 。 ![websvn successfully installed](http://blog.linoxide.com/wp-content/uploads/2015/01/websvn-success.png) @@ -108,7 +107,9 @@ After you installed Apache SVN(Subversion), you'll need to follow the easy steps ### 总结 ### -好了,我们已经在CentOS 7上哇安城WebSVN的安装了。这个教程同样适用于RHEL 7。WebSVN提供了Svbverion中的各种方法来查看你的仓库。你可以看到任何给定版本的任何文件或者目录的日志并且看到所有文件改动、添加、删除的列表。如果你有任何问题、评论、反馈请在下面的评论栏中留下,来让我们知道该添加什么和改进。谢谢!享受WebSVN吧。:-) +好了,我们已经在CentOS 7上完成WebSVN的安装了。这个教程同样适用于RHEL 7。WebSVN 提供了 Subverion 中的各种功能来查看你的仓库。你可以看到任何给定版本的任何文件或者目录的日志,并且看到所有文件改动、添加、删除的列表。 + +如果你有任何问题、评论、反馈请在下面的评论栏中留下,来让我们知道该添加什么和改进。谢谢! 用用看吧。:-) -------------------------------------------------------------------------------- @@ -116,9 +117,10 @@ via: http://linoxide.com/linux-how-to/install-websvn-subversion-centos-7/ 作者:[Arun Pyasi][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunp/ [1]:http://www.websvn.info/features/ +[2]:http://linoxide.com/linux-how-to/install-apache-svn-subversion-centos-7/ From f5db378888573d45b2e3668421895110654e3688 Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 31 Mar 2015 13:15:45 +0800 Subject: [PATCH 695/725] PUB:20150304 Linux Basics--How To Find Maximum Supported RAM By Your System @mr-ping --- ...ics--How To Find Maximum Supported RAM By Your System.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename {translated/tech => published}/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md (99%) diff --git a/translated/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md b/published/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md similarity index 99% rename from translated/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md rename to published/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md index 52b978dbc8..14bc56c329 100644 --- a/translated/tech/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md +++ b/published/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md @@ -681,15 +681,15 @@ Linux基础:如何找出你的系统所支持的最大内存 Handle 0x0031, DMI type 127, 4 bytes End Of Table -好了,就是这样。周末愉快! +好了,就是这样。 -------------------------------------------------------------------------------- -via: https://www.unixmen.com/linux-basics-how-to-find-maximum-supported-ram-by-your-system/ +via: http://www.unixmen.com/linux-basics-how-to-find-maximum-supported-ram-by-your-system/ 作者:[SK][0] 译者:[mr-ping](https://github.com/mr-ping) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 62faa592e0f17779f67ea116ecafa39b845314c0 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 31 Mar 2015 16:09:37 +0800 Subject: [PATCH 696/725] =?UTF-8?q?20150331-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...mate X Based System Monitor Application.md | 147 ++++++++++++++++++ ...pt or Decrypt Random Passwords in Linux.md | 104 +++++++++++++ ... remote desktop on Linux VPS using x2go.md | 137 ++++++++++++++++ ...ry Updated--How To Install It In Ubuntu.md | 70 +++++++++ 4 files changed, 458 insertions(+) create mode 100644 sources/tech/20150331 Conky--The Ultimate X Based System Monitor Application.md create mode 100644 sources/tech/20150331 How to Generate or Encrypt or Decrypt Random Passwords in Linux.md create mode 100644 sources/tech/20150331 How to set up remote desktop on Linux VPS using x2go.md create mode 100644 sources/tech/20150331 Linux Email App Geary Updated--How To Install It In Ubuntu.md diff --git a/sources/tech/20150331 Conky--The Ultimate X Based System Monitor Application.md b/sources/tech/20150331 Conky--The Ultimate X Based System Monitor Application.md new file mode 100644 index 0000000000..fdb2648a36 --- /dev/null +++ b/sources/tech/20150331 Conky--The Ultimate X Based System Monitor Application.md @@ -0,0 +1,147 @@ +Conky – The Ultimate X Based System Monitor Application +================================================================================ +Conky is a system monitor application written in ‘C’ Programming Language and released under GNU General Public License and BSD License. It is available for Linux and BSD Operating System. The application is X (GUI) based that was originally forked from [Torsmo][1]. + +#### Features #### + +- Simple User Interface +- Higher Degree of configuration +- It can show System stats using built-in objects (300+) as well as external scripts either on the desktop or in it’s own container. +- Low on Resource Utilization +- Shows system stats for a wide range of system variables which includes but not restricted to CPU, memory, swap, Temperature, Processes, Disk, Network, Battery, email, System messages, Music player, weather, breaking news, updates and blah..blah..blah +- Available in Default installation of OS like CrunchBang Linux and Pinguy OS. + +#### Lesser Known Facts about Conky #### + +- The Name conky was derived from a Canadian Television Show. +- It has already been ported to Nokia N900. +- It is no more maintained officially. + +### Conky Installation and Usage in Linux ### + +Before we install conky, we need to install packages like lm-sensors, curl and hddtemp using following command. + + # apt-get install lm-sensors curl hddtemp + +Time to detect-sensors. + + # sensors-detect + +**Note**: Answer ‘Yes‘ when prompted! + +Check all the detected sensors. + + # sensors + +#### Sample Output #### + + acpitz-virtual-0 + Adapter: Virtual device + temp1: +49.5°C (crit = +99.0°C) + + coretemp-isa-0000 + Adapter: ISA adapter + Physical id 0: +49.0°C (high = +100.0°C, crit = +100.0°C) + Core 0: +49.0°C (high = +100.0°C, crit = +100.0°C) + Core 1: +49.0°C (high = +100.0°C, crit = +100.0°C) + +Conky can be installed from repo as well as, can be compiled from source. + + # yum install conky [On RedHat systems] + # apt-get install conky-all [On Debian systems] + +**Note**: Before you install conky on Fedora/CentOS, you must have enabled [EPEL repository][2]. + +After conky has been installed, just issue following command to start it. + + $ conky & + +![Conky Monitor in Action](http://www.tecmint.com/wp-content/uploads/2015/03/Start-Conkey.jpeg) +Conky Monitor in Action + +It will run conky in a popup like window. It uses the basic conky configuration file located at /etc/conky/conky.conf. + +You may need to integrate conky with the desktop and won’t like a popup like window every-time. Here is what you need to do + +Copy the configuration file /etc/conky/conky.conf to your home directory and rename it as ‘`.conkyrc`‘. The dot (.) at the beginning ensures that the configuration file is hidden. + + $ cp /etc/conky/conky.conf /home/$USER/.conkyrc + +Now restart conky to take new changes. + + $ killall -SIGUSR1 conky + +![Conky Monitor Window](http://www.tecmint.com/wp-content/uploads/2015/03/Restart-Conky.jpeg) +Conky Monitor Window + +You may edit the conky configuration file located in your home dircetory. The configuration file is very easy to understand. + +Here is a sample configuration of conky. + +![Conky Configuration](http://www.tecmint.com/wp-content/uploads/2015/03/Conky-Configuration.jpeg) +Conky Configuration + +From the above window you can modify color, borders, size, scale, background, alignment and several other properties. By setting different alignments to different conky window, we can run more than one conky script at a time. + +**Using script other than the default for conky and where to find it?** + +You may write your own conky script or use one that is available over Internet. We don’t suggest you to use any script you find on the web which can be potentially dangerous unless you know what you are doing. However a few famous threads and pages have conky script that you can trust as mentioned below. + +- [http://ubuntuforums.org/showthread.php?t=281865][3] +- [http://conky.sourceforge.net/screenshots.html][4] + +At the above url, you will find every screenshot has a hyperlink, which will redirects to script file. + +#### Testing Conky Script #### + +Here I will be running a third party written conky-script on my Debian Jessie Machine, to test. + + $ wget https://github.com/alexbel/conky/archive/master.zip + $ unzip master.zip + +Change current working directory to just extracted directory. + + $ cd conky-master + +Rename the secrets.yml.example to secrets.yml. + + $ mv secrets.yml.example secrets.yml + +Install Ruby before you could run this (ruby) script. + + $ sudo apt-get install ruby + $ ruby starter.rb + +![Conky Fancy Look](http://www.tecmint.com/wp-content/uploads/2015/03/Conky-Fancy-Look.jpeg) +Conky Fancy Look + +**Note**: This script can be modified to show your current weather, temperature, etc. + +If you want to start conky at boot, add the below one liner to startup Applications. + + conky --pause 10 + save and exit. + +And Finally…such a lightweight and useful GUI eye candy like package is not in active stage and is not maintained officially anymore. The last stable release was conky 1.9.0 released on May 03, 2012. A thread on Ubuntu forum has gone over 2k pages of users sharing configuration. (link to forum : [http://ubuntuforums.org/showthread.php?t=281865/][5]) + +- [Conky Homepage][6] + +That’s all for now. Keep connected. Keep commenting. Share your thoughts and configuration in comments below. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/install-conky-in-ubuntu-debian-fedora/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://torsmo.sourceforge.net/ +[2]:http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/ +[3]:http://ubuntuforums.org/showthread.php?t=281865 +[4]:http://conky.sourceforge.net/screenshots.html +[5]:http://ubuntuforums.org/showthread.php?t=281865/ +[6]:http://conky.sourceforge.net/ \ No newline at end of file diff --git a/sources/tech/20150331 How to Generate or Encrypt or Decrypt Random Passwords in Linux.md b/sources/tech/20150331 How to Generate or Encrypt or Decrypt Random Passwords in Linux.md new file mode 100644 index 0000000000..1cd2991879 --- /dev/null +++ b/sources/tech/20150331 How to Generate or Encrypt or Decrypt Random Passwords in Linux.md @@ -0,0 +1,104 @@ +How to Generate/Encrypt/Decrypt Random Passwords in Linux +================================================================================ +We have taken initiative to produce Linux tips and tricks series. If you’ve missed the last article of this series, you may like to visit the link below. + +注:此篇文章做过原文 +- [5 Interesting Command Line Tips and Tricks in Linux][1] + +In this article, we will share some interesting Linux tips and tricks to generate random passwords and also how to encrypt and decrypt passwords with or without slat method. + +Security is one of the major concern of digital age. We put on password to computers, email, cloud, phone, documents and what not. We all know the basic to choose the password that is easy to remember and hard to guess. What about some sort of machine based password generation automatically? Believe me Linux is very good at this. + +**1. Generate a random unique password of length equal to 10 characters using command ‘pwgen‘. If you have not installed pwgen yet, use Apt or YUM to get.** + + $ pwgen 10 1 + +![Generate Random Unique Password](http://www.tecmint.com/wp-content/uploads/2015/03/Generate-Random-Unique-Password-in-Linux.gif) +Generate Random Unique Password + +Generate several random unique passwords of character length 50 in one go! + + $ pwgen 50 + +![Generate Multiple Random Passwords](http://www.tecmint.com/wp-content/uploads/2015/03/Generate-Multiple-Random-Passwords.gif) +Generate Multiple Random Passwords + +**2. You may use ‘makepasswd‘ to generate random, unique password of given length as per choice. Before you can fire makepasswd command, make sure you have installed it. If not! Try installing the package ‘makepasswd’ using Apt or YUM.** + +Generate a random password of character length 10. Default Value is 10. + + $ makepasswd + +![makepasswd Generate Unique Password](http://www.tecmint.com/wp-content/uploads/2015/03/mkpasswd-generate-unique-password.gif) +makepasswd Generate Unique Password + +Generate a random password of character length 50. + + $ makepasswd --char 50 + +![Generate Length 50 Password](http://www.tecmint.com/wp-content/uploads/2015/03/Random-Password-Generate.gif) +Generate Length 50 Password + +Generate 7 random password of 20 characters. + + $ makepasswd --char 20 --count 7 + +![](http://www.tecmint.com/wp-content/uploads/2015/03/Generate-20-Character-Password.gif) + +**3. Encrypt a password using crypt along with salt. Provide salt manually as well as automatically.** + +For those who may not be aware of salt, + +Salt is a random data which servers as an additional input to one way function in order to protect password against dictionary attack. + +Make sure you have installed mkpasswd installed before proceeding. + +The below command will encrypt the password with salt. The salt value is taken randomly and automatically. Hence every time you run the below command it will generate different output because it is accepting random value for salt every-time. + + $ mkpasswd tecmint + +![Encrypt Password Using Crypt](http://www.tecmint.com/wp-content/uploads/2015/03/Encrypt-Password-in-Linux.gif) +Encrypt Password Using Crypt + +Now lets define the salt. It will output the same result every-time. Note you can input anything of your choice as salt. + + $ mkpasswd tecmint -s tt + +![Encrypt Password Using Salt](http://www.tecmint.com/wp-content/uploads/2015/03/Encrypt-Password-Using-Salt.gif) +Encrypt Password Using Salt + +Moreover, mkpasswd is interactive and if you don’t provide password along with the command, it will ask password interactively. + +**4. Encrypt a string say “Tecmint-is-a-Linux-Community” using aes-256-cbc encryption using password say “tecmint” and salt.** + + # echo Tecmint-is-a-Linux-Community | openssl enc -aes-256-cbc -a -salt -pass pass:tecmint + +![Encrypt A String in Linux](http://www.tecmint.com/wp-content/uploads/2015/03/Encrypt-A-String-in-Linux.gif) +Encrypt A String in Linux + +Here in the above example the output of 注:此篇原文也做过[echo command][2] is pipelined with openssl command that pass the input to be encrypted using Encoding with Cipher (enc) that uses aes-256-cbc encryption algorithm and finally with salt it is encrypted using password (tecmint). + +**5. Decrypt the above string using openssl command using the -aes-256-cbc decryption.** + + # echo U2FsdGVkX18Zgoc+dfAdpIK58JbcEYFdJBPMINU91DKPeVVrU2k9oXWsgpvpdO/Z | openssl enc -aes-256-cbc -a -d -salt -pass pass:tecmint + +![Decrypt String in Linux](http://www.tecmint.com/wp-content/uploads/2015/03/Decrypt-String-in-Linux.gif) +Decrypt String in Linux + +That’s all for now. If you know any such tips and tricks you may send us your tips at admin@tecmint.com, your tip will be published under your name and also we will include it in our future article. + +Keep connected. Keep Connecting. Stay Tuned. Don’t forget to provide us with your valuable feedback in the comments below. + +-------------------------------------------------------------------------------- + +via: http://www.tecmint.com/generate-encrypt-decrypt-random-passwords-in-linux/ + +作者:[Avishek Kumar][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.tecmint.com/author/avishek/ +[1]:http://www.tecmint.com/5-linux-command-line-tricks/ +[2]:http://www.tecmint.com/echo-command-in-linux/ \ No newline at end of file diff --git a/sources/tech/20150331 How to set up remote desktop on Linux VPS using x2go.md b/sources/tech/20150331 How to set up remote desktop on Linux VPS using x2go.md new file mode 100644 index 0000000000..8f98a2ba02 --- /dev/null +++ b/sources/tech/20150331 How to set up remote desktop on Linux VPS using x2go.md @@ -0,0 +1,137 @@ +How to set up remote desktop on Linux VPS using x2go +================================================================================ +As everything is moved to the cloud, virtualized remote desktop becomes increasingly popular in the industry as a way to enhance employee's productivity. Especially for those who need to roam constantly across multiple locations and devices, remote desktop allows them to stay connected seamlessly to their work environment. Remote desktop is attractive for employers as well, achieving increased agility and flexibility in work environments, lower IT cost due to hardware consolidation, desktop security hardening, and so on. + +In the world of Linux, of course there is no shortage of choices for settings up remote desktop environment, with many protocols (e.g., RDP, RFB, NX) and server/client implementations (e.g., [TigerVNC][1], RealVNC, FreeNX, x2go, X11vnc, TeamViewer) available. + +Standing out from the pack is [X2Go][2], an open-source (GPLv2) implementation of NX-based remote desktop server and client. In this tutorial, I am going to demonstrate **how to set up remote desktop environment for [Linux VPS][3] using X2Go**. + +### What is X2Go? ### + +The history of X2Go goes back to NoMachine's NX technology. The NX remote desktop protocol was designed to deal with low bandwidth and high latency network connections by leveraging aggressive compression and caching. Later, NX was turned into closed-source while NX libraries were made GPL-ed. This has led to open-source implementation of several NX-based remote desktop solutions, and one of them is X2Go. + +What benefits does X2Go bring to the table, compared to other solutions such as VNC? X2Go inherits all the advanced features of NX technology, so naturally it works well over slow network connections. Besides, X2Go boasts of an excellent track record of ensuring security with its built-in SSH-based encryption. No longer need to set up an SSH tunnel [manually][4]. X2Go comes with audio support out of box, which means that music playback at the remote desktop is delivered (via PulseAudio) over network, and fed into local speakers. On usability front, an application that you run on remote desktop can be seamlessly rendered as a separate window on your local desktop, giving you an illusion that the application is actually running on the local desktop. As you can see, these are some of [its powerful features][5] lacking in VNC based solutions. + +### X2GO's Desktop Environment Compatibility ### + +As with other remote desktop servers, there are [known compatibility issues][6] for X2Go server. Desktop environments like KDE3/4, Xfce, MATE and LXDE are the most friendly to X2Go server. However, your mileage may vary with other desktop managers. For example, the later versions of GNOME 3, KDE5, Unity are known to be not compatible with X2Go. If the desktop manager of your remote host is compatible with X2Go, you can follow the rest of the tutorial. + +### Install X2Go Server on Linux ### + +X2Go consists of remote desktop server and client components. Let's start with X2Go server installation. I assume that you already have an X2Go-compatible desktop manager up and running on a remote host, where we will be installing X2Go server. + +Note that X2Go server component does not have a separate service that needs to be started upon boot. You just need to make sure that SSH service is up and running. + +#### Ubuntu or Linux Mint: #### + +Configure X2Go PPA repository. X2Go PPA is available for Ubuntu 14.04 and higher. + + $ sudo add-apt-repository ppa:x2go/stable + $ sudo apt-get update + $ sudo apt-get install x2goserver x2goserver-xsession + +#### Debian (Wheezy): #### + + $ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E + $ sudo sh -c "echo deb http://packages.x2go.org/debian wheezy main > /etc/apt/sources.list.d/x2go.list" + $ sudo sh -c "echo deb-src http://packages.x2go.org/debian wheezy main >> /etc/apt/sources.list.d/x2go.list" + $ sudo apt-get update + $ sudo apt-get install x2goserver x2goserver-xsession + +#### Fedora: #### + + $ sudo yum install x2goserver x2goserver-xsession + +#### CentOS/RHEL: #### + +Enable [EPEL respository][7] first, and then run: + + $ sudo yum install x2goserver x2goserver-xsession + +### Install X2Go Client on Linux ### + +On a local host where you will be connecting to remote desktop, install X2GO client as follows. + +#### Ubuntu or Linux Mint: #### + +Configure X2Go PPA repository. X2Go PPA is available for Ubuntu 14.04 and higher. + + $ sudo add-apt-repository ppa:x2go/stable + $ sudo apt-get update + $ sudo apt-get install x2goclient + +Debian (Wheezy): + + $ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E + $ sudo sh -c "echo deb http://packages.x2go.org/debian wheezy main > /etc/apt/sources.list.d/x2go.list" + $ sudo sh -c "echo deb-src http://packages.x2go.org/debian wheezy main >> /etc/apt/sources.list.d/x2go.list" + $ sudo apt-get update + $ sudo apt-get install x2goclient + +#### Fedora: #### + + $ sudo yum install x2goclient + +CentOS/RHEL: + +Enable EPEL respository first, and then run: + + $ sudo yum install x2goclient + +### Connect to Remote Desktop with X2Go Client ### + +Now it's time to connect to your remote desktop. On the local host, simply run the following command or use desktop launcher to start X2Go client. + + $ x2goclient + +Enter the remote host's IP address and SSH user name. Also, specify session type (i.e., desktop manager of a remote host). + +![](https://farm9.staticflickr.com/8730/16365755693_75f3d544e9_b.jpg) + +If you want, you can customize other things (by pressing other tabs), like connection speed, compression, screen resolution, and so on. + +![](https://farm9.staticflickr.com/8699/16984498482_665b975eca_b.jpg) + +![](https://farm9.staticflickr.com/8694/16985838755_1b7df1eb78_b.jpg) + +When you initiate a remote desktop connection, you will be asked to log in. Type your SSH login and password. + +![](https://farm9.staticflickr.com/8754/16984498432_1c8068b817_b.jpg) + +Upon successful login, you will see the remote desktop screen. + +![](https://farm9.staticflickr.com/8752/16798126858_1ab083ba80_c.jpg) + +If you want to test X2Go's seamless window feature, choose "Single application" as session type, and specify the path to an executable on the remote host. In this example, I choose Dolphin file manager on a remote KDE host. + +![](https://farm8.staticflickr.com/7584/16798393920_128c3af9c5_b.jpg) + +Once you are successfully connected, you will see a remote application window open on your local desktop, not the entire remote desktop screen. + +![](https://farm9.staticflickr.com/8742/16365755713_7b90cf65f0_c.jpg) + +### Conclusion ### + +In this tutorial, I demonstrated how to set up X2Go remote desktop on [Linux VPS][8] instance. As you can see, the whole setup process is pretty much painless (if you are using a right desktop environment). While there are some desktop-specific quirkiness, X2Go is a solid remote desktop solution which is secure, feature-rich, fast, and free. + +What feature is the most appealing to you in X2Go? Please share your thought. + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/x2go-remote-desktop-linux.html + +作者:[Dan Nanni][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/nanni +[1]:http://ask.xmodulo.com/centos-remote-desktop-vps.html +[2]:http://wiki.x2go.org/ +[3]:http://xmodulo.com/go/digitalocean +[4]:http://xmodulo.com/how-to-set-up-vnc-over-ssh.html +[5]:http://wiki.x2go.org/doku.php/doc:newtox2go +[6]:http://wiki.x2go.org/doku.php/doc:de-compat +[7]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html +[8]:http://xmodulo.com/go/digitalocean \ No newline at end of file diff --git a/sources/tech/20150331 Linux Email App Geary Updated--How To Install It In Ubuntu.md b/sources/tech/20150331 Linux Email App Geary Updated--How To Install It In Ubuntu.md new file mode 100644 index 0000000000..1ddccaa8c6 --- /dev/null +++ b/sources/tech/20150331 Linux Email App Geary Updated--How To Install It In Ubuntu.md @@ -0,0 +1,70 @@ +Linux Email App Geary Updated — How To Install It In Ubuntu +================================================================================ +**Geary, the popular desktop email client for Linux, has been updated to version 0.10 — and it gains a glut of new features in the process.** + +![An older version of Geary running in elementary OS](http://www.omgubuntu.co.uk/wp-content/uploads/2015/01/geary.jpg) +An older version of Geary running in elementary OS + +Geary 0.100 features some welcome user interface improvements and additional UI options, including: + +- New: Ability to ‘Undo’ Archive, Trash and Move actions +- New: Option to switch between a 2 column or 2 column layout +- New “split header bar” — improves message list, composer layouts +- New shortcut keys — use j/k to navigate next/previous conversations + +This update also introduces a **brand new full-text search algorithm** designed to improve the search experience in Geary, according to Yorba. + +This introduction should calm some complaints of the app’s search prowess, which often sees Geary return a slew of search results that are, to quote software outfit themselves, “…seemingly unrelated to the search query.” + +> ‘Yorba recommends that all users of the client upgrade to this release’ + +*“Although not all search problems are fixed in 0.10, Geary should be more conservative about displaying results that match the user’s query,” [the team notes][1]. * + +Last but by no means least on the main feature front is something sure to find favour with power users: **support for multiple/alternate e-mail addresses per account**. + +If your main Gmail account is set-up in Geary to pull in your Yahoo, Outlook and KittyMail messages too then you should now see them all kept neatly together and be given the option of picking which identity you send from when using the composer ‘From’ field. No, it’s not the sexiest feature but it is one that has been requested often. + +Rounding out this release of the popular Linux email client is the usual gamut of bug fixes, performance optimisations and miscellaneous improvements. + +Yorba recommends that all users of the client upgrade to this release. + +### Install Geary 0.10 in Ubuntu 14.04, 14.10 & 15.04 ### + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2014/09/geary-inline-composor.jpg) + +The latest version of Yorba is available to download as source, ready for compiling from the GNOME Git. But let’s be honest: that’s a bit of a hassle, right? + +Ubuntu users wondering how to install Geary 0.10 in **14.04, 14.10** and (for early birds) **15.04** have things easy. + +The official Yorba PPA contains the **latest versions of Geary** as well as those for Shotwell (photo manager) and [California][2] (calendar app). Be aware that any existing versions of these apps installed on your computer may/will be upgraded to a more recent version by adding this PPA. + +Capiche? Coolio. + +To install Geary in Ubuntu you first need to add the Yorba PPA your Softwares Sources. To do this just open a new Terminal window and carefully enter the following two commands: + + sudo add-apt-repository ppa:yorba/ppa + + sudo apt-get update && sudo apt-get install geary + +After hitting return/enter on the last you’ll be prompted to enter your password. Do this, and then let the installation complete. + +![](http://www.omgubuntu.co.uk/wp-content/uploads/2013/04/20130320161830-geary-yorba.png) + +Once done, open your desktop environment’s app launcher and seek out the ‘Geary’ icon. Click it, add your account(s) and discover [what the email mail man has dropped off through the information superhighway][3] and into the easy to use graphical interface. + +**Don’t forget: you can always tip us with news, app suggestions, and anything else you’d like to see us cover by using the power of electronic mail. Direct your key punches to joey [at] oho [dot] io.** + +-------------------------------------------------------------------------------- + +via: http://www.omgubuntu.co.uk/2015/03/install-geary-ubuntu-linux-email-update + +作者:[Joey-Elijah Sneddon][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:https://plus.google.com/117485690627814051450/?rel=author +[1]:https://wiki.gnome.org/Apps/Geary/FullTextSearchStrategy +[2]:http://www.omgubuntu.co.uk/2014/10/california-calendar-natural-language-parser +[3]:https://www.youtube.com/watch?v=rxM8C71GB8w \ No newline at end of file From a5cd670cde7a5768aa271056059a18c8d7dd4ccf Mon Sep 17 00:00:00 2001 From: DeadFire Date: Tue, 31 Mar 2015 16:29:15 +0800 Subject: [PATCH 697/725] =?UTF-8?q?20150331-2=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...dPress with Nginx in a Docker Container.md | 348 ++++++++++++++++++ ...ling PHP 7.0 on CentOS 7.x or Fedora 21.md | 323 ++++++++++++++++ 2 files changed, 671 insertions(+) create mode 100644 sources/tech/20150331 How to Install WordPress with Nginx in a Docker Container.md create mode 100644 sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md diff --git a/sources/tech/20150331 How to Install WordPress with Nginx in a Docker Container.md b/sources/tech/20150331 How to Install WordPress with Nginx in a Docker Container.md new file mode 100644 index 0000000000..9f74c672f4 --- /dev/null +++ b/sources/tech/20150331 How to Install WordPress with Nginx in a Docker Container.md @@ -0,0 +1,348 @@ +How to Install WordPress with Nginx in a Docker Container +================================================================================ +Hi all, today we'll learn how to install WordPress running Nginx Web Server in a Docker Container. WordPress is an awesome free and open source Content Management System running thousands of websites throughout the globe. [Docker][1] is an Open Source project that provides an open platform to pack, ship and run any application as a lightweight container. It has no boundaries of Language support, Frameworks or packaging system and can be run anywhere, anytime from a small home computers to high-end servers. It makes them great building blocks for deploying and scaling web apps, databases, and back-end services without depending on a particular stack or provider. + +Today, we'll deploy a docker container with the latest WordPress package with necessary prerequisites ie Nginx Web Server, PHP5, MariaDB Server, etc. Here are some short and sweet steps to successfully install a WordPress running Nginx in a Docker Container. + +### 1. Installing Docker ### + +Before we really start, we'll need to make sure that we have Docker installed in our Linux machine. Here, we are running CentOS 7 as host so, we'll be running yum manager to install docker using the below command. + + # yum install docker + +![Installing Docker](http://blog.linoxide.com/wp-content/uploads/2015/03/installing-docker.png) + + # systemctl restart docker.service + +### 2. Creating WordPress Dockerfile ### + +We'll need to create a Dockerfile which will automate the installation of the wordpress and its necessary pre-requisites. This Dockerfile will be used to build the image of WordPress installation we created. This WordPress Dockerfile fetches a CentOS 7 image from the Docker Registry Hub and updates the system with the latest available packages. It then installs the necessary softwares like Nginx Web Server, PHP, MariaDB, Open SSH Server and more which are essential for the Docker Container to work. It then executes a script which will initialize the installation of WordPress out of the box. + + # nano Dockerfile + +Then, we'll need to add the following lines of configuration inside that Dockerfile. + + FROM centos:centos7 + MAINTAINER The CentOS Project + + RUN yum -y update; yum clean all + RUN yum -y install epel-release; yum clean all + RUN yum -y install mariadb mariadb-server mariadb-client nginx php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy php-apc pwgen python-setuptools curl git tar; yum clean all + ADD ./start.sh /start.sh + ADD ./nginx-site.conf /nginx.conf + RUN mv /nginx.conf /etc/nginx/nginx.conf + RUN rm -rf /usr/share/nginx/html/* + RUN /usr/bin/easy_install supervisor + RUN /usr/bin/easy_install supervisor-stdout + ADD ./supervisord.conf /etc/supervisord.conf + RUN echo %sudo ALL=NOPASSWD: ALL >> /etc/sudoers + ADD http://wordpress.org/latest.tar.gz /wordpress.tar.gz + RUN tar xvzf /wordpress.tar.gz + RUN mv /wordpress/* /usr/share/nginx/html/. + RUN chown -R apache:apache /usr/share/nginx/ + RUN chmod 755 /start.sh + RUN mkdir /var/run/sshd + + EXPOSE 80 + EXPOSE 22 + + CMD ["/bin/bash", "/start.sh"] + +![Wordpress Dockerfile](http://blog.linoxide.com/wp-content/uploads/2015/03/Dockerfile-wordpress.png) + +### 3. Creating Start script ### + +After we create our Dockerfile, we'll need to create a script named start.sh which will run and configure our WordPress installation. It will create and configure database, passwords for wordpress. To create it, we'll need to open start.sh with our favorite text editor. + + # nano start.sh + +After opening start.sh, we'll need to add the following lines of configuration into it. + + #!/bin/bash + + __check() { + if [ -f /usr/share/nginx/html/wp-config.php ]; then + exit + fi + } + + __create_user() { + # Create a user to SSH into as. + SSH_USERPASS=`pwgen -c -n -1 8` + useradd -G wheel user + echo user:$SSH_USERPASS | chpasswd + echo ssh user password: $SSH_USERPASS + } + + __mysql_config() { + # Hack to get MySQL up and running... I need to look into it more. + yum -y erase mariadb mariadb-server + rm -rf /var/lib/mysql/ /etc/my.cnf + yum -y install mariadb mariadb-server + mysql_install_db + chown -R mysql:mysql /var/lib/mysql + /usr/bin/mysqld_safe & + sleep 10 + } + + __handle_passwords() { + # Here we generate random passwords (thank you pwgen!). The first two are for mysql users, the last batch for random keys in wp-config.php + WORDPRESS_DB="wordpress" + MYSQL_PASSWORD=`pwgen -c -n -1 12` + WORDPRESS_PASSWORD=`pwgen -c -n -1 12` + # This is so the passwords show up in logs. + echo mysql root password: $MYSQL_PASSWORD + echo wordpress password: $WORDPRESS_PASSWORD + echo $MYSQL_PASSWORD > /mysql-root-pw.txt + echo $WORDPRESS_PASSWORD > /wordpress-db-pw.txt + # There used to be a huge ugly line of sed and cat and pipe and stuff below, + # but thanks to @djfiander's thing at https://gist.github.com/djfiander/6141138 + # there isn't now. + sed -e "s/database_name_here/$WORDPRESS_DB/ + s/username_here/$WORDPRESS_DB/ + s/password_here/$WORDPRESS_PASSWORD/ + /'AUTH_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'SECURE_AUTH_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'LOGGED_IN_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'NONCE_KEY'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'AUTH_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'SECURE_AUTH_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'LOGGED_IN_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/ + /'NONCE_SALT'/s/put your unique phrase here/`pwgen -c -n -1 65`/" /usr/share/nginx/html/wp-config-sample.php > /usr/share/nginx/html/wp-config.php + } + + __httpd_perms() { + chown apache:apache /usr/share/nginx/html/wp-config.php + } + + __start_mysql() { + # systemctl start mysqld.service + mysqladmin -u root password $MYSQL_PASSWORD + mysql -uroot -p$MYSQL_PASSWORD -e "CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY '$WORDPRESS_PASSWORD'; FLUSH PRIVILEGES;" + killall mysqld + sleep 10 + } + + __run_supervisor() { + supervisord -n + } + + # Call all functions + __check + __create_user + __mysql_config + __handle_passwords + __httpd_perms + __start_mysql + __run_supervisor + +![Start Script](http://blog.linoxide.com/wp-content/uploads/2015/03/start-script.png) + +After adding the above configuration, we'll need to save it and then exit. + +### 4. Creating Configuration files ### + +Now, we'll need to create configuration file for Nginx Web Server named nginx-site.conf . + + # nano nginx-site.conf + +Then, we'll add the following configuration to the config file. + + user nginx; + worker_processes 1; + + error_log /var/log/nginx/error.log; + #error_log /var/log/nginx/error.log notice; + #error_log /var/log/nginx/error.log info; + + pid /run/nginx.pid; + events { + worker_connections 1024; + } + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$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/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + index index.html index.htm index.php; + + # Load modular configuration files from the /etc/nginx/conf.d directory. + # See http://nginx.org/en/docs/ngx_core_module.html#include + # for more information. + include /etc/nginx/conf.d/*.conf; + + server { + listen 80; + server_name localhost; + + #charset koi8-r; + + #access_log logs/host.access.log main; + root /usr/share/nginx/html; + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + location ~ \.php$ { + + root /usr/share/nginx/html; + try_files $uri =404; + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + + } + } + +![Nginx configuration](http://blog.linoxide.com/wp-content/uploads/2015/03/nginx-conf.png) + +Now, we'll create supervisord.conf file and add the following lines as shown below. + + # nano supervisord.conf + +Then, add the following lines. + + [unix_http_server] + file=/tmp/supervisor.sock ; (the path to the socket file) + + [supervisord] + logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) + logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) + logfile_backups=10 ; (num of main logfile rotation backups;default 10) + loglevel=info ; (log level;default info; others: debug,warn,trace) + pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) + nodaemon=false ; (start in foreground if true;default false) + minfds=1024 ; (min. avail startup file descriptors;default 1024) + minprocs=200 ; (min. avail process descriptors;default 200) + + ; the below section must remain in the config file for RPC + ; (supervisorctl/web interface) to work, additional interfaces may be + ; added by defining them in separate rpcinterface: sections + [rpcinterface:supervisor] + supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + + [supervisorctl] + serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket + + [program:php-fpm] + command=/usr/sbin/php-fpm -c /etc/php/fpm + stdout_events_enabled=true + stderr_events_enabled=true + + [program:php-fpm-log] + command=tail -f /var/log/php-fpm/php-fpm.log + stdout_events_enabled=true + stderr_events_enabled=true + + [program:mysql] + command=/usr/bin/mysql --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 + stdout_events_enabled=true + stderr_events_enabled=true + + [program:nginx] + command=/usr/sbin/nginx + stdout_events_enabled=true + stderr_events_enabled=true + + [eventlistener:stdout] + command = supervisor_stdout + buffer_size = 100 + events = PROCESS_LOG + result_handler = supervisor_stdout:event_handler + +![Supervisord Configuration](http://blog.linoxide.com/wp-content/uploads/2015/03/supervisord.png) + +After adding, we'll save and exit the file. + +### 5. Building WordPress Container ### + +Now, after done with creating configurations and scripts, we'll now finally use the Dockerfile to build our desired container with the latest WordPress CMS installed and configured according to the configuration. To do so, we'll run the following command in that directory. + + # docker build --rm -t wordpress:centos7 . + +![Building WordPress Container](http://blog.linoxide.com/wp-content/uploads/2015/03/building-wordpress-container.png) + +### 6. Running WordPress Container ### + +Now, to run our newly built container and open port 80 and 22 for Nginx Web Server and SSH access respectively, we'll run the following command. + + # CID=$(docker run -d -p 80:80 wordpress:centos7) + +![Run WordPress Docker](http://blog.linoxide.com/wp-content/uploads/2015/03/run-wordpress-docker.png) + +To check the process and commands executed inside the container, we'll run the following command. + + # echo "$(docker logs $CID )" + +TO check if the port mapping is correct or not, run the following command. + + # docker ps + +![docker state](http://blog.linoxide.com/wp-content/uploads/2015/03/docker-state.png) + +### 7. Web Interface ### + +Finally if everything went accordingly, we'll be welcomed with WordPress when pointing the browser to http://ip-address/ or http://mywebsite.com/ . + +![Wordpress Start](http://blog.linoxide.com/wp-content/uploads/2015/03/wordpress-start.png) + +Now, we'll go step wise through the web interface and setup wordpress configuration, username and password for the WordPress Panel. + +![Wordpress Welcome](http://blog.linoxide.com/wp-content/uploads/2015/03/wordpress-welcome.png) + +Then, use the username and password entered above into the WordPress Login page. + +![wordpress login](http://blog.linoxide.com/wp-content/uploads/2015/03/wordpress-login.png) + +### Conclusion ### + +We successfully built and run WordPress CMS under LEMP Stack running in CentOS 7 Operating System as the docker OS. Running WordPress inside a container makes a lot safe and secure to the host system from the security perspective. This article enables one to completely configure WordPress to run under Docker Container with Nginx Web Server. If you have any questions, suggestions, feedback please write them in the comment box below so that we can improve or update our contents. Thank you ! Enjoy :-) + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-wordpress-nginx-docker-container/ + +作者:[Arun Pyasi][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunp/ +[1]:http://docker.io/ \ No newline at end of file diff --git a/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md b/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md new file mode 100644 index 0000000000..b34cb616d8 --- /dev/null +++ b/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md @@ -0,0 +1,323 @@ +Its Now Worth Try Installing PHP 7.0 on CentOS 7.x / Fedora 21 +================================================================================ +PHP is a well known general purpose, server side web scripting language. A vast majority of online websites are coded in this language. PHP is ever evolving, feature rich, easy to use and well organized scripting language. Currently PHP development team is working on next major release of PHP, named PHP 7. The current production PHP version is PHP 5.6, as you might already know that PHP 6 was aborted in the past, the supporters of PHP 7 did not want the next important PHP version to be confused with that branch that was killed long time in the past. So it has been decided to name the next major release of PHP as PHP 7 instead of 6. PHP 7.0 is supposed to be released in November this year. + +Here are some of the prominent features in next major PHP release. + +- In order to improve performance and memory footprints PHPNG feature has been added to this new release. +- JIT engine has been included to dynamically compile Zend opcodes into native machine code in order to achieve faster processing. This feature will allow subsequent calls to the same code so that it may run much faster. +- AST (Abstract Syntax Tree) is a newly added feature which will enhance support for php extensions and userland applications. +- Asynchronous Programming feature will add support for parallel tasks within the same request. +- New version will support for stand alone multi-threading web server so that it may handle many simultaneous requests using a single memory pool. + +### Installing PHP 7 on Centos / Fedora ### + +Lets see how we can install PHP7 on Centos 7 and Fedora 21. In order to install PHP7 we will need to first clone php-src repository. Once cloning process is complete, we will configure and compile it. Before we proceed, lets ensure that we do have followings installed on our Linux system otherwise PHP compile process will return errors and abort. + +- Git +- autoconf +- gcc +- bison + +All of the above metioned prerequisits can be installed using Yum package manager. The following single command should take care of this: + + yum install git autoconf gcc bison + +Ready to start PHP7 installation process ? Lets first create PHP7 directory and make it your working directory. + + mkdir php7 + + cd php7 + +Now clone php-src repo, run following command on the terminal. + + git clone https://git.php.net/repository/php-src.git + +The process should complete in few min, here is sample output which you should see at the completion of this task. + + [root@localhost php7]# git clone https://git.php.net/repository/php-src.git + + Cloning into 'php-src'... + + remote: Counting objects: 615064, done. + + remote: Compressing objects: 100% (127800/127800), done. + + remote: Total 615064 (delta 492063), reused 608718 (delta 485944) + + Receiving objects: 100% (615064/615064), 152.32 MiB | 16.97 MiB/s, done. + + Resolving deltas: 100% (492063/492063), done. + +Lets configure and compile PHP7, run following commands on the terminal to start the configuration process: + + cd php-src + + ./buildconf + +Here is sample output for ./buildconf command. + + [root@localhost php-src]# ./buildconf + + buildconf: checking installation... + + buildconf: autoconf version 2.69 (ok) + + rebuilding aclocal.m4 + + rebuilding configure + + rebuilding main/php_config.h.in + +Proceed further with the configuration process using following command: + + ./configure \ + + --prefix=$HOME/php7/usr \ + + --with-config-file-path=$HOME/php7/usr/etc \ + + --enable-mbstring \ + + --enable-zip \ + + --enable-bcmath \ + + --enable-pcntl \ + + --enable-ftp \ + + --enable-exif \ + + --enable-calendar \ + + --enable-sysvmsg \ + + --enable-sysvsem \ + + --enable-sysvshm \ + + --enable-wddx \ + + --with-curl \ + + --with-mcrypt \ + + --with-iconv \ + + --with-gmp \ + + --with-pspell \ + + --with-gd \ + + --with-jpeg-dir=/usr \ + + --with-png-dir=/usr \ + + --with-zlib-dir=/usr \ + + --with-xpm-dir=/usr \ + + --with-freetype-dir=/usr \ + + --with-t1lib=/usr \ + + --enable-gd-native-ttf \ + + --enable-gd-jis-conv \ + + --with-openssl \ + + --with-mysql=/usr \ + + --with-pdo-mysql=/usr \ + + --with-gettext=/usr \ + + --with-zlib=/usr \ + + --with-bz2=/usr \ + + --with-recode=/usr \ + + --with-mysqli=/usr/bin/mysql_config + +It will take a sweet amount to time, once completed, you should see output like this: + + creating libtool + + appending configuration tag "CXX" to libtool + + Generating files + + configure: creating ./config.status + + creating main/internal_functions.c + + creating main/internal_functions_cli.c + + +--------------------------------------------------------------------+ + + | License: | + + | This software is subject to the PHP License, available in this | + + | distribution in the file LICENSE. By continuing this installation | + + | process, you are bound by the terms of this license agreement. | + + | If you do not agree with the terms of this license, you must abort | + + | the installation process at this point. | + + +--------------------------------------------------------------------+ + + + + Thank you for using PHP. + + + + config.status: creating php7.spec + + config.status: creating main/build-defs.h + + config.status: creating scripts/phpize + + config.status: creating scripts/man1/phpize.1 + + config.status: creating scripts/php-config + + config.status: creating scripts/man1/php-config.1 + + config.status: creating sapi/cli/php.1 + + config.status: creating sapi/cgi/php-cgi.1 + + config.status: creating ext/phar/phar.1 + + config.status: creating ext/phar/phar.phar.1 + + config.status: creating main/php_config.h + + config.status: executing default commands + + + +Run following command to complete the compilation process. + + make + +Sample output for “make” command is shown below: + + Generating phar.php + + Generating phar.phar + + PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled. + + clicommand.inc + + directorytreeiterator.inc + + directorygraphiterator.inc + + pharcommand.inc + + invertedregexiterator.inc + + phar.inc + + + + Build complete. + + Don't forget to run 'make test'. + +That’s all, its time to install PHP7 now, run following to install it. + + make install + +Sample output for successful install process should look like: + + [root@localhost php-src]# make install + + Installing shared extensions: /root/php7/usr/lib/php/extensions/no-debug-non-zts-20141001/ + + Installing PHP CLI binary: /root/php7/usr/bin/ + + Installing PHP CLI man page: /root/php7/usr/php/man/man1/ + + Installing PHP CGI binary: /root/php7/usr/bin/ + + Installing PHP CGI man page: /root/php7/usr/php/man/man1/ + + Installing build environment: /root/php7/usr/lib/php/build/ + + Installing header files: /root/php7/usr/include/php/ + + Installing helper programs: /root/php7/usr/bin/ + + program: phpize + + program: php-config + + Installing man pages: /root/php7/usr/php/man/man1/ + + page: phpize.1 + + page: php-config.1 + + Installing PEAR environment: /root/php7/usr/lib/php/ + + [PEAR] Archive_Tar - installed: 1.3.13 + + [PEAR] Console_Getopt - installed: 1.3.1 + + [PEAR] Structures_Graph- installed: 1.0.4 + + [PEAR] XML_Util - installed: 1.2.3 + + [PEAR] PEAR - installed: 1.9.5 + + Wrote PEAR system config file at: /root/php7/usr/etc/pear.conf + + You may want to add: /root/php7/usr/lib/php to your php.ini include_path + + /root/php7/php-src/build/shtool install -c ext/phar/phar.phar /root/php7/usr/bin + + ln -s -f /root/php7/usr/bin/phar.phar /root/php7/usr/bin/phar + + Installing PDO headers: /root/php7/usr/include/php/ext/pdo/ + +Conguratulaion, PHP 7 has been installed on your Linux system now. Once installation is complete, move to sapi/cli direcoty inside php7 installation folder. + + cd sapi/cli + +and verify PHP version from here. + + [root@localhost cli]# ./php -v + + PHP 7.0.0-dev (cli) (built: Mar 28 2015 00:54:11) + + Copyright (c) 1997-2015 The PHP Group + + Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies + +### Conclusion ### + +PHP 7 is also [added in remi repositories][1], this upcoming version is mainly focused on performance improvements, its new features are aimed to make PHP as a well fit for modern programming needs and trends. PHP 7.0 will have many new features and some deprecations to the old items. We hope to see details about new features and deprecations in the coming months. Enjoy! + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/install-php-7-centos-7-fedora-21/ + +作者:[Aun Raza][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ +[1]:http://blog.famillecollet.com/post/2015/03/25/PHP-7.0-as-Software-Collection \ No newline at end of file From de57e8d830a6d1df27e6ff20dc412f8d6ce1602c Mon Sep 17 00:00:00 2001 From: wxy Date: Tue, 31 Mar 2015 23:43:51 +0800 Subject: [PATCH 698/725] PUB:20150225 How to Hide PHP Version in Linux @geekpi --- .../20150225 How to Hide PHP Version in Linux.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) rename {translated/tech => published}/20150225 How to Hide PHP Version in Linux.md (59%) diff --git a/translated/tech/20150225 How to Hide PHP Version in Linux.md b/published/20150225 How to Hide PHP Version in Linux.md similarity index 59% rename from translated/tech/20150225 How to Hide PHP Version in Linux.md rename to published/20150225 How to Hide PHP Version in Linux.md index 1634ff2af2..89dcdf4f75 100644 --- a/translated/tech/20150225 How to Hide PHP Version in Linux.md +++ b/published/20150225 How to Hide PHP Version in Linux.md @@ -1,8 +1,8 @@ -如何在Linux中隐藏PHP版本 +如何在Linux服务器中隐藏PHP版本 ================================================================================ -通常上,大多数默认设置安装的web服务器存在信息泄露。这其中之一是PHP。PHP(超文本预处理器)是如今流行的服务端html嵌入式语言。在如今这个充满挑战的时代,有许多攻击者会尝试发现你服务端的漏洞。因此,我会简单描述如何在Linux服务器中隐藏PHP信息。 +通常,大多数默认设置安装的web服务器存在信息泄露,这其中之一就是PHP。PHP 是如今流行的服务端html嵌入式语言(之一?)。在如今这个充满挑战的时代,有许多攻击者会尝试发现你服务端的漏洞。因此,我会简单描述如何在Linux服务器中隐藏PHP信息。 -默认上**exposr_php**默认是开的。关闭“expose_php”参数可以使php隐藏它的版本信息。 +默认上**expose_php**默认是开的。关闭“expose_php”参数可以使php隐藏它的版本信息。 [root@centos66 ~]# vi /etc/php.ini @@ -26,9 +26,9 @@ X-Page-Speed: 1.9.32.2-4321 Cache-Control: max-age=0, no-cache -更改之后,php就不会在web服务头中显示版本了: +更改并重启 Web 服务后,php就不会在web服务头中显示版本了: -[root@centos66 ~]# curl -I http://www.ehowstuff.com/ +```[root@centos66 ~]# curl -I http://www.ehowstuff.com/ HTTP/1.1 200 OK Server: nginx @@ -39,8 +39,9 @@ X-Pingback: http://www.ehowstuff.com/xmlrpc.php Date: Wed, 11 Feb 2015 14:10:43 GMT X-Page-Speed: 1.9.32.2-4321 Cache-Control: max-age=0, no-cache +``` -有任何需要帮助的请到twiiter @ehowstuff,或在下面留下你的评论。[点此获取更多历史文章][1] +LCTT译注:除了 PHP 的版本之外,Web 服务器也会默认泄露版本号。如果使用 Apache 服务器,请[参照此文章关闭Apache 版本显示][2];如果使用 Nginx 服务器,请在 http 段内加入`server_tokens off;` 配置。以上修改请记得重启相关服务。 -------------------------------------------------------------------------------- @@ -48,9 +49,10 @@ via: http://www.ehowstuff.com/how-to-hide-php-version-in-linux/ 作者:[skytech][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://www.ehowstuff.com/author/mhstar/ [1]:http://www.ehowstuff.com/archives/ +[2]:http://linux.cn/article-3642-1.html \ No newline at end of file From 528f2bb8b9469e4b6b860323fcd597eaaadd0211 Mon Sep 17 00:00:00 2001 From: Frank Zhang Date: Wed, 1 Apr 2015 00:01:57 +0800 Subject: [PATCH 699/725] [translated] 20150316 Systemd Boot Process a Close Look in Linux.md --- ...temd Boot Process a Close Look in Linux.md | 151 ------------------ ...temd Boot Process a Close Look in Linux.md | 150 +++++++++++++++++ 2 files changed, 150 insertions(+), 151 deletions(-) delete mode 100644 sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md create mode 100644 translated/tech/20150316 Systemd Boot Process a Close Look in Linux.md diff --git a/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md b/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md deleted file mode 100644 index eded061738..0000000000 --- a/sources/tech/20150316 Systemd Boot Process a Close Look in Linux.md +++ /dev/null @@ -1,151 +0,0 @@ -zpl1025 -Systemd Boot Process a Close Look in Linux -================================================================================ -The way Linux system boots up is quite complex and there have always been need to optimize the way it works. The traditional boot up process of Linux system is mainly handled by the well know init process (also known as SysV init boot system), while there have been identified inefficiencies in the init based boot system, systemd on the other hand is another boot up manager for Linux based systems which claims to overcome the shortcomings of [traditional Linux SysV init][2] based system. We will be focusing our discussion on the features and controversies of systemd , but in order to understand it, let’s see how Linux boot process is handled by traditional SysV init based system. Kindly note that Systemd is still in testing phase and future releases of Linux operating systems are preparing to replace their current boot process with Systemd Boot manager. - -### Understanding Linux Boot Process ### - -Init is the very first process that starts when we power on our Linux system. Init process is assigned the PID of 1. It is parent process for all other processes on the system. When a Linux computer is started, the processor searches for the BIOS on the system memory, BIOS then tests system resources and find the first boot device, usually set as hard disk, it looks for Master Boot Record (MBR) on the hard disk, loads its contents to memory and passes control to it, the further boot process is controlled by MBR. - -Master Boot Record initiates the Boot loader (Linux has two well know boot loaders, GRUB and LILO, 80% of Linux systems are using GRUB loaders), this is the time when GRUB or LILO loads the kernel module. Kernel module immediately looks for the “init” in /sbin partition and executes it. That’s from where init becomes the parent process of Linux system. The very first file read by init is /etc/inittab , from here init decides the run level of our Linux operating system. It finds partition table information from /etc/fstab file and mounts partitions accordingly. Init then launches all the services/scripts specified in the /etc/init.d directory of the default run level. This is the step where all services are initialized by init one by one. In this process, one service at a time is started by init , all services/daemons run in the background and init keeps managing them. - -The shutdown process works in pretty much the reverse function, first of all init stops all services and then filesystem is un-mounted at the last stage. - -The above mentioned process has some shortcomings. The need to replace traditional init with something better have been felt from long time now. Some replacements have been developed and implemented as well. The well know replacements for this init based system as Upstart , Epoch , Mudar and Systemd. Systemd is the one which got most attention and is considered to be better of all available alternatives. - -### Understanding Systemd ### - -Reducing the boot time and computational overhead is the main objective of developing the Systemd. Systemd (System Manager Daemon) , originally developed under GNU General Public License, is now under GNU Lesser General Public License, it is most frequently discussed boot and services manager these days. If your Linux system is configured to use Systemd boot manager, then instead of traditional SysV init, startup process will be handled by systemd. One of the core feature of Systemd is that it supports post boot scripts of SysV Init as well . - -Systemd introduces the parallelization boot concept, it creates a sockets for each daemon that needs to be started, these sockets are abstracted from the processes that use them so they allow daemons to interact with each other. Systemd creates news processes and assigns every process a control group. The processes in different control groups use kernel to communicate with each others. The way [systemd handles the start up process][2] is quite neat, and much optimized as compared to the traditional init based system. Let’s review some of the core features of Systemd. - -- The boot process is much simpler as compared to the init -- Systemd provides concurrent and parallel process of system boot so it ensures better boot speed -- Processes are tracked using control groups, not by PIDs -- Improved ways to handle boot and services dependencies. -- Capability of system snapshots and restore -- Monitoring of started services ; also capabale of restarting any crashed services -- Includes systemd-login module to control user logins. -- Ability to add and remove components -- Low memory foot prints and ability for job scheduling -- Journald module for event logging and syslogd module for system log. - -Systemd handles system shutdown process in well organized way as well. It has three script located inside /usr/lib/systemd/ directory, named systemd-halt.service , systemd-poweroff.service , systemd-reboot.service . These scripts are executed when user choose to shutdown, reboot or halt Linux system. In the event of shutdown, systemd first un-mount all file systems and disabled all swap devices, detaches the storage devices and kills remaining processes. - -![](http://images.linoxide.com/systemd-boot-process.jpg) - -### Structural Overview of Systemd ### - -Let’s review Linux system boot process with some structural details when it is using systemd as boot and services manager. For the sake of simplicity, we are listing the process in steps below: - -**1.** The very first steps when you power on your system is the BIOS initialization. BIOS reads the boot device settings, locates and hands over control to MBR (assuming hard disk is set as first boot device). - -**2.** MBR reads information from Grub or LILO boot loader and initializes the kernel. Grub or LILO will specify how to handle further system boot up. If you have specified systemd as boot manager in grub configuration file, then the further boot process will be handled by systemd. Systemd handles boot and services management process using “targets”. The ”target" files in systemd are used for grouping different boot units and start up synchronization processes. - -**3.** The very first target executed by systemd is **default.target**. But default.target is actually a symlink to **graphical.target**. Symlink in linux works just like shortcuts in Windows. Graphical.target file is located at /usr/lib/systemd/system/graphical.target path. We have shown the contents of graphical.target file in the following screenshot. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/graphical1.png) - -**4.** At this stage, **multi-user.target** has been invoked and this target keeps its further sub-units inside “/etc/systemd/system/multi-user.target.wants” directory. This target sets the environment for multi user support. None root users are enabled at this stage of boot up process. Firewall related services are started on this stage of boot as well. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/multi-user-target1.png) - -"multi-user.target" passes control to another layer “**basic.target**”. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/Basic-Target.png) - -**5.** "basic.target" unit is the one that starts usual services specially graphical manager service. It uses /etc/systemd/system/basic.target.wants directory to decide which services need to be started, basic.target passes on control to **sysinit.target**. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/Sysint-Target.png) - -**6.** "sysinit.target" starts important system services like file System mounting, swap spaces and devices, kernel additional options etc. sysinit.target passes on startup process to **local-fs.target**. The contents of this target unit are shown in the following screenshot. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/local-FS-Target.png) - -**7.** local-fs.target , no user related services are started by this target unit, it handles core low level services only. This target is the one performing actions on the basis of /etc/fstab and /etc/inittab files. - -### Analyzing System Boot Performancev ### - -Systemd offers tool to identify and troubleshoot boot related issues or performance concerns. **Systemd-analyze** is a built-in command which lets you examine boot process. You can find out the units which are facing errors during boot up and can further trace and correct boot component issues. Some useful systemd-analyze commands are listed below. - -**systemd-analyze time** shows the time spent in kernel, and normal user space. - - $ systemd-analyze time - - Startup finished in 1440ms (kernel) + 3444ms (userspace) - -**systemd-analyze blame** prints a list of all running units, sorted by the time taken by then to initialize, in this way you can have idea of which services are taking long time to start during boot up. - - $ systemd-analyze blame - - 2001ms mysqld.service - 234ms httpd.service - 191ms vmms.service - -**systemd-analyze verify** shows if there are any syntax errors in the system units. **Systemd-analyze plot** can be used to write down whole startup process to a SVG formate file. Whole boot process is very lengthy to read, so using this command we can dump the output of whole boot processing into a file and then can read and analyze it further. The following command will take care of this. - - systemd-analyze plot > boot.svg - -### Systemd Controversies ### - -Systemd has not been lucky to receive love from everyone, some professionals and administrators have different opinions on its working and developments. Per critics of Systemd, it’s “not Unix-like” because it tried to replace some system services. Some professionals don’t like the idea of using binary configuration files as well. It is said that editing systemd configuration is not an easy tasks and there are no graphical tools available for this purpose. - -### Test Systemd on Ubuntu 14.04 and 12.04 ### - -Originally, Ubuntu decided to replace their current boot process with Systemd in Ubuntu 16.04 LTS. Ubuntu 16.04 is supposed to be released in April 2016, but considering the popularity and demand for Systemd, the upcoming **Ubuntu 15.04** will have it as its default boot manager. Good news is that the user of Ubuntu 14.04 Trusty Tahr And Ubuntu 12.04 Precise Pangolin can still test Systemd on their machines. The test process is not very complex, all you need to do is to include the related PPA to the system, update repository and perform system upgrade. - -**Disclaimer** : Please note that its still in testing and development stages for Ubuntu. Testing packages might have any unknown issues and in worst case scenario, they might break your system configurations. Make sure you backup your important data before trying this upgrade. - -Run following command on the terminal to add ppa to the your ubuntu system: - - sudo add-apt-repository ppa:pitti/systemd - -You will be seeing warning message here because we are trying to use temporary/testing PPA which is not recommended for production machines. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/PPA-Systemd1.png) - -Now update the APT Package Manager repositories by running the following command. - - sudo apt-get update - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/Update-APT1.png) - -Perform system upgrade by running the following command. - - sudo apt-get dist-upgrade - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/System-Upgrade.png) - -That’s all, you should be able to see configuration files of systemd on your ubuntu system now, just browse to the /lib/systemd/ directory and see the files there. - -Alright, it’s time we edit grub configuration file and specify systemd as default Boot Manager. Edit grub file using Gedit text editor. - - sudo gedit /etc/default/grub - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/Edit-Grub.png) - -Here edit GRUB_CMDLINE_LINUX_DEFAULT parameter in this file and specify the value of this parameter as: "**init=/lib/systemd/systemd**" - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/Grub-Systemd.png) - -That’s all, your ubuntu system is no longer using its traditional boot manager, its using Systemd Manager now. Reboot your system and see the systemd boot up process. - -![](http://blog.linoxide.com/wp-content/uploads/2015/03/Sytemd-Boot.png) - -### Conclusion ### - -Systemd is no doubt a step forward towards improving Linux Boot process; it’s an awesome suite of libraries and daemons that together improve the system boot and shutdown process. Many linux distributions are preparing to support it as their official boot manager. In future releases of Linux distros, we can hope to see systemd startup. But on the other hand, in order to succeed and to be adopted on the wide scale, systemd should address the concerns of critics as well. - --------------------------------------------------------------------------------- - -via: http://linoxide.com/linux-how-to/systemd-boot-process/ - -作者:[Aun Raza][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linoxide.com/author/arunrz/ -[1]:http://linoxide.com/booting/boot-process-of-linux-in-detail/ -[2]:http://0pointer.de/blog/projects/self-documented-boot.html diff --git a/translated/tech/20150316 Systemd Boot Process a Close Look in Linux.md b/translated/tech/20150316 Systemd Boot Process a Close Look in Linux.md new file mode 100644 index 0000000000..a2c2ea28be --- /dev/null +++ b/translated/tech/20150316 Systemd Boot Process a Close Look in Linux.md @@ -0,0 +1,150 @@ +走进Linux之systemd启动过程 +================================================================================ +Linux系统的启动方式有点复杂,而且总是有需要优化的地方。传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统也被确认会有效率不足的问题,systemd是Linux系统机器的另一种启动方式,宣称弥补了以[传统Linux SysV init][2]为基础的系统的缺点。在这里我们将着重讨论systemd的特性和争议,但是为了更好地理解它,也会看一下通过传统的以SysV init为基础的系统的Linux启动过程是什么样的。友情提醒一下systemd仍然处在测试阶段,而未来发布的Linux操作系统也正准备用systemd启动管理程序替代当前的启动过程。 + +### 理解Linux启动过程 ### + +在我们打开Linux电脑的电源后第一个启动的进程就是init。分配给init进程的PID是1。它是系统其他所有进程的父进程。当一台Linux电脑启动后,处理器会先在系统存储中查找BIOS,之后BIOS会测试系统资源然后找到第一个引导设备,通常设置为硬盘,然后会查找硬盘的主引导记录(MBR),然后加载到内存中并把控制权交给它,以后的启动过程就由MBR控制。 + +主引导记录会初始化引导程序(Linux上有两个著名的引导程序,GRUB和LILO,80%的Linux系统在用GRUB引导程序),这个时候GRUB或LILO会加载内核模块。内核会马上查找/sbin下的init进程并执行它。从这里开始init成为了Linux系统的父进程。init读取的第一个文件是/etc/inittab,通过它init会确定我们Linux操作系统的运行级别。它会从文件/etc/fstab里查找分区表信息然后做相应的挂载。然后init会启动/etc/init.d里指定的默认启动级别的所有服务/脚本。所有服务在这里通过init一个一个被初始化。在这个过程里,init每次只启动一个服务,所有服务/守护进程都在后台执行并由init来管理。 + +关机过程差不多是相反的过程,首先init停止所有服务,最后阶段会卸载文件系统。 + +以上提到的启动过程有一些不足的地方。而用一种更好的方式来替代传统init的需求已经存在很长时间了。也产生了许多替代方案。其中比较著名的有Upstart,Epoch,Muda和Systemd。而Systemd获得最多关注并被认为是目前最佳的方案。 + +### 理解Systemd ### + +开发Systemd的主要目的就是减少系统引导时间和计算开销。Systemd(系统管理守护进程),最开始以GNU GPL协议授权开发,现在已转为使用GNU LGPL协议,它是如今讨论最热烈的引导和服务管理程序。如果你的Linux系统配置为使用Systemd引导程序,那么代替传统的SysV init,启动过程将交给systemd处理。Systemd的一个核心功能是它同时支持SysV init的后开机启动脚本。 + +Systemd引入了并行启动的概念,它会为每个需要启动的守护进程建立一个管道套接字,这些套接字对于使用它们的进程来说是抽象的,这样它们可以允许不同守护进程之间进行交互。Systemd会创建新进程并为每个进程分配一个控制组。处于不同控制组的进程之间可以通过内核来互相通信。[systemd处理开机启动进程][2]的方式非常漂亮,和传统基于init的系统比起来优化了太多。让我们看下Systemd的一些核心功能。 + +- 和init比起来引导过程简化了很多 +- Systemd支持并发引导过程从而可以更快启动 +- 通过控制组来追踪进程,而不是PID +- 优化了处理引导过程和服务之间依赖的方式 +- 支持系统快照和恢复 +- 监控已启动的服务;也支持重启已崩溃服务 +- 包含了systemd-login模块用于控制用户登录 +- 支持加载和卸载组件 +- 低内存使用痕迹以及任务调度能力 +- 记录事件的Journald模块和记录系统日志的syslogd模块 + +Systemd同时也清晰地处理了系统关机过程。它在/usr/lib/systemd/目录下有三个脚本,分别叫systemd-halt.service,systemd-poweroff.service,systemd-reboot.service。这几个脚本会在用户选择关机,重启或待机时执行。在接收到关机事件时,systemd首先卸载所有文件系统并停止所有内存交换设备,断开存储设备,之后停止所有剩下的进程。 + +![](http://images.linoxide.com/systemd-boot-process.jpg) + +### Systemd结构概览 ### + +让我们看一下Linux系统在使用systemd作为引导程序时的开机启动过程的结构性细节。为了简单,我们将在下面按步骤列出来这个过程: + +**1.** 当你打开电源后电脑所做的第一件事情就是BIOS初始化。BIOS会读取引导设备设定,定位并传递系统控制权给MBR(假设硬盘是第一引导设备)。 + +**2.** MBR从Grub或LILO引导程序读取相关信息并初始化内核。接下来将由Grub或LILO继续引导系统。如果你在grub配置文件里指定了systemd作为引导管理程序,之后的引导过程将由systemd完成。Systemd使用“target”来处理引导和服务管理过程。这些systemd里的“target”文件被用于分组不同的引导单元以及启动同步进程。 + +**3.** systemd执行的第一个目标是**default.target**。但实际上default.target是指向**graphical.target**的软链接。Linux里的软链接用起来和Windows下的快捷方式一样。文件Graphical.target的实际位置是/usr/lib/systemd/system/graphical.target。在下面的截图里显示了graphical.target文件的内容。 + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/graphical1.png) + +**4.** 在这个阶段,会启动**multi-user.target**而这个target将自己的子单元放在目录“/etc/systemd/system/multi-user.target.wants”里。这个target为多用户支持设定系统环境。非root用户会在这个阶段的引导过程中启用。防火墙相关的服务也会在这个阶段启动。 + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/multi-user-target1.png) + +"multi-user.target"会将控制权交给另一层“**basic.target**”。 + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Basic-Target.png) + +**5.** "basic.target"单元用于启动普通服务特别是图形管理服务。它通过/etc/systemd/system/basic.target.wants目录来决定哪些服务会被启动,basic.target之后将控制权交给**sysinit.target**. + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Sysint-Target.png) + +**6.** "sysinit.target"会启动重要的系统服务例如系统挂载,内存交换空间和设备,内核补充选项等等。sysinit.target在启动过程中会传递给**local-fs.target**。这个target单元的内容如下面截图里所展示。 + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/local-FS-Target.png) + +**7.** local-fs.target,这个target单元不会启动用户相关的服务,它只处理底层核心服务。这个target会根据/etc/fstab和/etc/inittab来执行相关操作。 + +### 系统引导性能分析 ### + +Systemd提供了工具用于识别和定位引导相关的问题或性能影响。**Systemd-analyze**是一个内建的命令,可以用来检测引导过程。你可以找出在启动过程中出错的单元,然后跟踪并改正引导组件的问题。在下面列出一些常用的systemd-analyze命令。 + +**systemd-analyze time** 用于显示内核和普通用户空间启动时所花的时间。 + + $ systemd-analyze time + + Startup finished in 1440ms (kernel) + 3444ms (userspace) + +**systemd-analyze blame** 会列出所有正在运行的单元,按从初始化开始到当前所花的时间排序,通过这种方式你就知道哪些服务在引导过程中要花较长时间来启动。 + + $ systemd-analyze blame + + 2001ms mysqld.service + 234ms httpd.service + 191ms vmms.service + +**systemd-analyze verify** 显示在所有系统单元中是否有语法错误。**systemd-analyze plot** 可以用来把整个引导过程写入一个SVG格式文件里。整个引导过程非常长不方便阅读,所以通过这个命令我们可以把输出写入一个文件,之后再查看和分析。下面这个命令就是做这个。 + + systemd-analyze plot > boot.svg + +### Systemd的争议 ### + +Systemd并没有幸运地获得所有人的青睐,一些专家和管理员对于它的工作方式和开发有不同意见。根据对于Systemd的批评,它不是“类Unix”方式因为它试着替换一些系统服务。一些专家也不喜欢使用二进制配置文件的想法。据说编辑systemd配置非常困难而且没有一个可用的图形工具。 + +### 在Ubuntu 14.04和12.04上测试Systemd ### + +本来,Ubuntu决定从Ubuntu 16.04 LTS开始使用Systemd来替换当前的引导过程。Ubuntu 16.04预计在2016年4月发布,但是考虑到Systemd的流行和需求,即将发布的**Ubuntu 15.04**将采用它作为默认引导程序。好消息是Ubuntu 14.04 Trusty Tahr和Ubuntu 12.04 Precise Pangolin的用户可以在他们的机器上测试Systemd。测试过程并不复杂,你所要做的只是把相关的PPA包含到系统中,更新仓库并升级系统。 + +**声明**:请注意它仍然处于Ubuntu的测试和开发阶段。升级测试包可能会带来一些未知错误,最坏的情况下有可能损坏你的系统配置。请确保在尝试升级前已经备份好重要数据。 + +在终端里运行下面的命令来添加PPA到你的Ubuntu系统里: + + sudo add-apt-repository ppa:pitti/systemd + +你将会看到警告信息因为我们尝试使用临时/测试PPA,而它们是不建议用于实际工作机器上的。 + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/PPA-Systemd1.png) + +然后运行下面的命令更新APT包管理仓库。 + + sudo apt-get update + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Update-APT1.png) + +运行下面的命令升级系统。 + + sudo apt-get dist-upgrade + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/System-Upgrade.png) + +就这些,你应该已经可以在你的Ubuntu系统里看到Systemd配置文件了,打开/lib/systemd/目录可以看到这些文件。 + +好吧,现在让我们编辑一下grub配置文件指定systemd作为默认引导程序。可以使用Gedit文字编辑器编辑grub配置文件。 + + sudo gedit /etc/default/grub + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Edit-Grub.png) + +在文件里修改GRUB_CMDLINE_LINUX_DEFAULT项,设定它的参数为:“**init=/lib/systemd/systemd**” + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Grub-Systemd.png) + +就这样,你的Ubuntu系统已经不在使用传统的引导程序了,改为使用Systemd管理器。重启你的机器然后查看systemd引导过程吧。 + +![](http://blog.linoxide.com/wp-content/uploads/2015/03/Sytemd-Boot.png) + +### 结论 ### + +Systemd毫无疑问为改进Linux引导过程前进了一大步;它包含了一套漂亮的库和守护进程配合工作来优化系统引导和关闭过程。许多Linux发行版正准备将它作为自己的正式引导程序。在以后的Linux发行版中,我们将有望看到systemd开机。但是另一方面,为了获得成功并广泛应用,systemd仍需要认真处理批评意见。 + +-------------------------------------------------------------------------------- + +via: http://linoxide.com/linux-how-to/systemd-boot-process/ + +作者:[Aun Raza][a] +译者:[zpl1025](https://github.com/zpl1025) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linoxide.com/author/arunrz/ +[1]:http://linoxide.com/booting/boot-process-of-linux-in-detail/ +[2]:http://0pointer.de/blog/projects/self-documented-boot.html From a765603abe6a6a61ae635879d6dbf3505c1c6798 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 1 Apr 2015 00:27:36 +0800 Subject: [PATCH 700/725] PUB:20150225 10 quick tar command examples to create or extract archives in Linux @theo-l --- ... to create or extract archives in Linux.md | 56 +++++++++---------- 1 file changed, 26 insertions(+), 30 deletions(-) rename {translated/tech => published}/20150225 10 quick tar command examples to create or extract archives in Linux.md (70%) diff --git a/translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md b/published/20150225 10 quick tar command examples to create or extract archives in Linux.md similarity index 70% rename from translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md rename to published/20150225 10 quick tar command examples to create or extract archives in Linux.md index 75865f7713..6d851ee0cc 100644 --- a/translated/tech/20150225 10 quick tar command examples to create or extract archives in Linux.md +++ b/published/20150225 10 quick tar command examples to create or extract archives in Linux.md @@ -1,41 +1,40 @@ -linux中创建和解压文档的10个快速tar命令样例 +在linux中创建和解压文档的11个 tar 命令例子 ================================================================================ ### linux中的tar命令### tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令。 -常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过gzip或bzip算法进一步压缩的磁带归档文件扩展。 +其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩。 +在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子。 -在该教程中我们会窥探一下在linux桌面或服务器版本中使用tar命令来处理一些日常创建和解压归档文件的工作样例。 ### 使用tar命令### tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件。 -> tar命令具有两个压缩格式,gzip和bzip,该命令的“z”选项用来指定gzip,“j”选项用来指定bzip。同时也可哟用来创建非压缩归档文件。 +> tar命令具有两个压缩格式,gzip和bzip,该命令的“z”选项用来指定gzip,“j”选项用来指定bzip。同时也可以创建非压缩归档文件。 -#### 1.解压一个tar.gz归档 #### +#### 1.解压一个tar.gz归档 #### 一般常见的用法是用来解压归档文件,下面的命令将会把文件从一个tar.gz归档文件中解压出来。 - $ tar -xvzf tarfile.tar.gz 这里对这些参数做一个简单解释- > x - 解压文件 -> v - 繁琐,在解压每个文件时打印出文件的名称。 +> v - 冗长模式,在解压每个文件时打印出文件的名称。 -> z - 该文件是一个使用 gzip压缩的文件。 +> z - 该文件是一个使用 gzip 压缩的文件。 > f - 使用接下来的tar归档来进行操作。 这些就是一些需要记住的重要选项。 -**解压 tar.bz2/bzip 归档文件 ** +**解压 tar.bz2/bzip 归档文件** -具有bz2扩展名的文件是使用bzip算法进行压缩的,但是tar命令也可以对其进行处理,但是是通过使用“j”选项来替换“z”选项。 +具有bz2扩展名的文件是使用bzip算法进行压缩的,但是tar命令也可以对其进行处理,但是需要通过使用“j”选项来替换“z”选项。 $ tar -xvjf archivefile.tar.bz2 @@ -47,25 +46,25 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 然后,首先需要确认目标目录是否存在,毕竟tar命令并不会为你创建目录,所以如果目标目录不存在的情况下该命令会失败。 -####3. 解压出单个文件 #### +####3. 提取出单个文件 #### -为了从一个归档文件中解压出单个文件,只需要将文件名按照以下方式将其放置在命令后面。 +为了从一个归档文件中提取出单个文件,只需要将文件名按照以下方式将其放置在命令后面。 $ tar -xz -f abc.tar.gz "./new/abc.txt" 在上述命令中,可以按照以下方式来指定多个文件。 - $ tar -xv -f abc.tar.gz "./new/cde.txt" "./new/abc.txt" + $ tar -xz -f abc.tar.gz "./new/cde.txt" "./new/abc.txt" #### 4.使用通配符来解压多个文件 #### 通配符可以用来解压于给定通配符匹配的一批文件,例如所有以".txt"作为扩展名的文件。 - $ tar -xv -f abc.tar.gz --wildcards "*.txt" + $ tar -xz -f abc.tar.gz --wildcards "*.txt" -#### 5. 列出并检索tar归档文件中的内容 #### +#### 5. 列出并检索tar归档文件中的内容 #### -如果你仅仅想要列出而不是解压tar归档文件的中的内容,使用“-t”选项, 下面的命令用来打印一个使用gzip压缩过的tar归档文件中的内容。 +如果你仅仅想要列出而不是解压tar归档文件的中的内容,使用“-t”(test)选项, 下面的命令用来打印一个使用gzip压缩过的tar归档文件中的内容。 $ tar -tz -f abc.tar.gz ./new/ @@ -75,7 +74,7 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 ./new/abc.txt ... -将输出通过管道定向到grep来搜索一个文件或者定向到less命令来浏览内容列表。 使用"v"繁琐选项将会打印出每个文件的额外详细信息。 +可以将输出通过管道定向到grep来搜索一个文件,或者定向到less命令来浏览内容列表。 使用"v"冗长选项将会打印出每个文件的额外详细信息。 对于 tar.bz2/bzip文件,需要使用"j"选项。 @@ -84,11 +83,10 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 $ tar -tvz -f abc.tar.gz | grep abc.txt -rw-rw-r-- enlightened/enlightened 0 2015-01-13 11:40 ./new/abc.txt -#### 6.创建一个tar/tar.gz归档文件 #### +#### 6.创建一个tar/tar.gz归档文件 #### 现在我们已经学过了如何解压一个tar归档文件,是时候开始创建一个新的tar归档文件了。tar命令可以用来将所选的文件或整个目录放入到一个归档文件中,以下是相应的样例。 - 下面的命令使用一个目录来创建一个tar归档文件,它会将该目录中所有的文件和子目录都加入到归档文件中。 $ tar -cvf abc.tar ./new/ @@ -102,14 +100,13 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 $ tar -cvzf abc.tar.gz ./new/ -> 文件的扩展名其实并不真正有什么影响。“tar.gz” 和tgz是gzip压缩算法压缩文件的常见扩展名。 “tar.bz2”和“tbz”是bzip压缩算法压缩文件的常见扩展名。 - +> 文件的扩展名其实并不真正有什么影响。“tar.gz” 和“tgz”是gzip压缩算法压缩文件的常见扩展名。 “tar.bz2”和“tbz”是bzip压缩算法压缩文件的常见扩展名(LCTT 译注:归档是否是压缩的和采用哪种压缩方式并不取决于其扩展名,扩展名只是为了便于辨识。)。 #### 7. 在添加文件之前进行确认 #### 一个有用的选项是“w”,该选项使得tar命令在添加每个文件到归档文件之前来让用户进行确认,有时候这会很有用。 -使用该选项时,只有用户输入yes时的文件才会被加入到归档文件中,如果你输入任何东西,默认的回答是一个“No”。 +使用该选项时,只有用户输入“y”时的文件才会被加入到归档文件中,如果你不输入任何东西,其默认表示是一个“n”。 # 添加指定文件 @@ -137,7 +134,7 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 #### 9. 将文件加入到压缩的归档文件中(tar.gz/tar.bz2) #### -之前已经提到了不可能将文件加入到已压缩的归档文件中,然和依然可以通过简单的一些把戏来完成。使用gunzip命令来解压缩归档文件,然后将文件加入到归档文件中后重新进行压缩。 +之前已经提到了不可能将文件加入到已压缩的归档文件中,然而依然可以通过简单的一些把戏来完成。使用gunzip命令来解压缩归档文件,然后将文件加入到归档文件中后重新进行压缩。 $ gunzip archive.tar.gz $ tar -rf archive.tar ./path/to/file @@ -147,16 +144,15 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 #### 10.通过tar来进行备份 #### -一个真实的场景是在规则的间隔内来备份目录,tar命令可以通过cron调度来实现这样的一个备份,以下是一个样例 - +一个真实的场景是在固定的时间间隔内来备份目录,tar命令可以通过cron调度来实现这样的一个备份,以下是一个样例 : $ tar -cvz -f archive-$(date +%Y%m%d).tar.gz ./new/ -使用cron来运行上述的命令会保持创建类似以下名称的备份文件 - -'archive-20150218.tar.gz'. +使用cron来运行上述的命令会保持创建类似以下名称的备份文件 :'archive-20150218.tar.gz'。 当然,需要确保日益增长的归档文件不会导致磁盘空间的溢出。 -#### 11. 在创建归档文件是进行验证 #### +#### 11. 在创建归档文件时进行验证 #### "W"选项可以用来在创建归档文件之后进行验证,以下是一个简单例子。 @@ -174,9 +170,9 @@ tar命令在大部分linux系统默认情况下都是可用的,所以你不用 Verify ./new/newfile.txt Verify ./new/abc.txt -需要注意的是验证动作不能呢该在压缩过的归档文件上进行,只能在非压缩的tar归档文件上执行。 +需要注意的是验证动作不能在压缩过的归档文件上进行,只能在非压缩的tar归档文件上执行。 -现在就先到此为止,可以通过“man tar”命令来查看tar命令的的手册。 +这次就先到此为止,可以通过“man tar”命令来查看tar命令的的手册。 -------------------------------------------------------------------------------- @@ -184,7 +180,7 @@ via: http://www.binarytides.com/linux-tar-command/ 作者:[Silver Moon][a] 译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From e7419b7eea7f44a328ad9b9f31e1323f03117852 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 1 Apr 2015 00:29:18 +0800 Subject: [PATCH 701/725] =?UTF-8?q?=E5=BD=92=E6=A1=A3201503?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... protect SSH server from brute force attacks using fail2ban.md | 0 ...ay Movie Player Has a Stylish Interface Ubuntu Installation.md | 0 ...41106 Tomahawk Music Player Returns With New Look, Features.md | 0 ...7 11 Useful Utilities To Supercharge Your Ubuntu Experience.md | 0 ...--Find And Remove Duplicate Files Instantly From Hard Drive.md | 0 published/{ => 201503}/20141204 Linux Namespaces.md | 0 ...1205 How to configure a syslog server with rsyslog on Linux.md | 0 ...itiator Client' Setup on RHEL or CentOS or Fedora -Part III.md | 0 ...rage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md | 0 ... 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md | 0 ...1219 Creating your First App on Linux with Python and Flask.md | 0 ...41219 Google Cloud offers streamlined Ubuntu for Docker use.md | 0 ... Answers--How to fix 'XXX is not in the sudoers file' error.md | 0 .../20141229 5 User Space Debugging Tools in Linux.md | 0 ...104 How to configure fail2ban to protect Apache HTTP server.md | 0 ...50104 How to debug a C or C++ program with Nemiver debugger.md | 0 ...et up a cross-platform backup server on Linux with BackupPC.md | 0 ... App Can Write a Single ISO to 20 USB Drives Simultaneously.md | 0 ...w to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md | 0 .../20150112 How to Find and Remove Duplicate Files on Linux.md | 0 .../20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md | 0 .../20150114 What is a good IDE for C or C++ on Linux.md | 0 .../{ => 201503}/20150115 20 Unix Command Line Tricks--Part I.md | 0 .../{ => 201503}/20150115 Get back your privacy and control.md | 0 ...Run Linux Applications From The Terminal In Background Mode.md | 0 ...50119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md | 0 .../{ => 201503}/20150119 Ubuntu With XFCE vs Xubuntu Linux.md | 0 .../20150121 How to Monitor Network Usage with nload in Linux.md | 0 ...0121 How to apply image effects to pictures on Raspberry Pi.md | 0 ...121 Linux FAQs with Answers--How to check CPU info on Linux.md | 0 ... How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md | 0 ... to create and configure a MySQL user from the command line.md | 0 ...ow to download and install ixgbe driver on Ubuntu or Debian.md | 0 ... to use yum to download a RPM package without installing it.md | 0 ...ory Of Notifications With Recent Notifications AppIndicator.md | 0 ...Shell Primer--Master Your Linux OS X Unix Shell Environment.md | 0 .../{ => 201503}/20150126 4 lvcreate Command Examples on Linux.md | 0 .../{ => 201503}/20150126 CD Audio Grabbers--Graphical Based.md | 0 .../20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md | 0 ...0126 How To Kill All Processes Of A Specific User With slay.md | 0 ...Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md | 0 ...em performance by moving your log files to RAM Using Ramlog.md | 0 .../20150127 How to limit network bandwidth on Linux.md | 0 .../20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md | 0 published/{ => 201503}/20150127 Windows 10 versus Linux.md | 0 ...How To Monitor Access Point Signal Strength With wifi-linux.md | 0 ...cs--How To Check If A Package Is Installed Or Not In Ubuntu.md | 0 ...dPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md | 0 ...20150202 How To Install Websvn for Subversion in CentOS 7.0.md | 0 .../20150203 9 Best IDEs and Code Editors for JavaScript Users.md | 0 .../20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md | 0 ...20150205 How To Use Smartphones Like Weather Conky In Linux.md | 0 ...e IP Addresses To Single Network Interface Card On CentOS 7.md | 0 .../20150209 How to back up a Debian system using backupninja.md | 0 ... Answers--How to get the process ID (PID) of a shell script.md | 0 .../20150211 Best Known Linux Archive or Compress Tools.md | 0 ...ow To Protect Ubuntu Server Against the GHOST Vulnerability.md | 0 ...5 A Look At What Linux Games We Will See In 2015 And Beyond.md | 0 ...How To Make GDebi Default Instead of Ubuntu Software Center.md | 0 ...tar command examples to create or extract archives in Linux.md | 0 .../{ => 201503}/20150225 How to Hide PHP Version in Linux.md | 0 ...25 Italian Region Emilia-Romagna Is Switching To OpenOffice.md | 0 ...wers--How to install full kernel source on Debian or Ubuntu.md | 0 ...ux Basics--How To Find Maximum Supported RAM By Your System.md | 0 ...0306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md | 0 ...10 best uses for open source software in the business world.md | 0 .../20150309 15 Basic 'ls' Command Examples in Linux.md | 0 ...9 New App Brings Android Notifications to The GNOME Desktop.md | 0 ...ian TC Members Appointed For Going Past The Systemd Fallout.md | 0 69 files changed, 0 insertions(+), 0 deletions(-) rename published/{ => 201503}/20130315 How to protect SSH server from brute force attacks using fail2ban.md (100%) rename published/{ => 201503}/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md (100%) rename published/{ => 201503}/20141106 Tomahawk Music Player Returns With New Look, Features.md (100%) rename published/{ => 201503}/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md (100%) rename published/{ => 201503}/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md (100%) rename published/{ => 201503}/20141204 Linux Namespaces.md (100%) rename published/{ => 201503}/20141205 How to configure a syslog server with rsyslog on Linux.md (100%) rename published/{ => 201503}/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md (100%) rename published/{ => 201503}/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md (100%) rename published/{ => 201503}/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md (100%) rename published/{ => 201503}/20141219 Creating your First App on Linux with Python and Flask.md (100%) rename published/{ => 201503}/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md (100%) rename published/{ => 201503}/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md (100%) rename published/{ => 201503}/20141229 5 User Space Debugging Tools in Linux.md (100%) rename published/{ => 201503}/20150104 How to configure fail2ban to protect Apache HTTP server.md (100%) rename published/{ => 201503}/20150104 How to debug a C or C++ program with Nemiver debugger.md (100%) rename published/{ => 201503}/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md (100%) rename published/{ => 201503}/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md (100%) rename published/{ => 201503}/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md (100%) rename published/{ => 201503}/20150112 How to Find and Remove Duplicate Files on Linux.md (100%) rename published/{ => 201503}/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md (100%) rename published/{ => 201503}/20150114 What is a good IDE for C or C++ on Linux.md (100%) rename published/{ => 201503}/20150115 20 Unix Command Line Tricks--Part I.md (100%) rename published/{ => 201503}/20150115 Get back your privacy and control.md (100%) rename published/{ => 201503}/20150115 How To Run Linux Applications From The Terminal In Background Mode.md (100%) rename published/{ => 201503}/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md (100%) rename published/{ => 201503}/20150119 Ubuntu With XFCE vs Xubuntu Linux.md (100%) rename published/{ => 201503}/20150121 How to Monitor Network Usage with nload in Linux.md (100%) rename published/{ => 201503}/20150121 How to apply image effects to pictures on Raspberry Pi.md (100%) rename published/{ => 201503}/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md (100%) rename published/{ => 201503}/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md (100%) rename published/{ => 201503}/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md (100%) rename published/{ => 201503}/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md (100%) rename published/{ => 201503}/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md (100%) rename published/{ => 201503}/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md (100%) rename published/{ => 201503}/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md (100%) rename published/{ => 201503}/20150126 4 lvcreate Command Examples on Linux.md (100%) rename published/{ => 201503}/20150126 CD Audio Grabbers--Graphical Based.md (100%) rename published/{ => 201503}/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md (100%) rename published/{ => 201503}/20150126 How To Kill All Processes Of A Specific User With slay.md (100%) rename published/{ => 201503}/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md (100%) rename published/{ => 201503}/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md (100%) rename published/{ => 201503}/20150127 How to limit network bandwidth on Linux.md (100%) rename published/{ => 201503}/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md (100%) rename published/{ => 201503}/20150127 Windows 10 versus Linux.md (100%) rename published/{ => 201503}/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md (100%) rename published/{ => 201503}/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md (100%) rename published/{ => 201503}/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md (100%) rename published/{ => 201503}/20150202 How To Install Websvn for Subversion in CentOS 7.0.md (100%) rename published/{ => 201503}/20150203 9 Best IDEs and Code Editors for JavaScript Users.md (100%) rename published/{ => 201503}/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md (100%) rename published/{ => 201503}/20150205 How To Use Smartphones Like Weather Conky In Linux.md (100%) rename published/{ => 201503}/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md (100%) rename published/{ => 201503}/20150209 How to back up a Debian system using backupninja.md (100%) rename published/{ => 201503}/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md (100%) rename published/{ => 201503}/20150211 Best Known Linux Archive or Compress Tools.md (100%) rename published/{ => 201503}/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md (100%) rename published/{ => 201503}/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md (100%) rename published/{ => 201503}/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md (100%) rename published/{ => 201503}/20150225 10 quick tar command examples to create or extract archives in Linux.md (100%) rename published/{ => 201503}/20150225 How to Hide PHP Version in Linux.md (100%) rename published/{ => 201503}/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md (100%) rename published/{ => 201503}/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md (100%) rename published/{ => 201503}/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md (100%) rename published/{ => 201503}/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md (100%) rename published/{ => 201503}/20150309 10 best uses for open source software in the business world.md (100%) rename published/{ => 201503}/20150309 15 Basic 'ls' Command Examples in Linux.md (100%) rename published/{ => 201503}/20150309 New App Brings Android Notifications to The GNOME Desktop.md (100%) rename published/{ => 201503}/New Debian TC Members Appointed For Going Past The Systemd Fallout.md (100%) diff --git a/published/20130315 How to protect SSH server from brute force attacks using fail2ban.md b/published/201503/20130315 How to protect SSH server from brute force attacks using fail2ban.md similarity index 100% rename from published/20130315 How to protect SSH server from brute force attacks using fail2ban.md rename to published/201503/20130315 How to protect SSH server from brute force attacks using fail2ban.md diff --git a/published/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md b/published/201503/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md similarity index 100% rename from published/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md rename to published/201503/20141106 Flow' N Play Movie Player Has a Stylish Interface Ubuntu Installation.md diff --git a/published/20141106 Tomahawk Music Player Returns With New Look, Features.md b/published/201503/20141106 Tomahawk Music Player Returns With New Look, Features.md similarity index 100% rename from published/20141106 Tomahawk Music Player Returns With New Look, Features.md rename to published/201503/20141106 Tomahawk Music Player Returns With New Look, Features.md diff --git a/published/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md b/published/201503/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md similarity index 100% rename from published/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md rename to published/201503/20141127 11 Useful Utilities To Supercharge Your Ubuntu Experience.md diff --git a/published/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md b/published/201503/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md similarity index 100% rename from published/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md rename to published/201503/20141127 dupeGuru--Find And Remove Duplicate Files Instantly From Hard Drive.md diff --git a/published/20141204 Linux Namespaces.md b/published/201503/20141204 Linux Namespaces.md similarity index 100% rename from published/20141204 Linux Namespaces.md rename to published/201503/20141204 Linux Namespaces.md diff --git a/published/20141205 How to configure a syslog server with rsyslog on Linux.md b/published/201503/20141205 How to configure a syslog server with rsyslog on Linux.md similarity index 100% rename from published/20141205 How to configure a syslog server with rsyslog on Linux.md rename to published/201503/20141205 How to configure a syslog server with rsyslog on Linux.md diff --git a/published/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md b/published/201503/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md similarity index 100% rename from published/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md rename to published/201503/20141217 Centralized Secure Storage (iSCSI)-- 'Initiator Client' Setup on RHEL or CentOS or Fedora -Part III.md diff --git a/published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md b/published/201503/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md similarity index 100% rename from published/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md rename to published/201503/20141217 Create Centralized Secure Storage using iSCSI Target on RHEL or CentOS or Fedora Part -I.md diff --git a/published/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md b/published/201503/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md similarity index 100% rename from published/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md rename to published/201503/20141217 How to Create and Setup LUNs using LVM in 'iSCSI Target Server' on RHEL or CentOS or Fedora -Part II.md diff --git a/published/20141219 Creating your First App on Linux with Python and Flask.md b/published/201503/20141219 Creating your First App on Linux with Python and Flask.md similarity index 100% rename from published/20141219 Creating your First App on Linux with Python and Flask.md rename to published/201503/20141219 Creating your First App on Linux with Python and Flask.md diff --git a/published/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md b/published/201503/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md similarity index 100% rename from published/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md rename to published/201503/20141219 Google Cloud offers streamlined Ubuntu for Docker use.md diff --git a/published/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md b/published/201503/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md similarity index 100% rename from published/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md rename to published/201503/20141224 Linux FAQs with Answers--How to fix 'XXX is not in the sudoers file' error.md diff --git a/published/20141229 5 User Space Debugging Tools in Linux.md b/published/201503/20141229 5 User Space Debugging Tools in Linux.md similarity index 100% rename from published/20141229 5 User Space Debugging Tools in Linux.md rename to published/201503/20141229 5 User Space Debugging Tools in Linux.md diff --git a/published/20150104 How to configure fail2ban to protect Apache HTTP server.md b/published/201503/20150104 How to configure fail2ban to protect Apache HTTP server.md similarity index 100% rename from published/20150104 How to configure fail2ban to protect Apache HTTP server.md rename to published/201503/20150104 How to configure fail2ban to protect Apache HTTP server.md diff --git a/published/20150104 How to debug a C or C++ program with Nemiver debugger.md b/published/201503/20150104 How to debug a C or C++ program with Nemiver debugger.md similarity index 100% rename from published/20150104 How to debug a C or C++ program with Nemiver debugger.md rename to published/201503/20150104 How to debug a C or C++ program with Nemiver debugger.md diff --git a/published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md b/published/201503/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md similarity index 100% rename from published/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md rename to published/201503/20150104 How to set up a cross-platform backup server on Linux with BackupPC.md diff --git a/published/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md b/published/201503/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md similarity index 100% rename from published/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md rename to published/201503/20150106 This App Can Write a Single ISO to 20 USB Drives Simultaneously.md diff --git a/published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md b/published/201503/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md similarity index 100% rename from published/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md rename to published/201503/20150108 How to Install Scrapy a Web Crawling Tool in Ubuntu 14.04 LTS.md diff --git a/published/20150112 How to Find and Remove Duplicate Files on Linux.md b/published/201503/20150112 How to Find and Remove Duplicate Files on Linux.md similarity index 100% rename from published/20150112 How to Find and Remove Duplicate Files on Linux.md rename to published/201503/20150112 How to Find and Remove Duplicate Files on Linux.md diff --git a/published/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md b/published/201503/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md similarity index 100% rename from published/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md rename to published/201503/20150114 Install Gitblit On Ubuntu or Fedora or CentOS.md diff --git a/published/20150114 What is a good IDE for C or C++ on Linux.md b/published/201503/20150114 What is a good IDE for C or C++ on Linux.md similarity index 100% rename from published/20150114 What is a good IDE for C or C++ on Linux.md rename to published/201503/20150114 What is a good IDE for C or C++ on Linux.md diff --git a/published/20150115 20 Unix Command Line Tricks--Part I.md b/published/201503/20150115 20 Unix Command Line Tricks--Part I.md similarity index 100% rename from published/20150115 20 Unix Command Line Tricks--Part I.md rename to published/201503/20150115 20 Unix Command Line Tricks--Part I.md diff --git a/published/20150115 Get back your privacy and control.md b/published/201503/20150115 Get back your privacy and control.md similarity index 100% rename from published/20150115 Get back your privacy and control.md rename to published/201503/20150115 Get back your privacy and control.md diff --git a/published/20150115 How To Run Linux Applications From The Terminal In Background Mode.md b/published/201503/20150115 How To Run Linux Applications From The Terminal In Background Mode.md similarity index 100% rename from published/20150115 How To Run Linux Applications From The Terminal In Background Mode.md rename to published/201503/20150115 How To Run Linux Applications From The Terminal In Background Mode.md diff --git a/published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md b/published/201503/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md similarity index 100% rename from published/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md rename to published/201503/20150119 Ubuntu 15.04 Finally Lets You Set Menus ToAlways Show.md diff --git a/published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md b/published/201503/20150119 Ubuntu With XFCE vs Xubuntu Linux.md similarity index 100% rename from published/20150119 Ubuntu With XFCE vs Xubuntu Linux.md rename to published/201503/20150119 Ubuntu With XFCE vs Xubuntu Linux.md diff --git a/published/20150121 How to Monitor Network Usage with nload in Linux.md b/published/201503/20150121 How to Monitor Network Usage with nload in Linux.md similarity index 100% rename from published/20150121 How to Monitor Network Usage with nload in Linux.md rename to published/201503/20150121 How to Monitor Network Usage with nload in Linux.md diff --git a/published/20150121 How to apply image effects to pictures on Raspberry Pi.md b/published/201503/20150121 How to apply image effects to pictures on Raspberry Pi.md similarity index 100% rename from published/20150121 How to apply image effects to pictures on Raspberry Pi.md rename to published/201503/20150121 How to apply image effects to pictures on Raspberry Pi.md diff --git a/published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md b/published/201503/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md similarity index 100% rename from published/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md rename to published/201503/20150121 Linux FAQs with Answers--How to check CPU info on Linux.md diff --git a/published/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md b/published/201503/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md similarity index 100% rename from published/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md rename to published/201503/20150122 How To Recover Windows 7 And Delete Ubuntu In 3 Easy Steps.md diff --git a/published/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md b/published/201503/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md similarity index 100% rename from published/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md rename to published/201503/20150122 Linux FAQs with Answers--How to create and configure a MySQL user from the command line.md diff --git a/published/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md b/published/201503/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md similarity index 100% rename from published/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md rename to published/201503/20150122 Linux FAQs with Answers--How to download and install ixgbe driver on Ubuntu or Debian.md diff --git a/published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md b/published/201503/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md similarity index 100% rename from published/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md rename to published/201503/20150122 Linux FAQs with Answers--How to use yum to download a RPM package without installing it.md diff --git a/published/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md b/published/201503/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md similarity index 100% rename from published/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md rename to published/201503/20150123 Keep History Of Notifications With Recent Notifications AppIndicator.md diff --git a/published/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md b/published/201503/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md similarity index 100% rename from published/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md rename to published/201503/20150125 A Shell Primer--Master Your Linux OS X Unix Shell Environment.md diff --git a/published/20150126 4 lvcreate Command Examples on Linux.md b/published/201503/20150126 4 lvcreate Command Examples on Linux.md similarity index 100% rename from published/20150126 4 lvcreate Command Examples on Linux.md rename to published/201503/20150126 4 lvcreate Command Examples on Linux.md diff --git a/published/20150126 CD Audio Grabbers--Graphical Based.md b/published/201503/20150126 CD Audio Grabbers--Graphical Based.md similarity index 100% rename from published/20150126 CD Audio Grabbers--Graphical Based.md rename to published/201503/20150126 CD Audio Grabbers--Graphical Based.md diff --git a/published/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md b/published/201503/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md similarity index 100% rename from published/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md rename to published/201503/20150126 Cleaning up Ubuntu 14.10,14.04,13.10 system.md diff --git a/published/20150126 How To Kill All Processes Of A Specific User With slay.md b/published/201503/20150126 How To Kill All Processes Of A Specific User With slay.md similarity index 100% rename from published/20150126 How To Kill All Processes Of A Specific User With slay.md rename to published/201503/20150126 How To Kill All Processes Of A Specific User With slay.md diff --git a/published/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md b/published/201503/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md similarity index 100% rename from published/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md rename to published/201503/20150126 How to Add a New Hard Disk Without Rebooting on CentOS 7 or RHEL 7.md diff --git a/published/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md b/published/201503/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md similarity index 100% rename from published/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md rename to published/201503/20150126 Improve system performance by moving your log files to RAM Using Ramlog.md diff --git a/published/20150127 How to limit network bandwidth on Linux.md b/published/201503/20150127 How to limit network bandwidth on Linux.md similarity index 100% rename from published/20150127 How to limit network bandwidth on Linux.md rename to published/201503/20150127 How to limit network bandwidth on Linux.md diff --git a/published/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md b/published/201503/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md similarity index 100% rename from published/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md rename to published/201503/20150127 LinSSID--A Graphical Wi-Fi Scanner for Linux.md diff --git a/published/20150127 Windows 10 versus Linux.md b/published/201503/20150127 Windows 10 versus Linux.md similarity index 100% rename from published/20150127 Windows 10 versus Linux.md rename to published/201503/20150127 Windows 10 versus Linux.md diff --git a/published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md b/published/201503/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md similarity index 100% rename from published/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md rename to published/201503/20150128 How To Monitor Access Point Signal Strength With wifi-linux.md diff --git a/published/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md b/published/201503/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md similarity index 100% rename from published/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md rename to published/201503/20150128 Linux Basics--How To Check If A Package Is Installed Or Not In Ubuntu.md diff --git a/published/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md b/published/201503/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md similarity index 100% rename from published/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md rename to published/201503/20150131 WordPress Can Be Used to Leverage Critical Ghost Flaw in Linux.md diff --git a/published/20150202 How To Install Websvn for Subversion in CentOS 7.0.md b/published/201503/20150202 How To Install Websvn for Subversion in CentOS 7.0.md similarity index 100% rename from published/20150202 How To Install Websvn for Subversion in CentOS 7.0.md rename to published/201503/20150202 How To Install Websvn for Subversion in CentOS 7.0.md diff --git a/published/20150203 9 Best IDEs and Code Editors for JavaScript Users.md b/published/201503/20150203 9 Best IDEs and Code Editors for JavaScript Users.md similarity index 100% rename from published/20150203 9 Best IDEs and Code Editors for JavaScript Users.md rename to published/201503/20150203 9 Best IDEs and Code Editors for JavaScript Users.md diff --git a/published/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md b/published/201503/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md similarity index 100% rename from published/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md rename to published/201503/20150203 How To Install KDE Plasma 5.2 In Ubuntu 14.10.md diff --git a/published/20150205 How To Use Smartphones Like Weather Conky In Linux.md b/published/201503/20150205 How To Use Smartphones Like Weather Conky In Linux.md similarity index 100% rename from published/20150205 How To Use Smartphones Like Weather Conky In Linux.md rename to published/201503/20150205 How To Use Smartphones Like Weather Conky In Linux.md diff --git a/published/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md b/published/201503/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md similarity index 100% rename from published/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md rename to published/201503/20150205 Linux Basics--Assign Multiple IP Addresses To Single Network Interface Card On CentOS 7.md diff --git a/published/20150209 How to back up a Debian system using backupninja.md b/published/201503/20150209 How to back up a Debian system using backupninja.md similarity index 100% rename from published/20150209 How to back up a Debian system using backupninja.md rename to published/201503/20150209 How to back up a Debian system using backupninja.md diff --git a/published/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md b/published/201503/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md similarity index 100% rename from published/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md rename to published/201503/20150209 Linux FAQs with Answers--How to get the process ID (PID) of a shell script.md diff --git a/published/20150211 Best Known Linux Archive or Compress Tools.md b/published/201503/20150211 Best Known Linux Archive or Compress Tools.md similarity index 100% rename from published/20150211 Best Known Linux Archive or Compress Tools.md rename to published/201503/20150211 Best Known Linux Archive or Compress Tools.md diff --git a/published/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md b/published/201503/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md similarity index 100% rename from published/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md rename to published/201503/20150211 How To Protect Ubuntu Server Against the GHOST Vulnerability.md diff --git a/published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md b/published/201503/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md similarity index 100% rename from published/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md rename to published/201503/20150215 A Look At What Linux Games We Will See In 2015 And Beyond.md diff --git a/published/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md b/published/201503/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md similarity index 100% rename from published/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md rename to published/201503/20150215 How To Make GDebi Default Instead of Ubuntu Software Center.md diff --git a/published/20150225 10 quick tar command examples to create or extract archives in Linux.md b/published/201503/20150225 10 quick tar command examples to create or extract archives in Linux.md similarity index 100% rename from published/20150225 10 quick tar command examples to create or extract archives in Linux.md rename to published/201503/20150225 10 quick tar command examples to create or extract archives in Linux.md diff --git a/published/20150225 How to Hide PHP Version in Linux.md b/published/201503/20150225 How to Hide PHP Version in Linux.md similarity index 100% rename from published/20150225 How to Hide PHP Version in Linux.md rename to published/201503/20150225 How to Hide PHP Version in Linux.md diff --git a/published/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md b/published/201503/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md similarity index 100% rename from published/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md rename to published/201503/20150225 Italian Region Emilia-Romagna Is Switching To OpenOffice.md diff --git a/published/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md b/published/201503/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md similarity index 100% rename from published/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md rename to published/201503/20150225 Linux FAQs with Answers--How to install full kernel source on Debian or Ubuntu.md diff --git a/published/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md b/published/201503/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md similarity index 100% rename from published/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md rename to published/201503/20150304 Linux Basics--How To Find Maximum Supported RAM By Your System.md diff --git a/published/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md b/published/201503/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md similarity index 100% rename from published/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md rename to published/201503/20150306 Pinta 1.6 Released Install It In Ubuntu And Linux Mint.md diff --git a/published/20150309 10 best uses for open source software in the business world.md b/published/201503/20150309 10 best uses for open source software in the business world.md similarity index 100% rename from published/20150309 10 best uses for open source software in the business world.md rename to published/201503/20150309 10 best uses for open source software in the business world.md diff --git a/published/20150309 15 Basic 'ls' Command Examples in Linux.md b/published/201503/20150309 15 Basic 'ls' Command Examples in Linux.md similarity index 100% rename from published/20150309 15 Basic 'ls' Command Examples in Linux.md rename to published/201503/20150309 15 Basic 'ls' Command Examples in Linux.md diff --git a/published/20150309 New App Brings Android Notifications to The GNOME Desktop.md b/published/201503/20150309 New App Brings Android Notifications to The GNOME Desktop.md similarity index 100% rename from published/20150309 New App Brings Android Notifications to The GNOME Desktop.md rename to published/201503/20150309 New App Brings Android Notifications to The GNOME Desktop.md diff --git a/published/New Debian TC Members Appointed For Going Past The Systemd Fallout.md b/published/201503/New Debian TC Members Appointed For Going Past The Systemd Fallout.md similarity index 100% rename from published/New Debian TC Members Appointed For Going Past The Systemd Fallout.md rename to published/201503/New Debian TC Members Appointed For Going Past The Systemd Fallout.md From 9bb0602a5d0509ff4bda24d10dd5514ef4b703b5 Mon Sep 17 00:00:00 2001 From: DeadFire Date: Wed, 1 Apr 2015 11:13:53 +0800 Subject: [PATCH 702/725] =?UTF-8?q?20150401-1=20=E9=80=89=E9=A2=98=20ZMap?= =?UTF-8?q?=20=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/tech/20150401 ZMap Documentation.md | 743 ++++++++++++++++++++ 1 file changed, 743 insertions(+) create mode 100644 sources/tech/20150401 ZMap Documentation.md diff --git a/sources/tech/20150401 ZMap Documentation.md b/sources/tech/20150401 ZMap Documentation.md new file mode 100644 index 0000000000..810140d774 --- /dev/null +++ b/sources/tech/20150401 ZMap Documentation.md @@ -0,0 +1,743 @@ +ZMap Documentation +================================================================================ +1. Getting Started with ZMap +1. Scanning Best Practices +1. Command Line Arguments +1. Additional Information + 1. TCP SYN Probe Module + 1. ICMP Echo Probe Module + 1. UDP Probe Module + 1. Configuration Files + 1. Verbosity + 1. Results Output + 1. Blacklisting + 1. Rate Limiting and Sampling + 1. Sending Multiple Probes +1. Extending ZMap + 1. Sample Applications + 1. Writing Probe and Output Modules + +---------- + +### Getting Started with ZMap ### + +ZMap is designed to perform comprehensive scans of the IPv4 address space or large portions of it. While ZMap is a powerful tool for researchers, please keep in mind that by running ZMap, you are potentially scanning the ENTIRE IPv4 address space at over 1.4 million packets per second. Before performing even small scans, we encourage users to contact their local network administrators and consult our list of scanning best practices. + +By default, ZMap will perform a TCP SYN scan on the specified port at the maximum rate possible. A more conservative configuration that will scan 10,000 random addresses on port 80 at a maximum 10 Mbps can be run as follows: + + $ zmap --bandwidth=10M --target-port=80 --max-targets=10000 --output-file=results.csv + +Or more concisely specified as: + + $ zmap -B 10M -p 80 -n 10000 -o results.csv + +ZMap can also be used to scan specific subnets or CIDR blocks. For example, to scan only 10.0.0.0/8 and 192.168.0.0/16 on port 80, run: + + zmap -p 80 -o results.csv 10.0.0.0/8 192.168.0.0/16 + +If the scan started successfully, ZMap will output status updates every one second similar to the following: + + 0% (1h51m left); send: 28777 562 Kp/s (560 Kp/s avg); recv: 1192 248 p/s (231 p/s avg); hits: 0.04% + 0% (1h51m left); send: 34320 554 Kp/s (559 Kp/s avg); recv: 1442 249 p/s (234 p/s avg); hits: 0.04% + 0% (1h50m left); send: 39676 535 Kp/s (555 Kp/s avg); recv: 1663 220 p/s (232 p/s avg); hits: 0.04% + 0% (1h50m left); send: 45372 570 Kp/s (557 Kp/s avg); recv: 1890 226 p/s (232 p/s avg); hits: 0.04% + +These updates provide information about the current state of the scan and are of the following form: %-complete (est time remaining); packets-sent curr-send-rate (avg-send-rate); recv: packets-recv recv-rate (avg-recv-rate); hits: hit-rate + +If you do not know the scan rate that your network can support, you may want to experiment with different scan rates or bandwidth limits to find the fastest rate that your network can support before you see decreased results. + +By default, ZMap will output the list of distinct IP addresses that responded successfully (e.g. with a SYN ACK packet) similar to the following. There are several additional formats (e.g. JSON and Redis) for outputting results as well as options for producing programmatically parsable scan statistics. As wells, additional output fields can be specified and the results can be filtered using an output filter. + + 115.237.116.119 + 23.9.117.80 + 207.118.204.141 + 217.120.143.111 + 50.195.22.82 + +We strongly encourage you to use a blacklist file, to exclude both reserved/unallocated IP space (e.g. multicast, RFC1918), as well as networks that request to be excluded from your scans. By default, ZMap will utilize a simple blacklist file containing reserved and unallocated addresses located at `/etc/zmap/blacklist.conf`. If you find yourself specifying certain settings, such as your maximum bandwidth or blacklist file every time you run ZMap, you can specify these in `/etc/zmap/zmap.conf` or use a custom configuration file. + +If you are attempting to troubleshoot scan related issues, there are several options to help debug. First, it is possible can perform a dry run scan in order to see the packets that would be sent over the network by adding the `--dryrun` flag. As well, it is possible to change the logging verbosity by setting the `--verbosity=n` flag. + +---------- + +### Scanning Best Practices ### + +We offer these suggestions for researchers conducting Internet-wide scans as guidelines for good Internet citizenship. + +- Coordinate closely with local network administrators to reduce risks and handle inquiries +- Verify that scans will not overwhelm the local network or upstream provider +- Signal the benign nature of the scans in web pages and DNS entries of the source addresses +- Clearly explain the purpose and scope of the scans in all communications +- Provide a simple means of opting out and honor requests promptly +- Conduct scans no larger or more frequent than is necessary for research objectives +- Spread scan traffic over time or source addresses when feasible + +It should go without saying that scan researchers should refrain from exploiting vulnerabilities or accessing protected resources, and should comply with any special legal requirements in their jurisdictions. + +---------- + +### Command Line Arguments ### + +#### Common Options #### + +These options are the most common options when performing a simple scan. We note that some options are dependent on the probe module or output module used (e.g. target port is not used when performing an ICMP Echo Scan). + + +**-p, --target-port=port** + +TCP port number to scan (e.g. 443) + +**-o, --output-file=name** + +Write results to this file. Use - for stdout + +**-b, --blacklist-file=path** + +File of subnets to exclude, in CIDR notation (e.g. 192.168.0.0/16), one-per line. It is recommended you use this to exclude RFC 1918 addresses, multicast, IANA reserved space, and other IANA special-purpose addresses. An example blacklist file is provided in conf/blacklist.example for this purpose. + +#### Scan Options #### + +**-n, --max-targets=n** + +Cap the number of targets to probe. This can either be a number (e.g. `-n 1000`) or a percentage (e.g. `-n 0.1%`) of the scannable address space (after excluding blacklist) + +**-N, --max-results=n** + +Exit after receiving this many results + +**-t, --max-runtime=secs** + +Cap the length of time for sending packets + +**-r, --rate=pps** + +Set the send rate in packets/sec + +**-B, --bandwidth=bps** + +Set the send rate in bits/second (supports suffixes G, M, and K (e.g. `-B 10M` for 10 mbps). This overrides the `--rate` flag. + +**-c, --cooldown-time=secs** + +How long to continue receiving after sending has completed (default=8) + +**-e, --seed=n** + +Seed used to select address permutation. Use this if you want to scan addresses in the same order for multiple ZMap runs. + +**--shards=n** + +Split the scan up into N shards/partitions among different instances of zmap (default=1). When sharding, `--seed` is required + +**--shard=n** + +Set which shard to scan (default=0). Shards are indexed in the range [0, N), where N is the total number of shards. When sharding `--seed` is required. + +**-T, --sender-threads=n** + +Threads used to send packets (default=1) + +**-P, --probes=n** + +Number of probes to send to each IP (default=1) + +**-d, --dryrun** + +Print out each packet to stdout instead of sending it (useful for debugging) + +#### Network Options #### + +**-s, --source-port=port|range** + +Source port(s) to send packets from + +**-S, --source-ip=ip|range** + +Source address(es) to send packets from. Either single IP or range (e.g. 10.0.0.1-10.0.0.9) + +**-G, --gateway-mac=addr** + +Gateway MAC address to send packets to (in case auto-detection does not work) + +**-i, --interface=name** + +Network interface to use + +#### Probe Options #### + +ZMap allows users to specify and write their own probe modules for use with ZMap. Probe modules are responsible for generating probe packets to send, and processing responses from hosts. + +**--list-probe-modules** + +List available probe modules (e.g. tcp_synscan) + +**-M, --probe-module=name** + +Select probe module (default=tcp_synscan) + +**--probe-args=args** + +Arguments to pass to probe module + +**--list-output-fields** + +List the fields the selected probe module can send to the output module + +#### Output Options #### + +ZMap allows users to specify and write their own output modules for use with ZMap. Output modules are responsible for processing the fieldsets returned by the probe module, and outputing them to the user. Users can specify output fields, and write filters over the output fields. + +**--list-output-modules** + +List available output modules (e.g. tcp_synscan) + +**-O, --output-module=name** + +Select output module (default=csv) + +**--output-args=args** + +Arguments to pass to output module + +**-f, --output-fields=fields** + +Comma-separated list of fields to output + +**--output-filter** + +Specify an output filter over the fields defined by the probe module + +#### Additional Options #### + +**-C, --config=filename** + +Read a configuration file, which can specify any other options. + +**-q, --quiet** + +Do not print status updates once per second + +**-g, --summary** + +Print configuration and summary of results at the end of the scan + +**-v, --verbosity=n** + +Level of log detail (0-5, default=3) + +**-h, --help** + +Print help and exit + +**-V, --version** + +Print version and exit + +---------- + +### Additional Information ### + +#### TCP SYN Scans #### + +When performing a TCP SYN scan, ZMap requires a single target port and supports specifying a range of source ports from which the scan will originate. + +**-p, --target-port=port** + +TCP port number to scan (e.g. 443) + +**-s, --source-port=port|range** + +Source port(s) for scan packets (e.g. 40000-50000) + +**Warning!** ZMap relies on the Linux kernel to respond to SYN/ACK packets with RST packets in order to close connections opened by the scanner. This occurs because ZMap sends packets at the Ethernet layer in order to reduce overhead otherwise incurred in the kernel from tracking open TCP connections and performing route lookups. As such, if you have a firewall rule that tracks established connections such as a netfilter rule similar to `-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT`, this will block SYN/ACK packets from reaching the kernel. This will not prevent ZMap from recording responses, but it will prevent RST packets from being sent back, ultimately using up a connection on the scanned host until your connection times out. We strongly recommend that you select a set of unused ports on your scanning host which can be allowed access in your firewall and specifying this port range when executing ZMap, with the `-s` flag (e.g. `-s '50000-60000'`). + +#### ICMP Echo Request Scans #### + +While ZMap performs TCP SYN scans by default, it also supports ICMP echo request scans in which an ICMP echo request packet is sent to each host and the type of ICMP response received in reply is denoted. An ICMP scan can be performed by selecting the icmp_echoscan scan module similar to the following: + + $ zmap --probe-module=icmp_echoscan + +#### UDP Datagram Scans #### + +ZMap additionally supports UDP probes, where it will send out an arbitrary UDP datagram to each host, and receive either UDP or ICMP Unreachable responses. ZMap supports four different methods of setting the UDP payload through the --probe-args command-line option. These are 'text' for ASCII-printable payloads, 'hex' for hexadecimal payloads set on the command-line, 'file' for payloads contained in an external file, and 'template' for payloads that require dynamic field generation. In order to obtain the UDP response, make sure that you specify 'data' as one of the fields to report with the -f option. + +The example below will send the two bytes 'ST', a PCAnwywhere 'status' request, to UDP port 5632. + + $ zmap -M udp -p 5632 --probe-args=text:ST -N 100 -f saddr,data -o - + +The example below will send the byte '0x02', a SQL Server 'client broadcast' request, to UDP port 1434. + + $ zmap -M udp -p 1434 --probe-args=hex:02 -N 100 -f saddr,data -o - + +The example below will send a NetBIOS status request to UDP port 137. This uses a payload file that is included with the ZMap distribution. + + $ zmap -M udp -p 1434 --probe-args=file:netbios_137.pkt -N 100 -f saddr,data -o - + +The example below will send a SIP 'OPTIONS' request to UDP port 5060. This uses a template file that is included with the ZMap distribution. + + $ zmap -M udp -p 1434 --probe-args=file:sip_options.tpl -N 100 -f saddr,data -o - + +UDP payload templates are still experimental. You may encounter crashes when more using more than one send thread (-T) and there is a significant decrease in performance compared to static payloads. A template is simply a payload file that contains one or more field specifiers enclosed in a ${} sequence. Some protocols, notably SIP, require the payload to reflect the source and destination of the packet. Other protocols, such as portmapper and DNS, contain fields that should be randomized per request or risk being dropped by multi-homed systems scanned by ZMap. + +The payload template below will send a SIP OPTIONS request to every destination: + + OPTIONS sip:${RAND_ALPHA=8}@${DADDR} SIP/2.0 + Via: SIP/2.0/UDP ${SADDR}:${SPORT};branch=${RAND_ALPHA=6}.${RAND_DIGIT=10};rport;alias + From: sip:${RAND_ALPHA=8}@${SADDR}:${SPORT};tag=${RAND_DIGIT=8} + To: sip:${RAND_ALPHA=8}@${DADDR} + Call-ID: ${RAND_DIGIT=10}@${SADDR} + CSeq: 1 OPTIONS + Contact: sip:${RAND_ALPHA=8}@${SADDR}:${SPORT} + Content-Length: 0 + Max-Forwards: 20 + User-Agent: ${RAND_ALPHA=8} + Accept: text/plain + +In the example above, note that line endings are \r\n and the end of this request must contain \r\n\r\n for most SIP implementations to correcly process it. A working example is included in the examples/udp-payloads directory of the ZMap source tree (sip_options.tpl). + +The following template fields are currently implemented: + + +- **SADDR**: Source IP address in dotted-quad format +- **SADDR_N**: Source IP address in network byte order +- **DADDR**: Destination IP address in dotted-quad format +- **DADDR_N**: Destination IP address in network byte order +- **SPORT**: Source port in ascii format +- **SPORT_N**: Source port in network byte order +- **DPORT**: Destination port in ascii format +- **DPORT_N**: Destination port in network byte order +- **RAND_BYTE**: Random bytes (0-255), length specified with =(length) parameter +- **RAND_DIGIT**: Random digits from 0-9, length specified with =(length) parameter +- **RAND_ALPHA**: Random mixed-case letters from A-Z, length specified with =(length) parameter +- **RAND_ALPHANUM**: Random mixed-case letters from A-Z and digits from 0-9, length specified with =(length) parameter + +### Configuration Files ### + +ZMap supports configuration files instead of requiring all options to be specified on the command-line. A configuration can be created by specifying one long-name option and the value per line such as: + + interface "eth1" + source-ip 1.1.1.4-1.1.1.8 + gateway-mac b4:23:f9:28:fa:2d # upstream gateway + cooldown-time 300 # seconds + blacklist-file /etc/zmap/blacklist.conf + output-file ~/zmap-output + quiet + summary + +ZMap can then be run with a configuration file and specifying any additional necessary parameters: + + $ zmap --config=~/.zmap.conf --target-port=443 + +### Verbosity ### + +There are several types of on-screen output that ZMap produces. By default, ZMap will print out basic progress information similar to the following every 1 second. This can be disabled by setting the `--quiet` flag. + + 0:01 12%; send: 10000 done (15.1 Kp/s avg); recv: 144 143 p/s (141 p/s avg); hits: 1.44% + +ZMap also prints out informational messages during scanner configuration such as the following, which can be controlled with the `--verbosity` argument. + + Aug 11 16:16:12.813 [INFO] zmap: started + Aug 11 16:16:12.817 [DEBUG] zmap: no interface provided. will use eth0 + Aug 11 16:17:03.971 [DEBUG] cyclic: primitive root: 3489180582 + Aug 11 16:17:03.971 [DEBUG] cyclic: starting point: 46588 + Aug 11 16:17:03.975 [DEBUG] blacklist: 3717595507 addresses allowed to be scanned + Aug 11 16:17:03.975 [DEBUG] send: will send from 1 address on 28233 source ports + Aug 11 16:17:03.975 [DEBUG] send: using bandwidth 10000000 bits/s, rate set to 14880 pkt/s + Aug 11 16:17:03.985 [DEBUG] recv: thread started + +ZMap also supports printing out a grep-able summary at the end of the scan, similar to below, which can be invoked with the `--summary` flag. + + cnf target-port 443 + cnf source-port-range-begin 32768 + cnf source-port-range-end 61000 + cnf source-addr-range-begin 1.1.1.4 + cnf source-addr-range-end 1.1.1.8 + cnf maximum-packets 4294967295 + cnf maximum-runtime 0 + cnf permutation-seed 0 + cnf cooldown-period 300 + cnf send-interface eth1 + cnf rate 45000 + env nprocessors 16 + exc send-start-time Fri Jan 18 01:47:35 2013 + exc send-end-time Sat Jan 19 00:47:07 2013 + exc recv-start-time Fri Jan 18 01:47:35 2013 + exc recv-end-time Sat Jan 19 00:52:07 2013 + exc sent 3722335150 + exc blacklisted 572632145 + exc first-scanned 1318129262 + exc hit-rate 0.874102 + exc synack-received-unique 32537000 + exc synack-received-total 36689941 + exc synack-cooldown-received-unique 193 + exc synack-cooldown-received-total 1543 + exc rst-received-unique 141901021 + exc rst-received-total 166779002 + adv source-port-secret 37952 + adv permutation-gen 4215763218 + +### Results Output ### + +ZMap can produce results in several formats through the use of **output modules**. By default, ZMap only supports **csv** output, however support for **redis** and **json** can be compiled in. The results sent to these output modules may be filtered using an **output filter**. The fields the output module writes are specified by the user. By default, ZMap will return results in csv format and if no output file is specified, ZMap will not produce specific results. It is also possible to write your own output module; see Writing Output Modules for information. + +**-o, --output-file=p** + +File to write output to + +**-O, --output-module=p** + +Invoke a custom output module + + +**-f, --output-fields=p** + +Comma-separated list of fields to output + +**--output-filter=filter** + +Specify an output filter over fields for a given probe + +**--list-output-modules** + +Lists available output modules + +**--list-output-fields** + +List available output fields for a given probe + +#### Output Fields #### + +ZMap has a variety of fields it can output beyond IP address. These fields can be viewed for a given probe module by running with the `--list-output-fields` flag. + + $ zmap --probe-module="tcp_synscan" --list-output-fields + saddr string: source IP address of response + saddr-raw int: network order integer form of source IP address + daddr string: destination IP address of response + daddr-raw int: network order integer form of destination IP address + ipid int: IP identification number of response + ttl int: time-to-live of response packet + sport int: TCP source port + dport int: TCP destination port + seqnum int: TCP sequence number + acknum int: TCP acknowledgement number + window int: TCP window + classification string: packet classification + success int: is response considered success + repeat int: is response a repeat response from host + cooldown int: Was response received during the cooldown period + timestamp-str string: timestamp of when response arrived in ISO8601 format. + timestamp-ts int: timestamp of when response arrived in seconds since Epoch + timestamp-us int: microsecond part of timestamp (e.g. microseconds since 'timestamp-ts') + +To select which fields to output, any combination of the output fields can be specified as a comma-separated list using the `--output-fields=fields` or `-f` flags. Example: + + $ zmap -p 80 -f "response,saddr,daddr,sport,seq,ack,in_cooldown,is_repeat,timestamp" -o output.csv + +#### Filtering Output #### + +Results generated by a probe module can be filtered before being passed to the output module. Filters are defined over the output fields of a probe module. Filters are written in a simple filtering language, similar to SQL, and are passed to ZMap using the **--output-filter** option. Output filters are commonly used to filter out duplicate results, or to only pass only sucessful responses to the output module. + +Filter expressions are of the form ` `. The type of `` must be either a string or unsigned integer literal, and match the type of ``. The valid operations for integer comparisons are `= !=, <, >, <=, >=`. The operations for string comparisons are =, !=. The `--list-output-fields` flag will print what fields and types are available for the selected probe module, and then exit. + +Compound filter expressions may be constructed by combining filter expressions using parenthesis to specify order of operations, the `&&` (logical AND) and `||` (logical OR) operators. + +**Examples** + +Write a filter for only successful, non-duplicate responses + + --output-filter="success = 1 && repeat = 0" + +Filter for packets that have classification RST and a TTL greater than 10, or for packets with classification SYNACK + + --output-filter="(classification = rst && ttl > 10) || classification = synack" + +#### CSV #### + +The csv module will produce a comma-separated value file of the output fields requested. For example, the following command produces the following CSV in a file called `output.csv`. + + $ zmap -p 80 -f "response,saddr,daddr,sport,seq,ack,in_cooldown,is_repeat,timestamp" -o output.csv + +---------- + + response, saddr, daddr, sport, dport, seq, ack, in_cooldown, is_repeat, timestamp + synack, 159.174.153.144, 10.0.0.9, 80, 40555, 3050964427, 3515084203, 0, 0,2013-08-15 18:55:47.681 + rst, 141.209.175.1, 10.0.0.9, 80, 40136, 0, 3272553764, 0, 0,2013-08-15 18:55:47.683 + rst, 72.36.213.231, 10.0.0.9, 80, 56642, 0, 2037447916, 0, 0,2013-08-15 18:55:47.691 + rst, 148.8.49.150, 10.0.0.9, 80, 41672, 0, 1135824975, 0, 0,2013-08-15 18:55:47.692 + rst, 50.165.166.206, 10.0.0.9, 80, 38858, 0, 535206863, 0, 0,2013-08-15 18:55:47.694 + rst, 65.55.203.135, 10.0.0.9, 80, 50008, 0, 4071709905, 0, 0,2013-08-15 18:55:47.700 + synack, 50.57.166.186, 10.0.0.9, 80, 60650, 2813653162, 993314545, 0, 0,2013-08-15 18:55:47.704 + synack, 152.75.208.114, 10.0.0.9, 80, 52498, 460383682, 4040786862, 0, 0,2013-08-15 18:55:47.707 + synack, 23.72.138.74, 10.0.0.9, 80, 33480, 810393698, 486476355, 0, 0,2013-08-15 18:55:47.710 + +#### Redis #### + +The redis output module allows addresses to be added to a Redis queue instead of being saved to file which ultimately allows ZMap to be incorporated with post processing tools. + +**Heads Up!** ZMap does not build with Redis support by default. If you are building ZMap from source, you can build with Redis support by running CMake with `-DWITH_REDIS=ON`. + +### Blacklisting and Whitelisting ### + +ZMap supports both blacklisting and whitelisting network prefixes. If ZMap is not provided with blacklist or whitelist parameters, ZMap will scan all IPv4 addresses (including local, reserved, and multicast addresses). If a blacklist file is specified, network prefixes in the blacklisted segments will not be scanned; if a whitelist file is provided, only network prefixes in the whitelist file will be scanned. A whitelist and blacklist file can be used in coordination; the blacklist has priority over the whitelist (e.g. if you have whitelisted 10.0.0.0/8 and blacklisted 10.1.0.0/16, then 10.1.0.0/16 will not be scanned). Whitelist and blacklist files can be specified on the command-line as follows: + +**-b, --blacklist-file=path** + +File of subnets to blacklist in CIDR notation, e.g. 192.168.0.0/16 + +**-w, --whitelist-file=path** + +File of subnets to limit scan to in CIDR notation, e.g. 192.168.0.0/16 + +Blacklist files should be formatted with a single network prefix in CIDR notation per line. Comments are allowed using the `#` character. Example: + + # From IANA IPv4 Special-Purpose Address Registry + # http://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml + # Updated 2013-05-22 + + 0.0.0.0/8 # RFC1122: "This host on this network" + 10.0.0.0/8 # RFC1918: Private-Use + 100.64.0.0/10 # RFC6598: Shared Address Space + 127.0.0.0/8 # RFC1122: Loopback + 169.254.0.0/16 # RFC3927: Link Local + 172.16.0.0/12 # RFC1918: Private-Use + 192.0.0.0/24 # RFC6890: IETF Protocol Assignments + 192.0.2.0/24 # RFC5737: Documentation (TEST-NET-1) + 192.88.99.0/24 # RFC3068: 6to4 Relay Anycast + 192.168.0.0/16 # RFC1918: Private-Use + 192.18.0.0/15 # RFC2544: Benchmarking + 198.51.100.0/24 # RFC5737: Documentation (TEST-NET-2) + 203.0.113.0/24 # RFC5737: Documentation (TEST-NET-3) + 240.0.0.0/4 # RFC1112: Reserved + 255.255.255.255/32 # RFC0919: Limited Broadcast + + # From IANA Multicast Address Space Registry + # http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml + # Updated 2013-06-25 + + 224.0.0.0/4 # RFC5771: Multicast/Reserved + +If you are looking to scan only a random portion of the internet, checkout Sampling, instead of using whitelisting and blacklisting. + +**Heads Up!** The default ZMap configuration uses the blacklist file at `/etc/zmap/blacklist.conf`, which contains locally scoped address space and reserved IP ranges. The default configuration can be changed by editing `/etc/zmap/zmap.conf`. + +### Rate Limiting and Sampling ### + +By default, ZMap will scan at the fastest rate that your network adaptor supports. In our experiences on commodity hardware, this is generally around 95-98% of the theoretical speed of gigabit Ethernet, which may be faster than your upstream provider can handle. ZMap will not automatically adjust its send-rate based on your upstream provider. You may need to manually adjust your send-rate to reduce packet drops and incorrect results. + +**-r, --rate=pps** + +Set maximum send rate in packets/sec + +**-B, --bandwidth=bps** + +Set send rate in bits/sec (supports suffixes G, M, and K). This overrides the --rate flag. + +ZMap also allows random sampling of the IPv4 address space by specifying max-targets and/or max-runtime. Because hosts are scanned in a random permutation generated per scan instantiation, limiting a scan to n hosts will perform a random sampling of n hosts. Command-line options: + +**-n, --max-targets=n** + +Cap number of targets to probe + +**-N, --max-results=n** + +Cap number of results (exit after receiving this many positive results) + +**-t, --max-runtime=s** + +Cap length of time for sending packets (in seconds) + +**-s, --seed=n** + +Seed used to select address permutation. Specify the same seed in order to scan addresses in the same order for different ZMap runs. + +For example, if you wanted to scan the same one million hosts on the Internet for multiple scans, you could set a predetermined seed and cap the number of scanned hosts similar to the following: + + zmap -p 443 -s 3 -n 1000000 -o results + +In order to determine which one million hosts were going to be scanned, you could run the scan in dry-run mode which will print out the packets that would be sent instead of performing the actual scan. + + zmap -p 443 -s 3 -n 1000000 --dryrun | grep daddr + | awk -F'daddr: ' '{print $2}' | sed 's/ |.*//;' + +### Sending Multiple Packets ### + +ZMap supports sending multiple probes to each host. Increasing this number both increases scan time and hosts reached. However, we find that the increase in scan time (~100% per additional probe) greatly outweighs the increase in hosts reached (~1% per additional probe). + +**-P, --probes=n** + +The number of unique probes to send to each IP (default=1) + +---------- + +### Sample Applications ### + +ZMap is designed for initiating contact with a large number of hosts and finding ones that respond positively. However, we realize that many users will want to perform follow-up processing, such as performing an application level handshake. For example, users who perform a TCP SYN scan on port 80 might want to perform a simple GET request and users who scan port 443 may be interested in completing a TLS handshake. + +#### Banner Grab #### + +We have included a sample application, banner-grab, with ZMap that enables users to receive messages from listening TCP servers. Banner-grab connects to the provided servers, optionally sends a message, and prints out the first message received from the server. This tool can be used to fetch banners such as HTTP server responses to specific commands, telnet login prompts, or SSH server strings. + +This example finds 1000 servers listening on port 80, and sends a simple GET request to each, storing their base-64 encoded responses in http-banners.out + + $ zmap -p 80 -N 1000 -B 10M -o - | ./banner-grab-tcp -p 80 -c 500 -d ./http-req > out + +For more details on using `banner-grab`, see the README file in `examples/banner-grab`. + +**Heads Up!** ZMap and banner-grab can have significant performance and accuracy impact on one another if run simultaneously (as in the example). Make sure not to let ZMap saturate banner-grab-tcp's concurrent connections, otherwise banner-grab will fall behind reading stdin, causing ZMap to block on writing stdout. We recommend using a slower scanning rate with ZMap, and increasing the concurrency of banner-grab-tcp to no more than 3000 (Note that > 1000 concurrent connections requires you to use `ulimit -SHn 100000` and `ulimit -HHn 100000` to increase the maximum file descriptors per process). These parameters will of course be dependent on your server performance, and hit-rate; we encourage developers to experiment with small samples before running a large scan. + +#### Forge Socket #### + +We have also included a form of banner-grab, called forge-socket, that reuses the SYN-ACK sent from the server for the connection that ultimately fetches the banner. In `banner-grab-tcp`, ZMap sends a SYN to each server, and listening servers respond with a SYN+ACK. The ZMap host's kernel receives this, and sends a RST, as no active connection is associated with that packet. The banner-grab program must then create a new TCP connection to the same server to fetch data from it. + +In forge-socket, we utilize a kernel module by the same name, that allows us to create a connection with arbitrary TCP parameters. This enables us to suppress the kernel's RST packet, and instead create a socket that will reuse the SYN+ACK's parameters, and send and receive data through this socket as we would any normally connected socket. + +To use forge-socket, you will need the forge-socket kernel module, available from [github][1]. You should git clone `git@github.com:ewust/forge_socket.git` in the ZMap root source directory, and then cd into the forge_socket directory, and run make. Install the kernel module with `insmod forge_socket.ko` as root. + +You must also tell the kernel not to send RST packets. An easy way to disable RST packets system wide is to use **iptables**. `iptables -A OUTPUT -p tcp -m tcp --tcp-flgas RST,RST RST,RST -j DROP` as root will do this, though you may also add an optional --dport X to limit this to the port (X) you are scanning. To remove this after your scan completes, you can run `iptables -D OUTPUT -p tcp -m tcp --tcp-flags RST,RST RST,RST -j DROP` as root. + +Now you should be able to build the forge-socket ZMap example program. To run it, you must use the **extended_file** ZMap output module: + + $ zmap -p 80 -N 1000 -B 10M -O extended_file -o - | \ + ./forge-socket -c 500 -d ./http-req > ./http-banners.out + +See the README in `examples/forge-socket` for more details. + +---------- + +### Writing Probe and Output Modules ### + +ZMap can be extended to support different types of scanning through **probe modules** and additional types of results **output through** output modules. Registered probe and output modules can be listed through the command-line interface: + +**--list-probe-modules** + +Lists installed probe modules + +**--list-output-modules** + +Lists installed output modules + +#### Output Modules #### + +ZMap output and post-processing can be extended by implementing and registering **output modules** with the scanner. Output modules receive a callback for every received response packet. While the default provided modules provide simple output, these modules are also capable of performing additional post-processing (e.g. tracking duplicates or outputting numbers in terms of AS instead of IP address) + +Output modules are created by defining a new output_module struct and registering it in [output_modules.c][2]: + + typedef struct output_module { + const char *name; // how is output module referenced in the CLI + unsigned update_interval; // how often is update called in seconds + + output_init_cb init; // called at scanner initialization + output_update_cb start; // called at the beginning of scanner + output_update_cb update; // called every update_interval seconds + output_update_cb close; // called at scanner termination + + output_packet_cb process_ip; // called when a response is received + + const char *helptext; // Printed when --list-output-modules is called + + } output_module_t; + +Output modules must have a name, which is how they are referenced on the command-line and generally implement `success_ip` and oftentimes `other_ip` callback. The process_ip callback is called for every response packet that is received and passed through the output filter by the current **probe module**. The response may or may not be considered a success (e.g. it could be a TCP RST). These callbacks must define functions that match the `output_packet_cb` definition: + + int (*output_packet_cb) ( + + ipaddr_n_t saddr, // IP address of scanned host in network-order + ipaddr_n_t daddr, // destination IP address in network-order + + const char* response_type, // send-module classification of packet + + int is_repeat, // {0: first response from host, 1: subsequent responses} + int in_cooldown, // {0: not in cooldown state, 1: scanner in cooldown state} + + const u_char* packet, // pointer to struct iphdr of IP packet + size_t packet_len // length of packet in bytes + ); + +An output module can also register callbacks to be executed at scanner initialization (tasks such as opening an output file), start of the scan (tasks such as documenting blacklisted addresses), during regular intervals during the scan (tasks such as progress updates), and close (tasks such as closing any open file descriptors). These callbacks are provided with complete access to the scan configuration and current state: + + int (*output_update_cb)(struct state_conf*, struct state_send*, struct state_recv*); + +which are defined in [output_modules.h][3]. An example is available at [src/output_modules/module_csv.c][4]. + +#### Probe Modules #### + +Packets are constructed using probe modules which allow abstracted packet creation and response classification. ZMap comes with two scan modules by default: `tcp_synscan` and `icmp_echoscan`. By default, ZMap uses `tcp_synscan`, which sends TCP SYN packets, and classifies responses from each host as open (received SYN+ACK) or closed (received RST). ZMap also allows developers to write their own probe modules for use with ZMap, using the following API. + +Each type of scan is implemented by developing and registering the necessary callbacks in a `send_module_t` struct: + + typedef struct probe_module { + const char *name; // how scan is invoked on command-line + size_t packet_length; // how long is probe packet (must be static size) + + const char *pcap_filter; // PCAP filter for collecting responses + size_t pcap_snaplen; // maximum number of bytes for libpcap to capture + + uint8_t port_args; // set to 1 if ZMap requires a --target-port be + // specified by the user + + probe_global_init_cb global_initialize; // called once at scanner initialization + probe_thread_init_cb thread_initialize; // called once for each thread packet buffer + probe_make_packet_cb make_packet; // called once per host to update packet + probe_validate_packet_cb validate_packet; // called once per received packet, + // return 0 if packet is invalid, + // non-zero otherwise. + + probe_print_packet_cb print_packet; // called per packet if in dry-run mode + probe_classify_packet_cb process_packet; // called by receiver to classify response + probe_close_cb close; // called at scanner termination + + fielddef_t *fields // Definitions of the fields specific to this module + int numfields // Number of fields + + } probe_module_t; + +At scanner initialization, `global_initialize` is called once and can be utilized to perform any necessary global configuration or initialization. However, `global_initialize` does not have access to the packet buffer which is thread-specific. Instead, `thread_initialize` is called at the initialization of each sender thread and is provided with access to the buffer that will be used for constructing probe packets along with global source and destination values. This callback should be used to construct the host agnostic packet structure such that only specific values (e.g. destination host and checksum) need to be be updated for each host. For example, the Ethernet header will not change between headers (minus checksum which is calculated in hardware by the NIC) and therefore can be defined ahead of time in order to reduce overhead at scan time. + +The `make_packet` callback is called for each host that is scanned to allow the **probe module** to update host specific values and is provided with IP address values, an opaque validation string, and probe number (shown below). The probe module is responsible for placing as much of the verification string into the probe, in such a way that when a valid response is returned by a server, the probe module can verify that it is present. For example, for a TCP SYN scan, the tcp_synscan probe module can use the TCP source port and sequence number to store the validation string. Response packets (SYN+ACKs) will contain the expected values in the destination port and acknowledgement number. + + int make_packet( + void *packetbuf, // packet buffer + ipaddr_n_t src_ip, // source IP in network-order + ipaddr_n_t dst_ip, // destination IP in network-order + uint32_t *validation, // validation string to place in probe + int probe_num // if sending multiple probes per host, + // this will be which probe number for this + // host we are currently sending + ); + +Scan modules must also define `pcap_filter`, `validate_packet`, and `process_packet`. Only packets that match the PCAP filter will be considered by the scanner. For example, in the case of a TCP SYN scan, we only want to investigate TCP SYN/ACK or TCP RST packets and would utilize a filter similar to `tcp && tcp[13] & 4 != 0 || tcp[13] == 18`. The `validate_packet` function will be called for every packet that fulfills this PCAP filter. If the validation returns non-zero, the `process_packet` function will be called, and will populate a fieldset using fields defined in `fields` with data from the packet. For example, the following code processes a packet for the TCP synscan probe module. + + void synscan_process_packet(const u_char *packet, uint32_t len, fieldset_t *fs) + { + struct iphdr *ip_hdr = (struct iphdr *)&packet[sizeof(struct ethhdr)]; + struct tcphdr *tcp = (struct tcphdr*)((char *)ip_hdr + + (sizeof(struct iphdr))); + + fs_add_uint64(fs, "sport", (uint64_t) ntohs(tcp->source)); + fs_add_uint64(fs, "dport", (uint64_t) ntohs(tcp->dest)); + fs_add_uint64(fs, "seqnum", (uint64_t) ntohl(tcp->seq)); + fs_add_uint64(fs, "acknum", (uint64_t) ntohl(tcp->ack_seq)); + fs_add_uint64(fs, "window", (uint64_t) ntohs(tcp->window)); + + if (tcp->rst) { // RST packet + fs_add_string(fs, "classification", (char*) "rst", 0); + fs_add_uint64(fs, "success", 0); + } else { // SYNACK packet + fs_add_string(fs, "classification", (char*) "synack", 0); + fs_add_uint64(fs, "success", 1); + } + } + +-------------------------------------------------------------------------------- + +via: https://zmap.io/documentation.html + +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[1]:https://github.com/ewust/forge_socket/ +[2]:https://github.com/zmap/zmap/blob/v1.0.0/src/output_modules/output_modules.c +[3]:https://github.com/zmap/zmap/blob/master/src/output_modules/output_modules.h +[4]:https://github.com/zmap/zmap/blob/master/src/output_modules/module_csv.c \ No newline at end of file From 761fa63e61f5b66f6eb16d612abb7e083047adef Mon Sep 17 00:00:00 2001 From: carolinewuyan <309866211@qq.com> Date: Wed, 1 Apr 2015 14:49:26 +0800 Subject: [PATCH 703/725] =?UTF-8?q?=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20150310 4 Linux Based Mini PC You Can Buy In 2015.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/share => published}/20150310 4 Linux Based Mini PC You Can Buy In 2015.md (100%) diff --git a/translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md b/published/20150310 4 Linux Based Mini PC You Can Buy In 2015.md similarity index 100% rename from translated/share/20150310 4 Linux Based Mini PC You Can Buy In 2015.md rename to published/20150310 4 Linux Based Mini PC You Can Buy In 2015.md From 369899a2cb4e0d81fe776c70f029d5d1990ca3cc Mon Sep 17 00:00:00 2001 From: LouisWei Date: Wed, 1 Apr 2015 21:28:22 +0800 Subject: [PATCH 704/725] translating wi-cuckoo --- ... Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md b/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md index b34cb616d8..68db83d812 100644 --- a/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md +++ b/sources/tech/20150331 Its Now Worth Try Installing PHP 7.0 on CentOS 7.x or Fedora 21.md @@ -1,3 +1,4 @@ +translating wi-cuckoo LLAP Its Now Worth Try Installing PHP 7.0 on CentOS 7.x / Fedora 21 ================================================================================ PHP is a well known general purpose, server side web scripting language. A vast majority of online websites are coded in this language. PHP is ever evolving, feature rich, easy to use and well organized scripting language. Currently PHP development team is working on next major release of PHP, named PHP 7. The current production PHP version is PHP 5.6, as you might already know that PHP 6 was aborted in the past, the supporters of PHP 7 did not want the next important PHP version to be confused with that branch that was killed long time in the past. So it has been decided to name the next major release of PHP as PHP 7 instead of 6. PHP 7.0 is supposed to be released in November this year. @@ -320,4 +321,4 @@ via: http://linoxide.com/linux-how-to/install-php-7-centos-7-fedora-21/ 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 [a]:http://linoxide.com/author/arunrz/ -[1]:http://blog.famillecollet.com/post/2015/03/25/PHP-7.0-as-Software-Collection \ No newline at end of file +[1]:http://blog.famillecollet.com/post/2015/03/25/PHP-7.0-as-Software-Collection From 31895a9db8cadde210bc041accf59d0d1e51e148 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 1 Apr 2015 23:00:19 +0800 Subject: [PATCH 705/725] PUB:20150211 Simple Steps Migration From MySQL To MariaDB On Linux @martin2011qi --- ...igration From MySQL To MariaDB On Linux.md | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) rename {translated/tech => published}/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md (84%) diff --git a/translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md b/published/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md similarity index 84% rename from translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md rename to published/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md index e21084faeb..a778240683 100644 --- a/translated/tech/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md +++ b/published/20150211 Simple Steps Migration From MySQL To MariaDB On Linux.md @@ -15,13 +15,13 @@ MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。它 现在,让我们迁移到MariaDB吧! -**以测试为目的**让我们创建一个叫**linoxidedb**的示例数据库。 +让我们创建一个叫**linoxidedb**的**用于测试的**示例数据库。 使用以下命令用root账户登陆MySQL: $ mysql -u root -p -输入mysql root用户的密码后,你将进入**mysql的命令行** +输入mysql 的 root 用户密码后,你将进入**mysql的命令行** **创建测试数据库:** @@ -54,7 +54,8 @@ MariaDB是MySQL社区开发的分支,也是一个增强型的替代品。它 $ mysqldump: Error: Binlogging on server not active ![](http://blog.linoxide.com/wp-content/uploads/2015/01/mysqldump-error.png) -mysqldump error + +*mysqldump error* 为了修复这个错误,我们需要对**my.cnf**文件做一些小改动。 @@ -68,7 +69,7 @@ mysqldump error ![configuring my.cnf](http://blog.linoxide.com/wp-content/uploads/2015/01/configuring-my.cnf_.png) -好了在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启: +好了,在保存并关闭文件后,我们需要重启一下mysql服务。运行以下命令重启: $ sudo /etc/init.d/mysql restart @@ -77,17 +78,18 @@ mysqldump error $ mysqldump --all-databases --user=root --password --master-data > backupdatabase.sql ![](http://blog.linoxide.com/wp-content/uploads/2015/01/crearing-bakup-file.png) -dumping databases + +*dumping databases* 上面的命令将会备份所有的数据库,把它们存储在当前目录下的**backupdatabase.sql**文件中。 ### 2. 卸载MySQL ### -首先,我们得把**my.cnt文件挪到安全的地方去**。 +首先,我们得把**my.cnf文件挪到安全的地方去**。 -**注**:my.cnf文件将不会在你卸载MySQL包的时候被删除,我们这样做只是以防万一。在MariaDB安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。 +**注**:在你卸载MySQL包的时候不会自动删除my.cnf文件,我们这样做只是以防万一。在MariaDB安装时,它会询问我们是保持现存的my.cnf文件,还是使用包中自带的版本(即新my.cnf文件)。 -在shell或终端中输入如下命令来备份my.cnt文件: +在shell或终端中输入如下命令来备份my.cnf文件: $ sudo cp /etc/mysql/my.cnf my.cnf.bak @@ -111,7 +113,7 @@ dumping databases ![adding mariadb repo](http://blog.linoxide.com/wp-content/uploads/2015/01/adding-repo-mariadb.png) -键值导入并且添加完仓库后你就可以用以下命令安装MariaDB了: +键值导入并且添加完仓库后,你就可以用以下命令安装MariaDB了: $ sudo apt-get update $ sudo apt-get install mariadb-server @@ -120,7 +122,7 @@ dumping databases ![my.conf configuration prompt](http://blog.linoxide.com/wp-content/uploads/2015/01/my.conf-configuration-prompt.png) -我们应该还没忘记在MariaDB安装时,它会问你是使用现有的my.cnf文件,还是包中自带的版本。你可以使用以前的my.cnf也可以用包中自带的。即使你想直接使用新的my.cnf文件,你依然可以晚点将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方那个去了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考[MariaDB官方仓库][2]。 +我们应该还没忘记在MariaDB安装时,它会问你是使用现有的my.cnf文件,还是包中自带的版本。你可以使用以前的my.cnf也可以用包中自带的。即使你想直接使用新的my.cnf文件,你依然可以晚点时候将以前的备份内容还原进去(别忘了我们已经将它复制到安全的地方了)。所以,我们直接选择了默认的选项“N”。如果需要安装其他版本,请参考[MariaDB官方仓库][2]。 ### 4. 恢复配置文件 ### @@ -136,7 +138,7 @@ dumping databases 就这样,我们已成功将之前的数据库导入了进来。 -来,让我们登陆一下mysql命令行,检查一下数据库是否真的已经导入了: +来,让我们登录一下mysql命令行,检查一下数据库是否真的已经导入了: $ mysql -u root -p @@ -152,15 +154,15 @@ dumping databases ### 总结 ### -最后,我们已经成功地从MySQL迁移到了MariaDB数据库管理系统。MariaDB比MySQL好,虽然在性能方面MySQL还是比它更快,但是MariaDB的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下MySQL还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望那你能喜欢MariaDB。 +最后,我们已经成功地从MySQL迁移到了MariaDB数据库管理系统。MariaDB比MySQL好,虽然在性能方面MySQL还是比它更快,但是MariaDB的优点在于它额外的特性与支持的许可证。这能够确保它自由开源(FOSS),并永久自由开源,相比之下MySQL还有许多额外的插件,有些不能自由使用代码、有些没有公开的开发进程、有些在不久的将来会变的不再自由开源。如果你有任何的问题、评论、反馈给我们,不要犹豫直接在评论区留下你的看法。谢谢观看本教程,希望你能喜欢MariaDB。 -------------------------------------------------------------------------------- via: http://linoxide.com/linux-how-to/migrate-mysql-mariadb-linux/ 作者:[Arun Pyasi][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[martin2011qi](https://github.com/martin2011qi) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 5de782162c34961013af7b9c1d449710fc74f9d3 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 1 Apr 2015 23:04:44 +0800 Subject: [PATCH 706/725] PUB:20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip] @geekpi --- ... Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename {translated/tech => published}/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md (71%) diff --git a/translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md b/published/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md similarity index 71% rename from translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md rename to published/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md index 17349f2330..dcc6cb31c4 100644 --- a/translated/tech/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md +++ b/published/20150209 Fix Cannot Empty Trash In Ubuntu 14.04 [Quick Tip].md @@ -1,10 +1,10 @@ -在Ubuntu 14.04 中修复无法修复回收站[快速提示] +在Ubuntu 14.04 中修复无法清空回收站的问题 ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/02/empty-the-trash.jpg) ### 问题 ### -**无法在Ubuntu 14.04中清空回收站的问题**。我右键回收站图标并选择清空回收站,就像我一直做的那样。我看到进度条显示删除文件中过了一段时间。但是它停止了,并且Nautilus文件管理也停止了。我不得不在终端中停止了它。 +**我遇到了无法在Ubuntu 14.04中清空回收站的问题**。我右键回收站图标并选择清空回收站,就像我一直做的那样。我看到进度条显示删除文件中过了一段时间。但是它停止了,并且Nautilus文件管理也停止了。我不得不在终端中停止了它。 但是这很痛苦因为文件还在垃圾箱中。并且我反复尝试清空后窗口都冻结了。 @@ -18,7 +18,7 @@ 这里注意你的输入。你使用超级管理员权限来运行删除命令。我相信你不会删除其他文件或者目录。 -上面的命令会删除回收站目录下的所有文件。换句话说,这是用命令清空垃圾箱。使用玩上面的命令后,你会看到垃圾箱已经清空了。如果你删除了所有文件,你不应该在看到Nautilus崩溃的问题了。 +上面的命令会删除回收站目录下的所有文件。换句话说,这是用命令清空垃圾箱。使用完上面的命令后,你会看到垃圾箱已经清空了。如果你清空了所有文件,你不应该在看到Nautilus崩溃的问题了。 ### 对你有用么? ### @@ -30,7 +30,7 @@ via: http://itsfoss.com/fix-empty-trash-ubuntu/ 作者:[Abhishek][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 3adce8532778890519ebac62723af7479c424329 Mon Sep 17 00:00:00 2001 From: wxy Date: Wed, 1 Apr 2015 23:17:34 +0800 Subject: [PATCH 707/725] PUB:20150306 Nmap--Not Just for Evil @theo-l --- published/20150306 Nmap--Not Just for Evil.md | 41 +++++++++++++++++++ .../tech/20150306 Nmap--Not Just for Evil.md | 41 ------------------- 2 files changed, 41 insertions(+), 41 deletions(-) create mode 100644 published/20150306 Nmap--Not Just for Evil.md delete mode 100644 translated/tech/20150306 Nmap--Not Just for Evil.md diff --git a/published/20150306 Nmap--Not Just for Evil.md b/published/20150306 Nmap--Not Just for Evil.md new file mode 100644 index 0000000000..e84ed9a1a7 --- /dev/null +++ b/published/20150306 Nmap--Not Just for Evil.md @@ -0,0 +1,41 @@ +Nmap--不是只能用于做坏事! +================================================================================ +如果SSH是系统管理员世界的"瑞士军刀"的话,那么Nmap就是一盒炸药。炸药很容易被误用然后将你的双脚崩掉,但是也是一个很有威力的工具,能够胜任一些看似无法完成的任务。 + +大多数人想到Nmap时,他们想到的是扫描服务器,查找开放端口来实施攻击。然而,在过去的这些年中,这样的超能力在当你管理服务器或计算机遇到问题时也是非常的有用。无论是你试图找出在你的网络上有哪些类型的服务器使用了指定的IP地址,或者尝试锁定一个新的NAS设备,以及扫描网络等,都会非常有用。 + +下图显示了我的QNAP NAS的网络扫描结果。我使用该设备的唯一目的是为了NFS和SMB文件共享,但是你可以看到,它包含了一大堆大开大敞的端口。如果没有Nmap,很难发现机器到底在运行着什么玩意儿。 + +![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11825nmapf1.jpg) + +*网络扫描* + +另外一个可能你没想到的用途是用它来扫描一个网络。你甚至根本不需要root的访问权限,而且你也可以非常容易地来指定你想要扫描的网络地址块,例如输入: + + nmap 192.168.1.0/24 + +上述命令会扫描我的局域网中全部的254个可用的IP地址,让我可以知道那个是可以Ping的,以及那些端口是开放的。如果你刚刚在网络上添加一个新的硬件,但是不知道它通过DHCP获取的IP地址是什么,那么此时Nmap就是无价之宝。例如,上述命令在我的网络中揭示了这个问题: + + Nmap scan report for TIVO-8480001903CCDDB.brainofshawn.com (192.168.1.220) + Host is up (0.0083s latency). + Not shown: 995 filtered ports + PORT STATE SERVICE + 80/tcp open http + 443/tcp open https + 2190/tcp open tivoconnect + 2191/tcp open tvbus + 9080/tcp closed glrpc + +它不仅显示了新的Tivo 设备,而且还告诉我那些端口是开放的。由于它的可靠性、可用性以及“黑边帽子”的能力,Nmap获得了本月的 <<编辑推荐>>奖。这不是一个新的程序,但是如果你是一个linux用户的话,你应该玩玩它。 + +-------------------------------------------------------------------------------- + +via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil + +作者:[Shawn Powers][a] +译者:[theo-l](https://github.com/theo-l) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.linuxjournal.com/users/shawn-powers diff --git a/translated/tech/20150306 Nmap--Not Just for Evil.md b/translated/tech/20150306 Nmap--Not Just for Evil.md deleted file mode 100644 index ba923d178d..0000000000 --- a/translated/tech/20150306 Nmap--Not Just for Evil.md +++ /dev/null @@ -1,41 +0,0 @@ -Nmap--不只是邪恶. -================================================================================ -如果SSH是系统管理员世界的"瑞士军刀"的话,那么Nmap就是一盒炸药. 炸药很容易被误用然后将你的双脚崩掉,但是也是一个很有威力的工具,能够胜任一些看似无法完成的任务. - -大多数人想到Nmap时,他们想到的是扫描服务器,查找开放端口来实施工具. 然而,在过去的这些年中,同样的超能力在当你管理服务器或计算机遇到问题时变得难以置信的有用.无论是你试图找出在你的网络上有哪些类型的服务器使用了指定的IP地址,或者尝试锁定一个新的NAS设备,以及扫描网络等,都会非常有用. - -图1显示了我的QNAP NAS的网络扫描.我使用该单元的唯一目的是为了NFS和SMB文件共享,但是你可以看到,它包含了一大堆大开大敞的端口.如果没有Nmap,很难发现机器到底在运行着什么玩意儿. - -![](http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/11825nmapf1.jpg) - -### 图1 网络扫描 ### - -另外一个无法想象的用处是用它来扫描一个网络.你甚至根本不需要root的访问权限,而且你也可以非常容易地来指定你想要扫描的网络块,例如,输入: - - nmap 192.168.1.0/24 - -上述命令会扫描我局部网络中全部的254个可用的IP地址,让我可以知道那个使可以Ping的,以及那些端口时开放的.如果你刚刚插入一片新的硬件,但是不知道它通过DHCP获取的IP地址,那么此时Nmap就是无价之宝. 例如,上述命令在我的网络中揭示了这个问题. - - Nmap scan report for TIVO-8480001903CCDDB.brainofshawn.com (192.168.1.220) - Host is up (0.0083s latency). - Not shown: 995 filtered ports - PORT STATE SERVICE - 80/tcp open http - 443/tcp open https - 2190/tcp open tivoconnect - 2191/tcp open tvbus - 9080/tcp closed glrpc - -它不仅显示了新的Tivo单元,而且还告诉我那些端口是开放的. 由于它的可靠性,可用性以及黑色边框帽子的能力,Nmap获得了本月的 <<编辑推荐>>奖. 这不是一个新的程序,但是如果你是一个linux用户的话,你应该玩玩它. - --------------------------------------------------------------------------------- - -via: http://www.linuxjournal.com/content/nmap%E2%80%94not-just-evil - -作者:[Shawn Powers][a] -译者:[theo-l](https://github.com/theo-l) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://www.linuxjournal.com/users/shawn-powers From 4ca83d4b088d1ed760929759c39c8db62c23d196 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:28:53 +0800 Subject: [PATCH 708/725] translated --- ...inal Commands That Will Rock Your World.md | 261 ++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md diff --git a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md new file mode 100644 index 0000000000..fab733bf7f --- /dev/null +++ b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -0,0 +1,261 @@ +11个Linux终端命令,让你的世界摇滚起来 +================================================================================ +我已经用了十年的Linux了,通过今天这篇文章我将向大家展示一系列的,我希望一开始就有人教导而不是曾在我成长道路上绊住我的Linux命令、工具和花招。 + +![Linux Keyboard Shortcuts.](http://f.tqn.com/y/linux/1/L/m/J/1/keyboardshortcuts.png) +Linux的快捷键。 + +### 1. 命令行日常系快捷键 ### + +如下的快捷方式非常有用,能够极大的提升你的工作效率: + +- CTRL + U - 剪切光标前的内容 +- CTRL + K - 剪切光标至行末的内容 +- CTRL + Y - 粘贴 +- CTRL + E - 移动光标到行末 +- CTRL + A - 移动光标到行首 +- ALT + F - 跳向下一个空格 +- ALT + B - 跳回上一个空格 +- ALT + Backspace - 删除前一个字 +- CTRL + W - 剪切光标后一个字 +- Shift + Insert - 向终端内粘贴文本 + +那么为了让上诉内容更易理解来看下面的这行命令。 + + sudo apt-get intall programname + +如你所见,命令中存在拼写错误,为了正常执行需要把“intall”替换成“install”。想象现在光标正在行末,我们有很多的方法将她退回单词install并替换它。我可以按两次ALT+B这样光标就会在如下的位置(这里用^代替光标的位置)。 + + sudo apt-get^intall programname + +现在你可以按两下方向键并将“s”插入到install中去了。 + +如果你想将浏览器中的文本复制到终端,可以使用快捷键"shift + insert"。 + +![](http://f.tqn.com/y/linux/1/L/n/J/1/sudotricks2.png) + +### 2. SUDO !! ### + +这个命令如果你还不知道我觉得你应该好好感谢我,因为如果你不知道那每次你在输入长串命令后看到“permission denied”后一定会痛恼不堪。 + +- sudo !! + +如何使用sudo !!?很简单。试想你刚输入了如下命令: + + apt-get install ranger + +一定会出现"Permission denied"除非你的登录了足够高权限的账户。 + +sudo !!就会用sudo的形式运行上一条命令。所以上一条命令可以看成是这样: + + sudo apt-get install ranger + +如果你不知道什么是sudo[戳这里][1]。 + +![Pause Terminal Applications.](http://f.tqn.com/y/linux/1/L/o/J/1/pauseapps.png) +暂停终端运行的应用程序。 + +### 3. 暂停并在后台运行命令 ### + +我曾经写过一篇如何在终端后台运行命令的指南。 + +- CTRL + Z - 暂停应用程序 +- fg - 重新将程序唤到前台 + +如何使用这个技巧呢? + +试想你正用nano编辑一个文件: + + sudo nano abc.txt + +文件编辑到一半你意识到你需要马上在终端输入些命令,但是nano在前台运行让你不能输入。你一定认为唯一的方法就是保存文件,推出nano,运行命令以后在重新打开nano。 + +其实你只要按CTRL + Z前台的命令就会暂停,画面就切回到命令行了。然后你就能运行你想要运行命令,等命令运行完后在终端窗口输入“fg”就可以回到先前暂停的任务。 + +有一个尝试非常有趣就是用nano打开文件,输入一些东西然后暂停会话。再用nano打开另一个文件,输入一些什么后再暂停会话。如果你输入“fg”你将回到第二个用nano打开的文件。只有退出nano再输入“fg”,你才会回到第一个用nano打开的文件。 + +![nohup.](http://f.tqn.com/y/linux/1/L/p/J/1/nohup3.png) +nohup. + +### 4. 使用nohup在登出SSH会话后仍运行命令 ### + +如果你用ssh登录别的机器时,[nohup命令]真的非常有用。 + +那么怎么使用nohup呢? + +想象一下你使用ssh远程登录到另一台电脑上,你运行了一条非常耗时的命令然后退出了ssh会话,不过命令仍在执行。而nohup可以将这一场景变成现实。 + +举个例子以测试为目的我用[树莓派][3]来下载发行版。 + +我绝对不会给我的树莓派外接显示器、键盘或鼠标。 + +一般我总是用[SSH] [4]从笔记本电脑连接到树莓派。如果我在不用nohup的情况下使用树莓派下载大型文件,那我就必须等待到下载完成后才能登出ssh会话关掉笔记本。如果是这样那我为什么要使用树莓派下文件呢? + +使用nohup的方法也很简单,只需如下例中在nohup后输入要执行的命令即可: + + nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso & + +![Schedule tasks with at.](http://f.tqn.com/y/linux/1/L/q/J/1/at.png) +At管理任务日程 + +### 5. ‘在’特定的时间运行Linux命令 ### + +‘nohup’命令在你用SSH连接到服务器,并在上面保持执行SSH登出前任务的时候十分有用。 + +想一下如果你需要在特定的时间执行同一个命令,这种情况该怎么办呢? + +命令‘at’就能妥善解决这一情况。以下是‘at’使用示例。 + + at 10:38 PM Fri + at> cowsay 'hello' + at> CTRL + D + +上面的命令能在周五下午10时38分运行程序[cowsay] [5]。 + +使用的语法就是‘at’后追加日期时间。 + +当at>提示符出现后就可以输入你想在那个时间运行的命令了。 + +CTRL + D返回终端。 + +还有许多日期和时间的格式都是值得的你好好翻一翻‘at’的man手册来找到更多的使用方式。 + +![](http://f.tqn.com/y/linux/1/L/l/J/1/manmost.png) + +### 6. Man手册 ### + +Man手册会为你列出命令和参数的使用大纲,教你如何使用她们。 + +Man手册看起开沉闷呆板。(我思忖她们也不是被设计来娱乐我们的)。 + +不过这不代表你不能做些什么来使她们变得性感点。 + + export PAGER=most + +你需要 ‘most’;她会使你的你的man手册的色彩更加绚丽。 + +你可以用一下命令给man手册设定指定的行长: + + export MANWIDTH=80 + +最后,如果你有浏览器,你可以使用-H在默认浏览器中打开任意的man页。 + + man -H + +注意啦,以上的命令只有在你将默认的浏览器已经设置到环境变量$BROWSER中了之后才效果哟。 + +![View Processes With htop.](http://f.tqn.com/y/linux/1/L/r/J/1/nohup2.png) +使用htop查看进程。 + +### 7. 使用htop查看和管理进程 ### + +你用哪个命令找出电脑上正在运行的进程的呢?我敢打赌是‘[ps][6]’并在其后加不同的参数来得到你所想要的不同输出。 + +安装‘[htop][7]’吧!绝对让你相见恨晚。 + +htop在终端中将进程以列表的方式呈现,有点类似于Windows中的任务管理器。 + +你可以使用功能键的组合来切换排列的方式和展示出来的项。你也可以在htop中直接杀死进程。 + +在终端中简单的输入htop即可运行。 + + htop + +![Command Line File Manager - Ranger.](http://f.tqn.com/y/linux/1/L/s/J/1/ranger.png) +命令行文件管理 - Ranger. + +### 8. 使用ranger浏览文件系统 ### + +如果说htop是命令行进程控制的好帮手那么[ranger][8]就是命令行浏览文件系统的好帮手。 + +你在用之前可能需要先安装,不过一旦安装了以后就可以在命令行输入以下命令启动她: + + ranger + +在命令行窗口中ranger和一些别的文件管理器很像,但是她是左右结构的比起上下的来意味着你按左方向键你将前进到上一个文件夹结构而右方向键则会切换到下一个。 + +在使用前ranger的man手册还是值得一读的,这样你就可以用快捷键操作ranger了。 + +![Cancel Linux Shutdown.](http://f.tqn.com/y/linux/1/L/t/J/1/shutdown.png) +Linux取消关机。 + +### 9. 取消关机 ### + +无论是在命令行还是图形用户界面[关机][9]后发现自己不是真的想要关机。 + + shutdown -c + +需要注意的是,如果关机已经开始则有可能来不及停止关机。 + +以下是另一个可以尝试命令: + +- [pkill][10] shutdown + +![Kill Hung Processes With XKill.](http://f.tqn.com/y/linux/1/L/u/J/1/killhungprocesses.png) +使用XKill杀死挂起进程。 + +### 10. 杀死挂起进程的简单方法 ### + +想象一下,你正在运行的应用程序不明原因的僵死了。 + +你可以使用‘ps -ef’来找到该进程后杀掉或者使用‘htop’。 + +有一个更快、更容易的命令叫做[xkill][11]。 + +简单的在终端中输入以下命令并在窗口中点击你想杀死的应用程序。 + + xkill + +那如果整个系统挂掉了怎么办呢? + +按住键盘上的‘alt’和‘sysrq’稍待片刻输入如下所示: +Hold down the 'alt' and 'sysrq' keys on your keyboard and whilst they are held down type the following slowly: + +- [REISUB][12] + +这样不按关机键也能重启你的计算机。 + +![youtube-dl.](http://f.tqn.com/y/linux/1/L/v/J/1/youtubedl2.png) +youtube-dl. + +### 11. 下载Youtube视频 ### + +一般来说我们大多数人都喜欢看Youtube的视频,也会通过钟爱的播放器播放Youtube的流。 + +如果你需要离线一段时间(比如:从苏格兰南部坐飞机到英格兰南部旅游的这段时间)那么你可能希望下载一些视频到存储设备中,到闲暇时观看。 + +你所要做的就是从包管理器中安装youtube-dl。 + +你可以用以下命令使用youtube-dl: + + youtube-dl url-to-video + +你能在Youtubu视频页面点击分享链接得到视频的url。只要简单的复制链接在粘帖到命令行就行了(要用shift + insert快捷键哟)。 + +### 总结 ### + +希望你在这篇文章中得到帮助,并且在这11条中找到至少一条让你惊叹“原来如此”的技巧。 + +-------------------------------------------------------------------------------- + +via: http://linux.about.com/od/commands/tp/11-Linux-Terminal-Commands-That-Will-Rock-Your-World.htm + +作者:[Gary Newell][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://linux.about.com/bio/Gary-Newell-132058.htm +[1]:http://linux.about.com/cs/linux101/g/sudo.htm +[2]:http://linux.about.com/library/cmd/blcmdl1_nohup.htm +[3]:http://linux.about.com/od/mobiledevicesother/a/Raspberry-Pi-Computer-Running-Linux.htm +[4]:http://linux.about.com/od/commands/l/blcmdl1_ssh.htm +[5]:http://linux.about.com/cs/linux101/g/cowsay.htm +[6]:http://linux.about.com/od/commands/l/blcmdl1_ps.htm +[7]:http://www.linux.com/community/blogs/133-general-linux/745323-5-commands-to-check-memory-usage-on-linux +[8]:http://ranger.nongnu.org/ +[9]:http://linux.about.com/od/commands/l/blcmdl8_shutdow.htm +[10]:http://linux.about.com/library/cmd/blcmdl1_pkill.htm +[11]:http://linux.about.com/od/funnymanpages/a/funman_xkill.htm +[12]:http://blog.kember.net/articles/reisub-the-gentle-linux-restart/ From 97dda6e589129955531b62ef0cab17f1ded2f4d6 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:30:35 +0800 Subject: [PATCH 709/725] Update 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ...0318 11 Linux Terminal Commands That Will Rock Your World.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md index fab733bf7f..df309bb4cb 100644 --- a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -2,7 +2,7 @@ ================================================================================ 我已经用了十年的Linux了,通过今天这篇文章我将向大家展示一系列的,我希望一开始就有人教导而不是曾在我成长道路上绊住我的Linux命令、工具和花招。 -![Linux Keyboard Shortcuts.](http://f.tqn.com/y/linux/1/L/m/J/1/keyboardshortcuts.png) +![Linux Keyboard Shortcuts.](http://f.tqn.com/y/linux/1/L/m/J/1/keyboardshortcuts.png) Linux的快捷键。 ### 1. 命令行日常系快捷键 ### From d09e8814313186f30bc6933ec5bf045df8c881a4 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:37:25 +0800 Subject: [PATCH 710/725] Update 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ...8 11 Linux Terminal Commands That Will Rock Your World.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md index df309bb4cb..73c919b6cc 100644 --- a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -208,12 +208,11 @@ Linux取消关机。 那如果整个系统挂掉了怎么办呢? -按住键盘上的‘alt’和‘sysrq’稍待片刻输入如下所示: -Hold down the 'alt' and 'sysrq' keys on your keyboard and whilst they are held down type the following slowly: +按住键盘上的‘alt’和‘sysrq’同时输入: - [REISUB][12] -这样不按关机键也能重启你的计算机。 +这样不按电源键你的计算机也能重启了。 ![youtube-dl.](http://f.tqn.com/y/linux/1/L/v/J/1/youtubedl2.png) youtube-dl. From acbb7e6b8bc14e247c766e5de86fb6f5d2fa99d5 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:38:18 +0800 Subject: [PATCH 711/725] Update 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ...0318 11 Linux Terminal Commands That Will Rock Your World.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md index 73c919b6cc..b2d12d638d 100644 --- a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -233,7 +233,7 @@ youtube-dl. ### 总结 ### -希望你在这篇文章中得到帮助,并且在这11条中找到至少一条让你惊叹“原来如此”的技巧。 +希望你在这篇文章中得到帮助,并且在这11条中找到至少一条让你惊叹“原来可以这样”的技巧。 -------------------------------------------------------------------------------- From 99c586967be6eb4954fb6752101fbf22938f8ef6 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:38:48 +0800 Subject: [PATCH 712/725] Delete 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ...inal Commands That Will Rock Your World.md | 268 ------------------ 1 file changed, 268 deletions(-) delete mode 100644 sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md diff --git a/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md deleted file mode 100644 index 0e3af6907d..0000000000 --- a/sources/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ /dev/null @@ -1,268 +0,0 @@ -translating by martin. - -11 Linux Terminal Commands That Will Rock Your World -================================================================================ -I have been using Linux for about 10 years and what I am going to show you in this article is a list of Linux commands, tools and clever little tricks that I wish somebody had shown me from the outset instead of stumbling upon them as I went along. - -![Linux Keyboard Shortcuts.](http://f.tqn.com/y/linux/1/L/m/J/1/keyboardshortcuts.png) -Linux Keyboard Shortcuts. - -### 1. Useful Command Line Keyboard Shortcuts ### - -The following keyboard shortcuts are incredibly useful and will save you loads of time: - -- CTRL + U - Cuts text up until the cursor. -- CTRL + K - Cuts text from the cursor until the end of the line -- CTRL + Y - Pastes text -- CTRL + E - Move cursor to end of line -- CTRL + A - Move cursor to the beginning of the line -- ALT + F - Jump forward to next space -- ALT + B - Skip back to previous space -- ALT + Backspace - Delete previous word -- CTRL + W - Cut word behind cursor -- Shift + Insert - Pastes text into terminal - -Just so that the commands above make sense look at the next line of text. - - sudo apt-get intall programname - -As you can see I have a spelling error and for the command to work I would need to change "intall" to "install". - -Imagine the cursor is at the end of the line. There are various ways to get back to the word install to change it. - -I could press ALT + B twice which would put the cursor in the following position (denoted by the ^ symbol): - - sudo apt-get^intall programname - -Now you could press the cursor key and insert the ''s' into install. - -Another useful command is "shift + insert" especially If you need to copy text from a browser into the terminal. - -![](http://f.tqn.com/y/linux/1/L/n/J/1/sudotricks2.png) - -### 2. SUDO !! ### - -You are going to really thank me for the next command if you don't already know it because until you know this exists you curse yourself every time you enter a command and the words "permission denied" appear. - -- sudo !! - -How do you use sudo !!? Simply. Imagine you have entered the following command: - - apt-get install ranger - -The words "Permission denied" will appear unless you are logged in with elevated privileges. - -sudo !! runs the previous command as sudo. So the previous command now becomes: - - sudo apt-get install ranger - -If you don't know what sudo is [start here][1]. - -![Pause Terminal Applications.](http://f.tqn.com/y/linux/1/L/o/J/1/pauseapps.png) -Pause Terminal Applications. - -### 3. Pausing Commands And Running Commands In The Background ### - -I have already written a guide showing how to run terminal commands in the background. - -- CTRL + Z - Pauses an application -- fg - Returns you to the application - -So what is this tip about? - -Imagine you have opened a file in nano as follows: - - sudo nano abc.txt - -Halfway through typing text into the file you realise that you quickly want to type another command into the terminal but you can't because you opened nano in foreground mode. - -You may think your only option is to save the file, exit nano, run the command and then re-open nano. - -All you have to do is press CTRL + Z and the foreground application will pause and you will be returned to the command line. You can then run any command you like and when you have finished return to your previously paused session by entering "fg" into the terminal window and pressing return. - -An interesting thing to try out is to open a file in nano, enter some text and pause the session. Now open another file in nano, enter some text and pause the session. If you now enter "fg" you return to the second file you opened in nano. If you exit nano and enter "fg" again you return to the first file you opened within nano. - -![nohup.](http://f.tqn.com/y/linux/1/L/p/J/1/nohup3.png) -nohup. - -### 4. Use nohup To Run Commands After You Log Out Of An SSH Session ### - -The [nohup command][2] is really useful if you use the ssh command to log onto other machines. - -So what does nohup do? - -Imagine you are logged on to another computer remotely using ssh and you want to run a command that takes a long time and then exit the ssh session but leave the command running even though you are no longer connected then nohup lets you do just that. - -For instance I use my [Raspberry PI][3] to download distributions for review purposes. - -I never have my Raspberry PI connected to a display nor do I have a keyboard and mouse connected to it. - -I always connect to the Raspberry PI via [ssh][4] from a laptop. If I started downloading a large file on the Raspberry PI without using the nohup command then I would have to wait for the download to finish before logging off the ssh session and before shutting down the laptop. If I did this then I may as well have not used the Raspberry PI to download the file at all. - -To use nohup all I have to type is nohup followed by the command as follows: - - nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso & - -![Schedule tasks with at.](http://f.tqn.com/y/linux/1/L/q/J/1/at.png) -Schedule tasks with at. - -### 5. Running A Linux Command 'AT' A Specific Time ### - -The 'nohup' command is good if you are connected to an SSH server and you want the command to remain running after logging out of the SSH session. - -Imagine you want to run that same command at a specific point in time. - -The 'at' command allows you to do just that. 'at' can be used as follows. - - at 10:38 PM Fri - at> cowsay 'hello' - at> CTRL + D - -The above command will run the program [cowsay][5] at 10:38 PM on Friday evening. - -The syntax is 'at' followed by the date and time to run. - -When the at> prompt appears enter the command you want to run at the specified time. - -The CTRL + D returns you to the cursor. - -There are lots of different date and time formats and it is worth checking the man pages for more ways to use 'at'. - -![](http://f.tqn.com/y/linux/1/L/l/J/1/manmost.png) - -### 6. Man Pages ### - -Man pages give you an outline of what commands are supposed to do and the switches that can be used with them. - -The man pages are kind of dull on their own. (I guess they weren't designed to excite us). - -You can however do things to make your usage of man more appealing. - - export PAGER=most - -You will need to install 'most; for this to work but when you do it makes your man pages more colourful. - -You can limit the width of the man page to a certain number of columns using the following command: - - export MANWIDTH=80 - -Finally, if you have a browser available you can open any man page in the default browser by using the -H switch as follows: - - man -H - -Note this only works if you have a default browser set up within the $BROWSER environment variable. - -![View Processes With htop.](http://f.tqn.com/y/linux/1/L/r/J/1/nohup2.png) -View Processes With htop. - -### 7. Use htop To View And Manage Processes ### - -Which command do you currently use to find out which processes are running on your computer? My bet is that you are using '[ps][6]' and that you are using various switches to get the output you desire. - -Install '[htop][7]'. It is definitely a tool you will wish that you installed earlier. - -htop provides a list of all running processes in the terminal much like the file manager in Windows. - -You can use a mixture of function keys to change the sort order and the columns that are displayed. You can also kill processes from within htop. - -To run htop simply type the following into the terminal window: - - htop - -![Command Line File Manager - Ranger.](http://f.tqn.com/y/linux/1/L/s/J/1/ranger.png) -Command Line File Manager - Ranger. - -### 8. Navigate The File System Using ranger ### - -If htop is immensely useful for controlling the processes running via the command line then [ranger][8] is immensely useful for navigating the file system using the command line. - -You will probably need to install ranger to be able to use it but once installed you can run it simply by typing the following into the terminal: - - ranger - -The command line window will be much like any other file manager but it works left to right rather than top to bottom meaning that if you use the left arrow key you work your way up the folder structure and the right arrow key works down the folder structure. - -It is worth reading the man pages before using ranger so that you can get used to all keyboard switches that are available. - -![Cancel Linux Shutdown.](http://f.tqn.com/y/linux/1/L/t/J/1/shutdown.png) -Cancel Linux Shutdown. - -### 9. Cancel A Shutdown ### - -So you started the [shutdown][9] either via the command line or from the GUI and you realised that you really didn't want to do that. - - shutdown -c - -Note that if the shutdown has already started then it may be too late to stop the shutdown. - -Another command to try is as follows: - -- [pkill][10] shutdown - -![Kill Hung Processes With XKill.](http://f.tqn.com/y/linux/1/L/u/J/1/killhungprocesses.png) -Kill Hung Processes With XKill. - -### 10. Killing Hung Processes The Easy Way ### - -Imagine you are running an application and for whatever reason it hangs. - -You could use 'ps -ef' to find the process and then kill the process or you could use 'htop'. - -There is a quicker and easier command that you will love called [xkill][11]. - -Simply type the following into a terminal and then click on the window of the application you want to kill. - - xkill - -What happens though if the whole system is hanging? - -Hold down the 'alt' and 'sysrq' keys on your keyboard and whilst they are held down type the following slowly: - -- [REISUB][12] - -This will restart your computer without having to hold in the power button. - -![youtube-dl.](http://f.tqn.com/y/linux/1/L/v/J/1/youtubedl2.png) -youtube-dl. - -### 11. Download Youtube Videos ### - -Generally speaking most of us are quite happy for Youtube to host the videos and we watch them by streaming them through our chosen media player. - -If you know you are going to be offline for a while (i.e. due to a plane journey or travelling between the south of Scotland and the north of England) then you may wish to download a few videos onto a pen drive and watch them at your leisure. - -All you have to do is install youtube-dl from your package manager. - -You can use youtube-dl as follows: - - youtube-dl url-to-video - -You can get the url to any video on Youtube by clicking the share link on the video's page. Simply copy the link and paste it into the command line (using the shift + insert shortcut). - -### Summary ### - -I hope that you found this list useful and that you are thinking "i didn't know you could do that" for at least 1 of the 11 items listed. - --------------------------------------------------------------------------------- - -via: http://linux.about.com/od/commands/tp/11-Linux-Terminal-Commands-That-Will-Rock-Your-World.htm - -作者:[Gary Newell][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://linux.about.com/bio/Gary-Newell-132058.htm -[1]:http://linux.about.com/cs/linux101/g/sudo.htm -[2]:http://linux.about.com/library/cmd/blcmdl1_nohup.htm -[3]:http://linux.about.com/od/mobiledevicesother/a/Raspberry-Pi-Computer-Running-Linux.htm -[4]:http://linux.about.com/od/commands/l/blcmdl1_ssh.htm -[5]:http://linux.about.com/cs/linux101/g/cowsay.htm -[6]:http://linux.about.com/od/commands/l/blcmdl1_ps.htm -[7]:http://www.linux.com/community/blogs/133-general-linux/745323-5-commands-to-check-memory-usage-on-linux -[8]:http://ranger.nongnu.org/ -[9]:http://linux.about.com/od/commands/l/blcmdl8_shutdow.htm -[10]:http://linux.about.com/library/cmd/blcmdl1_pkill.htm -[11]:http://linux.about.com/od/funnymanpages/a/funman_xkill.htm -[12]:http://blog.kember.net/articles/reisub-the-gentle-linux-restart/ From dc6c4e331cf37f3312b8b362b0e6af4be32bde72 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:47:26 +0800 Subject: [PATCH 713/725] Update 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ... 11 Linux Terminal Commands That Will Rock Your World.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md index b2d12d638d..4d67a4c681 100644 --- a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -24,7 +24,11 @@ Linux的快捷键。 sudo apt-get intall programname -如你所见,命令中存在拼写错误,为了正常执行需要把“intall”替换成“install”。想象现在光标正在行末,我们有很多的方法将她退回单词install并替换它。我可以按两次ALT+B这样光标就会在如下的位置(这里用^代替光标的位置)。 +如你所见,命令中存在拼写错误,为了正常执行需要把“intall”替换成“install”。 + +想象现在光标正在行末,我们有很多的方法将她退回单词install并替换它。 + +我可以按两次ALT+B这样光标就会在如下的位置(这里用^代替光标的位置)。 sudo apt-get^intall programname From 3683e979e7fdd5c57fee6596b541539e980ff507 Mon Sep 17 00:00:00 2001 From: martin qi Date: Wed, 1 Apr 2015 23:49:47 +0800 Subject: [PATCH 714/725] Update 20150318 11 Linux Terminal Commands That Will Rock Your World.md --- ...18 11 Linux Terminal Commands That Will Rock Your World.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md index 4d67a4c681..fce6ed5c80 100644 --- a/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md +++ b/translated/tech/20150318 11 Linux Terminal Commands That Will Rock Your World.md @@ -72,7 +72,9 @@ sudo !!就会用sudo的形式运行上一条命令。所以上一条命令可以 sudo nano abc.txt -文件编辑到一半你意识到你需要马上在终端输入些命令,但是nano在前台运行让你不能输入。你一定认为唯一的方法就是保存文件,推出nano,运行命令以后在重新打开nano。 +文件编辑到一半你意识到你需要马上在终端输入些命令,但是nano在前台运行让你不能输入。 + +你可能觉得唯一的方法就是保存文件,推出nano,运行命令以后在重新打开nano。 其实你只要按CTRL + Z前台的命令就会暂停,画面就切回到命令行了。然后你就能运行你想要运行命令,等命令运行完后在终端窗口输入“fg”就可以回到先前暂停的任务。 From 90625cf06b1a83af04d91e9a613726269b785209 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 2 Apr 2015 00:07:14 +0800 Subject: [PATCH 715/725] PUB:20150318 Fedora GNOME Keyboard Shortcuts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @martin2011qi 下回记得文末的译者处写上你的 id 哦。 --- ...0150318 Fedora GNOME Keyboard Shortcuts.md | 135 +++++++++--------- 1 file changed, 71 insertions(+), 64 deletions(-) rename {translated/tech => published}/20150318 Fedora GNOME Keyboard Shortcuts.md (69%) diff --git a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md b/published/20150318 Fedora GNOME Keyboard Shortcuts.md similarity index 69% rename from translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md rename to published/20150318 Fedora GNOME Keyboard Shortcuts.md index 4210289b6d..75fdf0916e 100644 --- a/translated/tech/20150318 Fedora GNOME Keyboard Shortcuts.md +++ b/published/20150318 Fedora GNOME Keyboard Shortcuts.md @@ -1,14 +1,15 @@ -Fedora GNOME快捷键 +Fedora GNOME 的常用快捷键 ================================================================================ -在Fedora,为了获得最好的[GNOME桌面] [1]体验,你需要了解并掌握一些驾驭系统的快捷键。 +在Fedora中,为了获得最好的[GNOME桌面][1]体验,你需要了解并掌握一些驾驭系统的快捷键。 这篇文章将列举我们日常使用中使用频率最高的快捷键。 -![GNOME Keyboard Shortcuts - The Super Key. ](http://f.tqn.com/y/linux/1/L/o/K/1/gnomekeyboardshortcut1.png) -GNOME 快捷键 - super键. - #### 1. Super键 #### +![GNOME Keyboard Shortcuts - The Super Key. ](http://f.tqn.com/y/linux/1/L/o/K/1/gnomekeyboardshortcut1.png) + +*GNOME 快捷键 - super键* + [“super”键][2]是如今驾驭操作系统的好朋友。 在传统的笔记本电脑中“super”键坐落于最后一列就在“alt”键的旁边(就是徽标键)。 @@ -17,116 +18,122 @@ GNOME 快捷键 - super键. 同时按下 "ALT" 和"F1"一样可以达到这样的效果。 -![GNOME Run Command.](http://f.tqn.com/y/linux/1/L/p/K/1/runcommand.png) -GNOME 指令运行. +### 2. 如何快速执行一条命令 ### -### 2. 如何快速执行一条指令 ### +![GNOME Run Command.](http://f.tqn.com/y/linux/1/L/p/K/1/runcommand.png) + +*GNOME 运行某命令* 如果你需要快速的执行一条指令,你可以按下"ALT"+"F2",这样就会出现指令运行对话框了。 -你就可以在窗口中输入你想要执行的指令了,回车执行。 - -![TAB Through Applications.](http://f.tqn.com/y/linux/1/L/q/K/1/tabthroughwindows.png) -使用TAB在应用中切换。 +现在你就可以在窗口中输入你想要执行的指令了,回车执行。 ### 3. 快速切换到另一个打开的应用 ### -就像微软的Windows一样你可以使用"ALT"和"TAB" 的组合键在应用程序之间切换。 +![TAB Through Applications.](http://f.tqn.com/y/linux/1/L/q/K/1/tabthroughwindows.png) -在一些键盘上tab键是这样的**|<- ->|**而有些则是简单的"TAB"字母。 +*使用TAB在应用中切换* -GNOME应用间切换随着你的切换显示的是简单的图标和应用的名字 +就像在微软的Windows下一样你可以使用"ALT"和"TAB" 的组合键在应用程序之间切换。 -如果你按下"shift"+"tab"将反过来切换应用。 +在一些键盘上tab键上画的是这样的**|<- ->|**,而有些则是简单的"TAB"字母。 -![Switch Windows In The Same Application.](http://f.tqn.com/y/linux/1/L/r/K/1/switchwindowsinsameapplication.png) -在应用中切换不同窗口。 +GNOME应用切换器随着你的切换,显示简单的图标和应用的名字。 + +如果你按下"shift"+"tab"将以反序切换应用。 ### 4. 在同一应用中快速切换不同的窗口 ### +![Switch Windows In The Same Application.](http://f.tqn.com/y/linux/1/L/r/K/1/switchwindowsinsameapplication.png) + +*在应用中切换不同窗口* + 如果你像我一样经常打开五六个Firefox。 -你已经知道通过"Alt"+"Tab"实现应用间的切换。 +你已经知道通过"Alt"+"Tab"实现应用间的切换。有两种方法可以在同一个应用中所有打开的窗口中切换。 -有两种方法可以在同应用中所有打开的窗口中切换。 +第一种是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上。短暂的停留等到下拉窗口出现你就能用鼠标选择窗口了。 -第一种是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上。短暂的停留等到下拉窗出现你就能用鼠标选择窗口了。 +第二种也是比较推荐的方式是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上,然后按"super"+"`"在此应用打开的窗口间切换。 -第二种也是比较推荐的方式是按"Alt"+"Tab"让选框停留在你所要切换窗口的应用图标上然后按"super"+"`"在此应用打开的窗口间切换。 +**注释:"\`"就是tab键上面的那个键。无论你使用的那种键盘排布,用于切换的键一直都是tab上面的那个键,所以也有可能不是"\`"键。** -**注释"\`"就是tab键上面的那个键。用于切换的键一直都是tab上面的那个键,无论你使用的那种键盘排布,也有可能不是"`"键。** - -如果你的手很灵活(或者是我称之为的忍者手)那你也可以同时按"shift", "`"和"super"键来反向切换窗口。 - -![Switch Keyboard Focus.](http://f.tqn.com/y/linux/1/L/s/K/1/switchkeyboardfocus.png) -切换键盘焦点。 +如果你的手很灵活(或者是我称之为忍者手的)那你也可以同时按"shift", "\`"和"super"键来反向切换窗口。 ### 5. 切换键盘焦点 ### +![Switch Keyboard Focus.](http://f.tqn.com/y/linux/1/L/s/K/1/switchkeyboardfocus.png) + +*切换键盘焦点* + 这个键盘快捷键并不是必须掌握的,但是还是最好掌握。 如若你想将输入的焦点放到搜索栏或者一个应用窗口上,你可以同时按下"CTRL", "ALT"和"TAB",这样就会出现一个让你选择切换区域的列表。 然后就可以按方向键做出选择了。 -![Show All Applications.](http://f.tqn.com/y/linux/1/L/t/K/1/showapplications.png) -显示所有应用程序。 - ### 6. 显示所有应用程序列表 ### +![Show All Applications.](http://f.tqn.com/y/linux/1/L/t/K/1/showapplications.png) + +*显示所有应用程序* + 如果恰巧最后一个应用就是你想要找的,那么这样做真的会帮你省很多时间。 -按"super"和"A"键来快速浏览这个包含你系统上所有应用的列表。 - -![Switch Workspaces.](http://f.tqn.com/y/linux/1/L/u/K/1/switchworkspaces.png) -切换工作区。 +按"super"和"A"键来快速切换到这个包含你系统上所有应用的列表上。 ### 7. 切换工作区 ### +![Switch Workspaces.](http://f.tqn.com/y/linux/1/L/u/K/1/switchworkspaces.png) + +*切换工作区* + 如果你已经使用linux有一段时间了,那么这种[多工作区切换][3]的工作方式一定深得你心了吧。 -举个例子,你在第一个工作区里做开发,第二个中浏览网页而把你邮件的客户端开在第三个工作区中。 +举个例子,你在第一个工作区里做开发,第二个之中浏览网页,而把你邮件的客户端开在第三个工作区中。 -工作区切换你可以使用"super"+"Page Up" (PGUP)键朝一个方向切,也可以按"super"+"Page Down" (PGDN)键朝另一个方向切。 +工作区切换你可以使用"super"+"Page Up" (向上翻页)键朝一个方向切,也可以按"super"+"Page Down" (向下翻页)键朝另一个方向切。 还有一个比较麻烦的备选方案就是按"super"显示打开的应用,然后在屏幕的右侧选择你所要切换的工作区。 -![Move Application To Another Workspace.](http://f.tqn.com/y/linux/1/L/v/K/1/movetoanewworkspace.png) -将应用移至另一个工作区。 - ### 8. 将一些项目移至一个新的工作区 ### -如果这个工作区已经被搞得杂乱无章了没准你会想将手头的应用转到一个全新的工作区,请按组合键"super", "shift"和"page up"或"super", "shift"和"page down" key。 +![Move Application To Another Workspace.](http://f.tqn.com/y/linux/1/L/v/K/1/movetoanewworkspace.png) + +*将应用移至另一个工作区* + +如果这个工作区已经被搞得杂乱无章了,没准你会想将手头的应用转到一个全新的工作区,请按组合键"super", "shift"和"page up"或"super", "shift"和"page down" 键。 备选方案按"super"键,然后在应用列表中找到你想要移动的应用拖到屏幕右侧的工作区。 +### 9. 显示信息托盘 ### + ![Show The Message Tray.](http://f.tqn.com/y/linux/1/L/w/K/1/showmessagetray.png) -显示信息栏。 -### 9. 显示信息栏 ### +*显示信息托盘* -消息栏会提供一些通知。 - -按"super"+"M"呼出消息栏。 +消息托盘会提供一个通知列表。按"super"+"M"呼出消息托盘。 备选方法是鼠标移动到屏幕右下角。 -![Lock The Screen.](http://f.tqn.com/y/linux/1/L/x/K/1/lockscreen.png) -锁屏。 - ### 10. 锁屏 ### +![Lock The Screen.](http://f.tqn.com/y/linux/1/L/x/K/1/lockscreen.png) + +*锁屏* + 想要休息一会喝杯咖啡?不想误触键盘? 无论何时只要离开你的电脑应该习惯性的按下"super"+"L"锁屏。 解锁方法是从屏幕的下方向上拽,输入密码即可。 -![Control Alt Delete Within Fedora.](http://f.tqn.com/y/linux/1/L/y/K/1/poweroff.png) -Fedora中Control+Alt+Delete - ### 11. 关机 ### +![Control Alt Delete Within Fedora.](http://f.tqn.com/y/linux/1/L/y/K/1/poweroff.png) + +*Fedora中Control+Alt+Delete* + 如果你曾是windows的用户,你一定记得著名的三指快捷操作CTRL+ALT+DELETE。 如果在键盘上同时按下CTRL+ALT+DELETE,Fedora就会弹出一则消息,提示你的电脑将在60秒后关闭。 @@ -158,18 +165,17 @@ Fedora中Control+Alt+Delete [录制的内容][4]将以[webm][5]格式保存于当前用户家目录下的录像文件夹中。 -![Put Windows Side By Side.](http://f.tqn.com/y/linux/1/L/z/K/1/splitwindows.png) -并排显示窗口。 - ### 14. 并排显示窗口 ### +![Put Windows Side By Side.](http://f.tqn.com/y/linux/1/L/z/K/1/splitwindows.png) + +*并排显示窗口* + 你可以将一个窗口靠左占满左半屏,另一个窗口靠右占满右半屏,让两个窗口并排显示。 -也可以按"Super"+"←"让当前应用占满左半屏。 +也可以按"Super"+"←"(左箭头)让当前应用占满左半屏。按"Super"+"→"(右箭头)让当前应用占满右半屏。 -按"Super"+"→"让当前应用占满右半屏。 - -### 15. 窗口的最大化, 最小化和恢复 ### +### 15. 窗口的最大化,最小化和恢复 ### 双击标题栏可以最大化窗口。 @@ -177,11 +183,12 @@ Fedora中Control+Alt+Delete 右键菜单选择"最小化"就可以最小化了。 -![GNOME Keyboard Shortcut Cheat Sheet. ](http://f.tqn.com/y/linux/1/L/-/L/1/gnomekeyboardshortcuts.png) -GNOME快捷键速查表。 - ### 16. 总结 ### +![GNOME Keyboard Shortcut Cheat Sheet. ](http://f.tqn.com/y/linux/1/L/-/L/1/gnomekeyboardshortcuts.png) + +*GNOME快捷键速查表* + 我做了一份快捷键速查表,你可以打印出来贴在墙上,这样一定能够更快上手。 当你掌握了这些快捷键后,你一定会感慨这个桌面环境使用起来是如此的顺手。 @@ -196,8 +203,8 @@ GNOME快捷键速查表。 via: http://linux.about.com/od/howtos/tp/Fedora-GNOME-Keyboard-Shortcuts.htm 作者:[Gary Newell][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[martin2011qi](https://github.com/martin2011qi) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 262548fcce7bf0e1a30b166caad75d24ea7889db Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 2 Apr 2015 08:27:25 +0800 Subject: [PATCH 716/725] translating --- ...inux FAQs with Answers--How to upgrade Docker on Ubuntu.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md b/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md index c31af4675c..f24963eee3 100644 --- a/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md +++ b/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md @@ -1,3 +1,5 @@ +Translating----geekpi + Linux FAQs with Answers--How to upgrade Docker on Ubuntu ================================================================================ > **Question**: I installed Docker on Ubuntu using its standard repositories. However, the default Docker installation does not meet the version requirement for my another application that relies on Docker. How can I upgrade Docker to the latest version on Ubuntu? @@ -32,4 +34,4 @@ via: http://ask.xmodulo.com/upgrade-docker-ubuntu.html 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 -[a]:http://ask.xmodulo.com/author/nanni \ No newline at end of file +[a]:http://ask.xmodulo.com/author/nanni From 8e75858230d247a6bb3ae3f8691731c52cd4c696 Mon Sep 17 00:00:00 2001 From: geekpi Date: Thu, 2 Apr 2015 08:39:52 +0800 Subject: [PATCH 717/725] translated --- ...nswers--How to upgrade Docker on Ubuntu.md | 37 ------------------- ...nswers--How to upgrade Docker on Ubuntu.md | 35 ++++++++++++++++++ 2 files changed, 35 insertions(+), 37 deletions(-) delete mode 100644 sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md create mode 100644 translated/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md diff --git a/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md b/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md deleted file mode 100644 index f24963eee3..0000000000 --- a/sources/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md +++ /dev/null @@ -1,37 +0,0 @@ -Translating----geekpi - -Linux FAQs with Answers--How to upgrade Docker on Ubuntu -================================================================================ -> **Question**: I installed Docker on Ubuntu using its standard repositories. However, the default Docker installation does not meet the version requirement for my another application that relies on Docker. How can I upgrade Docker to the latest version on Ubuntu? - -Since Docker was first released in 2013, it has been fast evolving into a full-blown open platform for distributed applications. To meet the industry's expection, Docker is being aggressively developed and constantly upgraded with new features. Chances are that the stock Docker that comes with your Ubuntu distribution is quickly outdated. For example, Ubuntu 14.10 Utopic comes with Docker version 1.2.0, while the latest Docker version is 1.5.0. - -![](https://farm9.staticflickr.com/8730/16351300024_9acb9086da_b.jpg) - -For those of you who want to stay up-to-date with Docker's latest developments, Canonical maintains a separate PPA for Docker. Using this PPA repository, you can easily upgrade Docker to the latest version on Ubuntu. - -Here is how to set up Docker PPA and upgrade Docker. - - $ sudo add-apt-repository ppa:docker-maint/testing - $ sudo apt-get update - $ sudo apt-get install docker.io - -Now check the version of installed Docker: - - $ docker --version - ----------- - - Docker version 1.5.0-dev, build a78ce5c - --------------------------------------------------------------------------------- - -via: http://ask.xmodulo.com/upgrade-docker-ubuntu.html - -作者:[Dan Nanni][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://ask.xmodulo.com/author/nanni diff --git a/translated/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md b/translated/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md new file mode 100644 index 0000000000..8d993c1c47 --- /dev/null +++ b/translated/tech/20150330 Linux FAQs with Answers--How to upgrade Docker on Ubuntu.md @@ -0,0 +1,35 @@ +Linux有问必答-- 如何在Ubuntu中升级Docker +================================================================================ +> **提问**: 我使用了Ubuntu的标准仓库安装了Docker。然而,默认安装的Docker不能满足我另外一个依赖Docker程序的版本需要。我该如何在Ubuntu中升级到Docker的最新版本? + +Docker第一次在2013年发布,它快速地演变成了一个针对分布式程序的开发平台。为了满足工业期望,Docker正在紧密地开发并持续地带来新特性的升级。这样Ubuntu发行版中的Docker版本可能很快就会过时。比如,, Ubuntu 14.10 Utopic 中的Docker版本是1.2.0, 然而最新的Docker版本是1.5.0。 + +![](https://farm9.staticflickr.com/8730/16351300024_9acb9086da_b.jpg) + +对于那些想要跟随Docker的最新开发的人而言,Canonical为Docker维护了一个独立的PPA。使用这个PPA仓库,你可以很容易地在Ubuntu上升级到最新的Docker版本。 + +下面是如何设置Docker的PPA和升级Docker。 + + $ sudo add-apt-repository ppa:docker-maint/testing + $ sudo apt-get update + $ sudo apt-get install docker.io + +检查安装的Docker版本: + + $ docker --version + +---------- + + Docker version 1.5.0-dev, build a78ce5c + +-------------------------------------------------------------------------------- + +via: http://ask.xmodulo.com/upgrade-docker-ubuntu.html + +作者:[Dan Nanni][a] +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://ask.xmodulo.com/author/nanni From 667bce6d75fbf7d39cad7d2d9e6ed20c885dd5f7 Mon Sep 17 00:00:00 2001 From: KevinSJ Date: Wed, 1 Apr 2015 22:12:04 -0500 Subject: [PATCH 718/725] Update 20150323 Papyrus--An Open Source Note Manager.md --- sources/share/20150323 Papyrus--An Open Source Note Manager.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/share/20150323 Papyrus--An Open Source Note Manager.md b/sources/share/20150323 Papyrus--An Open Source Note Manager.md index eda13551a8..f5caf02c56 100644 --- a/sources/share/20150323 Papyrus--An Open Source Note Manager.md +++ b/sources/share/20150323 Papyrus--An Open Source Note Manager.md @@ -1,3 +1,4 @@ +KevinSJ Translating Papyrus: An Open Source Note Manager ================================================================================ ![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_4.jpeg) @@ -54,4 +55,4 @@ via: http://itsfoss.com/papyrus-open-source-note-manager/ [1]:http://itsfoss.com/go-for-it-to-do-app-in-linux/ [2]:http://aseman.co/en/products/papyrus/ [3]:https://github.com/sialan-labs/kaqaz/ -[4]:http://aseman.co/en/products/papyrus/ \ No newline at end of file +[4]:http://aseman.co/en/products/papyrus/ From 358ebe437a1a8b2a4f0e9458d9001d294ea5b466 Mon Sep 17 00:00:00 2001 From: Kevin Sicong Jiang Date: Thu, 2 Apr 2015 00:41:00 -0500 Subject: [PATCH 719/725] Delete 20150323 Papyrus--An Open Source Note Manager.md --- ...23 Papyrus--An Open Source Note Manager.md | 58 ------------------- 1 file changed, 58 deletions(-) delete mode 100644 sources/share/20150323 Papyrus--An Open Source Note Manager.md diff --git a/sources/share/20150323 Papyrus--An Open Source Note Manager.md b/sources/share/20150323 Papyrus--An Open Source Note Manager.md deleted file mode 100644 index f5caf02c56..0000000000 --- a/sources/share/20150323 Papyrus--An Open Source Note Manager.md +++ /dev/null @@ -1,58 +0,0 @@ -KevinSJ Translating -Papyrus: An Open Source Note Manager -================================================================================ -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_4.jpeg) - -In last post, we saw an [open source to-do app Go For It!][1]. In a similar article, today we’ll see an **open source note taking application Papyrus**. - -[Papyrus][2] is a fork of [Kaqaz note manager][3] and is built on QT5. It brings a clean, polished user interface and is security focused (as it claims). Emphasizing on simplicity, I find Papyrus similar to OneNote. You organize your notes in ‘paper’ and add them a label for grouping those papers. Simple enough! - -### Papyrus features: ### - -Though Papyrus focuses on simplicity, it still has plenty of features up its sleeves. Some of the main features are: - -- Note management with labels and categories -- Advanced search options -- Touch mode available -- Full screen option -- Back up to Dropbox/hard drive/external -- Password protection for selective papers -- Sharing papers with other applications -- Encrypted synchronization via Dropbox -- Available for Android, Windows and OS X apart from Linux - -### Install Papyrus ### - -Papyrus has APK available for Android users. There are installer files for Windows and OS X. Linux users can get source code of the application. Ubuntu and other Ubuntu based distributions can use the .deb packages. Based on your OS and preference, you can get the respective files from the Papyrus download page: - -- [Download Papyrus][4] - -### Screenshots ### - -Here are some screenshots of the application: - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_3-700x450_c.jpeg) - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_2-700x450_c.jpeg) - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_1-700x450_c.jpeg) - -![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux-700x450_c.jpeg) - -Give Papyrus a try and see if you like it. Do share your experience with it with the rest of us here. - --------------------------------------------------------------------------------- - -via: http://itsfoss.com/papyrus-open-source-note-manager/ - -作者:[Abhishek][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://itsfoss.com/author/abhishek/ -[1]:http://itsfoss.com/go-for-it-to-do-app-in-linux/ -[2]:http://aseman.co/en/products/papyrus/ -[3]:https://github.com/sialan-labs/kaqaz/ -[4]:http://aseman.co/en/products/papyrus/ From 21172989196edf11d47a8417bfd2a20b00380f45 Mon Sep 17 00:00:00 2001 From: Kevin Sicong Jiang Date: Thu, 2 Apr 2015 00:43:42 -0500 Subject: [PATCH 720/725] Create 20150323 Papyrus--An Open Source Note Manager.md --- ...23 Papyrus--An Open Source Note Manager.md | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 translated/share/20150323 Papyrus--An Open Source Note Manager.md diff --git a/translated/share/20150323 Papyrus--An Open Source Note Manager.md b/translated/share/20150323 Papyrus--An Open Source Note Manager.md new file mode 100644 index 0000000000..87c80fa0ac --- /dev/null +++ b/translated/share/20150323 Papyrus--An Open Source Note Manager.md @@ -0,0 +1,61 @@ +Papyrus:开源笔记管理工具 +================================================================================ +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_4.jpeg) + +在上一篇帖子中,我们介绍了[任务管理软件Go For It!][1].今天我们将介绍一款名为**Papyrus的开源笔记软件** + +[Papyrus][2] 是[Kaqaz笔记管理][3]的变体并使用了QT5.它不仅有简洁、易用的界面,还具备了较好的安全性。由于强调简洁,我觉得Papyrus与OneNote比较相像。你可以将你的笔记像"纸张"一样分类整理,还可以给他们添加标签进行分组。够简单的吧! + +### Papyrus的功能: ### + +## Papyrus的功能: ### + +虽然Papyrus强调简洁,它依然有很多丰富的功能。他的一些主要功能如下: +- 按类别和标签管理笔记 +- 高级搜索选项 +- 触屏模式 +- 全屏选项 +- 备份至Dropbox/硬盘 +- 某些页面允许加密 +- 可与其他软件共享笔记 +- 与Dropbox加密同步 +- 除Linux外,还可在Android,Windows和OS X使用 + +### Install Papyrus ### + +Papyrus为Android用户提供了APK安装包。Windows和OS X也有安装文件。Linux用户还可以获取程序的源码。使用Ubuntu及其他基于Ubuntu的发行版可以使用.deb包进行安装。根据你的系统及习惯,你可以从Papyrus的下载页面中获取不同的文件: + +- [下载 Papyrus][4] + +### 软件截图 ### + +以下是此软件的一些截图: + + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_3-700x450_c.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_2-700x450_c.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux_1-700x450_c.jpeg) + +![](http://itsfoss.itsfoss.netdna-cdn.com/wp-content/uploads/2015/03/Papyrus_Linux-700x450_c.jpeg) + +试试Papyrus吧,你会喜欢上它的。 + +(译者注;此软件暂无中文版) + +-------------------------------------------------------------------------------- + +via: http://itsfoss.com/papyrus-open-source-note-manager/ + +作者:[Abhishek][a] +译者:[KevinSJ](https://github.com/KevinSJ) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://itsfoss.com/author/abhishek/ +[1]:http://itsfoss.com/go-for-it-to-do-app-in-linux/ +[2]:http://aseman.co/en/products/papyrus/ +[3]:https://github.com/sialan-labs/kaqaz/ +[4]:http://aseman.co/en/products/papyrus/ From 5f38358c5ca44d30c9abbf850de484354bc524eb Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Thu, 2 Apr 2015 18:31:41 +0800 Subject: [PATCH 721/725] =?UTF-8?q?20150402-1=20=E9=80=89=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...The VirtualBox 5.0 beta is finally here.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sources/news/20150402 The VirtualBox 5.0 beta is finally here.md diff --git a/sources/news/20150402 The VirtualBox 5.0 beta is finally here.md b/sources/news/20150402 The VirtualBox 5.0 beta is finally here.md new file mode 100644 index 0000000000..475ef2f811 --- /dev/null +++ b/sources/news/20150402 The VirtualBox 5.0 beta is finally here.md @@ -0,0 +1,35 @@ +The VirtualBox 5.0 beta is finally here +======================================= +**Oracle's desktop virtualization software gets its first major point revision in almost five years, but the changes are more evolutionary than revolutionary.** + +VirtualBox, the open source virtualization system originally created by Sun and now under Oracle's stewardship, has released its first revision to the left of the decimal point in nearly five years. + +Don't expect anything truly revolutionary, though, judging from the release notes for and the behavior of the beta itself. With this release, VirtualBox picks up a bit more polish, both visually and technologically, but its main advantage over VMware remains with its offer of a free incarnation of many of the same core features. + +The last major version of VirtualBox 4.0 was released in December 2010, and it delivered a heavily reworked version of the program with a new GUI, new virtual hardware, and a reorganized project design. But the pace of major releases for the project was slow, with the last major release (version 4.3) arriving in late 2013. Everything since then has been officially designated as a "maintenance" release. + +**VirtualBox 5.0** + +*The first beta of VirtualBox 5.0 adds features like the ability to edit the menus and shortcut icons for VM windows, as shown here.* + +Among the biggest changes for VirtualBox 5.0 is support for more instruction set extensions that run with hardware-assisted virtualization. The AES-NI instruction set, typically used for hardware acceleration of encryption, and the SSE 4.1 and SSE 4.2 instructions sets were included among them. Also new is paravirtualization support for Windows and Linux guests, a new architecture for abstracting host audio, and support for USB 3 (xHCI) controller in guests. + +Most of the usability updates are improvements to the VirtualBox GUI. One big change is the ability to customize the menus and the toolbar for individual virtual machines so that little- or never-used options can be removed entirely. Another major addition is the ability to encrypt virtual volumes from within the VirtualBox interface, rather than relying on the guest OS's own disk-encryption system (assuming it has one). + +Oracle warns that this is beta software and should be treated accordingly. Sure enough, the main GUI and the guest OS windows all sport black-and-red Beta warnings in one corner. But a Windows 10 VM created with the previous VirtualBox release (4.3.26) booted and ran fine, and the 5.0 version of the VirtualBox Guest Additions -- for better video support, bidirectional copy and paste, and other features -- installed without issues. (Fixes to better support Windows 10 have been showing up since version 4.3.18.) + +No word has been given yet on when the final version of 5.0 will be out, but Oracle [encourages users][1] to download and try out the beta -- in a nonproduction environment -- and file bug reports with their [beta feedback forum][2]. + +-------------------------------------------------------------------------------- + +via: http://www.infoworld.com/article/2905098/virtualization/oracle-virtualbox-5-0-beta-is-finally-here.html + +作者:[Serdar Yegulalp][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://www.infoworld.com/author/Serdar-Yegulalp/ +[1]:https://forums.virtualbox.org/viewtopic.php?f=15&t=66904 +[2]:https://forums.virtualbox.org/viewforum.php?f=15 From 50594ef1f672b7f489fadb844d72b0b1a298afe0 Mon Sep 17 00:00:00 2001 From: FSSlc Date: Thu, 2 Apr 2015 18:31:53 +0800 Subject: [PATCH 722/725] [Translated] 20150316 How to access Gmail from the command line on Linux with Alpine.md --- ...m the command line on Linux with Alpine.md | 105 ------------------ ...m the command line on Linux with Alpine.md | 103 +++++++++++++++++ 2 files changed, 103 insertions(+), 105 deletions(-) delete mode 100644 sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md create mode 100644 translated/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md diff --git a/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md b/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md deleted file mode 100644 index 498cd2c827..0000000000 --- a/sources/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md +++ /dev/null @@ -1,105 +0,0 @@ -FSSlc translating - -How to access Gmail from the command line on Linux with Alpine -================================================================================ -If you are a command-line lover, I am sure that you welcome with open arms any tool that allows you to perform at least one of your daily tasks using that powerful work environment, e.g., from [scheduling appointments][1] and [managing finances][2] to accessing [Facebook][3] and [Twitter][4]. - -In this post I will show you yet another pretty neat use case of Linux command-line: **accessing Google's Gmail service**. To do so, we are going to use Alpine, a versatile ncurses-based, command-line email client (not to be confused with Alpine Linux). We will configure Gmail's IMAP and SMTP settings in Alpine to receive and send email messages via Google mail servers in a terminal environment. At the end of this tutorial, you will realize that it will only take a few minimum steps to use any other mail servers in Alpine. - -Granted there are already outstanding GUI-based email clients such as Thunderbird, Evolution or even web interface. So why would anyone be interested in using a command-line email client to access Gmail? The answer is simple. You need to get something done quickly and want to avoid using system resources unnecessarily. Or you are accessing a minimal headless server that does not have the X server installed. Or the X server on your desktop crashed, and you need to send emails urgently before fixing it. In all these situations Alpine can come in handy and get you going in no time. - -Beyond simple editing, sending and receiving of text-based email messages, Alpine is able to encrypt, decrypt, and digitally sign email messages, and integrate seamlessly with TLS. - -### Installing Alpine on Linux ### - -In Red Hat-based distributions, install Alpine as follows. Note that on RHEL/CentOS, you need to enable [EPEL repository][5] first. - - # yum install alpine - -In Debian, Ubuntu or their derivatives, you will do: - - # aptitude install alpine - -After the installation is complete, you can launch the email client by running: - - # alpine - -The first time you run alpine, it will create a mail directory for the current user inside his/her home directory (~/mail), and bring up the main interface, as shown in the following screencast. - -注:youtube视频,发布的时候做个链接吧 - - -The user interface has the following sections: - -![](https://farm9.staticflickr.com/8724/16618079590_6c236ce2c2_c.jpg) - -Feel free to browse around a bit in order to become acquainted with Alpine. You can always return to the command prompt by hitting the 'Q' key any time. Note that all screens have context-related help available at the bottom of the screen. - -Before proceeding further, we will create a default configuration file for Alpine. In order to do so, quit Alpine, and execute the following command from the command line: - - # alpine -conf > /etc/pine.conf - -### Configuring Alpine to Use a Gmail Account ### - -Once you have installed Alpine and spent at least a few minutes to feel comfortable with its interface and menus, it's time to actually configure it to use an existing Gmail account. - -Before following these steps in Alpine, remember to enable IMAP in your Gmail settings from the webmail interface. Once IMAP access is enabled in your Gmail account, proceed to the following steps to enable reading Gmail messages on Alpine. - -First, launch Alpine. - -Press 'S' for Setup, and then 'L' for collection lists to define groups of folders to help you better organize your mail: - -![](https://farm8.staticflickr.com/7614/16779579656_690eda419c_o.png) - -Add a new folder by pressing 'A' and fill the required information: - -- **Nickname**: whatever name of your choice. -- **Server**: imap.gmail.com/ssl/user=yourgmailusername@gmail.com - -You may leave Path and View blank. - -Then press Ctrl+X and enter your password when prompted: - -![](https://farm9.staticflickr.com/8611/16618079640_6f7dca336a_b.jpg) - -If everything goes as expected, there should be a new folder named after the nickname that you chose earlier. You should find your Gmail mailboxes there: - -![](https://farm8.staticflickr.com/7598/16804355052_10c1a6c5bd_b.jpg) - -For verification, you can compare the contents of your Alpine's "Gmail Sent" mailbox with those of the web client: - -![](https://farm8.staticflickr.com/7602/16619323939_d2eab3e162_c.jpg) - -By default new mail checking/notification occurs automatically every 150 seconds. You can change this value, along with many others, in the /etc/pine.conf file. This configuration file is heavily commented for clarity. To set the desired mail check interval to 10 seconds, for example, you will need to do: - - # The approximate number of seconds between checks for new mail - mail-check-interval=10 - -Finally, we need to configure an SMTP server to send email messages via Alpine. Go back to the Alpine's setup screen as explained earlier, and press 'C' to set the address of a Google's SMTP server. You will need to edit the value of the SMTP Server (for sending) line as follows: - - smtp.gmail.com:587/tls/user=yourgmailusername@gmail.com - -You will be prompted to save changes when you press 'E' to exit setup. Once you save the changes, you are on your way to sending emails through Alpine! To do that, just go to Compose in the main menu, and start enjoying your Gmail account from the command line. - -### Conclusion ### - -In this post we have discussed how to access Gmail in a terminal environment via a lightweight and powerful command-line email client called Alpine. Alpine is free software released under the Apache Software License 2.0, which is a software license compatible with the GPL. Alpine takes pride in being friendly for new users, yet powerful for seasoned system administrators at the same time. I hope that after reading this article you have come to realize how true that last statement is. - -Feel free to leave your comments or questions using the form below. I look forward to hearing from you! - --------------------------------------------------------------------------------- - -via: http://xmodulo.com/gmail-command-line-linux-alpine.html - -作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 - -[a]:http://xmodulo.com/author/gabriel -[1]:http://xmodulo.com/schedule-appointments-todo-tasks-linux-terminal.html -[2]:http://xmodulo.com/manage-personal-expenses-command-line.html -[3]:http://xmodulo.com/access-facebook-command-line-linux.html -[4]:http://xmodulo.com/access-twitter-command-line-linux.html -[5]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html diff --git a/translated/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md b/translated/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md new file mode 100644 index 0000000000..ce347ad4e6 --- /dev/null +++ b/translated/tech/20150316 How to access Gmail from the command line on Linux with Alpine.md @@ -0,0 +1,103 @@ +如何在 Linux 中使用 Alpine 在命令行里获取 Gmail +================================================================================ +假如你是一个命令行爱好者,我很确信你将张开双臂欢迎任何可以使你使用这个强大的工作环境来执行哪怕一项日常任务的工具,例如从 [安排日程][1] 、 [管理财务][2] 到 获取 [Facebook][3] 、[Twitter][4]等任务。 + +在这个帖子中,我将为你展示 Linux 命令行的另一个漂亮干练的使用案例:**获取 Google 的 Gmail 服务**,为此,我们将使用 Alpine,一个基于 ncurses 的多功能命令行邮件客户端(不要和 Alpine Linux 搞混淆)。我们将在 Alphine 中配置 Gmail 的 IMAP 和 SMTP 设定来通过 Google 的邮件服务器在终端环境中收取和发送邮件。在这个教程的最后,你将意识到只需几步就可以在 Alpine 中使用其他的邮件服务。 + +诚然,已有许多卓越的基于 GUI 的邮件客户端存在,例如 Thunderbird, Evolution 或者甚至是 Web 界面,那么为什么还有人对使用命令行的邮件客户端来收取 Gmail 这样的事感兴趣呢?答案很简单。假如你需要快速地处理好事情并想避免使用不必要系统资源;或者你正工作在一个最小化安装(注:这里我感觉自己翻译有误)的服务器上,而它没有安装 X 服务(注:这里也需要更改);又或者是 X 服务在你的桌面上崩溃了,而你需要在解决这个问题之前急切地发送一些邮件。在上述所有的情况下, Alpine 都可以派上用场并在任何时间满足你的需求。 + +除了简单的编辑,发送和接收文本类的邮件信息等功能外, Alpine 还可以进行加密,解密和对邮件信息进行数字签名,以及与 TLS(注:Transport Layer Security) 无缝集成。 + +### 在 Linux 上安装 Alpine ### + +在基于 Red Hat 的发行版本上,可以像下面那样来安装 Alpine。需要注意的是,在 RHEL 或 CentOS 上,你需要首先启用 [EPEL 软件仓库][5]。 + + # yum install alpine + +在 Debian,Ubuntu 或它们的衍生发行版本上,你可以这样做: + + # aptitude install alpine + +在安装完成后,你可以运行下面的命令来启动该邮件客户端: + + # alpine + +在你第一次启用 Alpine 时,它将在当前用户的家目录下创建一个邮件文件夹(`~/mail`),并显现出主界面,正如下面的截屏所显示的那样: + +注:youtube视频,发布的时候做个链接吧(注:这里我不知道该如何操作,不过我已经下载了该视频,如有需要,可以发送) + + +它的用户界面有下列几个模块: + +![](https://farm9.staticflickr.com/8724/16618079590_6c236ce2c2_c.jpg) + +请随意地浏览,操作来熟悉 Alpine。你总是可以在任何时候通过敲 'Q' 来回到命令提示符界面。请注意,所有的字符界面下方都有与操作相关的帮助。 + +在进一步深入之前,我们将为 Alpine 创建一个默认的配置文件。为此,请关闭 Alpine,然后在命令行中执行下面的命令: + + # alpine -conf > /etc/pine.conf + +### 配置 Alpine 来使用 Gmail 账号 ### + +一旦你安装了 Alpine 并至少花费了几分钟的时间来熟悉它的界面和菜单,下面便是实际配置它来使用一个已有的 Gmail 账户的时候了。 + +在 Alpine 中执行下面的步骤之前,记得要通过你的 Web 邮件界面,在你的 Gmail 设定里启用 IMAP 协议。一旦在你的 Gmail 账户中 IMAP 被启用,执行下面的步骤来在 Alpine 中启用阅读 Gmail 信息的功能。 + +首先,启动 Alpine。 + +按 'S' 来进行设置,再按 'L' 选择 `collectionLists` 选项来定义不同的文件夹类别以帮助你更好地组织你的邮件: + +![](https://farm8.staticflickr.com/7614/16779579656_690eda419c_o.png) + +按 'A' 来新建一个文件夹并填写必要的信息: + +- **昵称**: 填写任何你想写的名字; +- **服务器**: imap.gmail.com/ssl/user=yourgmailusername@gmail.com + +你可以将 `Path` 和 `View` 留白不填。 + +然后按 `Ctrl+X` 并在有提示时输入你的 Gmail 密码: + +![](https://farm9.staticflickr.com/8611/16618079640_6f7dca336a_b.jpg) + +假如一切如预期一样进展顺利,就会出现一个以你先前填写的昵称来命名的新文件夹。你应该可以在这里找到你的 Gmail 信箱: + +![](https://farm8.staticflickr.com/7598/16804355052_10c1a6c5bd_b.jpg) + +为了验证,你可以比较在 Alpine 中显示的 "Gmail Sent" 信箱和在 Web 界面下的信箱: + +![](https://farm8.staticflickr.com/7602/16619323939_d2eab3e162_c.jpg) + +默认情况下,每隔 150 秒,它将自动检查新邮件或提示,你可以在文件 `/etc/pine.conf`中改变这个值,同时你还可以修改许多其他设定。这个配置文件拥有详细且清晰的注释。例如,为了将检查新邮件的时间间隔设定为 10 秒,你需要这样设定: + + # The approximate number of seconds between checks for new mail + mail-check-interval=10 + +最后,我们需要配置一个 SMTP 服务器来通过 Alpine 发送邮件信息。回到先前解释过的 Alpine 的设置界面,然后按 'C' 来设定一个 Google 的 SMTP 服务器地址,你需要像下面这样编辑 `SMTP Server`(为了发送) 这一行内容: + + smtp.gmail.com:587/tls/user=yourgmailusername@gmail.com + +当你按 'E' 离开设定界面时,将会提醒你保存更改。一旦你保存了更改,马上你就可以通过 Alpine 来发送邮件了!为此,来到主菜单中的 `Compose` 选项,接着开始从命令行中操作你的 Gmail 吧。 + +### 总结 ### + +在这个帖子里,我们讨论了在终端环境中如何通过一个名为 Alpha 的轻量且强大的命令行邮件客户端来获取 Gmail。 Alpine 是一个发布在 Apache Software License 2.0 协议下的自由软件,该协议与 GPL 协议相兼容。 Alpine 引以自豪的是:它不仅对新手友好,同时还做到了让那些经验丰富的系统管理员认为它是强大的。我希望在你阅读完这篇文章后,你能意识到我最后一个论断是多么的正确。 + +非常欢迎使用下面的输入框来留下你的评论或问题。我期待着你们的反馈! + +-------------------------------------------------------------------------------- + +via: http://xmodulo.com/gmail-command-line-linux-alpine.html + +作者:[Gabriel Cánepa][a] +译者:[FSSlc](https://github.com/FSSlc) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 + +[a]:http://xmodulo.com/author/gabriel +[1]:http://xmodulo.com/schedule-appointments-todo-tasks-linux-terminal.html +[2]:http://xmodulo.com/manage-personal-expenses-command-line.html +[3]:http://xmodulo.com/access-facebook-command-line-linux.html +[4]:http://xmodulo.com/access-twitter-command-line-linux.html +[5]:http://xmodulo.com/how-to-set-up-epel-repository-on-centos.html From 872a2236708e0a05cd931c385ddfdc5730468d02 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Thu, 2 Apr 2015 18:36:42 +0800 Subject: [PATCH 723/725] Update 20150227 Chess in a Few Bytes.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 准备翻译这篇文章。 --- sources/share/20150227 Chess in a Few Bytes.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sources/share/20150227 Chess in a Few Bytes.md b/sources/share/20150227 Chess in a Few Bytes.md index 26ef9d523d..e0f6302dcd 100644 --- a/sources/share/20150227 Chess in a Few Bytes.md +++ b/sources/share/20150227 Chess in a Few Bytes.md @@ -1,3 +1,5 @@ +Translating by FSSlc + Chess in a Few Bytes ================================================================================ I am showing my age by mentioning that my introduction to computing was a ZX81, a home computer produced by a UK developer (Sinclair Research) which had a whopping 1KB of RAM. The 1KB is not a typographical error, the home computer really shipped with a mere 1KB of onboard memory. But this memory limitation did not prevent enthusiasts producing a huge variety of software. In fact the machine sparked a generation of programming wizards who were forced to get to grips with its workings. The machine was upgradable with a 16KB RAM pack which offered so many more coding possibilities. But the unexpanded 1KB machine still inspired programmers to release remarkable software. @@ -111,4 +113,4 @@ via: http://www.linuxlinks.com/article/20150222033906262/ChessBytes.html [1]:http://nanochess.org/chess6.html [2]:http://www.pouet.net/prod.php?which=64962 -[3]:http://home.hccnet.nl/h.g.muller/max-src2.html \ No newline at end of file +[3]:http://home.hccnet.nl/h.g.muller/max-src2.html From 65a8623495c58bde0a13c328b38a959e9146cb10 Mon Sep 17 00:00:00 2001 From: wxy Date: Thu, 2 Apr 2015 22:01:48 +0800 Subject: [PATCH 724/725] =?UTF-8?q?PUB:20150122=20How=20are=20C=20data=20t?= =?UTF-8?q?ypes=20=E2=80=9Csupported=20directly=20by=20most=20computers?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @KayGuoWhu --- ... “supported directly by most computers”.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) rename {translated/talk => published}/20150122 How are C data types “supported directly by most computers”.md (68%) diff --git a/translated/talk/20150122 How are C data types “supported directly by most computers”.md b/published/20150122 How are C data types “supported directly by most computers”.md similarity index 68% rename from translated/talk/20150122 How are C data types “supported directly by most computers”.md rename to published/20150122 How are C data types “supported directly by most computers”.md index d204928ad6..f57bd9ac7f 100644 --- a/translated/talk/20150122 How are C data types “supported directly by most computers”.md +++ b/published/20150122 How are C data types “supported directly by most computers”.md @@ -1,15 +1,15 @@ C语言数据类型是如何被大多数计算机系统所支持? ---------- +======================== -#问题: +###问题: -在读K&R版的*The C Programming Language*一书时,我在[介绍,第3页]看到这样一条说明: +在读K&R版的*The C Programming Language*一书时,我在[介绍,第3页]看到这样一条说明: ->因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。 +>**因为C语言提供的数据类型和控制结构可以直接被大部分计算机系统所支持,所以在实现自包含程序时所需要的运行库文件一般很小。** -这段黑体说明了什么?能找到一个例子来说明C语言中的某种数据类型或控制结构并不能被一种计算机系统所支持呢? +这段黑体说明了什么?能否找到一个例子来说明C语言中的某种数据类型或控制结构不被某种计算机系统直接支持呢? -#回答: +###回答: 事实上,C语言中确实有不被直接支持的数据类型。 @@ -31,13 +31,13 @@ return _float_add(x, y); 另一个常见的例子是64位整型数(C语言标准中'long long'类型是1999年之后才出现的),这种类型在32位系统上也不能直接使用。古董级的SPARC系统则不支持整型乘法,所以在运行时必须提供乘法的实现。当然,还有一些其它例子。 -##其它语言 +####其它语言 相比起来,其它编程语言有更加复杂的基本类型。 -比如,Lisp中的symbol需要大量的运行时实现支持,就像Lua中的tables、Python中的strings、Fortran中的arrays,等等。在C语言中等价的类型通常要么不属于标准库(C语言没有标准symbols或tables),要么更加简单,而且并不需要那么多的运行时支持(C语言中的array基本上就是指针,以NULL结尾的字符串实现起来也很简单)。 +比如,Lisp中的symbol需要大量的运行时实现支持,就像Lua中的table、Python中的string、Fortran中的array,等等。在C语言中等价的类型通常要么不属于标准库(C语言没有标准symbol或table),要么更加简单,而且并不需要那么多的运行时支持(C语言中的array基本上就是指针,以NULL结尾的字符串实现起来也很简单)。 -##控制结构 +####控制结构 异常处理是C语言中没有的一种控制结构。非局部的退出只有'setjmp()'和'longjmp()'两种,只能提供保存和恢复某些部分的处理器状态。相比之下,C++运行时环境必须先遍历函数调用栈,然后调用析构函数和异常处理函数。 @@ -46,7 +46,7 @@ via:[stackoverflow](http://stackoverflow.com/questions/27977522/how-are-c-data-t 作者:[Dietrich Epp][a] 译者:[KayGuoWhu](https://github.com/KayGuoWhu) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 From 2cbe29755502333aa099c0afa89a692f2e5f2c5f Mon Sep 17 00:00:00 2001 From: wxy Date: Fri, 3 Apr 2015 00:12:35 +0800 Subject: [PATCH 725/725] PUB:20150215 How to share files between computers over network with btsync @martin2011qi --- ...ween computers over network with btsync.md | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) rename {translated/tech => published}/20150215 How to share files between computers over network with btsync.md (62%) diff --git a/translated/tech/20150215 How to share files between computers over network with btsync.md b/published/20150215 How to share files between computers over network with btsync.md similarity index 62% rename from translated/tech/20150215 How to share files between computers over network with btsync.md rename to published/20150215 How to share files between computers over network with btsync.md index c6cd7051c4..ac280d2ffd 100644 --- a/translated/tech/20150215 How to share files between computers over network with btsync.md +++ b/published/20150215 How to share files between computers over network with btsync.md @@ -1,10 +1,10 @@ -如何使用btsync通过网络实现电脑间文件共享 +如何使用btsync通过网络实现计算机间的文件共享 ================================================================================ -如果你是使用各式设备在网上工作的这类人,我相信你肯定需要一个在不同设备间同步文件及目录的方法,至少是非常渴望有这种功能。 +如果你是那种使用各式设备在网上工作的人,我相信你肯定需要一个在不同设备间同步文件及目录的方法,至少是非常渴望有这种功能。 -BitTorrent Sync简称btsync,是一个基于BitTorrent(著名P2P文件分享协议)的免费跨平台同步工具。与传统BitTorrent客户端不同的是btsync用于传输加密和访问授权的是不同操作系统及设备中自动生成的键。 +BitTorrent Sync简称btsync,是一个基于BitTorrent(著名P2P文件分享协议)的免费跨平台同步工具。与传统BitTorrent客户端不同的是,btsync可以在不同操作系统及设备之间加密数据传输和基于自动生成的密钥来授予访问共享文件的权限。 -更具体点,当你想要通过btsync共享一些文件或文件夹,相应的读/写键(所谓的秘密编码)已经创建。这些键将会通过不同的途径例如HTTPS链接,电子邮件,二维码等被分享。一旦两台设备通过一个键配对成功,链接内容将会直接在其间同步。如果没有事先设置,传输将不会有文件大小和速度的限制。你可以在btsync中创建账号,以此来创建和管理通过网络分享的键和文件。 +更具体点,当你想要通过btsync共享一些文件或文件夹,相应的读/写密钥(所谓的密码)就创建好了。这些密钥可以通过HTTPS链接,电子邮件,二维码等在不同的设备间共享传递。一旦两台设备通过一个密钥配对成功,其所对应的内容将会直接在其间同步。如果没有事先设置,传输将不会有文件大小和速度的限制。你可以在btsync中创建账号,这样你可以通过 web 界面来创建和管理通过网络分享的密钥和文件。 BitTorrent Sync可以在许多的操作系统上运行,包括Linux,MacOS X,Windows,在 [Android][1]和[iOS][2]上也可以使用。在这里,我们将教你在Linux环境(一台家用服务器)与Windows环境(一台笔记本电脑)之间如何使用BitTorrent Sync来同步文件。 @@ -12,7 +12,7 @@ BitTorrent Sync可以在许多的操作系统上运行,包括Linux,MacOS X BitTorrent Sync可以在[项目主页][3]直接下载。由于Windows版本的BitTorrent Syn安装起来十分简单,所以我们假设笔记本上已经安装了。我们把焦点放到Linux服务器上的安装和配置。 -在下载页面中选择你的系统架构,右键相应链接,选择复制连接地址(或者简单的依靠浏览器判断),将链接粘贴到在终端中用wget下载,如下: +在下载页面中选择你的系统架构,右键相应链接,复制连接地址(或者类似的功能,不同浏览器可能不同),将链接粘贴到在终端中用wget下载,如下: **64位Linux:** @@ -36,11 +36,11 @@ BitTorrent Sync可以在[项目主页][3]直接下载。由于Windows版本的Bi export PATH=$PATH:/usr/local/bin/btsync -或者在在该文件夹中运行btsync的二进制文件。我们推荐使用第一种方式,虽需要少量的输入但更容易记忆。 +或者在该文件夹中运行btsync的二进制文件。我们推荐使用第一种方式,虽需要少量的输入但更容易记忆。 -### 配置Btsync ### +### 配置btsync ### -Btsync带有一个内置的网络服务器被用作其管理接口。想要使用这个接口你需要创建一个配置文件。你可以使用以下命令来创建: +btsync带有一个内置的网络服务器,用作其管理接口。想要使用这个接口你需要创建一个配置文件。你可以使用以下命令来创建: # btsync --dump-sample-config > btsync.config @@ -54,19 +54,21 @@ Btsync带有一个内置的网络服务器被用作其管理接口。想要使 ![](https://farm9.staticflickr.com/8599/15895277793_da63841433_b.jpg) +如果你将来想要优化一下它的配置,可以看一下 /usr/local/bin/btsync 目录下的 README 文件,不过现在我们先继续下面的步骤。 + ### 第一次运行btsync ### 作为一个系统的最高执行者我们需要依赖日志文件!所以在我们启动btsync之前,我们将先为btsync创建一个日志文件。 # touch /var/log/btsync.log -最后,让我们开启btsync: +最后,让我们启动btsync: # btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log ![](https://farm8.staticflickr.com/7288/16327720298_ccf2cbedea_c.jpg) -现在在你的浏览器中输入正在运行btsync监听的服务器IP地址和端口(我这是192.168.0.15:8888),同意隐私政策,条款和最终用户许可协议: +现在在你的浏览器中输入正在运行的btsync所监听的服务器IP地址和端口(我这是192.168.0.15:8888),同意其隐私政策,条款和最终用户许可协议: ![](https://farm9.staticflickr.com/8597/16327720318_d52551fc44_b.jpg) @@ -80,33 +82,29 @@ Btsync带有一个内置的网络服务器被用作其管理接口。想要使 现在这样就够了。在运行接下来的步骤之前,请先在Windows主机(或你想使用的其他Linux设备)上安装BitTorrent Sync。 -### Btsync分享文件 ### +### btsync分享文件 ### -下方的视频将会展示如何在安装Windows8的电脑[192.168.0.106]上分享现有的文件夹。在添加好想要同步的文件夹后,你会得到它的键,通过“Enter a key or link”菜单(上面的图已经展示过了)添加到你安装到的Linux机器上,并开始同步: +这个[视频][5](需要翻墙)展示了如何在安装Windows8的电脑[192.168.0.106]上分享现有的文件夹。在添加好想要同步的文件夹后,你会得到它的密钥,通过“Enter a key or link”菜单(上面的图已经展示过了)添加到你安装到的Linux机器上,并开始同步。 -注释:youtube视频 - +现在用别的设备试试吧;找一个想要分享的文件夹或是一些文件,并通过Linux服务器的网络接口将密钥导入到你安装的“中央”btsync中。 -现在用别的设备试试吧;找一个想要分享的文件夹或是一些文件,并通过Linux服务器的网络接口将键导入到你安装的“核心”btsync中。 - -### 使用常规用户开机自动运行btsync ### +### 以常规用户开机自动运行btsync ### 你们可能注意到了,视频中在同步文件时是使用'root'组的用户创建/btsync目录的。那是因为我们使用超级用户手动启动BitTorrent Sync的原因。在通常情况下,你会希望它开机自动使用无权限用户(www_data或是专门为此创建的账户,例如btsync)启动。 -所以,我们创建了一个叫做btsync的用户,并在/etc/rc.local文件(exit 0行前)添加如下字段: +所以,我们创建了一个叫做btsync的用户,并在/etc/rc.local文件(exit 0 这一行前)添加如下字段: sudo -u btsync /usr/local/bin/btsync/btsync --config /usr/local/bin/btsync/btsync.config --log /var/log/btsync.log 最后,创建pid文件: - # touch /usr/local/bin/btsync/.sync//sync.pid + # touch /usr/local/bin/btsync/.sync/sync.pid -并递归更改/usr/local/bin/btsync的所属用户: +并递归更改 /usr/local/bin/btsync的所属用户: # chown -R btsync:root /usr/local/bin/btsync 现在重启试试,看看btsync是否正在由预期中的用户运行: -Now reboot and verify that btsync is running as the intended user: ![](https://farm9.staticflickr.com/8647/16327988660_644f6d4505_c.jpg) @@ -114,7 +112,7 @@ Now reboot and verify that btsync is running as the intended user: ### 尾注 ### -如你所见,BitTorrent Sync对你几乎就像一个无服务器的Dropbox。我说“几乎”的原因是:当你在局域网内同步数据时,同步在两个设备之间直接进行。然而如果你想要跨网段同步数据,并且你的设备可能要穿过防火墙的限制来配对,那就只能通过一个提供BitTorrent的第三方中继服务器来完成同步传输。虽然声称传输经过 [AES加密][4],你还是可能遇到不想放生的状况。为了你的隐私着想,务必在你共享的每个文件夹中关掉中继/跟踪选项。 +如你所见,BitTorrent Sync对你而言几乎就像一个无服务器的Dropbox。我说“几乎”的原因是:当你在局域网内同步数据时,同步在两个设备之间直接进行。然而如果你想要跨网段同步数据,并且你的设备可能要穿过防火墙的限制来配对,那就只能通过一个提供BitTorrent的第三方中继服务器来完成同步传输。虽然声称传输经过 [AES加密][4],你还是可能会遇到不想发生的状况。为了你的隐私着想,务必在你共享的每个文件夹中关掉中继/跟踪选项。 希望这些对你有用!分享愉快! @@ -123,8 +121,8 @@ Now reboot and verify that btsync is running as the intended user: via: http://xmodulo.com/share-files-between-computers-over-network.html 作者:[Gabriel Cánepa][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) +译者:[martin2011qi](https://github.com/martin2011qi) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出 @@ -133,3 +131,4 @@ via: http://xmodulo.com/share-files-between-computers-over-network.html [2]:https://itunes.apple.com/us/app/bittorrent-sync/id665156116 [3]:http://www.getsync.com/ [4]:http://www.getsync.com/tech-specs +[5]:https://youtu.be/f7kLM0lAqF4