Ubuntu 系统下如何添加具有sudo权限的用户

本文主要讲述如何在ubuntu  系统下创建具有sudo或者管理权限的新用户的方法。

Ubuntu下创建新用户的命令格式如下:

Sudo adduser  <用户名>  <组名>

如果要创建sudo 用户,需要将新创建的用户加入到sudo 组里,那么就会具有sudo用户的权限。

执行命令:

$ sudo adduser  newuser  sudo

新创建的用户在下次登录后会自动生效。

我们可以查看sudo 组的权限信息从/etc/sudoers配置文件, 如下:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

从上面的配置信息可以看到,只要属于sudo用户组,那么就可以执行任何的命令。

 

Ubuntu 系统下如何启用或禁用服务

本文主要讲述如何在ubuntu  系统命令行下启用或禁用相关的服务。

临时启用或者禁用ubuntu相关服务

执行下面的命令:

$ sudo service  service_name  stop|start|restart

以ubuntu下http 服务为例:

$ sudo service apache2 stop  (将会停止apache 服务直到下次重启服务)
$ sudo service apache2 start (启动apache服务)
$ sudo service apache2 restart  (重新启动apache服务,该命令主要是在更改某些配置文件或者跟apache服务相关的配置文件后执行)
$ sudo server apache2 (会显示该服务可以执行的所有操作)

SYSTEMD 启动或停止ubuntu相关服务

从ubuntu 15.04 系统开始,系统主要使用systemd 来管理所有的服务。

Systemctl  start service_name  - 启动ubuntu服务
Systemctl  stop  service_name   - 停止ubuntu服务
Systemctl restart service_name  - 重启ubuntu服务
Systemctl  reload service_name  - 如果相应的服务支持reload, 那么可以重新加载更改后的配置文件,而不需要终端任何正在运行的进程。
Systemctl  status service_name  - 显示服务的状态信息,来查看服务是否启动
Systemctl enable service  - 启用服务,在下一次重启系统后,依旧有效。
Systemctl disable service  - 停止服务, 在重启系统后,依旧有效
Systemctl is-enabled service  - 查看服务服务是否在下一次重启后启动
Systemctl  is-active SERVICE -  查看服务是否是Active状态
Systemctl  show SERVICE  - 显示所有关于该服务的信息

 

Ubuntu 系统命令行下安装.deb 文件

本文主要讲述如何在ubuntu 16.4 系统命令行下安装.deb 软件包。Deb格式的软件包主要是在ubuntu系统下软件包格式。

安装deb软件包

执行下面的命令:

$ sudo dpkg -I deb软件包

如果单独安装deb软件包,在安装的时候可能会遇到软件包依赖的问题,那么需要使用apt-get install  -f 命令来下载所需要的deb软件包并安装。

删除已安装的deb软件包

执行下面的命令:

$ sudo dpkg -r  软件包名

重新配置已经安装的软件包

执行命令:

$ sudo dpkg-reconfigure  软件包名

列出所有已安装的软件包

$ sudo dpkg -l | less

查看软件包是否安装

$ dpkg –l  软件包名

从指定位置安装deb软件包

$ sudo dpkg -R --install  软件包位置
$ sudo dpkg -R --install /root/test.deb

显示deb软件包的内容

$ sudo dpkg -p  软件包名
$ sudo dpkg -p firefox

查看deb软件包的信息

$ sudo dpkg -I  软件包名
$ sudo dpkg  - I  test.deb

解压缩并显示deb软件包里的内容

$ sudo dpkg -X {软件包名} {目的位置}
$ sudo dpkg -X test.deb /home/

更多关于dpkg的用法,可以使用man dpkg 命令查看。

$ man dpkg

 


99%的人还阅读了:

Ubuntu 系统下如何删除已经添加的PPAs

本文主要讲述如何在ubuntu 16.4 系统下删除使用add-apt-repository 命令添加的PPAs.

使用add-apt-repository  命令的—remove 选项来删除PPAs

执行下面的命令:

$ sudo add-apt-repository –remove ppa:repo_name/subdirectory

删除PPAs以及PPA安装或更新过的软件包

1#首先安装ppa-purge 软件包

执行下面的命令:

$ sudo apt-get install ppa-purge

命令输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
建议安装:
aptitude
下列【新】软件包将被安装:
ppa-purge
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 99 个软件包未被升级。
需要下载 6,312 B 的归档。
解压缩后会消耗 24.6 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 ppa-purge all 0.2.8+bzr63 [6,312 B]
已下载 6,312 B,耗时 0秒 (70.1 kB/s)
正在选中未选择的软件包 ppa-purge。
(正在读取数据库 ... 系统当前共安装有 180004 个文件和目录。)
正准备解包 .../ppa-purge_0.2.8+bzr63_all.deb  ...
正在解包 ppa-purge (0.2.8+bzr63) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 ppa-purge (0.2.8+bzr63) ...

2# 删除PPA仓库以及已经安装的软件包

执行下面的命令:

$ sudo ppa-purge ppa:webapps/preview

 

Ubuntu 系统下如何从命令行下解压缩一个zip文件

本文主要讲述如何在ubuntu 16.4 系统下解压缩出一个zip压缩文件。 当你下载了一个zip格式的压缩文件后,如何在命令行下解压缩这个zip文件呢?

1#安装unzip软件包

执行下面的命令:

$ sudo apt-get intall unzip

命令输出如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
unzip
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 99 个软件包未被升级。
需要下载 158 kB 的归档。
解压缩后会消耗 530 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 unzip amd64 6.0-20ubuntu1 [158 kB]
已下载 158 kB,耗时 0秒 (759 kB/s)
正在选中未选择的软件包 unzip。
(正在读取数据库 ... 系统当前共安装有 179922 个文件和目录。)
正准备解包 .../unzip_6.0-20ubuntu1_amd64.deb  ...
正在解包 unzip (6.0-20ubuntu1) ...
正在处理用于 mime-support (3.59ubuntu1) 的触发器 ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 unzip (6.0-20ubuntu1) ...

2#Unzip工具解压缩zip文件

使用刚才安装的unzip工具,来解压缩zip文件。 比如要解压缩一个zip文件到特定的目的目录,执行下面的命令:

$ unzip test.zip  -d  目的目录

 

7z 工具解压缩zip文件

1# 首先安装7z工具,执行下面的命令:

$ sudo apt-get install p7zip-full

命令输出:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
建议安装:
p7zip-rar
下列【新】软件包将被安装:
p7zip-full
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 99 个软件包未被升级。
需要下载 919 kB 的归档。
解压缩后会消耗 3,959 kB 的额外空间。
获取:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 p7zip-full amd64 9.20.1~dfsg.1-4.2 [919 kB]
已下载 919 kB,耗时 1秒 (867 kB/s)
正在选中未选择的软件包 p7zip-full。
(正在读取数据库 ... 系统当前共安装有 179940 个文件和目录。)
正准备解包 .../p7zip-full_9.20.1~dfsg.1-4.2_amd64.deb  ...
正在解包 p7zip-full (9.20.1~dfsg.1-4.2) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 p7zip-full (9.20.1~dfsg.1-4.2) ...

2# 解压缩zip文件

$ sudo 7z x test.zip

3# 7z命令查看zip文件里的内容

$ sudo 7z l  test.zip

 

Ubuntu 系统下如何列出所有已安装的软件包

本文将会讲述如何在Ubuntu系统下列出所有已经安装的软件包,并将其保存在特定的文件里。

对于ubuntu 14.04/ ubuntu 16.04 或者以上版本

我们可以使用apt 工具来查看已经安装的软件包,输入下面的命令:

$ apt list --installed

对于老版本的ubuntu系统

执行下面的命令,来获取已安装软件包的列表:

$ dpkg --get-selections | grep -v deinstall

命令输出如下:

accountsservice                                 install
acl                                             install
acpid                                           install
adduser                                         install
ansible                                         install
......

查看特定软件包是否安装

执行下面的命令:

$ dpkg --get-selections | grep wget

命令输出如下:

wget                                            install

将查找到的所有已安装软件包列表保存到当前目录的pkg文件里

执行下面的命令:

$dpkg --get-selections |grep -v deinstall > ./pkg

我们也可以使用dpkg -l 命令来列出所有已安装的软件包,以及软件包的详细信息,包括版本号, 体系结构,以及软件包的简要描述。

执行命令:

$ dpkg -l

命令输出如下:

期望状态=未知(u)/安装(i)/删除(r)/清除(p)/保持(h)

| 状态=未安装(n)/已安装(i)/仅存配置(c)/仅解压缩(U)/配置失败(F)/不完全安装(H)/触发器等待(W)/触发器未决(T)

|/ 错误?=(无)/须重装(R) (状态,错误:大写=故障)

||/ 名称                             版本                  体系结构:            描述

+++-================================-=====================-=====================-======================================================================

ii  accountsservice                  0.6.40-2ubuntu11.3    amd64                 query and manipulate user account information

ii  acl                              2.2.52-3              amd64                 Access control list utilities

ii  acpid                            1:2.0.26-1ubuntu2     amd64                 Advanced Configuration and Power Interface event daemon

ii  adduser                          3.113+nmu3ubuntu4     all                   add and remove users and groups

 

 

Linux系统下find命令递归删除查找目录的方法

本文将会讲述如何使用linux系统下的find查找命令来查找目录或文件,并将查找到的所有文件和目录递归删除掉。

Linux find 命令递归删除非空目录

通常情况下我们会想到find命令里的删除操作是使用-delete选项,但是使用该选项只能删除空目录的文件,不能递归删除该目录里的其它文件。如下面的例子:

$ ls dir1
test1

$ find ./ -name "dir1" -type d -delete
find: cannot delete `./dir1': Directory not empty

可以使用下面的Linux find 命令删除非空目录,如:

$ find ./ -name “dir1” -type d -exec rm -rf {} +

或者

$ find ./ -name “dir1” -type d -exec rm -rf  \;

Linux find 命令结合xargs命令实现删除非空目录

删除当前目录下的所有空目录

$ find ./ -type d -empty -print0 |xargs -0 -i {} rm -rf  “{}”

删除当前目录下所有以“dir”开头的目录

$ find ./ -type d -name “dir*” -print0 |xargs -0 -I {} rm -rf “{}”

 

Linux系统下通过bash shell脚本实现倒计时的方法

本文主要讲述如何在linux系统下通过bash shell 脚本来实现在屏幕上输出倒计时的方法。

先来看看实现后的脚本,如下:

#!/bin/bash
 # script name: ctimer.sh
 # Author: osetc.com
 # --------------------------------------------------------

row=2
 col=2
 countdown() {
 msg="starting..."
 clear
 tput cup $row $col
 echo -n "$msg"
 l=${#msg}
 l=$(( l+$col ))
 for i in {30..1}
 do
     tput cup $row $l
     echo -n "$i"
     sleep 1
 done
 }
 countdown

首先我们定义了一个名为countdown的shell 函数,在函数里定义了一个msg变量用于在屏幕上显示倒计时信息,clear 命令用于清除屏幕上的历史输出信息,tput cut 命令用于设置屏幕输出信息的位置,最后通过for循环来实现倒计时,并更新输出信息的位置。

执行上面的脚本

$bash ctimer.sh
 Starting...30

 

Linux系统下批量升级LXD容器里的虚拟机的方法

本文将会讲述如何在linux 系统下自动升级LXD容器里的所有的虚拟机。

下面我们通过两种方法实现自动升级所有虚拟机:

方法一:使用shell 脚本来升级

手动的升级命令是:

/usr/bin/lxc exec 虚拟机名 -- /usr/bin/apt-get -y upgrade (ubuntu系统)
/usr/bin/lxcexec 虚拟机名  -- /usr/bin/yum -y update    (centos 系统)

下面来创建bash shell 脚本来自动升级所有的虚拟机:

#!/bin/bash

#脚本名:vmUpgrade.sh

#--------------------------------

cmd="$@"for i in 虚机1 虚机2 虚机3 虚机4

do

echo "[*** $i ***]"

/usr/bin/lxc exec $i -- $cmd

done

下面就可以调用脚本来升级vm了,执行下面的命令:

Ubuntu 系统:

$ ./vmUpgrade.sh /usr/bin/apt-get update

$ ./vmUpgrade.sh /usr/bin/apt-get -y upgrade

Centos 系统:

$ ./vmUpgrade.sh /usr/bin/yum -y update

方法二:使用Ansible 自动化工具

1# 安装ansible 工具

执行命令:

$ sudo apt-get install ansible

命令输出:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
gyp javascript-common libjs-inherits libjs-jquery libjs-node-uuid libjs-underscore libnvpair1linux libssl-dev libssl-doc libuutil1linux libuv1-dev
libzfs2linux libzpool2linux zfs-doc zlib1g-dev
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
ieee-data libyaml-0-2 python-crypto python-ecdsa python-httplib2 python-jinja2 python-markupsafe python-netaddr python-paramiko python-selinux
python-six python-yaml
建议安装:
sshpass python-crypto-dbg python-crypto-doc python-jinja2-doc ipython python-netaddr-docs
下列【新】软件包将被安装:
ansible ieee-data libyaml-0-2 python-crypto python-ecdsa python-httplib2 python-jinja2 python-markupsafe python-netaddr python-paramiko python-selinux
python-six python-yaml
升级了 0 个软件包,新安装了 13 个软件包,要卸载 0 个软件包,有 5 个软件包未被升级。
需要下载 2,903 kB 的归档。
解压缩后会消耗 17.6 MB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libyaml-0-2 amd64 0.1.6-3 [47.6 kB]
获取:2 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 python-crypto amd64 2.6.1-6ubuntu0.16.04.2 [246 kB]
获取:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-markupsafe amd64 0.23-2build2 [15.5 kB]
获取:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-jinja2 all 2.8-1 [109 kB]
获取:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-six all 1.10.0-3 [10.9 kB]
获取:6 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-ecdsa all 0.13-2 [34.0 kB]
获取:7 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-paramiko all 1.16.0-1 [109 kB]
获取:8 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-yaml amd64 3.11-3build1 [105 kB]
获取:9 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-httplib2 all 0.9.1+dfsg-1 [34.2 kB]
获取:10 http://archive.ubuntu.com/ubuntu xenial/main amd64 ieee-data all 20150531.1 [830 kB]
获取:11 http://archive.ubuntu.com/ubuntu xenial/main amd64 python-netaddr all 0.7.18-1 [174 kB]
获取:12 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 ansible all 2.0.0.2-2ubuntu1 [1,016 kB]
获取:13 http://archive.ubuntu.com/ubuntu xenial/universe amd64 python-selinux amd64 2.4-3build2 [173 kB]
已下载 2,903 kB,耗时 10秒 (287 kB/s)
正在选中未选择的软件包 libyaml-0-2:amd64。
(正在读取数据库 ... 系统当前共安装有 69061 个文件和目录。)
正准备解包 .../libyaml-0-2_0.1.6-3_amd64.deb  ...
正在解包 libyaml-0-2:amd64 (0.1.6-3) ...
正在选中未选择的软件包 python-crypto。
正准备解包 .../python-crypto_2.6.1-6ubuntu0.16.04.2_amd64.deb  ...
正在解包 python-crypto (2.6.1-6ubuntu0.16.04.2) ...
正在选中未选择的软件包 python-markupsafe。
正准备解包 .../python-markupsafe_0.23-2build2_amd64.deb  ...
正在解包 python-markupsafe (0.23-2build2) ...
正在选中未选择的软件包 python-jinja2。
正准备解包 .../python-jinja2_2.8-1_all.deb  ...
正在解包 python-jinja2 (2.8-1) ...
正在选中未选择的软件包 python-six。
正准备解包 .../python-six_1.10.0-3_all.deb  ...
正在解包 python-six (1.10.0-3) ...
正在选中未选择的软件包 python-ecdsa。
正准备解包 .../python-ecdsa_0.13-2_all.deb  ...
正在解包 python-ecdsa (0.13-2) ...
正在选中未选择的软件包 python-paramiko。
正准备解包 .../python-paramiko_1.16.0-1_all.deb  ...
正在解包 python-paramiko (1.16.0-1) ...
正在选中未选择的软件包 python-yaml。
正准备解包 .../python-yaml_3.11-3build1_amd64.deb  ...
正在解包 python-yaml (3.11-3build1) ...
正在选中未选择的软件包 python-httplib2。
正准备解包 .../python-httplib2_0.9.1+dfsg-1_all.deb  ...
正在解包 python-httplib2 (0.9.1+dfsg-1) ...
正在选中未选择的软件包 ieee-data。
正准备解包 .../ieee-data_20150531.1_all.deb  ...
正在解包 ieee-data (20150531.1) ...
正在选中未选择的软件包 python-netaddr。
正准备解包 .../python-netaddr_0.7.18-1_all.deb  ...
正在解包 python-netaddr (0.7.18-1) ...
正在选中未选择的软件包 ansible。
正准备解包 .../ansible_2.0.0.2-2ubuntu1_all.deb  ...
正在解包 ansible (2.0.0.2-2ubuntu1) ...
正在选中未选择的软件包 python-selinux。
正准备解包 .../python-selinux_2.4-3build2_amd64.deb  ...
正在解包 python-selinux (2.4-3build2) ...
正在处理用于 man-db (2.7.5-1) 的触发器 ...
正在设置 libyaml-0-2:amd64 (0.1.6-3) ...
正在设置 python-crypto (2.6.1-6ubuntu0.16.04.2) ...
正在设置 python-markupsafe (0.23-2build2) ...
正在设置 python-jinja2 (2.8-1) ...
正在设置 python-six (1.10.0-3) ...
正在设置 python-ecdsa (0.13-2) ...
正在设置 python-paramiko (1.16.0-1) ...
正在设置 python-yaml (3.11-3build1) ...
正在设置 python-httplib2 (0.9.1+dfsg-1) ...
正在设置 ieee-data (20150531.1) ...
正在设置 python-netaddr (0.7.18-1) ...
正在设置 ansible (2.0.0.2-2ubuntu1) ...
正在设置 python-selinux (2.4-3build2) ...
正在处理用于 libc-bin (2.23-0ubuntu9) 的触发器 ...

2# 创建一个yml个格式的ansible playbook 文件(update.yml),加入下面的内容

# Update host running on Debian/Ubuntu
- name: Updating host using apt
apt:
update_cache: yes
upgrade: dist
#
# Now update VMs powered by Debian/Ubuntu Linux
#
- name: Run lxc to update debian/ubuntu vms repo
command: /usr/bin/lxc exec {{ item }} -- /usr/bin/apt-get -y update
with_items:
- ubuntuvm1
- debianvm2
- ubuntuvm3

- name: Run lxc to upgrade debian/ubuntu vms pacakges
command: /usr/bin/lxc exec {{ item }} -- /usr/bin/apt-get -y upgrade
with_items:
- ubuntuvm1
- debianvm2
- ubuntuvm3

#
# Now update VMs powered by CentOS 7 Linux
#
- name: Run lxc to upgrade centos vms
command: /usr/bin/lxc exec {{ item }} -- /usr/bin/yum -y update
with_items:
- centosvm4
- centosvm5
- centosvm6

3# 执行下面的ansible-playbook命令,执行升级操作

$ ansible-playbook -i /etc/ansible/hosts update.yml

 

Linux系统下删除包含特定字符或数字的方法

本文将会讲述如何在linux 系统下通过删除rm命令来删除包含特定字符或数字的方法。本文主要针对linux初学者。

在linux下面删除文件或目录的命令是rm, 如果想删除特定模式的文件或者目录,那么就需要使用linux命令中特有的通配符。

比如下面的几个通配符模式:

* : 可以匹配任意字符串

*b*: 可以匹配包含字符”b”的任意字符串

*2*: 可以匹配包含数字”2”的任意字符串

*.[ab]: 可以匹配任意以字母a 或b 结尾的字符串

*[cd]*:可以匹配包含字母‘c’或 ‘d’的任意字符串

: 可以匹配任意一个单一字符

实例:

显示出当前目录下所有的以包含test 的文件

$ ls *test*
test2  test30  test5

显示以数字1结尾的文件

$ ls *1
text1

显示所有以“test”开头的文件

$ ls test*
test2  test30  test5

删除所有以“test”开头的文件

$ rm -v test*
removed 'test2'
removed 'test30'
removed 'test5'