04-快速上手几个 Linux 命令:每家公司都有自己的黑话

Linux 操作系统有很多功能,我们有很多种方式可以使用这些功能,其中最简单和直接的方式就是命令行(Command Line)。命令行就相当于你请求服务使用的专业术语。干任何事情,第一步就是学会使用正确的术语。这样,Linux 作为服务方,才能听懂。

用户与密码

Root 是 Linux 下的系统管理员,有最高的操作权限。对应的密码是在安装操作系统的过程中设置的;假如要修改密码,使用 passwd 命令;

Linux 下创建其他用户用 useradd 命令

useradd Leooel

创建后需要自己调用 passwd Leooel 来设置密码,再进行登录。

和 Windows 下一样,Linux 里用户也是分组的,前面我们创建用户的时候没有说加入哪个组,会默认创建一个同名的组。能不能在创建用户的时候就指定属于哪个组呢?这个时候你可以使用 -h 参数获取帮助。

Linux 里是“命令行 + 文件”模式。对于用户管理来说,也是一样的。通过命令创建的用户,其实是放在 /etc/passwd 文件里的。组的信息我们放在 /etc/group 文件中。

用户文件里包含该用户的名称、密码、用户 ID、组 ID、用户主目录以及用于配置登录后的默认交互命令行的 /bin/bash。

浏览文件

Linux 的文件系统也是用文件夹把文件组织起来形成一个树形的结构。

cd:切换目录,即 change directory

cd .:切换到当前目录

cd..:切换到上一级目录

ls:列出当前目录下的文件(相当于dos下的dir)

ls -l:用列表的方式列出来

drwxr-xr-x 6 root root 4096 Oct 20 2017 apt
-rw-r--r-- 1  root  root 211  Oct 20 2017  hosts

第一个字段的第一个字符是文件类型,如果是“-”,表示普通文件;如果是 d,就表示目录。第一个字段剩下的 9 个字符是模式,其实就是权限位,3 个一组,每一组 rwx 表示 读(read)、写(write)、执行(execute),是字母,就说明有这个权限;如果是横线,就是没有这个权限。这三组分别表示文件所属的用户权限、文件所属的组权限以及其他用户的权限。如果想改变权限,可以使用命令 chmod

第二个字段是硬链接(hard link)数目,这个比较复杂,讲文件的时候我会详细说。

第三个字段是所属用户,第四个字段是所属组。第五个字段是文件的大小,第六个字段是文件被修改的日期,最后是文件名。可以通过命令chown改变所属用户,chgrp改变所属组。

安装软件

rpmdeb 是 Linux 下面的安装包,为什么有两种呢?因为 Linux 现在常用有两大体系,CentOS 体系用 rpm,Ubuntu 体系用 deb。

CentOS 下面使用 rpm -i jdk-XXX_linux-x64_bin.rpm进行安装
Ubuntu 下面使用 dpkg -i jdk-XXX_linux-x64_bin.deb。其中 -i 就是 install 的意思。

在 Linux 下面,凭借rpm -qadpkg -l就可以查看安装的软件列表,-q 就是 query,a 就是 all,-l 就是list。

如果真的去运行的话,你会发现这个列表很长很长,很难找到你想找的东西,你可以用一个很好用的搜索工具 grep,通过关键词进行搜索。

rpm -qa | grep jdk,这个命令是将列出来的所有软件形成一个输出。| 是管道,用于连接两个程序,前面 rpm -qa 的输出就放进管道里面,然后作为 grep 的输入,grep 将在里面进行搜索带关键词 jdk 的行,并且输出出来。grep 支持正则表达式,因此搜索的时候很灵活,再加上管道,这是一个很常用的模式。同理dpkg -l | grep jdk也是能够找到的。

如果你不知道关键词,可以使用rpm -qa | morerpm -qa | less这两个命令,它们可以将很长的结果分页展示出来。这样你就可以一个个来找了。

我们还是利用管道的机制。more 是分页后只能往后翻页,翻到最后一页自动结束返回命令行,less 是往前往后都能翻页,需要输入 q 返回命令行,q 就是 quit。

如果要删除,可以用rpm -edpkg -r。-e 就是 erase,-r 就是 remove。

Linux 也有自己的软件管家,CentOS 下面是 yum,Ubuntu 下面是 apt-get。

你可以根据关键词搜索,例如搜索jdk,yum search jdkapt-cache search jdk,可以搜索出很多可以安装的 jdk 版本。如果数目太多,你可以通过管道 grep、more、less 来进行过滤。

选中一个之后,我们就可以进行安装了。你可以用yum install java-11-openjdk.x86_64apt-get install openjdk-9-jdk来进行安装。

安装以后,如何卸载呢?我们可以使用yum erase java-11-openjdk.x86_64apt-get purge openjdk-9-jdk

Linux 允许我们配置从哪里下载这些软件的,地点就在配置文件里面。

对于 CentOS 来讲,配置文件在/etc/yum.repos.d/CentOS-Base.repo里。

对于 Ubuntu 来讲,配置文件在/etc/apt/sources.list里。

其实无论是先下载再安装,还是通过软件管家进行安装,都是下载一些文件,然后将这些文件放在某个路径下,然后在相应的配置文件中配置一下。

对应 Linux,主执行文件会放在 /usr/bin 或者 /usr/sbin 下面,其他的库文件会放在 /var 下面,配置文件会放在 /etc 下面。

所以其实还有一种简单粗暴的方法,就是将安装好的路径直接下载下来,然后解压缩成为一个整的路径。如何下载呢?Linux 上面有一个工具 wget,后面加上链接,就能从网上下载了。下载下来后,我们就可以进行解压缩了。Windows 下可以有 winzip 之类的解压缩程序,Linux 下面默认会有 tar 程序。如果是解压缩 zip 包,就需要另行安装。

yum install zip.x86_64 unzip.x86_64
apt-get install zip unzip

如果是 tar.gz 这种格式的,通过 tar xvzf jdk-XXX_linux-x64_bin.tar.gz 就可以解压缩了。

在 Linux 下以下载压缩包的方式安装 jdk 的时候,通过 tar 解压缩之后,也需要配置环境变量,可以通过 export 命令来配置。

export JAVA_HOME=/root/jdk-XXX_linux-x64
export PATH=$JAVA_HOME/bin:$PATH

export 命令仅在当前命令行的会话中管用,一旦退出重新登录进来,就不管用了。有没有一个地方可以像 Windows 里面可以配置永远管用呢?

在当前用户的默认工作目录,例如 /root 或者 /home/cliu8 下面,有一个.bashrc 文件,这个文件是以点开头的,这个文件默认看不到,需要 ls -la 才能看到,每次登录的时候,这个文件都会运行,因而把它放在这里,这样登录进来就会自动执行。当然也可以通过 source .bashrc 手动执行。

要编辑.bashrc 文件,可以使用文本编辑器 vi,也可以使用更加友好的 vim。如果默认没有安装,可以通过 yum install vimapt-get install vim 进行安装。

vim 就像 Windows 里面的 notepad 一样,是我们第一个要学会的工具。vim 是一个很复杂的工具,刚上手的时候,你只需要记住几个命令就行了。

vim hello:打开名为 hello 的文件,没有则创建;

i:insert,进入编辑模式,可插入、删除字符;

要想保存编辑的文本,可以先按 esc 键退出编辑模式,然后输入":",然后输入命令 w,即write,这样就可以保存文本,如果冒号后面输入 q,即 quit,就会退出 vim。如果编辑了,还没保存,不想要了,可以输入 q!。

通过 vim .bashrc,将 export 的两行加入后,输入:wq,写入并且退出,这样就编辑好了。

运行程序

Linux 不是根据后缀名来执行的。它的执行条件是这样的:只要文件有 x 执行权限,都能到文件所在的目录下,通过./filename运行这个程序。当然,如果放在 PATH 里设置的路径下面,就不用./ 了,直接输入文件名就可以运行了,Linux 会帮你找。

这是Linux 执行程序最常用的一种方式,通过 shell 在交互命令行里面运行。这种模式的缺点是,一旦当前的交互命令行退出,程序就停止运行了,不能用来运行那些需要“永远“在线的程序,适合运行一些简单的命令。

Linux 运行程序的第二种方式,后台运行

这个时候,我们往往使用 nohup 命令。这个命令的意思是 no hang up(不挂起),也就是说,当前交互命令行退出的时候,程序还要在。当然这个时候,程序不能霸占交互命令行,而是应该在后台运行。最后加一个 &,就表示后台运行。后台运行过程中的输出要输出到文件。

最终命令的一般形式为nohup command >out.file 2>&1 &。这里面,“1”表示文件描述符 1,表示标准输出,“2”表示文件描述符 2,意思是标准错误输出,“2>&1”表示标准输出和错误输出合并了。合并到哪里去呢?到 out.file 里。

那这个进程如何关闭呢?我们假设启动的程序包含某个关键字,那就可以使用下面的命令:

ps -ef |grep 关键字 |awk '{print $2}'|xargs kill -9

从这个命令中,我们多少能看出 shell 的灵活性和精巧组合。

其中 ps -ef 可以单独执行,列出所有正在运行的程序,grep 上面我们介绍过了,通过关键字找到咱们刚才启动的程序。

awk 工具可以很灵活地对文本进行处理,这里的 awk '{print $2}'是指第二列的内容,是运行的程序 ID。我们可以通过 xargs 传递给 kill -9,也就是发给这个运行的程序一个信号,让它关闭。如果你已经知道运行的程序 ID,可以直接使用 kill 关闭运行的程序。

程序运行的第三种方式,以服务的方式运行。例如常用的数据库 Mysql 就是以这种方式运行。

例如在 Ubuntu 中,我们可以通过 apt-get install mysql-server 的方式安装 MySQL,然后通过命令systemctl start mysql启动 MySQL,通过systemctl enable mysql 设置开机启动。之所以成为服务并且能够开机启动,是因为在 /lib/systemd/system 目录下会创建一个 XXX.service 的配置文件,里面定义了如何启动、如何关闭。

在 CentOS 里有些特殊,MySQL 被 Oracle 收购后,因为担心授权问题,改为使用 MariaDB,它是 MySQL 的一个分支。通过命令 yum install mariadb-server mariadb 进行安装,命令 systemctl start mariadb 启动,命令 systemctl enable mariadb 设置开机启动。同理,会在 /usr/lib/systemd/system 目录下,创建一个 XXX.service 的配置文件,从而成为一个服务。

shutdown -h now 现在就关机,reboot 是重启。

课后练习

动手搭建一个基于 Java + MySQL 的服务端应用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容