fsck_msdos keep blocking external HD

It is necessary.

It is independent of Mac or macOS involved. As you wrote "improperly": this is the key here.

To prevent damage from the filesystem the OS checks "is the filesystem dirty?", i.e. not cleanly unmounted. "Dirty" filesystems then get a run of filesystem check (fsck_msdos). Successful fsck marks the filesystem as clean. (And usually tries to correct some inconsistencies, if it finds some of those it could rectify.) Killing that process before it does the same as a proper unmount, i.e. "marking the filesystem as clean", will send you into a loop. Finding a way around that may be possible, but is certainly not recommendable.

Two 'solutions':

  1. Try to eject/unmount the filesystem cleanly every time. That is the best way to avoid the fsck run. There may be some applications available to make even that even more convenient, depending on what kind of disks on what type of connection they are to be used.
  2. Let it run its fsck course the first time around. That is the shortest way to start using it again.

Possible Preventive Measures:

Mechanical unplugging the drives involuntarily while awake or in use could be mitigated with a better cable. No joke. I have one quite expensive cable that sits much tighter than all the others in that port. If the problem occurs mainly with sleeping or after not using the external drive you might want to look into an app like Mountain. It's commercial and there might be others out there (Jettison, CleanMyDrive).

Also, true: this fsck_msdos is mainly to notify you of any and prevent further damage, so you can take it to a system whose fsck or chkdsk actually can repair it.