---
title: 'Tài liệu hướng dẫn sử dụng server'
disqus: hackmd
---
Hướng dẫn sử dụng server GPU
===
## Table of Contents
[TOC]
## 1. Chuẩn bị
### Step 1: Cài đặt MobaXterm
Truy cập vào link sau để tải MobaXterm (Bản installer):
https://mobaxterm.mobatek.net/download.html
### Step 2: Sử dụng MobaXterm để truy cập server
#### 2.1 Khi truy cập bằng mạng trường:
Khởi động MobaXterm, chọn Session như hình bên dưới:

Chọn SSH

Nhập địa chỉ ip của máy server và tên người dùng
IP của máy 166: 192.168.20.166

Sau khi nhập địa chỉ ip và tên người dùng thì màn hình hiện giao diện đăng nhập (Lưu ý: Mật khẩu sẽ không hiển thị)

#### 2.2 Khi truy cập với mạng ngoài trường
Vì trường sẽ chặn ip của các máy bên ngoài muốn truy cập server nên phải cài đặt OpenVPN để truy cập
Xem hướng dẫn tại đây: https://phongdl.uit.edu.vn/su-dung-openvpn
Lưu ý: Sử dụng tài khoản chứng thực của sinh viên được cấp.
Khi kết nối thành công OpenVPN thì có thể truy cập server như các bước trên
## 2. Sử dụng MobaXterm để thao tác
### 2.1 Một số lệnh cơ bản và thường dùng để thao tác
#### Giải thích một số thuật ngữ:
- Server là máy chủ chạy bằng hệ điều hành ubuntu (hoặc các hệ điều hành khác nhưng máy chủ mà chúng ta sử dụng là ubuntu). Tất cả các thao tác với dữ liệu trên ubuntu đều bằng dòng lệnh (command line).
- Vì thao tác bằng các dòng lệnh nên ubuntu sẽ không có giao diện. MobaXterm là 1 dạng công cụ hỗ trợ GUI cho ubuntu (có thể sử dụng VSCode để remote SSH nhưng không khuyến khích với những bạn mới tập sử dụng server).
#### Screen
- Screen là một terminal multiplexer, cho phép người dùng duy trì chương trình đang chạy kể cả khi ngắt kết nối với server.
- Một số thao tác với screen:
| Lệnh | Ý nghĩa |
|:---------------------------:|:---------------------------------------:|
| screen -S TenScreen | Khởi tạo cửa sổ screen với tên tùy chọn |
| screen -list | Liệt kê screen hiện có |
| screen -x TenScreen | Truy cập lại Screen |
| screen -S TenScreen -X quit | Dừng cửa sổ Screen |
#### Một số lệnh thường dùng:
- Thao tác với thư mục và file:
| Lệnh | Ý nghĩa |
|:----------------------:|:--------------------------------------------------------------------------:|
| mkdir folder/file | Tạo thư mục hoặc file mới |
| cp file /folder | Chép tập tin file vào thư mục folder |
| cp -r folder1 folder2 | Chép toàn bộ nội dung của thư mục folder1 vào folder2 |
| mv file folder | Chuyển tập tin file vào thư mục folder |
| rm file | Xóa bỏ tập tin file trong thư mục hiện hành |
| rm -rf folder | Xóa bỏ thư mục mang tên folder với tất cả các tập tin trong thư mục |
| find folder -name file | Tìm tập tin mang tên file trong thư mục folder kể cả trong các thư mục con |
| wget url | Tải 1 tập tin từ url của web browser |
- Liệt kê tập tin và thư mục:
| Lệnh | Ý nghĩa |
|:------------:|:--------------------------------------------------------:|
| pwd | Hiển lên tên thư mục đang làm việc hiện hành |
| cd | Di chuyển sang thư mục «/home/người_dùng» |
| cd .. | Di chuyển sang thư mục cha (ngay trên thư mục hiện hành) |
| cd folder | Di chuyển sang thư mục folder |
| ls -l folder | Liệt kê danh mục tập tin trong thư mục folder |
| df -h | Hiển thị không gian đĩa trống |
| ncdu folder | Hiển thị dung lượng của thư mục folder |
- Thiết lập quyền truy cập tập tin thư mục: Vì các tập tin sẽ có quyền ghi đọc và chỉnh sửa khác nhau, ví dụ bên dưới:
- Với ví dụ trên file environment.yml được cấp quyền read, write đối với owner (người sở hữu file), ... (Xem kỹ hơn về phân quyền ở đây: https://vncoder.vn/bai-viet/chmod-huong-dan-phan-quyen-file-va-thu-muc-tren-linux)
- Vì vậy, hệ thống sẽ báo lỗi nếu file hoặc folder đó chưa được cấp quyền để thực thi, dưới đây là vài câu lệnh thường dùng:
| Lệnh | Ý nghĩa |
|:-------------------:|:-----------------------------------------------------------------------:|
| chmod +x file | Giao quyền thực thi (x) tập tin file |
| chown username file | Xác định người chủ của tập tin file là người dùng mang tên « username » |
- Các lệnh quản lí hệ thống
| Lệnh | Ý nghĩa |
|:-------------------:|:-----------------------------------------------------------------------:|
| sudo command | Thực hiện lệnh command với quyền root |
| clear | Xoá nội dung màn hình của cửa sổ |
- Quản lí tiến trình:
| Lệnh | Ý nghĩa |
|:-----------:|:------------------------------------------------:|
| ps -ef | Hiển thị tất cả các tiến trình đã được thực hiện |
| ps aux | Hiển thị chi tiết các tiến trình |
| kill pid | Báo chấm dứt tiến trình mang số pid |
| kill -9 pid | Yêu cầu hệ thống chấm dứt tiến trình pid |
| htop | Hiển thị quá trình các tiến trình |
### 2.2 Cài đặt miniconda và set up môi trường để thực nghiệm
#### 2.2.1 Giới thiệu về miniconda3
- Anaconda là một bộ công cụ khoa học dữ liệu và phân tích dữ liệu mã nguồn mở, cung cấp một môi trường phát triển tích hợp cho các dự án dữ liệu. Được phát triển bởi Anaconda, Inc.
- Miniconda là một phiên bản nhỏ gọn của Anaconda. Miniconda là trình cài đặt tối thiểu miễn phí cho conda. Đây là một phiên bản bootstrap nhỏ của Anaconda chỉ bao gồm conda, Python, các gói mà cả hai đều phụ thuộc và một số ít gói hữu ích khác
- Vì tài nguyên của máy server là có hạn nên trong giới hạn của document này sẽ chỉ hướng dẫn cài đặt và sử dụng miniconda.
#### 2.2.2 Hướng dẫn cài đặt
- Tải file cài đặt miniconda bằng lệnh sau: (Lưu ý khi tải về lưu trữ ở thư mục nào cho thuận tiện cài đặt về)
```gherkin=
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
```
- Chạy lệnh cài đặt:
```gherkin=
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
```
- Kiểm tra xem miniconda3 đã được cài đặt thành công hay chưa, nếu thành công thì tất cả các gói cài đặt sẽ hiển thị:
```gherkin=
conda list
```
#### 2.2.3 Hướng dẫn tạo môi trường miniconda
- Môi trường Conda là một không gian làm việc ảo hoàn toàn độc lập. Có thể chứa các thư viện để các dự án Python hoặc machine learning chạy được
- Sau này khi các bạn nghiên cứu mỗi paper riêng sẽ có code riêng, vì vậy khuyến khích mỗi bạn nên tạo môi trường riêng cho mình để cài đặt các packages phù hợp theo hướng dẫn của bài báo đó
##### Quy trình cài đặt môi trường
- Đặt tên theo cú pháp: Ten_viet tat cua ho va chu lot
VD: Nguyen Xuan Quang -> Quangnx
```gherkin=
conda create -n Quangnx1
```

- Kích hoạt môi trường vừa tạo
```gherkin=
conda activate Quangnx1
```

- Trên đây là 1 môi trường hoàn toàn mới và chưa có package gì được cài đặt cả. Khi thực thi code Python yêu cầu thư viện nào thì cài đặt thư viện đó bằng câu lệnh sau:
```gherkin=
pip install TenThuVien
```
- Lưu ý: Để minh họa rõ hơn về việc cài đặt và chạy các package cụ thể của 1 github, tham khảo hướng dẫn sau: https://hackmd.io/@UIT-Together/install_mmdetection
### 2.3 Quản trị tài khoản người dùng và nhóm
#### 2.3.1 Quản lý người dùng
- Ubuntu có 3 loại người dùng:
- Super user: có quyền quản trị cao nhất hệ thống Linux. Tài khoản này là root, là tài khoản mặc định và có toàn quyền quản lý trên hệ thống.
- Service user: tài khoản này được sử dụng bởi các dịch vụ để chạy các quy trình và thực thi các chức năng. Không nhằm mục địch cũng như không nên được sử dụng cho công việc thường ngày.
- Regular user: thường được quyền đăng nhập hệ thống với một số quyền nhất định và không có quyền quản trị.
- Tập tin quản lý tài khoản
- /etc/passwd: Tập tin này lưu trữ toàn bộ thông tin về tài khoản người dùng. 
- Cột 1: tên tài khoản user, nếu là tài khoản được đăng nhập thì nó là tên đăng nhập hệ thống.
- Cột 2: mật khẩu của tài khoản user, có giá trị x (không xác định được), vì nó được lưu trong tập tin /etc/shadow và được mã hóa.
- Cột 3: số định danh tài khoản (user ID), mỗi user có một số định danh khác nhau, số 0 chỉ user root có quyền quản trị, số 1-99 chỉ các user hệ thống tương ứng với các dịch vụ, phần mềm được cài đặt, số >=500 là các user thông thường được quyền đăng nhập với một số quyền nhất định.
- /etc/shadow: Lưu trữ thông tin và mật khẩu người dùng, mật khẩu này đã được mã hóa.
- Cột 1: tên tài khoản user.
- Cột 2: mật khẩu của tài khoản user đã được mã hóa, dấu “*” nghĩa là tài khoản bị vô hiệu.
- Cột 3: số ngày tính từ 1/1/1970 đến lần thay đổi password sau cùng.
- Các lệnh quản lý tài khoản user:
- Chỉ có root mới sử dụng được những lệnh này: adduser, passwd, change, usermod, userdel.
| Lệnh | Ý nghĩa |
|:-----------------------------------------:|:----------------------------:|
| adduser TenUser | Thêm tài khoản người dùng |
| passwd –l TenUser hoặc usermod –l TenUser | Khóa tài khoản người dùng |
| passwd –u TenUser hoặc usermod –U TenUser | Mở khóa tài khoản người dùng |
| userdel –r TenUser | Xóa tài khoản người dùng |