精华内容
下载资源
问答
  • Linux的基本操作

    千次阅读 2008-06-14 23:01:00
    第3部分: Linux的基本操作 本章内容: 3.1 基础知识3.1.1 文件名3.1.2 使用不同的目录3.1.3 执行一个程序3.1.4 改变路径(PATH)3.1.5 关闭计算机3.1.6 处理挂起的程序3.1.7 命令选项3.2 用户,密码,文件访问...
    3部分: Linux的基本操作
    
     
    本章内容:
     
     
     
     
     
    Linux 系统区分英文字符的大小写。比如,myfile, Myfile 和 myFILE表示的是三个不同的文件。同样,用户密码和登录名也需要区分大小写(这里沿用了Unix 和 C 语言的命名规则)。命名目录和命名文件的规则是相同的。除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux 命令也使用小写字符。
     
    Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义) 在Linux 的 命令解释器(shell)中有特殊的含义(shell 类似于 DOS下的命令处理器 COMMAND.COM)。这样的转意字符有:"?"(问号),"*"(星号), " "(空格), "$"(货币符), "&", 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有" "(空格),但建议用户用"_"(下划线)来替代。
    "/" 既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的"/),因此"/"不能出现在文件名中。
    和DOS一样,"." 和 ".." 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。
     
    正如DOS 中一样,我们不能将文件命名为 . 或者 .. (点或者双点)——它们分别代表当前目录和当前目录的父目录(上一级目录)。这跟DOS中是完全一致的。
     
    下面列出了一些转意字符及其意义:
    * = 用于匹配任意长度大于等于零的字符序列。以 . (点)开头的文件名除外。
    = 用于匹配任意单个字符
    [abC1] = 用于匹配枚举集合中任意单个字符。比例中,集合由‘a’,‘b’,C’,‘1’组成。
    [a-z] = 用于匹配任意小字字母
    [A-F] = 用于匹配任意大写字母
    [0-9] = 用于匹配任意个位数字
    [a-zA-Z0-9] = 用于匹配任意字母(大小写)或者数字。
     
     / (反斜线)也是一个特殊的字符。它屏蔽后继特殊字母的特殊含义(转意),使该字符仅取其符号所代表的字面意义。
     
    : 下面的命令会列出当前目录中除了文件名以 . 开头的文件之外的任何文件。
     
    ls *
     
    与此等价的命令是ls 或者 dir (不需要后跟 “*”)。 文件名以 . 开头的文件不被列出是因为 “.”是文件名的首字符,它并不与“*”匹配。我们可以把文件名以 . 开头的文件等价地理解成DOS中隐藏文件。使用ls –a (带 all 选项的ls 命令)或者 ls  .* 命令来查看这些“点”文件。“点”文件在用户的home目录中很常见。它们通常是用户级的配置文件。
     
    以下命令可列出当前目录中文件名含 . 的任何文件 (文件名以点开头的除外)。
     
    ls *.*
     
    以下命令可列出当前目录中文件名含两个点的任何文件(文件名以点开头的除外)。
     
    ls *.*.*
     
    请注意Linux中没有与DOS中文件扩展名相应的概念,但是你可以使用扩展名。例如,一个文件可以命名为 my_text.txt.zip 。另有一些DOS中的命名特色在Linux中是完全找不到的(比方说Micro~1.doc )。
     
    以下的命令会找出扩展名为“htm”后再跟任意一个字符的文件:
     
    locate *.htm?
     
    以下命令可列出当前目录中所有文件名以a,b或者任意大写字母开头的文件:
     
    ls [abA-Z]*
     
    以下命令可列出当前目录中所有文件名以a开头,以n结尾的文件:
     
    ls a*n
     
    命令行自动完成是一个有用的功能——使用[Tab]键可以极大的节约时间,使处理复杂的长文件名变得轻松。例如,使用自动完成的功能,可以极大的减化输入以下这个长文件名的工作。
     
    dir Eurosong/ 2000/ Olson/ Brothers/ -/ Fly/ on/ the/ wings/ of/ love/ /(denmark/).mp3
     
    我只要输入
     
    dir Eu<Tab>
     
    如果没有其他文件的文件名以Eu 开头,输入<Tab>之后,系统会自动输入文件名的其余部分。
    如果还有其他文件的文件名也以Eu开头,我们可以查看一下可能的选择(系统会列出),进一步输入文件名中的下一两个字符,从而使文件的选择唯一化,系统的自动写成功能就可以启动完成整个长文件名的输入了。文件名中的反斜线作用在于提示系统其后继的字符“空格”仅取其字面意义,即,文件名中包含的确实是空格。
     
    文件名中的有“怪”字符怎么办?大部分问题可以通过自动完成功能解决。 另外,处理文件名中含有转意字符的文件,我们可以使用成对的‘’(单引号)。由于这些特殊的转意字符被单引号引用,命令解释器不会试图去解释其特殊意义。例如,给一个名为my file*的文件更名(文件名中含空格和*), 我们可以使用:
     
    mv 'my file*' filename_without_weird_characters.txt
     
    请注意我使用了一对‘’号 (单引号)。使用成对的“”(双引号)引用通常没有使用‘’有效。如果你使用“”号(双引号), 部份转意字符可能会被命令解释器加以解释(这就意味着它们可能被转意,而不是保持字面意义)。
     
    跟从UNIX的传统,在Linux上,创建文件时,我们可以在文件名中可以使用几乎任何字符,包括不可打印字符(控制字符)。但是这情况非常少见。如果你在遇到文件名使用了这些字符,你可能会感觉很异样。我通常会在适当的位置使用一个转意字符*对这种文件进行重命名。我会先使用ls命令确认我要重命名的文件的文件名,然后对这个文件进行更名(使用mv 命令):
     
    ls –l myfile*y.html
    mv myfile*y.html myfile.html
     
    (此例中我假定非标准字符位于字母e和y之间)
     
    这里举一个关于在文件名中使用非常规字符的极端的例子: 创建一个文件名以短横线 - 开头的文件,再等它删除。 用常规的删除命令似乎没有办法(因为短横钱通常是用来引导命令选项的)。例如:
     
    dir > -junk
     
    以上命令将创建一个以-junk为名的文件(跟DOS类似,符号 > 将dir 命令的输出重定向到一个名为“-junk”的文件。常规的删除文件命令无法把这个文件删除。我们需要使用:
     
    rm ./-junk
     
    文件名前的./ 表示当前目录。在此其目的是避免文件名把的首字符 - 被命令解释器当作rm命令的选项引导。事实上没有必要在文件名中使用这些特殊字符。遵从传统的命名规则,不会过多地使事情复杂化。
     
    除了使用自动完成,单引号,双引号之外,我们也可以利用 / (反斜线) 对文件名中包含了非常规字符的文件进行操作。反斜线的作用在于屏蔽其后继字符的特殊意义。例如,我可以使用如下命令创建一个以 *?[ 为文件名的文件:
     
    touch /*/?/[
     
    (touch 命令创建一个空文件。如果同名文件已存在,则改变该文件最后更新的日期/时间)。
     
     
    Linux的文件系统目录树庞大而复杂。如果你非常熟悉它的话,会极大地提高你应用Linux的技巧。简单地说,典型的Linux包含五大文件系统目录。根据你自己系统的需要和大小,这些文件系统目录能安装在单个或多个物理硬盘的分区中。(如果需要的话,单个文件系统目录也可以安装在不同的设备中。)
     
    /”根目录
    包含基本的操作系统和维护工具。这个目录的文件可以启动系统,并且需要的话,可以完成紧急维护和修复的功能。
     
    /usr”目录
    包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux发行版本的主要的应用程序,譬如,Netscape。
     
    /var”目录
    包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。
     
    /home”目录
    包含用户的文件:参数设置文件、个性化文件、文档、数据、EMAIL、缓存数据等。这个目录在系统省级时应该保留。
     
    /proc”目录
    整个包含虚幻的文件。它们实际上并不存在磁盘上,也不占用任何空间。(用 ls –l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。
     
    /”根目录部分有以下子目录:
     
    /bin 系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。
     
    /sbin 系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但要指定目录。)
     
    /etc 操作系统的配置文件目录。
     
    /root 系统管理员(也叫超级用户或根用户)的Home目录。
     
    /dev 设备文件目录。LINUX下设备被当成文件,这样一来硬件被抽象化,便于读写、网络共享以及需要临时装载到文件系统中。正常情况下,设备会有一个独立的子目录。这些设备的内容会出现在独立的子目录下。LINUX没有所谓的驱动符。
     
    /lib 根文件系统目录下程序和核心模块的共享库。
     
    /boot 用于自举加载程序(LILO或GRUB)的文件。当计算机启动时(如果有多个操作系统,有可能允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含LINUX核(压缩文件 vmlinuz),但LINUX核也可以存在别处,只要配置LILO并且LILO知道LINUX核在哪儿。
     
    /opt 可选的应用程序,譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的X-WINDOWS应用程序中,主执行程序在/usr/bin目录下)
     
    /tmp 临时文件。该目录会被自动清理干净。
     
    /lost+found 在文件系统修复时恢复的文件。
     
    /usr”目录下比较重要的部分有:
     
    /usr/X11R6 X-WINDOWS系统(version 11, release 6)
     
    /usr/X11 同/usr/X11R6 (/usr/X11R6的符号连接)
     
    /usr/X11R6/bin 大量的小X-WINDOWS应用程序 (也可能是一些在其它子目录下大执行文件的符号连接)。
     
    /usr/doc LINUX的文档资料(在更新的系统中,这个目录移到/usr/share/doc)。
     
    /usr/share 独立与你计算机结构的数据,譬如,字典中的词。
     
    /usr/bin和/usr/sbin 类似与/”根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。
     
    /usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在“main”安装后,这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。
     
    /usr/local/bin 可能是用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接。
     
    需要理解的是:所有目录出现在单一的文件目录树下,即使这些目录在不同的分区,物理驱动器(包括软驱),或者甚至分布在网络上。所以,在LINUX下没有类似在DOS下的驱动符。在DOS或WINDOWS下的驱动符,在LINUX下以一个装载位置下的子目录的形式出现。
     
    大多数的LINUX发行版本,目录系统很完善并且标准(Linux Standard Base发布了微小的区别)。LINUX目录系统和典型的商业UNIX目录系统完全相似。
     
    总结来说:
     
    bullet 用户应该将文件存在/home/user_login_name目录下(及其子目录下)。
    bullet 本地管理员大多数情况下将额外的软件安装在/usr/local目录下并符号连接在/usr/local/bin下的主执行程序。
    bullet 系统的所有设置在/etc目录下。
    bullet 不要修改根目录(“/”)或/usr目录下的任何内容,除非真的清楚要做什么。这些目录最好和LINUX发布时保持一致。
    bullet 大多数工具和应用程序安装在目录:/bin, /usr/sbin, /sbin, /usr/x11/bin, /usr/local/bin。
    bullet 所有的文件在单一的目录树下。没有所谓的“驱动符”。
     
    更多关于/proc目录(仅为真正好奇的读者)
     
    /proc“虚拟”文件系统目录是一个实时的居留内存的文件系统,用于监视操作系统内核和在计算机上运行的进程的状态。/proc目录是完全虚拟的,即它不写入任何特殊的磁盘或其它永久的媒体,它仅居留于计算机的内存,并且它是不断地更新以反映系统的变化。/proc目录的大小总是0,最后的日期总是当前日期。手工改变/proc目录下文件的内容可能会改变系统设置。许多LINUX使用工具利用/proc目录作为信息资源,如,dmesg, ps, top等。
     
    /proc目录的内容:
     
    /proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。
     
    /proc/devices 当前运行内核所配置的所有设备清单。
     
    /proc/dma 当前正在使用的DMA通道。
     
    /proc/filesystems 当前运行内核所配置的文件系统。
     
    /proc/interrupts 正在使用的中断,和曾经有多少个中断。
     
    /proc/ioports 当前正在使用的I/O端口。
     
    举例,使用下面的命令能读出系统的CPU信息。
    cat /proc/cpuinfo
     
    3.1.3 执行一个程序
     
    在命令行输入可执行程序的文件名但是程序不能运行?有三种可能性:
     
    第一种可能性:没有输入正确的文件名。注意:Linux文件名是区分大小写的!举个例子,输入“Pico”或者“PICO”并不能启动pico编辑器程序。
     
    第二种可能性:程序不在缺省路径PATH下?在Linux和其他的Unix下,可执行程序必须在你的PATH下面你才能够运行。如果程序所在的目录不在缺省路径下,你可以进入到程序所在的目录:
     
    cd the_program_directory          (the_program_directory是程序所在的目录名)
    ./program_name                    (program_name是程序的文件名)
     
    或者你可以输入程序完整的路径名如下:
     
    /the_program_directory/./program_name
     
    注意,必须在程序名前面加上点“.”和斜杠“/”才能够正确运行。这是Linux的另外一个安全特性,可以使“特洛伊木马程序”更难于入侵。点“.”指的是当前目录,斜杠“/”是文件和目录之间的间隔符(DOS用的是反斜杠“/”)。
     
    可以用一下命令来检查一下缺省路径:
     
    echo $PATH
     
    如果忘记了可执行程序的文件放在哪一个目录下面了,可以用以下命令查找:
     
    find / -name “netscape”
     
    以上命令从根目录“/”开始查找文件名叫“netscape”的程序。用这个命令可能速度更快一些:
     
    locate netscape
     
    (locate命令运行速度更快是因为它依赖于系统预先建立的文件数据库。这个数据库由一个在背景运行的程序cron来建立。因为cron一般安排在夜间运行,所有如果你经常在夜晚关机,就不要依赖locate可以找到你要的文件,也不要巴望locate可以找到刚刚才安装的软件名称)
     
    请注意,PATH对于超级用户root和普通用户一般来说是不相同的。超级用户root的PATH包括/sbin和/usr/sbin,而普通用户一般不包括。所以,普通用户不能执行在/sbin下面的文件,除非他们指定程序的全路径名(目录加文件名)。还有,如果你是使用su命令从普通用户变成超级用户root的,因为继承了普通用户的缺省路径PATH,要执行/sbin目录下的文件,还是要指定程序的全路径名。
     
    如果你知道程序的名字但是不知道程序的全路径名,可以用以下命令:
     
    which  netscape
     
    就可以找到所有叫做netscape的文件的全路径名
     
    第三种可能:程序可能是不可执行的。如果是这个原因,把它改成可以执行的(必须是超级用户root或者文件的所有者)
     
    chmod a+x my_file
     
    这个命令把“my_file”变成是所有人都可以执行的。检查是否可行:
     
    ls –l my_file
     
    请注意,在Linux和Unix下,修改文件的扩展名(比如.exe或者.bat)并不能使文件变成可以运行。文件能够被执行需要“可执行访问模式”,而不是象DOS下的“文件属性”.
     
    3.1.4 改变路径(PATH)
     
    一般来说,你不需要去修改缺省路径PATH。
     
    PATH是当你要求执行程序时,文件搜索的目录列表。你可以用以下命令检查你的PATH
     
    echo $PATH
     
    比如说,在我的系统里,显示用户yogin的PATH为:
     
    /opt/kde/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/yogin/bin
     
     “:”是间隔符,以上的PATH代表以下的目录表:
     
    /opt/kde/bin
    /usr/local/bin
    /bin
    /usr/bin
    /usr/X11R6/bin
    /home/yogin/bin
     
    以下是在我系统上的超级用户root运行 "echo $PATH" 的结果:
     
    /opt/kde/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
     
    你可以修改文件/etc/profile里以“PATH=”打头的行,这样所有用户的缺省路径都将被修改,我一般用pico编辑器:
     
    pico -w /etc/profile
     
    (可选项 -w 用于关闭文件的自动换行)
     
    你必须重新登录,才能验证修改的结果。仅修改个别用户的缺省路径,可以编辑文件:
     
    /home/user_login_name/.bash_profile
     
    注意文件名前面的“.”。如果文件名的第一个字符是“.”,通常这个文件是不可见的,必须用
    ls –a的命令显示。
     
    如果你真的想要当前目录在你的缺省路径PATH里,在你的PATH里加上“.”。
     
    /etc/.bash_profile 文件看起来可能是这样子的
     
    PATH="$PATH:$HOME/bin:"."
    export PATH
     
    这个命令从环境变量里得到PATH(对于所有用户,PATH在/etc/profile文件里),然后加上用户的$HOME目录(比如,用户susan的$HOME目录一般就是/home/susan目录),再加上“.”指的是当前目录。修改完PATH或者其他环境变量后,一般要使用export命令。这样才能使所有环境变量在修改之后,在设置脚本之外的环境都是可视的。
    3.1.5 关闭计算机
     
    在关闭计算机之前最好把所有的运行程序都关闭。从GUI的主菜单(GNOME或者KDE)选择“Logout”。接着,在logout的窗口里,选择”Shutdown”。
     
    你也可以采用另外一种办法,在字符终端,按住<CTRL><ALT><DEL>(三个键同时按住),等待系统关机完成后,在机器重新启动的时候关掉计算机电源。如果你在X-Windows里,先按<CTRL><ALT><F1>(三个键同时按住)切换到字符终端,然后再按<CTRL><ALT><DEL>。
     
    从来不要在未正常关机的情况下关闭计算机的电源,否则下一次重新启动可能会有硬盘出错的信息。一般来说,由于不正常关机导致的硬盘错误会被系统自动修复,但是在某些场合下也可能导致严重的问题,你可能要手工修复损坏的文件或者重新安装系统!
     
    如果你希望按住<CTRL><ALT><DEL>只是关闭计算机而不是重新启动,你可以编辑文件/etc/inittab。这个文件看起来如下:
     
    # Trap CTRL-ALT-DELETE
    ca:ctrlaltdel:/sbin/shutdown –t3 –r now
     
    root用户登陆,把文件修改如下:
     
    # Trap CTRL-ALT-DELETE
    ca:ctrlaltdel:/sbin/shutdown –t3 –h now
     
    #”打头的行只是注释行,只是给人看的,对计算机不起影响
    t3”告诉shutdown程序在关闭所有的进程之前等待“三秒钟”
    r”选项指的是reboot(重新启动), “h”选项指的是halt(关机)
     
    如果你是root用户,也可以直接使用shutdown命令关机。这个命令可以在用于关闭本地和远程的计算机。但是最常用的是当本地计算机的键盘不起作用(由于系统挂住等原因),无法按<CTRL><ALT><DELETE>时从远程登陆后使用shutdown命令关机。
    telnet name_of_machine_with_no_operatable_keyboard
     
    [以一般用户登陆到远程计算机name_of_machine_with_no_operatable_keyboard]
     
    su root
     
    [登陆到root用户]
     
    /sbin/shutdown –rn now
     
    [关闭计算机]
     
    这个命令跳过标准的关机程序,所以关机的速度很快,当系统变得很不稳定的时候特别有用。(选项-n在重新启动之前强行中止所有的进程)
     
    注意,出于安全的考虑,你不能在远端或者通过因特网使用root用户直接登陆。你必须先login到一般用户,然后执行su root命令,输入正确的秘密后进入到超级用户root.
     
    你也可以使用shutdown把关机的时间安排得往后一点
     
    /sbin/shutdown –r 23:59
     
    将在午夜0点之前的一分钟重新启动计算机。 或者
     
    /sbin/shutdown –r  +1
     
    将在你命令输入后的一分钟重新启动计算机
     
    如果shutdown命令对你来说太长太难记了,也可以使用以下命令:
     
    reboot        (重新启动)
    halt          (关机)
     
    另外一个比较偏门的办法是把计算机切换到runlevel 0 (关机状态) 或者runlevel 6 (重新启动状态)。命令如下:
     
    init 0               (关机)
    init 6        (重新启动)
     
    关于不同的runlevel的描速可以在文件/etc/inittab里找到。
     
    3.1.6 处理挂起的程序
     
    有错误的程序在Linux下照样会引起系统挂起没有响应。但是一个崩溃的程序一般不会影响操作系统本身,所有你不需要经常因为某个程序崩溃而重新启动系统。很多Linux的服务器运行超过一年也不需要重新启动。按我们的经验,一个不太稳定的操作系统一般是由硬件或者不正确的系统配置引起的。比如,我们多次碰到奔腾处理器的过热问题(CPU风扇转的不如所要求的速度快或者干脆停了,CPU芯片与散热片之间由于有赃东西导致接触不太紧密),质量不好的内存条,速度不匹配的内存条,错误的BIOS设置(你最好把一些先进功能的设置去掉,让Linux来负责这些设置)。“signal 11”是一个典型的与硬件有关的出错信息,特别是当你执行一些要求复杂运算的任务:Linux安装,内核的编译等等。如果你的奔腾芯片有过热的现象(特别是早期的一些奔腾芯片),这里有一些小诀窍让它“冷却”:清洗芯片上的散热片,更换CPU风扇,把计算机用机壳装起来(一些计算机玩家喜欢“裸机”),在计算机内多安装一个风扇,不要“超频”,减少一些不必要的任务,等等,还有,使用空白屏幕替代很复杂的屏幕保护。
     
    非真正的系统挂机
     
    有些程序运行时看起来好像是系统挂住了,其实是在等待用户的输入。比较经常碰到的是一些程序的命令行需要输入对应的文件名作为选项,但是用户只输入程序名却没有给需要的文件名,程序就假设用户即将在标准输入终端上输入文件名,于是处于等待状态。比如命令:
     
    cat
     
    输入回车后,看起来好像没有响应,其实程序在等待你的键盘输入。按住<CTRL>D(代表“文件结束”)就可以看到真正的结果了。
     
    再举另外一个例子:我在用户新闻组上看到很多关于使用tar命令解压一个下载的文件时,引起系统挂死的问题。比如:
     
    tar -zxv my_tar_file (命令错误!)
     
    其实这也是在等待用户输入。因为命令没有带选项“-f 文件名”,所以文件my_tar_file并不被认为是一个文件名。正确的命令应该是:
     
    tar –zxvf my_tar_file
     
    要注意的是文件名必须紧跟在选项-f后面,否则照样出错,比如:
     
    tar –zxfv my_tar_file (命令错误!)
     
     
    出错的程序都可以被中止
     
    一个在前台运行的文本程序可以在任何时候使用<CTRL>C中止,但是这对比较大的应用程序不起作用,因为这些应用程序为避免用户的误操作,通常把<CTRL>C的功能屏蔽。当程序被挂起时,你可以使用<CTRL>Z将程序送到后台运行(不是百分百可行),或者切换到不同的终端(使用<CTRL><ALT><F2>),然后,使用相同的用户名登录到系统。一旦你重新回到系统里,找到你需要中止的程序:
     
    ps
     
    这个命令代表“列出当前状态”(print status),可以显示当前系统中由该用户运行的进程列表。在ps的输出中,找到挂起的程序的PID号,然后执行命令:
     
    kill 123
     
    该命令将中止PID号码为123的进程。
     
    作为一般用户,我只能中止那些由我运行的进程。而作为超级用户可以中止任何进程。想要看系统中所有正在运行的进程的完整列表,用命令:
     
    ps –axu | more
     
    这命令将列出正在运行的所有进程(选项a),包括那些没有控制终端的进程(选项x),包括每个进程所属的用户名(选项u)。因为显示的内容可能要超过一个屏幕,所以用管道命令“|”加上“more”让换屏幕之间有个停顿。
     
    kill命令另有一个快捷的方法killall,举例:
     
    killall netscape
     
    这个命令将中止名称是netscape的所有进程
     
    killall pppd
     
    这个命令将中止ppp daemon进程,取消所有的拨入连接
     
    X-windows的程序没有控制终端,可以很容易用xkill命令中止(在X终端里输入命令):
     
    xkill
     
    你可以看到光标变成一个“宣判死刑”的标志,把光标移到你要关闭的窗口,点击鼠标左键,窗口立刻关闭,该程序被中止。
     
    对于上述命令,另外一个快捷的办法是按住<CTRL><ALT><ESC>,等待光标变成一个“宣判死刑”的标志指到对应的窗口。点击鼠标后,窗口就会消失,程序退出。
     
    如果X-Windows系统崩溃实在无法恢复,强行中止X-Server最快的办法是按<CTRL><ALT><BACKSPACE>。然后,运行ps –aux找到任何可能还在运行的X-Windows程序,逐一使用kill命令中止这些进程。如果你不这样做,其他任何一个有问题的X-Windows程序可能又会引起整个X-Windows系统崩溃。如果你有在后台运行的程序,操作系统会要求你退出,接着发送信息“There are stopped jobs”。你只要重复运行命令logout(或者exit),后台运行的程序将会被自动退出,然后你也会退出系统。
     
    核心文件 (core files)
     
    当一个程序崩溃时,它经常导出一个“核心文件”到用户的主目录下。一个“核心文件”通常是一个内存映像文件,这个文件带有一些给程序错误解析时要用到的信息。如果你只是普通用户不想解析任何错误程序,可以把“核心文件”删除。
     
    rm core
     
    或者放在那里不管,下一次有程序出错的时候,该文件会被自动覆盖。你也可以使用以下命令关闭“核心文件导出”的功能:
     
    ulimit -c o
     
    看看是否生效使用命令:
     
    ulimit -a
     
    (该命令显示“用户限制”,选项“-a”代表“所有”)。如果想要关闭所有用户的“核心文件导出”功能,编辑文件/etc/profile (要求超级用户root),调整你要的设置。
     
    如果你想知道“核心文件”有什么用处,可以在“核心文件”所在的目录使用命令:
     
    gdb –c core
     
    这个命令将启动GNU的程序调试工具,显示产生“核心文件”的程序名,程序中止时的信号等信息。输入quit退出程序调试工具。如果想知道更多的信号,用命令:
     
    cat /usr/include/bits/signum.h | more
     
     
    大部分命令带很多选项,大部分选项在字符前面带有“–”,举个例子:
     
    dir -l
     
    显示当前目录下的文件(以长文件名格式显示,不带选项为缺省时按短文件名格式显示),
     
    dir –l –a
     
    或者
     
    dir –la
     
    以长文件名格式(选项-l)显示所有文件包括隐含文件(选项-a)。
     
    一般情况下,选项只带一个字符。这是为了遵循旧的Unix的传统。当然也有一些新的选项不止一个字符:
     
    dir --help
     
    这里,如果选项超过一个字符,选项前面就必须使用两个“-”作为引导。以上命令显示关于命令dir的一些简单帮助信息。如果显示的内容超过一个屏幕,可以使用管道命令:
     
    dir –help | more
     
    3.2        用户,密码,文件访问权限和安全性
    3.2.1 主目录, 根目录和添加新用户
     
    对于一般用户来说,主目录(home directory)是硬盘上唯一可以原来写东西的地方。一般的路径名是/home/login_user_name。
     
    主目录用于存储各种用户文件:设置文件,程序配置文件,用户文档,数据,netscape的缓存,邮件等等。作为一个普通用户,你可以在主目录下建立新的目录安排你自己的目录结构。其他用户无法阅读你的文件或者写数据到你的主目录,除非你给他们适当的权限。
     
    除了自己的主目录以内的文件,一般用户也可以看到,阅读和执行很多系统里的文件,但是一般来说他们不能修改和删除这些文件。
     
    root用户(也叫“超级用户”)是一个特殊的系统管理帐号,可以修改系统里的任何文件。经常使用root用户作为缺省的登录用户不是什么好习惯――你的误操作将有可能导致严重后果。建议设置一个一般用户给自己作为日常使用的帐号,只在必要使用root用户的权限时才登陆到root用户模式下。一般来说,root用户是Linux初始化安装后的唯一一个用户。
     
    使用root用户建立一个普通用户:
     
    adduser joe
    passwd joe
    [输入用户秘密]
    [再次输入用户秘密确认]
     
    在上述的例子里,要求超级用户root。以上命令在系统里产生一个joe的用户,接着设置该用户的密码。现在,可以告诉joe他的用户名和初始密码,然后他可以登录到系统,然后修改他的密码。还要注意的是,用户名和密码都是大小写敏感。
     
    超级用户可以修改任何人的密码,尽管他/她无法阅读该用户的密码。用户密码采用单向加密算法,加密后仅仅在系统上储存加密后的密码,对于旧的系统一般存在/etc/passwd文件里,新的系统一般存在/etc/shadow文件里,未经加密的密码文件从来不被储存在系统里。当用户登录的时候,系统把用户的输入密码使用相同的加密算法得到的结果再和密码文件(/etc/passwd或者/etc/shadow)里的结果相比较。
     
    超级用户和一般用户的分开使得Linux系统更加安全――甚至让病毒在Linux系统下很难有所作为(因为用户运行的程序只能把数据写到他/她自己的有读写权限的目录里,不会感染整个操作系统的核心部分)。
     
    一般建议用户在第一次登录到系统的时候立刻修改自己的密码:
     
    passwd
    Changing password for joe
    (current) UNIX password:   [输入旧的密码]
    New password:              [输入新的密码]
    Retype new password:       [重复输入新的密码]
    passwd: all authentication tokens updated successfully.passwd
     
    实际上,当你输入密码时,出于安全原因,键盘输入并不会显示在屏幕上。如果你是第一次修改密码,看不到键盘输入的结果可能会有点不适应。
     
    Linux里,同一个密码可以用来:
     
    ·         登录到文本终端
    ·         登录到图形用户界面(GNOME或者KDE)
    ·         取消锁定的文本终端
    ·         取消密码保护的图形用户界面下的屏幕保护(GNOME或者KDE)
     
     
    一个“脆弱”(指容易被破解)的密码通常是安全问题的根源。即使在家里,完全有可能当你在浏览因特网的同时,黑客已经攻破你的计算机,正在修改和删除你计算机上的文件,或者通过你的计算机在本地警察局的网络里做一些令人头痛的事情。所以,即使在家里也要保证用户密码的安全。一旦有人登录到你的计算机,即使是普通用户,他也有可能找到其他方法获得超级用户的密码。其实就看你管理计算机系统的能力和黑客破解能力的较量了。
     
    以下是一些不好的密码:
     
    bullet 根本没有密码
    bullet 密码就是“password”
    bullet 密码和登录用户名相同
    bullet 你的名字,女儿的名字,儿子的名字,妻子的名字,丈夫的名字……或者任何一个亲人的名字。人的名字其实非常的有限――只要查一下一些类似“如何给婴儿取名”之类的书就可以了,不要以为你是印度来的就没有人知道你的名字。
    bullet 你的姓或者其他人的姓。姓的数量比名字更加有限!
    bullet 你家小狗的昵称,老婆的昵称等等。昵称的数量比姓更少!
    bullet 你喜欢的体育俱乐部的名称,节日名称,牙膏的名称等等。避免使用非常出名的足球队的名称,也不要用任何摇滚乐队的名字
    bullet 你的生日,社会保险号码,等等。
    bullet 公司,部门,小组的名称
    bullet 密码写在你的记事本上或者计算机壳子上
    bullet 你在因特网联机商店使用的密码,电子邮件邮箱的密码等
    bullet 任何在字典里可以找到的单词。英文字典其实没有包含你想象中那么多的单词(10万个单词?10万个单词的文件小于1MB!)。一个水平很一般的黑客很容易就加密所有的字典词汇然后逐一和你的密码比较。一个不可否认的事实,因特网上的确已经存在用来制造 “字典攻击”的现成工具。不信?试着找一个工具来破解你的密码看看有多容易!
    bullet 任何其他词汇,姓,宠物或者成语,不管是哪一种语言。对于一个有经验的黑客来说,如果他已经覆盖了一种语言,稍微加工一下就可以很容易覆盖其他常用的语言。有多少常用的语言?40个?黑客只需要把预先做好的几个文件加到破解文件清单里就行了。
    bullet 任何以上的密码在前面或者后面加上一两个数字或者字符
     
    一个好的密码最少要6个字符,有些专家甚至建议最少要10个字符,包含字符(最好大小写混合),数字和特殊字符(比如?,*,$,%,#),还要定期做修改(建议8到16周之间)。
     
    不巧的是,越不好破解的密码往往越难以记住。为了解决这个问题,我花了十分钟发明了我自己的“密码公式”。比如说,我总是以“@”字符作为密码的开头和结尾,然后使用两个单词并且用“!”把它们连接起来,每一个单词的最后一个字符大写,比如“@whitE!housE@”。看起来象一个不太好记的密码,但是只要我记得自己的“密码规则”,其实可以很容易记住这个密码。当然,如果你是一个记忆的超级天才,你可以使用mkpasswd并且试着记住它 J
     
    系统管理员可以使用Linux自带的工具来设置密码的规则(密码最小长度,是否要求特殊字符,密码过期的期限等),以root用户运行:
     
    linuxconf
     
    在菜单“user account”-“policies”-“password & account policies”设置。在以下场合里,一般的用户不能设置一个密码:
     
    bullet 当密码长度太短
    bullet 密码是一个字典里的单词
    bullet 密码中不包含数字或者特殊字符
     
    但是对于root用户,可以设置任何密码而只接收系统的警告信息。
     
    还要保证任何包含你的密码的文件(比如/root/.kde/share/config/kpprc)有正确,安全的权限设置,这样才能保证你的密码不会被其他人看到。举个例子,你可能要运行命令:
     
    chmod 600 kpprc
     
    如果你使用电话线上网,每周只用几个小时,你的密码太脆弱可能不会有什么大问题。但是如果你使用cable modem宽带上网,或者如果大部分时间你都呆在因特网上,你最好重新考虑一下你的系统安全。
     
    有些计算机半文盲使用一些脆弱得让人惊讶的密码,根据CNN的相关报道,“大概有50%的计算机用户基于家庭成员的名字,配偶的名字或者宠物的名字作为密码。大概30%的计算机用户基于流行音乐歌手的名字或者体育明星的名字作为密码”。
     
    特别要请注意的是:在以上“基础密码”后面加上一两个数字并不会使密码安全提高多少。
     
    3.2.3 忘记了超级用户密码怎么办
     
    尽管我从来不会忘记自己的密码,但是我还是会仔细研究一下这个专题,以防将来有一天突然看到我的母亲在阅读我的ICQ聊天记录时,可能会派上用场。
     
    第一种办法:
     
    最容易解决“忘记密码问题”的方法是将Linux重新启动到单用户模式,可以在“lilo”的命令提示符下输入:
     
    linux single
     
    这种办法将使你变成root超级用户而不需要输入任何密码。现在作为root用户,你可以使用以下命令重新设置密码(不需要输入旧的密码)
     
    passwd
     
    你可能觉得这实在是太不安全了!那是因为,如果有人可以物理上“访问”你的计算机硬件,没有计算机系统是安全的。但是,我并不喜欢在我的计算机上有这个“linux single”的漏洞存在,所以我在文件/etc/lilo.conf里(在 “image=”段落的尾部)加上以下内容就可以把这个漏洞拔除:
     
    password=”my_password”
    restricted
     
    这个设置使得Linux启动时,在lilo的命令提示符下,当用户输入linux带任何参数时必须输入正确的密码。如果用户不是使用命令行的启动模式而使用正常的启动模式,没有密码也能够启动系统。为了让修改生效,必须重新运行lilo命令。因为我设置的密码在lilo.conf文件里没有加密,我还必须把文件/etc/lilo.conf改成只有root用户可以读写:
     
    chmod 600 /etc/lilo.conf
     
    第二种办法
     
    另外一个解决“超级用户密码丢失”的办法是使用Linux启动盘或者安装CD来启动你的计算机。然后找到你计算机硬盘上的root分区,使用mount命令挂载该分区,接着修改文件/etc/shadow。因为当我从软盘启动Linux时,我可以不需要输入任何密码就成为root用户。在密码文件里,把root用户的加密密码删除,所以root的密码将是空的。
     
    用户帐号的信息储存在以下纯文本文件里:
     
    /etc/passwd
    /etc/shadow
     
    文件/etc/passwd包含了我计算机上的所有用户,并且很容易阅读。文件每行包含一个帐号信息,总共包含六个“:”间隔符号(这意味着七个字段)。举例如下
     
    /etc/passwd文件例子
     
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    apache:x:48:48:Apache:/var/www:/sbin/nologin
                                                                                               
    1
    root
    登录用户名
    2
    x
    字符x
    3
    0
    用户标识
    4
    0
    该用户的优先用户组标识
    5
    root
    注释(比如用户的全名)
    6
    /root
    用户的主目录(HOME DIRECTORY)
    7
    /bin/bash
    用户的shell的名字
     
    真正最重要的用户信息其实储存在文件/etc/shadow文件里。这个文件相对安全因为只有root用户才能阅读。在这个文件里,每行包含九个字段:
     
    1
    登录用户名
    2
    加密后的密码
    3
    1970年1月1日到上一次修改密码的天数
    4
    距离下一次修改密码的天数
    5
    密码定期作修改的天数
    6
    密码即将过期时提前通知用户的天数
    7
    密码过期到用户被取消的天数
    8
    密码被取消时距离1970年1月1日的天数
    9
    预留字段
     
    一些旧的Unix版本不包含/etc/shadow文件,而是把密码存放在/etc/passwd每行中的第二个字段。这个字段在新的系统中只显示一个“x”字符。
     
    举个例子,我的/etc/shadow文件中的root用户看起来是这样的:
     
    root:$1$BuPbmLAz$1G7.evIChyqaEI0TlZp0F.:11071:0:99999:7:-1:-1:134540356
     
    当密码被消除后,看起来是这样的:
     
    root::11071:0:99999:7:-1:-1:134540356
     
    现在,root用户就没有密码了,所以我就可以重新启动计算机,在login登录提示下,输入“root”,对于密码提示只需要按回车键就可了(没有密码)。登录成功后,可以立刻使用以下命令修改root密码:
     
    passwd
     
    有个例外,尽管在/etc/shadow删除了密码,对于Debian的发行版本并不允许你按“无密码”状态登录,在这种情况下,你需要做的是用其他用户(密码已经)的加密后的密码取代root的密码,然后使用该密码重新登录。
     
    想给远程用户设置用户帐号,用电子邮件发送加密密码也是一个安全的办法,“我正在帮你在我的计算机上设置ftp帐号,请把你的加密密码用电子邮件发送给我”。等你收到加密密码后,把它插入到/etc/shadow文件里。这样,用户就可以登录了,因为只有她知道她的密码,其他人不知道。
     
    为了让我的计算机没有“软盘访问”功能有点难度,我喜欢在没有软驱的情况下运行计算机。不幸的是,Linux光盘现在是可以自启动的。我在BIOS里设置启动设备的顺序以保证系统从硬盘启动而不是软驱或者光驱,然后给BIOS设置加上密码保护,这样就没有其他人能够修改BIOS设置。但是,我还是很担心BIOS的密码很容易被破解,或者有人打开计算机盖把BIOS的电池放电来重新设置BIOS。还可能有人把我的硬盘拿走然后在别的计算机上阅读J 。所以,我正在考虑在我的计算机上安装一个现在已经有效的Linux“加密文件系统”,但是以其考虑这么多麻烦问题,我觉得还是干脆把计算机锁在屋里才是一个真正的好办法。这些听起来头很大吧?事实大概也是这样的――这里我只是把一些计算机的安全问题稍微罗列了一下,即使在Linux下,如果黑客有潜在可能可以直接接触你的计算机硬件,Linux也是不安全的。
     
     
    如果是普通用户(非root用户)忘记密码,这个不是什么大问题,因为root可以修改任何人的密码。举个例子(要求root用户)
     
    passwd barbara
     
    按回车键后,将提示输入用户barbara的新密码(root用户不需要知道旧的密码)。如果一个普通用户想要修改自己的密码,该用户会被要求输入旧的密码(这是一个安全特性,以避免当你离开你的坐位有人试图修改你的密码)。
     
     
    用户帐号可以被临时关闭或者永久删除
     
    临时关闭(锁定)一个用户帐号,并不需要修改该用户的密码。只需要在/etc/shadow文件里属于该用户的行的第二个字段(密码)前面加上星号“*”就可以了。星号“*”指的是该用户不允许登录。当你想要把该用户恢复正常,只需要把星号“*”去掉就可以了,用户就可以恢复正常。
     
    以下是一个在/etc/shadow关闭用户peter的例子:
     
    peter:*$1$narMEFm6$fhA1puOU422HiSL5aggLI/:11193:0:99999:7:-1:-1:134539228
     
    我也可以使用以下命令来关闭用户帐号:
     
    passwd peter –l
     
    使用以下命令重新释放该用户:
     
    passwd peter –u
     
    对于永久性(不可恢复)的删除一个用户帐号,我一般这样做:
     
    - 以root登录
    - 把我的用户标识改成要删除的那个用户,检查是否有新的重要的电子邮件:
     
    su doomed_user_login_name
    mail
    logout
     
    - 删除用户和用户组:
     
    userdel doomed_user_login_name
    groupdel doomed_user_login_name
     
    - 然后把该用户从所属的其他用户组里面删除:
     
    usermod –G doomed_user_login_name doomed_user_login_name
     
    - 强制删除该用户的主目录和主目录下的所有文件和子目录:
     
    rm –fr /home/doomed_user_login_name
     
     
    Linux(还有其他Unix)是一个安全,多用户的操作系统,同时,这也产生了文件访问权限的复杂性。没有设置好文件的访问权限可能会导致一些莫名其妙的问题。充分了解文件的访问权限是管理任何多用户操作系统(Linux, Unix, Windows NT)的最重要环节。
     
    我的建议是:学习Linux(或者其他Unix)的文件访问权限的内容,你从来不会为此感到后悔。
     
    文件拥有者
     
    每个文件(或者目录)从属于一个文件拥有者(一般是一个用户名)和一个用户组。文件拥有者一般来说就是生成(或者拷贝)这个文件的用户。用户组经常包含一个用户-文件拥有者。用户组通常有一个名字来标识该用户,但是也不是必须的。一个文件只能被文件拥有者删除,或者是文件所属的用户组里的其他用户,或者是root用户。对于其他用户,如果被赋于适当的权限,也有可能修改或者删除该文件。文件所属的用户和用户组可以通过命令ls –l(长文件名显示格式)来显示:
     
    ls –l junk
     
    屏幕输出如下:
     
    -rwx------ 1 yogin inca 27 Apr 24 14:12 junk
     
    该文件属于拥有者yogin和用户组inca
     
    文件的从属可以通过命令chown(修改文件拥有者)和chgrp(修改用户组),一般来说需要root用户:
     
    chown peter junk
    chgrp peter junk
    ls –l junk
     
    执行以上三条命令后,命令ls –l输出如下:
     
    -rwx------ 1 peter peter 27 Apr 25 20:27 junk
     
    当你以root用户身份为其他用户删除或者拷贝文件时,修改文件的从属可能是经常要做的事情,在做完文件的整理工作后,把文件的拥有者改成对应的用户。
     
    文件的权限
     
    文件的拥有者可以把文件的访问属性设成三种不同的模式: 读(r),写(w)和运行(x)和三个不同的用户级别: 文件拥有者(u),所属的用户组(g),系统里的其他用户(o)。你可以检查当前的文件访问权限:
     
    ls –l filename
     
    如果文件对于三种不同的用户都提供三种文件访问模式,输出结果看起来应该是:
     
    -rwxrwxrwx
     
    跳过第一个字符“-”(第一个字符显示文件的类型, “-” 表示普通文件,“ d” 表示目录文件,“ l” 表示链接文件,“c”表示字符设备,“b”表示块设备,“p”表示命名管道比如FIFO文件(First In First Out, 先进先出),“ f”表示堆栈文件比如LIFO文件(Last In First Out,后进先出)。
     
    第一个字符之后的第一个三位字符组表示对于文件拥有者对该文件的权限,第二个三位字符组表示文件用户组对该文件的权限,第三个三位字符组表示系统其他用户对该文件的权限。如果没有权限,一般显示“-”字符。
     
    以下是一个显示一个属于root的文件用户权限:该文件的拥有者root拥有所有权限,但是用户组和其他用户只能阅读和执行。
     
    drwxr-xr-x 2 root root 21504 Apr 24 19:27 dev
     
    第一个字符d显示该文件是一个目录。
     
    你可以使用chmod命令来修改属于你的文件的访问权限。举个例子,以下命令将把文件junk给所有用户增加“只读”权限。
     
    Chmod a+r junk
     
    在以上的命令,除了用“a”表示所有用户(all),我还可以用“u”表示用户(user),“g”表示用户组(group),“o”表示其他用户(other users)。除了加号“+”增加权限,我还可以使用减号“-”删除权限,等于号“=”设置权限。除了“r”表示只读权限(read),我还可以用“w”表示写权限(write),“x”表示执行权限(execute)。
     
    第二个例子,以下命令将删除其他用户对junk文件的执行权限:
     
    chmod o-x junk
     
    除了字符,也可以使用数字来设置权限。想知道是然后工作的,看以下例子:
     
    execute=1
    write=2
    read=4
     
    对于指定的三种不同用户级别总结如下:
     
    0 = 没有任何权限 (不能读,不能写,不能执行)     (常见)
    1 = 只能执行                                    (看起来不太正常)
    2 = 只能写                                      (看起来不太正常)
    3 = 只能写和执行                                (看起来不太正常)
    4 = 只读                                       (常见)
    5 = 只读和执行                                  (常见)
    6 = 读和写                                      (常见)
    7 = 读,写和执行                                (常见)
     
     
    要给三个不同的用户级别设置访问权限,只需要把三个数字粘在一起就可以了。举例:
     
    chmod 770 junk
     
    将给文件拥有者和所属用户组所有权限(读,写和执行),而对于其他用户没有任何权限。
     
    chmod 666 junk
     
    将给所有用户(文件拥有者,所属用户组,其他用户)读写权限,但是没有执行权限。请注意这个666权限设置里很经常用到,有人认为这是整个Linux(或者其他Unix里)的精髓所在。
     
    chmod 411 junk
     
    将给文件拥有者以只读权限,对于所属用户组和其他用户只有执行权限。这个看起来好像没什么实际用处,但是对于北美的Linux用户可能会感到很有趣,因为411电话号码是他们用来获得电话号码查号帮助的。如果对于权限设置,你还能想出什么好主意,别忘了给我来电子邮件哦 (可能是007?)!
     
    文件访问权限的数字表示法叫做“八位组”因为是基于八进制的(我们的日常计数系统是基于十进制)。八进制有八个数值从0到7,最大数字是7。对应的,十进制有十个数字从0到9,最大数字是9。八进制表示法对于二进制的文件权限表示法的确非常方便,每一个标志都可以通过设置成0或者1来表示“允许”或者“不允许”,如以下的例子:
     
    用户级别:                   文件拥有者     用户组         其他用户
    权限设置例子                     rwx             rw-             r--
    缺省权限                         ---             --x -           wx
    权限的二进制表示法                111             110             100
    权限的八进制表示法                7               6               4
     
    目录权限
     
    目录的访问权限和一般文件的访问权限是不同的。对于一般文件:
     
    r      =允许读文件内容
    w      =允许修改文件内容
    x      =允许执行该文件
     
    对于目录而言:
     
    r      =允许列出该目录下的文件和子目录
    w      =允许生成和删除该目录下的文件
    x      =允许访问该目录
     
    使用umask设置缺省文件属性
     
    当一个文件生成时,系统给以文件缺省的文件权限。在我的系统里,缺省权限是:
     
    -rw-r--r--
     
    这意味着由该用户生成的文件能被该用户读和写,而用户组和其他用户只能读。还有,在我的Redhat系统里,用户不能读取其他用户的主目录,因为用户主目录的缺省权限是
     
    drwx------
     
    我可以使用以下命令检查我刚生成的文件的缺省权限:
     
    umask -S
     
    (可选项-S代表“符号”告诉umask按容易阅读的格式显示文件权限,而不是缺省的数字格式)
    我可以修改新生成文件的缺省权限
     
    umask u=rw,g=,o=
     
    对于新生成的文件,以上命令将给文件拥有者以读和写的权限,而用户组和其他用户将没有任何访问权限。
     
    umask命令里使用数值来设置文件的缺省属性更加麻烦。因为数值显示的是从用户那里去除掉的权限(刚好和chmod相反),比如:
     
    umask 000
     
    对于新生成的文件,你将给所有人所有的权限。下一个例子给文件拥有者以读和写的权限,而其他用户没有任何权限:
     
    umask 177
     
    为了让设置对系统永久有效,在文件/etc/profile里修改对应的行。
     
    3.2.7 设置替代用户标识(SUID)
     
    我的MP3播放器播放音乐的时候断断续续,听起来好像受到干扰似的。这是因为程序没有得到足够的处理器“能量”(它对处理器的要求有点大)。这可能是你的计算机实在太老掉牙了,或者是你可能同时运行太多的“CPU饥渴型”的程序。这种情况下,可以把播放器进程以较高的的任务优先级别运行(程序的优先级别可以通过nice来设置,了解更多情况使用命令man nice或者info nice)。或者也可以用root用户来运行程序,root用户运行的程序的优先级别通常给比一般用户的要高。
     
    如果这个解决了你的“音乐干扰”问题,使用suid修改可执行文件,这样其他用户运行该程序的时候,系统能够给以该用户和文件拥有者(一般是root用户)同样的“有效用户标识”,举例:
     
    chmod a+s /usr/bin/xmms
     
    这将给xmms程序动了一点小手脚,文件显示时:
     
    ls –l /usr/bin/xmms
     
    在我的计算机上输出结果如下:
     
    -rwsr-sr-x 1 root root 908k Feb 22 2000 /usr/bin/xmms
     
    第一个s指示用户替代标识(suid)已经被设置。第二个s指示替代组标识(sgid)已经被设置。这样,每一个运行该程序的用户将给予和程序拥有者同样有效的用户标识,和用户所属组同样有效的组标识,在这个例子里,指的是用户root和用户组root。
     
    设置替代用户标识suid可能会在你的计算机上产生一个安全漏洞。在一个封闭的家庭网络里,看起来不会构成什么很大的问题,因为所有的来源都可以很容易追踪得到。但是,即使在家里,我绝对不会在任何不能确定来源的程序上设定替代用户标识,即使有些安装程序建议我这么做。还有,在你的系统里的可执行文件里设置太多的替代用户标识肯定不是什么好主意,这违背了Unix系统的安全理念。的确,有些程序要求你设置替代用户标识才能正常运行,举个例子比如kppp(KDE图形用户界面下的最常用的modem拨号程序)。这是因为他们要求直接访问硬件,一般来说只有root用户才允许这么做。
     
    如果你的系统一直有与性能相关的问题,或者一些“实时硬件” (比如CD刻录机)程序经常崩溃,可以试着关闭一些后台服务程序。在Redhat Linux下以root用户运行setup,然后关闭那些你不需要的服务程序。更快捷的办法,你可以转换到命令行窗口,把整个图形用户界面关闭。这样,你的计算机的性能肯定大大好于以前的任何时候。
     
    对于那些需要或者喜欢Linux作为“唯一”的操作系统(工作站,服务器,办公室桌面电脑,游戏机,多媒体等等),有专门两个Linux的内核补丁:“低迟延补丁”和“抢先多任务补丁”,专门用来有效解决由于系统过载导致的“迟延”问题。
     
     
    3.3        “&”, “at”, “batch”和“cron”进行作业调度
     
    在命令的最后加上&。举例,以下命令将在X窗口下后台启动icq客户端程序,所以当icq运行时,我的X窗口不会被挂住。
     
    licq&
     
    进程识别号,任务编号(job_number),显示在屏幕上,在运行其他相关命令的时候你可以使用。相关的命令有:
     
    fg job_number
    fg=foreground,把后台进程恢复到前台运行,如果该任务已经被停止,将重新启动任务
     
    bg job_number
    bg=background,把前台的进程送到后台运行,如果该任务已经被停止,将重新启动任务。跟命令行后面加&具有相同效果
     
    <CTRL><Z>
    把当前正在前台运行的进程送到后台并且停止该进程
     
    jobs
    列出所有的激活的任务进程
     
    kill process_ID
    中止进程识别号为process_ID的进程,可以使用ps命令找到你要中止的进程的识别号
     
    为了让一个后台运行的进程在你退出系统后继续运行,可以使用命令nohup(=no hungup),举例 :
     
    nohup make &
     
    该命令可能在编译一个很大的程序。
     
     
     
    at命令可以让你指定特定的日期和时间来运行某个程序。举个例子,我可以在每天早上七点钟开始在我的CDROM上播放音乐:
     
    at 7:00
    cdplay <CTRL><D>
     
    在以上例子,我在命令行里输入 at 7:00”接着按回车。接着,at命令显示一个 at> ”的提示符,然后我输入 cdplay”接着按回车,最后,我同时按住<CTRL><D>结束输入。如果我接着按回车,另外一个“at> ”提示符出现,我可以接着输入那些我希望在早上7点钟运行的程序。然后在最后输入<CTRL><D><CTRL><D>就象是向当前的输入送一个文件结束符合,告诉输入已经完毕。不要连续按<CTRL><D>两次,否则你就自动退出系统了。
     
    你可以使用以下命令列出当前在任务调度表里的任务:
     
    at –l
     
    你可以看到那些还在任务调度表里还在等待的程序的清单。
     
    如果你改变主意,绝对把某个程序从任务调度表里删除。举例:
     
    atrm 8
     
    该命令将从任务调度表里删除命令编号为8的程序
    我也可以安排一个程序在稍晚一点的时间运行,比如:
     
    at 23:55 12/31/00
    startx
     
    该命令将在新千年夜晚启动我的X-Windows系统(20001231日,午夜前5分钟)。
     
    如果你不能运行at命令,查看一下是否任务调度服务程序(atd)已经被加载(可以使用root用户运行ntsysv加载)。如果at命令对root用户有效但是对于普通用户无效,检查一下是否文件/etc/at.deny是否存在,同时,确认文件/etc/at.allow不存在。这是所有用户可以运行at命令的缺省设置。如果你想要只有指定的用户才能够运行at命令,可以生成文件/etc/at.allow并且把用户的名单加到文件里。
     
    对于at命令其他的可选项,运行
     
    man at
     
    当系统载荷很低的时候,如果你希望在后台运行一个“处理器饥渴型”的任务,你可以选择使用batch命令。举例,我可以运行setiathome(一个数据分析程序用来帮助寻找外部智能生命,SETI):
     
    batch
    at>setiathome <CTRL><D>
     
    在以上例子里,我在命令行输入batch然后回车,在“at>”命令提示符下,我输入想要在后台运行的程序名称。程序试图立刻运行,但是其实会等到系统载荷小于0.8的时候才会开始运行。你可以通过检查虚拟文件/proc/loadavg来检查系统载荷:
     
    cat /proc/loadavg
     
    当批命令完成后,输出结果将会以电子邮件的方式送到我的信箱。
     
     
    cron(一个Linux的后台进程,经常在夜间运行)在Redhat系统里是缺省配置。所有你不需要做任何事情,除非你想在系统里加入一些自己的任务,或者想修改一些任务的运行时间表。
     
    请注意,要使你系统里的一些功能长期运行正常,cron可能是不可缺少的。其他和cron关联的比如:
     
    bullet 重建locate命令需要使用的数据库文件
    bullet 清除/tmp目录
    bullet 重建命令手册
    bullet “翻转”记录文件,比如,丢弃旧的记录,重新命名中间过程记录,产生新的记录等等
    bullet 运行其他任务。比如把你最近拷贝的字体加入到系统里面
     
    所以,总是把你的Linux在夜晚关机可能不是什么好的主意。这样可能导致cron根本没有机会来运行任何任务。如果你倾向于在夜晚关机,最好调整cron在一些其他的时间运行。
     
    想了解cron什么时候被唤醒开始运行它的任务,可以查看/etc/crontab,举例:
     
    cat /etc/crontab
     
    你会看到内容大概如下 :
     
    # run-parts
    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly
     
    你可以看到有四种不同的cron任务: 每小时,每天,每周和每月。你可以修改修改它,或者加入你自己的任务。以下介绍它是如何工作的:
     
    每列的顺序表示如下:
     
    分钟(0-59),小时(0-23),日期(1-31),月份(1-12),星期(从0-6分别表示星期天到星期六)。“*”表示任何有效的数值。
     
    在以上例子里,“每小时”的任务在时钟的“第一分钟”运行,这相当于每小时发生一次。“每日”的任务发生在每天时钟的4点02分,刚好每天一次。“每周”任务发生在星期天早晨4点02分。“每月”的任务发生在每月第一天的4点42分。该任务的运行脚本名称放在每行的最后。
     
    如果你想要让早上4点的任务在中午执行,只需要把4改成12就可以了。Cron每分钟被唤醒一次检查是否/etc/crontab已经被修改,所以当你修改完文件后不需要重新启动cron程序。
     
    如果你想要增加一个任务到cron里,把运行任务的脚本(或者脚本的连接)放在对应的目录里:/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly。
     
    以下是/etc/crontab的一个例子,该任务每周运行三次(星期一,星期三,星期五):
     
    02 4 * * 1,3,5 root run-parts/etc/cron.weekly
     
    以下是一个新闻组上的例子,显示如何自动用电子邮件发送一个日记文件
     
    回复:help in crontab
    发信:Dean Thompson <Dean.Thompson@csse.monash.edu.au> 日期: 2001-03-03 16:35
    Newsgroups: comp.os.linux.admin,comp.os.linux.networking,comp.os.linux.security
     
    > 我该如何在/etc/crontab文件里设置,让每天的工作记录文件自动发送到信箱abc@abc.com < /var/log
     
    你可以试试看以下的例子
     
    0 0 * * * (/bin/mail abc@abc.com < /var/log/messages) > /dev/null 2>&1
     
    3.4.1 什么是Shell? 需要一个不同的Shell吗?
     
    shell是计算机用来解释你输入的命令然后决定进行何种处理的程序。shell也可以在非交互模式下调用。举个例子,可以把一些要输入的命令预先存放在文本文件里(叫做shell脚本)然后执行该文件。可以把shell看作是DOS下面的command.com(命令行解释器),而shell脚本就象是DOS的批处理文件(*.bat)。和DOS相比较,shell的功能要先进和丰富得多。
     
    Linux系统下有几个不同的shell(如果你全部安装):
     
    bash          "Bourne Again" shell
    sh            Bourne shell,在很多UNIX下是标准的shell
    csh           C shell,和C编程语言语法相近,在大部分UNIX下有效
    pdksh        public domain Korn shell
    tcsh          微型 C shell, 在小的系统里经常使用
    sash          单机版本的shell,当文件库无效的时候可以使用
    ash, zsh    可能还有更多其他版本
     
    Linux系统下缺省的shellbash(你的计算机上应该也是),这是一个非常出色和标准的shell,象我这样的Linux新手实在想不出有什么理由要修改它。bash不仅对UNIX下应用广泛的Bourne shell后向兼容,而且合并了其他shell的一些非常有用的特性。从一个新手的角度来看,出于历史原因,一些既存的shell脚本可能要求特定的shell程序才能够运行,为了保证shell脚本充分的后向兼容性,Linux保留了不同类型的shell。一些shell可能很有用,比如,如果你准备给一些小型“嵌入式设备”写程序,那么你可能需要tcsh(微型C shell)。
     
    你可以检查你现在正在运行的shell :
     
    echo $SHELL
     
    如果你想要试一下其他类型的shell,举个例子 :
     
    tcsh
     
    该命令将启动微型C shell。结束使用,输入:
     
    exit
     
    这将回到你原来的shell(在第一个shell下输入exit会把你退出系统)。你可以通过显示环境变量“shell level”(shell层次)看看你当前环境下的shell的堆栈:
     
    echo $SHLVL
     
    在以上的命令里, $”表示“扩展shell环境变量”, SHLVL”是“变量名”,“echo”是屏幕输出命令。
     
    每个用户的缺省shell在文件/etc/passwd最后一个字段指定。如果你真的想要修改它,(要求root用户)把你想要的shell替换文件里的 /bin/bash”。
     
     
     
    在我的计算机上,命令提示符看起来是这样的:
     
    [stan@marie stan]$ _
     
    在这里, “stan”是用户名,“marie”是计算机名,第二个“stan”是我当前的工作目录,而“_”代表光标。
     
    提示符通过环境变量PS1来设置。可以使用以下命令显示当前设置:
     
    echo $PS1
     
    提示符的系统范围(对于系统里的所有用户有效)的设定在文件/etc/bashrc里,可能包含以下的行:
     
    PS1="[/u@/h /W]/$ "
     
    要定制提示符,我可以编辑文件/etc/bashrcroot用户)然后在两个引号之内输入任何你想要的文本。以下是一些我可能会使用的特别代码:
     
    /u     -      当前用户的用户名(=$LOGNAME
    /h     -      运行shell的计算机名(hostname
    /H     -      完整的计算机名
    /W     -      当前工作目录名
    /w     -      当前工作命令全路径名
    /$     -      对于普通用户显示$,对于超级用户显示#
    /!     -      当前命令的历史编号
    /#     -      当前命令编号(在当前的shell下运行的命令)
    /d     -      当前日期
    /t     -      当前时间 (24小时制)
    /T     -      当前时间 (12小时制),bash 2.0有效
    /@     -      当前时间 (AM/PM格式),bash 2.0有效
    /s     -      shell的类型
    /a     -      告警声音
    /j     -      用户的任务数
    /n     -      新行
    //     -      反斜杠
    /[     -      不可打印字符开始标志
    /]     -      不可打印字符结束标志
    /nnn   -      ASCII字符对应的八进制数值
    $(date) -     date(输出当前日期)命令输出或者其他的命令
     
     
    以下是一个关于如何加彩色的例子。更详细的信息参考后面一节。
     
    PS1="/[/033[1;32m/][/u@/h /W]/$/[/033[0m/] "
     
    这里还存在有 “第二层”输出提示符,在环境变量里是PS2。当需要附加输入时,shell使用“第二层”输出提示,在我的系统上“第二层”输出提示符是“>”。我不是很在意“第二层”输出提示符,尽管我可以使用修改PS1相同的办法修改PS2。除此之外,还有PS3PS4,但是非常少见。
          
     
    文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例:
     
    echo -e "/033[44;37;5m ME /033[0m COOL"
     
    以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符“COOL”。“e”是命令echo的一个可选项,它用于激活特殊字符的解析器。“/033”引导非常规字符序列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是“44;37;5” 和“0”。
     
    修改“44;37;5”可以生成不同颜色的组合,数值和编码的前后顺序没有关系。可以选择的编码如下所示:
     
    编码    颜色/动作
    0       重新设置属性到缺省设置
    1       设置粗体
    2       设置一半亮度(模拟彩色显示器的颜色)
    4       设置下划线(模拟彩色显示器的颜色)
    5       设置闪烁
    7       设置反向图象
    22      设置一般密度
    24      关闭下划线
    25      关闭闪烁
    27      关闭反向图象
    30      设置黑色前景
    31      设置红色前景
    32      设置绿色前景
    33      设置棕色前景
    34      设置蓝色前景
    35      设置紫色前景
    36      设置青色前景
    37      设置白色前景
    38      在缺省的前景颜色上设置下划线
    39      在缺省的前景颜色上关闭下划线
    40      设置黑色背景
    41      设置红色背景
    42      设置绿色背景
    43      设置棕色背景
    44      设置蓝色背景
    45      设置紫色背景
    46      设置青色背景
    47      设置白色背景
    49      设置缺省黑色背景
     
    其他有趣的代码还有:
     
    /033[2J         清除屏幕
    /033[0q         关闭所有的键盘指示灯
    /033[1q         设置“滚动锁定”指示灯  (Scroll Lock)
    /033[2q         设置“数值锁定”指示灯  (Num Lock)
    /033[3q         设置“大写锁定”指示灯  (Caps Lock)
    /033[15:40H     把关闭移动到第15行,40列
    /007            发蜂鸣生beep
     
    想要了解更多,使用命令 man console_codes
     
    3.4.4 在文本模式或 X模式控制台下,如何打印符号
     
    以下描述的是如何快速访问PC扩展字符集(codes 128-255)的办法,它在PC世界里非常通用:微软的Windows,DOS(如果你安装了ANSI的驱动程序),任何文本模式的Linux应用程序(包含shell命令行)。
     
    它是这样工作的。首先确认<Num Lock>是打开的,接着按住<ALT>键。当<ALT>被按住的时候,在小的数字键盘上输入:0181。现在,释放<ALT>接着希腊字母mu"µ"就出现了。以下是一个完整的清单:
     
     
    现在,如果我真的想要有点与众不同,我可以给一个文件命名:µm·°C±b³。微软Windows, DOS和Unicode的字符集和上面显示的有一些小差别,但是有用的“核心部分”是一样的。如果你想要了解详细的ANSI的信息,参考:http://www.hclrss.demon.co.uk/demos/ansi.html。Linux使用Unicode标准。
     
    X-Windows下,以上的组合键不能正常工作,但是我可以使用:
     
    kcharselect&
     
    或者
     
    gcharmap&
     
    选择一个Unicode然后复制到我的应用程序里。不是所有的Unicode现在都有效,但是大部分是有效的。在以下链接,你还可以找到一些通用的Unicode编码(数值)和它们对应的html符号。
    http://www.hclrss.demon.co.uk/demos/ent4_frame.html.
     
    3.4.5 如何编写简单的Shell脚本(Script)文件
     
    新建一个文本文件包含所需要的脚本。举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网下载下来的*.tar的文件(我好像总是记不住tar的所有参赛)。我决定把我的脚本名称叫做“untar”:
    pico untar
     
    因为在我的当前工作目录里untar文件不存在,所有pico文本编辑器自动创建这个文件,现在,我输入以下内容:
     
    #!/bin/bash
    echo this is the script file $0
    echo untarring the file $1
    # this calls tar with options -xvzf (extract,
    # verbose, filter through gzip, input filename)
    tar -xvzf $1
     
    我使用<CTRL>O保存这个文件,然后<CTRL>X退出。
     
    脚本的第一行,以“#!”开始是特别的提示-它告诉shell应该用哪一个程序来解释我的脚本。在这个例子里,我使用bash shell /bin/bash。第一行必须使用“#!”开头,否则脚本不会运行(系统认为是一个文本文件)。其他以“#”开始的行是注释行只是给作者和读者使用的,计算机将跳过这些行。
     
    在以上脚本里,参数$0, $1, $2…是传递到脚本里面的参数。举个例子,如果我运行我的脚本名“myscript”带七个参数如下:
     
    myscript a b c d e f g
     
    那么,参赛$0就是myscript, $1就是a, $2就是b,$3就是c,依此类推。
     
    脚本的第二行和第三行,echo命令输出所有在它后面同一行上的文本,然后扩展在脚本里对应的参数$0和$1。第四行和第五行是我写的注释文本,提醒我在这个脚本里要做的事情。只有最后一行是真正起作用的。
     
    一旦脚本已经写好,我把文件属性改成对文件拥有者是“可执行”的:
     
    chmod u+x untar
     
    然后我的脚本就可以这样运行了:
     
    ./untar my_tar.tar.gz
     
    Liunx脚本的确非常丰富,灵活,功能强劲,还可能有点复杂。然而,对于日常任务编写一些简单脚本,它并不需要什么特别高深的知识。你可以把一些要用到的命令放在一起,一个接一个,输入到文件里。我使用脚本很频繁是因为我太懒了,不想一次一次的输入相同的命令。
     
    一个最简单的方法,可以把一组命令放在文本文件里然后使用source命令传递给shell让它直接运行:
     
    source my_file
     
    这个时候就不需要在文本第一行加上“#!”的标志了。
     
     
    一般来说,以下字符对于shell有特殊的含义:
     
    / ' " ` < > [ ] ? | ; # $ ^ & * ( ) = <Space> <Tab> <Newline>
     
    这里有四种不同的符号:反斜杠(/),单引号(‘),双引号(“),反向单引号(`)。
     
    bullet 反斜杠(/)表示:关闭后面字符的特殊含义
    bullet 单引号(‘)表示:关闭在两个单引号之间所有字符的特殊含义
    bullet 双引号(“)表示:关闭在两个双引号之间所有字符的特殊含义除了$ ` /
    bullet 反向单引号(`)表示:告诉shell首先运行两个反向单引号之间的命令,然后把得到的结果再传递给两个单引号之外的命令。同样的功能也可以通过“$command”命令来实现,而且可能会更方便。
     
    举个例子,我可以创建一个奇怪的目录名叫做“*”通过使用“/”或者“’”符号:
     
    mkdir /*
    mkdir ’*’
     
    这屏蔽了“*”对于shell的特别含义。如果没有“/”,“*”意味着当前目录下所有文件。
     
     
    有三个最重要的输入输出流:标准输入(stdin),标准输出(stdout),标准错误(stderr)。它们对于控制台(“控制台”指的是键盘用于输入,屏幕用于输出)来说是缺省的,但是它们可以被重定向。
     
    重定向标准输出,可以使用“>”符号,举例:
     
    dir my_dir > filelisting.txt
     
    将把dir命令的标准屏幕输出重定向到文本文件 filelisting.txt文件里,所以屏幕上没有任何输出。这个文件可以用来编辑(比如使用pico文本编辑器)或者合并到其他的文件里。
     
    重定向标准错误,可以使用结构“2>”,举例:
     
    dir my_dir 2> errorlisting.txt
     
    以上命令将送标准输出到屏幕上,如果没有错误信息,将没有任何信息写到errorlisting.txt文件里。如果出错,则没有什么东西输出到屏幕,而文件errorlisting.txt将包含错误信息。错误信息有可能是这样的:
     
    dir: my_dir:  Permission denied
     
    最后,我也可以把标准输出和标准错误一起输出到同一个文件里,
     
    dir my_dir > file_and_error_listing.txt 2>&1
     
    以上命令先重定向标准输出到文本文件里,然后再重定向标准错误到和标准输出同样的位置。它如何实现可能看起来有点古怪,但是是可行的。
     
    在以上的例子里,如果重定向的文件已经存在,该文件会被覆盖。如果你要追加到该文件的末尾,可以使用“>>”符号,以上的例子就变成:
     
    dir my_dir >> filelisting.txt
    dir my_dir 2>> errorlisting.txt
    dir my_dir >> file_and_error_listing.txt 2 > &1
     
    如果你对“2>”感到很迷惑,这里有一个简单的办法可以帮你理解,标准流有标准的解析器:“0”代表标准输入,“1”代表标准输出,“2”代表标准错误。
     
    dir my_dir > file.txt
     
    是以下命令的简写方式:
     
    dir my_dir 1 > file.txt
     
    那么以下命令就是用来输出标准错误:
     
    dir my_dir 2 > file.txt
     
    还有,你还可以使用符号“|”(管道命令)把一个命令的标准输出送到另外一个命令的标准输入。在以下这个标准的例子里,dir命令的标准输出通过管道输入到命令more里(输出满屏的时候自动暂停):
     
    dir | more
     
    你还可以使用“tee”命令把标准输出同时写到文件和屏幕,
     
    dir | tee filelisting.txt
     
    tee是“T型连接器”的模拟音,在管道中的主要的用途是分流。
     
    这个部分这样都用来讲述标准输出重定向,对于标准输入重定向不像标准输出重定向那么有用,但是它可以使用以下方式实现:
     
    cat < my_file
     
    还有一种叫做“直接插入式”的标准输出,可以通过“<<”来实现。不要管它了,看起来对我没有什么实际用处。不过,如果你真的想知道,这里有一个例子(这里“>”式第二个提示符)
     
    cat << my_marker
    > my_line_from_the_keyboard
    > another_line_from_the_keyboard
    > my_marker
     
    除了重定向到常规文件和“过滤器”之外(如以上的例子所示),你还可以重定向到设备和其他特殊文件。看下面这些例子。
     
    重定向到设备文件的例子。以下命令将显示文件列表到第四个文本终端:
     
    dir > /dev/tty4
     
    以下是一个重定向到一个特殊的FIFO(先进先出)文件的例子。该命令送信息”you are lucky”到叫做“lucky”的ICQ用户UIN 7777777 (假定你已经用你的ICQ程序连接到ICQF服务器上了)
     
    echo message 7777777 “you are lucky” < ~/.licq/licq_fifo
     
    以上的例子能够工作是因为在你licq目录下的文件“licq_fifo”是一个特别的FIFO序列文件。以上这个例子,对比于在图形用户界面下的ICQ程序有什么特别有用的地方吗?举个例子,你可以写一个短的脚本带上多个信息给你的那些ICQ伙伴们:
     
    #!/bin/bash
    echo Messaging UIN: $1 Message: $2 Times: $3
    # The next command puts puts your licq in the status "on-line, invisible".
    echo 'status *online' > ~/.licq/licq_fifo
    c=0
    while [ $c -le $3]
    do
    echo message $1 $2 > ~/.licq/licq_fifo
    c=`expr $c + 1`
    echo $c " "
    done
    echo 'status offline' > ~/.licq/licq_fifo
    echo "all done"
     
     
    这个例子利用了licq通信模型(FIFO文件)和简单的文件重定向功能,给你一个关于如何 “自动化”licq的主意。
     
     
    一般来说,这些字符对于shell有特别的含义:
     
    / ' " ` < > | ; <Space> <Tab> <Newline> ( ) [ ] ? # $ ^ & * =
     
    以下是这些字符的含义:
     
    / ‘ “ 和 ‘ 主要用来注释,前面已经描述过 (参见 3.4.6)。
     
    < 和 > 主要用来输入和输出重定向
     
    | 是管道命令,管道左边的标准输出是管道右边的标准输入
     
    ; 用于间隔在同一命令行上的几个命令
     
    <Space> 和 <Tab> 间用于分开命令的字符和单词
     
    <Newline> 完成一条命令或者一组命令
     
    ( ) 用于封装需要使用不同的shell启动的命令, 比如 ( dir )
     
    { } 用于封装要用当前shell启动的一组命令,比如 { dir },需要空格间隔
    & 使当前命令在后台运行(有它自己独立的进程),所以下一条命令不需要等待前一条命令结束才能开始。
     
    * 当搜索文件时,它匹配除了以“.”开头的所有文件
     
    ?当搜索文件时,它匹配任何单个字符
     
    [ ] 当搜索文件时,它匹配任何在[]里面的单个字符
     
    && 是用于连接两个命令的“与操作”,
     
    command1 && command2, 只有当command1退出状态为0时(没有错误),command2才会被执行。比如, cat file1 && cat file2 只有当file1正常显示时, file2才能被显示。
     
    ||  是用于连接两个命令的“或操作”
     
    command1 || command2, 只有当command1退出状态非0时(有错误),command2才会被显示。比如:cat file1 || cat file2 只有当显示file1出错时,file2才能被显示
     
    = 指定值给变量
     
    举例,命令me=blahblah设定值“blahblah”给变量“me”,我可以输出变量名:
     
    echo $me
     
    $      预处理扩展变量名
     
    变量可以使用“=”来设定值,也可以通过预先变量设定来设置
     
    $0     被执行的shell脚本的名称
    $#     按位置对应的命令输入参数, $1第一个参赛, $2第二个参数, $3第三个参数…直到$9
    $*     扩展所有的位置参数给命令
    $@     扩展所有的位置参数给命令,但是当“$@”使用时,参数个别标注
     
    3.5        如何安装软件包(Package)及 rpm 软件包管理器
    3.5.1 如何安装从Internet下载的程序?
     
    答案基于你所下载的是哪一种软件包.如果你下载的程序是Red Hat 二进制形式软件包*.rpm (如果假定一个选择, 我选择这种格式), 你能避免很多安装上的问题.
    RedHat 二进制形式程序包的安装
    如果我想安装的程序是RedHat 二进制形式软件包(*.rpm), 我能使用命令行或 GUI 工具.我喜欢用命令行因为它运行快而且不出错. Red Hat 软件包管理器安装程序被称作rpm . 首先我要阅读软件包内容的信息(选项):
    rpm -qpi my_new_file.rpm 该行查询(模式"q", 必须在破折号后第一个字母)尚未安装的软件包 (选项"p") 以便显示该软件包所包含的信息 (选项 "i") .目如果我想安装该程序, 我(作为超级用户)运行: 
    rpm -ihv my_new_file.rpm 上面的命令安装了该组件.运行 rpm来安装该组件(模式 "i",必须是在破折号后第一个字母), 此时屏幕上显示比平常更多的信息(选项"h"=显示 "hashes" 来展现解包过程, 选项"v"  =详细).  软件包内容放到了它们所在的目录下 (rpm 知道它们的位置). 安装后, 准备运行, 我得知道可执行文件的名字和位置. 如果找不到可执行文件, 下面一行列出了软件包所包含的所有文件和它们所在的目录: rpm -qpl my_new_file.rpm 该行查询(模式"q")尚未安装的软件包 (选项"p") 以便显示该软件包所包含的所有文件清单(选项 "l").
    调用rpm 的GUI 前端界面是: gnopro (旧版本, 导致 RH6.0 有些混淆, 但新版本已改进), kpackage (用于更新的版本),老的 glint (很慢,用于 RH5.2).
    Troubleshooting. rpm被认为是智能软件包管理器. 如果安装失败, 我可以读错误信息,并能知道下一步所要做的事:
    (1) 安装失败是由于我有相同软件包的早期版本且版本冲突. 解决方法:不安装,仅需升级该软件包.
    rpm -Uvh my_new_file.rpm
    (2) 安装失败是因为须首先安装另一个软件包.我得找到这个缺少的软件包并安装它, 然后在尝试安装该套件.在下面特殊的例子里, 我可以选择忽略缺少的附件(我真的知道我正在做的会导致软件发生故障):
    rpm -ivh --nodeps my_new_file.rpm
    或甚至可能是
    rmp -ivh --nodeps --force my_new_file.rpm
    TARBALL源代码中安装  
    如果我从网上所下载的是一个已压缩的tarball(*.tar.gz or *.tgz )形式的Linux 源代码,安装步骤比二进制的rpm更长更棘手.我作为超级用户来安装该程序.
     
    首先,我改变我当前的工作目录到/usr/local  : cd /usr/local 其次,  我将我从网上下载的 tarball解压:
    tar -xvzf /home/the_dir_where_the_tarball_is/my_tarball.tar.gz 这选取了 (选项 "x") *.tar.gz (or *.tgz) tarball的内容, 解压它 (选项 "z"),同时给我比平常更多的信息 (选项"v" = 详细). 请注意选项"f"是指"file", 所以字母"f"后面要紧跟着文件名.  Tarball的内容被释放到在我的当前目录下的由tar 创建的子目录里. 典型的例/usr/local/.   该tarball 知道新的子目录的名字. 如果 tarball未被压缩(比如, *.tar), 我可以用: tar -xvf /home/the_dir_where_the_tarball_is/my_tarball.tar 第三, 我要知道新目录的名称, 然后用cd 进入: dir cd the_new_program_subdir 因为有些目录的名字很长, 我使用autocompletion 选项来节省键盘输入时间—我只要输入头几个字母再按下<TAB> . 第四, 通过执行下面的三条命令能编译大多数程序:
     
    ./configure make make install 上面的命令要花点时间完成(1分钟?0.5小时?). 如果上面命令的任意一个运行失败, 可以读README 或 INSTALL 或任何该程序所提供的信息. 一些程序要求环境的定制(如路径的定义)或额外库文件的安装, 或其它.有时这是痛苦的事.很简单的程序可能不需要"./configure" 或/和 "make install" 步骤, 在此情况下"make"将单独工作. 第五, 如果运行正常, 我可以发现我刚刚编译的新的可执行文件.当运行以下命令时,该可执行文件的名字显示绿色:
      ls --color 现在, 我能运行这个可执行文件, 例如: ./the_executable 一些程序自动将可执行文件安装到/usr/local/bin目录下,所以我可以试着:
    /usr/local/bin/the_executable
    第六,  如果我想更频繁运行这个程序, 我从/usr/local/bin目录创建一个到该可执行文件的软连接:
    cd /usr/local/bin ln -s /usr/local/the_new_program_subdir/the_executable . 这种方式,使可执行文件(实际是到该文件的软连接)在我设置的路径中. 只需简单输入其文件名即可运行(不需输入到该文件的全路径). 一些程序安装了可执行文件(或一个连接)在"bin" 目录下, 在此情况下你能略过最后一步。
    从RPM 软件包源代码安装
    也有作为"rpm 源代码" 的软件包. 正如在本章开始部分所描述, 它们要求用"rpm" 工具对*.rpm  软件包进行安装. 但是因为 "rpm"安装了源代码(典型地使用 C 语言写的源代码),我需要通过执行相同的"./configure ;  make ; make install"顺序编译源代码 ,正如从tarballs源代码中安装一样 (参见前面的答案).
    展开全文
  • LINUX的基本操作学习总结

    千次阅读 多人点赞 2021-01-05 09:55:56
    运行指令及基本操作指令   3.vim操作   4.开关机操作   5.用户管理   6.文件管理   7.组管理和权限管理   8.任务调度   9.磁盘分区和挂载   10.网络配置   11.进程管理   12.服务管理   13....

    前言

    从2020年11月定下了以后所打算从事的方向开始,就开始学习LINUX基础和LINUX环境编程,故谨以此文来记录LINUX的基础操作

    声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出

    目录

      1.LINUX的基础介绍及目录结构
      2.运行指令及基本操作指令
      3.VIM的操作
      4.开关机操作
      5.用户管理
      6.文件管理
      7.组管理和权限管
      
    8.任务调度
      9.磁盘分区和挂载
      
    10.网络配置
      11.进程管理

    1.linux的基础介绍及目录结构

    LINUX的由来

    1.LINUX的前身是UNIX操作系统,这个操作系统是由大名鼎鼎贝尔实验室的肯·汤姆森所开发,之后因为觉得用B语言写的UNIX太垃圾。他又和 丹尼斯·里奇(C语言之父)用C语言来编写了UNIX操作系统,这大大的提高了性能和可移植性。

    2.LINUX是由芬兰的一名大学生Linus Torvalds (林纳斯)基于类UNIX操作系统所开发出来的操作系统。因为LINUX是开放源码、没有版权、技术社区用户多的特点,故LINUX在全世界大牛的修补,更新下使得LINUX变得更加安全,稳定。

    向大佬们致敬,正因为他们有开源精神才有了如今不断发展的技术,有朝一日我也希望自己能贡献一份绵薄之力

    LINUX的目录结构

    • 在LINUX中一切皆文件
    • 在LINUX中有且只有一个根目录(/)
    • 在LINUX各个目录存放的内容事先规划好了

    目录结构

    在这里插入图片描述
    LINUX的7种文件类型

    • d(目录
    • b(块设备
    • c(字符设备
    • -(普通文件
    • p(管道
    • l(链接
    • s(套接字

    LINUX的指令运行级别图
    在这里插入图片描述

    2.运行指令及基本操作指令

    基本操作指令

    • 查看当前位置(pwd

    • 进入目录(cd

    • 当前位置(./

    • 上一层目录(…/

    • 查看帮助文档(man [命令/配置文件/函数]

    • 查看帮助文档(help [命令]

    • 显示当前内容(ls

    • 查看文件内容(cat 只读方式

    • 查看文件内容(more 全屏方式按页显示内容
      空格键(向下翻一页)Enter(向下翻一行)

    • 添加快捷指令(alias 快捷指令 =“实际指令” 例如:alias cl=“clear”)

    • 输出内容到控制台(echo [option ] [内容] 例如:echo $PATH 输出当前环境的路径)

    • 创建软链接(ln -s [源文件/目录] [软链接名称] 例如:ln -s /root /home/LinkToRoot 但是pwd还在/home下)

    • 查看历史指令( history
      显示最近10条历史指令( history 10 )
      执行历史编号为5的指令( !5

    • 查看当前日期(date
      显示年份(date +%Y )
      显示月(date +%m )
      显示日(date +%d )
      显示年月日时分秒(date +"%Y -%m-%d %H:%M:%S")
      设置系统时间(date -s “2020-11-11 11:11:11”)

    • 查看日历( cal
      查看指定年份日历(cal year)

    3.vim的操作

    VIM介绍

    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    VIM的三种模式
    • 插入/编辑模式:输入i(insert)或者a(append)

    • 普通模式:打开文档时候的模式

    • 命令行模式:按下 ESC 和 :

    快捷键的使用

    • 拷贝当前行(命令行模式下:输入yy)
    • 删除当前行(命令行模式下: 输入dd)
    • 粘贴(命令行模式下: 输入p)
    • 设置文件行号(命令行模式下: 输入set nu/取消 set nonu)
    • 到达文档的首页(命令行模式下: 输入gg)
    • 到达文档的结尾(命令行模式下: 输入G)
    • 跳转到指定行数(命令行模式下: 输入行号+shift+g)
    • 撤销(命令行模式下: 输入u)
    • 查找指定内容(命令行模式下: 输入/hello从上至下 或者 ?hello从下至上 找到要查找的内容按下n到下一个目标)
    • 替换当前行的内容(命令行模式下: 输入s/one/two 将所在行第一个one替换为two
    • 替换当前行的所有目标内容(命令行模式下: 输入s/one/two/g 将所在行所有one替换为two
    • 替换所有符合的内容(命令行模式下: 输入%s/one/two/g 将所有one替换为two
    • 垂直分屏 (命令行模式下: 输入vsp+文件名称 )
    • 水平分屏 (命令行模式下: 输入sp+文件名称 切换的时候在命令行模式下按下 ctrl + w w
    • 退出文件 (命令行模式下: 输入wq(写入退出)q!(强制退出) qall(退出所有) )

    VIM的配置

    • 用户配置文件目录(~/.vim/vimrc)
    • 系统配置文件目录(~/.vim/vimrc)

    4.开关机操作

    关机/重启命令

    • poweroff [选项] (可关闭 重启 停止计算机)
      不建议使用(强制直接关闭计算机电源可能导致进程数据丢失, 使系统处于不稳定状态 (甚至损坏硬件设备))
    • shutdown -h now(立即关机
    • shutdown -h 时间(指定时间后关机
    • halt(关机
    • shutdown -r(立即重启
    • reboot(现在重启

    reboot、shutdown 、-rhalt的区别

    • reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它的参数与halt相差不多
    • shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。(后文会详细说明)
    • halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。

    5.用户管理

    用户管理图
    在这里插入图片描述

    用户说明

    • LINUX操作系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户都必须向管理员申请一个帐号,然后凭借此身份进入系统
    • LINUX的用户需要至少属于一个组

    用户管理操作

    1. 添加用户
      useradd [option] username
      例如: useradd -d /home/JJ kobe (利用-d选项指定在/home/JJ目录下创建用户kobe
      例如: useradd -g LAKER kobe (将用户kobe加入LAKER

    2. 给用户指定密码
      passwd username (如果无法成功在之前加上sudo,切换为root权限

    3. 删除用户
      userdel username (这种删除保留此用户的家目录,要是想一并删除可以在username之前加-r

    4. 查询用户信息
      id username

    5. 切换用户
      在LINUX操作系统中,如果当前权限不够,可用su - username,切换到高权限的用户(如root)
      su - 切换的用户名(低权限到高权限要密码,反之则必须要,退出原用户exit

    6. 创建一个组
      groupadd 组名

    7. 修改文件所在组
      chgrp 组名 文件名

    8. 修改用户所在组
      usermod -g 组名 用户名(

    6.文件管理

    文件的打包与解包

    • gzip/gunzip 文件名(只能将文件压缩为*.gz文件,压缩后原文件消失

    • zip/unzip (这在实际开发中用的比较多
      zip -r 文件/目录(递归压缩
      unzip -d 文件/目录(将文件解压到指定地址
      例子:zip -r mypackage.zip /home/* (把家目录下所有内容打包成mypackage.zip )

    • tar指令
      tar -zcvf 目标文件 源文件(将指定文件打包压缩
      例子:tar -zcvf a.tar.gz 1.txt 2.txt(把当前目录下的1.txt 2.txt 压缩成 a.tar.gz )
      tar -zxvf 源文件 -C 地址(将指定文件解压到指定目录
      例子:tar -zxvf a.tar.gz -C /opt/tmp(把当前目录下的 a.tar.gz打包到 /opt/tmp)

    文件的权限

    在这里插入图片描述

    文件的常用操作指令

    • 创建目录(mkdir 目录名称 不提示递归删除文件)
      例子:mkdir -p /home/a/b/c( 递归创建多级目录)
    • 创建文件(vim/touch 文件名 不提示递归删除文件)
    • 删除文件(rm [-rf] 目录/文件名 不提示递归删除文件)
    • 复制文件(cp [-r] 源文件 目标地址
    • 移动/重命名文件( mv oldfile newfile 复制到同一个目录的话可以更改文件名称
    • 文件所有者修改( chown [-R]newowner:newgroup file
      (例:chown -R kobe:LAKER hello )hello下的所有文件属于kobe,所在组是LAKER)
      (例:chown kobe:LAKER hello )hello的文件属于kobe,所在组是LAKER)

      注意:-R是递归所有文件的选项

    搜索类查找指令

    • find [范围 ] [选项]
      按文件名称查找(find -name
      (例:find /home/ -name *.c )
      按所有者称查找(find -user
      (例:find /opt/ -user root)
      按文件大小称查找(find -size + 大于 - 小于 )
      (例:find /opt/ -size +20M 查找文件大小大于20M的文件)

    • grep [选项] [查找内容 ]
      常常搭配管道 | 使用
      (例:ps -aux | grep -n root  查找系统运行的所有者为root的内容,且区分大小写)

    7.组管理和权限管理

    权限管理/strong>

    • 用+ - = 变更权限(u :所有者 g :所在组 o:其他人
      (例:chmod u=rwx,g = rx,o = x 1.c )所有者有全部权限,所在组有读执行权限,其他只有执行权限
      (例:chmod g -w,o + x 1.c )所在组没有写权限,其他添加只有执行权限
    • 用数字变更权限(r:4 w :2 x:1
      (例:chmod 777 1.c )1.c文件所有人都满权限

    8.任务调度

    下文基于CENTOS实现

    任务调度

    • 含义:在某个时间执行特定的命令或者程序
    • 语法 : crontab [option]
      -e 编写定时任务
      -l 查询crontab任务
      -r 删除用户所有的crontab任务

    任务调度的符号说明
    在这里插入图片描述

    案例:每隔一个小时把当前日期打印到/home/date文件中

    1. 编写一个脚本date.sh
    2. 输入 data >> /home/date
    3. 给date.sh可执行权限(chmod 777 date.sh)
    4. 编写任务调度(crontab -e)
    5. * */1 * * * /home/date.sh

    9.磁盘分区和挂载

    分区的基本知识

    1. mbr分区
      最多支持四个主分区
      系统只能安装在主分区
      拓展分区要占一个主分区
      MBR最大支持2TB,但是拥有最好的兼容性
    2. gtb分区
      支持无线多个主分区(但是操作系统会限制,Windows下最多128个分区
      最大支持18EB的大容量(1EB = 1024PB 1PB = 1024TB
      Win7 64位后支持gtp

    LINUX分区原理图
    在这里插入图片描述

    主要操作指令

    • 查看分区情况(lsblk -f)
      帮助记忆:老师不离开(lsblk)
    • 查看分区大小(lsblk)
    • 查询系统整体的磁盘使用情况(df -l )-h可以查看具体大小
    • 查询指定的目录磁盘使用情况(du -h 目录 )-h可以查看具体大小
      例:du -ach --max-depth=1 /home  查看home目录的磁盘使用情况(深度为1)

    案例:给LINUX添加一个新的硬盘(挂载到/home/newdisk下)

    1. 虚拟机添加硬盘
    2. 分区
      fdisk /dev/sdbsdb要视挂载硬盘信息情况而定
      先输入n(新增分区)然后选择p,分区类型为主分区,两次回车默认剩余全部空间,最后输入w写入分区并退出
    3. 格式化磁盘
      mkfs -t ext4 /dev/sdb1ext4为分区类型
    4. 挂载
      mount /dev/sdb1 /newdisk
      取消挂载
      umount /dev/sdb1 或者 umount /newdisk
    5. 永久挂载
      在/etc/fstab中加入如下指令
      /dev/sdb1       /home/newdisk   ext4  defaults  00
      mount -a 立即生效
      如果未生效,建议重启

    10.网络配置

    此处为永久配置:是通过修改配置文件来配置(基于centos)

    案例:配置网络

    1. 打开配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-eth0权限不足的话使用切换到root
    2. 将BOOTPROTO改为static
    3. IPADDR改为"192.168.184.130"
    4. 修改ONBOOT = yes
      static为静态获取ip 
      dhcp态获取ip
    5. 修改过后重启服务 service network restart

    UBUNTU下的配置文件在/etc/network/interfaces下修改方法类似

    11.进程管理

    进程概念

    • 在LINUX中每执行一个程序(代码)为进程,每一个进程有唯一的进程号
    • 每一个进程都会对应一个父进程,而父进程下可以有多个子进程
    • 每一个进程可能以两种方式存在(前台/后台)
      前台是可见的进程,有输入输出的
      后台是不可见的(也叫守护进程或者精灵进程)
    • 一般系统的服务都是以后台运行,直到关机才结束

    进程相关操作指令

    • 显示系统执行的进程(静态)ps -aux
      查看父进程 ps -ef
      例:查看sshd的父进程 ps -ef | grep sshd

    • 显示系统执行的进程(动态)top [option]
      查看特定用户 top -u root
      中止特定进程 top k 进程id
      指定10s后更新进程信息 top -d 10

    • 中止进程kill killall
      强制中止 kill -9 进程号
      此处-9是因为kill的信号是9号
      杀死父进程 killall 进程名称

    • 监控网络情况 netstat [option]
      查看系统所有网络服务 netstat -anp

    总结

      从之前对LINUX的不了解,到后面惊叹他的神奇,简简单单几个操作符就可以完成WINDOWS下的复杂操作这也太帅了吧,渐渐的开始依赖LINUX的便捷,并且没有那么多弹窗广告 (我想可能垃圾广告还没发现这未开发的领地)。现在已经习惯在LINUX下完成日常的使用(除了打游戏,虚拟机下开虚拟机套娃就算了)初学LINUX的时候觉得每一个操作符都很有趣,而且自以为英语还不错,不上机实操。结果好家伙一个星期差不多全忘记,所以多操作,总结还是很不错的。接下来还有很长的路,而赛过要努力呀!

    建议

    • 一定要多上机实操
    • 多总结规律,很多知识都是相通的
    • 学会使用man手册
    • 最后欢迎你来到LINUX的学习,准备接受互联网的无情毒打吧
    而塞过 2021-1-6

    关于我:一个就要进入互联网,经历社会毒打的99小伙

    下一站(javascript)
    下一站(html)

    展开全文
  • Linux的基本操作——基本介绍

    万次阅读 2018-07-25 19:55:15
    打个广告,帮朋友卖点东西,东西超便宜哟【衣服鞋子等】,厂家直接出货,绝对低于市场价!...服务端操作系统 : linux、unix、windows server 单机操作系统 : windows(dos 、ucdos、win95、win98、win20...

    打个广告,帮朋友卖点东西,东西超便宜的哟【衣服鞋子等】,厂家直接出货,绝对低于市场价!!! 一般都比市场价便宜3—7折【都是牌子货】,如果您感兴趣,可以扫描屏幕下方的二维码,感谢关注!!!

    微信

    一、概述

    1、常见操作系统

    服务端操作系统 : linux、unix、windows server 

    单机操作系统 : windows(dos 、ucdos、win95、win98、win2000、xp、vista、win7、win8)

                             MAC 、linux(ubuntu)

    移动操作系统 Android、IOS 、Windows phone

    2、linux操作系统介绍

            Linux是一种自由和开放源码的类UNIX操作系统,它具有开放性,多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,良好的用户界面(命令界面,图形界面等),出色的速度性能等优点。现在主要用于:

    • 大部分服务端都采用linux ,JEE部署到服务器中
    • 一些企业和学校采用linux研发和教学
    • 很多嵌入式开发 用linux 
    • 云计算、大数据 是集群网  linux : centos 

    Linux组成为:

    • linux内核(linus 团队管理)
    • shell :用户与内核交互的接口
    • 文件系统 : ext3、ext4 等  windows 有 fat32  、ntfs 
    • 第三方应用软件 

    Linux操作系统版本由内核版本 (linus 团队管理)和发行版本组成 (一些软件公司以内核为基础,再添加一些软件和文档形成发行版本),常见的发行版本有:

       - red hat  : rhel ,centos

       - debian   : debian,ubuntu(桌面)

       - android

    二、Linux系统环境

           默认有6个命令交互通道和一个图形界面交互通道,默认进入到的是图形界面通道其中:

    • 命令交互模式切换:ctrl+alt+f1---f6
    • 图形交互界面 ctrl+alt+f7

    1、图形界面交互模式

    • terminal: 图形界面的命令终端,它是图形界面交互通道的延伸,要依赖于图形界面

    2、命令交互模式 

    • 命令提示符:

          shen@ubuntu:~$ 

            - shen:用户名

    - ubuntu :主机名

    - ~  :路径 ,假如当前的路径正好是 该用户存放数据的根目录 ,则显示~

    - $ :用户的类型  $代表普通用户  #  代表 超级用户

    三、常用命令

    (按tab建自动补全)

    1、注销、关机、重启

    • 注销 :logout(登出 )或者exit(退出)

     

    • 关机 :shutdown - h  时间

      - h :关机

      - 时间 :

        1. now :马上

        2. 12.30 :指定具体时间

        3. 3  :几分钟以后

     

    注意:关机并不是每个用户都可以完成的,需要超级用户或者被授权的用户来执行该命令,普通用户要由超级用户配置  sudo 命令才能执行关机操作(权限放在这里/etc/sudoers),当普通用户被授权后即可通过【sudo shutdown -h now】来完成操作,sudo表示用超级用户的权限(被赋予的)来执行某命令,类似window中的以管理员身份运行

     

    • 重启 :shutdown -r  时间(权限问题和上面类似)

    2、系统命令

    • passwd   :设置密码

     ubuntu默认 root账号是没有开启 ,只要设置root密码即可开启【sudo passwd root】

    • su  :切换用户

    如su root ,root用户切换到其他账号不需要密码

    • sudo apt-get update

    更新系统

    • who与whoami

    其中

    who : 查看在线的用户

    whoami :查看当前自己的用户,如

     其中tty2代表哪个窗口(ctrl+alt+f2),pts/1表示图形化界面中开启的终端。

    • hostname : 显示主机名
    • uname  :显示系统信息

            -a :显示完整的系统信息

    • top :显示当前耗时的进程(部分)的信息 ,每3秒刷新一次,类似windows的任务管理器 (cltr+c 中断 )
    • ps :显示当前进程(全部)的快照 

           - axu

    • df :磁盘使用情况(disk free)
    • ifconfig :查看或者配置网卡信息 ,好比windows 的ipconfig
    • ping  测试与目标主机连接情况

    如测试本机与虚拟机中的连接情况,(本机ip:169.254.64.182,虚拟机ip:172.25.0.95),在虚拟机终端中,测试

    ping 169.254.64.182【按Ctrl+c结束】,在本机(cmd)中 ping 172.25.0.95

    •   netstat:网络连接详细信息
    • clear:清除屏幕(windows: cls)  
    • man:帮助命令

    可以查看命令的参数,如man ls

    • kill:杀死进程(kill  pid )
    • useradd:添加用户 

    首先来查看用户信息,命令为 sudo cat /etc/passwd,以其中一个用户信息介绍

     hadoop:x:1000:1000:UbuntuA,,,:/home/hadoop:/bin/bash

      - hadoop:用户名

      - x :密码 :已经加密 ,密码存放在  /etc/shadow 

      - 1000: 账号id ,userId

      - 1000: 组id ,group id

              - UbuntuA,,,  :账号描述

              - /home/hadoop :该账号存放文件的默认位置  ~

      - /bin/bash:该用户的shell脚本的解析方式  ,sh 、bash、rbash

     

    然后再来创建用户(以创建"lijing"用户为例),步骤如下:

    1.创建 /home/lijing 目录(在home下创建“lijing”文件)

    2. 执行 useradd 命令

       -d :指定该用户的home 路径 

       - s :该用户的shell解析方式

    3. 用 passwd 设置密码

    4. su 切换用户

    展开全文
  • Linux的基本操作——crond定时任务

    万次阅读 多人点赞 2019-09-03 13:29:09
    crond是linux下用来周期性执行某种任务或等待处理某些事件一个守护进程,与windows下计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有...

     

    一、crond简介

    1、基本介绍

            crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。

    系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。/etc/crontab文件包括下面几行:

    [root@localhost ~]# cat /etc/crontab 
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO="root"
    HOME=/
    # run-parts
    51 * * * * root run-parts /etc/cron.hourly
    24 7 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly
    [root@localhost ~]#

    前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

    用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。下面是几个特殊的文件介绍:

    • 文件:/etc/cron.deny                该文件中所列用户不允许使用crontab命令
    • 文件:/etc/cron.allow                该文件中所列用户允许使用crontab命令
    • 文件:/var/spool/cron/              所有用户crontab文件存放的目录,以用户名命名

    2、crontab文件

            用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    minute hour day month week command

    其中:

    • minute: 表示分钟,可以是从0到59之间的任何整数。
    • hour:表示小时,可以是从0到23之间的任何整数。
    • day:表示日期,可以是从1到31之间的任何整数。
    • month:表示月份,可以是从1到12之间的任何整数。
    • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

    在以上各个字段中,还可以使用以下特殊字符:

    • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
    • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

    二、crond服务

    安装crontab:

    yum install crontabs

    服务操作说明:

    /sbin/service crond start   #启动服务
    /sbin/service crond stop    #关闭服务
    /sbin/service crond restart #重启服务
    /sbin/service crond reload  #重新载入配置

    查看crontab服务状态:

    service crond status

    手动启动crontab服务:

    service crond start

    查看crontab服务是否已设置为开机启动,执行命令:

    ntsysv

    加入开机自动启动:

    chkconfig –level 35 crond on

    三、crontab命令详解

    1、命令格式

    crontab [-u user] file
    crontab [-u user] [ -e | -l | -r ]

    2、命令功能

            通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

    3、命令参数

    • -u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
    • file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
    • -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
    • -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
    • -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
    • -i:在删除用户的crontab文件时给确认提示。

    4、常用方法

    1.创建一个新的crontab文件

            在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑profile文件,在其中加入这样一行:

    EDITOR=vi; export EDITOR

    然后保存并退出。不妨创建一个名为<user> cron的文件,其中<user>是用户名,例如, davecron。在该文件中加入如下的内容。

    # (put your own initials here)echo the date to the console every
    # 15minutes between 6pm and 6am
    0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

    保存并退出。确信前面5个域用空格分隔。

            在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

    $ crontab davecron

    现在该文件已经提交给cron进程,它将每隔1 5分钟运行一次。同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

    2.列出crontab文件

    为了列出crontab文件,可以用:

    $ crontab -l
    0,15,30,45,18-06 * * * /bin/echo `date` > dev/tty1

    你将会看到和上面类似的内容。可以使用这种方法在$ H O M E目录中对crontab文件做一备份:

    $ crontab -l > $HOME/mycron

    这样,一旦不小心误删了crontab文件,可以用上一节所讲述的方法迅速恢复。

    3. 编辑crontab文件

    如果希望添加、删除或编辑crontab文件中的条目,而E D I TO R环境变量又设置为v i,那么就可以用v i来编辑crontab文件,相应的命令为:

    $ crontab -e

    可以像使用v i编辑其他任何文件那样修改crontab文件并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时, c r o n会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。我们在编辑crontab文件时,没准会加入新的条目。例如,加入下面的一条:

    # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
    30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

    现在保存并退出。最好在crontab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。现在让我们使用前面讲过的crontab -l命令列出它的全部信息:

    $ crontab -l 
    # (crondave installed on Tue May 4 13:07:43 1999)
    # DT:ech the date to the console every 30 minites
    0,15,30,45 18-06 * * * /bin/echo `date` > /dev/tty1
    # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
    30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

    4.删除crontab文件

    要删除crontab文件,可以用:

    $ crontab -r

    5.恢复丢失的crontab文件

            如果不小心误删了crontab文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:

    $ crontab <filename>

    其中,<filename>是你在$ H O M E目录中副本的文件名。

    建议你在自己的$ H O M E目录中保存一个该文件的副本。我就有过类似的经历,有数次误删了crontab文件(因为r键紧挨在e键的右边)。这就是为什么有些系统文档建议不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件。

    有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。

    5、使用实例

    每1分钟执行一次command

    * * * * * command

    每小时的第3和第15分钟执行

    3,15 * * * * command

    在上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * * command

    每隔两天的上午8点到11点的第3和第15分钟执行

    3,15 8-11 */2 * * command

    每个星期一的上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * 1 command

    每晚的21:30重启smb 

    30 21 * * * /etc/init.d/smb restart

    每月1、10、22日的4 : 45重启smb 

    45 4 1,10,22 * * /etc/init.d/smb restart

    每周六、周日的1 : 10重启smb

    10 1 * * 6,0 /etc/init.d/smb restart

    每天18 : 00至23 : 00之间每隔30分钟重启smb 

    0,30 18-23 * * * /etc/init.d/smb restart

    每星期六的晚上11 : 00 pm重启smb

    0 23 * * 6 /etc/init.d/smb restart

     每一小时重启smb

    * */1 * * * /etc/init.d/smb restart

     晚上11点到早上7点之间,每隔一小时重启smb

    * 23-7/1 * * * /etc/init.d/smb restart

     每月的4号与每周一到周三的11点重启smb

    0 11 4 * mon-wed /etc/init.d/smb restart

     一月一号的4点重启smb

    0 4 1 jan * /etc/init.d/smb restart

    每小时执行/etc/cron.hourly目录内的脚本

    01 * * * * root run-parts /etc/cron.hourly

    run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了

    四、使用注意事项

    1、注意环境变量问题

            有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

            在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程序当然能找到环境变量,而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这样,系统执行任务调度时就没有问题了。

            不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

    1)脚本中涉及文件路径时写全局路径;

    2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

    cat start_cbp.sh
    #!/bin/sh
    source /etc/profile
    export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
    /usr/local/jboss-4.0.5/bin/run.sh -c mev &

    3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:

    0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

    2、注意清理系统用户的邮件日志

            每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。例如,可以在crontab文件中设置如下形式,忽略日志输出:

    0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

    “/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

    3、系统级任务调度与用户级任务调度

            系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过“crontab –uroot –e”来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

    4、其他注意事项

    • 新创建的cron job,不会马上执行,至少要过2分钟才执行。
    • 如果重启cron则马上执行。当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
    • 千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
    • 在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d
    展开全文
  • 看完这篇 Linux 的基本操作你就会了!

    千次阅读 多人点赞 2019-04-17 14:42:33
    如果你拥有了它,一定不会只满足于驾驶它上下班,不能只会挂挡、踩油门和控制方向之类的基本操作。我们想充分了解并掌握它,挖掘其更多潜能。但是,这个过程有相当的难度。 01 Linux 系统编程的难点 对于有一定 ...
  • Linux的基本操作——文件系统

    千次阅读 2018-07-26 22:07:20
    打个广告,帮朋友卖点东西,东西超便宜哟【衣服鞋子等】,厂家直接出货,绝对低于市场价!!!一般都比市场价便宜3—7折【都是牌子货】,如果您感兴趣,可以扫描... dev 存放设备文件目录(linux把设置当做文...
  • Linux的基本操作和常用命令的使用

    千次阅读 2018-09-07 10:37:55
    查看文件命令 ls 显示文件内容命令 cat 文件复制命令 cp 改变当前目录命令 cd 显示当前目录命令 pwd 建立子目录 mkdir 删除子目录 rmdir 删除文件命令 rm 显示文件内容命令 cat 文件改名命令 mv ...
  • Linux一些基本操作(一)

    千次阅读 2020-02-25 11:54:06
    Linux的基本操作及命令 文本编辑 vim vim 也有创建文件的作用 命令模式:执行命令,不能写东西 i a 进入插入模式 编辑 dd 删除当前行 yy 2yy nyy 复制 从光标算起,复制n行 p 粘贴 默认粘贴在光标的下一行 u 撤销 ^r...
  • 今天博主和大家聊一聊 Linux的基本操作,不喜勿喷,如有建议欢迎补充,讨论。 一.Linux网络 1.网卡的命名规则 CENTOS7采用dmidecode采集命名方案,以此来得到主板信息;它可以实现网卡名字永久唯一化 2.对...
  • Linux的基本操作命令集锦

    千次阅读 2016-05-09 18:53:59
    对于Linux下的开发人员来说,除了编写代码之外,也要熟练掌握Linux操作系统的一些基本操作。很多开发人员可能会有这样的经历:有...本文汇总了我在使用Linux的过程中所使用过的一些基本操作,可供相关的开发人员参考。
  • linux文件基本操作管理

    千次阅读 2013-07-05 20:49:11
    linux的文件基本操作管理
  • 目的:1、熟悉Linux操作系统环境2、熟悉Linux操作系统的文件结构3、熟悉Linux操作系统的基本命令4、熟悉Linux操作系统的文件组织方式5、学习使用vi编辑器建立、编辑、显示以及加工处理文本文件 内容 1、启动Ubuntu ...
  • Linux基本操作——Linux磁盘基本概念

    千次阅读 2014-12-01 00:10:04
    linux 所有设备都会被抽象为一个文件,保存在/devide设备名称为hd[a-z],SATA、SCSI、SAS、USB等设备名称为sd[a-z] /dev/sda1, /dev/sda2: 第一块硬盘第一、第二分区 分区不是硬盘物理功能,而是软件...
  • Linux系统基本操作及其应用

    千次阅读 2019-01-28 10:54:26
    1、Linux系统的基本操作命令和安全加固。 (1)目录操作 1)ls:显示当前工作目录下的文件名和目录名。例: ls 显示出当前目录下的文件 ls -a 显示出包含隐藏文件的所有文件 ls -t 按照文件最后修改时间显示文件 ls ...
  • linux操作系统的基本认识

    万次阅读 多人点赞 2018-10-10 12:58:29
    我刚开始学这个东西时候也不太清楚,只是听别人说linux操作系统什么。那linux到底是什么?我们来认识一下:  Linux是最知名和最常用开源操作系统。作为一个操作系统,Linux是一个软件,位于计算机上所有...
  • Linux文件基本操作

    2015-04-08 11:39:35
    例子CP: 例子向目录中复制,不需要指定文件名: 例子复制文件夹:(-r) ...下面是交互式删除例子-ri参数: 此时ls命令显示文件夹已被删除。 创建、删除目录: 创建和删除例子如下: r
  • 体验 Linux 基本操作

    千次阅读 2021-02-18 23:01:25
    CPU2.3 查看内存信息2.4 关机操作2.5 重启操作二、查看及修改配置文件1.VI 编辑器简单使用1.1 VI 编辑器简介1.2 VI 编辑器使用1.2.1 三种工作模式与不同模式之间切换1.2.2 命令模式基本操作1.2.3 末行模式基本...
  • 今天博主开始给大家发关于Linux的命令篇章—Linux基本命令操作之ls别名的使用。不喜勿喷,欢迎关注,如有建议欢迎补充,讨论。 Linux命令格式 命令 【选项】 【参数】 命令:具体执行的命令 如:pwd等 选项...
  • #java启动Springboot后台程序 nohup java -jar app.jar & #java启动Springboot后台程序并且输出日志 nohup java -jar chaodou-admin-1.0.0.jar >./springboot.log &
  • 基于Linux的MySQL基本操作

    千次阅读 2021-01-06 20:06:34
    MySQL数据基本操作 一、首次部署MySQL创建root用户密码: #设置密码为‘123456’ mysqladmin -u root password '123456' #登录mysql mysql -u root -p 二、修改密码 第一种方法: mysqladmin -u 用户名 -p 旧密码 ...
  • linux下文件的基本操作 新建文件夹:mkdir + 文件夹名 新建文件: touch + 文件名 删除文件: rm + rf +文件/文件夹 r:递归,即删除文件以及他的子文件 f:强制删除 i:交互模式,删除时询问是否删除 文件...
  • Linux Ubuntu基本操作指令

    万次阅读 多人点赞 2018-06-10 17:01:22
    Linux的登录方式: 1. 本地登录 2. 远程登录:putty使用查看运行级别:Linux运行级别0~6级, 0 关机 6 重启 1 单用户 2,3 多用户。可以通过runlevel 查看运行级别 logout 注销用户重新登录。关机指令:shutdown ...
  • Linux入门:基本操作

    千次阅读 2018-08-08 17:27:44
    Linux入门基本操作 基本概念 (1)Linux与Shell Linux是内核,负责电脑硬件、网络进程和驱动等,用户无法直接与之沟通; Shell是用户交互接口,负责人与操作系统信息交流,本质是二进制代码。 (2)...
  • Linux操作系统的基本构成 内核 Shell 文件系统(eg:c盘d盘) 应用程序 内核 操作系统的核心,负责管理系统的进程、内存、设备、驱动程序、文件和网络系统 控制系统和硬件之间的相互通信 决定着系统的性能和...
  • 搭建OAI需要知道的Linux基本操作

    千次阅读 2017-08-04 15:42:59
    对于还没接触过Linux的同学来说,搭建OAI只需要学会的Linux基本操作即可。我这里只列举OAI搭建过程中可能会涉及的一些基本操作,如果想深入学习Linux,推荐看看《鸟个的Linux私房菜》。 一:普通用户与root的概念、...
  • Linux基本操作命令 实验

    万次阅读 2018-04-29 18:09:55
    二、实验环境:一台装有Linux的机器。三、实验内容:1.文件操作命令的使用。用vi编辑器新建一个testl文件输入this is testl~!查看文件与目录ls进入Linux系统,输入ls-m按回车键执行。 一、实验目的:1. 熟悉Linux...
  • #linux linux的基本认识

    千次阅读 2019-01-01 23:12:24
    #linux linux的基本认识   目录 #linux linux的基本认识 1、什么是linux 2、为什么要使用linux 3、linux系统的深入认识  3.1 linux的界面  3.2 linux的目录  3.3 linux的常用快捷键 1、什么是linux ...
  • Linux基本操作命令

    千次阅读 2012-10-07 13:58:31
    Linux基本操作命令  首先介绍一个名词“控制台(console)”,它就是我们通常见到使用字符操作界面人机接口,例如dos。我们说控制台命令,就是指通过字符界面输入可以操作系统命令,例如dos命令就是控制台...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,538
精华内容 14,215
关键字:

linux的基本操作

linux 订阅