Linux基础

终端是什么?如何“打开一个终端”?

Q: 终端是什么?如何“打开一个终端”?

A: 终端即计算机显示终端,是计算机系统的输入、输出设备。向计算机发出命令的一个"窗口". 要把整个屏幕切换到终端,同时按下Ctrl-Alt-F1 .你一共可以有六个终端,分别对应Alt-F1一直到Alt-F6 .按下Alt-F7可以回到图形界面下。

命令自动补全如何实现?

Q: 命令自动补全如何实现?

A: 使用 Tab 键,例如:在当前主用户目录 [usr@localhost:~]$ 下有一个叫 shiyan 的文件夹,我们想打开其中的某一项 ghoetbuimngvgynb.text, 字符太多记不住且容易输错,只要当前目录下没有其他的文件能与之匹配,则在终端输入"ls shiyan/gho"后按Tab键,shell命令就会自动补齐.

[usr@localhost:~]$ ls shiyan/gho <按Tab键> [usr@localhost:~]$ ls shiyan/ghoetbuimngvgynb


自动补齐功能的另一个作用就是能够提示shell命令,例如:

[usr@localhost:~]$ gre <按Tab键> grefer grep grepjar [usr@localhost:~]$ gre

按照提示的字符继续输入即可.

如何在终端下创建、重命名、删除一个目录?

Q: 如何在终端下创建、重命名、删除一个目录?

A: mkdir(make directory) 命令用来创建一个目录 .例如:

[usr@localhost:~]$ mkdir test

该命令执行后会在当前主用户目录下创建一个名为 test 的子目录. 请注意,在默认情况下,目录需要一层层建立。
mv 命令用来重命名一个目录,例如:

[usr@localhost:~]$ mv test test2

该命令将会在当前目录下把 test 改名为 test2

在指定位置下重命名一个目录需写上路经

[lishu@localhost:~]$ mv my/test my/test2

该命令将会在my/目录下把 test改名为 test2. mv 命令也可以用来移动文件或目录.


rmdir 命令用来删除一个 空的 子目录(注意:所删除的目录必须为空).例如在当前目录下删除名为 test 的子目录,且该子目录下已无内容,

[usr@localhost:~]$ rmdir test

在指定位置下删除一个子目录需写上路经.例如:

[usr@localhost:~]$ rmdir my/test

此时所删除的目录必须为空,否则终端将会报错. 请注意,目录要一层层的删除才行。被删除的目录中,不能有其他目录或文件。如果要将所有目录下的东西都删除,就必须使用 rm -rf test.不过,还是使用rmdir 的危险性小些。也可以尝试通过 -p参数来删除上层目录。

rm(删除文件或目录)

[lishu@localhost:~]$ rm[-fir] 文件或目录

参数: -f : 就是force的意思,强制删除。

-i : 交互模式,在删除前会询问用户是否操作。
-r : 递归删除,常用在目录的删除。

如何在终端下创建、重命名、删除一个文件?

Q: 如何在终端下创建、重命名、删除一个文件?

A:使用touch命令来创建一个文件,可以使用 vi编辑器对它进行编辑。
亦可使用cat创建文件 $ cat > filename
文件的重命名和删除同目录用 mv 和 rm

如何在终端下查看一个文件的类型、大小、权限信息?

Q: 如何在终端下查看一个文件的类型、大小、权限信息?

A: 可以用ls -l +文件名 直接查看文件的大小,权限信息
使用命令 file + 文件名可以查看该文件的类型等详细信息

环境变量是什么?如何设置环境变量?

Q: 环境变量是什么?如何设置环境变量?

A: Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。
三种配置环境变量的方法:
1.修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。

(1)用文本编辑器打开/etc/profile

(2)在profile文件末尾加入:

JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH

(3)重新登录

注解:

a. 你要将 /usr/share/jdk1.5.0_05jdk 改为你的jdk安装目录

b. linux下用冒号“:”来分隔路径

c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。

d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。

e. export是把这三个变量导出为全局变量。

f. 大小写必须严格区分。

2. 修改.bashrc文件  

这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。

(1)用文本编辑器打开用户目录下的.bashrc文件

(2)在.bashrc文件末尾加入:  

set JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME set PATH=$JAVA_HOME/bin:$PATH export PATH set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH

(3)重新登录

3. 直接在shell下设置变量

不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。

只需在shell终端执行下列命令:

export JAVA_HOME=/usr/share/jdk1.5.0_05 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

命令的历史记录?如何使用命令的历史记录?

Q: 命令的历史记录?如何使用命令的历史记录?

A: 查看命令行历史
  ......history

每当在shell中输入命令时,命令就会保存在主(home)目录中一个名为.bash_history的文件里(文件名之前的点号表示这是一个隐藏文件,只有用ls -a才能显示出来)。在默认情况下,这个文件只保存最新的500条命令行历史记录。要查看命令行历史列表,只需输入history命令。如下所示:
  ......$ history
...... 
......  ......496 ls
......  ......497 cd rsync_ssh
......  ......498 ls
......  ......499 cat linux
......  ......500 exit
因为正在查看的命令可能会有500条,它们会快速地闪过屏幕,在到达最后一条记录之前,快得看不清任何内容。想要一次只查看一个屏幕的内容,就得靠老朋友less命令了。如下所示:   ......$ history | less 现在就能非常容易地逐一查看结果了。 再次运行最近运行过的命令   ......!! 如果想再次运行刚刚使用过的那条命令,只要输入两个叹号(!!),就能查看命令历史文件,并运行其中的最后一条命令。如下所示:   ......$ pwd ....../home/scott ......$ !! ......pwd ....../home/scott 注意,先看到的是将要运行的实际命令,接着看到的是该命令的执行结果。让计算机做些乏味的工作,这是个非常有用的办法。

如何在终端强制退出一个命令行程序?

Q: 如何在终端强制退出一个命令行程序?

A: 快捷键 Ctrl+C

如何强制结束一个正在运行的进程?

Q: 如何强制结束一个正在运行的进程?

A: kill命令
当需要中断一个前台进程的时候,通常是使用组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。至于终止后台进程的原因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。
kill命令是通过向进程发送指定的信号来结束进程的。如果没有指定发送信号,那么默认值为TERM信号。TERM信号将终止所有不能捕获该信号的进程。至于那些可以捕获该信号的进程可能就需要使用kill(9)信号了,该信号是不能被捕捉的。

可以使用PID或启动该进程的命令名称,使用kill配合ps,pstree等命令来杀死进程,kill后面必须要加上PID(或job number)。

如果要删除某个服务就可以用killall,因为它可以将系统所有以某个命令名称启动的进程全部删除。

ps aux | grep Windows看到各个进程,然后找到要关的进程的id号。然后kill id 就可以了。

如何快速查找一个进程是否正在运行?

Q: 如何快速查找一个进程是否正在运行?

A: 用 ps -aux | grep 进程名  查看进程是否存在(推荐)

或用ps -ef, 然后检测这个程序名是否在里面。

也可以用一个文件,设置咨询锁。进程启动时试图打开文件并锁定,如果成功,则说明没有已启动进程。

如何查看当前登陆的所有在线用户?

Q: 如何查看当前登陆的所有在线用户?

A: 使用who,w,finger均可;users命令信息较少

如何查看当前系统的内核版本?

Q: 如何查看当前系统的内核版本?

A: 可以使用uname -r来查看当前内核版本。
如果使用uname -a可以查看包括内核版本,机器硬件信息、网络节点名、操作系统名字等信息。

如何查看当前系统的发行版本?

Q: 如何查看当前系统的发行版本?

A: 对于redhat类(centos等)可以 cat /etc/redhat-release 对于2.6以上的内核,支持proc文件系统的,可以

cat /proc/version

cat /etc/issue #查看issue文件

lsb_release -a #用命令查看发行版本信息

如何将命令放到后台执行?

Q: 如何将命令放到后台执行?

A: “&“ 命令可用在其他任何命令的后面,它用来通知计算机在后台运行某一命令。通过把作业放在后台,用户可以继续使用当前的shell来处理其他命令;如果命令在前台运行的话,那么用户在此进程结束前不能继续使用当前的shell。

如何将命令放到后台“暂停”?

Q: 如何将命令放到后台“暂停”?

A: 即前台进程的挂起 :ctrl+Z;
后台进程挂起:kill -stop PID

如何观察当前后台作业状态?

Q: 如何观察当前后台作业状态?

A: 使用jobs命令

jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的 PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;

如何将后台作业拿到前台处理?

Q: 如何将后台作业拿到前台处理?

A: 使用fg命令
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

如何让作业在后台运行?

Q: 如何让作业在后台运行?

A: 使用bg命令
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

如何解压缩文件?

Q: 如何解压缩文件?

A: .tar.gz #tar xvzf file.tar.gz 或 gzip -dc file.tar.gz | tar xvf -

.gz #gunzip file.gz

.bz2 #bunzip2 file.bz2

.tgz #tar -xzf file.tgz

.zip #unzip file.zip

.7z #uncompress file.Z

.rar #unrar e file.rar

root是什么?如何成为root?

Q: root是什么?如何成为root?

A: 根用户(root) 就是可以控制整个系统所有事情的用户.我们可以把他叫做 "超级用户"。
要成为根用户,首先打开一个终端.然后,输入:

su -

注意这个小短线"-" 是很重要的-- 它会加载设置使你的命令更容易被系统找到和执行. 然后,输入根用户的密码.在安装Fedora的时候,系统会要求你指定这个密码. 如果你是登录到全屏幕的那种终端,你只要在"Login:"提示符后面输入"root"这个用户名,然后输入正确的密码.

安装软件后如何启动?

Q: 安装软件后如何启动?

A: 首先,在应用程序菜单里找找看. 许多程序会自动添加到菜单里.
如果在菜单里找不到,你可以使用终端.许多程序打入它们的名字就可以运行了.例如,要打开网页浏览器,mozilla,打开一个终端然后输入: mozilla 如果在菜单里找不到,程序名也不清楚,用下面的命令来列出程序名: rpm -ql packagename | grep bin

runlevel是什么意思?

Q: runlevel是什么意思?

A: runlevel即运行级别
运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统下不同的运行模式。运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多。
例如在大多数linux操作系统下一共有如下6个典型的运行级别: 0 停机 1 单用户,Does not configure network interfaces, start daemons, or allow non-root logins 2 多用户,无网络连接 Does not configure network interfaces or start daemons 3 多用户,启动网络连接 Starts the system normally. 4 用户自定义 5 多用户带图形界面 6 重启
在Debian Linux中2-5这四个运行级别都集中在级别2上。这个级别也是系统预设的正常运行级别。


运行级别是一个数字,这表示你想你的计算机启动到什么“模式”。例如,运行级别5是图形模式,3是文本模式。 运行级别1是“单用户”模式,为解决问题的用途。


用命令init number进行runlevel的切换。

如何设置程序开机自启动?

Q: 如何设置程序开机自启动?

A: 有两种选择,一种是早在还没有登录的时候就运行,另一种是在你登录之后.

要在启动之后登录之前运行一个命令, 要把这个命令加到/etc/rc.local:

1.打开一个终端. 2.登录为根用户. 3.把这个文件用你喜欢的文本编辑器打开: gedit(或vi) /etc/rc.local 4.在最后加上一行,写上你要运行的命令.

如果你要在登录之后执行这个程序:

5.先登录. 6.登录之后,然后单独 打开你要自动运行的那个程序. 7.然后注销,注销时选择"保存当前设置".

从此之后,你一旦登录,这个程序就会自动运行, 如果你要停止它自动启动,只要:

8.登录. 9.登录之后,然后关闭 自动运行的那个程序. 10.然后注销,注销时选择"保存当前设置".

选择"保存当前设置"会在默认的情况下, 准确地保持注销之前的样子.

如何修改自己的口令?

Q: 如何修改自己的口令?

A: 用passwd命令

输入passwd< Enter>;

在(current) UNIX passwd:下输入当前的口令

在new password:提示下输入新的口令(在屏幕上看不到这个口令);

系统提示再次输入这个新口令。

输入正确后,这个新口令被加密并放入/etc/shadow文件。

如何在命令行下执行一个文件

Q: 如何在命令行下执行一个文件

A: 用"sh"来运行文件,或者"./"

比如你在/usr/temp文件夹中有一个可执行文件"flash",你可以在终端中输入:
sh /usr/temp/flash

或者进入文件夹 cd /usr/temp 然后运行:
./flash

如何更改文件为可执行文件

Q: 如何更改文件为可执行文件

A: chmod +x 文件名

什么是数据流重定向?如何实现数据流重定向?

Q: 什么是数据流重定向?如何实现数据流重定向?

A: Linux下数据流重导向是指根据命令的输出不打印在屏幕上而是直接输入到其他设备比如文件或打印机或垃圾箱
用 “>” “>>”来重导向。
0-标准输入流(stdin),1-标准输出流(stdout),2-标准错误流 (stderr)。
"2>&amp;1"的意思就是将stderr重定向至stdout,并一起在屏幕上显示出来。如果不加数字,那么默认的重定向动作是针对 stdout(1)的,比如”ls -l > result”就等价于”ls -l 1 > result”。这样便于我们更普遍性的理解重定向过程。
下面举例说明:
#cat std.sh
#!/bin/sh
echo“stdout”
echo “stderr” >&amp;2
#/bin/sh std.sh 2>&amp;1 > /dev/null
stderr
#/bin/sh std.sh > /dev/null 2>&amp;1
第一条命令的输出结果是stderr,因为stdout和stderr合并后一同重定向到/dev/null,但stderr并未被清除,因此仍将在屏幕中显示出来;第二条命令无输出,因为当stdout重定向至/dev/null后,stderr又重定向到了stdout,这样stderr也被输出到了/dev/null。

/dev/null是“垃圾黑洞”,所有无用的东西都可以写到里面区。

什么是管道操作?典型的管道操作举例?

Q: 什么是管道操作?典型的管道操作举例?

A: 管道是一种进程间的通信机制,管道命令符是 “ |”。
1.$ ls –al /etc | less 该命令使用ls命令输出后的内容,就能够被less读取,并且利用less的功能,我们就能前后反动相关的信息,很方便。

2.管道命令“|”仅能处理通过前面一个命令传来的正确信息,也就是标准输出的信息,对于标准错误,并没有直接处理的能力。

3.最典型的就是grep,$ ls -l | grep mbox
上面的命令,将 ls -l的输入作为grep的输入,每个管道前后都是“命令”。后一个命令的输入时前一个命令的输出。
基本的管道命令:

选取命令: cut、grep

排序命令: sort,wc,uniq

双向导向:tee

字符转换命令:tr,col,join,paste,expand

拆分命令:split

参数代换:xargs

如何查看系统进程的CPU、内存等运行时信息?

Q: 如何查看系统进程的CPU、内存等运行时信息?

A: 用top或 ps -aux命令

Fedora基础

从源代码编译安装软件的方法?

Q: 从源代码编译安装软件的方法?

A: 从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件,他会告诉你怎样才能成功安装 :)
通常从源码包安装软件的步骤是:
tar jxvf gtk+-2.4.13.tar.bz2 解开源码包
cd gtk+-2.4.13/ 进入源码目录./configure

似乎在某些环境下./configure会造成终端退出,而使用. configure则会正常运行,如果有这个现象,就试试.configure

通过configure程式猜测主机信息,最终建立Makefile,以完成make,所以如果./configure不成功,而去make的话,就会出现"make: *** No targets specified and no makefile found. Stop."
make 当./configure成功结束后,就开始正式编译程式了.
make install 编译成功后使用make install安装
make uninstall 某些软件支持卸载,可能使用该方法卸载,如果支持的话,通常会在README中写到(似乎比较少)

configure程式带有非常多参数,能通过 ./configure --help 查看周详内容,通常位于前面的是常规configure的
参数说明,末尾是该程式的可用参数说明。
./configure --prefix=/usr 指定安装目录,通常从源码包编译安装的软件默认会放在/usr/local下,因为这是FHS(Filesystem Hierarchy Standard)的规定.

使用rpm包安装软件的方法?

Q: 使用rpm包安装软件的方法?

A: RPM可以自行进行安装。命令为rpm -[Options] [PackageName].rpm

安装软件包时候,通常[Options]设置为“ivh”,卸载软件包时,通常设置为“e”。

查询所有安装的软件包,使用rpm -qa,查询特定安装的软件包,使用rpm -q [PackageName]。
例:
rpm软件包的安装可以使用程序rpm来完成。执行下面的命令:

rpm -i your-package.rpm

其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。安装过程中可能出现下面的警告或者提示:

... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有的文件,缺省时这样的情况下是无法正确安装的可以用 rpm --force -i 强制安装即可

... is needed by ...

... is not installed ... 此包需要的一些软件你没有安装可以用

rpm --nodeps -i 来忽略此信息

也就是说,rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能.

使用yum源安装软件的方法?

Q: 使用yum源安装软件的方法?

A: 安装yum并配置好之后;使用命令 yum install 软件名 即可以方便的安装软件.

“服务”的概念?如何在Fedora 9/11中管理服务

Q: “服务”的概念?如何在Fedora 9/11中管理服务

A: 服务"service"是在你开机之后就自动运行的一种程序,而且它在后台运行.例如,网络"network"服务建立了你的网络连接使它能一直正确运行.

在Fedora里有两种方法管理服务,一个是用图形界面工具,还有就是用终端 .如果你不是在图形界面下,就用命令行的方法.

要用图形界面工具可以在应用程序菜单,在系统设置- >服务器设置- >服务 :

1.检查一个服务是不是在运行 :从列表里选择这个服务,在状态一栏里,就可以看到服务的运行状态.

2.开始一个服务 :从列表里选择这个服务,点击开始 .

3.停止一个服务 :从列表里选择这个服务,点击停止.

4.让一个服务在开机后自动运行 :从列表里选择这个服务,在它前面的那个框里选中.

5.让一个服务在开机后不要自动运行 :从列表里选择这个服务,在它前面的那个框里取消选中.

使用终端命令的方式 (替换服务名成为你要的服务):

你必须是根用户(root)来做更改.

检查一个服务是不是在运行 :service 服务名 status

开始一个服务 : service 服务名 start

停止一个服务 : service 服务名 stop

让一个服务在开机后自动运行 : 1.打开ntsysv程序: ntsysv 2.在列表里找到你要的服务然后用空格键来选中.标上*的服务会在开机的时候自动加载.

返回顶部