Linux概念:Linux是一个以Intel系列CPU(CYRIX,AMD的CPU也可以)为硬件平台,完全免费的UNIX兼容系统,完全适用于个人的PC。它本身就是一个完整的32位的多用户多任务操作系统,因此不需要先安装DOS或其他的操作系统(MS Windows, OS2, MINIX…)就可以进行直接的安装。
Linux版本:其发行版本有Ubuntu、Centos、redhat、debian、opensuse等等;其中ubuntu注重界面,Centos注重服务器。其内核版本可以通过uname -a来查看。
Linux发展史:Linux的最早起源是在1991年10月5日由一位芬兰的大学生Linux Torvalds ([email protected])写了Linux核心程序的0.02版开始的,但其后的发展却几乎都是由互联网上的Linux社团(Linux Community)互通交流而完成的。Linux不属于任何一家公司或个人,任何人都可以免费取得甚至修改它的源代码(source code)。Linux上的大部分软件都是由GNU倡导发展起来的,所以软件通常都会在附着GNU Public License(GPL)的情况下被自由传播。GPL是一种可以使你免费获得自由软件的许可证,因此Linux使用者的使用活动基本不受限制(只要你不将它用于商业目的),而不必像使用微软产品是那样,需要为购满许可证付出高价还要受到系统安装数量的限制。(GPL协议: 其中一种:“你可以使用开源代码,同时你写出来代码,也必须开源”)
Linux优势:1.真正的支持多任务,多用户;2.支持多种文件系统(FAT32, NTFS…);3.开源, 支持重新编译,裁剪;4.运行稳定,功能强大, 性能优异
Linux的文件系统和Windows的文件系统有很大的不同,linux只有一个文件树,整个文件系统是以一个树根"/"为起点的,所有的文件和外部设备都以文件的形式挂结在这个文件树上,包括硬盘,软盘,光驱,调制解调器等。Linux系统没有磁盘的概念,只有目录,这和以"驱动器盘符为基础的Windows系统是大不相同的。
Linux目录如下:
/bin和/sbin :使用和维护UNIX和Linux系统的大部分基本程序都包含在/bin和/sbin里,这两个目录的名气之所以包含bin,是因为可执行的程序都是二进制文件。/bin目录通常用来存放用户最常用的基本程序,如:login、Shells、文件操作实用程序、系统实用程序、压缩工具。/bin目录通常存放基本的系统和系统维护程序,如:fsck、fdisk、mkfs、shutdown、lilo、init。存放在这两个目录中的程序的主要区别是:/sbin中的程序只能由root(管理员)来执行。
/ect :这个目录一般用来存放程序所需的整个文件系统的配置文件,其中的一些重要文件如下:passwd、shadow、fstab、hosts、motd、profile、shells、services、lilo.conf。
/lost+found :这个目录专门是用来存放那些在系统非正常死机后重新启动系统时,不知道该往哪里恢复的“流浪”文件的。
/boot :这个目录下面存放着和系统启用有关系的各种文件,包括系统的引导程序和系统核心部分。
/root :这是系统管理员(root)的主目录。
/home :系统中所有用户的主目录都存放在/home中,它包含实际用户(人)的主目录和其他用户的主目录。Linux同UNIX的不同之处是,Linux的root用户的主目录通常在/root或/home/root,而UNIX通常是在/。
/mnt :默认挂载的目录,按照约定,像CD-ROM,软盘,Zip盘这样的可以动的介质都应该安装在/mnt目录下,/mnt目录通常包含一些子目录,每个子目录是某种特定设备类型的一个安装点。例如:/cdrom/floppy/zip/win …。如过我们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂接过来。
/tmp和/var :这两个目录用来存放临时文件和经常变动的文件;
/dev :这个目录里存放着各种外部设备的镜像文件,鼠标,键盘,终端。
/usr :按照约定,这个目录用来存放与系统的用户直接相关的程序或文件,这里面有每一个系统用户的主目录,就是相对于他们的小型"/"。
/proc :这个目录下面的内容是当前在系统中运行的进程的虚拟镜像,我们在这里可以看到由当前运行的进程号组成的一些目录,还有一个记录当前内存内容的kernel文件。
/tmp :临时目录
/lib :存放库文件,其中静态库.a,共享库.so。
/root :root超级管理员的主目录,root 拥有linux下的所有权限
首先介绍一个名词"控制台(console)",它就是我们通常见到的使用字符操作界面的人机接口,例如dos。我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。我们现在要了解的是基于Linux操作系统的基本控制台命令。
ls命令 :列举出目录下的文件和目录信息(list)。ls最常用的参数有三个:-a -l -F。ls -a除了显示一般文件名外,连隐藏文件也会显示出来。ls -l这个命令可以使用长格式显示文件内容,如果需要察看更详细的文件资料,就要用到ls -l这个指令。ls -F使用这个参数表示在文件的后面多添加表示文件类型的符号,例如*表示可执行,/表示目录,@表示连结文件,这都是因为使用了-F这个参数。但是现在基本上所有的Linux发行版本的ls都已经内建了-F参数,也就是说,不用输入这个参数,我们也能看到各种分辨符号。
cd命令 : 改变目录(change dir)
mkdir,rmdir命令 :mkdir命令用来建立新的目录,rmdir用来删除以建立的目录.
cp命令 :拷贝文件或目录,具体用法是cp -r 源文件(source) 目的文件(target),参数r是指连同元文件中的子目录一同拷贝,如果a目录中有其他的子目录或文件,递归拷贝命令 。
rm命令 : 这个命令是用来删除文件的,rm命令常用的参数有三个:-i, -r, -f。具体用法为:rm -i 文件名,系统会询问是否删除;rm -r 目录名这个操作可以连同这个目录下面的子目录都删除,功能上和rmdir相似。rm -f 文件名(目录名)这个操作可以进行强制删除。
mv命令 :这个命令的功能是移动目录或文件,引申的功能是给目录或文件重命名。当使用该命令来移动目录时,他会连同该目录下面的子目录也一同移走。另外因为linux下面没有rename的命令,所以如果你想给一个文件或目录重命名时可以用以下方法:mv 原文件(目录)名 新的文件(目录)名 。
du,df命令 :du命令可以显示目前的目录所占的磁盘空间,df命令可以显示目前磁盘剩余的磁盘空间。如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况。
cat命令:这个命令是linux中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。cat是concatenate的简写,它的用法如下:cat text 显示text这个文件;cat file1 file2 依顺序显示file1,file2的内容;cat file1 file2>file3 把file1,file2的内容结合起来,再"重定向(>)"到file3文件中。 ">“是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被覆盖,而变成file1+file2的内容。如果〉左边没有文件的名称,而右边有文件名,例如:cat >file1 ,结果是会"空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生file1这个文件,而file1的内容就是你刚刚输入的内容。另外,如果你使用如下的指令: cat file1>>file2,这将变成将file1的文件内容"附加"到file2的文件后面,而file2的内容依然存在,这种重定向符>>比>常用,可以多多利用。
more,less命令 :这是两个显式一般文本文件的指令。如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。more指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显式。而less除了有more的功能以外,还可以用方向键往上或往下的滚动文件,所以当我们想随意浏览,阅读文章时,less是个非常好的选择。
clear命令 :这个命令是用来清除屏幕的,它不需要任何参数,就可以使用它清除屏幕上的信息。
pwd命令 :这个命令的作用是显示用户当前的工作路径。
ln命令:功能是为某一个文件在另外一个位置建立一个链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
man命令 : 如果你的英文足够好,那完全可以不靠任何人就精通linux,只要你会用man。Man实际上就是察看指令用法的help,学习任何一种UNIX类的操作系统最重要的就是学会使用man这个辅助命令。man是manual(手册)的缩写字,它的说明非常的详细,但是因为它都是英文,看起来非常的头痛。建议大家需要的时候再去看man
logout命令 :这是退出系统的命令,要强调的一点是,linux是多用户多进程的操作系统,因此如果你不用了,退出系统就可以了,关闭系统你就不用操心了,那是系统管理员的事情。但有一点切记,即便你是单机使用linux,logout以后也不能直接关机,因为这不是关机的命令。
mount命令 :装载的命令是mount,格式如下:mount -t 文件系统类型 设备名 装载目录 文件系统类型就是分区格式。
date命令 :时间。
最后说一个小技巧,命令参数不全:按1/2次tab。
系统管理基本上可以分为两种,一种是root(系统管理员)对linux的系统管理部分,root本身的职责就是负责整个linux系统的运行稳定,增加系统安全性,校验使用者的身份,新增使用者或删除恶意的使用者,并明确每一个在机器上的使用者权限等等。另一种就是每一个使用者(包括root)对自己文件的权限管理。因为linux是多用户多任务系统,每一个使用者都有可能将其工作的内容或是一些机密性的文件放在Linux工作站上,所以对每个文件或是目录的归属和使用权,都要有非常明确的规定。下面我就按管理员和一般用户分类来介绍基本的系统管理命令。
管理员使用的系统管理指令
adduser命令 :新增使用者账号的命令,如果你想新增一个叫做jack的用户,那么需在控制台下输入:adduser jack,这样就增加了一个名字为jazk的用户,要注意这里对大小写是敏感的。你还应当为用户设置口令或者是吩咐用户在第一次登录系统的时候为自己设置口令。
passwd命令 : 这个命令可以修改特定用户的口令,使用格式是:passwd 用户名。这时,系统会提示你输入新密码,你输入第一遍后,还要输入第二遍进行确认。输入两遍相同的密码之后,系统就接受了新的密码。如果这个命令是一般用户来使用的话,那就只能改变它自己的密码。
find,whereis,locate命令 :这三个命令都是用来查找文件的,使用格式分别是:find 路径名称 -name 文件名 参数;whereis 文件名;locate 文件名。一般来说,find命令功能最为强大,但是对硬件的损耗也是最大的,当你使用find去查找你个文件时,你会发现硬盘等在不停的闪动,这就意味着你的硬盘可能会比别人的少用个三四年。当你使用whereis或locate去查找文件时,你会发现硬盘却是安安静静的,这是因为这两个命令是从系统的数据库中查找文件,而不是去拼命的读硬盘。所以,如果平常你只是想找一些笑文件的话,使用whereis或locate就可以了,如果你是要进行系统管理的工作,那么使用find再加上一些参数就可以满足你的要求了。
su命令 :这个命令可以让普通用户变成具有管理员权限的超级用户(superuser),只要它知道知道管理员的密码就可以。多用户多任务系统的强调的重点之一就是系统的安全性,所以应避免直接使用root身份登录系统去做一些日常性的操作,因为时间一久root密码就有可能被知道而危害到系统安全。所以平常应避免用root身份登录,即使要管理系统,也请尽量使用su指令来临时管理系统,然后记住定期的更换root密码。加入你现在是以一个普通用户的身份登录系统,现在你输入:su,系统会要求你输入管理员的口令,当你输入正确的密码后,就可以获得全部的管理员权限,这是你就是超级用户(superuser)。但你执行完各种管理操作以后,只要输入logout就可以退回到原先的那个普通用户的状态。用法:1.su 切换到超级用户;2. su dy 切换到dy用户,但主目录保持不变;3.su -dy 切换到dy用户,同时切换到dy的主目录。
shutdown,halt命令 :这两个命令是用来关闭linux操作系统的。作为一个普通用户是不能够随便关闭系统的,因为虽然你用完了机器,可是这时候可能还有其它的用户正在使用系统。因此,关闭系统或者是重新启动系统的操作只有管理员才有权执行。另外linux系统在执行的时候会用部分的内存作缓存区,如果内存上的数据还没有写入硬盘,就把电源拔掉,内存就会丢失数据,如果这些数据是和系统本身有关的,那么会对系统造成极大的伤害。一般,我们建议在关机之前执行三次同步指令sync,可以用分号";“来把指令合并在一起执行,如:# sync;sync;sync 。使用shutdown关闭系统的时候有以下几种格式:shutdown (系统内置2分钟关机,并传送一些消息给正在使用的user) ;shutdown -h now (下完这个指令,系统立刻关机) ;shutdown -r now (下完这个指令,系统立刻重新启动,相当于reboot);shutdown -h 20:25 (系统会在今天的20:25关机) ;shutdown -h +10 (系统会在十分钟后关机) 。如果在关机之前,要传送信息给正在机器上的使用者,可以加”-q"的参数,则会输出系统内置的shutdown信息给使用者,通知他们离线。 至于halt命令,只要你输入halt,系统就会开始进入关闭过程,其效果和shutdown -h now是完全一样的,我每次关机的时候都是用halt。
reboot命令 :这个命令是用来重新启动系统的。当你输入reboot后,你就会看到系统正在将一个一个的服务都关闭掉,然后再关闭文件系统和硬件,接着机器开始重新自检,重新引导,再次进入linux系统。
普通用户使用的系统管理指令
chown命令 : 这个命令的作用是改变文件的所有者。 注意,但是当你改变了文件的所有者以后,该文件虽然在你的Home目录下,可是你已经无任何修改或删除该文件的权限了。
chmod命令 : 这个命令用来改变目录或文件的属性。chmod的用法比较多,chmod [-cfvR] [- -help] [--version] mode file ....
。其中-c : 若该文件权限确实已经更改,才显示其更改动作;-f : 若该文件权限无法被更改也不要显示错误讯息;-v : 显示权限变更的详细资料;-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更);–help : 显示辅助说明;–version : 显示版本;mode : 权限设定字串,格式如下 :[ugoa...][[+-=][rwxX]...][,...]
.u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
顺便说一下Linux的文件调用权限,文件所有者(Owner)、用户组(Group)、其他用户(Other Users)。
ps命令 :ps 是用来显示目前你的 process 或系统 processes 的状况。以下列出比较常用的参数:-a 列出包括其他 users 的 process 状况;-u 显示 user - oriented 的 process 状况 ;x 显示包括没有 terminal 控制的 process 状况 ;-w 使用较宽的显示模式来显示 process 状况 。
kill命令 :kill 指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill 。kill 的用法
为:kill [ -SIGNAL ] pid …;kill –l。SIGNAL 为一个 singal 的数字,从 0 到 31 ,其中 9 是 SIGKILL ,也就是一般用来杀掉一些无法正常 terminate 的信号。你也可以用 kill -l 来查看可代替 signal 号码的数目字。
Linux世界里最常用的几种工具软件,包括:vi, tar, gzip, rpm。
vi是Linux(UNIX)世界最强大的文本编辑工具,它的一些基本使用方法如下:
vi的三种状态:
vi的基本操作:
Command mode下功能键简介:
Last line mode下指令简介:
(注意:使用前请先按ESC键确定在Command mode下,按’:'或‘/’或‘?’三键即可进入Last line mode)
进入Insert mode:set nu(可用:set all列出所有的选择项)。
寻找字串:寻找字串 /word(由首至尾寻找)?word(由尾至首寻找)。
tar,gzip的使用方法如下:
压缩一组文件为tar.gz后缀: #tar cvf backup.tar /ect。 #gzip -q backup.tar或tar cvfz backup.tar.gz /etc。
释放一个后缀为tar.gz的文件:#gunzip backup.tar.gz。 #tar xvf backup.tar或 #tar xvfz backup.tar.gz。
用一个命令完成压缩:#tar cvf -/etc/ |gzip -qc > backup.tar.gz。
用一个命令完成释放:# gunzip -c backup.tar.gz | tar xvf -。
如何解开tar.Z的文件? #tar xvfz backup.tar.Z 或 #uncompress backup.tar.Z 。 #tar xvf backup.tar。
如何解开.tgz的文件?#gunzip backup.tgz。
如何压缩和解压缩.bz2的包?#bzip2 /etc/smb.conf,这将压缩文件smb.conf成smb.conf.bz2。#bunzip2 /etc/smb.conf.bz2这将在当前目录下还原smb.conf.bz2为smb.conf。
RPM是世界著名的Red Hat公司推出的一种软件包安装工具,全称为Redhat Package Manager。RPM的出现提供了一种全新的软件包安装方法,在方便性上甚至超过了微软的Windows。下面我就介绍一下RPM的基本使用方法。
安装一个包:# rpm -ivh < rpm package name>
升级一个包:# rpm -Uvh < rpm package name>
移走一个包:# rpm -e < rpm package name>
安装参数:–force 即使覆盖属于其它包的文件也强迫安装 。–nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
查询一个包是否被安装:# rpm -q < rpm package name>
得到被安装的包的信息:# rpm -qi < rpm package name>
列出该包中有哪些文件:# rpm -ql < rpm package name>
列出服务器上的一个文件属于哪一个RPM包:#rpm -qf 文件名称
可综合好几个参数一起用:# rpm -qil < rpm package name>
列出所有被安装的rpm package: # rpm -qa < rpm package name>
文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99
文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效
文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是
文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件
文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件
文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码
文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware
文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停
文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待
文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析
文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code
文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象