Print Spooler Error code 3. The system cannot find the path specified

Xử lý lỗi:

Print Spooler Error code 3. The system cannot find the path specified

Không thể start service print spooler, báo lỗi như trên, mở properties của service thì thấy execute path không có gì. Có thể xử lý như sau:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Spooler registry key and right-click Spooler > New > Expandable String Value > then name the value ImagePath then double-click ImagePath and type (or copy and paste) the following under "Value data":

%SystemRoot%\System32\spoolsv.exe

Then press "OK"

Close regedit and see if you can start the Print Spooler service.

Returning Blanks with VLOOKUP

When you use VLOOKUP to return a value from a data table, the function does not differentiate between blanks and zero values in what it returns. If the source value is zero, then VLOOKUP returns 0. Likewise, if the source is blank, then VLOOKUP still returns the value 0. For some purposes, this may not do—you need to know whether the cell being looked up is blank or if it really contains a 0.

There are many different solutions that could be pursued. One solution relies on the fact that even though VLOOKUP returns a 0, it will correctly report the length of the source cell. Thus, if you use the LEN function on what is returned, if the source cell is empty the LEN function returns 0, but if the source contains a 0 then LEN returns 1 (the 0 value is 1 character in length). This means that you could use the following formula in place of a standard VLOOKUP:

=IF(LEN(VLOOKUP(B1,D:E,2,0))=0,””,VLOOKUP(B1,D:E,2,0))

In this case if the length of what VLOOKUP returns is 0, then Excel doesn’t actually do a lookup—it forces a blank to be returned. Only if the length is not 0 is the actual VLOOKUP performed.

There are other variations on this same concept, each testing a different characteristic of the data being referenced and then making the decision as to whether to actually look up that data. This variation, for example, directly tests to see if the source is blank:

=IF(VLOOKUP(B1,D:E,2)=””,””,VLOOKUP(B1,D:E,2))

The formula can also be modified to check the source cell for multiple conditions. For instance, this variation returns a blank if the source is blank or if the source contains an #N/A error:

=IF(ISNA(VLOOKUP(B1,D:E,2,0))+(VLOOKUP(B1,D:E,2,0)=””)

,””,VLOOKUP(B1,D:E,2,0))

Sử dụng docker – Ghi đè entrypoint mặc định của container với docker run

Entrypoint là những command mặc định, được chạy lần đầu khi khởi tạo container từ image. Entrypoint được định nghĩa ban đầu trong dockerfile. Tuy nhiên, đôi khi người quản trị muốn chạy cái gì đó khác bên trong container, vì vậy, có thể ghi đè ENTRYPOINT mặc định mỗi lần start container bởi tham số –entrypoint
Ví dụ,chạy ls khi start container
docker run --entrypoint "/bin/ls" 0cbf37812bff
Xoá toàn bộ container mặc định:
docker run -it –entrypoint=”” 0cbf37812bff
Tham số –entrypoint sẽ xoá toàn bộ entrypoint hiện có, và thêm entrypoint mới. Như ở lệnh trên, entrypoint mới rỗng nên những cái hiện có sẽ bị remove toàn bộ.

Tuy nhiên, nếu command có tham số (args) thì cú pháp sử dụng sẽ khác. Dưới đây là cách sử dụng sai:
[root@localhost ~]# docker run --entrypoint "/bin/ls -al /root" 0cbf37812bff

container_linux.go:247: starting container process caused "exec: \"/bin/ls -al /root\": stat /bin/ls -al /root: no such file or directory"
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"/bin/ls -al /root\": stat /bin/ls -al /root: no such file or directory".

Để sử dụng tham số cho entrypoint, thêm tham số đằng sau image_id/ image_name
Ví dụ, chạy lệnh ls với thư mục /var
[root@localhost ~]# docker run --entrypoint "/bin/ls" 0cbf37812bff /var
cache
db
empty
games
lib
local
lock
log
mail
nis
opt
preserve
run
spool
tmp
yp
[root@localhost ~]#

Xử lý lỗi docker – WARNING: IPv4 forwarding is disabled. Networking will not work.


Tạo container docker thì được thông báo:

WARNING: IPv4 forwarding is disabled. Networking will not work.

Nguyên nhân do hệ điều hành host đangtawts IP forwarding, để bật lên, thêm/sửa dòng sau trong /etc/sysctl.conf
net.ipv4.ip_forward=1

Sau đó restart network, hoặc chạy lệnh
sysctl -p

Sử dụng docker – Tạo một container


Để có contaner, trước hết cần có image, tương tự như cài windows thì phải có đĩa vậy. Image của docker có thể được lấy tự động từ docker hub (mặc định) hoặc từ docker registry nội bộ của doanh nghiệp. Để lấy docker image về, sử dụng cú pháp:
docker pull
Ví dụ: Muốn lấy image của centos 6 về máy:
docker pull centos:6
List các image trên máy:
docker images
Output:
[root@localhost data]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 6 0cbf37812bff 3 months ago 194 MB
docker.io/centos/systemd latest 78c36a71df7e 6 months ago 200 MB

Cú pháp:
docker run

Ví dụ: tạo container từ image centos 6 ở trên
docker run -it 0cbf37812bff
Nếu thành công sẽ truy cập vào màn hình bên trong container, tiếp theo có thể tiến hành cài app như 1 máy bình thường. Để quay lại màn hình máy bên ngoài (màn hình máy host), bấm Ctrl P và Ctrl Q
Các tham số option khi tạo container sẽ được giới thiệu ở bài sau.

Sử dụng docker – Các khái niệm cơ bản

Khái niệm

Docker – là một công cụ tạo môi trường được đóng gói (Container) mà không làm tác động tới môi trường hiện tại của máy, môi trường trong Docker sẽ chạy độc lập, được gọi là container. Mỗi containers chứa ứng dụng gồm chứa các thư viện riêng, nhưng kernel được chia sẻ với các containers khác. Mỗi kernel được chạy trong các môi trường độc lập với nhau. Docker chạy được trên mọi máy tính, đám mây hay bất cứ nền tảng nào. Vì vậy bạn có thể đẩy ứng dụng đến bất cứ đâu mà không cần phải quan tâm đến môi trường đích như thế nào …

Image

Image chỉ đơn giản là một file thông thường, trong file này có chứa sẵn các chương trình cần thiết để khởi tạo một môi trường nào đó. Ví dụ Image apache thì trong đó đã có sẵn apache kèm theo một số chương trình tiện ích để thao tác với apache. Image php đã chứa sẵn php kèm theo một số chương trình tiện ích… Chiếu theo các đặc điểm này, chúng ta có thể coi Image là một cái khuôn. Và khuôn này được dùng để “đúc” ra các Container. Nói cách khác, Image được sử dụng để khởi tạo ra một hay nhiều Container. Sau đó, các Container này được cấu hình như thế nào cũng không làm ảnh hưởng tới Image ban đầu.
Nếu so sánh với ảo hoả, thì một image có thể tương đương với một file ISO, container tương đương với VM

Container

Có rất nhiều process được thực thi trong một HĐH, các process này đều dùng chung một nguồn tài nguyên từ OS và các process này đều có thể truy cập được vào dữ liệu của các process khác. Trong trường hợp chúng ta muốn chạy một hay nhiều process trên một môi trường tách biệt hoàn toàn với HĐH, chúng ta cần phải khởi tạo một loại môi trường gọi là sandbox environment. Sandbox environment chỉ đơn giản là khái niệm chỉ một loại môi trường quản lý các process hoàn toàn tách biệt với môi trường máy Host. Sandbox cho phép chúng ta giới hạn quyền truy cập và tài nguyên sử dụng của các process.
Container chính là một ví dụ cụ thể của sandbox environment. Về cơ bản Container gom các tiến trình bên trong nó và thực thi tách biệt với các process của Host OS. Docker sử dụng cơ chế namespaces và control groups để tạo ra cơ chế quản lý Container.

Registry

Registry là một thư viện lưu trữ các Images được build sẵn từ các nhà phát triển. Docker cung cấp cho chúng ta một Registry có địa chỉ tại https://hub.docker.com.

Sử dụng docker – Xóa mù


Thuở xưa, thời còn mông muội, cả thế giới chỉ biết cài OS lên, nhét app vào rồi bấm chạy.
Khi phần cứng máy chủ trở nên rẻ tiền hơn, đồng thời, có những nhu cầu oái ăm phát sinh trong doanh nghiệp: một số app cần chạy độc lập –> mua máy khác cho nó chạy –> tăng số lượng phần cứng cần quản lý, lãng phí tài nguyên máy chủ do cái app đó dùng có tí tẹo tài nguyên mà không share cho con nào khác được. Và thế là Ảo hoá ra đời.
Như 1 sự cứu tinh, cho phép băm một máy chủ vật lý thành hàng chục OS độc lập chạy song song đồng thời , tương đương với 1 máy chủ vật lý được chia làm rất nhiều máy chủ con có cấu hình vừa đủ khác nhau cho từng nhu cầu. Việc này tận dụng tối đa khả năng sử dụng tài nguyên của doanh nghiệp, tiết kiệm tiền mua máy chủ cho hằng ha sa số công ty đang thắt lưng buộc bụng tìm kiếm lợi nhuận.
Tuy nhiên, không có gì hoàn hảo. Đối với doanh nghiệp to hơn 1 chút, họ cần tối ưu tài nguyên hơn nữa, chu trình phát triển phần mềm của họ muốn tối ưu tự động 1 cách tốt hơn nữa. Họ không muốn quan tâm tới đống máy chủ ảo lổn nhổn kia, chỉ muốn tập trung vào phát triển ứng dụng, triển khai nhanh chóng để đưa vào kinh doanh. Họ nhận ra rằng, nếu họ có 1000 máy chủ ảo giống nhau, thì họ tốn chi phí cho 1000 cái OS đang chạy, quá lãng phí. Và thế là lại có container ra đời.
Container giúp 1000 thằng ở trên dùng chung kernel của thằng OS trên máy vật lý, nhưng vẫn đảm bảo độc lập về mặt môi trường cho app chạy. Tức là, container chỉ là một cái hộp, bọc lấy cái app rồi đặt nó vào OS mà cái app đó cần. Mỗi app 1 hộp, trong hộp cài cắm những gì nó cần, và nó sẽ chỉ hoạt động trong cái hộp dành cho nó mà thôi. Những gì liên quan tới OS, phần cứng, tài nguyên, giờ đây sẽ có người khác lo cho nó. Kéo theo đó, container hiển nhiên nhẹ hơn rất nhiều so với máy ảo cồng kềnh, triển khai cũng nhanh hơn. Từ đây, mỗi 1 môi trường (OS) được gắn liền vào 1 app, quản lý thống nhất, dễ dàng và rẻ tiền hơn.

Docker là một platform để sử dụng container như thế.
– Cài đặt docker: Bấm vào đây
– Các khái niệm cơ bản về docker.
– Tạo một container centos:6.9 và cài đặt app.
– Lưu container để deploy tới nơi khác, hoặc backup.
– Image, docker file.
– Chu trình vòng đời của 1 container.
– Networking trong docker.

Rsync : Công cụ đồng bộ, copy dữ liệu tuyệt vời cho linux

Rsync (Remote Sync) là một công cụ mạng để sao lưu vào đồng bộ dữ liệu trên linux. Rsync có khả năng đồng bộ file giữa:
– 2 thư mục trong 1 máy chủ local
– 2 thư mục giữa máy chủ local và máy chủ remote
So sánh với scp truyền thống, rsync có những ưu điểm nổi trội:
– Hỗ trợ sao chép link, permission, .v.
– Nhanh hơn, do sử dụng cơ chế nén khi copy
– Có những tính năng như giới hạn băng thông truyền tải, bảo tồn được mốc thời gian, permission nguyên vẹn khi chuyển đi.
Syntax cơ bản:
rsync options source destination
Trong đó:
-v : verbose
-r : sao chép dữ liệu theo cách đệ quy ( không bảo tồn mốc thời gian và permission trong quá trình truyền dữ liệu)
-a :chế độ lưu trữ cho phép sao chép các tệp đệ quy và giữ các liên kết, quyền sở hữu, nhóm và mốc thời gian
-z : nén dữ liệu
-h : định dạng số

Cài đặt:
#Đối với họ redhat
yum install rsync
#Đối với họ debian
apt-get install rsync

Sao lưu, đồng bộ file trên local:
[root@devopsvn.xyz]# rsync -zvh backup.tar /tmp/backups/
created directory /tmp/backups
backup.tar
sent 12.31M bytes received 51 bytes 9.27M bytes/sec
total size is 21.49M speedup is 2.10

Nếu thư mục đích chưa tồn tại, thì rsync sẽ tự tạo folder
Ví dụ về đồng bộ folder 1 và folder 2
[root@devopsvn.xyz]# rsync -avzh /folder1 /folder2/

Đồng bộ dữ liệu giữa local và remote server, hoặc ngược lại:
Ví dụ 1: sao chép folder /tmp/vidu lên thư mục /opt của server 1.2.3.4
[root@devopsvn.xyz]$ rsync -avz /tmp/vidu/ root@1.2.3.4:/opt/
Ví dụ 2: Sao chép /opt/sex/ trên 1.2.3.4 về /opt/sex_backup của local
[root@devopsvn.xyz]# rsync -avzh root@1.2.3.4:/opt/sex/ /opt/sex_backup/

Các tham số khác khi sử dụng rsync:
--progress Hiển thị dung lượng và thời gian còn lại trong quá trình truyền.
--delete nếu file/folder có tồn tại ở thư mục đích nhưng không có ở thư mục nguồn thì xoá ở thư mục đích.
--max-size='200k' Giới hạn chỉ truyền file dung lượng tối đa là 200k (thích 200k thành gì thì sửa)
--remove-source-files Truyền xong thì xoá thư mục/file cũ
--bwlimit=100 Giới hạn băng thông truyền tải.

Cấu hình firewalld và ipset (tạo country blacklist cho firewalld)

Case: bọn trung quốc scan nhiều quá, nên mong muốn block hết IP từ trung quốc lại. Với các hệ thống chuyên nghiệp, FW đời mới hiện nay có thể làm một cách dễ dàng với tính năng GeoIP. Vậy còn các webmaster cá nhân, đơn vị nhỏ chỉ với 1 server public ra ngoài? Họ có thể lựa chọn các giải pháp của cloudflare, akamai, .v. Hoặc cây nhà lá vườn hơn là tận dụng firewalld của centos 7 để làm việc này. Dưới dây là hướng dẫn cách thực hiện:

Bước 1: tạo blacklist cho firewalld
firewall-cmd --permanent --new-ipset=blacklist --type=hash:net --option=family=inet --option=hashsize=4096 --option=maxelem=200000


–permanent : lưu cấu hình vĩnh viễn vào firewalld, nếu không có, sau khi khởi động lại firewall thì lệnh này sẽ mất hiệu lực
–new-ipset : tên của danh sách IP, ở đây chúng ta đặt là blacklist cho dễ quản lý, k thích có thể dùng tên khác như là danhsachden chẳng hạn
–type : kiểu lưu trữ, net dành cho subnet, nếu là 1 IP đơn lẻ thì dùng ip (–type=hash:ip)
–option=family : IPv4 or IPv6 network, inet is for IPv4
–option=hashsize : the initial hash size of the list
–option=maxelem : Số lượng phần tử tối đa của list, ở đây để 200k

Bước 2: tiếp theo chúng ta cần danh sách cái subnet tương ứng với đám IP cần block, ở đây là danh sách các subnet tương ứng với vùng Trung Quốc (CN)_
May thay, trên mạng có sẵn rồi, ở trang ipdeny có đủ toàn bộ thông tin này cho chúng ta. Download về mà xài thôi
wget http://www.ipdeny.com/ipblocks/data/countries/all-zones.tar.gz
tar -vxzf all-zones.tar.gz

cd vào thư mục vừa giải nén, sẽ thấy cả loạt các file text .zone tương ứng với từng quốc gia. Add file của Trung Quốc vào list đã tạo ở trên:
firewall-cmd --permanent --ipset=blacklist --add-entries-from-file=./cn.zone
Chỗ đường dẫn file cn.zone nhớ sửa cho đúng, mình đang đứng trong folder chứa nó nên chỉ là ./ thôi

Bước 3: Chuyển cái list đã add IP ở 2 bước trên sang vùng drop của firewalld
firewall-cmd --permanent --zone=drop --add-source=ipset:blacklist
firewall-cmd --reload

Như vậy, IP source tương ứng với ipset:blacklist sẽ bị firwalld drop 1 cách tự động.
Muốn thêm vùng cần chặn vào thì chỉ cần cho các subnet vào file text theo format của đám .zone đã download ở trên. sau đó
firewall-cmd --permanent --ipset=blacklist --add-entries-from-file=đường dẫn file
Muốn remove 1 số ông khỏi cái list đen đó, thì cũng chỉ add hết subnet cần remove vào 1 file text, ví dụ /tmp/remove_ip.txt
Sau đó chạy:
firewall-cmd --permanent --ipset=test --remove-entries-from-file=/tmp/remove_ip.txt
firewall-cmd --reload

—–

Trick:
Đôi khi cần chặn gấp 1 subnet nào đó. Ngoài cách dùng file như trên, có thể sử dụng script:
firewall-cmd --permanent --ipset=blacklist --add-entry=$1
firewall-cmd --ipset=blacklist --add-entry=$1
firewall-cmd --reload

Lưu lại dưới tên /bin/ban (nhớ chmod +x cho nó nhé)
Mỗi lần cần chặn ai đó, ví dụ chặn khẩn cấp thằng 10.0.5.0/24
Chỉ cần gõ lệnh:
ban 10.0.5.0/24
Nhanh và gọn
Chúc các bạn thành công! (k thành công cũng thành nhân)

Sửa lại chuột logitech bị mất đầu thu

Chuột logitech bị mất đầu thu, có thể fix bằng 2 cách:
– Mua 1 đầu thu unify mới và kết nối lại với chuột bằng phần mềm UNIFYING SOFTWARE
Link download từ logitech
https://support.logitech.com/en_us/software/unifying
Hoặc
https://app.box.com/s/wfkgrgtuozzefrl86s3izzpdccp0vfb1
Phần lớn chuột của logitech đều hỗ trợ unify, tuy nhiên đầu thu loại này đắt, có khi hơn cả tiền chuột mới.
– Cách 2: kiếm 1 cái đầu thu của chuột logitech khác, sử dụng app ConnectUtility của Logitech để nối lại. Chỉ cần cắm đầu thu vào máy tính, bật app lên và làm theo hướng dẫn
https://app.box.com/s/79cotp6vwa3if1vj64zca1xd8kl23akj
Mình đã thử test: sử dụng đầu thu của logitech B175 thành công cho M221 silent
Chúc các bạn thànhcoong


Notice: ob_end_flush(): failed to send buffer of zlib output compression (0) in /home/devopsvn/public_html/wp-includes/functions.php on line 5427